guoshilong
2024-02-02 d38ab21933f28fc646e128bcbf637c3f311eb5f2
消息管理,系统消息,我的消息
2 files modified
5 files added
1071 ■■■■■ changed files
src/api/messageRecord/messageRecord.js 58 ●●●●● patch | view | raw | blame | history
src/api/messageRecord/messageUser.js 23 ●●●●● patch | view | raw | blame | history
src/api/system/dept.js 10 ●●●●● patch | view | raw | blame | history
src/page/index/top/components/messageContent.vue 70 ●●●●● patch | view | raw | blame | history
src/page/index/top/top-notice.vue 184 ●●●●● patch | view | raw | blame | history
src/views/message/myMessage.vue 389 ●●●●● patch | view | raw | blame | history
src/views/message/sysMessage.vue 337 ●●●●● patch | view | raw | blame | history
src/api/messageRecord/messageRecord.js
New file
@@ -0,0 +1,58 @@
import request from '@/router/axios';
export const getList = (current, size, params) => {
  return request({
    url: '/api/messageRecord/messageRecord/page',
    method: 'get',
    params: {
      ...params,
      current,
      size,
    }
  })
}
export const getDetail = (id) => {
  return request({
    url: '/api/messageRecord/messageRecord/detail',
    method: 'get',
    params: {
      id
    }
  })
}
export const remove = (ids) => {
  return request({
    url: '/api/messageRecord/messageRecord/remove',
    method: 'post',
    params: {
      ids,
    }
  })
}
export const add = (row) => {
  return request({
    url: '/api/messageRecord/messageRecord/submit',
    method: 'post',
    data: row
  })
}
export const customizeSave = (row) => {
  return request({
    url: '/api/messageRecord/messageRecord/customizeSave',
    method: 'post',
    data: row
  })
}
export const update = (row) => {
  return request({
    url: '/api/messageRecord/messageRecord/submit',
    method: 'post',
    data: row
  })
}
src/api/messageRecord/messageUser.js
New file
@@ -0,0 +1,23 @@
import request from '@/router/axios';
export const getMyMessage = (current, size, params) => {
  return request({
    url: '/api/messageUser/messageUser/getMessage',
    method: 'get',
    params: {
      ...params,
      current,
      size,
    }
  })
}
export const updateIsRead = (ids,isRead) => {
  return request({
    url: '/api/messageUser/messageUser/updateIsReadStatus',
    method: 'post',
    params:{
      ids,isRead
    }
  })
}
src/api/system/dept.js
@@ -79,3 +79,13 @@
  })
}
export const getDeptUserTree=(params)=>{
  return request({
    url: '/api/blade-system/dept/getDeptAndUserTree',
    method: 'get',
    params: {
      ...params
    }
  })
}
src/page/index/top/components/messageContent.vue
New file
@@ -0,0 +1,70 @@
<template>
  <el-dialog
    :title="title"
    append-to-body
    :visible.sync="box"
    width="60%"
  >
    <avue-form :option="option" v-model="form"> </avue-form>
    <!-- <sapn>{{ form.content }}</sapn> -->
  </el-dialog>
</template>
<script>
import {updateIsRead} from "@/api/messageRecord/messageUser";
export default {
  name: "messsageContent",
  data() {
    return {
      title:"",
      box: false,
      form: {},
      option: {
        submitBtn: false,
        emptyBtn: false,
        column: [
          // {
          //   label: "主題",
          //   prop: "theme",
          //   disabled:true,
          //   span:24
          // },
          {
            label: "",
            labelWidth:1,
            prop: "content",
            type: "textarea",
            // disabled:true,
            span:24
          },
        ],
      }
    };
  },
  created(){
  },
  methods:{
    // 初始化
    init(data){
        this.title = data.title
        this.box = true
        this.form = data;
        if(data.isRead ==2){
            this.updateMessage(data)
        }
    },
    updateMessage(data){
        // 设置为已读
        updateIsRead(data.id,'1');
        // 刷新列表
        this.$emit('reflushList','')
    }
  }
};
</script>
<style scoped lang="scss">
::v-deep(.avue-form__menu--center){
  display: none !important;
}
</style>
src/page/index/top/top-notice.vue
@@ -1,92 +1,138 @@
<template>
    <div class="noticeBtn" @click="noticeBtn">
        <el-badge v-if="!view">
            <img src="img/notice/xiaoxi-png.png" style="width: 26px;height: 26px; display: flex;" />
        </el-badge>
        <el-badge v-if="view">
            <!-- <i class="el-icon-bell"></i> -->
            <img src="img/notice/xiaoxi-gif.gif" style="width: 26px;height: 26px; display: flex;" />
        </el-badge>
    </div>
    <!-- <el-popover placement="bottom"
              width="0"
              trigger="click"> -->
<!--    <div class="noticeBtn" @click="noticeBtn">-->
<!--        <el-badge v-if="!view">-->
<!--            <img src="img/notice/xiaoxi-png.png" style="width: 26px;height: 26px; display: flex;" />-->
<!--        </el-badge>-->
<!--        <el-badge v-if="view">-->
<!--            &lt;!&ndash; <i class="el-icon-bell"></i> &ndash;&gt;-->
<!--            <img src="img/notice/xiaoxi-gif.gif" style="width: 26px;height: 26px; display: flex;" />-->
<!--        </el-badge>-->
<!--    </div>-->
    <!-- <el-tabs v-model="activeName">
      <el-tab-pane label="邮件(1)"
                   name="first"></el-tab-pane>
      <el-tab-pane label="消息(2)"
                   name="second"></el-tab-pane>
      <el-tab-pane label="通知"
                   name="third"></el-tab-pane>
  <el-popover placement="bottom" width="350" trigger="click">
    <el-tabs v-model="activeName" @tab-click="handleTabClick">
      <el-tab-pane label="未读" name="2"></el-tab-pane>
      <el-tab-pane label="已读" name="1"></el-tab-pane>
    </el-tabs>
    <el-scrollbar style="height:300px">
      <avue-notice :data="data"
                   :option="option"
                   @page-change="pageChange"></avue-notice>
    </el-scrollbar> -->
    <!-- <div slot="reference">
      <avue-notice :data="data" :option="option" :finish="finish" @page-change="pageChange" @click="handleClick"></avue-notice>
    </el-scrollbar>
    <div slot="reference">
      <el-badge is-dot>
        <i class="el-icon-bell"></i>
      </el-badge>
    </div> -->
    <!-- </el-popover> -->
<!--      <el-badge :value="number" :max="99" class="item">-->
<!--        <i class="el-icon-bell"></i>-->
<!--      </el-badge>-->
    </div>
    <messageContent ref="messageContent" @reflushList="reflushList" />
  </el-popover>
</template>
<script>
import { updateView, getList } from "@/api/task/reportForRepairs"
let list = [{
    img: '/img/bg/vip1.png',
    title: '史蒂夫·乔布斯 关注了你',
    subtitle: '05-08 15:08',
    tag: '已经开始',
    status: 0
}, {
    img: '/img/bg/vip2.png',
    title: '斯蒂夫·沃兹尼亚克 关注了你',
    subtitle: '05-08 15:08',
    tag: '未开始',
    status: 1
}, {
    img: '/img/bg/vip3.png',
    title: '蒂姆·库克 关注了你',
    subtitle: '05-08 15:08',
    status: 3,
    tag: '有错误'
}, {
    img: '/img/bg/vip4.png',
    title: '比尔·费尔南德斯 关注了你',
    subtitle: '05-08 15:08',
    status: 4,
    tag: '已完成'
}]
import {getMyMessage} from "@/api/messageRecord/messageUser";
import {mapGetters} from "vuex";
import MessageContent from "@/page/index/top/components/messageContent.vue";
export default {
    name: "top-notice",
  components: {MessageContent},
    data () {
        return {
            finish: false,
            baseUrl: "https://sk.hubeishuiyi.cn",
            total: 0,
            view: false,
            activeName: 'first',
            activeName: '2',
            page:{
              current:1,
              pageSize:5
            },
            option: {
                props: {
                    img: 'img',
                    title: 'title',
                    subtitle: 'subtitle',
                    tag: 'tag',
                    status: 'status'
                    subtitle: 'time',
                    tag: "tag",
                    status: "s",
                },
            },
            data: list,
            data: [],
          number:"",
        }
    },
  computed: {
    ...mapGetters(["userInfo", "permission"]),
  },
    created () {
        this.getNoticeNumber()
        // this.getNoticeNumber()
      this.getMessage(this.page)
    },
    mounted () {
        this.createEventSource()
    },
    methods: {
      // 刷新
      reflushList () {
        // this.getNotReadNumber();
        this.getMessage(this.page)
      },
      // tab 点击事件
        handleTabClick (tab, event) {
        this.page = 1
        this.activeName = tab.name
          this.getMessage(this.page)
      },
      // 行点击
      handleClick (row) {
        // 弹窗
        this.$nextTick(() => {
          this.$refs.messageContent.init(row)
        })
      },
        getMessage(page,params={}){
          params.messageType = 'receive'
          params.isRead = this.activeName
          params.userId = this.userInfo.user_id
          getMyMessage(page.current,page.size,params).then(res=>{
            const data = res.data.data
            const record = data.records
            record.forEach((item) => {
              item["tag"] = "查看"
              item["s"] = "查看"
            })
            this.data = record
            if (params.isRead == 2){
              this.number = data.total
              if (data.total == 0){
                this.number = ""
              }
            }
            if (data.total < 6) {
              this.finish = true
            } else {
              this.finish = false
            }
          })
        },
        getNoticeNumber () {
            var values = {
                viewType: 2
@@ -151,11 +197,25 @@
            }
        },
        pageChange (page, done) {
            setTimeout(() => {
                this.$message.success('页码' + page)
                this.data = this.data.concat(list)
                done()
            }, 1000)
          let params = {}
          params.messageType = 'receive'
          params.isRead = this.activeName
          params.userId = this.userInfo.user_id
          getMyMessage(page,page.size,params).then(res=>{
            const data = res.data.data
            const record = data.records
            record.forEach((item) => {
              item["tag"] = "查看"
              item["s"] = "查看"
            })
            this.data = this.data.concat(record)
            if (this.data.length == data.total) {
              this.finish = true
            }
            done()
          })
        },
    }
src/views/message/myMessage.vue
New file
@@ -0,0 +1,389 @@
<template>
  <basic-container>
    <avue-crud :option="option"
               :table-loading="loading"
               :data="data"
               :page.sync="page"
               :permission="permissionList"
               v-model="form"
               ref="crud"
               @row-update="rowUpdate"
               @row-save="rowSave"
               @row-del="rowDel"
               @search-change="searchChange"
               @search-reset="searchReset"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      <template slot="menuLeft">
        <div class="menu-left">
          <div class="operation">
            <el-radio-group v-model="mode" size="small" @input="radioChange">
              <el-radio-button label="receive">收件箱</el-radio-button>
              <el-radio-button label="send">已发送</el-radio-button>
            </el-radio-group>
          </div>
          <div class="operation">
            <el-button type="primary" v-if="mode == 'receive'"
                       size="small"
                       icon="el-icon-message"
                       plain
                       @click="handleBatchRead">标为已读
            </el-button>
          </div>
        </div>
      </template>
      <template slot-scope="{ row, size, index }" slot="menu">
        <el-button :size="size" type="text" icon="el-icon-message" v-if="mode == 'receive'"
                   @click="handleIsRead(row)">已读
        </el-button>
      </template>
    </avue-crud>
  </basic-container>
</template>
<script>
import {mapGetters} from "vuex";
import {getDeptUserTree, getLazyList} from "@/api/system/dept";
import {getMyMessage, updateIsRead} from "@/api/messageRecord/messageUser";
import {remove} from "@/api/messageRecord/messageRecord";
export default {
  data() {
    return {
      mode: 'receive',
      form: {},
      query: {},
      loading: true,
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 0
      },
      selectionList: [],
      option: {
        height: 'auto',
        calcHeight: 30,
        tip: false,
        searchShow: true,
        searchMenuSpan: 6,
        border: true,
        index: true,
        viewBtn: true,
        selection: true,
        dialogClickModal: false,
        editBtn: false,
        addBtnText: "消息发送",
        saveBtnText: "发送",
        addBtn: false,
        delBtn: false,
        column: [
          {
            label: "标题",
            prop: "title",
            search: true,
            searchSpan: 4,
            searchLabelWidth:66,
            type: "input",
            span: 24,
          },
          {
            label: "内容",
            prop: "content",
            type: "textarea",
            minRow: 5,
            span: 24,
          },
          {
            label: "发送时间",
            prop: "time",
            span: 24,
          },
          {
            label: "发送时间",
            prop: "dateTime",
            type: "daterange",
            format: "yyyy-MM-dd",
            valueFormat: "yyyy-MM-dd",
            searchRange: true,
            hide: true,
            display: false,
            search: true,
            searchLabelWidth:96,
          },
          {
            label: "发送人",
            prop: "userName",
            span: 24,
          },
          {
            label: "消息状态",
            prop: "isRead",
            dicData: [
              {label: '已读', value: '1'},
              {label: '未读', value: '2'}
            ],
            props: {
              label: "label",
              value: "value",
            },
            type: "select",
          },
        ]
      },
      data: []
    };
  },
  watch: {},
  computed: {
    ...mapGetters(["permission", "userInfo"]),
    permissionList() {
      return {
        addBtn: this.vaildData(this.permission.messageRecord_add, false),
        viewBtn: this.vaildData(this.permission.messageRecord_view, false),
        delBtn: this.vaildData(this.permission.messageRecord_delete, false),
        editBtn: this.vaildData(this.permission.messageRecord_edit, false)
      };
    },
    ids() {
      let ids = [];
      this.selectionList.forEach(ele => {
        ids.push(ele.id);
      });
      return ids.join(",");
    }
  },
  created() {
    // this.getTreeData()
  },
  methods: {
    handleBatchRead() {
      if (this.selectionList.length === 0) {
        this.$message.warning("请选择至少一条数据");
        return;
      }
      this.$confirm("是否已读?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          return updateIsRead(this.ids, '1');
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
          this.$refs.crud.toggleSelection();
        });
    },
    handleIsRead(row) {
      this.$confirm("是否已读?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          return updateIsRead(row.id, '1');
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
        });
    },
    radioChange(data) {
      this.page.currentPage = 1
      this.columnChange()
      this.onLoad(this.page)
    },
    columnChange() {
      let receiveUserColumn = this.findObject(this.option.column, 'userName')
      if (this.mode == 'receive') {
        //显示标题,内容,接收时间,发送人,是否已读
        receiveUserColumn.label = "发送人"
      } else if (this.mode == 'send') {
        //显示标题,内容,发送时间,发送对象
        receiveUserColumn.label = "接收人"
      }
      this.option.column.sort((a, b) => a.sortValue - b.sortValue)
      this.$refs.crud.refreshTable()
      console.log(this.option.column)
    },
    getTreeData() {
      let params = {
        showWg: false
      }
      getLazyList("", params).then(res => {
        let data = res.data.data
        data = data.filter(e => e.name != '群众')
        let receiver = this.findObject(this.option.column, 'receiver')
        receiver.dicData = data
      })
    },
    rowSave(row, done, loading) {
      row.type = row.type.split(",").sort((a, b) => a - b).join(",")
      // row.receiver = row.receiver.join(",")
      // row.type = row.type.join(",")
      row['messageResource'] = 1
      customizeSave(row).then(() => {
        this.onLoad(this.page);
        this.$message({
          type: "success",
          message: "操作成功!"
        });
        done();
      }, error => {
        loading();
        window.console.log(error);
      });
    },
    rowUpdate(row, index, done, loading) {
      update(row).then(() => {
        this.onLoad(this.page);
        this.$message({
          type: "success",
          message: "操作成功!"
        });
        done();
      }, error => {
        loading();
        console.log(error);
      });
    },
    rowDel(row) {
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          return remove(row.id);
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
        });
    },
    handleDelete() {
      if (this.selectionList.length === 0) {
        this.$message.warning("请选择至少一条数据");
        return;
      }
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          return remove(this.ids);
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
          this.$refs.crud.toggleSelection();
        });
    },
    beforeOpen(done, type) {
      if (["edit", "view"].includes(type)) {
        getDetail(this.form.id).then(res => {
          this.form = res.data.data;
        });
      }
      done();
    },
    searchReset() {
      this.query = {};
      this.onLoad(this.page);
    },
    searchChange(params, done) {
      this.query = params;
      this.page.currentPage = 1;
      this.onLoad(this.page, params);
      done();
    },
    selectionChange(list) {
      this.selectionList = list;
    },
    selectionClear() {
      this.selectionList = [];
      this.$refs.crud.toggleSelection();
    },
    currentChange(currentPage) {
      this.page.currentPage = currentPage;
    },
    sizeChange(pageSize) {
      this.page.pageSize = pageSize;
    },
    refreshChange() {
      this.onLoad(this.page, this.query);
    },
    onLoad(page, params = {}) {
      this.loading = true;
      params.messageType = this.mode
      params.userId = this.userInfo.user_id
      params.type = "1"
      const {dateTime} = this.query
      let values = {...params,}
      if (dateTime) {
        values = {
          ...params,
          startTime: dateTime[0],
          endTime: dateTime[1],
          ...this.query,
        }
        values.dateTime = null
      }
      getMyMessage(page.currentPage, page.pageSize, values).then(res => {
        const data = res.data.data;
        this.page.total = data.total;
        this.data = data.records;
        this.loading = false;
        this.selectionClear();
      });
    }
  }
};
</script>
<style scoped>
.menu-left {
  display: flex;
}
.operation {
  margin-right: 10px;
}
</style>
src/views/message/sysMessage.vue
New file
@@ -0,0 +1,337 @@
<template>
  <basic-container>
    <avue-crud :option="option"
               :table-loading="loading"
               :data="data"
               :page.sync="page"
               :permission="permissionList"
               :before-open="beforeOpen"
               v-model="form"
               ref="crud"
               @row-update="rowUpdate"
               @row-save="rowSave"
               @row-del="rowDel"
               @search-change="searchChange"
               @search-reset="searchReset"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      <template slot="menuLeft">
        <el-button type="danger"
                   size="small"
                   icon="el-icon-delete"
                   plain
                   v-if="permission.messageRecord_delete"
                   @click="handleDelete">删 除
        </el-button>
      </template>
    </avue-crud>
  </basic-container>
</template>
<script>
import {getList, getDetail, add, update, remove, customizeSave} from "@/api/messageRecord/messageRecord";
import {mapGetters} from "vuex";
import {getDeptUserTree, getLazyList} from "@/api/system/dept";
export default {
  data() {
    return {
      form: {},
      query: {},
      loading: true,
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 0
      },
      selectionList: [],
      option: {
        height: 'auto',
        calcHeight: 30,
        tip: false,
        searchShow: true,
        searchMenuSpan: 6,
        border: true,
        index: true,
        viewBtn: true,
        selection: true,
        dialogClickModal: false,
        editBtn: false,
        addBtnText: "消息发送",
        saveBtnText: "发送",
        delBtn:false,
        column: [
          {
            label: "消息类型",
            prop: "type",
            type: "checkbox",
            search:true,
            searchSpan: 4,
            searchLabelWidth:96,
            row: true,
            dicUrl: "/api/blade-system/dict-biz/dictionary?code=messageType",
            props: {
              label: "dictValue",
              value: "dictKey",
            },
            rules: [{
              required: true,
              message: "请选择消息类型",
              trigger: "blur"
            }]
          },
          {
            label: "接收人",
            prop: "receiver",
            type: "tree",
            leafOnly: false,
            multiple: true,
            dicUrl: `/api/blade-system/dept/lazy-list`,
            dicData: [],
            props: {
              label: 'name',
              value: 'id'
            },
            span: 24,
            rules: [{
              required: true,
              message: "请选择接收人",
              trigger: "blur"
            }]
          },
          {
            label: "标题",
            prop: "title",
            type: "input",
            span: 24,
            rules: [{
              required: true,
              message: "请输入标题",
              trigger: "blur"
            }]
          },
          {
            label: "内容",
            prop: "content",
            type: "textarea",
            minRow: 5,
            span: 24,
            rules: [{
              required: true,
              message: "请输入内容",
              trigger: "blur"
            }]
          },
          {
            label: "发送时间",
            prop: "createTime",
            span: 24,
            display:false
          },
          {
            label: "发送时间",
            prop: "dateTime",
            type: "daterange",
            format: "yyyy-MM-dd",
            valueFormat: "yyyy-MM-dd",
            searchRange: true,
            hide: true,
            display: false,
            search: true,
            searchLabelWidth:96,
          },
        ]
      },
      data: []
    };
  },
  computed: {
    ...mapGetters(["permission"]),
    permissionList() {
      return {
        addBtn: this.vaildData(this.permission.messageRecord_add, false),
        viewBtn: this.vaildData(this.permission.messageRecord_view, false),
        delBtn: this.vaildData(this.permission.messageRecord_delete, false),
        editBtn: this.vaildData(this.permission.messageRecord_edit, false)
      };
    },
    ids() {
      let ids = [];
      this.selectionList.forEach(ele => {
        ids.push(ele.id);
      });
      return ids.join(",");
    }
  },
  created() {
    this.getTreeData()
  },
  methods: {
    getTreeData() {
      // getDeptUserTree().then(res=>{
      //   console.log(res,"+++++++++++")
      //   let data = res.data.data
      //   let receiveUser = this.findObject(this.option.column, 'receiveUser')
      //   receiveUser.dicData = data
      //
      // })
      let params = {
        showWg: false
      }
      getLazyList("", params).then(res => {
        let data = res.data.data
        data = data.filter(e => e.name != '群众')
        let receiver = this.findObject(this.option.column, 'receiver')
        receiver.dicData = data
      })
    },
    rowSave(row, done, loading) {
      console.log(typeof row.type,"+++++++++++")
      if (typeof  row.type == 'object'){
        row.type = row.type.sort((a,b)=>a-b).join(",")
      }else{
        row.type = row.type.split(",").sort((a,b)=>a-b).join(",")
      }
      if (typeof  row.receiver == 'object'){
        row.receiver = row.receiver.join(",")
      }
      // row.receiver = row.receiver.join(",")
      // row.type = row.type.join(",")
      row['messageResource'] = 1
      customizeSave(row).then(() => {
        this.onLoad(this.page);
        this.$message({
          type: "success",
          message: "操作成功!"
        });
        done();
      }, error => {
        loading();
        window.console.log(error);
      });
    },
    rowUpdate(row, index, done, loading) {
      update(row).then(() => {
        this.onLoad(this.page);
        this.$message({
          type: "success",
          message: "操作成功!"
        });
        done();
      }, error => {
        loading();
        console.log(error);
      });
    },
    rowDel(row) {
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          return remove(row.id);
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
        });
    },
    handleDelete() {
      if (this.selectionList.length === 0) {
        this.$message.warning("请选择至少一条数据");
        return;
      }
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          return remove(this.ids);
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
          this.$refs.crud.toggleSelection();
        });
    },
    beforeOpen(done, type) {
      if (["edit", "view"].includes(type)) {
        getDetail(this.form.id).then(res => {
          this.form = res.data.data;
        });
      }
      done();
    },
    searchReset() {
      this.query = {};
      this.onLoad(this.page);
    },
    searchChange(params, done) {
      this.query = params;
      this.page.currentPage = 1;
      this.onLoad(this.page, params);
      done();
    },
    selectionChange(list) {
      this.selectionList = list;
    },
    selectionClear() {
      this.selectionList = [];
      this.$refs.crud.toggleSelection();
    },
    currentChange(currentPage) {
      this.page.currentPage = currentPage;
    },
    sizeChange(pageSize) {
      this.page.pageSize = pageSize;
    },
    refreshChange() {
      this.onLoad(this.page, this.query);
    },
    onLoad(page, params = {}) {
      this.loading = true;
      //系统消息
      params.messageResource = '1'
      const {dateTime} = this.query
      let values = {...params,}
      if (dateTime) {
        values = {
          ...params,
          startTime: dateTime[0],
          endTime: dateTime[1],
          ...this.query,
        }
        values.dateTime = null
      }
      getList(page.currentPage, page.pageSize, values).then(res => {
        const data = res.data.data;
        this.page.total = data.total;
        this.data = data.records;
        this.loading = false;
        this.selectionClear();
      });
    }
  }
};
</script>
<style>
</style>