Browse Source

Merge branch 'V0.0.4' of http://10.87.21.221:8000/jzyd_yyds/soc_web into V0.0.4

coys 1 year ago
parent
commit
bdb72bb5b9

+ 16 - 0
src/api/login.js

@@ -67,6 +67,22 @@ export function tokenLogin(token) {
     method: "get",
   });
 }
+
+export function homeData() {
+  return request({
+    url: `/core/panel/data`,
+    method: "get",
+  });
+}
+
+export function fileList() {
+  return request({
+    url: `/core/materials/list`,
+    method: "get",
+  });
+}
+
+
 //
 // // 获取验证码
 // export function getCodeImg() {

+ 10 - 10
src/api/resumption/plan.js

@@ -23,17 +23,17 @@ export function cheHui(id) {
     method: 'get'
   })
 }
-// 查询【请填写功能名称】详细
-export function distributeCheHui(id) {
+// 下发所属机构为行社的计划
+export function distributeHS(id,immediateEffect) {
   return request({
-    url: '/core/api/plan/distributeCheHui/' + id,
+    url: `/core/api/plan/distributehs/${id}/${immediateEffect}`,
     method: 'get'
   })
 }
 // 查询【请填写功能名称】详细
-export function distribute(query) {
+export function distribute(query,immediateEffect) {
   return request({
-    url: '/core/api/plan/distribute' ,
+    url: '/core/api/plan/distribute/'+immediateEffect ,
     method: 'post',
     data: query
   })
@@ -51,19 +51,19 @@ export function get(id) {
     method: 'get'
   })
 }
-// 修改【请填写功能名称】
-export function update(data) {
+// immediateEffect:使用中、停用状态下编辑时有效
+export function update(data,immediateEffect) {
   return request({
-    url: '/core/api/plan/edit',
+    url: '/core/api/plan/edit/'+immediateEffect,
     method: 'post',
     data: data
   })
 }
 
 // 删除【请填写功能名称】
-export function delelte(id) {
+export function del(id) {
   return request({
     url: '/core/api/plan/delete/' + id,
-    method: 'get'
+    method: 'delete'
   })
 }

+ 3 - 1
src/assets/styles/ruoyi.scss

@@ -314,9 +314,11 @@
   line-height: 36px!important;
 }
 .el-submenu__title,.el-menu-item{
+   display: flex;
    font-size: 16px!important;
    height: 42px!important;
-   line-height: 42px!important;
+   align-items: center;
+  justify-content: flex-start;
 }
 
  .el-form-item__label{

+ 0 - 1
src/components/W-FileUpload/index.vue

@@ -19,7 +19,6 @@
       :headers="headers"
       class="upload-file-uploader"
       ref="fileUpload"
-      list-type="picture"
     >
       <el-button size="small" type="primary" v-if="showTip">点击上传</el-button>
       <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->

+ 85 - 0
src/components/message/threeStateMessageBox.vue

@@ -0,0 +1,85 @@
+<template>
+  <DialogCom
+    @closed="onClose"
+    class="elDialog"
+    :title="title"
+    :visible.sync="isShow"
+    width="500px"
+  >
+    <div>{{ message }}</div>
+    <div slot="footer" class="dialog-footer">
+      <el-button size="small" type="primary" @click="onYes">是</el-button>
+      <el-button size="small" @click="onNo">否</el-button>
+      <el-button size="small" @click="onCanel">取消</el-button>
+    </div>
+  </DialogCom>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      isShow: false,
+      message: "",
+      title: "提示",
+      callback: null,
+      state: null, //0否,1:是,2取消
+    };
+  },
+  methods: {
+    /**
+     * option:扩展
+     */
+    show(message, callback, option) {
+      this.isShow = true;
+      this.message = message;
+      this.callback = callback;
+    },
+    onYes() {
+      this.state = 1;
+      this.isShow = false;
+    },
+    onNo() {
+      this.state = 0;
+      this.isShow = false;
+    },
+    onCanel() {
+      this.state = 2;
+      this.isShow = false;
+    },
+    onClose() {
+      this.callback && this.callback(this.state);
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.elDialog {
+  ::v-deep .el-dialog {
+    display: flex;
+    flex-direction: column;
+    margin: 0 !important;
+    top: 40%;
+    left: 50% !important;
+    transform: translate(-50%, -50%);
+  }
+
+  ::v-deep .el-dialog__header {
+    position: relative;
+    padding: 15px;
+    padding-bottom: 10px;
+    height: 43px;
+  }
+
+  ::v-deep .el-dialog__body {
+    padding: 10px 15px;
+    color: #606266;
+    font-size: inherit;
+  }
+
+  ::v-deep .dialog-footer {
+    padding: 5px 15px 0;
+    text-align: right;
+  }
+}
+</style>

+ 0 - 3
src/layout/components/Sidebar/index.vue

@@ -72,9 +72,6 @@ export default {
       return !this.sidebar.opened;
     },
   },
-  mounted(){
-    console.log(this.sidebarRouters,'sidebarRouters');
-  },
   methods: {
     toggleSideBar() {
       this.$store.dispatch("app/toggleSideBar");

+ 17 - 8
src/plugins/modal.js

@@ -52,21 +52,30 @@ export default {
     Notification.warning(content)
   },
   // 确认窗体
-  confirm(content) {
+  confirm(content,option) {
     return MessageBox.confirm(content, "系统提示", {
-      confirmButtonText: '确定',
-      cancelButtonText: '取消',
-      type: "warning",
+      confirmButtonText:(option && option.confirmButtonText)?option.confirmButtonText: '确定',
+      cancelButtonText: (option && option.cancelButtonText)?option.cancelButtonText: '取消',
+      type: (option && option.type)?option.type:  "warning",
     })
   },
   // 提交内容
-  prompt(content) {
+  prompt(content,option) {
     return MessageBox.prompt(content, "系统提示", {
-      confirmButtonText: '确定',
-      cancelButtonText: '取消',
-      type: "warning",
+      confirmButtonText:(option && option.confirmButtonText)?option.confirmButtonText: '确定',
+      cancelButtonText:(option && option.confirmButtonText)?option.confirmButtonText: '取消',
+      type:(option && option.type)?option.type:  "warning",
     })
   },
+  // prompt(content){
+  //   return MessageBox.prompt(content, "提示", {
+  //     confirmButtonText: '是',
+
+  //     cancelButtonText: '取消',
+
+  //     type: "info",
+  //   })
+  // },
   // 打开遮罩层
   loading(content) {
     loadingInstance = Loading.service({

+ 8 - 3
src/views/core/outIn/letter/dialog.addletter.vue

@@ -63,11 +63,12 @@
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="上传介绍信附件" prop="letterFile">
+              <el-form-item label="上传介绍信附件" ref="letterFile" prop="letterFile">
                 <K-file-upload
-                  ref="upload"
+                  ref="uploadFile"
                   :limit=2
                   :defaultValue="formFileListDefualtValue"
+                  @input="fileListChanged"
                   v-model="formData.letterFile"
                 />
               </el-form-item>
@@ -302,6 +303,10 @@ export default {
       this.userInfo.imgFile = list;
       this.$refs.userImgFile.clearValidate();
     },
+    fileListChanged(list)
+    {
+      this.$refs.letterFile.clearValidate();
+    },
     endDisabledDate(time) {
       //小于开始日期禁止选择
       let startDate = new Date();
@@ -331,7 +336,7 @@ export default {
     onHide() {
       this.isShow = false;
       this.formData = this.reset();
-      this.$refs["upload"].clearFiles();
+      this.$refs["uploadFile"].clearFiles();
     },
     onHideUser() {
       this.open = false;

+ 87 - 97
src/views/dashboard/PanelGroup.vue

@@ -1,23 +1,21 @@
 <template>
-  <el-card>
     <div class="panel-group">
-        <div class="card-panel" @click="handleClick(v)" v-for="(v,i) in menuList" :key="i">
-          <div class="card-panel-icon-wrapper icon-people">
-            <svg-icon class-name="card-panel-icon" v-if="v.icon" :icon-class="v.icon"/>
+        <div class="card-panel" @click="handleClick(v)" v-for="(v,i) in menusList" :key="i">
+          <div class="card-panel-icon-wrapper" :class="`color${v.meta.colorIndex}`" :style="{color:v.meta.color}">
+            <svg-icon class-name="card-panel-icon" v-if="v.meta.icon" :icon-class="v.meta.icon"/>
           </div>
           <div class="card-panel-description">
             <div class="card-panel-text">
-              {{v.name}}
+              {{v.meta.title}}
             </div>
           </div>
         </div>
     </div>
-  </el-card>
 </template>
 
 <script>
 import CountTo from 'vue-count-to'
-
+import {mapGetters} from 'vuex'
 export default {
   components: {
     CountTo
@@ -25,63 +23,63 @@ export default {
   data(){
     return {
       menuList:[
-        {
-          name:'履职任务下发',
-          icon:'education',
-          url:'',
-        },
-        {
-          name:'调阅任务下发',
-          icon:'//',
-          url:'',
-        },
-        {
-          name:'培训任务下发',
-          icon:'//',
-          url:'',
-        },
-        {
-          name:'演练任务下发',
-          icon:'//',
-          url:'',
-        },
-        {
-          name:'检查任务下发',
-          icon:'//',
-          url:'',
-        },
-        {
-          name:'履职情况跟踪',
-          icon:'//',
-          url:'',
-        },
-        {
-          name:'调阅情况跟踪',
-          icon:'//',
-          url:'',
-        },
-        {
-          name:'培训登记跟踪',
-          icon:'//',
-          url:'',
-        },
-        {
-          name:'检查登记跟踪',
-          icon:'//',
-          url:'',
-        },
-        {
-          name:'演练登记跟踪',
-          icon:'//',
-          url:'',
-        }
+       '履职任务下发',
+       '调阅任务下发',
+       '培训任务下发',
+       '演练任务下发',
+       '检查任务下发',
+       '履职情况跟踪',
+       '调阅情况跟踪',
+       '培训登记跟踪',
+       '检查登记跟踪',
+       '演练登记跟踪',
+       '介绍信管理'
       ],
     }
   },
+  computed:{
+    ...mapGetters(["sidebarRouters"]),
+    menusList(){
+      let arr = [];
+      let childrenArr = this.sidebarRouters.filter(v=>{return v.children}).map(v=>{return v.children});
+      let flatArr = childrenArr.reduce((acc, val) => acc.concat(val), []);  //扁平化数组
+      this.menuList.forEach(v=>{
+        flatArr.forEach(item=>{
+          if(item.meta && item.meta.title && item.meta.title === v){
+            let colorObj = this.getColor();
+            item.meta.color = colorObj.color;
+            item.meta.colorIndex = colorObj.index;
+            arr.push(item)
+          }
+        })
+      })
+      return arr;
+    }
+  },
   methods: {
+    getColor(){
+      let color = [
+        '#008CD6',
+        '#F56C6C',
+        '#67C23A',
+        '#34bfa3',
+        '#40c9c6',
+        '#36a3f7',
+        '#f4516c',
+        '#dec744',
+        '#00a0b0',
+        '#E6A23C'
+      ];
+      let index = Math.floor( Math.random()*10);
+      return {
+        color:color[index],
+        index:index+1,
+      }
+    },
     handleClick(v) {
       this.$router.push({
-        path:'/resumption/plan'
+        name:v.name,
+        path:v.path
       })
     }
   }
@@ -90,10 +88,10 @@ export default {
 
 <style lang="scss" scoped>
 .panel-group {
-  display: grid;
-  grid-template-columns:repeat(auto-fill, 140px);
-  grid-row-gap: 20px;
-  grid-column-gap: 20px;
+  display: flex;
+  //grid-template-columns:repeat(auto-fill, 130px);
+  //grid-row-gap: 20px;
+  //grid-column-gap: 20px;
   justify-content: space-between;
   .card-panel {
     cursor: pointer;
@@ -104,50 +102,42 @@ export default {
     background: #fff;
     box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
     border-color: rgba(0, 0, 0, .05);
-    //&:first-child{
-    //  margin-left: 0;
-    //}
-    //&:last-child{
-    //  margin-right: 0;
-    //}
     &:hover {
       .card-panel-icon-wrapper {
-        color: #fff;
+        color: #fff!important;
       }
-
-      .icon-people {
-        background: #40c9c6;
+      .color1 {
+        background-color: #008CD6;
       }
-
-      .icon-message {
-        background: #36a3f7;
+      .color2 {
+        background-color: #F56C6C;
       }
-
-      .icon-money {
-        background: #f4516c;
+      .color3 {
+        background-color: #67C23A;
       }
-
-      .icon-shopping {
-        background: #34bfa3
+      .color4 {
+        background-color: #34bfa3;
       }
-    }
-
-    .icon-people {
-      color: #40c9c6;
-    }
-
-    .icon-message {
-      color: #36a3f7;
-    }
-
-    .icon-money {
-      color: #f4516c;
-    }
+      .color5 {
+        background-color: #40c9c6;
+      }
+      .color6 {
+        background-color: #36a3f7;
+      }
+      .color7 {
+        background-color: #f4516c;
+      }
+      .color8 {
+        background-color: #dec744;
 
-    .icon-shopping {
-      color: #34bfa3
+      }
+      .color9 {
+        background-color: #00a0b0;
+      }
+      .color10 {
+        background-color: #E6A23C;
+      }
     }
-
     .card-panel-icon-wrapper {
       height: 80px;
       margin: 14px;

+ 38 - 54
src/views/index.vue

@@ -1,25 +1,29 @@
 <template>
   <div class="home-container">
-
-    <panel-group />
-
     <el-row :gutter="20">
+      <el-col :span="24">
+        <el-card>
+          <p class="card-title">快捷菜单</p>
+          <panel-group />
+        </el-card>
+      </el-col>
       <el-col :xs="24" :sm="12" :md="13"  :lg="10">
         <el-card class="card-group">
+          <p class="card-title">待办事项</p>
           <el-row :gutter="20">
-            <el-col :xs="24" :sm="24" :md="12"  :lg="12" v-for="(v,i) in menuList" :key="i">
+            <el-col :xs="24" :sm="24" :md="12"  :lg="12" v-for="(v,i) in dataList" :key="i">
               <div class="card-panel"  >
                 <div class="card-panel-icon-wrapper icon-people">
                   <svg-icon icon-class="peoples" class-name="card-panel-icon" />
                   <div class="card-icon-text">
-                    访客管理菜单
+                    {{v.taskTypeText}}
                   </div>
                 </div>
                 <div class="card-panel-description">
                   <div class="card-panel-text">
-                    访客管理菜单
+                    {{v.statusText}}
                   </div>
-                  <count-to :start-val="0" :end-val="81212" :duration="3000" class="card-panel-num" />
+                  <count-to :start-val="0" :end-val="v.nums" :duration="3000" class="card-panel-num" />
                 </div>
               </div>
             </el-col>
@@ -30,11 +34,10 @@
       </el-col>
       <el-col :xs="24" :sm="12" :md="11"  :lg="14">
         <el-card class="chart-wrapper">
+          <p class="card-title">其他</p>
           <el-tabs type="border-card">
-            <el-tab-pane label="用户管理">用户管理</el-tab-pane>
-            <el-tab-pane label="配置管理">配置管理</el-tab-pane>
-            <el-tab-pane label="角色管理">角色管理</el-tab-pane>
-            <el-tab-pane label="定时任务补偿">定时任务补偿</el-tab-pane>
+            <el-tab-pane label="通知公告">通知公告</el-tab-pane>
+            <el-tab-pane label="知识库">知识库</el-tab-pane>
           </el-tabs>
         </el-card>
       </el-col>
@@ -47,6 +50,7 @@
 <script>
 import PanelGroup from './dashboard/PanelGroup'
 import CountTo from 'vue-count-to'
+import {homeData} from '../api/login'
 export default {
   name: 'Index',
   components: {
@@ -55,25 +59,34 @@ export default {
   },
   data() {
     return {
-      menuList:[1,2,3,4,5,6],
+      dataList:[],
     }
   },
+  mounted(){
+    this.getData();
+  },
   methods: {
-
+    getData(){
+      homeData().then(res=>{
+        this.dataList = res.data;
+      })
+    }
   }
 }
 </script>
-<style lang="scss" scoped>
-::v-deep{
+<style lang="scss">
+.home-container{
   .el-card__body{
-    padding: 20px;
+    padding: 10px 20px 20px 20px;
   }
   .card-group{
     .el-card__body {
-      padding: 10px 20px;
+      padding-bottom: 10px;
     }
   }
 }
+</style>
+<style lang="scss" scoped>
 .home-container {
   padding: 20px;
   background-color: rgb(240, 242, 245);
@@ -82,7 +95,14 @@ export default {
     margin-top: 20px;
   }
 }
-
+.card-title{
+  margin: 0 0 10px 0;
+}
+.card-group{
+  .card-title{
+    margin: 0;
+  }
+}
 .card-group {
   margin-top: 20px;
   .card-panel {
@@ -96,47 +116,11 @@ export default {
     box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
     border-color: rgba(0, 0, 0, .05);
     margin: 10px 0;
-    &:hover {
-      .card-panel-icon-wrapper {
-        color: #fff;
-      }
-      .card-icon-text{
-        color: #fff;
-      }
-      .icon-people {
-        background: #40c9c6;
-
-      }
-
-      .icon-message {
-        background: #36a3f7;
-      }
-
-      .icon-money {
-        background: #f4516c;
-      }
-
-      .icon-shopping {
-        background: #34bfa3
-      }
-    }
 
     .icon-people {
       color: #40c9c6;
     }
 
-    .icon-message {
-      color: #36a3f7;
-    }
-
-    .icon-money {
-      color: #f4516c;
-    }
-
-    .icon-shopping {
-      color: #34bfa3
-    }
-
     .card-panel-icon-wrapper {
       height: 120px;
       margin: 10px;

+ 74 - 56
src/views/resumption/plan/dialog.edit.vue

@@ -20,19 +20,19 @@
             <el-col :span="6">
               <el-form-item prop="planName" label="任务名称:">
                 <el-input
-                  :disabled="isChildren()"
                   v-model.trim="formData.planName"
                   :maxlength="50"
                   name="planName"
                   placeholder="请输入任务名称"
                   clearable
+                  style="width:217px"
                 />
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item prop="planType" label="任务类型:">
                 <el-select
-                  :disabled="isChildren()"
+                  :disabled="canEdit()"
                   @change="changeData"
                   label="任务类型"
                   v-model="formData.planType"
@@ -54,7 +54,7 @@
               <el-form-item prop="planCycle" label="任务周期:">
                 <el-select
                   @change="changeBuildTime"
-                  :disabled="isChildren()"
+                  :disabled="canEdit()"
                   prop="planCycle"
                   label="任务周期"
                   v-model="formData.planCycle"
@@ -79,7 +79,7 @@
             <el-col :span="6">
               <el-form-item prop="planExec" label="任务时间:">
                 <el-select
-                  :disabled="isChildren()"
+                  :disabled="canEdit()"
                   label="任务时间"
                   v-model="formData.planExec"
                   placeholder="请选择任务时间"
@@ -125,7 +125,7 @@
             <el-col :span="6">
               <el-form-item prop="execOrgType" label="机构类型:">
                 <el-select
-                  :disabled="isChildren()"
+                  :disabled="canEdit()"
                   label="机构类型"
                   v-model="formData.execOrgType"
                   placeholder="请选择机构类型"
@@ -145,7 +145,7 @@
             <el-col :span="6">
               <el-form-item prop="roleList" label="履职人员:">
                 <el-select
-                  :disabled="isChildren()"
+                  :disabled="canEdit()"
                   label="履职人员"
                   v-model="formData.roleList"
                   placeholder="请选择用户角色"
@@ -167,6 +167,7 @@
             <el-col :span="6">
               <el-form-item prop="count" label="任务次数:">
                 <el-input-number
+                  :disabled="canEdit()"
                   style="margin-left: 10px"
                   v-model="formData.count"
                   controls-position="right"
@@ -176,7 +177,7 @@
                 ></el-input-number>
               </el-form-item>
             </el-col>
-            <el-col :span="6">
+            <!-- <el-col :span="6">
               <el-form-item
                 prop="tempBuildTaskNow"
                 label="立即生效:"
@@ -192,11 +193,11 @@
                   >
                 </div>
               </el-form-item>
-            </el-col>
+            </el-col> -->
           </el-row>
           <el-form-item prop="note" label="备注">
             <el-input
-              :disabled="isChildren()"
+              :disabled="canEdit()"
               v-model="formData.note"
               :maxlength="255"
               clearable
@@ -217,9 +218,7 @@
             :selectable="handleSelectable"
           ></el-table-column>
 
-
-          <el-table-column prop="ruleName" label="履职手册">
-          </el-table-column>
+          <el-table-column prop="ruleName" label="履职手册"> </el-table-column>
           <el-table-column prop="itemName" label="履职项"> </el-table-column>
           <el-table-column prop="pointName" label="履职内容" width="300px">
             <template slot-scope="scope">
@@ -277,6 +276,7 @@
       :orgType="formData.execOrgType"
       @select="onSelect"
     ></DialogSelect>
+    <DialogThreeState ref="DialogThreeState"> </DialogThreeState>
   </div>
 </template>
 
@@ -287,6 +287,7 @@ import * as api from "@/api/resumption/plan";
 import { statusOptions } from "./../../commonOption";
 import { findAllRole } from "@/api/system/role";
 import DialogSelect from "@/views/resumption/ruleManager/dialog.select.point.vue";
+import DialogThreeState from "@/components/message/threeStateMessageBox.vue";
 export default {
   dicts: [
     "resumption_plan_type",
@@ -363,16 +364,16 @@ export default {
       isShow: false,
       formData: {},
       formDataRules: {
-        planName: [{ required: true, message: "请输入计划名称" }],
-        planType: [{ required: true, message: "请选择计划类型" }],
-        planCycle: [{ required: true, message: "请选择履职周期" }],
-        planStatus: [{ required: true, message: "请选择计划状态" }],
-        execOrgType: [{ required: true, message: "请选择履职机构类型" }],
+        planName: [{ required: true, message: "请输入任务名称" }],
+        planType: [{ required: true, message: "请选择任务类型" }],
+        planCycle: [{ required: true, message: "请选择任务周期" }],
+        // planStatus: [{ required: true, message: "请选择计划状态" }],
+        execOrgType: [{ required: true, message: "请选择机构类型" }],
         roleList: [
-          { required: true, message: "请选择履职角色", trigger: "change" },
+          { required: true, message: "请选择履职人员", trigger: "change" },
         ],
-        planExec: [{ required: true, message: "请选择履职时间" }],
-        count: [{ required: true, message: "请选择履职次数" }],
+        planExec: [{ required: true, message: "请选择任务时间" }],
+        count: [{ required: true, message: "请选择任务次数" }],
       },
       statusOptions: statusOptions,
     };
@@ -410,10 +411,7 @@ export default {
       //   this.id == undefined ||
       //   (this.defbuildTaskNow && this.formData.planStatus == 0)
       // )
-      if (this.isShow && (
-        !this.id ||
-        ( this.formData.planStatus == 0))
-      )
+      if (this.isShow && (!this.id || this.formData.planStatus == 0))
         return true;
       else return false;
     },
@@ -437,8 +435,8 @@ export default {
       this.selectedRows = [];
     },
     changeBuildTime() {
-      if(this.formData.planCycle==null){
-        this.buildTime=null;
+      if (this.formData.planCycle == null) {
+        this.buildTime = null;
         return;
       }
       // console.log(this.formData.planCycle, "this.formData.planCycle");
@@ -494,19 +492,23 @@ export default {
       }
     },
     //编辑内容判断
-    isChildren() {
-      // console.log(this.formData.distributePlanStatus,"distributePlanStatus")
-      //计划所属机构id等于当前机构id并且不存在已完成或者已逾期或者
-      //计划所属机构类型不等于行社并且不存在已完成或者已逾期或者
-      //新增
-      if (
-        (this.formData.planCreateOrgId == this.orgId &&
-          this.formData.hasEdit != 1) ||
-        (this.formData.planOfOrgType != 3 && this.formData.hasEdit != 1) ||
-        this.id == null
-      ) {
-        return false;
-      } else return true;
+    // isChildren() {
+    //   // console.log(this.formData.distributePlanStatus,"distributePlanStatus")
+    //   //计划所属机构id等于当前机构id并且不存在已完成或者已逾期或者
+    //   //计划所属机构类型不等于行社并且不存在已完成或者已逾期或者
+    //   //新增
+    //   if (
+    //     (this.formData.planCreateOrgId == this.orgId &&
+    //       this.formData.hasEdit != 1) ||
+    //     (this.formData.planOfOrgType != 3 && this.formData.hasEdit != 1) ||
+    //     this.id == null
+    //   ) {
+    //     return false;
+    //   } else return true;
+    // },
+    canEdit() {
+      //停用和使用中的任务,只能编辑名称和履职内容
+      return !(this.formData.planStatus==null || this.formData.plansStatus==0);
     },
     //省联社履职内容不能删除
     getshenglianshe(row) {
@@ -779,9 +781,9 @@ export default {
     },
     // 事件
     onHide() {
-      this.isShow = false;     
+      this.isShow = false;
     },
-    onClose(){
+    onClose() {
       this.formData = this.reset();
       this.$refs.form.resetFields();
     },
@@ -812,7 +814,7 @@ export default {
         // this.formData.note = this.formData.description;
         this.formData.planCreateOrgId = this.orgId;
         this.formData.planCreateOrgName = this.orgName;
-      
+
         this.formData.itemList = this.tableData == null ? [] : this.tableData;
         //新需求,自动填充角色
         if (
@@ -827,21 +829,37 @@ export default {
         this.formData.roleList =
           this.selectedValues.length == 0 ? null : this.selectedValues;
 
-        await api.update(this.formData).then((data) => {
-          this.isSubmitting = false;
-            this.loading = false;
-            this.$emit("success");
-            this.onHide();
-          })
-          .catch((err) => {
-            this.loading = false;
-            // console.log(err,"err")
-          });
-        
-        // this.$emit("success");
-        // this.onHide();
+        //停用、使用中编辑
+        if (this.formData.planStatus > 0) {
+          this.$refs["DialogThreeState"].show(
+            "本周期未完成任务是否使用新的任务内容?",
+            (state) => {
+              if (state == 0 || state == 1) {
+                this.update(this.formData, state == 1);
+              }else{
+                this.loading = false;
+              }
+            }
+          );
+        } else {
+          this.update(this.formData, false);
+        }
       });
     },
+    async update(data, immediateEffect) {
+      await api
+        .update(data, immediateEffect)
+        .then((data) => {
+          this.isSubmitting = false;
+          this.loading = false;
+          this.$emit("success");
+          this.onHide();
+        })
+        .catch((err) => {
+          this.loading = false;
+          // console.log(err,"err")
+        });
+    },
     handleRolesChange(val) {
       this.selectedValues = val.toString().split(",");
     },
@@ -849,7 +867,7 @@ export default {
     //apimark//
   },
   mounted() {},
-  components: { DialogSelect },
+  components: { DialogSelect, DialogThreeState },
 };
 </script>
 

+ 3 - 1
src/views/resumption/plan/distribute.vue

@@ -76,6 +76,7 @@ export default {
       info: this.emptyInfo(),
       tableData: [],
       filterName: null,
+      plan:null
     };
   },
   computed: {},
@@ -90,6 +91,7 @@ export default {
   },
   methods: {
     show(plan) {
+      this.plan=plan
       this.isShow = true;
       this.loading=true;
       this.info.id = plan.id;
@@ -126,7 +128,7 @@ export default {
     },
     onSubmit() {
       console.info(this.info);
-      this.$emit("select", this.info);
+      this.$emit("select", this.info,this.plan);
       this.onHide();
     },
     emptyInfo() {

+ 108 - 62
src/views/resumption/plan/index.vue

@@ -330,7 +330,7 @@
                   size="mini"
                   type="text"
                   icon="el-icon-delete"
-                  @click="onDel(r.row.id, r.row.planName)"
+                  @click="onDel(r.row)"
                   v-hasPermi="['core:plan:delete']"
                   >删除</el-button
                 >
@@ -355,6 +355,7 @@
       :ruleTypeOptions="dict.type.rule_type"
     ></dialog-edit>
     <DialogDistribute ref="dialogDistribute" @select="sel"></DialogDistribute>
+    <DialogThreeState ref="DialogThreeState"> </DialogThreeState>
   </div>
 </template>
 
@@ -366,6 +367,7 @@ import DialogEdit from "./dialog.edit";
 import * as api from "@/api/resumption/plan";
 import { statusOptions, getLabel } from "./../../commonOption";
 import { allRole } from "@/api/system/role";
+import DialogThreeState from "@/components/message/threeStateMessageBox.vue";
 export default {
   name: "resumptionplan",
   dicts: [
@@ -380,6 +382,7 @@ export default {
     DialogEdit,
     OrgTree,
     DialogDistribute,
+    DialogThreeState,
   },
   data() {
     const { params, query } = this.$route;
@@ -462,24 +465,22 @@ export default {
     //   return false;
     // },
     showPublish(row) {
-      //可以下发:本机构创建+所属机构是自己+状态为草稿、停用的计划
-      //可以下发:所属机构是自己,创建机构不是自己,状态为草稿、停用且上级计划下发时,本计划设置为禁用
+      //可以下发:本机构创建+状态为草稿、停用的计划
       if (
         row.planCreateOrgId == this.orgId &&
-        row.planOfOrgId == this.orgId &&
         (row.planStatus == 0 || row.planStatus == 2)
       ) {
         return true;
       }
 
-      if (
-        row.planOfOrgId == this.orgId &&
-        row.planCreateOrgId != this.orgId &&
-        (row.planStatus == 0 || row.planStatus == 2) &&
-        row.distributePlanStatus == 0
-      ) {
-        return true;
-      }
+      // if (
+      //   row.planOfOrgId == this.orgId &&
+      //   row.planCreateOrgId != this.orgId &&
+      //   (row.planStatus == 0 || row.planStatus == 2) &&
+      //   row.distributePlanStatus == 0
+      // ) {
+      //   return true;
+      // }
 
       return false;
     },
@@ -488,25 +489,21 @@ export default {
       return row.planCreateOrgId == this.orgId;
     },
     showWithDraw(row) {
-      //本机构创建+所属机构是自己+状态为使用中
-      //不是本机构创建+所属机构是自己+状态为使用中+上级下发时状态默认为禁用
-      if (
-        row.planCreateOrgId == this.orgId &&
-        row.planOfOrgId == this.orgId &&
-        row.planStatus == 1
-      ) {
-        return true;
-      }
+      //本机构创建是自己+状态为使用中
 
-      if (
-        row.planOfOrgId == this.orgId &&
-        row.planCreateOrgId != this.orgId &&
-        row.planStatus == 1 &&
-        row.distributePlanStatus == 0
-      ) {
+      if (row.planCreateOrgId == this.orgId && row.planStatus == 1) {
         return true;
       }
 
+      // if (
+      //   row.planOfOrgId == this.orgId &&
+      //   row.planCreateOrgId != this.orgId &&
+      //   row.planStatus == 1 &&
+      //   row.distributePlanStatus == 0
+      // ) {
+      //   return true;
+      // }
+
       return false;
     },
     // //已完成下发的计划不显示下发按钮
@@ -532,8 +529,16 @@ export default {
     // },
     //开始撤回
     chhuile(row) {
+      let msg = "";
+      if (row.taskHasCompleted == 1) {
+        msg =
+          "本次操作将对下周期及以后任务生效,对当前及历史任务不造成影响,是否确认提交?";
+      } else {
+        msg =
+          "本次操作将对当前轮次及以后任务生效,并删除所有历史未完成任务,是否确认提交?";
+      }
       this.$modal
-        .confirm("确认撤回?", "提示")
+        .confirm(msg, "提示")
         .then(() => {
           // 用户点击了确认按钮
           // console.log("执行操作...");
@@ -555,10 +560,21 @@ export default {
     //   }
     //   return false;
     // },
-    sel(selectList) {
+    sel(selectList, row) {
       this.loading = true;
-      api.distribute(selectList).then((response) => {
-        this.getList();
+      let msg = "";
+      if (row.planStatus == 0) {
+        msg = "是否立即生成任务?";
+      } else {
+        msg = "任务内容是否从当前周期生效";
+      }
+      this.$refs["DialogThreeState"].show(msg, async (state) => {
+        if (state == 0 || state == 1) {
+          await api.distribute(selectList, state == 1).then((response) => {
+            this.getList();
+          });
+        }
+
         this.loading = false;
       });
     },
@@ -600,38 +616,55 @@ export default {
     onEdit(id, other = {}) {
       this.$refs.editDialog.show(id, other);
     },
-    onChildPlanDistribute(row) {
-      this.$modal
-        .confirm("是否下发!", "提示")
-        .then(() => {
-          // 用户点击了确认按钮
-          console.log("执行操作...");
-          this.loading = true;
-          api
-            .distributeCheHui(row.id)
-            .then((response) => {
-              // console.log(response, "then");
-              if (response.data == 0) {
-                this.loading = false;
-              } else {
-                this.getList();
-                this.loading = false;
-              }
-            })
-            .catch((response) => {
-              // console.log(response, "catch");
-              this.getList();
-              this.loading = false;
-            });
+    onHSPlanDistribute(row) {
+      let msg = "";
+      if (row.planStatus == 0) {
+        msg = "是否立即生成任务?";
+      } else {
+        msg = "本周期未完成任务应用最新任务内容";
+      }
+      this.$refs["DialogThreeState"].show(msg, async (state) => {
+        if (state == 2) {
+          return;
+        }
+
+        this.distributeHS(row.id, state == 1);
+      });
+      // this.$modal
+      //   .confirm(msg, "提示")
+      //   .then(() => {
+      //     // 用户点击了确认按钮
+      //     console.log("执行操作...");
+      //     distributeHS(row.id, true);
+      //   })
+      //   .catch(() => {
+      //     // 用户点击了取消按钮
+      //     // console.log("取消操作...");
+      //     distributeHS(row.id, false);
+      //   });
+    },
+    distributeHS(id, immediateEffect) {
+      this.loading = true;
+      api
+        .distributeHS(id, immediateEffect)
+        .then((response) => {
+          // console.log(response, "then");
+          if (response.data == 0) {
+            this.loading = false;
+          } else {
+            this.getList();
+            this.loading = false;
+          }
         })
-        .catch(() => {
-          // 用户点击了取消按钮
-          console.log("取消操作...");
+        .catch((response) => {
+          // console.log(response, "catch");
+          this.getList();
+          this.loading = false;
         });
     },
     showDialogDistribute(row) {
       if (row.planOfOrgType == 3) {
-        this.onChildPlanDistribute(row);
+        this.onHSPlanDistribute(row);
       } else {
         this.$refs.dialogDistribute.show(row);
       }
@@ -655,15 +688,27 @@ export default {
       //     this.$refs.dialogDistribute.show(row);
       //   });
     },
-    async onDel(id, name) {
+    async onDel(row) {
+      let msg = "";
+      if (row.planStatus == 0) {
+        msg = '是否确认删除名称为"' + row.planName + '"的任务?';
+      } else {
+        if (row.taskHasCompleted == 1) {
+          msg =
+            "本次操作将对下周期及以后任务生效,对当前及历史任务不造成影响,是否确认提交?";
+        } else {
+          msg =
+            "本次操作将对当前轮次及以后任务生效,并删除所有历史未完成任务,是否确认提交?";
+        }
+      }
       this.$modal
-        .confirm('是否确认删除名称为"' + name + '"的数据项?')
+        .confirm(msg)
         .then(() => {
           // 用户点击了确认按钮
           console.log("执行操作...");
           this.loading = true;
           api
-            .delelte(id)
+            .del(row.id)
             .then(() => {
               this.getList();
               this.loading = false;
@@ -676,6 +721,7 @@ export default {
         .catch(() => {
           // 用户点击了取消按钮
           console.log("取消操作...");
+          this.loading = false;
         });
     },
     // 多选框选中数据
@@ -689,7 +735,7 @@ export default {
       this.resetForm("search");
       this.queryParams.orgId = this.orgId;
       this.queryParams.checkSub = false;
-      this.$refs["orgTree"].setCheckSub(this.queryParams.checkSub)
+      this.$refs["orgTree"].setCheckSub(this.queryParams.checkSub);
       // this.$refs.tree.setCurrentKey(null);
       this.getList();
     },

+ 1 - 0
src/views/safetyBook/hsggbsdj/dialog.edit.vue

@@ -71,6 +71,7 @@
               style="width: 100%; margin-bottom: 20px"
               v-model="formData.joinNames"
               placeholder="请输入参会人员"
+              maxlength="50"
             ></el-input>
           </el-form-item>
           <el-form-item

+ 6 - 4
src/views/safetyBook/newBook/dialog.des.vue

@@ -65,7 +65,7 @@
               label="甲方机构"
               v-if="formData.type == 2"
             >
-              <tree-select
+              <!-- <tree-select
                 :disabled="true"
                 v-model="formData.partyAOrg"
                 :options="deptOptions"
@@ -73,7 +73,8 @@
                 :normalizer="tenantIdnormalizer"
                 :props="{ checkStrictly: true, label: 'shortName' }"
                 placeholder="请选择乙方所属机构"
-              />
+              /> -->
+              {{ formData.partyAOrgName }}
             </el-descriptions-item>
             <el-descriptions-item labelClassName="gx_info_label" label="乙方姓名">
               {{ formData.partyB }}
@@ -83,7 +84,7 @@
               label="乙方机构"
               v-if="formData.type == 1 || formData.type == 3"
             >
-              <tree-select
+              <!-- <tree-select
                 :disabled="true"
                 v-model="formData.partyBOrg"
                 :options="deptOptions"
@@ -91,7 +92,8 @@
                 :normalizer="tenantIdnormalizer"
                 :props="{ checkStrictly: true, label: 'shortName' }"
                 placeholder="请选择乙方所属机构"
-              />
+              /> -->
+              {{ formData.partyBOrgName }}
             </el-descriptions-item>
             <el-descriptions-item
               labelClassName="gx_info_label"

+ 4 - 0
src/views/safetyBook/newBook/dialog.edit.vue

@@ -59,6 +59,7 @@
               <el-input
                 v-model="formData.partyA"
                 placeholder="请输入甲方姓名"
+                maxlength="50"
               ></el-input>
             </div>
           </el-form-item>
@@ -67,6 +68,7 @@
               <el-input
                 v-model="formData.partyAOrgName"
                 placeholder="请输入甲方机构"
+                maxlength="50"
               ></el-input>
             </div>
           </el-form-item>
@@ -85,6 +87,7 @@
               <el-input
                 v-model="formData.partyB"
                 placeholder="请输入乙方姓名"
+                maxlength="50"
               ></el-input>
             </div>
           </el-form-item>
@@ -93,6 +96,7 @@
               <el-input
                 v-model="formData.partyBOrgName"
                 placeholder="请输入甲方机构"
+                maxlength="50"
               ></el-input>
             </div>
           </el-form-item>

+ 263 - 273
src/views/system/dict/data.vue

@@ -1,284 +1,281 @@
 <template>
-  <div class="app-container">
-    <el-form
-      :model="queryParams"
-      ref="queryForm"
-      size="small"
-      :inline="true"
-      v-show="showSearch"
-      label-width="100px"
-    >
-      <el-form-item label="字典名称" prop="dictType">
-        <el-select v-model="queryParams.dictType">
-          <el-option
-            v-for="item in typeOptions"
-            :key="item.dictId"
-            :label="item.dictName"
-            :value="item.dictType"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="字典标签" prop="dictLabel">
-        <el-input
-          v-model="queryParams.dictLabel"
-          placeholder="请输入字典标签"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="状态" prop="status">
-        <el-select
-          v-model="queryParams.status"
-          placeholder="数据状态"
-          clearable
+    <div class="app-container">
+      <div class="main-search-box">
+        <el-form
+          :model="queryParams"
+          ref="queryForm"
+          size="small"
+          :inline="true"
+          v-show="showSearch"
         >
-          <el-option
-            v-for="dict in dict.type.sys_normal_disable"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item>
-        <el-button
-          type="primary"
-          icon="el-icon-search"
-          size="mini"
-          @click="handleQuery"
-          >搜索</el-button
-        >
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
-          >重置</el-button
-        >
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" >
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['system:dict:add']"
-          >新增</el-button
-        >
-      </el-col>
-      <!-- <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit-outline"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['system:dict:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['system:dict:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:dict:export']"
-        >导出</el-button>
-      </el-col> -->
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-close"
-          size="mini"
-          @click="handleClose"
-          >关闭</el-button
-        >
-      </el-col>
-      <right-toolbar
-        :showSearch.sync="showSearch"
-        @queryTable="getList"
-      ></right-toolbar>
-    </el-row>
+          <el-form-item label="字典名称" prop="dictType">
+            <el-select v-model="queryParams.dictType">
+              <el-option
+                v-for="item in typeOptions"
+                :key="item.dictId"
+                :label="item.dictName"
+                :value="item.dictType"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="字典标签" prop="dictLabel">
+            <el-input
+              v-model="queryParams.dictLabel"
+              placeholder="请输入字典标签"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="状态" prop="status">
+            <el-select
+              v-model="queryParams.status"
+              placeholder="数据状态"
+              clearable
+            >
+              <el-option
+                v-for="dict in dict.type.sys_normal_disable"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-form>
 
-    <el-table
-      border
-      height="700"
-      size="small"
-      v-loading="loading"
-      :data="dataList"
-      @selection-change="handleSelectionChange"
-    >
-      <!-- <el-table-column type="selection" width="55" align="center" /> -->
-      <el-table-column label="字典编码" align="center" prop="dictCode" />
-      <el-table-column label="字典标签" align="center" prop="dictLabel">
-        <template slot-scope="scope">
+        <el-row :gutter="10" >
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              icon="el-icon-search"
+              size="mini"
+              @click="handleQuery">搜索</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button type="primary" icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              icon="el-icon-plus"
+              size="mini"
+              @click="handleAdd"
+              v-hasPermi="['system:dict:add']"
+            >新增</el-button
+            >
+          </el-col>
+          <!-- <el-col :span="1.5">
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit-outline"
+              size="mini"
+              :disabled="single"
+              @click="handleUpdate"
+              v-hasPermi="['system:dict:edit']"
+            >修改</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="danger"
+              plain
+              icon="el-icon-delete"
+              size="mini"
+              :disabled="multiple"
+              @click="handleDelete"
+              v-hasPermi="['system:dict:remove']"
+            >删除</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-download"
+              size="mini"
+              @click="handleExport"
+              v-hasPermi="['system:dict:export']"
+            >导出</el-button>
+          </el-col> -->
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              icon="el-icon-close"
+              size="small"
+              @click="handleClose"
+            >关闭</el-button
+            >
+          </el-col>
+          <right-toolbar
+            :showSearch.sync="showSearch"
+            @queryTable="getList"
+          ></right-toolbar>
+        </el-row>
+      </div>
+      <el-table
+        border
+        height="646"
+        size="small"
+        v-loading="loading"
+        :data="dataList"
+        @selection-change="handleSelectionChange"
+      >
+        <!-- <el-table-column type="selection" width="55" align="center" /> -->
+        <el-table-column label="字典编码" align="center" prop="dictCode" />
+        <el-table-column label="字典标签" align="center" prop="dictLabel"  :show-overflow-tooltip="true" width="340">
+          <template slot-scope="scope">
           <span
             v-if="scope.row.listClass == '' || scope.row.listClass == 'default'"
-            >{{ scope.row.dictLabel }}</span
+          >{{ scope.row.dictLabel }}</span
           >
-          <el-tag
-            v-else
-            :type="scope.row.listClass == 'primary' ? '' : scope.row.listClass"
+            <el-tag
+              v-else
+              :type="scope.row.listClass == 'primary' ? '' : scope.row.listClass"
             >{{ scope.row.dictLabel }}</el-tag
-          >
-        </template>
-      </el-table-column>
-      <el-table-column label="字典键值" align="center" prop="dictValue" />
-      <el-table-column label="字典排序" align="center" prop="dictSort" />
-      <el-table-column label="状态" align="center" prop="status">
-        <template slot-scope="scope">
-          <dict-tag
-            :options="dict.type.sys_normal_disable"
-            :value="scope.row.status"
-          />
-        </template>
-      </el-table-column>
-      <el-table-column
-        label="备注"
-        align="center"
-        prop="remark"
-        :show-overflow-tooltip="true"
-      >
-      </el-table-column>
+            >
+          </template>
+        </el-table-column>
+        <el-table-column label="字典键值" align="center" prop="dictValue"  width="140"/>
+        <el-table-column label="字典排序" align="center" prop="dictSort" width="140"/>
+        <el-table-column label="状态" align="center" prop="status" width="140">
+          <template slot-scope="scope">
+            <dict-tag
+              :options="dict.type.sys_normal_disable"
+              :value="scope.row.status"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="备注"
+          align="center"
+          prop="remark"
+          :show-overflow-tooltip="true"
+        >
+        </el-table-column>
 
-      <el-table-column
-        label="创建时间"
-        align="center"
-        prop="createTime"
-        width="180"
-      >
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.createTime) }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column
-        label="操作"
-        align="center"
-        class-name="small-padding fixed-width"
-      >
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit-outline"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:dict:edit']"
+        <el-table-column
+          label="创建时间"
+          align="center"
+          prop="createTime"
+          width="180"
+        >
+          <template slot-scope="scope">
+            <span>{{ parseTime(scope.row.createTime) }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="操作"
+          align="center"
+          class-name="small-padding fixed-width"
+        >
+          <template slot-scope="scope">
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-edit-outline"
+              @click="handleUpdate(scope.row)"
+              v-hasPermi="['system:dict:edit']"
             >编辑</el-button
-          >
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['system:dict:remove']"
+            >
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-delete"
+              @click="handleDelete(scope.row)"
+              v-hasPermi="['system:dict:remove']"
             >删除</el-button
-          >
-        </template>
-      </el-table-column>
-    </el-table>
+            >
+          </template>
+        </el-table-column>
+      </el-table>
 
-    <pagination
-      v-show="total > 0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
+      <pagination
+        v-show="total > 0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
 
-    <!-- 添加或修改参数配置对话框 -->
-    <DialogCom :title="title" :visible.sync="open" width="700px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="字典类型">
-              <el-input v-model="form.dictType" :disabled="true" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="字典标签" prop="dictLabel">
-              <el-input v-model="form.dictLabel" placeholder="请输入字典标签" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="字典键值" prop="dictValue">
-              <el-input v-model="form.dictValue" placeholder="请输入字典键值" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="样式属性" prop="cssClass">
-              <el-input v-model="form.cssClass" placeholder="请输入样式属性" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="字典排序" prop="dictSort">
-              <el-input-number
-                style="width: 100%"
-                v-model="form.dictSort"
-                controls-position="right"
-                :min="0"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="回显样式" prop="listClass">
-              <el-select style="width: 100%" v-model="form.listClass">
-                <el-option
-                  v-for="item in listClassOptions"
-                  :key="item.value"
-                  :label="item.label + '(' + item.value + ')'"
-                  :value="item.value"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
+      <!-- 添加或修改参数配置对话框 -->
+      <DialogCom :title="title" :visible.sync="open" width="700px" append-to-body>
+        <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="字典类型">
+                <el-input v-model="form.dictType" :disabled="true" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="字典标签" prop="dictLabel">
+                <el-input v-model="form.dictLabel" placeholder="请输入字典标签" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="字典键值" prop="dictValue">
+                <el-input v-model="form.dictValue" placeholder="请输入字典键值" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="样式属性" prop="cssClass">
+                <el-input v-model="form.cssClass" placeholder="请输入样式属性" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="字典排序" prop="dictSort">
+                <el-input-number
+                  style="width: 100%"
+                  v-model="form.dictSort"
+                  controls-position="right"
+                  :min="0"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="回显样式" prop="listClass">
+                <el-select style="width: 100%" v-model="form.listClass">
+                  <el-option
+                    v-for="item in listClassOptions"
+                    :key="item.value"
+                    :label="item.label + '(' + item.value + ')'"
+                    :value="item.value"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
 
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="状态" prop="status">
-              <el-radio-group v-model="form.status">
-                <el-radio
-                  v-for="dict in dict.type.sys_normal_disable"
-                  :key="dict.value"
-                  :label="dict.value"
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="状态" prop="status">
+                <el-radio-group v-model="form.status">
+                  <el-radio
+                    v-for="dict in dict.type.sys_normal_disable"
+                    :key="dict.value"
+                    :label="dict.value"
                   >{{ dict.label }}</el-radio
-                >
-              </el-radio-group>
-            </el-form-item>
-          </el-col>
-        </el-row>
+                  >
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+          </el-row>
 
-        <el-form-item label="备注" prop="remark">
-          <el-input
-            v-model="form.remark"
-            type="textarea"
-            placeholder="请输入内容"
-          ></el-input>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </DialogCom>
-  </div>
+          <el-form-item label="备注" prop="remark">
+            <el-input
+              v-model="form.remark"
+              type="textarea"
+              placeholder="请输入内容"
+            ></el-input>
+          </el-form-item>
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="submitForm">确 定</el-button>
+          <el-button @click="cancel">取 消</el-button>
+        </div>
+      </DialogCom>
+    </div>
 </template>
 
 <script>
@@ -520,10 +517,3 @@ export default {
   width: 300px;
 }
 </style>
-<style >
-.el-tooltip__popper {
-  max-width: 200px;
-
-  overflow: hidden;
-}
-</style>