Blame view

ant-design-vue-jeecg/src/views/system/SysAnnouncementList.vue 9.9 KB
肖超群 authored
1
2
3
4
5
6
7
8
9
10
<template>
  <a-card :bordered="false">

    <!-- 查询区域 -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">

          <a-col :span="6">
            <a-form-item label="标题">
11
              <j-input placeholder="请输入标题" v-model="queryParam.title"></j-input>
肖超群 authored
12
13
14
15
            </a-form-item>
          </a-col>
          <!--<a-col :span="6">
            <a-form-item label="内容">
16
              <j-input placeholder="请输入内容" v-model="queryParam.msgContent"></j-input>
肖超群 authored
17
18
19
20
21
22
23
24
25
26
27
28
29
30
            </a-form-item>
          </a-col>-->
          <a-col :span="8">
            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
            </span>
          </a-col>
        </a-row>
      </a-form>
    </div>

    <!-- 操作按钮区域 -->
    <div class="table-operator">
易文鹏 authored
31
      <a-button v-has="'announcement:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
易文鹏 authored
32
      <a-button v-has="'announcement:export'" type="primary" icon="download" @click="handleExportXls('系统通告')">导出</a-button>
肖超群 authored
33
      <a-dropdown v-if="selectedRowKeys.length > 0">
易文鹏 authored
34
        <a-menu slot="overlay" v-has="'announcement:deleteBatch'">
肖超群 authored
35
36
37
38
39
40
41
42
43
44
45
46
47
48
          <a-menu-item key="1" @click="batchDel">
            <a-icon type="delete"/>
            删除
          </a-menu-item>
        </a-menu>
        <a-button style="margin-left: 8px"> 批量操作
          <a-icon type="down"/>
        </a-button>
      </a-dropdown>
    </div>

    <!-- table区域-begin -->
    <div>
      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
肖超群 authored
49
        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a
50
        style="font-weight: 600">{{ selectedRowKeys.length }}</a> 项
肖超群 authored
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
      </div>

      <a-table
        ref="table"
        size="middle"
        bordered
        rowKey="id"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="ipagination"
        :loading="loading"
        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
        @change="handleTableChange">
66
67
68
69
70
71
        <span slot="sender" slot-scope="sender">
          <a-tag v-for="sender in userList" :key="sender">
            {{ solutionUser(sender) }}
          </a-tag>
        </span>
肖超群 authored
72
        <span slot="action" slot-scope="text, record">
肖超群 authored
73
          <a v-has="'announcement:edit'" v-if="record.sendStatus == 0" @click="handleEdit(record)">编辑</a>
肖超群 authored
74
75
76
77
78

          <a-divider type="vertical" v-if="record.sendStatus == 0"/>
          <a-dropdown>
            <a class="ant-dropdown-link">更多 <a-icon type="down"/></a>
            <a-menu slot="overlay">
易文鹏 authored
79
              <a-menu-item v-if="record.sendStatus != 1" v-has="'announcement:delete'">
肖超群 authored
80
81
82
83
84
85
86
87
88
89
                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                  <a>删除</a>
                </a-popconfirm>
              </a-menu-item>
              <a-menu-item v-if="record.sendStatus == 0">
                <a-popconfirm title="确定发布吗?" @confirm="() => releaseData(record.id)">
                  <a>发布</a>
                </a-popconfirm>
              </a-menu-item>
              <a-menu-item v-if="record.sendStatus == 1">
90
                <a-popconfirm title="确定撤销吗?" @confirm="() => revokeData(record.id)">
肖超群 authored
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
                  <a>撤销</a>
                </a-popconfirm>
              </a-menu-item>
              <a-menu-item>
                  <a @click="handleDetail(record)">查看</a>
              </a-menu-item>
            </a-menu>
          </a-dropdown>
        </span>

      </a-table>
    </div>
    <!-- table区域-end -->

    <!-- 表单区域 -->
    <sysAnnouncement-modal ref="modalForm" @ok="modalFormOk"></sysAnnouncement-modal>
    <!-- 查看详情 -->
肖超群 authored
108
109
    <j-modal class="detail-modal" title="查看详情" :visible.sync="detailModal.visible" :top="50" :width="600"
             switchFullscreen :footer="null">
肖超群 authored
110
111
112
113
114
115
116
      <iframe v-if="detailModal.url" class="detail-iframe" :src="detailModal.url"/>
    </j-modal>

  </a-card>
</template>

<script>
肖超群 authored
117
import SysAnnouncementModal from './modules/SysAnnouncementModal'
118
import {doReleaseData, doRevokeData, getUserList} from '@/api/api'
肖超群 authored
119
120
121
import {getAction} from '@/api/manage'
import {JeecgListMixin} from '@/mixins/JeecgListMixin'
import {ACCESS_TOKEN} from '@/store/mutation-types'
肖超群 authored
122
肖超群 authored
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
export default {
  name: "SysAnnouncementList",
  mixins: [JeecgListMixin],
  components: {
    SysAnnouncementModal
  },
  data() {
    return {
      description: '系统通告表管理页面',
      // 查询条件
      queryParam: {},
      // 表头
      columns: [
        {
          title: '#',
          dataIndex: '',
          key: 'rowIndex',
          width: 60,
          align: "center",
          customRender: function (t, r, index) {
            return parseInt(index) + 1;
          }
        },
        {
          title: '标题',
          align: "center",
149
          dataIndex: 'title'
肖超群 authored
150
151
152
153
154
155
156
157
158
159
160
161
        },
        {
          title: '消息类型',
          align: "center",
          dataIndex: 'msgCategory',
          customRender: function (text) {
            if (text == '1') {
              return "通知公告";
            } else if (text == "2") {
              return "系统消息";
            } else {
              return text;
肖超群 authored
162
            }
肖超群 authored
163
164
165
166
167
168
169
170
171
172
173
174
          }
        },
        {
          title: '发布人',
          align: "center",
          dataIndex: 'sender'
        },
        {
          title: '优先级',
          align: "center",
          dataIndex: 'priority',
          customRender: function (text) {
175
            if (text === 'L') {
肖超群 authored
176
              return "低";
177
            } else if (text === "M") {
肖超群 authored
178
              return "中";
179
            } else if (text === "H") {
肖超群 authored
180
181
182
              return "高";
            } else {
              return text;
肖超群 authored
183
184
185
            }
          }
        },
肖超群 authored
186
187
188
189
190
        {
          title: '通告对象',
          align: "center",
          dataIndex: 'msgType',
          customRender: function (text) {
191
            if (text === 'USER') {
肖超群 authored
192
              return "指定用户";
193
            } else if (text === "ALL") {
肖超群 authored
194
195
196
197
              return "全体用户";
            } else {
              return text;
            }
肖超群 authored
198
          }
肖超群 authored
199
200
201
202
203
204
        },
        {
          title: '发布状态',
          align: "center",
          dataIndex: 'sendStatus',
          customRender: function (text) {
205
            if (text === 0) {
肖超群 authored
206
              return "未发布";
207
            } else if (text === 1) {
肖超群 authored
208
              return "已发布";
209
            } else if (text === 2) {
肖超群 authored
210
211
212
213
              return "已撤销";
            } else {
              return text;
            }
肖超群 authored
214
          }
肖超群 authored
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
        },
        {
          title: '发布时间',
          align: "center",
          dataIndex: 'sendTime'
        },
        {
          title: '撤销时间',
          align: "center",
          dataIndex: 'cancelTime'
        },
        {
          title: '操作',
          dataIndex: 'action',
          align: "center",
          scopedSlots: {customRender: 'action'},
        }
      ],
      detailModal: {visible: false, url: '',},
      url: {
235
236
237
238
239
240
241
        list: "/sys/announcementCement/list",
        delete: "/sys/announcementCement/delete",
        deleteBatch: "/sys/announcementCement/deleteBatch",
        releaseDataUrl: "/sys/announcementCement/doReleaseData",
        revokeDataUrl: "sys/announcementCement/dorevokeData",
        exportXlsUrl: "sys/announcementCement/exportXls",
        importExcelUrl: "sys/announcementCement/importExcel",
肖超群 authored
242
      },
243
      userList: [],
肖超群 authored
244
    }
肖超群 authored
245
  },
246
247
248
  created() {
    this.loadForm();
  },
肖超群 authored
249
250
251
252
253
254
  computed: {
    importExcelUrl: function () {
      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
    }
  },
  methods: {
255
256
257
258
259
260
261
262
    loadForm() {
      getUserList().then(res => {
        console.log(res)
        if (res.success) {
          this.userList = res.result.records
        }
      }).finally()
    },
肖超群 authored
263
264
    //执行发布操作
    releaseData: function (id) {
265
      let that = this;
肖超群 authored
266
267
268
269
270
271
272
273
274
275
      doReleaseData({id: id}).then((res) => {
        if (res.success) {
          that.$message.success(res.message);
          that.loadData(1);
        } else {
          that.$message.warning(res.message);
        }
      });
    },
    //执行撤销操作
276
277
278
    revokeData: function (id) {
      let that = this;
      doRevokeData({id: id}).then((res) => {
肖超群 authored
279
280
        if (res.success) {
          that.$message.success(res.message);
281
282
          that.loadData();
          this.syncHeadNotice(id)
肖超群 authored
283
284
285
286
287
        } else {
          that.$message.warning(res.message);
        }
      });
    },
288
289
    syncHeadNotice(anntId) {
      getAction("sys/announcementCement/syncNotice", {anntId: anntId})
肖超群 authored
290
291
292
293
    },
    handleDetail: function (record) {
      const domain = window._CONFIG['domianURL']
      const token = this.$ls.get(ACCESS_TOKEN)
294
      this.detailModal.url = `${domain}/sys/announcementCement/show/${record.id}?token=${token}`
肖超群 authored
295
296
      this.detailModal.visible = true
    },
297
298
299
300
301
302
303
304
305
306
    solutionUser(value) {
      let actions = []
      Object.keys(this.userList).some((key) => {
        if (this.userList[key].userName === ('' + value)) {
          actions.push(this.userList[key].realName)
          return true
        }
      })
      return actions.join('')
    },
肖超群 authored
307
  }
肖超群 authored
308
}
肖超群 authored
309
310
</script>
<style scoped lang="less">
肖超群 authored
311
@import '~@assets/less/common.less';
肖超群 authored
312
肖超群 authored
313
314
315
316
317
318
319
320
/** 查看详情弹窗的样式 */
.detail-modal {
  .detail-iframe {
    border: 0;
    width: 100%;
    height: 88vh;
    min-height: 600px;
  }
肖超群 authored
321
肖超群 authored
322
323
  &.fullscreen .detail-iframe {
    height: 100%;
肖超群 authored
324
  }
肖超群 authored
325
}
肖超群 authored
326
肖超群 authored
327
328
.detail-modal /deep/ .ant-modal {
  top: 30px;
肖超群 authored
329
肖超群 authored
330
331
332
  .ant-modal-body {
    font-size: 0;
    padding: 0;
肖超群 authored
333
  }
肖超群 authored
334
}
肖超群 authored
335
肖超群 authored
336
337
338
.detail-modal.fullscreen /deep/ .ant-modal {
  top: 0;
}
肖超群 authored
339
340

</style>