<template>
  <div class="app-container">
    <el-card class="box-card">
      <el-tabs v-model="activeName" @tab-click="handleClick">
        <el-tab-pane label="系统消息" name="first"></el-tab-pane>
        <el-tab-pane label="活动消息" name="second"></el-tab-pane>
      </el-tabs>
      <el-form
        :inline="true"
        size="mini"
        label-width="auto"
        class="params-form"
      >
        <el-form-item>
          <el-input v-model.trim="title" placeholder="请输入搜索关键词">
          </el-input>
        </el-form-item>
        <el-form-item>
          <el-select v-model="readStatus" placeholder="消息阅读状态">
            <el-option label="全部" value="-1"></el-option>
            <el-option label="已读" value="1"></el-option>
            <el-option label="未读" value="0"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item>
          <el-button size="mini" type="primary" @click="searchMsg"
            >搜索</el-button
          >
        </el-form-item>
        <el-form-item style="float: right">
          <el-button
            type="text"
            style="color: #666666; margin-right: 20px; font-size: 14px"
            icon="el-icon-document"
            @click="allRead"
            >全部标记为已读</el-button
          >
          <el-button
            style="color: #666666; font-size: 14px"
            type="text"
            icon="el-icon-delete"
            @click="delRead"
            >删除全部已读消息</el-button
          >
        </el-form-item>
      </el-form>
      <div>
        <el-table
          ref="msgTableCon"
          :data="msgTableList"
          :height="msgConHeight"
          style="width: 100%"
          :header-cell-style="{
            background: '#F9F9FA',
          }"
        >
          <el-table-column
            prop="title"
            label="系统公告标题"
            min-width="50%"
            v-if="this.activeName == 'first'"
          ></el-table-column>
          <el-table-column
            prop="title"
            label="活动公告标题"
            min-width="50%"
            v-if="this.activeName == 'second'"
          ></el-table-column>
          <el-table-column
            prop="add_time"
            label="发布时间"
            min-width="20%"
            :formatter="formatter"
          ></el-table-column>
          <el-table-column label="状态" min-width="15%">
            <template slot-scope="scope">
              <div class="dotColorRed" v-if="scope.row.status == 0"></div>
              <span v-if="scope.row.status == 0">未读</span>
              <div class="dotColorGreen" v-if="scope.row.status == 1"></div>
              <span v-if="scope.row.status == 1">已读</span>
            </template>
          </el-table-column>
          <el-table-column label="操作" min-width="15%">
            <template slot-scope="scope">
              <el-button type="text" size="mini" @click="editMsg(scope.row)"
                >查看详情</el-button
              >
              <el-button
                type="text"
                size="mini"
                @click="forward(scope.row)"
                v-if="ispaas == 1"
                >转发</el-button
              >
              <el-button
                type="text"
                size="mini"
                style="color: red"
                @click="delMsg(scope.row)"
                >删除</el-button
              >
            </template>
          </el-table-column>
        </el-table>
        <!-- 分页 -->
        <div class="footer_pagination">
          <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="currentPage"
            :page-sizes="[20, 40, 60, 80, 100]"
            :page-size="pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="total"
          >
          </el-pagination>
        </div>
      </div>
    </el-card>
    <el-drawer
      title="公告详情"
      center
      :withHeader="true"
      :append-to-body="false"
      :modal="false"
      v-if="dialogMessageDetail"
      :modal-append-to-body="false"
      :visible.sync="dialogMessageDetail"
      :direction="direction"
      class="custom-drawer"
      size="100%"
    >
      <msgtemplateInfo
        @closeOrderDetailDialog="closeOrderDetailDialog"
        :messageDetailIds="messageDetailIds"
      ></msgtemplateInfo>
    </el-drawer>
  </div>
</template>

<script>
import msgtemplateInfo from "./components/msgtemplateInfo";
import { dateFormat } from '@/utils'
import {
  readingNotes,
  msgMessageList,
  delIsRead,
  GetIsPaas,
  Forward,
} from "@/api/msgtemplate";
export default {
  name: "msgtemplate",
  components: {
    msgtemplateInfo,
  },
  data() {
    // application_id 只能为数字校验
    let checkAppid = (rule, value, callback) => {
      const reg = /^[0-9]*$/;
      if (!reg.test(value) || value == "") {
        callback(new Error("应用ID(appId)不能为空,且只能是数字"));
      } else {
        callback();
      }
    };
    return {
      activeName: "first",
      msgConHeight: 0,
      // 列表 数据
      currentPage: 1, // 分页
      pageSize: 20, // 每页多少条
      msgTableList: [],
      total: 0,
      title: "", //关键词
      // selectone: "", //商品消息类型
      readStatus: "-1", //消息阅读状态
      dialogMessageDetail: false, //查看详情
      direction: "rtl",
      messageDetailIds: "", //传给详情页面的id
      ispaas: 0,
    };
  },
  created() {
    this.getList();
    // this.getIsPaas();
  },
  mounted() {
    this.$nextTick(() => {
      let queryHeight = document.querySelector(".params-form").clientHeight;
      this.msgConHeight =
        document.querySelector(".box-card").clientHeight -
        queryHeight -
        140 +
        "px";
    });
  },
  methods: {
    /** 列表 */
    getList() {
      let data = {
        page: this.currentPage,
        limit: this.pageSize,
        plat_ids:4
        // status:-1
      };
      if (this.activeName == "first") {
        data["type"] = "1";
      }
      if (this.activeName == "second") {
        data["type"] = "3";
      }
      if (!this.readStatus == "") {
        data["status"] = this.readStatus;
      }
      if (!this.title == "") {
        data["title"] = this.title;
      }
      msgMessageList(data).then((res) => {
        if (res.code == 1) {
          this.total = res.data.count;
          this.msgTableList = res.data.data;
        }
      });
    },
    //全部标记已读
    allRead() {
      this.$confirm("确认将全部消息标为已读状态?", "提示:", {
        type: "warning",
        confirmButtonText: "确定",
        cancelButtonText: "取消",
      })
        .then(async () => {
          let data = {
                source:4
              }
          readingNotes(data).then((res) => {
            if (res.code == 1) {
              this.$message({ message: "标记成功", type: "success" });
              this.getList();
            }
          });
        })
        .catch(() => {});
    },
    //删除全部已读
    delRead() {
      this.$confirm("确认将全部消息删除?", "提示:", {
        type: "warning",
        confirmButtonText: "确定",
        cancelButtonText: "取消",
      })
        .then(async () => {
          let data = {
                source:4
              }
          delIsRead(data).then((res) => {
            if (res.code == 1) {
              this.$message({ message: "删除成功", type: "success" });
              this.getList();
            }
          });
        })
        .catch(() => {});
    },
    /** 搜索 */
    searchMsg() {
      this.getList();
    },
    /** 查看详情 */
    editMsg(row) {
      this.dialogMessageDetail = true;
      this.messageDetailIds = row.id;
    },
    // 转发
    forward(row) {
      this.$confirm(
        "<strong>确认把此条消息创建到系统公告列表吗?</strong><br/><span>点击确定后请到系统公告中查看或编辑</span>",
        "消息转发",
        {
          dangerouslyUseHTMLString: true,
          type: "warning",
          confirmButtonText: "确定",
        }
      )
        .then(async () => {
          let data = {
            id: row.id,
            source:4
          };
          Forward(data).then((res) => {
            if (res.code == 1) {
              this.$message({ message: "转发成功", type: "success" });
              this.getList();
            }
          });
        })
        .catch(() => {});
    },
    /** 删除 */
    delMsg(row) {
      let data = {
        id: row.id,
        source:4
      };
      delIsRead(data).then((res) => {
        if (res.code == 1) {
          
          this.$message({ message: "删除成功", type: "success" });
          this.getList();
        }
      });
    },
    /** 列表 调整每页显示数量 */
    handleSizeChange(val) {
      this.pageSize = val;
      this.getList();
    },
    /** 列表 翻页 */
    handleCurrentChange(val) {
      this.currentPage = val;
      this.getList();
    },
     /** 时间格式化 */
    formatter(row) {
      var Time = row.add_time
        return dateFormat(Time * 1000, 'Y-m-d H:i:s')
      },
    /** 关闭 对话框 */
    closeOrderDetailDialog() {
      this.dialogMessageDetail = false;
      this.getList();
    },
    handleClick(tab, event) {
      this.title = "";
      this.readStatus = "-1";
      this.currentPage = 1;
      this.getList();
    },
    getIsPaas() {
      GetIsPaas().then((res) => {
        if (res.code == 1) {
          this.ispaas = res.data.ispaas;
        }
      });
    },
  },
};
</script>

<style scoped>
.app-container >>> .el-card {
  height: 100%;
  overflow: hidden;
}

.app-container >>> .el-card .el-card__body {
  height: 100%;
  overflow: hidden;
}

.msg-table-con {
  overflow: auto;
  padding-right: 15px;
}

::v-deep .params-form .el-form-item {
  margin: 0 20px 15px 0;
}

::v-deep .msg-table-con .el-button--mini {
  padding: 3px 5px;
}

.footer_pagination {
  /* border-top: 1px solid #e6ebf5; */
  text-align: center;
  padding: 20px 0 0;
}

.dotColorGreen {
  display: inline-block;
  width: 6px;
  height: 6px;
  background: #23c58f;
  border-radius: 50%;
  margin-right: 4px;
}
.dotColorRed {
  display: inline-block;
  width: 6px;
  height: 6px;
  background: #f14e4e;
  border-radius: 50%;
  margin-right: 4px;
}
/*详情 start*/
.custom-drawer {
  position: absolute;
  height: 100%;
}
.custom-drawer >>> .el-drawer__header {
  text-align: center;
  margin: 0;
}
.custom-drawer >>> .el-drawer__body {
  height: 100%;
  overflow: auto;
  padding: 0 0 20px 0;
}
.el-drawer__title {
  margin: 10px 0;
}
/*详情 end*/
.el-drawer ::v-deep :focus {
  outline: none;
}
.el-drawer:focus {
  outline: none;
}
</style>