Bladeren bron

[Feature] 信息管理

caiaa 1 jaar geleden
bovenliggende
commit
1583eb1219

+ 6 - 0
src/api/info.js

@@ -15,6 +15,12 @@ export function pushSave(data) {
   })
 }
 
+export function pushBatchRead(ids) {
+  return request({
+    url: `messageInfo/reads?ids=${ids}`
+  })
+}
+
 export function fetchDetailData(id) {
   return request({
     url: `messageInfo/detail?id=${id}`

+ 1 - 1
src/store/modules/user.js

@@ -58,7 +58,7 @@ const actions = {
 
         // roles must be a non-empty array
         if (!roles || roles.length <= 0) {
-          reject('用户权限为空,请联系管理员授权!')
+          reject('用户权限为空,请联系管理员授权')
         }
 
         commit('SET_ROLES', roles)

+ 1 - 1
src/views/business/components/DetailEdit.vue

@@ -171,7 +171,7 @@ export default {
             this.$emit('refreshData')
             this.$message({
               type: 'success',
-              message: '保存成功!'
+              message: '保存成功'
             })
           }).catch(error => {
             console.log(error)

+ 1 - 1
src/views/business/index.vue

@@ -118,7 +118,7 @@ export default {
       this.uploadLoading = false
       this.$message({
         type: 'success',
-        message: '上传成功!'
+        message: '上传成功'
       })
       this.searchTable()
     },

+ 1 - 1
src/views/home/Information.vue

@@ -100,7 +100,7 @@ export default {
   left: 20px;
   bottom: 10px;
   width: 400px;
-  z-index: 1500;
+  z-index: 5000;
 
   ::v-deep {
     .el-card__header {

+ 18 - 4
src/views/home/Message.vue

@@ -22,8 +22,10 @@
             </el-table-column>
             <el-table-column show-overflow-tooltip>
               <template slot-scope="scope">
-                <div>{{ scope.row.title }} <span v-if="scope.row.messageLevel + '' === '1'" class="priority-box priority-level1">{{ formatDictData('', scope.row.messageLevel) }}</span> </div>
-                <div class="message-system">{{ scope.row.createOrgName }}</div>
+                <div class="title-box" @click="jumpMessage(scope.row.scopeUrl)">
+                  <div>{{ scope.row.title }} <span v-if="scope.row.messageLevel + '' === '1'" class="priority-box priority-level1">{{ formatDictData('', scope.row.messageLevel) }}</span> </div>
+                  <div class="message-system">{{ scope.row.scopeName }}</div>
+                </div>
               </template>
             </el-table-column>
             <el-table-column prop="createTime" width="150" />
@@ -51,8 +53,10 @@
             </el-table-column>
             <el-table-column show-overflow-tooltip>
               <template slot-scope="scope">
-                <div>{{ scope.row.title }} <span v-if="scope.row.messageLevel + '' === '1'" class="priority-box priority-level1">{{ formatDictData('', scope.row.messageLevel) }}</span> </div>
-                <div>{{ scope.row.systemName }}</div>
+                <div class="title-box" @click="jumpMessage(scope.row.scopeUrl)">
+                  <div>{{ scope.row.title }} <span v-if="scope.row.messageLevel + '' === '1'" class="priority-box priority-level1">{{ formatDictData('', scope.row.messageLevel) }}</span> </div>
+                  <div class="message-system">{{ scope.row.scopeName }}</div>
+                </div>
               </template>
             </el-table-column>
             <el-table-column prop="createTime" width="150" />
@@ -125,6 +129,9 @@ export default {
     updateMessage() {
       this.getTablelist()
     },
+    jumpMessage(url) {
+      window.open(url, '_blank')
+    },
     // 获取table数据
     getTablelist() {
       this.loading = true
@@ -269,4 +276,11 @@ export default {
 .priority-level1{
   background: #F85252;
 }
+
+.title-box {
+  cursor: pointer;
+  div {
+    cursor: pointer;
+  }
+}
 </style>

+ 1 - 1
src/views/home/components/BusinessEdit.vue

@@ -235,7 +235,7 @@ export default {
         this.$emit('refreshData')
         this.$message({
           type: 'success',
-          message: '保存成功!'
+          message: '保存成功'
         })
       }).catch(error => {
         console.log(error)

+ 1 - 1
src/views/home/components/LinkAdd.vue

@@ -66,7 +66,7 @@ export default {
             this.$emit('refreshData')
             this.$message({
               type: 'success',
-              message: '保存成功!'
+              message: '保存成功'
             })
           }).catch(error => {
             console.log(error)

+ 1 - 1
src/views/home/components/SystemEdit.vue

@@ -238,7 +238,7 @@ export default {
         this.visible = false
         this.$message({
           type: 'success',
-          message: '保存成功!'
+          message: '保存成功'
         })
         this.$emit('refreshData')
       }).catch(error => {

+ 37 - 19
src/views/info/CommAdd.vue

@@ -21,13 +21,13 @@
             <el-form-item prop="title" label="标题">
               <el-input v-model="formData.title" clearable placeholder="请输入" />
             </el-form-item>
-            <el-form-item prop="scopeIds" label="接收人">
-              <el-select v-model="formData.scopeIds" multiple clearable placeholder="请选择" style="width:calc(100% - 100px)">
+            <el-form-item prop="receivers" label="接收人">
+              <el-select v-model="formData.receivers" multiple clearable placeholder="请选择" style="width:calc(100% - 100px)">
                 <el-option
-                  v-for="item in deptOptions"
-                  :key="item.orgCode"
-                  :label="item.shortName"
-                  :value="item.orgCode"
+                  v-for="item in receiverOptions"
+                  :key="item.idCard"
+                  :label="item.name"
+                  :value="item.idCard"
                 />
               </el-select>
               <el-button type="primary" style="margin-left: 10px;" @click="showReceviers">接收人</el-button>
@@ -49,7 +49,12 @@
         <el-button type="primary" @click="save">确定</el-button>
       </div>
     </el-dialog>
-    <dept-user ref="deptUser" :contacts="contacts" :tree-data="deptData" @updateValue="setReceivers" />
+    <dept-user
+      ref="deptUser"
+      :contacts="contacts"
+      :tree-data="deptData"
+      @updateValue="setReceivers"
+    />
   </div>
 </template>
 <script>
@@ -78,6 +83,7 @@ export default {
         id: null,
         messageType: 2,
         title: '',
+        receivers: [],
         scopeIds: [],
         attachmentPath: '',
         attachmentName: '',
@@ -88,9 +94,6 @@ export default {
         title: [
           { required: true, message: '请输入标题', trigger: 'change' }
         ],
-        scopeIds: [
-          { required: true, message: '请选择接收人', trigger: 'blur' }
-        ],
         content: [
           { required: true, message: '请输入信息内容', trigger: 'blur' }
         ]
@@ -98,7 +101,6 @@ export default {
       // select:
       contacts: [],
       checkedContacts: [],
-      deptOptions: [],
       selectTreeProps: {
         // 配置项(必选)
         nodeKey: 'shortName',
@@ -107,6 +109,7 @@ export default {
         children: 'children'
         // disabled:true
       },
+      receiverOptions: [],
       // others
       loading: false,
       leftLoading: false
@@ -117,9 +120,10 @@ export default {
   },
   methods: {
     // 取值
-    setReceivers(data) {
-      this.deptOptions = data
-      this.formData.scopeIds = data.map(item => item.orgCode)
+    setReceivers(data, checkedContacts) {
+      this.receiverOptions = data
+      this.formData.receivers = data.map(item => item.idCard)
+      this.checkedContacts = checkedContacts
     },
     // Upload
     uploadSuccess(data) {
@@ -146,17 +150,25 @@ export default {
     save() {
       this.$refs[this.formName].validate((valid) => {
         if (valid) {
+          this.formData.scopeIds = [...new Set(this.checkedContacts.concat(this.formData.receivers))]
+          if (this.formData.scopeIds.length === 0) {
+            this.$message.warning('请选择接收人!')
+            return
+          }
           this.loading = true
           this.formData.t = new Date().getTime()
           pushSave(this.formData).then(res => {
             this.$refs[this.formName].resetFields()
             this.formData.attachmentName = ''
+            this.formData.scopeIds = []
+            this.receiverOptions = []
+            this.checkedContacts = []
             this.visible = false
             this.loading = false
             this.$emit('refreshData')
             this.$message({
               type: 'success',
-              message: '保存成功!'
+              message: '保存成功'
             })
           }).catch(error => {
             console.log(error)
@@ -188,11 +200,17 @@ export default {
       })
     },
     showReceviers() {
-      this.$refs['deptUser'].open()
+      const checkedReceviers = []
+      if (!isNull(this.formData.receivers)) {
+        this.receiverOptions.forEach(item => {
+          if (this.formData.receivers.includes(item.idCard)) {
+            checkedReceviers.push({ ...item })
+          }
+        })
+      }
+      this.$refs['deptUser'].open(this.checkedContacts, checkedReceviers)
     },
-    isNull(obj) {
-      return isNull(obj)
-    }
+    isNull
   }
 }
 </script>

+ 0 - 108
src/views/info/CommView.vue

@@ -1,108 +0,0 @@
-<template>
-  <div>
-    <el-dialog
-      v-loading="loading"
-      :visible.sync="visible"
-      :close-on-press-escape="true"
-      :close-on-click-modal="false"
-      :show-close="false"
-      custom-class="main-edit-dialog"
-      :title="title"
-    >
-      <el-form :ref="formName" :model="formData" label-width="120px" class="dialog-form">
-        <el-form-item label="标题">
-          <span>{{ formData.title }}</span>
-        </el-form-item>
-        <el-form-item label="发布单位">
-          <span>{{ formData.createOrgName }}</span>
-        </el-form-item>
-        <el-form-item label="发布时间">
-          <span>{{ formData.createTime }}</span>
-        </el-form-item>
-        <el-form-item label="消息类型">
-          <span>{{ formatDictData(formData.messageType) }}</span>
-        </el-form-item>
-        <el-form-item label="接收单位">
-          <span />
-        </el-form-item>
-        <el-form-item label="发布范围">
-          <span />
-        </el-form-item>
-        <el-form-item label="附件">
-          <el-link
-            v-if="formData.attachmentPath"
-            type="primary"
-            :href="formData.attachmentPath | formatFileUrl"
-            :underline="false"
-            icon="el-icon-paperclip"
-          >{{ formData.attachmentName }}</el-link>
-        </el-form-item>
-        <el-form-item label="内容">
-          <span>{{ formData.content }}</span>
-        </el-form-item>
-      </el-form>
-      <div slot="footer">
-        <el-button @click="close">取消</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-<script>
-import { formatDictData } from '@/utils/convert'
-import { fetchDetailData } from '@/api/info'
-
-export default {
-  props: {
-    typeData: {
-      type: Array,
-      default() {
-        return []
-      }
-    }
-  },
-  data() {
-    return {
-      // dialog
-      visible: false,
-      title: 'Edit',
-      formName: 'editForm',
-      formData: {},
-      action: 'add',
-      // others
-      loading: false
-    }
-  },
-  methods: {
-    /**
-     * 加载dialog
-     */
-    open(id) {
-      this.title = '详情'
-      this.visible = true
-      this.getDetailData(id)
-    },
-    close() {
-      this.visible = false
-    },
-    getDetailData(id) {
-      this.loading = true
-      fetchDetailData(id).then(res => {
-        Object.assign(this.formData, res.data)
-        this.loading = false
-      }).catch(error => {
-        console.log(error)
-        this.loading = false
-        this.$message({
-          type: 'error',
-          duration: 0,
-          showClose: true,
-          message: '获取信息详情出错: ' + error.message
-        })
-      })
-    },
-    formatDictData(type) {
-      return formatDictData(this.typeData, type)
-    }
-  }
-}
-</script>

+ 8 - 14
src/views/info/NoticeAdd.vue

@@ -8,7 +8,7 @@
       :close-on-click-modal="false"
       :show-close="false"
       custom-class="main-edit-dialog"
-      title="发布通知通告"
+      :title="title"
     >
       <el-form :ref="formName" :model="formData" :rules="rules" label-width="120px" class="dialog-form">
         <el-form-item prop="title" label="标题">
@@ -64,6 +64,7 @@ export default {
     return {
       // dialog
       visible: false,
+      title: '发布通知通告',
       formName: 'editForm',
       formData: {
         id: null,
@@ -88,14 +89,6 @@ export default {
       },
       // select:
       deptOptions: [],
-      selectTreeProps: {
-        // 配置项(必选)
-        nodeKey: 'shortName',
-        label: 'shortName',
-        value: 'shortName',
-        children: 'children'
-        // disabled:true
-      },
       // others
       loading: false
     }
@@ -123,7 +116,9 @@ export default {
     /**
      * 加载dialog
      */
-    open() {
+    open(type) {
+      this.title = type === 3 ? '发布标准规范' : '发布通知通告'
+      this.formData.messageType = type
       this.visible = true
     },
     close() {
@@ -137,12 +132,13 @@ export default {
           pushSave(this.formData).then(res => {
             this.$refs[this.formName].resetFields()
             this.formData.attachmentName = ''
+            this.deptOptions = []
             this.visible = false
             this.loading = false
             this.$emit('refreshData')
             this.$message({
               type: 'success',
-              message: '保存成功!'
+              message: '保存成功'
             })
           }).catch(error => {
             console.log(error)
@@ -160,9 +156,7 @@ export default {
     showTree() {
       this.$refs['deptTree'].open()
     },
-    isNull(obj) {
-      return isNull(obj)
-    }
+    isNull
   }
 }
 </script>

+ 4 - 15
src/views/info/SpecAdd.vue

@@ -8,7 +8,7 @@
       :close-on-click-modal="false"
       :show-close="false"
       custom-class="main-edit-dialog"
-      :title="title"
+      title="发布标准规范"
     >
       <el-form :ref="formName" :model="formData" :rules="rules" label-width="120px" class="dialog-form">
         <el-form-item prop="title" label="标题">
@@ -64,9 +64,6 @@ export default {
     return {
       // dialog
       visible: false,
-      isView: true,
-      viewType: 'ADD',
-      title: 'Edit',
       formName: 'editForm',
       formData: {
         id: null,
@@ -89,7 +86,6 @@ export default {
           { required: true, message: '请输入信息内容', trigger: 'blur' }
         ]
       },
-      action: 'add',
       // select:
       deptOptions: [],
       selectTreeProps: {
@@ -127,11 +123,7 @@ export default {
     /**
      * 加载dialog
      */
-    open(viewType, data) {
-      this.title = '发布通知通告'
-      this.isView = false
-      this.action = 'add'
-      this.viewType = viewType
+    open() {
       this.visible = true
     },
     close() {
@@ -145,12 +137,13 @@ export default {
           pushSave(this.formData).then(res => {
             this.$refs[this.formName].resetFields()
             this.formData.attachmentName = ''
+            this.deptOptions = []
             this.visible = false
             this.loading = false
             this.$emit('refreshData')
             this.$message({
               type: 'success',
-              message: '保存成功!'
+              message: '保存成功'
             })
           }).catch(error => {
             console.log(error)
@@ -174,7 +167,3 @@ export default {
   }
 }
 </script>
-
-<style lang="scss" scoped>
-
-</style>

+ 0 - 108
src/views/info/SpecView.vue

@@ -1,108 +0,0 @@
-<template>
-  <div>
-    <el-dialog
-      v-loading="loading"
-      :visible.sync="visible"
-      :close-on-press-escape="true"
-      :close-on-click-modal="false"
-      :show-close="false"
-      custom-class="main-edit-dialog"
-      :title="title"
-    >
-      <el-form :ref="formName" :model="formData" label-width="120px" class="dialog-form">
-        <el-form-item label="标题">
-          <span>{{ formData.title }}</span>
-        </el-form-item>
-        <el-form-item label="发布单位">
-          <span>{{ formData.createOrgName }}</span>
-        </el-form-item>
-        <el-form-item label="发布时间">
-          <span>{{ formData.createTime }}</span>
-        </el-form-item>
-        <el-form-item label="消息类型">
-          <span>{{ formatDictData(formData.messageType) }}</span>
-        </el-form-item>
-        <el-form-item label="接收单位">
-          <span />
-        </el-form-item>
-        <el-form-item label="发布范围">
-          <span />
-        </el-form-item>
-        <el-form-item label="附件">
-          <el-link
-            v-if="formData.attachmentPath"
-            type="primary"
-            :href="formData.attachmentPath | formatFileUrl"
-            :underline="false"
-            icon="el-icon-paperclip"
-          >{{ formData.attachmentName }}</el-link>
-        </el-form-item>
-        <el-form-item label="内容">
-          <span>{{ formData.content }}</span>
-        </el-form-item>
-      </el-form>
-      <div slot="footer">
-        <el-button @click="close">取消</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-<script>
-import { formatDictData } from '@/utils/convert'
-import { fetchDetailData } from '@/api/info'
-
-export default {
-  props: {
-    typeData: {
-      type: Array,
-      default() {
-        return []
-      }
-    }
-  },
-  data() {
-    return {
-      // dialog
-      visible: false,
-      title: 'Edit',
-      formName: 'editForm',
-      formData: {},
-      action: 'add',
-      // others
-      loading: false
-    }
-  },
-  methods: {
-    /**
-     * 加载dialog
-     */
-    open(id) {
-      this.title = '详情'
-      this.visible = true
-      this.getDetailData(id)
-    },
-    close() {
-      this.visible = false
-    },
-    getDetailData(id) {
-      this.loading = true
-      fetchDetailData(id).then(res => {
-        Object.assign(this.formData, res.data)
-        this.loading = false
-      }).catch(error => {
-        console.log(error)
-        this.loading = false
-        this.$message({
-          type: 'error',
-          duration: 0,
-          showClose: true,
-          message: '获取信息详情出错: ' + error.message
-        })
-      })
-    },
-    formatDictData(type) {
-      return formatDictData(this.typeData, type)
-    }
-  }
-}
-</script>

+ 4 - 5
src/views/info/components/DeptTree.vue

@@ -79,9 +79,9 @@ export default {
       this.visible = true
       if (!isNull(this.treeData)) {
         this.defaultExpandedKeys = [this.treeData[0][this.nodeKey]]
-      }
-      if (!isNull(this.checkedKeys)) {
-        this.$refs['tree'].setCheckedKeys(this.checkedKeys)
+        this.$nextTick(() => {
+          this.$refs['tree'].setCheckedKeys(this.checkedKeys)
+        })
       }
     },
     save() {
@@ -92,7 +92,7 @@ export default {
       } else {
         this.$message({
           type: 'warning',
-          message: '请选择接收单位!'
+          message: '请选择接收单位'
         })
       }
     }
@@ -121,7 +121,6 @@ export default {
     .el-scrollbar__bar.is-horizontal {
       display: none;
     }
-
   }
 }
 </style>

+ 85 - 27
src/views/info/components/DeptUser.vue

@@ -10,10 +10,10 @@
     >
       <div class="filter-box">
         <el-form ref="filterForm" :model="formData" inline>
-          <el-form-item label="应用名称">
+          <el-form-item label="姓名">
             <el-input v-model="formData.name" class="filter-item" clearable />
           </el-form-item>
-          <el-form-item label="应用事权单位名称">
+          <el-form-item label="警号">
             <el-input v-model="formData.policeNumber" class="filter-item" clearable />
           </el-form-item>
           <el-form-item>
@@ -31,22 +31,24 @@
         <div class="dept-box">
           <div class="box-title">机构列表</div>
           <el-input v-model="treeFilter" placeholder="输入关键字进行过滤" />
-          <el-tree
-            ref="tree"
-            class="filter-tree"
-            :data="treeData"
-            :props="treeProps"
-            :node-key="nodeKey"
-            :default-expanded-keys="defaultExpandedKeys"
-            :expand-on-click-node="false"
-            :filter-node-method="filterNode"
-            show-checkbox
-            check-on-click-node
-            @check="handleNodeChecked"
-          />
+          <el-scrollbar class="tree-scrollbar">
+            <el-tree
+              ref="tree"
+              class="filter-tree"
+              :data="treeData"
+              :props="treeProps"
+              :node-key="nodeKey"
+              :default-expanded-keys="defaultExpandedKeys"
+              :expand-on-click-node="false"
+              :filter-node-method="filterNode"
+              show-checkbox
+              check-on-click-node
+              @check="handleNodeChecked"
+            />
+          </el-scrollbar>
         </div>
         <div class="user-box">
-          <el-table v-loading="loading" :data="tableData" fit border stripe height="500" style="width: 100%;">
+          <el-table ref="listTable" v-loading="loading" :data="tableData" border stripe height="calc(100% - 32px)" @select="handleSelect" @select-all="handleSelectAll">
             <el-table-column type="selection" width="40" />
             <el-table-column prop="name" label="姓名" width="100" />
             <el-table-column prop="policeNumber" label="警号" width="100" />
@@ -79,7 +81,7 @@ import { isNull, hasValidRecords } from '@/utils/convert'
 import { fetchUserList } from '@/api/user'
 
 export default {
-  name: 'EmbeddedTree',
+  name: 'DeptUser',
   props: {
     treeData: {
       type: Array,
@@ -103,10 +105,12 @@ export default {
       total: 0,
       pageSizeAll: [10, 20, 50, 100, 200, 500],
       tableData: [],
+      multipleSelection: [],
+      // form
       formData: {
         name: '',
         policeNumber: '',
-        orgCode: ''
+        orgCodes: []
       },
       // tree
       treeProps: {
@@ -142,6 +146,27 @@ export default {
       this.current = val
       this.getTablelist()
     },
+    handleSelect(selection, row) {
+      const index = this.multipleSelection.findIndex(item => item.idCard === row.idcard)
+      if (index > -1) {
+        this.multipleSelection.splice(index, 1)
+      } else {
+        this.multipleSelection.push({ idCard: row.idcard, name: row.name })
+      }
+    },
+    handleSelectAll(selection) {
+      if (selection.length > 0) {
+        selection.forEach(row => {
+          if (this.multipleSelection.findIndex(item => item.idCard === row.idcard) === -1) {
+            this.multipleSelection.push({ idCard: row.idcard, name: row.name })
+          }
+        })
+      } else {
+        this.multipleSelection = this.multipleSelection.filter(
+          item => this.tableData.findIndex(row => row.idcard === item.idCard) === -1
+        )
+      }
+    },
     // 重置搜索项
     resetForm(formName) {
       this.$refs[formName].resetFields()
@@ -166,6 +191,13 @@ export default {
         if (hasValidRecords(response)) {
           this.tableData = response.data.records
           this.total = response.data.total
+          this.$nextTick(() => {
+            this.tableData.forEach((row, index) => {
+              if (this.multipleSelection.findIndex(item => item.idCard === row.idcard) >= 0) {
+                this.$refs['listTable'].toggleRowSelection(this.$refs['listTable'].data[index], true)
+              }
+            })
+          })
         } else {
           this.tableData = []
           this.total = 0
@@ -187,30 +219,37 @@ export default {
     },
     handleNodeChecked(data, list) {
       if (list.checkedKeys.length === 0) {
-        this.formData.orgCode = ''
+        this.formData.orgCodes = []
       } else {
-        if (list.checkedKeys.length === 2) {
-          this.$refs['tree'].setCheckedKeys([data[this.nodeKey]])
+        if (list.checkedKeys.length > 1000) {
+          this.$message.warning('选中单位不能超过1000个')
+          return
         }
-        this.formData.orgCode = data[this.nodeKey]
+        this.formData.orgCodes = list.checkedKeys
       }
       this.searchTable()
     },
-    open() {
+    open(contacts, receivers) {
+      this.checkedContacts = contacts
+      this.multipleSelection = receivers
       this.visible = true
       if (!isNull(this.treeData)) {
         this.defaultExpandedKeys = [this.treeData[0][this.nodeKey]]
       }
+      this.getTablelist()
+    },
+    clear() {
+      this.multipleSelection = []
+      this.checkedContacts = []
     },
     save() {
-      const checkedNodes = this.$refs['tree'].getCheckedNodes()
-      if (!isNull(checkedNodes)) {
-        this.$emit('updateValue', checkedNodes)
+      if (!isNull(this.multipleSelection) || !isNull(this.checkedContacts)) {
+        this.$emit('updateValue', this.multipleSelection, this.checkedContacts)
         this.visible = false
       } else {
         this.$message({
           type: 'warning',
-          message: '请选择接收单位!'
+          message: '请选择接收人!'
         })
       }
     }
@@ -223,11 +262,26 @@ export default {
   ::v-deep {
     .custom-dialog {
       width: 1100px !important;
+      height: 85vh;
+    }
+
+    .el-dialog__body {
+      padding: 10px 20px;
+      height: calc(100% - 55px - 71px);
+    }
+
+    .el-scrollbar__wrap{
+      overflow-x: hidden;
+    }
+
+    .el-scrollbar__bar.is-horizontal {
+      display: none;
     }
   }
 
   .receiver-box {
     display: flex;
+    height: calc(100% - 62px);
   }
 
   .box-title {
@@ -261,6 +315,10 @@ export default {
     border-right: 1px solid rgba(0,0,0,0.09);
   }
 
+  .tree-scrollbar {
+    height: calc(100% - 82px);
+  }
+
   .user-box {
     width: 100%;
   }

+ 32 - 13
src/views/info/index.vue

@@ -51,7 +51,7 @@
         <el-button plain @click="addInfo(1)">发布通知通告</el-button>
         <el-button plain @click="addInfo(2)">发布信息交流</el-button>
         <el-button plain @click="addInfo(3)">发布标准规范</el-button>
-        <el-button plain>批量签阅</el-button>
+        <el-button plain @click="batchRead">批量签阅</el-button>
       </div>
       <el-table v-loading="loading" :data="tableData" border stripe height="calc(100% - 82px)" @selection-change="handleSelectionChange">
         <el-table-column type="selection" width="40" />
@@ -83,22 +83,22 @@
     </div>
     <notice-add ref="noticeAdd" :dept-data="deptData" @refreshData="searchTable" />
     <comm-add ref="commAdd" :dept-data="deptData" @refreshData="searchTable" />
-    <spec-add ref="specAdd" :dept-data="deptData" @refreshData="searchTable" />
-    <notice-edit ref="noticeEdit" :dept-data="deptData" @refreshData="searchTable" />
+    <!-- <spec-add ref="specAdd" :dept-data="deptData" @refreshData="searchTable" /> -->
+    <!-- <notice-edit ref="noticeEdit" :dept-data="deptData" @refreshData="searchTable" /> -->
     <info-view ref="infoView" :type-data="typeData" />
   </div>
 </template>
 
 <script>
 import { getDeptTreeData } from '@/api/dept'
-import { fetchTableList } from '@/api/info'
+import { fetchTableList, pushBatchRead } from '@/api/info'
 
 import { isNull, hasValidRecords, formatDictData } from '@/utils/convert'
 
 import NoticeAdd from './NoticeAdd'
 import CommAdd from './CommAdd'
-import SpecAdd from './SpecAdd'
-import NoticeEdit from './NoticeEdit'
+// import SpecAdd from './SpecAdd'
+// import NoticeEdit from './NoticeEdit'
 import InfoView from './InfoView'
 
 import TreeSelect from '@/components/Select/TreeSelect'
@@ -108,8 +108,6 @@ export default {
     TreeSelect,
     NoticeAdd,
     CommAdd,
-    SpecAdd,
-    NoticeEdit,
     InfoView
   },
   data() {
@@ -217,14 +215,35 @@ export default {
       this.formData.deptCode = value
     },
     addInfo(type) {
-      if (type === 1) {
-        this.$refs['noticeAdd'].open()
-      } else if (type === 2) {
+      if (type === 2) {
         this.$refs['commAdd'].open()
-      } else if (type === 3) {
-        this.$refs['specAdd'].open()
+      } else {
+        this.$refs['noticeAdd'].open(type)
       }
     },
+    batchRead() {
+      if (this.multipleSelection.length === 0) {
+        this.$message.warning('请选择待签阅的行!')
+        return
+      }
+      const targetIds = this.multipleSelection.map(item => item.targetId).join(',')
+      this.loading = true
+      pushBatchRead(targetIds).then(res => {
+        // row.readStatus = 1
+        console.log(this.multipleSelection)
+        this.$message.success('批量签阅成功!')
+        this.loading = false
+      }).catch(error => {
+        console.log(error)
+        this.loading = false
+        this.$message({
+          type: 'error',
+          duration: 0,
+          showClose: true,
+          message: '批量签阅出错: ' + error.message
+        })
+      })
+    },
     viewItem(id) {
       this.$refs['infoView'].open(id)
     },

+ 1 - 1
src/views/system/components/DetailEdit.vue

@@ -254,7 +254,7 @@ export default {
             this.$emit('refreshData')
             this.$message({
               type: 'success',
-              message: '保存成功!'
+              message: '保存成功'
             })
           }).catch(error => {
             console.log(error)

+ 1 - 1
src/views/system/index.vue

@@ -115,7 +115,7 @@ export default {
       this.uploadLoading = false
       this.$message({
         type: 'success',
-        message: '上传成功!'
+        message: '上传成功'
       })
       this.searchTable()
     },