dedsudiyu 1 gadu atpakaļ
vecāks
revīzija
1ab9a67a88

+ 17 - 1
src/api/commonality/permission.js

@@ -451,7 +451,7 @@ export function systemPostSelect(query) {
   })
 }
 
-//获取系统消息列表
+//获取-小铃铛列表
 export function systemNoticeGetNoticeList(query) {
   return request({
     url: '/system/notice/getNoticeList',
@@ -459,6 +459,22 @@ export function systemNoticeGetNoticeList(query) {
     params: query
   })
 }
+//获取-小铃铛数量
+export function systemNoticeGetNoticeCount(query) {
+  return request({
+    url: '/system/notice/getNoticeCount',
+    method: 'get',
+    params: query
+  })
+}
+//获取-小铃铛详情
+export function systemNoticeGetNoticeDetail(query) {
+  return request({
+    url: '/system/notice/getNoticeDetail',
+    method: 'get',
+    params: query
+  })
+}
 //获取系统消息类型
 export function systemNoticeGetNoticeType(query) {
   return request({

+ 46 - 18
src/api/systemManagement/index.js

@@ -216,46 +216,74 @@ export function addOrUpdate(data) {
 }
 
 /*********************************系统公告*********************************/
-// 查询公告列表
-export function listNotice(data) {
+// 消息编辑
+export function systemNoticeUpdate(data) {
   return request({
-    url: '/system/notice/list',
+    url: '/system/notice/update',
     method: 'post',
     data: data
   })
 }
-
-// 查询公告详细
-export function getNotice(query) {
+// 消息-详情接口
+export function systemNoticeDetail(query) {
   return request({
     url: '/system/notice/detail',
     method: 'get',
     params: query
   })
 }
-
-// 新增公告
-export function addNotice(data) {
+// 消息-详情-用户ids
+export function systemNoticeSendUserIds(query) {
   return request({
-    url: '/system/notice/add',
+    url: '/system/notice/sendUserIds',
+    method: 'get',
+    params: query
+  })
+}
+// 删除消息
+export function systemNoticeDelete(data) {
+  return request({
+    url: '/system/notice/delete',
     method: 'post',
     data: data
   })
 }
-
-// 修改公告
-export function updateNotice(data) {
+// 撤回消息
+export function systemNoticeCancel(data) {
   return request({
-    url: '/system/notice/update',
+    url: '/system/notice/cancel',
     method: 'post',
     data: data
   })
 }
-
-// 删除公告
-export function delNotice(data) {
+// 发送消息
+export function systemNoticeSend(data) {
   return request({
-    url: '/system/notice/delete',
+    url: '/system/notice/send',
+    method: 'post',
+    data: data
+  })
+}
+//消息接收人查询
+export function systemNoticeGetSendType(query) {
+  return request({
+    url: '/system/notice/getSendType',
+    method: 'get',
+    params: query
+  })
+}
+//消息-添加
+export function systemNoticeAdd(data) {
+  return request({
+    url: '/system/notice/add',
+    method: 'post',
+    data: data
+  })
+}
+//消息-列表
+export function systemNoticeList(data) {
+  return request({
+    url: '/system/notice/list',
     method: 'post',
     data: data
   })

+ 14 - 1
src/layout/components/Navbar.vue

@@ -9,8 +9,9 @@
     <!--按钮-->
     <div class="nav-icon-max-box">
       <!--消息-->
-      <div @click="goPage('message')">
+      <div class="message-box" @click="goPage('message')">
         <img src="@/assets/ZDimages/basicsModules/top_nav_icon_02.png">
+        <p class="message-num-position-p" v-if="$store.state.user.messageNum>0"></p>
       </div>
       <!--首页-->
       <div @click="goPage('home')" v-if="userType!='22'&&initPage">
@@ -114,6 +115,18 @@ export default {
   .nav-icon-max-box{
     display: flex;
     margin-left:20px;
+    .message-box{
+      position: relative;
+      .message-num-position-p{
+        position: absolute;
+        top:12px;
+        left:30px;
+        width:10px;
+        height:10px;
+        background-color: red;
+        border-radius:50%;
+      }
+    }
     div{
       width:54px;
       height:54px;

+ 17 - 2
src/store/modules/user.js

@@ -1,5 +1,5 @@
 import { login, logout, getInfo, refreshToken,phoneLogin } from '@/api/basicsModules/index'
-import { systemUserProfile } from "@/api/commonality/permission";
+import { systemUserProfile,systemNoticeGetNoticeCount } from "@/api/commonality/permission";
 import { getToken, setToken, setExpiresIn, removeToken } from '@/utils/auth'
 import store from '@/store'
 import router from '@/router'
@@ -11,7 +11,8 @@ const user = {
     name: '',
     avatar: '',
     roles: [],
-    permissions: []
+    permissions: [],
+    messageNum:0,
   },
 
   mutations: {
@@ -32,6 +33,9 @@ const user = {
     },
     SET_PERMISSIONS: (state, permissions) => {
       state.permissions = permissions
+    },
+    SET_MESSAGE_NUM: (state, num) => {
+      state.messageNum = num
     }
   },
 
@@ -184,6 +188,17 @@ const user = {
       commit('SET_PERMISSIONS', [])
       removeToken()
     },
+
+    //获取小铃铛消息数据
+    getMessageNum({ commit }){
+      return new Promise((resolve, reject) => {
+        systemNoticeGetNoticeCount().then(response => {
+          commit('SET_MESSAGE_NUM', response.data)
+        }).catch(error => {
+          reject(error)
+        })
+      })
+    },
   }
 }
 

+ 5 - 5
src/views/basicsModules/components/homeNavbar.vue

@@ -4,11 +4,11 @@
       <img :src="circularLogo">
       <p>{{VUE_APP_TITLE}}</p>
     </div>
-    <div class="nav-icon-max-box">
-      <div @click="goPage('message')">
-        <img src="@/assets/ZDimages/basicsModules/top_nav_icon_02.png">
-      </div>
-    </div>
+    <!--<div class="nav-icon-max-box">-->
+      <!--<div @click="goPage('message')">-->
+        <!--<img src="@/assets/ZDimages/basicsModules/top_nav_icon_02.png">-->
+      <!--</div>-->
+    <!--</div>-->
     <div class="right-menu">
       <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
         <div class="avatar-wrapper" style="display: flex">

+ 1 - 0
src/views/basicsModules/login.vue

@@ -392,6 +392,7 @@ export default {
               }
               this.getExploitConfig();
               this.getHomeConfig();
+              this.$store.dispatch("getMessageNum", {}).then((res) => {}).catch(() => {});
               // localStorage.setItem('initPage',res.data.skipHomePage);
               if(res.data.reset_password){
                 this.$confirm('账号当前登录密码为默认密码,是否现在修改?', "提示", {

+ 56 - 52
src/views/basicsModules/message.vue

@@ -7,7 +7,8 @@
         <!--<i class="right-top-button el-icon-close" @click="backPage"></i>-->
       </div>
       <div class="page-content-box">
-        <el-table class="table-box" v-loading="loading" border :data="dataList" @selection-change="handleSelectionChange">
+        <el-table class="table-box" v-loading="loading" border :data="dataList"
+                  @selection-change="handleSelectionChange">
           <el-table-column label="消息类型" align="left" prop="sendName" width="140" show-overflow-tooltip>
             <template slot-scope="scope">
               <span v-for="item in typeList" v-if="item.code==scope.row.noticeType">{{item.name}}</span>
@@ -17,7 +18,7 @@
           <el-table-column label="消息内容" align="left" prop="content" show-overflow-tooltip/>
           <el-table-column label="发送时间" align="left" prop="createTime" width="160" show-overflow-tooltip>
             <template slot-scope="scope">
-              <span>{{parseTime(scope.row.sendTime,"{y}-{m}-{d} {h}:{i}")}}</span>
+              <span>{{parseTime(scope.row.sendTime,'{y}-{m}-{d} {h}:{i}')}}</span>
             </template>
           </el-table-column>
           <el-table-column label="发送人" align="left" prop="createTime" width="160" show-overflow-tooltip>
@@ -25,16 +26,17 @@
               <span>{{scope.row.userName?scope.row.userName:'--'}}</span>
             </template>
           </el-table-column>
-          <!--<el-table-column label="发送内容" align="left" prop="meaasgeContext">-->
-            <!--<template slot-scope="scope">-->
-              <!--<el-collapse v-if="scope.row.meaasgeContext.length>70">-->
-                <!--<el-collapse-item title="点击查看">-->
-                  <!--<div v-html="scope.row.meaasgeContext"></div>-->
-                <!--</el-collapse-item>-->
-              <!--</el-collapse>-->
-              <!--<span v-else>{{scope.row.meaasgeContext}}</span>-->
-            <!--</template>-->
-          <!--</el-table-column>-->
+          <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="160">
+            <template slot-scope="scope">
+              <div class="table-button-box">
+                <p class="table-button-null"></p>
+                <p class="table-button-p"
+                   @click="lockInfo(scope.row)"
+                >查看</p>
+                <p class="table-button-null"></p>
+              </div>
+            </template>
+          </el-table-column>
         </el-table>
         <pagination :page-sizes="[20, 30, 40, 50]"
                     v-show="total>0"
@@ -50,10 +52,10 @@
 </template>
 
 <script>
-import { systemNoticeGetNoticeList,systemNoticeGetNoticeType } from "@/api/commonality/permission";
+  import { systemNoticeGetNoticeList, systemNoticeGetNoticeType,systemNoticeGetNoticeDetail } from '@/api/commonality/permission'
   export default {
-    props:{
-      videoData:[],
+    props: {
+      videoData: []
     },
     name: 'manageInformation',
     data() {
@@ -63,84 +65,86 @@ import { systemNoticeGetNoticeList,systemNoticeGetNoticeType } from "@/api/commo
         // 查询参数
         queryParams: {
           pageNum: 1,
-          pageSize:20,
+          pageSize: 20
         },
         // 总条数
         total: 1,
         // 表格数据
         dataList: [],
         //消息类型
-        typeList:[],
-        demoTex:"点击查看"
+        typeList: [],
+        demoTex: '点击查看'
       }
     },
     created() {
-      this.hardwareList = this.getList();
+      this.hardwareList = this.getList()
     },
-    mounted(){
-      this.getList();
-      this.systemNoticeGetNoticeType();
+    mounted() {
+      this.getList()
+      this.systemNoticeGetNoticeType()
     },
     methods: {
-      backPage(){
-        this.$parent.pageSwitchOff();
+      lockInfo(row){
+        systemNoticeGetNoticeDetail({noticeId:row.noticeId}).then(response => {
+          this.$store.dispatch("getMessageNum", {}).then((res) => {}).catch(() => {});
+        });
       },
       // 多选框选中数据
       handleSelectionChange(selection) {
         this.ids = selection.map(item => item.id)
-        this.single = selection.length!==1
+        this.single = selection.length !== 1
         this.multiple = !selection.length
       },
       /** 查询列表 */
       getList() {
         // this.loading = false;
-        this.loading = true;
+        this.loading = true
         systemNoticeGetNoticeList(this.queryParams).then(response => {
-          this.$set(this,'dataList',response.data.records);
-          this.$set(this,'total',response.data.total);
-          this.loading = false;
+          this.$set(this, 'dataList', response.data.records)
+          this.$set(this, 'total', response.data.total)
+          this.loading = false
           // for(let i=0;i<this.hardwareList.length;i++){
           //   this.hardwareList[i].collapseType = false;
           //   this.hardwareList[i].meaasgeContext = unescape(this.hardwareList[i].meaasgeContext);
           // }
-        });
+        })
       },
       //消息类型
-      systemNoticeGetNoticeType(){
+      systemNoticeGetNoticeType() {
         systemNoticeGetNoticeType().then(response => {
-          this.$set(this,'typeList',response.data);
-        });
-      },
+          this.$set(this, 'typeList', response.data)
+        })
+      }
     }
   }
 </script>
 
 <style lang="scss" scoped>
-  .manageInformation{
-    .manageInformationPage{
-      .top-title-box{
+  .manageInformation {
+    .manageInformationPage {
+      .top-title-box {
         border-bottom: 1px solid #E0E0E0;
         position: relative;
-        .color_one{
-          line-height:60px;
-          padding-left:20px;
+        .color_one {
+          line-height: 60px;
+          padding-left: 20px;
         }
-        .right-top-button{
-          height:30px;
-          width:30px;
-          font-size:20px;
-          line-height:30px;
+        .right-top-button {
+          height: 30px;
+          width: 30px;
+          font-size: 20px;
+          line-height: 30px;
           text-align: center;
-          color:#999;
-          border-radius:50%;
+          color: #999;
+          border-radius: 50%;
           position: absolute;
-          top:15px;
-          right:15px;
+          top: 15px;
+          right: 15px;
         }
-        .right-top-button:hover{
+        .right-top-button:hover {
           background: #999;
-          color:#fff;
-          cursor:pointer;
+          color: #fff;
+          cursor: pointer;
         }
       }
     }

+ 165 - 12
src/views/systemManagement/notice/addPage.vue

@@ -1,14 +1,63 @@
 <template>
   <div class="page-container notice-addPage">
     <div class="page-top-title-box">
-      <p class="page-top-title-name-p">{{newData.id?'编辑':'新增'}}</p>
+      <p class="page-top-title-name-p">{{addForm.id?'编辑':'新增'}}</p>
       <p class="page-top-title-out-p" @click="backPage">返回</p>
       <p class="page-top-title-add-p" @click="submitForm">提交</p>
     </div>
     <div class="content-box scrollbar-box">
-      <el-form class="add-form-box" :model="newData" ref="form" :rules="rules" label-width="120px">
-        <el-form-item label="名称" prop="name">
-          <el-input v-model="newData.name" placeholder="请输入名称" maxLength="20" style="width:500px;"></el-input>
+      <el-form class="add-form-box" :model="addForm" ref="form" :rules="rules" label-width="120px">
+        <el-form-item label="标题" prop="title">
+          <el-input v-model="addForm.title" placeholder="请输入标题"
+                    maxLength="20" style="width:500px;"></el-input>
+        </el-form-item>
+        <el-form-item label="消息类型" prop="noticeType">
+          <el-select v-model="addForm.noticeType" placeholder="请选择消息类型" style="width:500px;">
+            <el-option
+              v-for="dict in typeList"
+              :key="dict.code"
+              :label="dict.name"
+              :value="dict.code"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="接收人" prop="sendType">
+          <el-select v-model="addForm.sendType" placeholder="请选择接收人" style="width:500px;">
+            <el-option
+              v-for="dict in userTypeList"
+              :key="dict.code"
+              :label="dict.name"
+              :value="dict.code"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="指定用户" prop="userIds" v-if="addForm.sendType == 5">
+          <el-select
+            style="width:500px;"
+            v-model="addForm.userIds"
+            filterable
+            remote
+            clearable
+            multiple
+            reserve-keyword
+            placeholder="请输入至少2个字符搜索相关人员"
+            :remote-method="userSelectList">
+            <el-option
+              v-for="item in optionsUser"
+              :key="item.userId"
+              :label="item.userName+(item.userType==1?' (教职工)':' (学生)')"
+              :value="item.userId">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="发送状态" prop="sendState">
+          <el-radio-group v-model="addForm.sendState" style="width:320px;">
+            <el-radio :label="1">立即发送</el-radio>
+            <el-radio :label="0">暂不发送</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="消息内容" prop="content">
+          <editor v-model="addForm.content" :min-height="192"/>
         </el-form-item>
       </el-form>
     </div>
@@ -16,9 +65,8 @@
 </template>
 
 <script>
-  //import { getDicts } from "@/api/commonality/noPermission";
-  //import { systemUserSelect } from "@/api/commonality/permission";
-  //import { getInfo } from "@/api/basicsModules/index";
+  import { systemNoticeGetSendType,systemNoticeAdd,systemNoticeDetail,systemNoticeUpdate,systemNoticeSendUserIds } from "@/api/systemManagement/index";
+  import { systemNoticeGetNoticeType,systemUserSelect } from "@/api/commonality/permission";
   export default {
     name: 'addPage',
     props:{
@@ -26,16 +74,80 @@
     },
     data(){
       return{
-        newData:{},
+        // 消息类型
+        typeList: [],
+        //接收人
+        userTypeList:[],
+        optionsUser:[],
+        addForm:{
+          title:'',
+          noticeType:'',
+          sendType:'',
+          userIds:'',
+          sendState:1,
+          content:'',
+        },
+        // 表单校验
+        rules: {
+          title: [
+            { required: true, message: "请输入标题", trigger: "blur" },
+            { required: true, message: "请输入标题", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          noticeType: [
+            { required: true, message: "请选择消息类型", trigger: "change" }
+          ],
+          sendType: [
+            { required: true, message: "请选择接收人", trigger: "change" }
+          ],
+          userIds: [
+            { required: true, message: "请选择指定用户", trigger: "change" }
+          ],
+          sendState: [
+            { required: true, message: "请选择发送状态", trigger: "change" }
+          ],
+          content: [
+            { required: true, message: "请输入消息内容", trigger: "blur" },
+            { required: true, message: "请输入消息内容", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+        }
       }
     },
     created(){
-      this.initialize();
     },
     mounted(){
-
+      this.systemNoticeGetNoticeType();
+      this.systemNoticeGetSendType();
+      if(this.propsData.noticeId){
+        this.systemNoticeDetail();
+      }
     },
     methods:{
+      //消息详情
+      systemNoticeDetail(){
+        systemNoticeDetail({noticeId:this.propsData.noticeId}).then(response => {
+          this.$set(this,'addForm',{
+            noticeId:this.propsData.noticeId,
+            title:response.data.title,
+            noticeType:response.data.noticeType,
+            sendType:response.data.sendType,
+            userIds:[],
+            sendState:response.data.sendState,
+            content:response.data.content,
+          });
+          if(response.data.sendType == 5){
+            this.systemNoticeSendUserIds();
+          }
+        });
+      },
+      //用户IDS
+      systemNoticeSendUserIds(){
+        systemNoticeSendUserIds({noticeId:this.propsData.noticeId}).then(response => {
+          this.$set(this.addForm,'userIds',response.data);
+          systemUserSelect({"userName":'','userType':'',userIds:response.data}).then(response => {
+            this.$set(this,'optionsUser',response.data);
+          });
+        });
+      },
       // 返回按钮
       backPage(){
         this.$parent.tableButton(6);
@@ -44,10 +156,51 @@
       submitForm() {
         this.$refs["form"].validate(valid => {
           if (valid) {
-
+            let obj = {
+              title:this.addForm.title,
+              noticeType:this.addForm.noticeType,
+              sendType:this.addForm.sendType,
+              userIds:this.addForm.sendType == 5 ? this.addForm.userIds : [],
+              sendState:this.addForm.sendState,
+              content:this.addForm.content,
+            }
+            if (this.addForm.noticeId){
+              obj.noticeId = this.addForm.noticeId;
+              systemNoticeUpdate(obj).then(response => {
+                this.msgSuccess(response.message)
+                this.backPage();
+              });
+            } else {
+              systemNoticeAdd(obj).then(response => {
+                this.msgSuccess(response.message)
+                this.backPage();
+              });
+            }
           }
         })
-      }
+      },
+      //消息类型
+      systemNoticeGetNoticeType(){
+        systemNoticeGetNoticeType().then(response => {
+          this.$set(this,'typeList',response.data);
+        });
+      },
+      //接收人
+      systemNoticeGetSendType(){
+        systemNoticeGetSendType().then(response => {
+          this.$set(this,'userTypeList',response.data);
+        });
+      },
+      /** 下列人员-懒加载 */
+      userSelectList(query) {
+        if (query !== '' && query.length>1) {
+          systemUserSelect({"userName":query,'userType':''}).then(response => {
+            this.$set(this,'optionsUser',response.data);
+          });
+        } else {
+          this.$set(this,'optionsUser',[]);
+        }
+      },
     },
   }
 </script>

+ 97 - 189
src/views/systemManagement/notice/index.vue

@@ -26,13 +26,13 @@
           <p class="page-reset-common-style-button" @click="resetQuery">重置</p>
           <p class="page-submit-common-style-button"
              style="float: right;"
-             @click="handleAdd"
+             @click="tableButton(1)"
              v-hasPermiRouter="['system:notice:add']"
           >新增</p>
         </el-form>
       </div>
       <div class="page-content-box">
-        <el-table class="table-box" v-loading="loading" border :data="dataList" @selection-change="handleSelectionChange">
+        <el-table class="table-box" v-loading="loading" border :data="dataList">
           <el-table-column label="消息类型" align="left" prop="sendName" width="140" show-overflow-tooltip>
             <template slot-scope="scope">
               <span v-for="item in typeList" v-if="item.code==scope.row.noticeType">{{item.name}}</span>
@@ -40,26 +40,48 @@
           </el-table-column>
           <el-table-column label="消息标题" align="left" prop="title" width="200" show-overflow-tooltip/>
           <el-table-column label="消息内容" align="left" prop="content" show-overflow-tooltip/>
-          <el-table-column label="发送时间" align="left" prop="createTime" width="160" show-overflow-tooltip>
+          <el-table-column label="发送状态" align="left" prop="sendState" width="160" show-overflow-tooltip>
+            <template slot-scope="scope">
+              <span>{{scope.row.sendState == 0 ? '待发送' : (scope.row.sendState == 1 ? '已发送' : (scope.row.sendState == 2 ? '已撤回' : ''))}}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="发送时间" align="left" prop="sendTime" width="160" show-overflow-tooltip>
             <template slot-scope="scope">
               <span>{{parseTime(scope.row.sendTime,"{y}-{m}-{d} {h}:{i}")}}</span>
             </template>
           </el-table-column>
-          <el-table-column label="发送人" align="left" prop="createTime" width="160" show-overflow-tooltip>
+          <el-table-column label="发送人" align="left" prop="userName" width="160" show-overflow-tooltip>
             <template slot-scope="scope">
               <span>{{scope.row.userName?scope.row.userName:'--'}}</span>
             </template>
           </el-table-column>
-          <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="160" v-if="tableButtonType">
+          <el-table-column label="创建时间" align="left" prop="createTime" width="160" show-overflow-tooltip>
+            <template slot-scope="scope">
+              <span>{{parseTime(scope.row.createTime,"{y}-{m}-{d} {h}:{i}")}}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="200" v-if="tableButtonType">
             <template slot-scope="scope">
               <div class="table-button-box">
                 <p class="table-button-null"></p>
                 <p class="table-button-p"
-                   @click="handleUpdate(scope.row)"
+                   v-if="scope.row.sendState == 0"
+                   @click="tableButton(2,scope.row)"
+                   v-hasPermiRouter="['system:notice:edit']"
+                >发送</p>
+                <p class="table-button-p"
+                   v-if="scope.row.sendState == 1"
+                   @click="tableButton(3,scope.row)"
+                   v-hasPermiRouter="['system:notice:edit']"
+                >撤回</p>
+                <p class="table-button-p"
+                   v-if="scope.row.sendState != 1"
+                   @click="tableButton(4,scope.row)"
                    v-hasPermiRouter="['system:notice:edit']"
                 >编辑</p>
                 <p class="table-button-p"
-                   @click="handleDelete(scope.row)"
+                   v-if="scope.row.sendState != 1"
+                   @click="tableButton(5,scope.row)"
                    v-hasPermiRouter="['system:notice:del']"
                 >删除</p>
                 <p class="table-button-null"></p>
@@ -77,59 +99,14 @@
         />
       </div>
     </div>
-    <add-page v-if="pageType == 2"></add-page>
-    <!-- 添加或修改公告对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="780px" append-to-body :close-on-click-modal="false">
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="公告标题" prop="title">
-              <el-input v-model="form.title" placeholder="请输入公告标题" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="公告类型" prop="noticeType">
-              <el-select v-model="form.noticeType" placeholder="请选择">
-                <el-option
-                  v-for="dict in typeList"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
-            <el-form-item label="状态" prop="state">
-              <el-radio-group v-model="form.state">
-                <el-radio
-                  v-for="dict in statusOptions"
-                  :key="dict.value"
-                  :label="dict.value"
-                >{{dict.label}}</el-radio>
-              </el-radio-group>
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
-            <el-form-item label="内容" prop="content">
-              <editor v-model="form.content" :min-height="192"/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-      <div slot="footer" class="dialog-footer dialog-footer-box">
-        <p class="dialog-footer-button-null"></p>
-        <p class="dialog-footer-button-info" @click="cancel">取消</p>
-        <p class="dialog-footer-button-primary" @click="submitForm">提交</p>
-        <p class="dialog-footer-button-null"></p>
-      </div>
-    </el-dialog>
+    <add-page v-if="pageType == 2" :propsData="propsData"></add-page>
   </div>
 </template>
 
 <script>
-import { listNotice, getNotice, delNotice, addNotice, updateNotice } from "@/api/systemManagement/index";
-import { systemNoticeGetNoticeList,systemNoticeGetNoticeType } from "@/api/commonality/permission";
+import { systemNoticeList,systemNoticeDelete,systemNoticeCancel,
+  systemNoticeSend } from "@/api/systemManagement/index";
+import { systemNoticeGetNoticeType } from "@/api/commonality/permission";
 import addPage from "./addPage.vue"
 
 export default {
@@ -143,31 +120,14 @@ export default {
       pageType:1,
       // 遮罩层
       loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
       // 显示搜索条件
       showSearch: true,
       // 总条数
       total: 0,
       // 公告表格数据
       dataList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 类型数据字典
-      statusOptions: [{label:"正常",value:true},{label:"关闭",value:false},],
-      // 状态数据字典0-通知,1-公告, 2-消息, 3-自定义"
-      typeList: [
-        {label:"通知",value:0},
-        {label:"公告",value:1},
-        {label:"消息",value:2},
-        {label:"自定义",value:3},
-        ],
+      // 消息类型
+      typeList: [],
       // 查询参数
       queryParams: {
         page: 1,
@@ -177,24 +137,8 @@ export default {
         createBy: undefined,
         state: undefined
       },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        title: [
-          { required: true, message: "公告标题不能为空", trigger: "blur" },
-          { required: true, message: "公告标题不能为空", validator: this.spaceJudgment, trigger: "blur" }
-        ],
-        noticeType: [
-          { required: true, message: "公告类型不能为空", trigger: "change" }
-        ],
-        state: [
-          { required: true, message: "请选择状态", trigger: "change" }
-        ],
-        content: [
-          { required: true, message: "请输入内容", trigger: "change" }
-        ]
-      }
+      //新增编辑页面传参
+      propsData:{},
     };
   },
   created() {
@@ -204,55 +148,6 @@ export default {
     this.getList();
   },
   methods: {
-    /** 查询列表 */
-    getList() {
-      this.loading = true;
-      systemNoticeGetNoticeList(this.queryParams).then(response => {
-        this.$set(this,'dataList',response.data.records);
-        this.$set(this,'total',response.data.total);
-        this.loading = false;
-      });
-    },
-    //消息类型
-    systemNoticeGetNoticeType(){
-      systemNoticeGetNoticeType().then(response => {
-        this.$set(this,'typeList',response.data);
-      });
-    },
-    // 公告状态字典翻译
-    statusFormat(row, column) {
-      let self = this;
-      for(let i=0;i<self.statusOptions.length;i++){
-        if(row.state == self.statusOptions[i].value){
-          return self.statusOptions[i].label
-        }
-      }
-    },
-    // 公告状态字典翻译
-    typeFormat(row, column) {
-      let self = this;
-      for(let i=0;i<self.typeList.length;i++){
-        if(row.noticeType == self.typeList[i].value){
-          return self.typeList[i].label
-        }
-      }
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        noticeId: null,
-        title: null,
-        noticeType: null,
-        content: null,
-        state: null
-      };
-      this.resetForm("form");
-    },
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.page = 1;
@@ -264,63 +159,76 @@ export default {
       this.resetForm("queryForm");
       this.handleQuery();
     },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.noticeId)
-      this.single = selection.length!=1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      // this.reset();
-      // this.open = true;
-      // this.title = "添加公告";
-      this.$set(this,'pageType',2);
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset();
-      const noticeId = row.noticeId || this.ids
-      getNotice({noticeId:noticeId}).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改公告";
+    /** 查询列表 */
+    getList() {
+      this.loading = true;
+      systemNoticeList(this.queryParams).then(response => {
+        this.$set(this,'dataList',response.data.records);
+        this.$set(this,'total',response.data.total);
+        this.loading = false;
       });
     },
-    /** 提交按钮 */
-    submitForm: function() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          if (this.form.noticeId != undefined) {
-            updateNotice(this.form).then(response => {
-              this.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addNotice(this.form).then(response => {
-              this.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
-          }
-        }
+    //消息类型
+    systemNoticeGetNoticeType(){
+      systemNoticeGetNoticeType().then(response => {
+        this.$set(this,'typeList',response.data);
       });
     },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const noticeIds = row.noticeId || this.ids
-      this.$confirm('是否确认删除公告?', "警告", {
+    //按钮
+    tableButton(type,row){
+      let self = this;
+      if(type == 1){
+        //新增
+        this.$set(this,'propsData',{});
+        this.$set(this,'pageType',2);
+      }else if(type == 2){
+        //发送
+        this.$confirm('是否确认发送?', "警告", {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
           type: "warning"
         }).then(function() {
-          return delNotice({noticeId:noticeIds});
+          systemNoticeSend({noticeId:row.noticeId}).then(response => {
+            self.msgSuccess(response.message)
+            self.getList();
+          });
         }).then(() => {
-          this.getList();
-          this.msgSuccess("删除成功");
         }).catch(() => {});
-    }
+      }else if(type == 3){
+        //撤回
+        this.$confirm('是否确认撤回?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          systemNoticeCancel({noticeId:row.noticeId}).then(response => {
+            self.msgSuccess(response.message)
+            self.getList();
+          });
+        }).then(() => {
+        }).catch(() => {});
+      }else if(type == 4){
+        //编辑
+        this.$set(this,'propsData',row);
+        this.$set(this,'pageType',2);
+      }else if(type == 5){
+        //删除
+        this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          systemNoticeDelete({noticeId:row.noticeId}).then(response => {
+            self.msgSuccess(response.message)
+            self.getList();
+          });
+        }).then(() => {
+        }).catch(() => {});
+      }else if(type == 6){
+        this.handleQuery();
+        this.$set(this,'pageType',1);
+      }
+    },
   }
 };
 </script>