yangbifan il y a 2 ans
Parent
commit
e9ef5d06d6
74 fichiers modifiés avec 13528 ajouts et 4488 suppressions
  1. 4 3
      config/dev.env.js
  2. 2 1
      package.json
  3. 9 4
      public/index.html
  4. BIN
      public/static/a.xlsx
  5. BIN
      public/static/b.xlsx
  6. BIN
      public/static/c.xlsx
  7. BIN
      public/static/d.pptx
  8. BIN
      public/static/file/a.xlsx
  9. BIN
      public/static/file/b.xlsx
  10. BIN
      public/static/file/c.xlsx
  11. BIN
      public/static/file/d.pptx
  12. 8 0
      public/static/js/base64.min.js
  13. 1 1
      public/static/js/luckysheet/css/luckysheet.css
  14. 8 16
      public/static/js/luckysheet/expendPlugins/chart/chartmix.umd.min.js
  15. 4152 7
      public/static/js/luckysheet/luckysheet.umd.js
  16. 7 0
      public/static/js/luckysheet/luckysheet.umd.js.map
  17. 1 1
      public/static/js/luckysheet/plugins/js/plugin.js
  18. 1 1
      public/static/js/luckysheet/plugins/plugins.css
  19. BIN
      src/assets/a.xlsx
  20. BIN
      src/assets/b.xlsx
  21. BIN
      src/assets/c.xlsx
  22. BIN
      src/assets/d.pptx
  23. 10 5
      src/assets/js/common.js
  24. 1 1
      src/assets/js/http.js
  25. 4 0
      src/assets/js/url.js
  26. 62 53
      src/components/deptTreeP.vue
  27. 15 1
      src/components/el-form.vue
  28. 86 47
      src/components/newTree.vue
  29. 173 192
      src/components/workDeptThree.vue
  30. 228 80
      src/components/workflow.vue
  31. 245 53
      src/components/workflowBase.vue
  32. 127 51
      src/components/workflowEntrance.vue
  33. 12 2
      src/http/api.js
  34. 161 357
      src/pages/main/advertising/businessHall.vue
  35. 138 157
      src/pages/main/advertising/contractCap.vue
  36. 188 174
      src/pages/main/advertising/index.vue
  37. 447 0
      src/pages/main/advertising/materialAppMessage.vue
  38. 415 0
      src/pages/main/advertising/materialAppNum.vue
  39. 28 24
      src/pages/main/advertising/materialApplistatic.vue
  40. 15 0
      src/pages/main/advertising/supplier.vue
  41. 64 5
      src/pages/main/badInfoGovern/index.vue
  42. 1 1
      src/pages/main/busitime/busiTimeout.vue
  43. 76 6
      src/pages/main/endToEnd/index.vue
  44. 62 3
      src/pages/main/integral/index.vue
  45. 2 2
      src/pages/main/iptv/uploadDown.vue
  46. 138 208
      src/pages/main/leader/components/deptThree.vue
  47. 21 29
      src/pages/main/leader/components/export.vue
  48. 124 104
      src/pages/main/leader/components/form.vue
  49. 167 122
      src/pages/main/leader/components/formTable.vue
  50. 186 0
      src/pages/main/leader/components/formTrace.vue
  51. 2 3
      src/pages/main/leader/components/tabs.vue
  52. 266 49
      src/pages/main/leader/demand/demandHome.vue
  53. 213 44
      src/pages/main/leader/demand/demandHomes.vue
  54. 4 1
      src/pages/main/leader/demand/supportState.vue
  55. 16 31
      src/pages/main/leader/index.vue
  56. 298 305
      src/pages/main/leader/leaderhomeTask.vue
  57. 1284 0
      src/pages/main/leader/risk/riskManagement.vue
  58. 1444 0
      src/pages/main/leader/risk/riskMaterials.vue
  59. 3 0
      src/pages/main/memberFamily/dataStatistics.vue
  60. 679 642
      src/pages/main/memberFamily/haveInHand.vue
  61. 2 1
      src/pages/main/memberFamily/index.vue
  62. 51 4
      src/pages/main/officialAccount/officialAccountadd.vue
  63. 62 3
      src/pages/main/outCallDemand/index.vue
  64. 1 1
      src/pages/main/performance/components/dialog.vue
  65. 2 2
      src/pages/main/terminal/advertisement.vue
  66. 23 60
      src/pages/main/terminals/advchecks.vue
  67. 1 1
      src/pages/main/terminals/advertincreases.vue
  68. 54 85
      src/pages/main/terminals/components/adverts.vue
  69. 0 0
      src/pages/main/terminals/components/terminals.vue
  70. 92 13
      src/pages/main/vendor/Export2Excel.js
  71. 26 2
      src/router/index.js
  72. 49 1
      src/vendor/Export2Excel.js
  73. 23 0
      vue.config.js
  74. 1544 1529
      yarn.lock

+ 4 - 3
config/dev.env.js

@@ -6,10 +6,11 @@ module.exports = merge(prodEnv, {
   NODE_ENV: '"development"',
   ENV_CONFIG: '"dev"',
   ctx:'"http://192.168.2.188:8080"',
-  // ctxForm: '"http://10.149.85.91:8000"',//dev
+  ctxForm: '"http://10.149.85.91:8000/api"',//dev
   // ctxForm: '"http://43.138.50.94:8880"',//test
-  ctxForm: '"http://192.168.2.124:8880"',//test
-  // ctxForm: '"http://10.230.15.228:8880"',//生产
+  // ctxForm: '"http://192.168.2.44:8880"',//test
+  // ctxForm: '"http://10.230.26.15:8000/api"',//生产
+
   excludeMeWhenSelectNextHandler:false,
   excludeFormerHanlder:false,
   envTitle:'"本地开发环境"'

+ 2 - 1
package.json

@@ -15,9 +15,10 @@
     "@tinymce/tinymce-vue": "^3.0.1",
     "axios": "^0.19.0",
     "canvg": "^3.0.7",
+    "console": "^0.7.2",
     "core-js": "^3.6.1",
     "echarts": "^4.7.0",
-    "element-ui": "^2.13.0",
+    "element-ui": "^2.15.7",
     "exceljs": "^4.2.0",
     "file-saver": "^2.0.5",
     "form-making": "^1.2.10",

+ 9 - 4
public/index.html

@@ -8,13 +8,19 @@
   <link rel="icon" href="<%= BASE_URL %>favicon.ico">
   <title>市场经营管理平台</title>
   <script src="static/js/crypoto-js.js"></script>
-
+ 
+  <link rel='xlsx' href='./static/a.xlsx' />
+  <link rel='xlsx' href='./static/b.xlsx' />
+  <link rel='xlsx' href='./static/c.xlsx' />
+  <link rel='pptx' href='./static/d.pptx' />
   <script src="/static/js/luckysheet/plugins/js/plugin.js"></script>
   <script src="/static/js/luckysheet/luckysheet.umd.js"></script>
   <link rel='stylesheet' href='/static/js/luckysheet/plugins/css/pluginsCss.css' />
   <link rel='stylesheet' href='/static/js/luckysheet/plugins/plugins.css' />
   <link rel='stylesheet' href='/static/js/luckysheet/css/luckysheet.css' />
   <link rel='stylesheet' href='/static/js/luckysheet/assets/iconfont/iconfont.css' />
+  <script src="./static/js/base64.min.js"></script>
+  <script src="/static/js/ace.js"></script>
 </head>
 
 <body>
@@ -26,10 +32,9 @@
   <!-- built files will be auto injected -->
   <script type="text/javascript">
     // window.staticHost = 'http://10.230.26.15:8000/mkt'; // 正式
-  //  window.staticHost = 'http://10.149.85.91:8000/spfm'; // 测试
-  //  window.staticHost = 'http://43.138.50.94:9600/'; 
+    window.staticHost = 'http://10.149.85.91:8000/spfm'; // 测试
     // window.staticHost = 'http://192.168.0.103:9600/';
-    window.staticHost = 'http://192.168.2.124:9600/';
+    // window.staticHost = 'http://43.138.50.94:9600/';
 
     // document.title = "hello";
   </script>

BIN
public/static/a.xlsx


BIN
public/static/b.xlsx


BIN
public/static/c.xlsx


BIN
public/static/d.pptx


BIN
public/static/file/a.xlsx


BIN
public/static/file/b.xlsx


BIN
public/static/file/c.xlsx


BIN
public/static/file/d.pptx


Fichier diff supprimé car celui-ci est trop grand
+ 8 - 0
public/static/js/base64.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
public/static/js/luckysheet/css/luckysheet.css


Fichier diff supprimé car celui-ci est trop grand
+ 8 - 16
public/static/js/luckysheet/expendPlugins/chart/chartmix.umd.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 4152 - 7
public/static/js/luckysheet/luckysheet.umd.js


Fichier diff supprimé car celui-ci est trop grand
+ 7 - 0
public/static/js/luckysheet/luckysheet.umd.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
public/static/js/luckysheet/plugins/js/plugin.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
public/static/js/luckysheet/plugins/plugins.css


BIN
src/assets/a.xlsx


BIN
src/assets/b.xlsx


BIN
src/assets/c.xlsx


BIN
src/assets/d.pptx


+ 10 - 5
src/assets/js/common.js

@@ -263,11 +263,16 @@ let common = {
                     if (!obj.disableLoading) {
                         loading.close()
                     }
-                    if (response.code === 1 ||response.code == '1') {
-                       bus.$message.success(response.message)
-                        loading.close()
-                        success(response.data)
-                        return response
+                    if (response.data.code === 1 ||response.data.code == '1') {
+                        bus.$message.success(response.data.data.message)
+                         loading.close()
+                         success(response.data.data)
+                         return response
+                        // if (response.code === 1 ||response.code == '1') {
+                        //     bus.$message.success(response.data.message)
+                        //      loading.close()
+                        //      success(response.data)
+                        //      return response
                     } else {
                         if (obj.printMsg) {
                             if (response.message) {

+ 1 - 1
src/assets/js/http.js

@@ -1,4 +1,4 @@
-
+
 import axios from 'axios'
 import common from "./common.js";
 import vue from '../../components/common/bus';

+ 4 - 0
src/assets/js/url.js

@@ -13,6 +13,7 @@ const urls = {
     //新需求申请单工作流接口
     formList: {
         startWork: ctxForm + '/startProcess',   //开始工作流
+        startWorkList: ctxForm + '/batchStartProcess',   //开始工作流多人
         nextWork: ctxForm + '/complateTask',  //工作流next流转
         getWorkId: ctxForm + '/getRunningProcessInstance', // 获取工作流任务id
         transferTask: ctxForm + '/process/transferTask/',//转派工作流接口
@@ -21,6 +22,9 @@ const urls = {
         getCommentsByProcessIds:ctxForm + '/getCommentsByProcessId/',
         getReadList:ctxForm+'/complateReadTask',
         getLastName:ctxForm+'/lastMan',
+        getNewTransferTask:ctxForm+"/process/transferTaskMuti/",
+        getQueryMultiTaskId:ctxForm + "/queryMultiTaskId",
+        getComplateLastMan:ctxForm + "/complateLastMan"
     },
     excelList:{
 

+ 62 - 53
src/components/deptTreeP.vue

@@ -1,64 +1,73 @@
 <template>
-    <div class="treebox">
-        <el-tree ref="tree" @node-expand="handleNodeClick" @node-click="handleCheckChange" :data="treeList" node-key="o"
-            :default-checked-keys="defaultListc" :default-expanded-keys="defaultList"></el-tree>
-    </div>
+  <div class="treebox">
+    <el-tree
+      ref="tree"
+      @node-expand="handleNodeClick"
+      @node-click="handleCheckChange"
+      :data="treeList"
+      node-key="o"
+      :default-checked-keys="defaultListc"
+      :default-expanded-keys="defaultList"
+    ></el-tree>
+  </div>
 </template>
 
 <script>
-    export default {
-        props: ["defaultList","type"],
-        data() {
-            return {
-                treeList: [],
-                opt: [],
-                defaultProps: {
-                    children: 'children',
-                    label: 'label'
-                },
-                defaultListc:[]
-            };
+export default {
+  props: ["defaultList", "type"],
+  data() {
+    return {
+      treeList: [],
+      opt: [],
+      defaultProps: {
+        children: "children",
+        label: "label",
+      },
+      defaultListc: [],
+    };
+  },
+  methods: {
+    getTree(v) {
+      this.$http({
+        url: "/sysmgr/csysdept/queryAllList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
         },
-        methods: {
-            getTree(v) {
-                this.$http({
-                    url: "/sysmgr/csysdept/queryAllList",
-                    method: "post",
-                    headers: {
-                        "Content-Type": "application/json",
-                    },
-                    data: {
-                        parentorgid: v
-                    },
-                }).then((res) => {
-                    this.treeList = res.data;
-                });
-            },
-            handleCheckChange(v) {
-                let opt = [{
-					id:v.id,
-					o:v.o,
-					ou:v.ou,
-					displayname:v.displayname
-				}];
-                this.$emit("treeCheck",opt)
-            },
+        data: {
+          parentorgid: v,
         },
-        mounted() {},
-        created() {
-            this.getTree();
-            this.defaultListc = this.defaultList;
+      }).then((res) => {
+        this.treeList = res.data;
+      });
+    },
+    handleCheckChange(v) {
+      let opt = [
+        {
+          id: v.id,
+          o: v.o,
+          ou: v.ou,
+          displayname: v.displayname,
         },
-        watch:{
-            type(){
-                this.defaultListc = this.defaultList;
-            }
-        }
-    };
+      ];
+      this.$emit("treeCheck", opt);
+    },
+  },
+  mounted() {},
+  created() {
+    this.getTree();
+    this.defaultListc = this.defaultList;
+  },
+  watch: {
+    type() {
+      this.defaultListc = this.defaultList;
+    },
+  },
+};
 </script>
 
 <style scoped lang="scss">
-    .treebox {
-        border: 1px solid #ddd;
-    }
+.treebox {
+  border: 1px solid #ddd;
+}
 </style>

+ 15 - 1
src/components/el-form.vue

@@ -11,6 +11,9 @@
       @selection-change="selectionChange"
       empty-text="暂无数据"
       @cell-click="getRowList"
+      :cell-style="columnbackgroundStyle"
+      row-key="id"
+      :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
     >
       <!-- 是否多选 -->
       <el-table-column
@@ -116,6 +119,13 @@ export default {
 
   },
   methods: {
+    columnbackgroundStyle({ row, column, rowIndex, columnIndex }) {
+      if (column.type == "default") {
+        if (column.label === "文件标题") {
+          return "color:#0682CD;";
+        }
+      }
+    },
     selectionChange(val) {
 
       //多选数字回调
@@ -147,5 +157,9 @@ export default {
 };
 </script>
 
-<style>
+<style lang="scss" scoped>
+.btn{
+  display: flex;
+  justify-content: center;
+}
 </style>

+ 86 - 47
src/components/newTree.vue

@@ -2,34 +2,19 @@
   <div class="flex-box">
     <div class="treebox">
       <div class="tree-text">组织机构</div>
-      <el-tree
-        ref="tree"
-        @node-click="handleNodeClick"
-        :data="treeList"
-        node-key="o"
-        :indent="20"
-        :default-checked-keys="defaultListc"
-        :default-expanded-keys="defaultList"
-      >
+      <el-input placeholder="可按名字匹配所在部门" v-model="filterText">
+      </el-input>
+      <el-tree ref="tree" @node-click="handleNodeClick" :data="treeList" node-key="o" :indent="20"
+        :default-checked-keys="defaultListc" :default-expanded-keys="defaultList">
         <span class="span-ellipsis" slot-scope="{ node, data }">
-          <span :title="node.label"
-            ><i
-              v-if="data.children.length === 0"
-              class="el-icon-caret-right icon-right"
-            ></i>
-            {{ node.label }}</span
-          >
+          <span :title="node.label"><i v-if="data.children.length === 0" class="el-icon-caret-right icon-right"></i>
+            {{ node.label }}</span>
         </span>
       </el-tree>
     </div>
     <div class="flex-transfer">
-      <el-transfer
-        v-model="value"
-        :titles="['待选人员', '已选人员']"
-        filterable
-        @change="handleCheckChange"
-        :data="transferList"
-      ></el-transfer>
+      <el-transfer v-model="value" :titles="['待选人员', '已选人员']" @change="handleCheckChange"
+        :data="transferList"></el-transfer>
     </div>
   </div>
 </template>
@@ -39,9 +24,11 @@ export default {
   props: ["defaultList", "type"],
   data() {
     return {
+      filterTexts: "",
+      filterText: "",
       transferList: [],
       treeList: [],
-      treeLists:[],
+      treeLists: [],
       rightList: [],
       value: [],
       newArr: [],
@@ -56,17 +43,40 @@ export default {
   },
   methods: {
     handleNodeClick(v) {
+      for (let i = v.children.length - 1; i >= 0; i--) {
+        if (v.children[i].haveUserFlag == "N") {
+          v.children.splice(i, 1);
+        }
+      }
+      // v.children.map((item,index) =>{
+
+      //   if(item.haveUserFlag == "N"){
+      //     v.children.splice(index, 1);
+      //   }
+      //   console.log(v.children);
+      // })
+      let list = {
+        groupId: v.o,
+      };
+      if (this.filterTexts) {
+        list.loginNameStr = this.filterTexts;
+      }
       if (v.o !== this.treeId) {
         if (this.value.length !== 0) {
           let a = [];
           for (let i = 0; i <= this.transferList.length - 1; i++) {
             for (let y = 0; y <= this.value.length; y++) {
               if (this.transferList[i].key === this.value[y]) {
+                console.log(this.transferList[i].key);
+                console.log(this.value[y]);
                 a.push(this.transferList[i]);
+
               }
             }
           }
+          console.log(a);
           this.transferList = a;
+          // console.log(this.transferList);
         } else {
           this.transferList = [];
         }
@@ -87,43 +97,56 @@ export default {
       }
       if (v.o !== this.treeId) {
         this.$http({
-          url: "/sysmgr/sysuserinfo/queryList",
+          url: "/sysmgr/sysuserinfo/queryListByName",
           method: "post",
           headers: {
             "Content-Type": "application/json",
           },
-          data: {
-            groupId: v.o,
-          },
+          data: list
         }).then((res) => {
+          v.children = v.children ? v.children : [];
           this.treeId = v.o;
-          this.treeLists = res.data
+          this.treeLists = res.data;
           res.data.map((item, index) => {
             this.transferList.push({
               label: item.loginNameStr,
-              key: item.loginNoStr
-,
+              key: item.loginNoStr,
             });
           });
+          const dalaoyang = (arr, key) => {
+            let map = new Map()
+            return arr.filter(item => !map.has(item[key]) && map.set(item[key], 1))
+          }
+          this.transferList = dalaoyang(this.transferList, "key")
+          console.log(this.transferList);
         });
       } else {
         console.log(this.transferList);
       }
     },
-    getTree(v) {
+    getTree(v, e) {
+      let list = {
+        parentorgid: v,
+        // functionName: e,
+      };
+      if (e) {
+        list.functionName = e;
+      }
+      this.loading = true;
       this.$http({
         url: "/sysmgr/csysdept/queryAllList",
         method: "post",
         headers: {
           "Content-Type": "application/json",
         },
-        data: {
-          parentorgid: v,
-        },
+        data: list,
       }).then((res) => {
+        this.loading = false;
         this.treeList = res.data;
-
-        console.log(this.treeLists);
+        let list = res.data[0].children.filter((item, i, array) => {
+          return item.haveUserFlag === "Y";
+        });
+        this.treeList[0].children = list;
       });
     },
     handleCheckChange(v) {
@@ -143,24 +166,30 @@ export default {
       //   }
       // }
       // console.log(opt);
-      console.log(this.transferList);
-      console.log(this.value);
       let opt = [];
-      this.transferList.map((item) =>{
-        this.value.map((items) =>{
-          if(item.key === items){
-            opt.push(item)
+      this.transferList.map((item) => {
+        this.value.map((items) => {
+          if (item.key === items) {
+            opt.push(item);
           }
-        })
-      })
+        });
+      });
       console.log(opt);
-      this.$emit("treeCheck",opt);
+      this.$emit("treeCheck", opt);
     },
   },
   created() {
     this.getTree();
     this.defaultListc = this.defaultList;
   },
+  watch: {
+    filterText(val) {
+      // this.$refs.tree.filter(val);
+      console.log(val);
+      this.filterTexts = val;
+      this.getTree("", this.filterTexts);
+    },
+  },
 };
 </script>
 
@@ -169,33 +198,40 @@ export default {
 ::v-deep .el-checkbox.el-transfer-panel__item {
   display: block !important;
 }
+
 ::v-deep .el-transfer-panel__list.is-filterable {
   height: calc(100% - 110px);
 }
+
 ::v-deep .el-transfer-panel__body {
   height: 100%;
 }
+
 .tree-text {
   font-size: 20px;
   color: black;
   padding: 15px;
   font-weight: 600;
 }
+
 .flex-box {
   display: flex;
   width: 100%;
   justify-content: center;
   height: 80%;
 }
+
 ::v-deep .el-icon-caret-right {
   font-size: 12px;
   background-size: cover;
   margin-left: px;
 }
+
 .icon-right {
   margin-left: 5px;
   color: #fff;
 }
+
 .treebox {
   width: 30%;
   border: 1px solid #ddd;
@@ -204,16 +240,19 @@ export default {
   overflow: scroll;
   overflow-x: hidden;
 }
+
 .flex-transfer {
   width: 50%;
   height: 100%;
   margin-left: 30px;
 }
+
 ::v-deep .el-transfer-panel {
   width: 35%;
   height: 100%;
 }
+
 ::v-deep .el-transfer {
   height: 100%;
 }
-</style>
+</style>

+ 173 - 192
src/components/workDeptThree.vue

@@ -1,42 +1,40 @@
 <template>
-  <div class="treebox" v-loading="loading" style="height: 30rem">
-    <el-checkbox-group v-model="userList">
-      <div v-for="(item, index) in treeList" :key="index">
-        <el-checkbox :label="item" @change="checkChange(item)">{{
-          item.loginNameStr
-        }}</el-checkbox>
-      </div>
-    </el-checkbox-group>
+  <div class="treebox" v-loading="loading">
     <!-- <el-input placeholder="输入关键字进行过滤" v-model="filterText"></el-input> -->
-    <!--    <el-tree-->
-    <!--      :highlight-current="true"-->
-    <!--      :check-strictly="true"-->
-    <!--      ref="tree"-->
-    <!--      @check-change="handleCheckChange"-->
-    <!--      :data="treeList"-->
-    <!--      node-key="id"-->
-    <!--      :default-checked-keys="defaultListc"-->
-    <!--      :default-expanded-keys="defaultListc"-->
-    <!--      @node-click="handleNodeClick"-->
-    <!--      :filter-node-method="filterNode"-->
-    <!--    >-->
-    <!--      <span class="custom-tree-node" slot-scope="{ node }" @click="cs(node)">-->
-    <!--        <em-->
-    <!--          style="display: inline-block; width: 20px"-->
-    <!--          v-if="node.data.haveUserFlag == 'N' && node.data.children.length == 0"-->
-    <!--        ></em>-->
-    <!--        <i-->
-    <!--          class="el-icon-caret-right"-->
-    <!--          v-if="node.data.haveUserFlag == 'Y' && node.data.children.length == 0"-->
-    <!--        ></i>-->
-    <!--        <el-checkbox-->
-    <!--          style="margin-right: 10px"-->
-    <!--          v-model="node.checked"-->
-    <!--          v-if="node.data.type == 1"-->
-    <!--        ></el-checkbox>-->
-    <!--        <span>{{ node.label }}</span>-->
-    <!--      </span>-->
-    <!--    </el-tree>-->
+    <el-tree
+      :default-expand-all="expandAll"
+      :highlight-current="true"
+      :check-strictly="true"
+      ref="tree"
+      @check-change="handleCheckChange"
+      :data="treeList"
+      node-key="id"
+      :default-checked-keys="defaultListc"
+      :default-expanded-keys="defaultListc"
+      @node-click="handleNodeClick"
+      @node-expand="handleNodeClick"
+    >
+      <span
+        class="custom-tree-node"
+        slot-scope="{ node, data }"
+        @click="cs(node)"
+      >
+        <em
+          style="display: inline-block; width: 20px"
+          v-if="node.data.haveUserFlag == 'N' && node.data.children.length == 0"
+        ></em>
+        <i
+          class="el-icon-caret-right"
+          v-if="node.data.haveUserFlag == 'Y' && node.data.children.length == 0"
+        ></i>
+        <el-checkbox
+          style="margin-right: 10px"
+          v-model="node.checked"
+          v-if="node.data.type == 1"
+        ></el-checkbox>
+        <span>{{ node.label }}</span>
+      </span>
+    </el-tree>
   </div>
 </template>
 
@@ -45,8 +43,7 @@ export default {
   props: ["defaultList", "type", "closeList", "treeList"],
   data() {
     return {
-      userList: [],
-      // treeList: [],
+      expandAll: false,
       opt: [],
       defaultProps: {
         children: "children",
@@ -55,161 +52,152 @@ export default {
       defaultListc: [],
       loading: false,
       filterText: "",
-      list: [],
     };
   },
-//   watch: {
-//     immediate: true,
-//     treeList: {
-//       handler(oldVal,newVal) {
-//         console.log(oldVal);
-//         console.log(newVal);
-//       },
-//     },
-//   },
   methods: {
-    checkChange(e) {
-      // console.log(this.userList)
-      // let newList = []
-      // this.userList.map((item) =>{
-      //     let array =    {
-      //         userid:item,
-      //         taskid:e.id_,
-      //         nextid:e.id
-      //     }
-      //     newList.push(array)
-      //     // newList.map((items,i) =>{
-      //     //     if(item !== items.userid){
-      //     //         newList.splice(i,1)
-      //     //     }
-      //     //         })
-      //
-      // })
-      // this.list = newList
-      // this.userList.map((item) =>{
-      //     newList.map((items,i) =>{
-      //         if(item !==items.id){
-      //             newList.splice(i,1)
-      //         }
-      //     })
-      // })
-      // console.log(newList)
-      this.$emit("changeTree", this.userList);
-      this.$emit("changeUserName", e);
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    cs(v) {
+      // console.log(v)
+    },
+    // getTree(v) {
+    //     this.loading = true;
+    //     this.$http({
+    //         url: "/sysmgr/csysdept/queryAllList",
+    //         method: "post",
+    //         headers: {
+    //             "Content-Type": "application/json",
+    //         },
+    //         data: {
+    //             parentorgid: v,
+    //         },
+    //     }).then((res) => {
+    //         this.treeList = res.data;
+    //         this.loading = false;
+    //     });
+    // },
+    handleCheckChange(v) {
+      let opt = [];
+      let list = this.$refs.tree.getCheckedNodes();
+      for (let i = 0; i < list.length; i++) {
+        if (list[i].type == 1) {
+          opt.push({
+            receiveNo: list[i].loginNoStr,
+            receiveName: list[i].label,
+            deptName: list[i].displayname,
+            deptCode: list[i].groupId,
+            id: list[i].id,
+            type: list[i].type,
+            label: list[i].label,
+            loginNameStr:list[i].loginNameStr,
+            loginNoStr: list[i].loginNoStr,
+          });
+        }
+      }
+      this.$emit("changeTree", opt);
+    },
+    handleNodeClick(v) {
+      let s = false;
+      if (v.children && v.children.length == 0) {
+        s = true;
+      }
+      if (v.type) {
+        return;
+      }
+      if (
+        v.children &&
+        v.children.length > 0 &&
+        v.children[v.children.length - 1].type == 1
+      ) {
+        return;
+      }
+      this.$http({
+        url: "/sysmgr/sysuserinfo/queryList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {
+          groupId: v.o,
+        },
+      }).then((res) => {
+        res.data.forEach((item) => {
+          v.children.push({
+            id: item.id,
+            label: item.loginNameStr,
+            type: 1,
+            displayname: v.displayname,
+            groupId: item.groupId,
+            loginNoStr: item.loginNoStr,
+          });
+        });
+      });
+      for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
+        if (s && v.o == this.$refs.tree.store._getAllNodes()[i].data.o) {
+          this.$refs.tree.store._getAllNodes()[i].expanded = true;
+          return;
+        }
+      }
+    },
+  },
+  created() {
+    // this.getTree();
+    // console.log(this.treeList);
+    this.defaultListc = this.defaultList;
+  },
+  watch: {
+    treeList(newVal, oldVal) {
+      console.log(newVal);
+      this.$nextTick(() => {
+        if (newVal.length <= 1) {
+          this.isexpand = true;
+
+          for (
+            var i = 0;
+            i < this.$refs.tree.store._getAllNodes().length;
+            i++
+          ) {
+
+            this.$refs.tree.store._getAllNodes()[i].expanded = true;
+          }
+        } else {
+          for (
+            var i = 0;
+            i < this.$refs.tree.store._getAllNodes().length;
+            i++
+          ) {
+
+            this.$refs.tree.store._getAllNodes()[i].expanded =false;
+          }
+        }
+      });
+    },
+    filterText(val) {
+      this.$refs.tree.filter(val);
+    },
+    type() {
+      this.defaultListc = this.defaultList;
+      this.$forceUpdate();
+    },
+    defaultList() {
+      this.$forceUpdate();
+    },
+    closeList() {
+      this.$refs.tree.setCheckedNodes(this.closeList);
     },
   },
 };
-// filterNode(value, data) {
-//   if (!value) return true;
-//   return data.label.indexOf(value) !== -1;
-// },
-// cs(v) {
-//   // console.log(v)
-// },
-// getTree(v) {
-//     this.loading = true;
-//     this.$http({
-//         url: "/sysmgr/csysdept/queryAllList",
-//         method: "post",
-//         headers: {
-//             "Content-Type": "application/json",
-//         },
-//         data: {
-//             parentorgid: '00440089000000000000',
-//         },
-//     }).then((res) => {
-//         console.log(res);
-//         // this.treeList = res.data;
-//         // this.loading = false;
-//     });
-// },
-// handleCheckChange(v) {
-//     let opt = [];
-//     let list = this.$refs.tree.getCheckedNodes();
-//     for (let i = 0; i < list.length; i++) {
-//         if (list[i].type == 1) {
-//             opt.push({
-//                 receiveNo: list[i].loginNoStr,
-//                 receiveName: list[i].label,
-//                 deptName: list[i].displayname,
-//                 deptCode: list[i].groupId,
-//                 id: list[i].id,
-//                 type: list[i].type,
-//                 label: list[i].label,
-//             });
-//         }
-//     }
-//     this.$emit("treeCheck", opt);
-// },
-//   handleNodeClick(v) {
-//     console.log(v);
-//     let s = false;
-//     if (v.children && v.children.length == 0) {
-//       s = true;
-//     }
-//     if (v.type) {
-//       return;
-//     }
-//     if (
-//       v.children &&
-//       v.children.length > 0 &&
-//       v.children[v.children.length - 1].type == 1
-//     ) {
-//       return;
-//     }
-//     this.$http({
-//       url: "/sysmgr/sysuserinfo/queryList",
-//       method: "post",
-//       headers: {
-//         "Content-Type": "application/json",
-//       },
-//       data: {
-//         groupId: v.o,
-//       },
-//     }).then((res) => {
-//       res.data.forEach((item) => {
-//         v.children.push({
-//           id: item.id,
-//           label: item.loginNameStr,
-//           type: 1,
-//           displayname: v.displayname,
-//           groupId: item.groupId,
-//           loginNoStr: item.loginNoStr,
-//         });
-//       });
-//     });
-//     for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
-//       if (s && v.o == this.$refs.tree.store._getAllNodes()[i].data.o) {
-//         this.$refs.tree.store._getAllNodes()[i].expanded = true;
-//         return;
-//       }
-//     }
-//   },
-// },
-//   created() {
-//     console.log(this.treeList);
-//     // this.getTree();
-//     this.defaultListc = this.defaultList;
-//   },
-//   watch: {
-//     filterText(val) {
-//       this.$refs.tree.filter(val);
-//     },
-//     type() {
-//       this.defaultListc = this.defaultList;
-//       this.$forceUpdate();
-//     },
-//     defaultList() {
-//       this.$forceUpdate();
-//     },
-//     closeList() {
-//       this.$refs.tree.setCheckedNodes(this.closeList);
-//     },
-//   },
-// };
 </script>
 
 <style scoped lang="scss">
+// ::v-deep .el-tree--highlight-current {
+//
+// }
+::v-deep .el-tree--highlight-current {
+  height: 500px;
+}
 .el-icon-caret-right {
   color: #ccc;
   margin: 0 5px;
@@ -217,11 +205,4 @@ export default {
 .treebox {
   border: 1px solid #ddd;
 }
-::v-deep .el-checkbox-group {
-  display: flex;
-  flex-direction: column;
-  align-items: baseline;
-  /* font-size: 38px; */
-  margin-left: 20px;
-}
 </style>

+ 228 - 80
src/components/workflow.vue

@@ -9,7 +9,20 @@
               选择路径
 
               <div class="flex-path-list">
-                <div v-if="transferStatus" @click="clickTransfer(1)">转派</div>
+                <div
+                  v-if="manyReassignment"
+                  :class="actives"
+                  @click="clickManyTransfer(1)"
+                >
+                  转派
+                </div>
+                <div
+                  v-if="transferStatus"
+                  :class="active"
+                  @click="clickTransfer(1)"
+                >
+                  转派
+                </div>
                 <div v-if="copyStatus" @click="clickTransfer(2)">抄送</div>
                 <div
                   v-for="(item, index) in node.nextShapes"
@@ -70,7 +83,9 @@
             </div>
             <div class="flex-header-text-tree">
               已选人员
-              <div class="">{{ selectUser }}</div>
+              <div class="" v-for="(item, index) in backThree" :key="index">
+                {{ item.loginNameStr }}
+              </div>
             </div>
           </div>
         </div>
@@ -134,12 +149,14 @@ export default {
   name: "workflow",
   data() {
     return {
+      active: "",
       transferStatus: false, //转派按钮控制
+      manyPeopleStatus: false, //多人处理下发任务
       TransferStatus: false, //是否点击转派状态
       copyStatus: false, //抄送按钮控制
       CopyStatus: false, //是否点击抄送状态
       node: [], //路径列表
-      seleIndex: "", //点击路径下标
+      seleIndex: "1099", //点击路径下标
       commonlyList: [], //常用意见数组
       textarea: "未填写意见", //意见内容字段
       copyUser: "", //抄送人员列表
@@ -153,6 +170,10 @@ export default {
       editStatus: false, //修改控制显示字段
       treeCopyList: [],
       demand: "",
+      nextDealManList: "",
+      isLastManStatus: false,
+      manyReassignment: false,
+      actives: "",
     };
   },
   props: {
@@ -164,13 +185,24 @@ export default {
     requestForm: {
       type: Object,
     },
+    adminResourceId: {
+      type: String,
+    },
   },
   created() {
-    console.log(this.list);
+    if (this.adminResourceId) {
+      this.manyReassignment = true;
+    }
     this.getNextPath(this.list.resourceId, 1);
     this.getMetirialType();
   },
   methods: {
+    //多人转派
+    clickManyTransfer() {
+      (this.actives = this.actives != "" ? "" : "active"),
+        (this.seleIndex = "1099");
+      this.getNextPath(this.adminResourceId, 3);
+    },
     //生成需求决策编号接口
     getDemand() {
       this.$http({
@@ -179,60 +211,152 @@ export default {
         headers: {
           "Content-Type": "application/json",
         },
-        data:{}
+        data: {},
       }).then((res) => {
-        console.log(res);
         this.demand = res.data;
       });
     },
-    submitWork() {
-      //生成需求决策编号
-      if (this.clicknextName === "起草人发送") {
-        this.getDemand()
-      }
-      if (!this.list.taskId) {
-        this.$message.error("请先保存表单后处理");
-        return false;
-      }
-      if (this.TransferStatus === true) {
-        if (this.backThree.length > 0) {
-          this.nextWork();
-        } else {
-          this.$message.error("请选择候选人");
-          return false;
-        }
-      } else {
-        let list = {
-          userId: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员id
+    async getLastManList(e) {
+      let _this = this;
+      let obj = {
+        url: _this.$url.formList.getComplateLastMan, //开始工作流接口
+        data: e,
+        // status: "form",
+        headers: {
+          "Content-Type": "application/json",
+        },
+      };
+
+      let res = await this.common.httpPost(obj, success);
+      function success(data) {}
+    },
+    async nextWorks(lists, list) {
+     let listss = {
+          userId:this.nextDealManList , //人员id
           taskId: this.list.taskId, //表单标识
-          taskName: this.clicknextName, //流程节点
-          userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
+          loginstr: JSON.parse(window.sessionStorage.userInfo).loginNoStr,
+          // taskName: this.clicknextName, //流程节点
           content: this.textarea, //意见内容
-          // resolution: this.nodes.currentShape[0].condition.resolution, //流程图线节点
-          // nextDealMan: this.backThree[0].loginNoStr || '', //下一步处理人
         };
-        if (this.treeCopyList.length) {
-          //抄送
-          list.copyman = this.treeCopyList[0].loginNoStrCopy;
+      if (this.manyReassignment == true) {
+        let _this = this;
+        let obj = {
+          url: _this.$url.formList.getNewTransferTask + _this.list.taskId, //下一步工作流接口
+          data: listss,
+          status: "form",
+        };
+        await this.common.httpPost(obj, success);
+        function success(data) {
+          _this.$emit("beforeClose", true);
         }
+      } else {
+        let _this = this;
+        let obj = {
+          url: _this.$url.formList.nextWork, //下一步工作流接口
+          data: lists,
+          status: "form",
+        };
+        await this.common.httpPost(obj, success);
+        function success(data) {
+          console.log(data);
+          let updateList = {
+            taskId: data.taskid,
+            id: _this.list.id,
+            resourceId: _this.nodes.currentShape[0].resourceId,
+          };
+          list.taskId = data.taskid;
+          _this.setUpdate(updateList);
+          _this.getLastManList(list);
+        }
+      }
+    },
+    submitWork() {
+      console.log(this.nodes);
+      //多人转派环节
+
+      //多人会签处理环节
+      let list = {
+        userId: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员id
+        taskId: this.list.taskId, //表单标识
+        // procinstid: this.list.processId,
+        taskName: this.clicknextName, //流程节点
+        userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
+        content: this.textarea, //意见内容
+        resourceId: this.nodes.currentShape[0].resourceId,
+      };
+      let newlist = {
+        userId: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员id
+        taskId: this.list.taskId, //表单标识
+        // procinstid: this.list.processId,
+        taskName: this.clicknextName, //流程节点
+        userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
+        content: this.textarea, //意见内容
+      };
+
+      if (this.manyPeopleStatus == true) {
+        list.procinstid = this.list.processId;
+        // if (this.backThree.length <= 1) {
+        //   this.$message.error("请选择多人");
+        //   return;
+        // } else {
+        list.lastmanList = this.nextDealManList;
+        // }
         if (this.nodes.currentShape) {
-          list.resolution = this.nodes.currentShape[0].condition.resolution;
-          list.approve = this.nodes.currentShape[0].condition.approve;
+          newlist.resolution = this.nodes.currentShape[0].condition.resolution;
+          newlist.approve = this.nodes.currentShape[0].condition.approve;
+        }
+        if (this.backThree.length > 0) {
+          newlist.nextDealMan = "admin";
         }
-        if (this.clicknextName === "") {
-          this.$message.error("请选择流程节点");
+        this.nextWorks(newlist, list);
+      } else {
+        console.log(456);
+        //生成需求决策编号
+        if (this.clicknextName === "起草人发送") {
+          this.getDemand();
+        }
+        if (!this.list.taskId) {
+          this.$message.error("请先保存表单后处理");
           return false;
         }
-        if (this.backThree.length > 0) {
-          list.nextDealMan = this.backThree[0].loginNoStr;
-        } else {
-          if (this.clicknextName === "流程结束") {
+        if (this.TransferStatus === true) {
+          if (this.backThree.length > 0) {
+            this.nextWork();
           } else {
             this.$message.error("请选择候选人");
             return false;
           }
+        } else {
+          if (this.treeCopyList.length) {
+            //抄送
+            list.copyman = this.treeCopyList[0].loginNoStrCopy;
+          }
+          if (this.isLastManStatus == true) {
+            list.lastman = "yes";
+          }
+          if (this.nodes.currentShape) {
+            list.resolution = this.nodes.currentShape[0].condition.resolution;
+            list.approve = this.nodes.currentShape[0].condition.approve;
+          }
+          if (this.clicknextName === "") {
+            this.$message.error("请选择流程节点");
+            return false;
+          }
+          if (this.backThree.length > 0) {
+            if (this.manyPeopleStatus == true) {
+              list.nextDealManList = this.nextDealManList;
+            } else {
+              list.nextDealMan = this.backThree[0].loginNoStr;
+            }
+          } else {
+            if (this.clicknextName === "流程结束") {
+            } else {
+              this.$message.error("请选择候选人");
+              return false;
+            }
+          }
+          this.nextWork(list);
         }
-        this.nextWork(list);
       }
     },
     async nextWork(list) {
@@ -273,8 +397,8 @@ export default {
               list.copytaskid = data.copytaskid;
               list.copyman = _this.treeCopyList[0].loginNoStrCopy;
             }
-            if(_this.demand){
-              list.needNo = _this.demand
+            if (_this.demand) {
+              list.needNo = _this.demand;
             }
             _this.setUpdate(list);
           }
@@ -301,32 +425,16 @@ export default {
         data: e,
       }).then((res) => {
         this.$emit("beforeClose", true);
-        // this.fromList.taskId = res.data.body.taskId;
-        // this.fromList.taskName = res.data.body.taskName;
-        // if (res.data.body.taskName === "起草") {
-        //   this.isSync = res.data.body.isSync;
-        // } else {
-        //   this.isSync = "1";
-        // }
-        // if (res.data.result === 0) {
-        //   this.$message.success("工作流更新成功");
-        // }
       });
     },
     //查询路径接口
     getNextPath(e, status) {
+      let { fresourceId, processDefinitionKey } = this.requestForm;
       let list = {
-        // fresourceId: "bf79721c-33f3-11ed-ba0b-00505687dcd3", //测试环境
-        fresourceId: this.requestForm.fresourceId, // 本地环境
-        processId: this.requestForm.processDefinitionKey,
-        // fresourceId: "0d94de8a-0281-11ed-a302-4ae7da54db39", // 本地环境
-        // processId: "request_form_process",
-        // resourceId: e,
+        fresourceId: fresourceId,
+        processId: processDefinitionKey,
       };
-      if (e) {
-        // this.propsList = [];
-        list.resourceId = e;
-      }
+      e ? (list.resourceId = e) : list;
       this.$http({
         url: "/market/waf/queryPath",
         method: "post",
@@ -338,6 +446,14 @@ export default {
         if (status === 1) {
           //第一次进入取路径
           this.initialList = res.data.body;
+          if (res.data.body.nextShapes[0].multi !== null) {
+            if (res.data.body.nextShapes[0].multi.multi === "true") {
+              // this.getqueryMultiTaskId();
+              this.isLastManStatus = true;
+            } else {
+              this.isLastManStatus = false;
+            }
+          }
           if (res.data.body.nextShapes[0].loop !== null) {
             if (res.data.body.nextShapes[0].loop.loop === "true") {
               this.transferStatus = true; //转派按钮生效
@@ -371,6 +487,16 @@ export default {
         if (status === 3) {
           this.nodes = res.data.body;
           this.getTreeLists(res.data.body, 1);
+
+          if (res.data.body.nextShapes[0].multi !== null) {
+            if (res.data.body.nextShapes[0].multi.multi === "true") {
+              this.manyPeopleStatus = true; //转派按钮生效
+            } else {
+              this.manyPeopleStatus = false;
+            }
+          } else {
+            this.manyPeopleStatus = false;
+          }
         }
       });
     },
@@ -395,21 +521,30 @@ export default {
         },
         data: "",
       }).then((res) => {
-        console.log(status);
+        console.log(res);
         if (status === 2) {
+          console.log(777);
           this.treeCopyList = res.data; //抄送
-          console.log(this.treeCopyList);
           //  this.$refs.defTrees.treeList = res.data;
         } else {
-          this.treeList = res.data; //抄送
+          // let list = []
+          // list.push(res.data)
+          // this.treeList = list; //抄送
+          this.treeList = res.data;
           // this.$refs.defTree.treeList = res.data;
-          console.log(this.treeList);
         }
       });
     },
+
     //转派按钮方法
     clickTransfer(e) {
+      this.$refs.defTree.userList = [];
+      this.backThree = [];
+      this.treeList = [];
       if (e == 1) {
+        this.seleIndex = "";
+        this.active = this.active != "" ? "" : "active";
+        this.manyPeopleStatus = false;
         this.TransferStatus = true;
       } else if (e == 2) {
         this.CopyStatus = true;
@@ -418,10 +553,15 @@ export default {
     },
     //点击节点获取下一步的处理人字段
     clickGetTree(e, index) {
+      this.active = "";
+      this.actives = "";
+      this.$refs.defTree.userList = [];
+      this.backThree = [];
       // this.CopyStatus = false;
       this.TransferStatus = false;
       //   this.clickTaskName = e.properties.name;
       this.clicknextName = e.properties.name;
+      console.log(index);
       this.seleIndex = index;
       this.getNextPath(e.resourceId, 3); //1 为点击后获取线
     },
@@ -431,27 +571,36 @@ export default {
     },
     //点击修改
     clickEdit() {
-      console.log(123);
       this.editStatus = true;
     },
     //选择树的回调
     changeTree(e) {
-      if (e.length > 1) {
-        this.$message.error("只能选择一个人");
-        return;
-      } else {
-        console.log(e);
+      if (this.manyPeopleStatus == true) {
         this.backThree = e;
-        if (this.CopyStatus === true) {
-          this.getTreeLists(e[0].loginNoStr, 2);
-        }
 
-        if (e[0]) {
-          this.selectUser = e[0].loginNameStr;
+        let arr = [];
+        this.backThree.map((item) => {
+          arr.push(item.loginNoStr);
+        });
+        this.nextDealManList = arr.toString();
+      } else {
+        if (e.length > 1) {
+          this.$message.error("只能选择一个人");
+          return;
         } else {
-          this.selectUser = "暂无选择";
+          this.backThree = e;
+          if (this.CopyStatus === true) {
+            this.getTreeLists(e[0].loginNoStr, 2);
+          }
+
+          if (e[0]) {
+            this.selectUser = e[0].loginNameStr;
+          } else {
+            this.selectUser = "暂无选择";
+          }
         }
       }
+      console.log(this.backThree);
     },
     //获取字典表常用意见
     getMetirialType(e) {
@@ -465,7 +614,6 @@ export default {
           dictCodePks: "approval",
         },
       }).then((res) => {
-        console.log(res);
         this.commonlyList = res.data;
       });
     },

+ 245 - 53
src/components/workflowBase.vue

@@ -8,7 +8,20 @@
               选择路径
 
               <div class="flex-path-list">
-                <div v-if="transferStatus" @click="clickTransfer(1)">转派</div>
+                <div
+                  v-if="manyReassignment"
+                  :class="actives"
+                  @click="clickManyTransfer(1)"
+                >
+                  转派
+                </div>
+                <div
+                  v-if="transferStatus"
+                  :class="active"
+                  @click="clickTransfer(1)"
+                >
+                  转派
+                </div>
                 <div v-if="copyStatus" @click="clickTransfer(2)">抄送</div>
                 <div
                   v-for="(item, index) in node.nextShapes"
@@ -70,7 +83,10 @@
             </div>
             <div class="flex-header-text-tree">
               已选人员
-              <div class="">{{ selectUser }}</div>
+              <!-- <div class="">{{ selectUser }}</div> -->
+              <div class="" v-for="(item, index) in backThree" :key="index">
+                {{ item.loginNameStr }}
+              </div>
             </div>
           </div>
         </div>
@@ -134,12 +150,15 @@ export default {
   name: "workflow",
   data() {
     return {
+      active: "",
+      manyPeopleStatus: false, //多人处理下发任务
+      editStatus: false, //常用意见控制
       transferStatus: false, //转派按钮控制
       TransferStatus: false, //是否点击转派状态
       copyStatus: false, //抄送按钮控制
       CopyStatus: false, //是否点击抄送状态
       node: [], //路径列表
-      seleIndex: "", //点击路径下标
+      seleIndex: "1099", //点击路径下标
       commonlyList: [], //常用意见数组
       textarea: "未填写意见", //意见内容字段
       copyUser: "", //抄送人员列表
@@ -150,6 +169,12 @@ export default {
       initialList: [], //第一次进入是加载节点
       clicknextName: "", //获取的流程节点
       backThree: [],
+      treeCopyList: [],
+      demand: "",
+      nextDealManList: "",
+      isLastManStatus: false,
+      manyReassignment: false,
+      actives: "",
     };
   },
   props: {
@@ -161,54 +186,174 @@ export default {
     requestForm: {
       type: Object,
     },
+    adminResourceId: {
+      type: String,
+    },
   },
   created() {
+    console.log(this.list);
     this.getNextPath(this.list.resourceId, 1);
     this.getMetirialType();
   },
   methods: {
-    submitWork() {
-      if (this.TransferStatus === true) {
-        if (this.backThree.length > 0) {
-          this.nextWork();
-        } else {
-          this.$message.error("请选择候选人");
-          return false;
+    //多人转派
+    clickManyTransfer() {
+      (this.actives = this.actives != "" ? "" : "active"),
+        (this.seleIndex = "1099");
+      this.getNextPath(this.adminResourceId, 3);
+    },
+    async getLastManList(e) {
+      let _this = this;
+      let obj = {
+        url: _this.$url.formList.getComplateLastMan, //开始工作流接口
+        data: e,
+        // status: "form",
+        headers: {
+          "Content-Type": "application/json",
+        },
+      };
+
+      let res = await this.common.httpPost(obj, success);
+      function success(data) {}
+    },
+    async nextWorks(lists, list) {
+      let listss = {
+        userId: this.nextDealManList, //人员id
+        taskId: this.list.taskId, //表单标识
+        loginstr: JSON.parse(window.sessionStorage.userInfo).loginNoStr,
+        // taskName: this.clicknextName, //流程节点
+        content: this.textarea, //意见内容
+      };
+      if (this.manyReassignment == true) {
+        let _this = this;
+        let obj = {
+          url: _this.$url.formList.getNewTransferTask + _this.list.taskId, //下一步工作流接口
+          data: listss,
+          status: "form",
+        };
+        await this.common.httpPost(obj, success);
+        function success(data) {
+          _this.$emit("beforeClose", true);
         }
       } else {
-        let list = {
-          userId: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员id
-          taskId: this.list.taskId, //表单标识
-          taskName: this.clicknextName, //流程节点
-          userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
-          content: this.textarea, //意见内容
-          // resolution: this.nodes.currentShape[0].condition.resolution, //流程图线节点
-          // nextDealMan: this.backThree[0].loginNoStr || '', //下一步处理人
+        let _this = this;
+        let obj = {
+          url: _this.$url.formList.nextWork, //下一步工作流接口
+          data: lists,
+          status: "form",
         };
-        if (this.copyUser) {
-          //抄送
-          list.copyman = this.backCopyThree[0].loginNoStr;
+        await this.common.httpPost(obj, success);
+        function success(data) {
+          console.log(data);
+          let updateList = {
+            taskId: data.taskid,
+            id: _this.list.id,
+            resourceId: _this.nodes.currentShape[0].resourceId,
+            tableName: _this.requestForm.processDefinitionKey,
+          };
+          list.taskId = data.taskid;
+          _this.setUpdate(updateList);
+          _this.getLastManList(list);
         }
+      }
+    },
+    submitWork() {
+      //多人会签处理环节
+      let list = {
+        userId: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员id
+        taskId: this.list.taskId, //表单标识
+        // procinstid: this.list.processId,
+        taskName: this.clicknextName, //流程节点
+        userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
+        content: this.textarea, //意见内容
+      };
+      let newlist = {
+        userId: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员id
+        taskId: this.list.taskId, //表单标识
+        // procinstid: this.list.processId,
+        taskName: this.clicknextName, //流程节点
+        userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
+        content: this.textarea, //意见内容
+      };
+      if (this.manyPeopleStatus == true) {
+        list.procinstid = this.list.processId;
+        // if (this.backThree.length <= 1) {
+        // this.$message.error("请选择多人");
+        // return;
+        // } else {
+        list.lastmanList = this.nextDealManList;
+        // }
         if (this.nodes.currentShape) {
-          list.resolution = this.nodes.currentShape[0].condition.resolution;
-          list.approve = this.nodes.currentShape[0].condition.approve;
+          newlist.resolution = this.nodes.currentShape[0].condition.resolution;
+          newlist.approve = this.nodes.currentShape[0].condition.approve;
         }
-        if (this.clicknextName === "") {
-          this.$message.error("请选择流程节点");
+        if (this.backThree.length > 0) {
+          newlist.nextDealMan = "admin";
+        }
+        this.nextWorks(newlist, list);
+      } else {
+        console.log(456);
+        //生成需求决策编号
+        if (this.clicknextName === "起草人发送") {
+          this.getDemand();
+        }
+        if (!this.list.taskId) {
+          this.$message.error("请先保存表单后处理");
           return false;
         }
-        if (this.backThree.length > 0) {
-          list.nextDealMan = this.backThree[0].loginNoStr;
-        } else {
-          if (this.clicknextName === "流程结束") {
+        if (this.TransferStatus === true) {
+          if (this.backThree.length > 0) {
+            this.nextWork();
           } else {
             this.$message.error("请选择候选人");
             return false;
           }
+        } else {
+          if (this.treeCopyList.length) {
+            //抄送
+            list.copyman = this.treeCopyList[0].loginNoStrCopy;
+          }
+          if (this.isLastManStatus == true) {
+            list.lastman = "yes";
+          }
+          if (this.nodes.currentShape) {
+            list.resolution = this.nodes.currentShape[0].condition.resolution;
+            list.approve = this.nodes.currentShape[0].condition.approve;
+          }
+          if (this.clicknextName === "") {
+            this.$message.error("请选择流程节点");
+            return false;
+          }
+          if (this.backThree.length > 0) {
+            if (this.manyPeopleStatus == true) {
+              list.nextDealManList = this.nextDealManList;
+            } else {
+              list.nextDealMan = this.backThree[0].loginNoStr;
+            }
+          } else {
+            if (this.clicknextName === "流程结束"||this.clicknextName === "提交至任务发起人") {
+            } else {
+              this.$message.error("请选择候选人");
+              return false;
+            }
+          }
+          this.nextWork(list);
         }
-        this.nextWork(list);
       }
     },
+    //生成需求决策编号接口
+    getDemand() {
+      this.$http({
+        url: "/market/waf/getBusi",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {},
+      }).then((res) => {
+        this.demand = res.data;
+      });
+    },
     async nextWork(list) {
       //e:yes||no,list:传入数组,title:结束标签,res:驳回标签,id:工单更新id
       let _this = this;
@@ -222,7 +367,6 @@ export default {
           userId: _this.backThree[0].loginNoStr,
           taskId: _this.list.taskId,
           content: _this.textarea,
-          tableName: _this.requestForm.processDefinitionKey,
         };
         obj.url = _this.$url.formList.transferTask + _this.list.taskId;
         obj.data = lists;
@@ -248,8 +392,10 @@ export default {
             };
             if (data.copytaskid) {
               list.copytaskid = data.copytaskid;
-              list.copyman = _this.backCopyThree[0].loginNoStr;
-              // list.tableName = _this.requestForm.processDefinitionKey;
+              list.copyman = _this.treeCopyList[0].loginNoStrCopy;
+            }
+            if (_this.demand) {
+              list.needNo = _this.demand;
             }
             _this.setUpdate(list);
           }
@@ -261,8 +407,6 @@ export default {
           };
           _this.setUpdate(list);
         }
-        _this.dialogStatus = false;
-        _this.handleCloses();
       }
     },
     setUpdate(e) {
@@ -279,15 +423,12 @@ export default {
     },
     //查询路径接口
     getNextPath(e, status) {
+      let { fresourceId, processDefinitionKey } = this.requestForm;
       let list = {
-        // fresourceId: "bf79721c-33f3-11ed-ba0b-00505687dcd3", //测试环境
-        fresourceId: this.requestForm.fresourceId, // 本地环境
-        processId: this.requestForm.processDefinitionKey,
-        // resourceId: e,
+        fresourceId: fresourceId,
+        processId: processDefinitionKey,
       };
-      if (e) {
-        list.resourceId = e;
-      }
+      e ? (list.resourceId = e) : list;
       this.$http({
         url: "/market/waf/queryPath",
         method: "post",
@@ -299,6 +440,14 @@ export default {
         if (status === 1) {
           //第一次进入取路径
           this.initialList = res.data.body;
+          if (res.data.body.nextShapes[0].multi !== null) {
+            if (res.data.body.nextShapes[0].multi.multi === "true") {
+              // this.getqueryMultiTaskId();
+              this.isLastManStatus = true;
+            } else {
+              this.isLastManStatus = false;
+            }
+          }
           if (res.data.body.nextShapes[0].loop !== null) {
             if (res.data.body.nextShapes[0].loop.loop === "true") {
               this.transferStatus = true; //转派按钮生效
@@ -309,9 +458,9 @@ export default {
             this.transferStatus = false;
           }
           if (res.data.body.nextShapes[0].copy !== null) {
-            console.log(res.data.body.nextShapes[0].copy.copy);
             if (res.data.body.nextShapes[0].copy.copy === "true") {
-              this.copyStatus = true; //抄送按钮生效
+              // this.copyStatus = true; //抄送按钮生效
+              this.CopyStatus = true;
             } else {
               this.copyStatus = false;
             }
@@ -332,12 +481,22 @@ export default {
         if (status === 3) {
           this.nodes = res.data.body;
           this.getTreeLists(res.data.body, 1);
+
+          if (res.data.body.nextShapes[0].multi !== null) {
+            if (res.data.body.nextShapes[0].multi.multi === "true") {
+              this.manyPeopleStatus = true; //转派按钮生效
+            } else {
+              this.manyPeopleStatus = false;
+            }
+          } else {
+            this.manyPeopleStatus = false;
+          }
         }
       });
     },
     //查询候选人接口
     getTreeLists(e, status) {
-      let createdId = "createld";
+      let createdId = "createId";
       let id =
         e.nextShapes[0].properties.documentation === createdId
           ? this.list.createId
@@ -373,6 +532,8 @@ export default {
     },
     //点击节点获取下一步的处理人字段
     clickGetTree(e, index) {
+      this.$refs.defTree.userList = [];
+      this.backThree = [];
       this.CopyStatus = false;
       this.TransferStatus = false;
       //   this.clickTaskName = e.properties.name;
@@ -390,15 +551,29 @@ export default {
     },
     //选择树的回调
     changeTree(e) {
-      if (e.length > 1) {
-        this.$message.error("只能选择一个人");
-        return;
-      } else {
+      if (this.manyPeopleStatus == true) {
         this.backThree = e;
-        if (e[0]) {
-          this.selectUser = e[0].loginNameStr;
+
+        let arr = [];
+        this.backThree.map((item) => {
+          arr.push(item.loginNoStr);
+        });
+        this.nextDealManList = arr.toString();
+      } else {
+        if (e.length > 1) {
+          this.$message.error("只能选择一个人");
+          return;
         } else {
-          this.selectUser = "暂无选择";
+          this.backThree = e;
+          if (this.CopyStatus === true) {
+            this.getTreeLists(e[0].loginNoStr, 2);
+          }
+
+          if (e[0]) {
+            this.selectUser = e[0].loginNameStr;
+          } else {
+            this.selectUser = "暂无选择";
+          }
         }
       }
     },
@@ -509,28 +684,34 @@ export default {
   width: 50%;
   text-align: center;
 }
+
 .flex-icon {
   float: right;
   margin-right: 20px;
   color: #4277a1;
 }
+
 .flex-handle {
   width: 100%;
   padding: 30px;
   display: flex;
+
   .flex-right {
     width: 50%;
     border: 1px solid #e1e1e1;
     margin-left: 20px;
   }
 }
+
 .flex-left {
   width: 50%;
   display: flex;
   flex-direction: column;
+
   .flex-left-header {
     display: flex;
     justify-content: space-around;
+
     .flex-path {
       height: 280px;
       border: 1px solid #e1e1e1;
@@ -538,10 +719,12 @@ export default {
     }
   }
 }
+
 .flex-common {
   padding: 10px 5%;
   font-size: 18px;
 }
+
 .flex-left-header-text {
   height: 40px;
   line-height: 40px;
@@ -551,42 +734,51 @@ export default {
   font-size: 18px;
   font-weight: bold;
 }
+
 .flex-path-list {
   overflow-y: scroll;
   overflow-x: hidden;
   height: 14rem;
 }
+
 .flex-slide {
   overflow-y: scroll;
   overflow-x: hidden;
 }
+
 .active {
   background-color: #f3faff;
 }
+
 .flex-opinion {
   height: 280px;
   border: 1px solid #e1e1e1;
   width: 100%;
   margin-top: 20px;
 }
+
 .flex-right-text {
   margin-right: 20px;
   width: 50%;
 }
+
 .flex-commons {
   height: 280px;
   border: 1px solid #e1e1e1;
   width: 30%;
 }
+
 .flex-footer-botton {
   display: flex;
   justify-content: space-evenly;
 }
+
 .flex-button {
   margin-top: 10px;
   margin-bottom: 10px;
+
   ::v-deep .el-button--primary {
     width: 222px;
   }
 }
-</style>
+</style>

+ 127 - 51
src/components/workflowEntrance.vue

@@ -9,8 +9,8 @@
               选择路径
 
               <div class="flex-path-list">
-                <div @click="clickTransfer(1)">转派</div>
-                <div @click="clickTransfer(2)">结束</div>
+                <div :class="active" @click="getTreeLists(9)">转派</div>
+                <div :class="actives" @click="getclose()">结束</div>
                 <!-- <div
                   v-for="(item, index) in node.nextShapes"
                   :key="index"
@@ -70,7 +70,9 @@
             </div>
             <div class="flex-header-text-tree">
               已选人员
-              <div class="">{{ selectUser }}</div>
+              <div class="" v-for="(item, index) in backThree" :key="index">
+                {{ item.loginNameStr }}
+              </div>
             </div>
           </div>
         </div>
@@ -96,7 +98,9 @@
     </div>
     <div class="flex-footer-botton">
       <div class="flex-button">
-        <el-button type="primary" @click="submitWork()">提交</el-button>
+        <el-button type="primary" @click="getnewtransfertask(1)"
+          >提交</el-button
+        >
       </div>
     </div>
     <el-dialog
@@ -134,6 +138,9 @@ export default {
   name: "workflow",
   data() {
     return {
+      active:'',
+      actives:'',
+      MultipersonTransfer: false,
       transferStatus: false, //转派按钮控制
       TransferStatus: false, //是否点击转派状态
       copyStatus: false, //抄送按钮控制
@@ -153,6 +160,8 @@ export default {
       editStatus: false, //修改控制显示字段
       treeCopyList: [],
       demand: "",
+      close: "",
+      nextDealManLists:''
     };
   },
   props: {
@@ -164,12 +173,87 @@ export default {
     requestForm: {
       type: Object,
     },
+    lastManList: {
+      type: Object,
+    },
   },
   created() {
     this.getNextPath(this.list.resourceId, 1);
     this.getMetirialType();
   },
   methods: {
+    getclose() {
+      this.backThree = [];
+      this.treeList = [];
+      this.close = "1";
+      this.actives = this.actives!=""? "" :'actives'
+      this.active = ""
+    },
+    // async getqueryMultiTaskId() {
+    //   let list = {
+    //     procinstid: this.list.processId,
+    //     userId: JSON.parse(window.sessionStorage.userInfo).loginNo,
+    //     // procinstid:this.fromList.processId
+
+    //     // taskId:e.taskId
+    //   };
+    //   let _this = this;
+    //   let obj = {
+    //     url: this.$url.formList.getQueryMultiTaskId, //流程追踪接口
+    //     data: list,
+    //     headers: {
+    //       "Content-Type": "application/json",
+    //     },
+    //   };
+    //   let res = await this.common.httpPost(obj, success);
+    //   function success(data) {
+    //     console.log(data);
+    //     _this.list.taskId = data.taskid;
+    //   }
+    // },
+    //新转派接口
+    async getnewtransfertask() {
+      let _this = this;
+      let list = {
+        userId: "",
+        userId: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员id
+        taskId: this.list.taskId, //表单标识
+        procinstid: this.list.processId,
+        // taskName: this.clicknextName, //流程节点
+        userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
+        content: this.textarea, //意见内容
+        resourceId:this.list.resourceId
+      };
+      let obj = {};
+      if (this.close == "1") {
+        (list.userId = JSON.parse(window.sessionStorage.userInfo).loginNo),
+          (obj.url = _this.$url.formList.getComplateLastMan), //下一步工作流接口
+          (obj.data = list);
+      } else {
+        let listss = {
+          userId: _this.nextDealManLists, //人员id
+          taskId: this.list.taskId, //表单标识
+          loginstr: JSON.parse(window.sessionStorage.userInfo).loginNoStr,
+          // taskName: this.clicknextName, //流程节点
+          content: this.textarea, //意见内容
+        };
+
+        (obj.url = _this.$url.formList.getNewTransferTask + _this.list.taskId), //下一步工作流接口
+          (obj.status = "form"),
+          (obj.data = listss);
+      }
+
+      await _this.common.httpPost(obj, success);
+      function success(data) {
+        // let list = {
+        //   taskId: data.taskid,
+        //   id: _this.list.id,
+        //   // resourceId: _this.nodes.currentShape[0].resourceId,
+        //   // taskName: _this.nodes.nextShapes[0].properties.name,
+        // };
+        _this.$emit("beforeClose", true);
+      }
+    },
     //生成需求决策编号接口
     getDemand() {
       this.$http({
@@ -355,44 +439,13 @@ export default {
         if (status === 1) {
           //第一次进入取路径
           this.initialList = res.data.body;
-          if (
-            this.initialList.nextShapes[0].multi?.multi &&
-            res.data.body.nextShapes[0].multi.multi === "true"
-          ) {
-            this.transferStatus = true;
-          } else {
-            this.transferStatus = false;
-          }
-          if (
-            res.data.body.nextShapes[0].copy?.copy &&
-            res.data.body.nextShapes[0].copy.copy === "true"
-          ) {
-            this.CopyStatus = true;
-          } else {
-            this.CopyStatus = false;
-          }
-          // if (res.data.body.nextShapes[0].loop !== null) {
-          //   if (res.data.body.nextShapes[0].loop.loop === "true") {
-          //     this.transferStatus = true; //转派按钮生效
-          //   } else {
-          //     this.transferStatus = false;
-          //   }
-          // } else {
-          //   this.transferStatus = false;
+          // console.log(this.initialList);
+          // if (
+          //   this.initialList.nextShapes[0].multi?.multi &&
+          //   res.data.body.nextShapes[0].multi.multi === "true"
+          // ) {
+           
           // }
-          // if (res.data.body.nextShapes[0].copy !== null) {
-          //   if (res.data.body.nextShapes[0].copy.copy === "true") {
-          //     // this.copyStatus = true; //抄送按钮生效
-          //     this.CopyStatus = true;
-          //   } else {
-          //     this.copyStatus = false;
-          //   }
-          // } else {
-          //   this.copyStatus = false;
-          // }
-          res.data.body.currentShape.map((item, index) => {
-            this.getNextPath(item.resourceId, 2);
-          });
         }
         if (status === 2) {
           if (res.data.body.nextShapes[0].condition !== null) {
@@ -409,16 +462,24 @@ export default {
     },
     //查询候选人接口
     getTreeLists(e, status) {
-      let id = "";
-      if (status === 2) {
-        id = "copy." + e;
+      if (e === 9) {
+        this.close = ""
+        this.active = this.active!=""? '' :'active'
+        this.actives = ""
+        this.MultipersonTransfer = true;
       } else {
-        id =
-          e.nextShapes[0].properties.documentation == "createId" ||
-          e.nextShapes[0].properties.documentation == "createId-copy"
-            ? this.list.createId
-            : e.nextShapes[0].properties.documentation;
+        this.MultipersonTransfer = false;
       }
+      let id = this.initialList.nextShapes[0].properties.documentation;
+      // if (status === 2) {
+      //   id = "copy." + e;
+      // } else {
+      //   id =
+      //     e.nextShapes[0].properties.documentation == "createId" ||
+      //     e.nextShapes[0].properties.documentation == "createId-copy"
+      //       ? this.list.createId
+      //       : e.nextShapes[0].properties.documentation;
+      // }
 
       this.$http({
         url: "/market/api/user/info/queryNodePers?params=" + id,
@@ -441,6 +502,9 @@ export default {
       });
     },
     //转派按钮方法
+    a() {
+      this.clickGetTree([], "");
+    },
     clickTransfer(e) {
       if (e == 1) {
         // this.TransferStatus = true;
@@ -469,8 +533,14 @@ export default {
     },
     //选择树的回调
     changeTree(e) {
-      console.log(e);
-      this.backThree = e;
+      if (this.MultipersonTransfer) {
+          this.backThree = e;
+        let arr = [];
+        this.backThree.map((item) => {
+          arr.push(item.loginNoStr);
+        });
+        this.nextDealManLists = arr.toString();
+      }
     },
     //获取字典表常用意见
     getMetirialType(e) {
@@ -575,6 +645,12 @@ export default {
 </script>
 
 <style lang='scss' scoped>
+.active {
+  background-color: #f3faff;
+}
+.actives {
+  background-color: #f3faff;
+}
 .flex-header-text-tree {
   width: 50%;
   text-align: center;

+ 12 - 2
src/http/api.js

@@ -45,9 +45,19 @@ export function updateBase(e) {
         url: "/market/waf/updateBase",
         method: "post",
         headers: {
-          "Content-Type": "application/json",
+            "Content-Type": "application/json",
         },
         data: e,
     })
 }
-export default { getTodoBase, getDoneBase, getInitiateBase,updateBase };
+export function getNowdata(e) {
+    let yy = new Date().getFullYear()
+    let mm = new Date().getMonth() + 1 < 10 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1
+    let dd = new Date().getDate() < 10 ? '0' + new Date().getDate() : new Date().getDate()
+    let hh = new Date().getHours()
+    let mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes()
+    let ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds()
+    let time = yy + e.a + mm + e.a + dd + e.b + hh + e.c + mf + e.c + ss
+    return time
+}
+export default { getTodoBase, getDoneBase, getInitiateBase, updateBase, getNowdata };

+ 161 - 357
src/pages/main/advertising/businessHall.vue

@@ -7,47 +7,23 @@
                 </el-button>
                 <el-button class="btn-check" size="medium" type="primary" @click="exportTempletelist">下载导入模板
                 </el-button>
-                <myUpload style="display:inline-block;" :fileInfo="fileInfot"
-                        :fileList="fileInfot.fileList" @uploadBack='uploadBack'></myUpload>
-                <el-button
-                    class="btn-check"
-                    size="medium"
-                    type="primary"
-                    @click="dialogCheck(3)"
-                    v-if="
-                        userInfo.countyName != null || userInfo.cityName != null
-                    "
-                    >添加
+                <myUpload style="display:inline-block;" :fileInfo="fileInfot" :fileList="fileInfot.fileList"
+                    @uploadBack='uploadBack'></myUpload>
+                <el-button class="btn-check" size="medium" type="primary" @click="dialogCheck(3)" v-if="
+                    userInfo.countyName != null || userInfo.cityName != null
+                ">添加
                 </el-button>
             </div>
             <div class="search">
-                <mySearch
-                    :searchList="searchList"
-                    @searchInfo="searchInfo"
-                ></mySearch>
-                <el-button
-                    class="btn-check"
-                    size="medium"
-                    type="primary"
-                    @click="dialogCheck(3)"
-                    v-if="
-                        userInfo.countyName != null || userInfo.cityName != null
-                    "
-                    >添加
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button class="btn-check" size="medium" type="primary" @click="dialogCheck(3)" v-if="
+                    userInfo.countyName != null || userInfo.cityName != null
+                ">添加
                 </el-button>
             </div>
             <div class="tabbox">
-                <el-table
-                    height="calc(100% - 40px)"
-                    class="com-table"
-                    ref="multipleTable"
-                    :data="tableData"
-                    tooltip-effect="dark"
-                    size="small"
-                    border
-                    style="width: 100%"
-                    v-loading="loading"
-                >
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
                     <el-table-column prop="regionName" label="公司">
                     </el-table-column>
                     <el-table-column prop="regionCode" label="公司编码">
@@ -60,11 +36,11 @@
                     </el-table-column>
                     <el-table-column prop="countyType" label="表单类型">
                     </el-table-column>
-<!--                    <el-table-column prop="countyCityCode" label="渠道/小区编码">-->
-<!--&lt;!&ndash;                        待更改&ndash;&gt;-->
-<!--                    </el-table-column>-->
-<!--                    <el-table-column prop="countyCityCodeName" label="渠道/小区/校园名称">-->
-<!--                    </el-table-column>-->
+                    <!--                    <el-table-column prop="countyCityCode" label="渠道/小区编码">-->
+                    <!--&lt;!&ndash;                        待更改&ndash;&gt;-->
+                    <!--                    </el-table-column>-->
+                    <!--                    <el-table-column prop="countyCityCodeName" label="渠道/小区/校园名称">-->
+                    <!--                    </el-table-column>-->
                     <el-table-column prop="channelCode" label="渠道/小区编码">
                     </el-table-column>
                     <el-table-column prop="channelName" label="渠道/小区/校园名称">
@@ -73,30 +49,15 @@
                     </el-table-column>
                     <el-table-column prop="sceneName" label="使用场景">
                     </el-table-column>
-<!--                    <el-table-column prop="metirialType" label="物料类别">-->
-<!--                    </el-table-column>-->
-                    <el-table-column
-                        prop="metirialCode"
-                        label="物料编码"
-                        width="100"
-                        show-overflow-tooltip
-                    >
+                    <!--                    <el-table-column prop="metirialType" label="物料类别">-->
+                    <!--                    </el-table-column>-->
+                    <el-table-column prop="metirialCode" label="物料编码" width="100" show-overflow-tooltip>
                     </el-table-column>
-                    <el-table-column
-                        prop="metirialName"
-                        label="物料名称"
-                        width="100"
-                        show-overflow-tooltip
-                    >
+                    <el-table-column prop="metirialName" label="物料名称" width="100" show-overflow-tooltip>
                     </el-table-column>
                     <el-table-column prop="unit" label="物料单位">
                     </el-table-column>
-                    <el-table-column
-                        prop="size"
-                        label="规格尺寸"
-                        width="100"
-                        show-overflow-tooltip
-                    >
+                    <el-table-column prop="size" label="规格尺寸" width="100" show-overflow-tooltip>
                     </el-table-column>
                     <el-table-column prop="length" label="长(米)">
                     </el-table-column>
@@ -105,372 +66,211 @@
                     </el-table-column>
                     <el-table-column prop="coefficient" label="系数">
                     </el-table-column>
-                    <el-table-column
-                        prop="priority"
-                        label="优先级-仅灯箱画面填报"
-                    >
-                    </el-table-column>
-                    <el-table-column prop="quantity" label="数量">
-                    </el-table-column>
-                    <el-table-column prop="settlementAmount" label="结算金额">
+                    <el-table-column prop="priority" label="优先级-仅灯箱画面填报">
                     </el-table-column>
+                    <!-- <el-table-column prop="quantity" label="数量">
+                        </el-table-column>
+                        <el-table-column prop="settlementAmount" label="结算金额">
+                        </el-table-column> -->
                     <!-- <el-table-column prop="price" label="单价">
-					</el-table-column> -->
+    					</el-table-column> -->
 
-                    <el-table-column
-                        label="操作"
-                        width="160px"
-                        align="center"
-                        fixed="right"
-                    >
+                    <el-table-column label="操作" width="160px" align="center" fixed="right">
                         <template slot-scope="scope">
-                            <el-button
-                                size="mini"
-                                type="primary"
-                                @click="dialogCheck(1, scope.row)"
-                                >查看</el-button
-                            >
-                            <el-button
-                                size="mini"
-                                type="primary"
-                                @click="dialogCheck(2, scope.row)"
-                                v-if="
-                                    userInfo.countyName != null ||
-                                        userInfo.cityName != null
-                                "
-                                >修改</el-button
-                            >
-                            <el-button
-                                size="mini"
-                                type="danger"
-                                @click="delLine(scope.row)"
-                                v-if="
-                                    userInfo.countyName != null ||
-                                        userInfo.cityName != null
-                                "
-                                >删除</el-button
-                            >
+                            <el-button size="mini" type="primary" @click="dialogCheck(1, scope.row)">查看</el-button>
+                            <el-button size="mini" type="primary" @click="dialogCheck(2, scope.row)" v-if="
+                                userInfo.countyName != null ||
+                                userInfo.cityName != null
+                            ">修改</el-button>
+                            <el-button size="mini" type="danger" @click="delLine(scope.row)" v-if="
+                                userInfo.countyName != null ||
+                                userInfo.cityName != null
+                            ">删除</el-button>
                         </template>
                     </el-table-column>
                 </el-table>
-                <el-pagination
-                    class="pageBox"
-                    @current-change="currchange"
-                    layout="prev, pager, next"
-                    background
-                    :total="total"
-                >
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
                 </el-pagination>
             </div>
         </div>
 
-        <el-dialog
-            :title="titname"
-            :visible.sync="dialogStatus"
-            width="100%"
-            :destroy-on-close="true"
-            :modal-append-to-body="false"
-            :close-on-click-modal="false"
-            :before-close="closedia"
-        >
+        <el-dialog :title="titname" :visible.sync="dialogStatus" width="100%" :destroy-on-close="true"
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia">
             <div v-loading="loadinged">
-                <el-form
-                    :model="infolist"
-                    ref="infolist"
-                    :rules="rules"
-                    style="height: 50vh; overflow-y: scroll"
-                >
+                <el-form :model="infolist" ref="infolist" :rules="rules" style="height: 50vh; overflow-y: scroll">
                     <div class="info-line">
                         <el-form-item prop="regionName">
                             <span>公司</span>
-                            <el-select
-                                :popper-append-to-body="false"
-                                v-model="infolist.regionCode"
-                                placeholder="公司"
-                                @change="verifcheck"
-                                :disabled="disableStatus"
-                            >
-                                <el-option
-                                    v-for="item in regionOpt"
-                                    :key="item.compId"
-                                    :label="item.compName"
-                                    :value="item.compId"
-                                >
+                            <el-select :popper-append-to-body="false" v-model="infolist.regionCode" placeholder="公司"
+                                @change="verifcheck" :disabled="disableStatus">
+                                <el-option v-for="item in regionOpt" :key="item.compId" :label="item.compName"
+                                    :value="item.compId">
                                 </el-option>
                             </el-select>
                         </el-form-item>
                         <el-form-item>
                             <span>公司编码</span>
-                            <el-input
-                                v-model="infolist.regionCode"
-                                placeholder="公司编码"
-                                disabled
-                            ></el-input>
+                            <el-input v-model="infolist.regionCode" placeholder="公司编码" disabled></el-input>
                         </el-form-item>
                         <el-form-item prop="countyName">
                             <span>区县名称</span>
-                            <el-select
-                                :popper-append-to-body="false"
-                                v-model="infolist.countyCode"
-                                placeholder="区县名称"
-                                @change="verifcheck(2)"
-                                :disabled="disableStatus"
-                            >
-                                <el-option
-                                    v-for="item in countyOpt"
-                                    :key="item.compId"
-                                    :label="item.compName"
-                                    :value="item.compId"
-                                >
+                            <el-select :popper-append-to-body="false" v-model="infolist.countyCode" placeholder="区县名称"
+                                @change="verifcheck(2)" :disabled="disableStatus">
+                                <el-option v-for="item in countyOpt" :key="item.compId" :label="item.compName"
+                                    :value="item.compId">
                                 </el-option>
                             </el-select>
                         </el-form-item>
                         <el-form-item>
                             <span>区县编码</span>
-                            <el-input
-                                v-model="infolist.countyCode"
-                                placeholder="区县编码"
-                                disabled
-                            ></el-input>
+                            <el-input v-model="infolist.countyCode" placeholder="区县编码" disabled></el-input>
                         </el-form-item>
                         <el-form-item>
                             <span>日期</span>
-                            <el-date-picker
-                                type="date"
-                                placeholder="选择日期"
-                                v-model="infolist.countyTime"
-                                style="width: 57%;"
-                            ></el-date-picker>
+                            <el-date-picker type="date" placeholder="选择日期" v-model="infolist.countyTime"
+                                style="width: 57%;"></el-date-picker>
                         </el-form-item>
                         <el-form-item>
                             <span>表单类型</span>
                             <el-select v-model="infolist.countyType" placeholder="请选择表单类型">
-                                <el-option v-for="(item,index) in optionList" :label="item.value" :value="item.id" :key="index"></el-option>
+                                <el-option v-for="(item, index) in optionList" :label="item.value" :value="item.id"
+                                    :key="index"></el-option>
                             </el-select>
                         </el-form-item>
                         <el-form-item prop="channelCode">
                             <span>渠道/小区编码</span>
-                            <el-input
-                                v-model="infolist.channelCode"
-                                placeholder="渠道编码"
-                                :disabled="disableStatus"
-                            >
+                            <el-input v-model="infolist.channelCode" placeholder="渠道编码" :disabled="disableStatus">
                             </el-input>
                         </el-form-item>
                         <el-form-item prop="channelName">
                             <span>渠道/小区/校园名称</span>
-                            <el-input
-                                v-model="infolist.channelName"
-                                placeholder="渠道/校园/小区名称"
-                                :disabled="disableStatus"
-                            >
+                            <el-input v-model="infolist.channelName" placeholder="渠道/校园/小区名称" :disabled="disableStatus">
                             </el-input>
                         </el-form-item>
 
                         <el-form-item prop="sts">
                             <span>营业状态</span>
-                            <el-select
-                                :popper-append-to-body="false"
-                                v-model="infolist.sts"
-                                placeholder="营业状态"
-                                :disabled="disableStatus"
-                            >
-                                <el-option
-                                    v-for="item in stsOpt"
-                                    :key="item.dataName"
-                                    :label="item.dataName"
-                                    :value="item.dataName"
-                                >
+                            <el-select :popper-append-to-body="false" v-model="infolist.sts" placeholder="营业状态"
+                                :disabled="disableStatus">
+                                <el-option v-for="item in stsOpt" :key="item.dataName" :label="item.dataName"
+                                    :value="item.dataName">
                                 </el-option>
                             </el-select>
                         </el-form-item>
                         <el-form-item prop="sceneName">
                             <span>使用场景</span>
-                            <el-select
-                                @change="accountcho"
-                                :popper-append-to-body="false"
-                                v-model="infolist.sceneName"
-                                placeholder="使用场景"
-                                :disabled="disableStatus"
-                            >
-                                <el-option
-                                    v-for="item in sceneOpt"
-                                    :key="item.dataCode"
-                                    :label="item.dataName"
-                                    :value="item.dataName"
-                                >
+                            <el-select @change="accountcho" :popper-append-to-body="false" v-model="infolist.sceneName"
+                                placeholder="使用场景" :disabled="disableStatus">
+                                <el-option v-for="item in sceneOpt" :key="item.dataCode" :label="item.dataName"
+                                    :value="item.dataName">
                                 </el-option>
                             </el-select>
                         </el-form-item>
-<!--                        <el-form-item prop="metirialType">-->
-<!--                            <span>物料类别</span>-->
-<!--                            <el-select-->
-<!--                                :disabled="disableStatus"-->
-<!--                                :popper-append-to-body="false"-->
-<!--                                v-model="infolist.metirialType"-->
-<!--                                placeholder="物料类别"-->
-<!--                            >-->
-<!--                                <el-option-->
-<!--                                    v-for="(item, index) in metirialTypeopt"-->
-<!--                                    :key="index"-->
-<!--                                    :label="item.dataName"-->
-<!--                                    :value="item.dataName"-->
-<!--                                >-->
-<!--                                </el-option>-->
-<!--                            </el-select>-->
-<!--                        </el-form-item>-->
+                        <!--                        <el-form-item prop="metirialType">-->
+                        <!--                            <span>物料类别</span>-->
+                        <!--                            <el-select-->
+                        <!--                                :disabled="disableStatus"-->
+                        <!--                                :popper-append-to-body="false"-->
+                        <!--                                v-model="infolist.metirialType"-->
+                        <!--                                placeholder="物料类别"-->
+                        <!--                            >-->
+                        <!--                                <el-option-->
+                        <!--                                    v-for="(item, index) in metirialTypeopt"-->
+                        <!--                                    :key="index"-->
+                        <!--                                    :label="item.dataName"-->
+                        <!--                                    :value="item.dataName"-->
+                        <!--                                >-->
+                        <!--                                </el-option>-->
+                        <!--                            </el-select>-->
+                        <!--                        </el-form-item>-->
                         <el-form-item>
                             <span>物料编码</span>
-                            <el-input
-                                v-model="infolist.metirialCode"
-                                disabled
-                            ></el-input>
+                            <el-input v-model="infolist.metirialCode" disabled></el-input>
                         </el-form-item>
                         <el-form-item prop="metirialName">
                             <span>物料名称</span>
-                            <el-select
-                                :disabled="disableStatus"
-                                :popper-append-to-body="false"
-                                v-model="infolist.metirialName"
-                                placeholder="物料名称"
-                                @change="materialNameChange"
-                            >
-                                <el-option
-                                    v-for="(item, index) in materialNameopt"
-                                    :key="index"
-                                    :label="item.metirialName"
-                                    :value="item.metirialName"
-                                >
+                            <el-select :disabled="disableStatus" :popper-append-to-body="false"
+                                v-model="infolist.metirialName" placeholder="物料名称" @change="materialNameChange">
+                                <el-option v-for="(item, index) in materialNameopt" :key="index" :label="item.metirialName"
+                                    :value="item.metirialName">
                                 </el-option>
                             </el-select>
                         </el-form-item>
                         <el-form-item>
                             <span>物料单位</span>
-                            <el-input
-                                v-model="infolist.unit"
-                                disabled
-                            ></el-input>
+                            <el-input v-model="infolist.unit" disabled></el-input>
                         </el-form-item>
                         <el-form-item>
                             <span>规格尺寸</span>
-                            <el-input
-                                v-model="infolist.size"
-
-                            ></el-input>
+                            <el-input v-model="infolist.size"></el-input>
                         </el-form-item>
-                        <el-form-item
-                            prop="length"
-                            v-if="
-                                infolist.unit == '平方米' ||
-                                    infolist.unit == '延长米'
-                            "
-                        >
+                        <el-form-item prop="length" v-if="
+                            infolist.unit == '平方米' ||
+                            infolist.unit == '延长米'
+                        ">
                             <span>长(米)</span>
-                            <el-input
-                                type="number"
-                                v-model="infolist.length"
-                                placeholder="长"
-                                :disabled="disableStatus"
-                            >
+                            <el-input type="number" v-model="infolist.length" placeholder="长" :disabled="disableStatus">
                             </el-input>
                         </el-form-item>
-                        <el-form-item
-                            prop="width"
-                            v-if="infolist.unit == '平方米'"
-                        >
+                        <el-form-item prop="width" v-if="infolist.unit == '平方米'">
                             <span>宽(米)</span>
-                            <el-input
-                                type="number"
-                                v-model="infolist.width"
-                                placeholder="宽"
-                                :disabled="disableStatus"
-                            >
+                            <el-input type="number" v-model="infolist.width" placeholder="宽" :disabled="disableStatus">
                             </el-input>
                         </el-form-item>
                         <el-form-item prop="direction">
                             <span>横/竖</span>
-                            <el-input
-                                :disabled="disableStatus"
-                                :popper-append-to-body="false"
-                                v-model="infolist.direction"
-                                placeholder="横/竖"
-                            >
+                            <el-input :disabled="disableStatus" :popper-append-to-body="false" v-model="infolist.direction"
+                                placeholder="横/竖">
                             </el-input>
                         </el-form-item>
                         <el-form-item>
                             <span>系数</span>
-                            <el-input
-                                :value="coefficient"
-                                placeholder="系数"
-                                disabled
-                            ></el-input>
+                            <el-input :value="coefficient" placeholder="系数" disabled></el-input>
                         </el-form-item>
                         <el-form-item>
                             <span>单价</span>
-                            <el-input
-                                :value="coefficient"
-                                placeholder="单价"
-                                disabled
-                            ></el-input>
+                            <el-input :value="coefficient" placeholder="单价" disabled></el-input>
                         </el-form-item>
-                        <el-form-item
-
-                        >
+                        <el-form-item>
                             <span>优先级-仅灯箱画面填报</span>
-                            <el-input
-                                v-model="infolist.priority"
-                                placeholder="优先级-仅灯箱画面填报"
-                                @keyup.native="numberVertify"
-                            ></el-input>
-                        </el-form-item>
-                        <el-form-item prop="quantity">
-                            <span>数量</span>
-                            <el-input
-                                v-model="infolist.quantity"
-                                placeholder="数量"
-                                :disabled="quantityDisabled"
-                            ></el-input>
+                            <el-input v-model="infolist.priority" placeholder="优先级-仅灯箱画面填报"
+                                @keyup.native="numberVertify"></el-input>
                         </el-form-item>
+                        <!-- <el-form-item prop="quantity">
+                                <span>数量</span>
+                                <el-input
+                                    v-model="infolist.quantity"
+                                    placeholder="数量"
+                                    :disabled="quantityDisabled"
+                                ></el-input>
+                            </el-form-item> -->
                         <el-form-item>
                             <span>物料单价(不含税)</span>
-                            <el-input
-                                v-model="infolist.price"
-                                disabled
-                            ></el-input>
-                        </el-form-item>
-                        <el-form-item prop="settlementAmount">
-                            <span>结算金额</span>
-                            <el-input
-                                v-model="infolist.settlementAmount"
-                                placeholder="结算金额"
-                                disabled
-                            ></el-input>
+                            <el-input v-model="infolist.price" disabled></el-input>
                         </el-form-item>
+                        <!-- <el-form-item prop="settlementAmount">
+                                <span>结算金额</span>
+                                <el-input
+                                    v-model="infolist.settlementAmount"
+                                    placeholder="结算金额"
+                                    disabled
+                                ></el-input>
+                            </el-form-item> -->
                     </div>
                 </el-form>
 
                 <div slot="footer" class="dialog-footer myfooter">
-                    <el-button
-                        type="primary"
-                        @click="dialogCli(2)"
-                        v-if="titname !== '查看'"
-                        >确 定</el-button
-                    >
-                    <el-button @click="dialogCli(1)" v-if="titname === '查看'"
-                        >确 定</el-button
-                    >
+                    <el-button type="primary" @click="dialogCli(2)" v-if="titname !== '查看'">确 定</el-button>
+                    <el-button @click="dialogCli(1)" v-if="titname === '查看'">确 定</el-button>
                     <el-button @click="dialogCli(1)">取 消</el-button>
                 </div>
             </div>
         </el-dialog>
 
-        <myMessage
-            :messTit="messTit"
-            @closeMessage="closeMessage"
-            :centerDialogVisible="centerDialogVisible"
-            v-if="centerDialogVisible"
-        ></myMessage>
-    </fullscreen>
+        <myMessage :messTit="messTit" @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible"></myMessage>
+</fullscreen>
 </template>
 <script>
 import mySearch from "../../../components/search.vue";
@@ -595,21 +395,21 @@ export default {
         // };
 
         return {
-            optionList:[{
-                id:'自有渠道',
-                value:'自有渠道'
-            },{
-                id:'合作渠道',
-                value:'合作渠道'
-            },{
-                id:'家庭市场',
-                value:'家庭市场'
-            },{
-                id:'个人市场',
-                value:'个人市场'
-            },{
-                id:'政企市场',
-                value:'政企市场'
+            optionList: [{
+                id: '自有渠道',
+                value: '自有渠道'
+            }, {
+                id: '合作渠道',
+                value: '合作渠道'
+            }, {
+                id: '家庭市场',
+                value: '家庭市场'
+            }, {
+                id: '个人市场',
+                value: '个人市场'
+            }, {
+                id: '政企市场',
+                value: '政企市场'
             }],
             rules: {
                 regionName: [
@@ -877,18 +677,18 @@ export default {
             metirialInfoSingle: [],
             quantityDisabled: true,
             fileInfot: {
-                    type: 'btn',
-                    typename: '导入',
-                    btntype: 'primary',
-                    limit: 1,
-                    url: '/market/cadvBusiMetirial/import',
-                    fileList: [],
-                    woNo: "",
-                },
+                type: 'btn',
+                typename: '导入',
+                btntype: 'primary',
+                limit: 1,
+                url: '/market/cadvBusiMetirial/import',
+                fileList: [],
+                woNo: "",
+            },
         };
     },
     computed: {
-        coefficient: function() {
+        coefficient: function () {
             if (
                 this.infolist.width == undefined &&
                 this.infolist.length == undefined
@@ -910,7 +710,7 @@ export default {
     },
     methods: {
         // 结算金额
-        settlementAmount: function() {
+        settlementAmount: function () {
             this.infolist.settlementAmount =
                 this.infolist.price *
                 this.infolist.coefficient *
@@ -1057,7 +857,7 @@ export default {
             } else if (v === 3) {
                 this.titname = "添加";
                 this.disableStatus = false;
-                this.infolist.countyTime = this.$formatDate(new Date(),"YYYY-MM-DD")
+                this.infolist.countyTime = this.$formatDate(new Date(), "YYYY-MM-DD")
                 // this.infolist.unit = "延长米";
             }
             // this.infolist.opNo = this.userInfo.loginNo;
@@ -1073,7 +873,10 @@ export default {
                     parentCompId: this.infolist.regionCode
                 }
             }).then(res => {
-                this.countyOpt = res.data;
+                if (v !== 3) {
+                    this.countyOpt = res.data;
+                }
+
             });
         },
         //添加
@@ -1087,7 +890,7 @@ export default {
                     new Date(),
                     "YYYY-MM-DD"
                 );
-                this.infolist.countyTime = this.$formatDate(this.infolist.countyTime,"YYYY-MM-DD")
+                this.infolist.countyTime = this.$formatDate(this.infolist.countyTime, "YYYY-MM-DD")
 
                 if (this.titname === "添加") {
                     this.submitInfo("/market/cadvBusiMetirial/add");
@@ -1180,7 +983,7 @@ export default {
         uploadBack(v) {
             let that = this;
             console.log(v);
-            if(v.data.result==0){
+            if (v.data.result == 0) {
                 that.getList({}, 1);
                 that.getUser();
                 that.getMetirialType();
@@ -1223,7 +1026,7 @@ export default {
                             } else if (this.userInfo.cityName != null && this.userInfo.countyName != null) {
                                 // this.countyOpt = res.data;
                                 this.countyOpt = res.data.filter(item => {
-                                    return ( item.compName == this.userInfo.countyName );
+                                    return (item.compName == this.userInfo.countyName);
                                 });
                                 // this.countyOpt = res.data;
                             }
@@ -1380,7 +1183,7 @@ export default {
         this.getMetirialType();
         this.getMetirialInfo();
     },
-    created() {}
+    created() { }
 };
 </script>
 <style scoped lang="scss">
@@ -1453,6 +1256,7 @@ export default {
         width: calc(100% - 120px);
     }
 }
+
 .search-box .box-l .box-info {
     margin-right: 20px !important;
 }

+ 138 - 157
src/pages/main/advertising/contractCap.vue

@@ -3,195 +3,138 @@
         <div class="container-box">
             <toolList @iconCli="iconCli" :tooltit="tooltit"></toolList>
             <div class="search">
-                <mySearch
-                    :searchList="searchList"
-                    @searchInfo="searchInfo"
-                ></mySearch>
-                <el-button
-                    class="btn-check"
-                    size="medium"
-                    type="primary"
-                    @click="dialogCheck(3)"
-                    v-if="userInfo.countyName == null && userInfo.cityName != null"
-                    >添加
-                </el-button>
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <!-- <el-button class="btn-check" size="medium" type="primary" @click="dialogCheck(3)"
+                            v-if="advLeader">添加
+                        </el-button> -->
             </div>
             <div class="tabbox">
-                <el-table
-                    height="calc(100% - 40px)"
-                    class="com-table"
-                    ref="multipleTable"
-                    :data="tableData"
-                    tooltip-effect="dark"
-                    size="small"
-                    border
-                    style="width: 100%"
-                    v-loading="loading"
-                >
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
                     <el-table-column prop="regionName" label="地市名称">
                     </el-table-column>
                     <!-- <el-table-column prop="regionCode" label="地市编码">
-                    </el-table-column> -->
+                                </el-table-column> -->
                     <!-- <el-table-column prop="preAccount" label="一采预算">
-                    </el-table-column> -->
-                    <el-table-column
-                        prop="secbuyPreAccount"
-                        label="二采预算总额"
-                    >
+                                </el-table-column> -->
+                    <el-table-column prop="secbuyPreAccount" label="二采预算总额">
                     </el-table-column>
                     <!-- <el-table-column prop="costAccount" label="一采累计使用">
-                    </el-table-column> -->
+                                </el-table-column> -->
                     <!-- <el-table-column prop="secbuyCostAccount" label="二采累计使用">
-                    </el-table-column> -->
-                    <el-table-column
-                        prop="secbuyLastAccount"
-                        label="二采剩余预算"
-                    >
+                                </el-table-column> -->
+                    <el-table-column prop="secbuyLastAccount" label="二采剩余预算">
                     </el-table-column>
                     <el-table-column prop="secbuySchedule" label="使用进度">
                     </el-table-column>
-                    <el-table-column
-                        :label="item.supplierName"
-                        v-for="(item, index) in supplierArr"
-                        :key="index"
-                    >
+                    <el-table-column :label="item.supplierName" v-for="(item, index) in supplierArr" :key="index">
                         <template slot-scope="scope">
-                            <div
-                                v-if="
-                                    scope.row.cMkSupplierCumulativeAmounts.filter(
-                                        n => {
-                                            return (
-                                                n.supplierName ==
-                                                item.supplierName
-                                            );
-                                        }
-                                    ).length > 0
-                                "
-                            >
+                            <div v-if="
+                                scope.row.cMkSupplierCumulativeAmounts.filter(
+                                    n => {
+                                        return (
+                                            n.supplierName ==
+                                            item.supplierName
+                                        );
+                                    }
+                                ).length > 0
+                            ">
                                 {{ item.sumBudget }}
                             </div>
                         </template>
                     </el-table-column>
                     <!-- <el-table-column prop="advYearn" :label="advYearnLabel">
-					</el-table-column> -->
-                    <el-table-column label="操作" width="160px" align="center" v-if="userInfo.countyName == null && userInfo.cityName != null">
+            					</el-table-column> -->
+                    <el-table-column label="操作" width="160px" align="center" v-if="advLeader">
                         <template slot-scope="scope">
                             <!-- <el-button
-                                size="mini"
-                                type="primary"
-                                @click="dialogCheck(1, scope.row)"
-                                >查看</el-button
-                            > -->
-                            <el-button
-                                size="mini"
-                                type="primary"
-                                @click="dialogCheck(2, scope.row)" 
-                                v-if="userInfo.countyName == null && userInfo.cityName != null"
-                                >编辑</el-button>
+                                            size="mini"
+                                            type="primary"
+                                            @click="dialogCheck(1, scope.row)"
+                                            >查看</el-button
+                                        > -->
+                            <el-button size="mini" type="primary" @click="dialogCheck(2, scope.row)"
+                                v-if="advLeader">编辑</el-button>
                             <!-- <el-button
-                                size="mini"
-                                type="danger"
-                                @click="delLine(scope.row)" 
-                                >删除</el-button
-                            > -->
+                                            size="mini"
+                                            type="danger"
+                                            @click="delLine(scope.row)" 
+                                            >删除</el-button
+                                        > -->
                         </template>
                     </el-table-column>
                 </el-table>
                 <!-- <el-pagination
-                    class="pageBox"
-                    @current-change="currchange"
-                    layout="prev, pager, next"
-                    background
-                    :total="total"
-                >
-                </el-pagination> -->
+                                class="pageBox"
+                                @current-change="currchange"
+                                layout="prev, pager, next"
+                                background
+                                :total="total"
+                            >
+                            </el-pagination> -->
             </div>
         </div>
 
-        <el-dialog
-            :title="titname"
-            :visible.sync="dialogStatus"
-            width="40%"
-            :destroy-on-close="true"
-            :modal-append-to-body="false"
-            :close-on-click-modal="false"
-            :before-close="closedia"
-        >
+        <el-dialog :title="titname" :visible.sync="dialogStatus" width="40%" :destroy-on-close="true"
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia">
             <div v-loading="loadinged">
                 <el-form :model="infolist" ref="infolist" :rules="rules">
                     <div class="info-line" style="width: 50%; margin: 0 auto;">
                         <!-- <el-form-item prop="regionCode">
-                            <span>地市名称</span>
-                            <el-select
-                                :popper-append-to-body="false"
-                                v-model="infolist.regionCode"
-                                placeholder="地市名称"
-                                @change="verifcheck"
-                                :disabled="secbuyLastDisableStatus"
-                            >
-                                <el-option
-                                    v-for="item in regionOpt"
-                                    :key="item.compId"
-                                    :label="item.compName"
-                                    :value="item.compId"
-                                >
-                                </el-option>
-                            </el-select>
-                        </el-form-item> -->
+                                        <span>地市名称</span>
+                                        <el-select
+                                            :popper-append-to-body="false"
+                                            v-model="infolist.regionCode"
+                                            placeholder="地市名称"
+                                            @change="verifcheck"
+                                            :disabled="secbuyLastDisableStatus"
+                                        >
+                                            <el-option
+                                                v-for="item in regionOpt"
+                                                :key="item.compId"
+                                                :label="item.compName"
+                                                :value="item.compId"
+                                            >
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item> -->
                         <el-form-item prop="secbuyPreAccount" style="width: 100%;">
                             <span>二采预算总额</span>
-                            <el-input
-                                v-model="infolist.secbuyPreAccount"
-                                placeholder="二采预算总额"
-                            ></el-input>
+                            <el-input v-model="infolist.secbuyPreAccount" placeholder="二采预算总额"></el-input>
                         </el-form-item>
                         <el-form-item prop="secbuyLastAccount" style="width: 100%;">
                             <span>二采剩余预算</span>
-                            <el-input
-                                v-model="infolist.secbuyLastAccount"
-                                placeholder="二采剩余预算"
-                            ></el-input>
+                            <el-input disabled v-model="infolist.secbuyLastAccount" placeholder="二采剩余预算"></el-input>
                         </el-form-item>
                         <!-- <el-form-item prop="secbuySchedule">
-                            <span>使用进度</span>
-                            <el-input
-                                v-model="infolist.secbuySchedule"
-                                placeholder="使用进度"
-                                disabled
-                            ></el-input>
-                        </el-form-item> -->
+                                        <span>使用进度</span>
+                                        <el-input
+                                            v-model="infolist.secbuySchedule"
+                                            placeholder="使用进度"
+                                            disabled
+                                        ></el-input>
+                                    </el-form-item> -->
                         <!-- <el-form-item prop="secbuyCostAccount">
-                            <span>二采使用</span>
-                            <el-input v-model="infolist.secbuyCostAccount" placeholder="二采累计使用" disabled></el-input>
-                        </el-form-item>
-						<el-form-item>
-						    <span>统计周期</span>
-						    <el-input v-model="infolist.advYearn" placeholder="统计周期" :disabled="disableStatus"></el-input>
-						</el-form-item> -->
+                                        <span>二采使用</span>
+                                        <el-input v-model="infolist.secbuyCostAccount" placeholder="二采累计使用" disabled></el-input>
+                                    </el-form-item>
+            						<el-form-item>
+            						    <span>统计周期</span>
+            						    <el-input v-model="infolist.advYearn" placeholder="统计周期" :disabled="disableStatus"></el-input>
+            						</el-form-item> -->
                     </div>
                 </el-form>
 
                 <div slot="footer" class="dialog-footer myfooter">
-                    <el-button
-                        type="primary"
-                        @click="dialogCli(2)"
-                        v-if="titname !== '查看'"
-                        >确 定</el-button
-                    >
-                    <el-button @click="dialogCli(1)" v-if="titname === '查看'"
-                        >确 定</el-button
-                    >
+                    <el-button type="primary" @click="dialogCli(2)" v-if="titname !== '查看'">确 定</el-button>
+                    <el-button @click="dialogCli(1)" v-if="titname === '查看'">确 定</el-button>
                     <el-button @click="dialogCli(1)">取 消</el-button>
                 </div>
             </div>
         </el-dialog>
-        <myMessage
-            :messTit="messTit"
-            @closeMessage="closeMessage"
-            :centerDialogVisible="centerDialogVisible"
-            v-if="centerDialogVisible"
-        ></myMessage>
-    </fullscreen>
+        <myMessage :messTit="messTit" @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible"></myMessage>
+</fullscreen>
 </template>
 <script>
 import mySearch from "../../../components/search.vue";
@@ -207,6 +150,7 @@ export default {
         MessageBox
     },
     data() {
+
         const regionCode = (rule, value, callback) => {
             if (!this.infolist.regionCode) {
                 callback(new Error("不能为空"));
@@ -230,6 +174,7 @@ export default {
         };
 
         return {
+            advLeader: false,
             rules: {
                 regionCode: [
                     {
@@ -297,20 +242,40 @@ export default {
         };
     },
     computed: {
-        // secbuySchedule: function() {
-        //     this.infolist.secbuySchedule = (this.infolist.secbuyPreAccount - this.infolist.secbuyLastAccount) / this.infolist.secbuyPreAccount;
-        //     this.infolist.secbuySchedule = ((parseFloat(this.infolist.secbuySchedule)*100).toFixed(2));
-        //     if(isNaN(this.infolist.secbuySchedule)){
-        //         this.infolist.secbuySchedule = ''
+
+        //     secbuySchedule: function() {
+        //         this.infolist.secbuySchedule = (this.infolist.secbuyPreAccount - this.infolist.secbuyLastAccount) / this.infolist.secbuyPreAccount;
+        //         this.infolist.secbuySchedule = ((parseFloat(this.infolist.secbuySchedule)*100).toFixed(2));
+        //         if(isNaN(this.infolist.secbuySchedule)){
+        //             this.infolist.secbuySchedule = ''
+        //         }
+        //         return this.infolist.secbuySchedule;
         //     }
-        //     return this.infolist.secbuySchedule;
-        // }
     },
     methods: {
         closedia() {
             this.infolist = {};
             this.dialogStatus = false;
         },
+        //获取权限
+        getJiangshuai() {
+            this.$http({
+                url: "/market/paraminfo/query",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: { paramKey: 'adv_leader' }
+            }).then(res => {
+                console.log(res);
+                console.log(res.data.paramValue);
+                console.log(this.userInfo.loginNo);
+                if (this.userInfo.loginNo === res.data.paramValue) {
+                    this.advLeader = true;
+                }
+
+            });
+        },
         //搜索数据
         searchInfo(v) {
             this.params = {};
@@ -332,6 +297,7 @@ export default {
                 },
                 data: v
             }).then(res => {
+                console.log(123);
                 if (
                     this.userInfo.countyName == null &&
                     this.userInfo.cityName == null
@@ -342,7 +308,14 @@ export default {
                         return item.regionName == this.userInfo.cityName;
                     });
                 }
-                
+                // console.log(this.tableData);
+                // this.tableData.map((item) => {
+                //     item.secbuySchedule = (item.secbuyPreAccount - item.secbuyLastAccount) / item.secbuyPreAccount;
+                //     item.secbuySchedule = ((parseFloat(item.secbuySchedule) * 100).toFixed(2));
+                //     if (isNaN(item.secbuySchedule)) {
+                //         item.secbuySchedule = ''
+                //     }
+                // })
                 this.total = res.data.totalRecord;
                 this.loading = false;
 
@@ -400,17 +373,17 @@ export default {
                 this.infolist.areaCode = this.areaCode;
                 this.infolist.areaName = this.areaName;
 
-                if(this.currentRole.length == 1){
-                   this.infolist.regionName = this.currentRole[0].compName;
-                   this.infolist.regionCode = this.currentRole[0].compId;
+                if (this.currentRole.length == 1) {
+                    this.infolist.regionName = this.currentRole[0].compName;
+                    this.infolist.regionCode = this.currentRole[0].compId;
                 }
 
                 if (this.titname === "添加") {
-                this.submitInfo("/market/cadvContract/add");
+                    this.submitInfo("/market/cadvContract/add");
                 } else if (this.titname === "编辑") {
                     this.submitInfo("/market/cadvContract/update", v);
                 }
-                
+
             }
         },
         submitInfo(u) {
@@ -436,7 +409,7 @@ export default {
                     }).then(res => {
                         this.loadinged = false;
                         if (res.data.result === 0) {
-                             _this.$message({
+                            _this.$message({
                                 message: "成功",
                                 type: "success"
                             });
@@ -546,7 +519,7 @@ export default {
                     parentCompId: "0"
                 }
             }).then(res => {
-                this.currentRole = res.data.filter(item=>{
+                this.currentRole = res.data.filter(item => {
                     return item.compName == this.userInfo.cityName
                 })
                 // if (
@@ -562,10 +535,18 @@ export default {
         }
     },
     mounted() {
+        this.getJiangshuai()
         this.getList({}, 1);
         this.getUser();
     },
-    created() {}
+    created() { },
+    watch: {
+        "infolist.secbuyPreAccount": {
+            handler(newVal) {
+                  this.infolist.secbuyLastAccount =  newVal -  this.infolist.costAccount
+            },
+        },
+    }
 };
 </script>
 <style scoped lang="scss">

+ 188 - 174
src/pages/main/advertising/index.vue

@@ -1,199 +1,213 @@
 <template>
-    <fullscreen :fullscreen.sync="fullscreen" class="container">
-        <div class="container-box">
-			
+	<fullscreen :fullscreen.sync="fullscreen" class="container">
+		<div class="container-box">
+
 			<!-- <h2>广告宣传费台账</h2>
-			<div class="adv-type">
-			    <div @click="jumpinfop('/publicityAccount',1,'宣传费台账')" v-if="lockFlag == 'updata'">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>创建模板</span>
-			    </div>
-				<div @click="jumpinfop('/publicityAccount',2,'宣传费台账')">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>录入/更新</span>
-			    </div>
-				<div @click="jumpinfop('/publicityAccount',3,'宣传费台账')" v-if="lockFlag == 'updata'">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>查看/下载</span>
-			    </div>
-			</div> -->
+				<div class="adv-type">
+				    <div @click="jumpinfop('/publicityAccount',1,'宣传费台账')" v-if="lockFlag == 'updata'">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>创建模板</span>
+				    </div>
+					<div @click="jumpinfop('/publicityAccount',2,'宣传费台账')">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>录入/更新</span>
+				    </div>
+					<div @click="jumpinfop('/publicityAccount',3,'宣传费台账')" v-if="lockFlag == 'updata'">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>查看/下载</span>
+				    </div>
+				</div> -->
 			<h2 class="font-ui" style="margin-top: 20px;">宣传物料管理</h2>
 			<div class="adv-type">
-			    <div class="wfour" @click="jumpinfo('/materialApplication','宣传物料申请及审批')">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>宣传物料申请及审批</span>
-			    </div>
-				<!-- <div class="wfour" @click="jumpinfo('/materialApplicationc','市级物料申请')">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>市级物料申请</span>
-			    </div>
-				<div class="wfour" @click="jumpinfo('/materialApplicationExa','物料申请审核')">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>省级物料审批</span>
+				<div class="wfour" @click="jumpinfo('/materialApplication', '宣传物料申请及审批')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>宣传物料申请及审批</span>
 				</div>
-				<div class="wfour" @click="jumpinfo('/materialApplicationExac','物料申请审核')">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>市级物料审批</span>
-				</div> -->
+				<!-- <div class="wfour" @click="jumpinfo('/materialApplicationc','市级物料申请')">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>市级物料申请</span>
+				    </div>
+					<div class="wfour" @click="jumpinfo('/materialApplicationExa','物料申请审核')">
+					    <span><i class="el-icon-folder-opened"></i></span>
+					    <span>省级物料审批</span>
+					</div>
+					<div class="wfour" @click="jumpinfo('/materialApplicationExac','物料申请审核')">
+					    <span><i class="el-icon-folder-opened"></i></span>
+					    <span>市级物料审批</span>
+					</div> -->
 			</div>
 			<h2 class="font-ui" style="margin-top: 20px;">基础数据管理</h2>
 			<div class="adv-type">
-			    <!-- <div class="wfive" @click="jumpinfo('/materielPick','一采物料类型建档')" v-if="province">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>一采物料类型建档</span>
-			    </div> -->
-				<div class="wfive" @click="jumpinfo('/materiel','二采物料类型建档')" v-if="province">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>二采物料类型建档</span>
-			    </div>
-				<div class="wfive" @click="jumpinfo('/contractCap','预算及合同上限')">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>预算及合同上限</span>
-			    </div>
-				<div class="wfive" @click="jumpinfo('/supplier','供应商管理')" v-if="province">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>供应商管理</span>
+				<!-- <div class="wfive" @click="jumpinfo('/materielPick','一采物料类型建档')" v-if="province">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>一采物料类型建档</span>
+				    </div> -->
+				<div class="wfive" @click="jumpinfo('/materiel', '二采物料类型建档')" v-if="province">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>二采物料类型建档</span>
+				</div>
+				<div class="wfive" @click="jumpinfo('/contractCap', '预算及合同上限')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>预算及合同上限</span>
+				</div>
+				<div class="wfive" @click="jumpinfo('/supplier', '供应商管理')" v-if="province">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>供应商管理</span>
 				</div>
-				<div class="wfive" @click="jumpinfo('/businessHall','物料基础信息维护')">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>物料基础信息维护</span>
+				<div class="wfive" @click="jumpinfo('/businessHall', '物料基础信息维护')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>物料基础信息维护</span>
 				</div>
-				<div class="wfive" @click="jumpinfo('/materialApplistatic','物料统计')">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>物料统计</span>
+				<div class="wfive" @click="jumpinfo('/materialApplistatic', '物料统计')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>物料统计</span>
 				</div>
+				<div class="wfive" @click="jumpinfo('/materialAppMessage', '宣传物料制作费用明细')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>宣传物料制作费用明细</span>
+				</div>
+				<div class="wfive" @click="jumpinfo('/materialAppNum', '验收打分单')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>验收打分单</span>
+				</div>
+
 			</div>
-			
-      </div>
 
-    </fullscreen>
+		</div>
 
+</fullscreen>
 </template>
 <script>
-    import mySearch from "../../../components/search.vue";
-    import myMessage from "../../../components/myMessage.vue"
-    import toolList from '../../../components/toolList'
-	import myUpload from '../../../components/upload'
+import mySearch from "../../../components/search.vue";
+import myMessage from "../../../components/myMessage.vue"
+import toolList from '../../../components/toolList'
+import myUpload from '../../../components/upload'
+
+export default {
+	components: {
+		mySearch,
+		myMessage,
+		toolList,
+		myUpload
+	},
+	data() {
 
-    export default {
-        components: {
-            mySearch,
-            myMessage,
-            toolList,
-			myUpload
-        },
-        data() {
-          
-            return {
-                fullscreen: false,
-				lockFlag:'see',
-				province:true
-            }
-        },
-        methods: {
-            jumpinfop(p,v,n){
-				this.$router.push({
-				    path: p,
-				    query:{
-				        type:v
-				    }
-				});
-				this.setabList(n, p+"?type="+v);
-			},
-			jumpinfo(p,n){
-				this.$router.push({
-				    path: p,
-				});
-				this.setabList(n, p);
-			},
-			setabList(n, p) {
-			    let params = {
-			        children: "",
-			        name: n,
-			        rountPath: p,
-			        target: "_self",
-			    };
-			    for (let i = 0; i < this.$store.state.tabList.length; i++) {
-			        if (this.$store.state.tabList[i].name === params.name) {
-			            this.$store.state.tabList[i] = params;
-			        }
-			    }
-			    let set = new Set([...this.$store.state.tabList, params]);
-			    set.add(params);
-			    this.$store.commit("setDefaultActive", params.rountPath);
-			    this.$store.commit("setTabList", Array.from(set));
-			},
-            getUser() {
-                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
-				let Menus = JSON.parse(window.sessionStorage.childrenMenus);
-				for (let i = 0; i < Menus.length; i++) {
-					if(Menus[i].systemflag == 1 && Menus[i].jspUrl == '/publicityAccount'){
-						this.lockFlag = 'add';//省级
-					}
-					if(Menus[i].systemflag == 1 && Menus[i].jspUrl == '/publicity'){
-						this.lockFlag = 'updata';//管理员
-						i = Menus.length;
-					}
+		return {
+			fullscreen: false,
+			lockFlag: 'see',
+			province: true
+		}
+	},
+	methods: {
+		jumpinfop(p, v, n) {
+			this.$router.push({
+				path: p,
+				query: {
+					type: v
+				}
+			});
+			this.setabList(n, p + "?type=" + v);
+		},
+		jumpinfo(p, n) {
+			this.$router.push({
+				path: p,
+			});
+			this.setabList(n, p);
+		},
+		setabList(n, p) {
+			let params = {
+				children: "",
+				name: n,
+				rountPath: p,
+				target: "_self",
+			};
+			for (let i = 0; i < this.$store.state.tabList.length; i++) {
+				if (this.$store.state.tabList[i].name === params.name) {
+					this.$store.state.tabList[i] = params;
+				}
+			}
+			let set = new Set([...this.$store.state.tabList, params]);
+			set.add(params);
+			this.$store.commit("setDefaultActive", params.rountPath);
+			this.$store.commit("setTabList", Array.from(set));
+		},
+		getUser() {
+			this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+			let Menus = JSON.parse(window.sessionStorage.childrenMenus);
+			for (let i = 0; i < Menus.length; i++) {
+				if (Menus[i].systemflag == 1 && Menus[i].jspUrl == '/publicityAccount') {
+					this.lockFlag = 'add';//省级
 				}
-				for (let i = 0; i < Menus.length; i++) {
-					if(Menus[i].systemflag == 1 && Menus[i].jspUrl == '/province'){
-						this.province = true;//省公司
-					}
+				if (Menus[i].systemflag == 1 && Menus[i].jspUrl == '/publicity') {
+					this.lockFlag = 'updata';//管理员
+					i = Menus.length;
 				}
-            }
-        },
-        mounted() {
-            this.getUser();
-        },
-        created() {
+			}
+			for (let i = 0; i < Menus.length; i++) {
+				if (Menus[i].systemflag == 1 && Menus[i].jspUrl == '/province') {
+					this.province = true;//省公司
+				}
+			}
+		}
+	},
+	mounted() {
+		this.getUser();
+	},
+	created() {
 
-        }
-    }
+	}
+}
 </script>
 <style scoped lang="scss">
-	.container-box{
-		height: calc(100vh - 200px);
-		overflow-y: scroll;
-		padding-bottom: 20px;
+.container-box {
+	height: calc(100vh - 200px);
+	overflow-y: scroll;
+	padding-bottom: 20px;
+}
+
+.adv-type {
+	margin-top: 20px;
+	display: flex;
+	// justify-content: space-between;
+	flex-wrap: wrap;
+	// border: 1px solid #ddd;
+	border-radius: 5px;
+	padding: 20px;
+	box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+	div {
+		width: 33%;
+		text-align: center;
+		height: 80px;
+		overflow: hidden;
+		min-width: 100px;
+		cursor: pointer;
+		padding-top: 10px;
+		margin: 10px 0;
 	}
-	.adv-type{
-	    margin-top: 20px;
-	    display: flex;
-	    justify-content: space-between;
-	    flex-wrap: wrap;
-	    // border: 1px solid #ddd;
-	    border-radius: 5px;
-	    padding: 20px;
-	    box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
-	    div{
-	        width: 33%;
-	        text-align: center;
-	        height: 80px;
-	        overflow: hidden;
-	        min-width: 100px;
-	        cursor: pointer;
-	        padding-top: 10px;
-	        margin: 10px 0;
-	    }
-	    div:hover{
-	        background: #CFE8FC;
-	        border-radius: 5px;
-	    }
-	    span{
-	        width: 100%;
-	        display: inline-block;
-	        height: 40px;
-	        // line-height: 40px;
-	        i{
-	            color: #0074D9;
-	            font-size: 36px;
-	        }
-	    }
-		.wfour{
-			width: 25%;
-		}
-		.wfive{
-			width: 20%;
+
+	div:hover {
+		background: #CFE8FC;
+		border-radius: 5px;
+	}
+
+	span {
+		width: 100%;
+		display: inline-block;
+		height: 40px;
+
+		// line-height: 40px;
+		i {
+			color: #0074D9;
+			font-size: 36px;
 		}
 	}
-</style>
+
+	.wfour {
+		width: 25%;
+	}
+
+	.wfive {
+		width: 20%;
+	}
+}</style>

+ 447 - 0
src/pages/main/advertising/materialAppMessage.vue

@@ -0,0 +1,447 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli="iconCli" :tooltit="tooltit"></toolList>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button class="btn-check" size="medium" type="primary" @click="exportTempletelist">导出
+                </el-button>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="region" label="城市">
+                    </el-table-column>
+                    <el-table-column prop="district" label="区县">
+                    </el-table-column>
+
+                    <el-table-column prop="selectedGys" label="供应商(全称)">
+                    </el-table-column>
+                    <el-table-column prop="useCase" label="使用场景">
+                    </el-table-column>
+                    <el-table-column prop="materialNo" label="物料编码">
+                    </el-table-column>
+                    <el-table-column prop="material" label="物料名称">
+                    </el-table-column>
+                    <el-table-column prop="unit" label="物料单位">
+                    </el-table-column>
+                    <el-table-column prop="spec" label="规格尺寸">
+                    </el-table-column>
+                    <el-table-column prop="chang" label="长(M)">
+                    </el-table-column>
+                    <el-table-column prop="kuan" label="宽(M)">
+                    </el-table-column>
+                    <el-table-column prop="coefficient" label="系数">
+                    </el-table-column>
+
+                    <el-table-column prop="quantity" label="数量">
+                    </el-table-column>
+                    <el-table-column prop="settlementAmount" label="结算金额(元,不含税)">
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+        </div>
+</fullscreen>
+</template>
+<script>
+import mySearch from "../../../components/search.vue";
+import toolList from "../../../components/toolList";
+
+export default {
+    components: {
+        mySearch,
+        toolList,
+    },
+    data() {
+       
+        return {
+            searchList: [
+                {
+                    type: "sel",
+                    tit: "使用场景",
+                    value: "",
+                    width: "31%",
+                    options: [
+                        {
+                            dataCode: "营业厅-VI改造-自有渠道",
+                            dataName: "营业厅-VI改造-自有渠道"
+                        },
+                        {
+                            dataCode: "营业厅-常规物料-自有渠道",
+                            dataName: "营业厅-常规物料-自有渠道"
+                        },
+                        {
+                            dataCode: "营业厅-VI改造-合作渠道",
+                            dataName: "营业厅-VI改造-合作渠道"
+                        },
+                        {
+                            dataCode: "营业厅-常规物料-合作渠道",
+                            dataName: "营业厅-常规物料-合作渠道"
+                        },
+                        {
+                            dataCode: "小区",
+                            dataName: "小区"
+                        },
+                        {
+                            dataCode: "校园",
+                            dataName: "校园"
+                        },
+                        {
+                            dataCode: "政企",
+                            dataName: "政企"
+                        }
+                    ]
+                },
+                { type: "input", tit: "供应商", value: "", width: "31%" },
+                { type: "input", tit: "城市名称", value: "", width: "31%" },
+                { type: "input", tit: "区县名称", value: "", width: "31%" },
+                { type: "input", tit: "物料编码", value: "", width: "31%" }
+            ],
+            tooltit: "宣传物料制作费用明细",
+            fullscreen: false,
+            total: 0,
+            pageSize: 1,
+            tableData: [],
+            dialogStatus: false,
+            disableStatus: false,
+            titname: "",
+            infolist: {},
+            userInfo: {},
+            params: {},
+            centerDialogVisible: false,
+            messTit: "",
+            delid: "",
+            loading: false,
+            loadinged: false,
+            //使用场景
+            sceneopt: [
+                {
+                    dataCode: "1",
+                    dataName: "小区"
+                },
+                {
+                    dataCode: "2",
+                    dataName: "校园"
+                },
+                {
+                    dataCode: "3",
+                    dataName: "营业厅-VI改造-自有渠道"
+                },
+                {
+                    dataCode: "4",
+                    dataName: "营业厅-常规物料-自有渠道"
+                },
+                {
+                    dataCode: "5",
+                    dataName: '营业厅-VI改造-合作渠道'
+                },
+                {
+                    dataCode: "6",
+                    dataName: '营业厅-常规物料-合作渠道'
+                },
+                {
+                    dataCode: "7",
+                    dataName: "政企"
+                }
+            ],
+            // 基础数据
+            isAsicopt: [
+                {
+                    id: "0",
+                    name: "是"
+                },
+                {
+                    id: "1",
+                    name: "否"
+                }
+            ],
+            coefficientopt: [
+                {
+                    id: "0",
+                    name: "按需录入"
+                },
+                {
+                    id: "1",
+                    name: "1"
+                }
+            ],
+            //单位
+            unitopt: [
+                {
+                    id: "0",
+                    name: "平方米"
+                },
+                {
+                    id: "1",
+                    name: "个"
+                },
+                {
+                    id: "2",
+                    name: "延长米"
+                },
+                {
+                    id: "3",
+                    name: "套"
+                },
+                {
+                    id: "4",
+                    name: "组"
+                }, {
+                    id: "5",
+                    name: "延米"
+                }, {
+                    id: '6',
+                    name: '张'
+                }
+            ],
+            //物料名称
+            nameopt: [],
+            //供应商
+            suppOpt: [],
+            usePlanceArr: [],
+            metirialTypeopt: [],
+            metirialCodeDisableStatus: false,
+            // scene:[]
+        };
+    },
+    methods: {
+        exportTempletelist() {
+            let data = this.params;
+            // return
+            this.$http({
+                url: "/market/xcwlProcess/excelExportFeeDetail",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                responseType: "blob",
+                data: {},
+            }).then((response) => {
+                if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                    let blob = new Blob([response.data], {
+                        type: 'application/vnd.ms-excel'
+                    })
+                    window.navigator.msSaveOrOpenBlob(blob,
+                        new Date().getTime() + '.xlsx')
+                } else {
+                    /* 火狐谷歌的文件下载方式 */
+                    var blob = new Blob([response.data])
+                    var downloadElement = document.createElement('a')
+                    var href = window.URL.createObjectURL(blob)
+                    downloadElement.href = href
+                    downloadElement.download = new Date().getTime() + '.xlsx'
+                    document.body.appendChild(downloadElement)
+                    downloadElement.click()
+                    document.body.removeChild(downloadElement)
+                    window.URL.revokeObjectURL(href)
+                }
+            });
+        },
+        usePlance(v) {
+            this.usePlanceArr = v;
+
+        },
+        closedia() {
+            this.infolist = {};
+            this.dialogStatus = false;
+        },
+        //搜索数据
+        searchInfo(v) {
+            this.params = {};
+            v[0] ? (this.params.useCase = v[0]) : "";
+            v[1] ? (this.params.selectedGys = v[1]) : "";
+            v[2] ? (this.params.region = v[2]) : "";
+            v[3] ? (this.params.district = v[3]) : "";
+            v[4] ? (this.params.materialNo = v[4]) : "";
+            this.getList(this.params, this.pageSize);
+        },
+        uploadBack(v) {
+            let that = this;
+            console.log(v);
+            if (v.data.result == 0) {
+                that.getList({}, 1);
+                that.getUser();
+                that.getMetirialType();
+                that.getMetirialInfo();
+            }
+        },
+        getMetirialInfo() {
+            this.$http({
+                url: "/market/cadvSecbuyMetirial/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                data: {
+                    dictCodePks: "metirialType"
+                }
+            }).then(res => {
+                this.materialNameopt = res.data;
+            });
+        },
+        getMetirialType() {
+            this.$http({
+                url: "/sysmgr/cfgDataDicts/queryMap",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                data: {
+                    dictCodePks: "metirialType"
+                }
+            }).then(res => {
+                this.metirialTypeopt = res.data.body.metirialType;
+            });
+        },
+        //获取列表
+        getList(v, n) {
+            this.pageSize = n;
+            let _this = this;
+            this.loading = true;
+            this.tableData = [];
+            this.$http({
+                url: "/market/xcwlProcess/queryDonePage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    page: '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: v
+            }).then(res => {
+                res.data.data.forEach(item => {
+                    for (let i = 0; i < this.sceneopt.length; i++) {
+                        if (this.sceneopt[i].dataCode == item.sceneName) {
+                            item.sceneName = this.sceneopt[i].dataName;
+                        }
+                    }
+                });
+                this.tableData = res.data.data;
+                this.total = res.data.totalRecord;
+                this.loading = false;
+            });
+        },
+
+        // 分页
+        currchange(v) {
+            this.pageSize = v;
+            this.getList(this.params, this.pageSize);
+        },
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+                this.getList(this.params, this.pageSize);
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen;
+            }
+        },
+        getUser() {
+            this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+            this.$http({
+                url: "/market/cadvSupplier/queryValidSupplierList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                // data: { buyTypeCode: "2" }
+                data: {}
+            }).then(res => {
+                this.suppOpt = res.data;
+            });
+        }
+    },
+    mounted() {
+        this.getList({}, 1);
+        this.getUser();
+
+        this.$http({
+            url: "/sysmgr/cfgDataDicts/queryMap",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json"
+            },
+            data: {
+                dictCodePks: "metirialType"
+            }
+        }).then(res => {
+            this.metirialTypeopt = res.data.body.metirialType;
+            // this.stypeList = res.data.body.materType;
+        });
+    },
+    created() { }
+};
+</script>
+<style scoped lang="scss">
+.onetab {
+    margin-bottom: 20px;
+    padding: 0 20px;
+}
+
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 15px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+.info-line {
+    width: 100%;
+    display: block;
+    padding-left: 20px;
+
+    div {
+        width: 50%;
+        display: inline-block;
+    }
+
+    span {
+        width: 80px;
+        display: inline-block;
+        text-align: left;
+
+        i {
+            color: red;
+            display: inline-block;
+            padding-right: 5px;
+        }
+    }
+
+    .el-select,
+    .el-input {
+        width: calc(100% - 100px);
+    }
+}
+
+.online {
+    width: 100%;
+
+    .el-select {
+        width: calc(100% - 100px);
+    }
+
+    span {
+        vertical-align: top;
+    }
+
+    .el-textarea {
+        width: calc(100% - 100px);
+    }
+}
+</style>

+ 415 - 0
src/pages/main/advertising/materialAppNum.vue

@@ -0,0 +1,415 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli="iconCli" :tooltit="tooltit"></toolList>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button class="btn-check" size="medium" type="primary" @click="exportTempletelist">导出验收单
+                </el-button>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" @selection-change="selectionChange"
+                    v-loading="loading">
+                    <el-table-column type="selection" width="55">
+                    </el-table-column>
+                    <el-table-column prop="needName" label="业务名称">
+                    </el-table-column>
+                    <el-table-column prop="state" label="需求编号">
+                    </el-table-column>
+                    <el-table-column prop="materialNo" label="物料编码">
+                    </el-table-column>
+                    <el-table-column prop="material" label="物料名称">
+                    </el-table-column>
+                    <el-table-column prop="unit" label="物料单位">
+                    </el-table-column>
+                    <el-table-column prop="spec" label="规格尺寸">
+                    </el-table-column>
+                    <el-table-column prop="quantity" label="数量">
+                    </el-table-column>
+                    <el-table-column prop="districtScore" label="区县验收打分">
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+        </div>
+</fullscreen>
+</template>
+<script>
+import { log } from "console";
+import mySearch from "../../../components/search.vue";
+import toolList from "../../../components/toolList";
+
+export default {
+    components: {
+        mySearch,
+        toolList,
+    },
+    data() {
+
+
+        return {
+            exportList:[],
+            searchList: [
+
+                { type: "input", tit: "供应商", value: "", width: "31%" },
+                { type: "input", tit: "城市名称", value: "", width: "31%" },
+                { type: "input", tit: "区县名称", value: "", width: "31%" },
+                { type: "input", tit: "物料编码", value: "", width: "31%" }
+            ],
+            tooltit: "宣传物料制作验收及打分",
+            fullscreen: false,
+            total: 0,
+            pageSize: 1,
+            tableData: [],
+            dialogStatus: false,
+            disableStatus: false,
+            titname: "",
+            infolist: {},
+            userInfo: {},
+            params: {},
+            centerDialogVisible: false,
+            messTit: "",
+            delid: "",
+            loading: false,
+            loadinged: false,
+            //使用场景
+            sceneopt: [
+                {
+                    dataCode: "1",
+                    dataName: "小区"
+                },
+                {
+                    dataCode: "2",
+                    dataName: "校园"
+                },
+                {
+                    dataCode: "3",
+                    dataName: "营业厅-VI改造-自有渠道"
+                },
+                {
+                    dataCode: "4",
+                    dataName: "营业厅-常规物料-自有渠道"
+                },
+                {
+                    dataCode: "5",
+                    dataName: '营业厅-VI改造-合作渠道'
+                },
+                {
+                    dataCode: "6",
+                    dataName: '营业厅-常规物料-合作渠道'
+                },
+                {
+                    dataCode: "7",
+                    dataName: "政企"
+                }
+            ],
+            // 基础数据
+            isAsicopt: [
+                {
+                    id: "0",
+                    name: "是"
+                },
+                {
+                    id: "1",
+                    name: "否"
+                }
+            ],
+            coefficientopt: [
+                {
+                    id: "0",
+                    name: "按需录入"
+                },
+                {
+                    id: "1",
+                    name: "1"
+                }
+            ],
+            //单位
+            unitopt: [
+                {
+                    id: "0",
+                    name: "平方米"
+                },
+                {
+                    id: "1",
+                    name: "个"
+                },
+                {
+                    id: "2",
+                    name: "延长米"
+                },
+                {
+                    id: "3",
+                    name: "套"
+                },
+                {
+                    id: "4",
+                    name: "组"
+                }, {
+                    id: "5",
+                    name: "延米"
+                }, {
+                    id: '6',
+                    name: '张'
+                }
+            ],
+            //物料名称
+            nameopt: [],
+            //供应商
+            suppOpt: [],
+            usePlanceArr: [],
+            metirialTypeopt: [],
+            metirialCodeDisableStatus: false,
+            // scene:[]
+        };
+    },
+    methods: {
+        selectionChange(val){
+          this.exportList =  val;
+        },  
+        exportTempletelist() {
+            if(this.exportList.length==0){
+                this.$message.error('请选择导出文件')
+                return
+            }
+            // return
+            this.$http({
+                url: "/market/xcwlProcess/excelExportDistrictScore",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                responseType: "blob",
+                data: this.exportList,
+            }).then((response) => {
+                if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                    let blob = new Blob([response.data], {
+                        type: 'application/vnd.ms-excel'
+                    })
+                    window.navigator.msSaveOrOpenBlob(blob,
+                        new Date().getTime() + '.xlsx')
+                } else {
+                    /* 火狐谷歌的文件下载方式 */
+                    var blob = new Blob([response.data])
+                    var downloadElement = document.createElement('a')
+                    var href = window.URL.createObjectURL(blob)
+                    downloadElement.href = href
+                    downloadElement.download = new Date().getTime() + '.xlsx'
+                    document.body.appendChild(downloadElement)
+                    downloadElement.click()
+                    document.body.removeChild(downloadElement)
+                    window.URL.revokeObjectURL(href)
+                }
+            });
+        },
+        usePlance(v) {
+            this.usePlanceArr = v;
+
+        },
+        closedia() {
+            this.infolist = {};
+            this.dialogStatus = false;
+        },
+        //搜索数据
+        searchInfo(v) {
+            this.params = {};
+            v[0] ? (this.params.selectedGys = v[0]) : "";
+            v[1] ? (this.params.region = v[1]) : "";
+            v[2] ? (this.params.district = v[2]) : "";
+            v[3] ? (this.params.materialNo = v[3]) : "";
+            this.getList(this.params, this.pageSize);
+        },
+        uploadBack(v) {
+            let that = this;
+            console.log(v);
+            if (v.data.result == 0) {
+                that.getList({}, 1);
+                that.getUser();
+                that.getMetirialType();
+                that.getMetirialInfo();
+            }
+        },
+        getMetirialInfo() {
+            this.$http({
+                url: "/market/cadvSecbuyMetirial/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                data: {
+                    dictCodePks: "metirialType"
+                }
+            }).then(res => {
+                this.materialNameopt = res.data;
+            });
+        },
+        getMetirialType() {
+            this.$http({
+                url: "/sysmgr/cfgDataDicts/queryMap",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                data: {
+                    dictCodePks: "metirialType"
+                }
+            }).then(res => {
+                this.metirialTypeopt = res.data.body.metirialType;
+            });
+        },
+        //获取列表
+        getList(v, n) {
+            this.pageSize = n;
+            let _this = this;
+            this.loading = true;
+            this.tableData = [];
+            this.$http({
+                url: "/market/xcwlProcess/queryDonePage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    page: '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: v
+            }).then(res => {
+                res.data.data.forEach(item => {
+                    for (let i = 0; i < this.sceneopt.length; i++) {
+                        if (this.sceneopt[i].dataCode == item.sceneName) {
+                            item.sceneName = this.sceneopt[i].dataName;
+                        }
+                    }
+                });
+                this.tableData = res.data.data;
+                console.log(this.tableData);
+                this.total = res.data.totalRecord;
+                this.loading = false;
+            });
+        },
+
+        // 分页
+        currchange(v) {
+            this.pageSize = v;
+            this.getList(this.params, this.pageSize);
+        },
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+                this.getList(this.params, this.pageSize);
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen;
+            }
+        },
+        getUser() {
+            this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+            this.$http({
+                url: "/market/cadvSupplier/queryValidSupplierList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                // data: { buyTypeCode: "2" }
+                data: {}
+            }).then(res => {
+                this.suppOpt = res.data;
+            });
+        },
+        handleSelectionChange() {
+
+        }
+    },
+    mounted() {
+        this.getList({}, 1);
+        this.getUser();
+
+        this.$http({
+            url: "/sysmgr/cfgDataDicts/queryMap",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json"
+            },
+            data: {
+                dictCodePks: "metirialType"
+            }
+        }).then(res => {
+            this.metirialTypeopt = res.data.body.metirialType;
+            // this.stypeList = res.data.body.materType;
+        });
+    },
+    created() { }
+};
+</script>
+<style scoped lang="scss">
+.onetab {
+    margin-bottom: 20px;
+    padding: 0 20px;
+}
+
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 15px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+.info-line {
+    width: 100%;
+    display: block;
+    padding-left: 20px;
+
+    div {
+        width: 50%;
+        display: inline-block;
+    }
+
+    span {
+        width: 80px;
+        display: inline-block;
+        text-align: left;
+
+        i {
+            color: red;
+            display: inline-block;
+            padding-right: 5px;
+        }
+    }
+
+    .el-select,
+    .el-input {
+        width: calc(100% - 100px);
+    }
+}
+
+.online {
+    width: 100%;
+
+    .el-select {
+        width: calc(100% - 100px);
+    }
+
+    span {
+        vertical-align: top;
+    }
+
+    .el-textarea {
+        width: calc(100% - 100px);
+    }
+}
+</style>

+ 28 - 24
src/pages/main/advertising/materialApplistatic.vue

@@ -4,22 +4,22 @@
             <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
             <div class="search">
                 <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
-				<span class="allprice">合计总额:3000</span>
+				<span class="allprice">合计总额:{{ allNum }}</span>
             </div>
             <div class="tabbox">
                 <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
                     tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
-                    <el-table-column prop="name" label="地市">
+                    <el-table-column prop="countyName" label="地市">
                     </el-table-column>
-                    <el-table-column prop="type" label="物料类型">
+                    <el-table-column prop="metirialType" label="物料类型">
                     </el-table-column>
-                    <el-table-column prop="money" label="单价">
+                    <el-table-column prop="price" label="单价">
                     </el-table-column>
                     <el-table-column prop="size" label="规格">
                     </el-table-column>
-                    <el-table-column prop="num" label="数量">
+                    <el-table-column prop="priority" label="数量">
                     </el-table-column>
-					<el-table-column prop="all" label="小计">
+					<el-table-column prop="settlementAmount" label="小计">
                     </el-table-column>
                 </el-table>
                 <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
@@ -42,6 +42,8 @@
         },
         data() {
             return {
+                allNum:'',
+                params:{},
                 searchList: [
                     {
                         type: 'input',
@@ -82,23 +84,25 @@
             },
             //获取列表
             getList(v, n) {
-                // this.pageSize = n;
-                // let _this = this;
-                // this.loading = true;
-                // this.tableData = [];
-                // this.$http({
-                //     url: "/bpm/api/queryBpmPrePluginPage",
-                //     method: "post",
-                //     headers: {
-                //         "Content-Type": "application/json",
-                //         "page": '{"pageNo":"' + n + '","pageSize":"10"}'
-                //     },
-                //     data: v,
-                // }).then((res) => {
-                //     this.tableData = res.data.data;
-                //     this.total = res.data.totalRecord;
-                //     this.loading = false;
-                // });
+                console.log(v);
+                this.pageSize = n;
+                this.loading = true;
+                this.tableData = [];
+                this.$http({
+                    url: "/market/cadvBusiMetirial/queryPageReport",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                    },
+                    data: v,
+                }).then((res) => {
+                    console.log(res);
+                    this.tableData = res.data.data;
+                    this.allNum = res.data.retMsg;
+                    this.total = res.data.totalRecord;
+                    this.loading = false;
+                });
             },
             // 分页
             currchange(v) {
@@ -116,7 +120,7 @@
             },
         },
         mounted() {
-            // this.getList({}, 1);
+            this.getList({}, 1);
         },
         created() {
 

+ 15 - 0
src/pages/main/advertising/supplier.vue

@@ -25,6 +25,10 @@
                     </el-table-column>
                     <el-table-column prop="schedule" label="框架总额进度">
 					</el-table-column>
+                    <el-table-column prop="preCost" label="预占总额">
+					</el-table-column>
+                    <el-table-column prop="billCost" label="下单总额">
+					</el-table-column>
 					<!-- <el-table-column prop="buyTypeName" label="采购类型">
 					</el-table-column> -->
 					<el-table-column prop="contractEndTime" label="截止时间">
@@ -87,6 +91,17 @@
 						    <el-date-picker v-model="infolist.contractEndTime" type="datetime" placeholder="截止时间" :disabled="disableStatus">
 						    </el-date-picker>
 						</el-form-item>
+                        <el-form-item prop="contractEndTime">
+						    <span>预占总额</span>
+						    <el-input v-model="infolist.preCost"  placeholder="预占总额" :disabled="disableStatus">
+						    </el-input>
+						</el-form-item>
+                        <el-form-item prop="contractEndTime">
+						    <span>下单总额</span>
+						    <el-input v-model="infolist.billCost"  placeholder="下单总额" :disabled="disableStatus">
+						    </el-input>
+						</el-form-item>
+               
 						<!-- <el-form-item prop="type">
 						    <span>采购类型</span>
 						    <el-select :disabled="disableStatus" :popper-append-to-body="false"

+ 64 - 5
src/pages/main/badInfoGovern/index.vue

@@ -110,7 +110,7 @@
 			</div>
 		</el-dialog>
 
-        <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
+        <!-- <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
         	:modal-append-to-body="false" :close-on-click-modal="false">
         	<div>
 
@@ -134,8 +134,40 @@
         			<el-button @click="checkexa = false">取 消</el-button>
         		</div>
         	</div>
-        </el-dialog>
-
+        </el-dialog> -->
+          <el-dialog
+        title="选择审批人"
+        :visible.sync="checkexa"
+        width="100%"
+        style="height: 100%"
+        :fullscreen="true"
+        :destroy-on-close="true"
+        :modal-append-to-body="false"
+        :close-on-click-modal="false"
+      >
+        <div style="height: 100%">
+          <el-form :model="infolist" ref="infolist" style="height: 100%">
+            <el-form-item prop="visiblec" style="height: 100%">
+              <!-- <span style="width: 80px">审批人员</span> -->
+              <deptTreeOnly
+                @treeCheck="treeCheckonly"
+                :defaultList="defaultList"
+                :type="depttype"
+                :closeList="closeList"
+              ></deptTreeOnly>
+              <div style="text-align: center; margin-top: 30px">
+                <!-- <el-button type="primary" @click="checkProcessUser()"
+                  >确 定</el-button
+                > -->
+				<el-button type="primary" @click="checkProcessUser()" v-if="!visionchonly">确 定</el-button>
+        		<el-button type="primary" @click="checkProcessUser1()" v-if="visionchonly">确 定</el-button>
+                <el-button @click="checkexa = false">取 消</el-button>
+              </div>
+              
+            </el-form-item>
+          </el-form>
+        </div>
+      </el-dialog>
 
 		<myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
 			v-if="centerDialogVisible"></myMessage>
@@ -148,8 +180,8 @@
 	import toolList from '../../../components/toolList'
 	import myUpload from '../../../components/upload'
 	import uploadDown from '../../../components/uploadDown.vue'
-    import deptTreeOnly from "../../../components/deptTreeOnly.vue"
-
+    // import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+    import deptTreeOnly from "../../../components/newTree.vue";
 	export default {
 		components: {
 			mySearch,
@@ -256,12 +288,36 @@
 			}
 		},
 		methods: {
+			checkProcessUser() {
+                let _this = this;
+                if (_this.treeListonly.length > 1) {
+                    _this.$message({
+                    message: "只能选择一个人",
+                    type: "error",
+                    });
+                } else {
+                    _this.dialogCliadd();
+                }
+                },
+					checkProcessUser1() {
+                let _this = this;
+                if (_this.treeListonly.length > 1) {
+                    _this.$message({
+                    message: "只能选择一个人",
+                    type: "error",
+                    });
+                } else {
+                    _this.dialogCli(2);
+                }
+                },
             deletes() {
             	this.treeListonly = {};
             	this.closeList = !this.closeList;
             },
             treeCheckonly(v) {
             	this.treeListonly = v;
+				this.treeListonly.leaderAuditName = v[0].label;
+				this.treeListonly.leaderAuditNo = v[0].key;
             },
 
 			closedia() {
@@ -648,6 +704,9 @@
 	}
 </script>
 <style scoped lang="scss">
+	 ::v-deep .el-dialog .flex-box{
+        height: 400px;
+    }
 	.onetab {
 		margin-bottom: 20px;
 		padding: 0 20px;

+ 1 - 1
src/pages/main/busitime/busiTimeout.vue

@@ -266,7 +266,7 @@ export default {
                   ]; // 导出的表头字段名
 
                   let list = exdata;
-
+                   
                   const data = that.formatJson(filterVal, list);
                   export_json_to_excel(tHeader, data, `report`); // 导出的表格名称,根据需要自己命名
               });

+ 76 - 6
src/pages/main/endToEnd/index.vue

@@ -194,8 +194,41 @@
         </el-dialog>
 
 
-
-        <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
+        <el-dialog
+        title="选择审批人"
+        :visible.sync="checkexa"
+        width="100%"
+        style="height: 100%"
+        :fullscreen="true"
+        :destroy-on-close="true"
+        :modal-append-to-body="false"
+        :close-on-click-modal="false"
+      >
+        <div style="height: 100%">
+          <el-form :model="infolist" ref="infolist"  :rules="rules" style="height: 100%">
+            <el-form-item prop="visiblec" style="height: 100%" >
+             
+              <deptTreeOnly
+                @treeCheck="treeCheckonly"
+                :defaultList="defaultList"
+                :type="depttype"
+                :closeList="closeList"
+              ></deptTreeOnly>
+              <div style="text-align: center; margin-top: 30px">
+                <el-button type="primary" @click="checkProcessUser()"
+                  >确 定</el-button
+                >
+                <el-button @click="checkexa = false">取 消</el-button>
+                <!-- <el-button v-if="titname == '添加'" type="primary" @click="dialogCliadd">确 定</el-button>
+                    <el-button v-if="titname != '添加'" type="primary" @click="dialogCli(2)">确 定</el-button>
+                    <el-button @click="checkexa = false">取 消</el-button> -->
+              </div>
+              
+            </el-form-item>
+          </el-form>
+        </div>
+      </el-dialog>
+        <!-- <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
             :modal-append-to-body="false" :close-on-click-modal="false">
             <div>
 
@@ -218,7 +251,7 @@
                     <el-button @click="checkexa = false">取 消</el-button>
                 </div>
             </div>
-        </el-dialog>
+        </el-dialog> -->
 
         <myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
             v-if="centerDialogVisible"></myMessage>
@@ -231,7 +264,8 @@
     import toolList from '../../../components/toolList'
     import myUpload from '../../../components/upload'
     import uploadDown from '../../../components/uploadDown.vue'
-    import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+    // import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+    import deptTreeOnly from "../../../components/newTree.vue";
 
     export default {
         components: {
@@ -313,7 +347,7 @@
                 demandTypeopt: [],
                 carryChannelopt: [],
                 checkexa: false,
-                treeListonly: {},
+                treeListonly: [],
                 defaultList: [],
                 closeList: false,
                 depttype: 0,
@@ -362,6 +396,17 @@
             }
         },
         methods: {
+             checkProcessUser() {
+                let _this = this;
+                if (_this.treeListonly.length > 1) {
+                    _this.$message({
+                    message: "只能选择一个人",
+                    type: "error",
+                    });
+                } else {
+                    _this.dialogCliadd();
+                }
+                },
             //搜索数据
             searchInfo(v) {
                 this.params = {};
@@ -380,6 +425,25 @@
             },
             treeCheckonly(v) {
                 this.treeListonly = v;
+                console.log(v);
+                this.treeListonly.leaderAuditName = v[0].label;
+                this.treeListonly.leaderAuditNo = v[0].key;
+                // var val = {...v};
+                // console.log(val);
+                
+
+                //  let newArr=v.map(function (currentValue, index, ar) {
+                //     console.log(currentValue);//遍历打印1,2,3
+                //     // console.log(index);//遍历打印0,1,2
+                //     console.log(ar);//遍历打印三次[1, 2, 3]
+                //     // console.log(currentValue.key);
+                   
+                // //    this.treeListonly.leaderAuditName = currentValue.label;
+                // },)
+                // this.treeListonly.leaderAuditNo = newArr.currentValue.key;
+                // console.log(this.currentValue.key);
+
+
             },
             choline(v, n) {
                 if (v == 1) {
@@ -595,6 +659,7 @@
                     }
                     this.submitInfo("/bpm/api/submitTask", params);
                 } else if (v === 2) {
+                    console.log(222222)
                     let param = {
                         dealType: '0',
                         dealTypeDesc: '提交',
@@ -684,6 +749,7 @@
             },
             //添加
             dialogCliadd(v) {
+                console.log(11111)
                 let _this = this;
                 let info = {};
                 info.params = {};
@@ -710,7 +776,7 @@
                         return
                     }
                 }
-
+                console.log(123);
                 for (let i = 0; i < this.options.length; i++) {
                     if (this.terminal == this.options[i].procId) {
                         info.procName = this.options[i].procName;
@@ -782,6 +848,7 @@
                     data: {},
                 }).then((res) => {
                     this.options = res.data.data;
+                    console.log(res.data.data);
                 });
             },
             closeMessage(v) {
@@ -870,6 +937,9 @@
     }
 </script>
 <style scoped lang="scss">
+    ::v-deep .el-dialog .flex-box{
+        height: 400px;
+    }
     .onetab {
         margin-bottom: 20px;
         padding: 0 20px;

+ 62 - 3
src/pages/main/integral/index.vue

@@ -150,7 +150,43 @@
                 </div>
             </div>
         </el-dialog>
-        <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
+        <el-dialog
+        title="选择审批人"
+        :visible.sync="checkexa"
+        width="100%"
+        style="height: 100%"
+        :fullscreen="true"
+        :destroy-on-close="true"
+        :modal-append-to-body="false"
+        :close-on-click-modal="false"
+      >
+        <div style="height: 100%">
+          <el-form :model="infolist" ref="infolist" style="height: 100%">
+            <el-form-item  style="height: 100%" >
+             
+              <deptTreeOnly
+                @treeCheck="treeCheckonly"
+                :defaultList="defaultList"
+                :type="depttype"
+                :closeList="closeList"
+              ></deptTreeOnly>
+              <div style="text-align: center; margin-top: 30px">
+                <el-button type="primary" @click="checkProcessUser()"
+                  >确 定</el-button
+                >
+				<!-- <el-button type="primary" @click="dialogCliadd" v-if="!visionchonly">确 定</el-button>
+        			<el-button type="primary" @click="dialogCli(2)" v-if="visionchonly">确 定</el-button> -->
+                <el-button @click="checkexa = false">取 消</el-button>
+                <!-- <el-button type="primary" @click="dialogCliadd" v-if="vision != '审批'">确 定</el-button>
+                    <el-button type="primary" @click="dialogCli(2)" v-if="vision == '审批'">确 定</el-button>
+                <el-button @click="checkexa = false">取 消</el-button> -->
+              </div>
+             
+            </el-form-item>
+          </el-form>
+        </div>
+      </el-dialog>
+        <!-- <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
             :modal-append-to-body="false" :close-on-click-modal="false">
             <div>
 
@@ -173,7 +209,7 @@
                     <el-button @click="checkexa = false">取 消</el-button>
                 </div>
             </div>
-        </el-dialog>
+        </el-dialog> -->
 
         <myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
             v-if="centerDialogVisible"></myMessage>
@@ -186,7 +222,8 @@
     import toolList from '../../../components/toolList'
     import myUpload from '../../../components/upload'
     import uploadDown from '../../../components/uploadDown.vue'
-    import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+    // import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+    import deptTreeOnly from "../../../components/newTree.vue";
 
     export default {
         components: {
@@ -276,12 +313,25 @@
             }
         },
         methods: {
+            checkProcessUser() {
+                let _this = this;
+                if (_this.treeListonly.length > 1) {
+                    _this.$message({
+                    message: "只能选择一个人",
+                    type: "error",
+                    });
+                } else {
+                    _this.dialogCliadd();
+                }
+                },
             deletes() {
                 this.treeListonly = {};
                 this.closeList = !this.closeList;
             },
             treeCheckonly(v) {
                 this.treeListonly = v;
+                this.treeListonly.leaderAuditName = v[0].label;
+                this.treeListonly.leaderAuditNo = v[0].key;
             },
             choline(v, n) {
                 if (v == 1) {
@@ -670,6 +720,15 @@
     }
 </script>
 <style scoped lang="scss">
+    ::v-deep .el-dialog__body {
+        max-height: calc(100vh - 70px) !important;
+        min-height: 100px;
+        height: 100%;
+        overflow-y: hidden;
+        }
+    ::v-deep .el-dialog .flex-box{
+        height: 400px;
+    }
     .onetab {
         margin-bottom: 20px;
         padding: 0 20px;

+ 2 - 2
src/pages/main/iptv/uploadDown.vue

@@ -41,8 +41,8 @@
                 }
             },
             uploadsee(v) {
-                let url = encodeURIComponent(v.callPath);
-                this.srcsc = 'http://114.215.71.182:8012/onlinePreview?url=' + url;
+                let url = encodeURIComponent(Base64.encode(v.callPath));
+            this.srcsc = 'http://10.230.15.228:8012/onlinePreview?url=' + url;
                 this.ifrshow=true;
                 // window.open('http://114.215.71.182:8012/onlinePreview?url=' + url);
             },

+ 138 - 208
src/pages/main/leader/components/deptThree.vue

@@ -1,219 +1,149 @@
 <template>
-  <div class="treebox" v-loading="loading" style="height: 30rem">
-      <el-checkbox-group v-model="userList">
-          <div v-for="(item,index) in treeList" :key="index">
-              <el-checkbox :label="item" @change="checkChange(item)">{{item.loginNameStr}}</el-checkbox> </div>
-      </el-checkbox-group>
-    <!-- <el-input placeholder="输入关键字进行过滤" v-model="filterText"></el-input> -->
-<!--    <el-tree-->
-<!--      :highlight-current="true"-->
-<!--      :check-strictly="true"-->
-<!--      ref="tree"-->
-<!--      @check-change="handleCheckChange"-->
-<!--      :data="treeList"-->
-<!--      node-key="id"-->
-<!--      :default-checked-keys="defaultListc"-->
-<!--      :default-expanded-keys="defaultListc"-->
-<!--      @node-click="handleNodeClick"-->
-<!--      :filter-node-method="filterNode"-->
-<!--    >-->
-<!--      <span class="custom-tree-node" slot-scope="{ node }" @click="cs(node)">-->
-<!--        <em-->
-<!--          style="display: inline-block; width: 20px"-->
-<!--          v-if="node.data.haveUserFlag == 'N' && node.data.children.length == 0"-->
-<!--        ></em>-->
-<!--        <i-->
-<!--          class="el-icon-caret-right"-->
-<!--          v-if="node.data.haveUserFlag == 'Y' && node.data.children.length == 0"-->
-<!--        ></i>-->
-<!--        <el-checkbox-->
-<!--          style="margin-right: 10px"-->
-<!--          v-model="node.checked"-->
-<!--          v-if="node.data.type == 1"-->
-<!--        ></el-checkbox>-->
-<!--        <span>{{ node.label }}</span>-->
-<!--      </span>-->
-<!--    </el-tree>-->
-  </div>
+    <div class="treebox" v-loading="loading">
+        <!-- <el-input placeholder="输入关键字进行过滤" v-model="filterText"></el-input> -->
+        <el-tree :highlight-current="true" :check-strictly="true" ref="tree" @check-change="handleCheckChange"
+            :data="treeList" node-key="id" :default-checked-keys="defaultListc" :default-expanded-keys="defaultListc"
+            @node-click="handleNodeClick" @node-expand="handleNodeClick" >
+            <span class="custom-tree-node" slot-scope="{ node, data }" @click="cs(node)">
+                <em style="display: inline-block;width: 20px;" v-if="node.data.haveUserFlag == 'N'&& node.data.children.length == 0"></em>
+                <i class="el-icon-caret-right" v-if="node.data.haveUserFlag == 'Y' && node.data.children.length == 0"></i>
+                <el-checkbox style="margin-right: 10px" v-model="node.checked" v-if="node.data.type == 1"></el-checkbox>
+                <span>{{ node.label }}</span>
+            </span>
+        </el-tree>
+    </div>
 </template>
 
 <script>
-export default {
-    props: ["defaultList", "type", "closeList", "treeList"],
-    data() {
-        return {
-            userList:[],
-            // treeList: [],
-            opt: [],
-            defaultProps: {
-                children: "children",
-                label: "label",
+    export default {
+        props: ["defaultList", "type", "closeList","treeList"],
+        data() {
+            return {
+                treeList: [],
+                opt: [],
+                defaultProps: {
+                    children: "children",
+                    label: "label",
+                },
+                defaultListc: [],
+                loading:false,
+                filterText: '',
+            };
+        },
+        methods: {
+            filterNode(value, data) {
+                if (!value) return true;
+                return data.label.indexOf(value) !== -1;
+            },
+            cs(v){
+                // console.log(v)
+            },
+            // getTree(v) {
+            //     this.loading = true;
+            //     this.$http({
+            //         url: "/sysmgr/csysdept/queryAllList",
+            //         method: "post",
+            //         headers: {
+            //             "Content-Type": "application/json",
+            //         },
+            //         data: {
+            //             parentorgid: v,
+            //         },
+            //     }).then((res) => {
+            //         this.treeList = res.data;
+            //         this.loading = false;
+            //     });
+            // },
+            handleCheckChange(v) {
+                let opt = [];
+                let list = this.$refs.tree.getCheckedNodes();
+                for (let i = 0; i < list.length; i++) {
+                    if (list[i].type == 1) {
+                        opt.push({
+                            receiveNo: list[i].loginNoStr,
+                            receiveName: list[i].label,
+                            deptName: list[i].displayname,
+                            deptCode: list[i].groupId,
+                            id: list[i].id,
+                            type: list[i].type,
+                            label: list[i].label,
+                        });
+                    }
+                }
+                this.$emit("treeCheck", opt);
+            },
+            handleNodeClick(v) {
+                let s = false;
+                if (v.children && v.children.length == 0) {
+                    s = true;
+                }
+                if (v.type) {
+                    return;
+                }
+                if (
+                    v.children &&
+                    v.children.length > 0 &&
+                    v.children[v.children.length - 1].type == 1
+                ) {
+                    return;
+                }
+                this.$http({
+                    url: "/sysmgr/sysuserinfo/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        groupId: v.o,
+                    },
+                }).then((res) => {
+                    res.data.forEach((item) => {
+                        v.children.push({
+                            id: item.id,
+                            label: item.loginNameStr,
+                            type: 1,
+                            displayname: v.displayname,
+                            groupId: item.groupId,
+                            loginNoStr: item.loginNoStr,
+                        });
+                    });
+                });
+                for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
+                    if (s && v.o == this.$refs.tree.store._getAllNodes()[i].data.o) {
+                        this.$refs.tree.store._getAllNodes()[i].expanded = true;
+                        return;
+                    }
+                }
             },
-            defaultListc: [],
-            loading: false,
-            filterText: "",
-            list:[]
-        };
-    },
-    methods:{
-        checkChange(e){
-  
-  
-            // console.log(this.userList)
-            // let newList = []
-            // this.userList.map((item) =>{
-            //     let array =    {
-            //         userid:item,
-            //         taskid:e.id_,
-            //         nextid:e.id
-            //     }
-            //     newList.push(array)
-            //     // newList.map((items,i) =>{
-            //     //     if(item !== items.userid){
-            //     //         newList.splice(i,1)
-            //     //     }
-            //     //         })
-            //
-            // })
-            // this.list = newList
-            // this.userList.map((item) =>{
-            //     newList.map((items,i) =>{
-            //         if(item !==items.id){
-            //             newList.splice(i,1)
-            //         }
-            //     })
-            // })
-            // console.log(newList)
-            this.$emit('changeTree',this.userList)
-            this.$emit('changeUserName',e)
-
-
         },
-    }
-}
-    // filterNode(value, data) {
-    //   if (!value) return true;
-    //   return data.label.indexOf(value) !== -1;
-    // },
-    // cs(v) {
-    //   // console.log(v)
-    // },
-    // getTree(v) {
-    //     this.loading = true;
-    //     this.$http({
-    //         url: "/sysmgr/csysdept/queryAllList",
-    //         method: "post",
-    //         headers: {
-    //             "Content-Type": "application/json",
-    //         },
-    //         data: {
-    //             parentorgid: '00440089000000000000',
-    //         },
-    //     }).then((res) => {
-    //         console.log(res);
-    //         // this.treeList = res.data;
-    //         // this.loading = false;
-    //     });
-    // },
-    // handleCheckChange(v) {
-    //     let opt = [];
-    //     let list = this.$refs.tree.getCheckedNodes();
-    //     for (let i = 0; i < list.length; i++) {
-    //         if (list[i].type == 1) {
-    //             opt.push({
-    //                 receiveNo: list[i].loginNoStr,
-    //                 receiveName: list[i].label,
-    //                 deptName: list[i].displayname,
-    //                 deptCode: list[i].groupId,
-    //                 id: list[i].id,
-    //                 type: list[i].type,
-    //                 label: list[i].label,
-    //             });
-    //         }
-    //     }
-    //     this.$emit("treeCheck", opt);
-    // },
-  //   handleNodeClick(v) {
-  //     console.log(v);
-  //     let s = false;
-  //     if (v.children && v.children.length == 0) {
-  //       s = true;
-  //     }
-  //     if (v.type) {
-  //       return;
-  //     }
-  //     if (
-  //       v.children &&
-  //       v.children.length > 0 &&
-  //       v.children[v.children.length - 1].type == 1
-  //     ) {
-  //       return;
-  //     }
-  //     this.$http({
-  //       url: "/sysmgr/sysuserinfo/queryList",
-  //       method: "post",
-  //       headers: {
-  //         "Content-Type": "application/json",
-  //       },
-  //       data: {
-  //         groupId: v.o,
-  //       },
-  //     }).then((res) => {
-  //       res.data.forEach((item) => {
-  //         v.children.push({
-  //           id: item.id,
-  //           label: item.loginNameStr,
-  //           type: 1,
-  //           displayname: v.displayname,
-  //           groupId: item.groupId,
-  //           loginNoStr: item.loginNoStr,
-  //         });
-  //       });
-  //     });
-  //     for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
-  //       if (s && v.o == this.$refs.tree.store._getAllNodes()[i].data.o) {
-  //         this.$refs.tree.store._getAllNodes()[i].expanded = true;
-  //         return;
-  //       }
-  //     }
-  //   },
-  // },
-//   created() {
-//     console.log(this.treeList);
-//     // this.getTree();
-//     this.defaultListc = this.defaultList;
-//   },
-//   watch: {
-//     filterText(val) {
-//       this.$refs.tree.filter(val);
-//     },
-//     type() {
-//       this.defaultListc = this.defaultList;
-//       this.$forceUpdate();
-//     },
-//     defaultList() {
-//       this.$forceUpdate();
-//     },
-//     closeList() {
-//       this.$refs.tree.setCheckedNodes(this.closeList);
-//     },
-//   },
-// };
+        created() {
+            // this.getTree();
+            this.defaultListc = this.defaultList;
+        },
+        watch: {
+            filterText(val) {
+                this.$refs.tree.filter(val);
+            },
+            type() {
+                this.defaultListc = this.defaultList;
+                this.$forceUpdate();
+            },
+            defaultList() {
+                this.$forceUpdate();
+            },
+            closeList() {
+                this.$refs.tree.setCheckedNodes(this.closeList);
+            },
+        },
+    };
 </script>
 
 <style scoped lang="scss">
-.el-icon-caret-right {
-  color: #ccc;
-  margin: 0 5px;
-}
-.treebox {
-  border: 1px solid #ddd;
-}
-    ::v-deep .el-checkbox-group{
-        display: flex;
-        flex-direction: column;
-        align-items: baseline;
-        /* font-size: 38px; */
-        margin-left: 20px;
+    .el-icon-caret-right{
+        color: #ccc;
+        margin:0 5px;
+    }
+    .treebox {
+        border: 1px solid #ddd;
     }
 </style>

+ 21 - 29
src/pages/main/leader/components/export.vue

@@ -2,21 +2,18 @@
   <div class="flex-count">
     <div class="flex-num">
       <div class="time-title">已选({{ num }})项</div>
-      <div v-if="!approvalStatus" class="flex-time">
+      <div v-if="exportStatusList" class="flex-time">
         <div class="time-title">时间:</div>
- <el-date-picker
-      v-model="seachList"
-      type="daterange"
-      start-placeholder="开始日期"
-      end-placeholder="结束日期"
-      value-format="yyyy-MM-dd"
-      :default-time="['00:00:00', '23:59:59']">
-      size="small"
-    </el-date-picker>
-        <el-button
-          type="primary"
-          @click="clickSeach"
-          plain
+        <el-date-picker
+          v-model="seachList"
+          type="daterange"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          value-format="yyyy-MM-dd"
+          :default-time="['00:00:00', '23:59:59']"
+        >
+        </el-date-picker>
+        <el-button type="primary" size="small" @click="clickSeach" plain
           >搜索</el-button
         >
       </div>
@@ -43,14 +40,14 @@ export default {
       type: Number,
       default: () => [],
     },
-      exportStatusList: {
-          type:Boolean,
-          default: () => [],
-      },
+    exportStatusList: {
+      type: Boolean,
+      default: () => [],
+    },
   },
   data() {
     return {
-      seachList:'',
+      seachList: "",
       approvalStatus: true,
       exportStatus: true,
     };
@@ -65,18 +62,13 @@ export default {
       }
     },
     clickApproval() {
-        this.$emit('clickApproval',true)
-
+      this.$emit("clickApproval", true);
+    },
+    clickSeach() {
+      this.$emit("seachExportList", this.seachList);
     },
-    clickSeach(){
-
-
-        this.$emit('seachExportList',this.seachList)
-    }
-  },
-  created() {
-
   },
+  created() {},
 };
 </script>
 

+ 124 - 104
src/pages/main/leader/components/form.vue

@@ -1,98 +1,105 @@
 <template>
-  <div>
-    <slot :name="list.name"></slot>
-    <el-table
-      ref="table"
-      style="width: 100%"
-      :data="list.data"
-      :height="list.height + 'px'"
-      :max-height="list.height + 'px'"
-      @row-click="getRowData"
-      @selection-change="selectionChange"
-      :cell-style="columnbackgroundStyle"
-      empty-text="暂无数据"
-      @cell-click="getRowList"
-    >
-      <!-- 是否多选 -->
-      <el-table-column
-        v-if="list.isSelection"
-        :selecttable="list"
-        type="selection"
-        :width="100"
-        align="center"
-      />
+  <div class="container">
+    <div class="table">
+      <slot :name="list.name"></slot>
+      <el-table
+        ref="table"
+        style="width: 100%"
+        :data="list.data"
+        @row-click="getRowData"
+        @selection-change="selectionChange"
+        :cell-style="columnbackgroundStyle"
+        empty-text="暂无数据"
+        @cell-click="getRowList"
+        :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
+      >
+        <!-- 是否多选 -->
+        <el-table-column
+          v-if="list.isSelection"
+          :selecttable="list"
+          type="selection"
+          :width="100"
+          align="center"
+        />
 
-      <!-- 是否需要序号 -->
-      <el-table-column
-        v-if="list.isIndex"
-        type="index"
-        label="序号"
-        width="55"
-        align="center"
-      />
-      <template v-for="item in list.titledata">
+        <!-- 是否需要序号 -->
         <el-table-column
-          :key="item.prop"
-          :prop="item.prop"
-          :label="item.label"
+          v-if="list.isIndex"
+          type="index"
+          label="序号"
+          width="55"
           align="center"
-          show-overflow-tooltip
-          :width="item.width || 100"
         />
-      </template>
-      <!-- 操作列 -->
-      <el-table-column
-        v-if="list.isOperation"
-        v-bind="list.data && list.data.length ? { fixed: 'right' } : null"
-        style="margin-right: 20px"
-        class-name="handle-td"
-        label-class-name="tc"
-        :label="list.operation.label"
-        align="center"
-      >
-        <!-- UI统一一排放3个,4个以上出现更多 -->
-        <template slot-scope="scope">
-          <!-- 三个一排的情况,去掉隐藏的按钮后的长度 -->
-          <template v-if="list.operation.data.length > 0">
-            <div class="btn">
-              <div v-for="item in list.operation.data" :key="item.label">
-                <template v-if="item.type !== 'icon'">
-                  <el-button
-                    v-bind="item"
-                    :type="item.type ? item.type : ''"
-                    size="mini"
-                    @click.native.prevent="
-                      item.handleRow(scope.$index, scope.row, item.label)
-                    "
-                  >
-                    {{ item.label }}
-                  </el-button>
-                </template>
-                <template v-else>
-                  <i
-                    :class="[icon, item.icon]"
-                    v-bind="item"
-                    @click="item.handleRow(scope.$index, scope.row, item.label)"
-                  />
-                </template>
+        <template v-for="item in list.titledata">
+          <el-table-column
+            :key="item.prop"
+            :prop="item.prop"
+            :label="item.label"
+            align="center"
+            show-overflow-tooltip
+            :width="item.width || 100"
+          />
+        </template>
+        <!-- 操作列 -->
+        <el-table-column
+          v-if="list.isOperation"
+          v-bind="list.data && list.data.length ? { fixed: 'right' } : null"
+          style="margin-right: 20px"
+          class-name="handle-td"
+          label-class-name="tc"
+          :label="list.operation.label"
+          align="center"
+        >
+          <!-- UI统一一排放3个,4个以上出现更多 -->
+          <template slot-scope="scope">
+            <!-- 三个一排的情况,去掉隐藏的按钮后的长度 -->
+            <template v-if="list.operation.data.length > 0">
+              <div class="btn">
+                <div v-for="item in list.operation.data" :key="item.label">
+                  <template v-if="item.type !== 'icon'">
+                    <el-button
+                      v-bind="item"
+                      :type="item.type ? item.type : ''"
+                      size="mini"
+                      @click.native.prevent="
+                        item.handleRow(scope.$index, scope.row, item.label)
+                      "
+                    >
+                      {{ item.label }}
+                    </el-button>
+                  </template>
+                  <template v-else>
+                    <i
+                      :class="[icon, item.icon]"
+                      v-bind="item"
+                      @click="
+                        item.handleRow(scope.$index, scope.row, item.label)
+                      "
+                    />
+                  </template>
+                </div>
               </div>
-            </div>
+            </template>
           </template>
-        </template>
-      </el-table-column>
-    </el-table>
-    <div class="page">
-      <el-pagination
-        style="display: flex; flex-direction: row-reverse"
-        v-if="list.pageData.total > 0"
-        :current-page.sync="page"
-        :page-sizes="list.pageData.pageSizes ? list.pageData.pageSizes : [10]"
-        :page-size="list.pageData.pageSize"
-        layout="total, sizes, prev, pager, next, jumper"
-        :total="list.pageData.total"
-        @size-change="handleSizeChange"
-        @current-change="handleCurrentChange"
-      />
+        </el-table-column>
+      </el-table>
+      <div class="page">
+        <el-pagination
+          style="
+            display: flex;
+            flex-direction: row-reverse;
+            background-color: #fff;
+          "
+          v-if="list.pageData.total > 0"
+          :current-page.sync="page"
+          :page-sizes="list.pageData.pageSizes ? list.pageData.pageSizes : [10]"
+          :page-size="list.pageData.pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="list.pageData.total"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+        />
+      </div>
     </div>
   </div>
 </template>
@@ -113,26 +120,19 @@ export default {
   },
   created() {
     console.log(this.list);
-    // this.columnbackgroundStyle()
-  },
-  mounted() {
-     console.log(this.list);
   },
+  mounted() {},
   methods: {
     columnbackgroundStyle({ row, column, rowIndex, columnIndex }) {
-      // console.log(row);
-      // console.log(column);
-      // console.log(rowIndex);
-      // console.log(columnIndex);
-      if(column.type == 'default'){
-        if(column.label === '需求名称'){
-          return 'color:#0682CD;'
+      if (column.type == "default") {
+        if (column.label === "需求名称") {
+          return "color:#0682CD;";
         }
       }
-    //   if (columnIndex == 1) {
-    // 	//让下标为1的列数背景颜色显示为红色(颜色自定义根据大家需求来)
-    //     return 'color:#0682CD;'
-    // }
+      //   if (columnIndex == 1) {
+      // 	//让下标为1的列数背景颜色显示为红色(颜色自定义根据大家需求来)
+      //     return 'color:#0682CD;'
+      // }
     },
     selectionChange(val) {
       //多选数字回调
@@ -161,5 +161,25 @@ export default {
 };
 </script>
 
-<style>
+<style lang="scss" scoped>
+.btn {
+  display: flex;
+  justify-content: center;
+}
+.container {
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+  height: 100%;
+  overflow: hidden;
+  margin-bottom: 4%;
+  .table {
+    flex: 1;
+    position: relative;
+    ::v-deep.el-table {
+      position: absolute;
+      overflow-y: auto;
+    }
+  }
+}
 </style>

+ 167 - 122
src/pages/main/leader/components/formTable.vue

@@ -6,15 +6,15 @@
         ref="form"
         :model="form"
         :rules="rule"
-        label-width="130px"
-        style="margin-top: 30px"
         :disabled="disabled"
+        label-width="200px"
       >
         <div class="flex-header">
           <el-form-item
-            style="width: 40%; margin-right: 10%"
+            style="width: 44%"
             label="需求名称:"
             prop="needName"
+            label-width="140px"
           >
             <el-input v-model="form.needName"></el-input>
           </el-form-item>
@@ -47,11 +47,7 @@
           </el-form-item>
         </div>
         <div class="flex-input-tare flex-header">
-          <el-form-item
-            label="需求背景及目的"
-            label-width="120px"
-            prop="needBackdrop"
-          >
+          <el-form-item label="需求背景及目的" prop="needBackdrop">
             <el-input
               type="textarea"
               maxlength="300"
@@ -61,7 +57,7 @@
           </el-form-item>
         </div>
         <div class="flex-input-tare flex-header">
-          <el-form-item label="需求内容" label-width="120px" prop="needContent">
+          <el-form-item label="需求内容" prop="needContent">
             <el-input
               type="textarea"
               maxlength="300"
@@ -79,8 +75,8 @@
           </el-form-item>
           <el-form-item
             label="是否数智化需求:"
-            label-width="130px"
             prop="isDigitization"
+            label-width="200px"
           >
             <el-select v-model="form.isDigitization" placeholder="请选择">
               <el-option label="是" value="是"></el-option>
@@ -89,15 +85,15 @@
           </el-form-item>
           <el-form-item
             label="是否七大工程需求:"
-            label-width="140px"
             prop="isSevenProject"
+            label-width="220px"
           >
             <el-select v-model="form.isSevenProject" placeholder="请选择">
               <el-option label="是" value="是"></el-option>
               <el-option label="否" value="否"></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="是否需求目录框架需求:" label-width="160px">
+          <el-form-item label="是否需求目录框架需求:" label-width="280px">
             <el-select v-model="form.isMarketMeeting" placeholder="请选择">
               <el-option label="是" value="是"></el-option>
               <el-option label="否" value="否"></el-option>
@@ -183,15 +179,15 @@
           </el-form-item>
         </div>
         <div class="flex-header">
-          <el-form-item label="功能开发承载平台:" label-width="130px">
+          <el-form-item label="功能开发承载平台:" label-width="200px">
             <el-input v-model="form.functionBearPlatform"></el-input>
           </el-form-item>
-          <el-form-item label="功能展示应用平台:" label-width="130px">
+          <el-form-item label="功能展示应用平台:" label-width="200px">
             <el-input v-model="form.functionShowPlatform"></el-input>
           </el-form-item>
         </div>
         <div class="flex-header">
-          <el-form-item label="需求类型:">
+          <el-form-item label="需求类型:" prop="needType">
             <el-select
               v-model="form.needType"
               placeholder="请选择"
@@ -218,6 +214,7 @@
               :disabled="timeStatus"
               placeholder="选择日期"
               v-model="form.dueTime"
+              :picker-options="pickerOptions"
               value-format="yyyy-MM-dd"
               style="width: 100%"
             ></el-date-picker>
@@ -228,7 +225,7 @@
             功能开发类,数智类填写
           </div>
           <div class="flex-header">
-            <el-form-item label="是否涉及敏感信息:" label-width="130px">
+            <el-form-item label="是否涉及敏感信息:" label-width="200px">
               <el-select v-model="form.isSensitiveData" placeholder="请选择">
                 <el-option label="是" value="是"></el-option>
                 <el-option label="否" value="否"></el-option>
@@ -242,27 +239,28 @@
             </el-form-item>
           </div>
           <div class="flex-header">
-            <el-form-item label="上线配合测试地市:" label-width="130px">
+            <el-form-item label="上线配合测试地市:" label-width="200px">
               <el-input v-model="form.onlineTestCity"></el-input>
             </el-form-item>
           </div>
           <div class="flex-header">
-            <el-form-item label="功能完成时间:" label-width="130px">
+            <el-form-item label="功能完成时间:" label-width="200px">
               <el-date-picker
                 type="date"
                 placeholder="选择日期"
                 v-model="form.doneTime"
+                :picker-options="pickerOptions"
                 value-format="yyyy-MM-dd"
                 style="width: 100%"
               ></el-date-picker>
             </el-form-item>
-            <el-form-item label="是否需要模糊化:" label-width="120px">
+            <el-form-item label="是否需要模糊化:" label-width="200px">
               <el-select v-model="form.isVaguev" placeholder="请选择">
                 <el-option label="是" value="是"></el-option>
                 <el-option label="否" value="否"></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item label="是否需要纳入金库模式:" label-width="160px">
+            <el-form-item label="是否需要纳入金库模式:" label-width="280px">
               <el-select v-model="form.isVaultMode" placeholder="请选择">
                 <el-option label="是" value="是"></el-option>
                 <el-option label="否" value="否"></el-option>
@@ -303,8 +301,15 @@
             </el-form-item>
           </div>
         </div>
-        <div class="flex-header" style="display: flex; flex-direction: column">
-          <el-form-item label="附件:" prop="mkFileShareAttachList">
+        <div
+          class="flex-header flex-upload"
+          style="display: flex; flex-direction: column"
+        >
+          <el-form-item
+            label="附件:"
+            prop="mkFileShareAttachList"
+            label-width="120px"
+          >
             <my-upload
               ref="upload"
               @uploadBack="uploadBack"
@@ -312,12 +317,36 @@
               @clickDownload="download"
               :fileInfo="fileInfo"
               :fileList="list.mkFileShareAttachList"
-              style="width: 30% !important"
             ></my-upload>
           </el-form-item>
-          <div @click="downExcel" class="el-upload__tip" slot="tip">
-            备注内容:PPT(非市场部需求以及市场部非框架内需求需要通过市场决策会决议,请上传ppt)、《业务需求模板.xlsx》《后评估模板.xlsx》
-            《敏感信息范围说明.xlsx》填写并上传。
+          <div class="el-upload__tip" slot="tip">
+            备注内容:PPT(非市场部需求以及市场部非框架内需求需要通过市场决策会决议,请上传ppt。
+          </div>
+          <div class="el-upload__tip" slot="tip">
+            <a
+              href="./static/file/a.xlsx"
+              target="_blank"
+              download="后评估模板.xlsx"
+              >《后评估模板.xlsx》、</a
+            >
+            <a
+              target="_blank"
+              href="./static/file/c.xlsx"
+              download="业务需求模板.xlsx"
+              >《业务需求模板.xlsx》、</a
+            >
+            <a
+              target="_blank"
+              href="./static/file/b.xlsx"
+              download="敏感信息范围说明.xlsx"
+              >《敏感信息范围说明.xlsx》、</a
+            >
+            <a
+              target="_blank"
+              href="./static/file/d.pptx"
+              download="关于系统开发需求的汇报(第十期).pptx"
+              >《关于系统开发需求的汇报(第十期).pptx》</a
+            >
           </div>
         </div>
         <!-- 处理人意见模块 -->
@@ -346,6 +375,11 @@ export default {
         url: "/market/waf/upload",
         fileList: [],
       },
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now() - 8.64e7;
+        },
+      },
       oneList: [],
       childrenList: [],
       twoList: [],
@@ -478,6 +512,7 @@ export default {
         needSource: [
           { required: true, message: "请输入需求来源", trigger: "change" },
         ],
+
         needBackdrop: [
           { required: true, message: "请输入需求背景", trigger: "blur" },
           {
@@ -502,41 +537,14 @@ export default {
         isDigitization: [
           { required: true, message: "请选择", trigger: "change" },
         ],
+        needType: [
+          { required: true, message: "请选择需求类型", trigger: "change" },
+        ],
         isSevenProject: [
           { required: true, message: "请选择七大工程需求", trigger: "change" },
         ],
-        needName: [
-          { required: true, message: "请输入需求名称", trigger: "blur" },
-        ],
-        needName: [
-          { required: true, message: "请输入需求名称", trigger: "blur" },
-        ],
-        needName: [
-          { required: true, message: "请输入需求名称", trigger: "blur" },
-        ],
-        needName: [
-          { required: true, message: "请输入需求名称", trigger: "blur" },
-        ],
-        needName: [
-          { required: true, message: "请输入需求名称", trigger: "blur" },
-        ],
-        needName: [
-          { required: true, message: "请输入需求名称", trigger: "blur" },
-        ],
-        needName: [
-          { required: true, message: "请输入需求名称", trigger: "blur" },
-        ],
-        needName: [
-          { required: true, message: "请输入需求名称", trigger: "blur" },
-        ],
-        needName: [
-          { required: true, message: "请输入需求名称", trigger: "blur" },
-        ],
-        needName: [
-          { required: true, message: "请输入需求名称", trigger: "blur" },
-        ],
       },
-      copyRule:{},
+      copyRule: {},
       isList: [],
     };
   },
@@ -616,7 +624,7 @@ export default {
       handler(newVal, oldVal) {
         if (newVal === "是") {
           this.rule = { ...this.rule, ...this.rules };
-        }else{
+        } else {
           this.rule = this.copyRule;
         }
         console.log(this.rule);
@@ -799,66 +807,69 @@ export default {
     },
   },
   methods: {
-    // validateFiles(rule, value, callback) {
-    //   let num = 3;
+    disableDate(time) {
+      return time.getTime() < Date.now() - 8.64e7;
+    },
+    validateFiles(rule, value, callback) {
+      let num = 3;
 
-    //   let nameList = [
-    //     "业务需求模板.xlsx",
-    //     "后评估模板.xlsx",
-    //     "敏感信息范围说明.xlsx",
-    //   ];
-    //   let files = this.$refs.upload.attList;
-    //   if (
-    //     (this.form.isMarketMeeting !== "是" &&
-    //       this.form.applyDept === "市场经营部") ||
-    //     (this.form.applyDept !== "信息技术中心" &&
-    //       this.form.applyDept !== "市场经营部")
-    //   ) {
-    //     num++;
-    //   }
-    //   if (!files.length || files.length < num) {
-    //     callback(new Error("请上传正确的模板数量!"));
-    //   } else {
-    //     let arrList = [];
-    //     for (let task of nameList) {
-    //       let newList = files.find((item) => {
-    //         return item.name === task;
-    //         // }
-    //       });
-    //       arrList.push(newList);
-    //     }
-    //     files.map((item) => {
-    //       let fileIndex = item.name.lastIndexOf(".");
-    //       let substrName = item.name.substr(fileIndex);
-    //       if (substrName == ".pptx") {
-    //         arrList.push(item);
-    //       }
-    //     });
-    //     if (
-    //       (this.form.isMarketMeeting !== "是" &&
-    //         this.form.applyDept === "市场经营部") ||
-    //       (this.form.applyDept !== "信息技术中心" &&
-    //         this.form.applyDept !== "市场经营部")
-    //     ) {
-    //       let pptList = arrList.filter((item) => {
-    //         let fileIndex = item.name.lastIndexOf(".");
-    //         let substrName = item.name.substr(fileIndex);
-    //         return substrName == ".pptx";
-    //       });
-    //       if (!pptList.length) {
-    //         callback(new Error("请上传ppt!"));
-    //       }
-    //     }
-    //     arrList.map((item) => {
-    //       //excel命名错误
-    //       if (item === undefined) {
-    //         callback(new Error("请按备注中模板名称命名!"));
-    //       }
-    //     });
-    //   }
+      let nameList = [
+        "业务需求模板.xlsx",
+        "后评估模板.xlsx",
+        "敏感信息范围说明.xlsx",
+      ];
+      let files = this.$refs.upload.attList;
+      // if (
+      //   (this.form.isMarketMeeting !== "是" &&
+      //     this.form.applyDept === "市场经营部") ||
+      //   (this.form.applyDept !== "信息技术中心" &&
+      //     this.form.applyDept !== "市场经营部")
+      // ) {
+      //   num++;
+      // }
+      if (!files.length || files.length < num) {
+        callback(new Error("请上传正确的模板数量!"));
+      } else {
+        let arrList = [];
+        for (let task of nameList) {
+          let newList = files.find((item) => {
+            return item.name === task;
+            // }
+          });
+          arrList.push(newList);
+        }
+        // files.map((item) => {
+        //   let fileIndex = item.name.lastIndexOf(".");
+        //   let substrName = item.name.substr(fileIndex);
+        //   if (substrName == ".pptx") {
+        //     arrList.push(item);
+        //   }
+        // });
+        // if (
+        //   (this.form.isMarketMeeting !== "是" &&
+        //     this.form.applyDept === "市场经营部") ||
+        //   (this.form.applyDept !== "信息技术中心" &&
+        //     this.form.applyDept !== "市场经营部")
+        // ) {
+        //   let pptList = arrList.filter((item) => {
+        //     let fileIndex = item.name.lastIndexOf(".");
+        //     let substrName = item.name.substr(fileIndex);
+        //     return substrName == ".pptx";
+        //   });
+        //   if (!pptList.length) {
+        //     callback(new Error("请上传ppt!"));
+        //   }
+        // }
+        arrList.map((item) => {
+          //excel命名错误
+          if (item === undefined) {
+            callback(new Error("请按备注中模板名称命名!"));
+          }
+        });
+      }
 
-    //   callback();
-    // },
+      callback();
+    },
     clickLLength(e) {
       if (e !== 0) {
         this.Length = true;
@@ -1032,6 +1043,9 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+a {
+  text-decoration: none;
+}
 ::v-deep .el-upload-list {
   width: 23rem;
 }
@@ -1039,17 +1053,22 @@ export default {
   text-align: center;
   font-size: 24px;
   line-height: 60px;
-  border-bottom: 1px solid #e1e1e1;
+
   font-weight: bold;
 }
 .flex-header {
   margin-top: 20px;
   display: flex;
   //   justify-content: space-between;
-  border-bottom: 1px solid #e1e1e1;
+
   ::v-deep .el-form-item {
     width: 20%;
-    margin-right: 5%;
+    margin-right: 60px;
+  }
+}
+.flex-upload {
+  ::v-deep .el-form-item {
+    width: 100%;
   }
 }
 .flex-input-tare {
@@ -1057,17 +1076,43 @@ export default {
     width: 100%;
     margin-right: 5%;
   }
+  ::v-deep .el-form-item__label {
+    width: 9rem !important;
+  }
 }
 .el-upload__tip {
   color: red;
 }
-::v-deep .el-input--suffix .el-input__inner {
-  width: 119% !important;
-}
+// ::v-deep .el-input--suffix .el-input__inner {
+//   width: 119% !important;
+// }
 ::v-deep .el-input__inner {
   color: black !important;
 }
 ::v-deep .el-textarea.is-disabled .el-textarea__inner {
   color: black !important;
 }
+::v-deep .el-form-item {
+  display: flex;
+}
+::v-deep .el-form-item__label {
+  // width:100%;
+  height: 50px;
+  line-height: 40px !important;
+  width: 130px;
+  font-size: 0.5rem;
+}
+::v-deep .el-form-item__content {
+  width: 100%;
+  margin-left: 0% !important;
+}
+.el-select,
+::v-deep.el-input_inner {
+  width: 100%;
+}
+::v-deep.el-form-item.foldLabel .el-form-item__label {
+  white-space: pre-line; /*换行显示*/
+  height: 10px; /*设置lable高度,input高度一样*/
+  line-height: 30px !important;
+}
 </style>

+ 186 - 0
src/pages/main/leader/components/formTrace.vue

@@ -0,0 +1,186 @@
+<template>
+  <div class="container">
+    <div class="table">
+      <slot :name="list.name"></slot>
+      <el-table
+        ref="table"
+        style="width: 100%"
+        :data="list.data"
+        row-key="id"
+        @row-click="getRowData"
+        @selection-change="selectionChange"
+        :cell-style="columnbackgroundStyle"
+        empty-text="暂无数据"
+        @cell-click="getRowList"
+        :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
+      >
+        <!-- 是否多选 -->
+        <el-table-column
+          v-if="list.isSelection"
+          :selecttable="list"
+          type="selection"
+          :width="100"
+          align="center"
+        />
+
+        <!-- 是否需要序号 -->
+        <el-table-column
+          v-if="list.isIndex"
+          type="index"
+          label="序号"
+          width="55"
+          align="center"
+        />
+        <template v-for="item in list.titledata">
+          <el-table-column
+            :key="item.prop"
+            :prop="item.prop"
+            :label="item.label"
+            align="center"
+            show-overflow-tooltip
+            :width="item.width || 100"
+          />
+        </template>
+        <!-- 操作列 -->
+        <el-table-column
+          v-if="list.isOperation"
+          v-bind="list.data && list.data.length ? { fixed: 'right' } : null"
+          style="margin-right: 20px"
+          class-name="handle-td"
+          label-class-name="tc"
+          :label="list.operation.label"
+          align="center"
+        >
+          <!-- UI统一一排放3个,4个以上出现更多 -->
+          <template slot-scope="scope">
+            <!-- 三个一排的情况,去掉隐藏的按钮后的长度 -->
+            <template v-if="list.operation.data.length > 0">
+              <div class="btn">
+                <div v-for="item in list.operation.data" :key="item.label">
+                  <template v-if="item.type !== 'icon'">
+                    <el-button
+                      v-bind="item"
+                      :type="item.type ? item.type : ''"
+                      size="mini"
+                      @click.native.prevent="
+                        item.handleRow(scope.$index, scope.row, item.label)
+                      "
+                    >
+                      {{ item.label }}
+                    </el-button>
+                  </template>
+                  <template v-else>
+                    <i
+                      :class="[icon, item.icon]"
+                      v-bind="item"
+                      @click="
+                        item.handleRow(scope.$index, scope.row, item.label)
+                      "
+                    />
+                  </template>
+                </div>
+              </div>
+            </template>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="page">
+        <el-pagination
+          style="
+            display: flex;
+            flex-direction: row-reverse;
+            background-color: #fff;
+          "
+          v-if="list.pageData.total > 0"
+          :current-page.sync="page"
+          :page-sizes="list.pageData.pageSizes ? list.pageData.pageSizes : [10]"
+          :page-size="list.pageData.pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="list.pageData.total"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+        />
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      page: 1,
+    };
+  },
+  props: {
+    //  表格数据和表格部分属性的对象
+    // eslint-disable-next-line vue/require-default-prop
+    list: {
+      type: Object,
+    },
+  },
+  created() {
+    console.log(this.list);
+  },
+  mounted() {},
+  methods: {
+    columnbackgroundStyle({ row, column, rowIndex, columnIndex }) {
+      if (column.type == "default") {
+        if (column.label === "需求名称") {
+          return "color:#0682CD;";
+        }
+      }
+      //   if (columnIndex == 1) {
+      // 	//让下标为1的列数背景颜色显示为红色(颜色自定义根据大家需求来)
+      //     return 'color:#0682CD;'
+      // }
+    },
+    selectionChange(val) {
+      //多选数字回调
+      this.$emit("num", val);
+    },
+    handleAdd(name) {
+      this.$emit("toolMsg", name);
+    },
+    handleRow(index, row, lable) {},
+    handleSizeChange(val) {
+      this.$emit("changeSize", val);
+      console.log(`每页 ${val} 条`);
+    },
+    handleCurrentChange(val) {
+      this.$emit("changeNum", val);
+      console.log(`当前页: ${val}`);
+    },
+    // 点击行即可选中
+    getRowData(row) {
+      this.$refs.table.toggleRowSelection(row);
+    },
+    getRowList(row, column, event, cell) {
+      this.$emit("clickDemand", column.label, row);
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.btn {
+  display: flex;
+  justify-content: center;
+}
+.container {
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+  height: 100%;
+  overflow: hidden;
+  margin-bottom: 4%;
+  .table {
+    flex: 1;
+    position: relative;
+    ::v-deep.el-table {
+      position: absolute;
+      overflow-y: auto;
+    }
+  }
+}
+</style>

+ 2 - 3
src/pages/main/leader/components/tabs.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-tabs v-model="activeName" @tab-click="handleClick">
+  <el-tabs v-model="activeName" @tab-click="handleClick" style="width:80%" >
     <!-- <el-tab-pane
     class="flex-tabs"
       v-for="item in tabList"
@@ -37,8 +37,7 @@ export default {
       activeName: "first",
     };
   },
-  created() {
-  },
+  created() {},
   methods: {
     handleClick(tab, event) {
       this.$emit("status", tab._props.name);

+ 266 - 49
src/pages/main/leader/demand/demandHome.vue

@@ -44,6 +44,7 @@
       :before-close="handleClose"
       :modal="false"
       v-if="dialogStatus"
+      style="display: flex; flex-direction: column"
       :destroy-on-close="true"
     >
       <!-- 后期维护 -->
@@ -54,6 +55,7 @@
         <el-button type="primary" v-if="closeStatus" @click="handleClose"
           >关闭</el-button
         >
+
         <el-button
           type="primary"
           v-if="forwardStatus"
@@ -76,7 +78,9 @@
       />
       <div>
         <div class="table-title">流程追踪</div>
-        <Table :list="lables"></Table>
+        <div v-if="abc == true">
+          <Tables :list="lables"></Tables>
+        </div>
       </div>
     </el-dialog>
     <div v-if="destroy">
@@ -90,10 +94,21 @@
         :destroy-on-close="true"
       >
         <Workflow
+          ref="workflow"
           :list="fromList"
+          v-if="isWorkflowStatus == true"
           @beforeClose="beforeClose"
           :requestForm="requestForm"
+          :adminResourceId="adminResourceId"
         />
+        <WorkflowEntrance
+          :list="fromList"
+          v-else
+          :lastManList="lastManList"
+          @beforeClose="beforeClose"
+          :requestForm="requestForm"
+        />
+
         <!-- 后期维护 -->
       </el-dialog>
     </div>
@@ -123,14 +138,15 @@
     </el-dialog> -->
   </div>
 </template>
-
 <script>
 import Workflow from "../../../../components/workflow";
+import WorkflowEntrance from "../../../../components/workflowEntrance";
 import FormTable from "../components/formTable.vue";
 import Seach from "../components/search.vue";
 import Export from "../components/export.vue";
 import Tabs from "../components/tabs.vue";
 import Table from "../components/form.vue";
+import Tables from "../components/formTrace.vue";
 import deptTree from "../components/deptThree.vue";
 import Qs from "qs";
 export default {
@@ -142,13 +158,17 @@ export default {
     FormTable,
     deptTree,
     Workflow,
+    WorkflowEntrance,
+    Tables,
   },
   data() {
     return {
+      UserPermissionsList: [],
+      isWorkflowStatus: true, //默认展示模式组件,为true时展示多人处理组件
       buttonStatus: true,
       copyStatus: false,
       dialogTitle: "",
-      disabled: false,
+      disabled: true,
       destroy: false,
       //分页数据
       totalPage: "1", //默认第一页
@@ -178,9 +198,9 @@ export default {
         processDefinitionKey: "request_form_process",
       },
       requestForm: {
-        // fresourceId: "0d94de8a-0281-11ed-a302-4ae7da54db39", // 本地环境
-        fresourceId: "canvas", // 生产环境
+        fresourceId: "0d94de8a-0281-11ed-a302-4ae7da54db39", // 本地环境
         // fresourceId: "bf79721c-33f3-11ed-ba0b-00505687dcd3", //测试环境
+        // fresourceId:'81455799-600d-11ed-b399-e00084564cce',//生产环境
         processDefinitionKey: "request_form_process",
       },
       treeList: [], //候选人列表
@@ -277,7 +297,6 @@ export default {
       },
       firstTable: {
         name: "first",
-        height: "650",
         titledata: [
           {
             label: "需求名称",
@@ -568,6 +587,7 @@ export default {
                 this.disabled = true;
                 this.buttonStatus = false;
                 this.getReadList(r.copytaskid);
+                this.clickForm(r);
               }, // 自定义事件
             },
           ],
@@ -647,6 +667,7 @@ export default {
           ],
         },
       },
+      abc: false,
       lable: {},
       copyUser: "", //抄送人
       backThree: [],
@@ -655,26 +676,31 @@ export default {
         height: "400",
         titledata: [
           {
+            id: 1,
             label: "环节名称",
             prop: "taskName",
             width: 300,
           },
           {
+            id: 2,
             label: "处理人",
             prop: "assignee",
             width: 300,
           },
           {
+            id: 3,
             label: "到达时间",
             prop: "startTime",
             width: 300,
           },
           {
+            id: 4,
             label: "处理时间",
             prop: "endTime",
             width: 300,
           },
           {
+            id: 5,
             label: "回复意见",
             prop: "content",
             width: 300,
@@ -683,7 +709,7 @@ export default {
         data: [], //内容数据
         loading: true,
         pageData: {
-          total: 10, // 总条数
+          total: 0, // 总条数
           pageSize: 10, // 每页数量
           pageNum: 1, // 页码
         },
@@ -735,9 +761,12 @@ export default {
       clickTaskName: "",
       seachLists: {},
       timeList: {},
+      lastManList: [],
+      adminResourceId: "", //转派多人id
     };
   },
   created() {
+    this.getUserIndex();
     //oa跳转回来显示
     let status = JSON.stringify(this.$route.query) == "{}";
     if (status) {
@@ -757,7 +786,7 @@ export default {
       }
       //待阅
       if (copy == 1) {
-        this.clickTagName = "four"
+        this.clickTagName = "four";
         this.getToBeRead(list, 1);
       }
     }
@@ -765,6 +794,39 @@ export default {
     this.lable = this.firstTable;
   },
   methods: {
+    //是否最后一个人
+    async getLastName() {
+      console.log(this.fromList);
+      let list = {
+        procinstid: this.fromList.processId,
+        taskid: this.fromList.taskId,
+
+        // taskId:e.taskId
+      };
+      let _this = this;
+      let obj = {
+        url: this.$url.formList.getLastName, //流程追踪接口
+        data: list,
+        // status: "form",
+        headers: {
+          "Content-Type": "application/json",
+        },
+      };
+
+      let res = await this.common.httpPost(obj, success);
+      function success(data) {
+        console.log(data);
+        if (data.lastMan == true) {
+          _this.adminResourceId = data.adminResourceId;
+        }
+        _this.destroy = true;
+        _this.handleStatus = true;
+        _this.isWorkflowStatus = data.lastMan == false ? false : true;
+        _this.lastManList = data;
+
+        // console.log(_this.isWorkflowStatus);
+      }
+    },
     //添加面包屑
     setabList(n, p) {
       let params = {
@@ -862,10 +924,10 @@ export default {
         },
         data: this.$refs.formTable.form,
       }).then((res) => {
-        if (res.code === 0) {
-          this.$message.success("转需求管理平台成功!");
+        if (res.data.result === 1) {
+          this.$message.success(res.data.desc);
         } else {
-          this.$message.error("转需求管理平台错误!");
+          this.$message.error(res.data.desc);
         }
       });
     },
@@ -900,10 +962,11 @@ export default {
           this.disabled = true;
           this.startStatus = false;
           this.saveStatus = false;
+          this.forwardStatus = false;
+          this.exportBtnStatus = false;
         }
         if (this.clickTagName === "three") {
           if (res.taskName === "起草") {
-            console.log(res);
             this.startStatus = true;
             this.disabled = false;
             this.saveStatus = true;
@@ -1047,30 +1110,32 @@ export default {
     },
     //选择树的回调
     changeTree(e) {
-      if (e.length > 1) {
-        this.$message.error("只能选择一个人");
-        return;
-      } else {
-        this.backThree = e;
-        if (e[0]) {
-          this.selectUser = e[0].loginNameStr;
-        } else {
-          this.selectUser = "暂无选择";
-        }
-      }
+      console.log(e);
+      // if (e.length > 1) {
+      //   this.$message.error("只能选择一个人");
+      //   return;
+      // } else {
+      //   this.backThree = e;
+      //   if (e[0]) {
+      //     this.selectUser = e[0].loginNameStr;
+      //   } else {
+      //     this.selectUser = "暂无选择";
+      //   }
+      // }
     },
     changeTreeCopy(e) {
-      if (e.length > 1) {
-        this.$message.error("只能选择一个人");
-        return;
-      } else {
-        this.backCopyThree = e;
-        if (e[0]) {
-          this.copyUser = e[0].loginNameStr;
-        } else {
-          this.copyUser = "暂无选择";
-        }
-      }
+      console.log(e);
+      // if (e.length > 1) {
+      //   this.$message.error("只能选择一个人");
+      //   return;
+      // } else {
+      //   this.backCopyThree = e;
+      //   if (e[0]) {
+      //     this.copyUser = e[0].loginNameStr;
+      //   } else {
+      //     this.copyUser = "暂无选择";
+      //   }
+      // }
     },
     //查询form表单数据
     getFromQuery(e) {
@@ -1084,6 +1149,7 @@ export default {
       }).then((res) => {
         // this.fromList = res.data;
         this.dialogStatus = true;
+        // this.fromList = e;
         // console.log(this.$refs.formTable);
         // this.$refs.formTable.fileInfo.fileList = res.data.mkFileShareAttachList;
         this.fromList.mkFileShareAttachList = res.data.mkFileShareAttachList;
@@ -1136,6 +1202,22 @@ export default {
         this.request_form.userId = res.data.data.rows[0].userCode;
       });
     },
+    getUserIndex() {
+      this.$http({
+        url: "/market/waf/queryRole",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {
+          userCode: JSON.parse(window.sessionStorage.userInfo).loginNo,
+        },
+      }).then((res) => {
+        console.log(res.data.data);
+        let list = res.data.data.split(",");
+        this.UserPermissionsList = list;
+      });
+    },
     async clickSave() {
       this.$refs.formTable.$refs.form.validate((valid) => {
         if (valid) {
@@ -1200,15 +1282,55 @@ export default {
         this.clickHandle(res.data.body);
       });
     },
+    getNextPath(e) {
+      let list = {
+        // fresourceId: "bf79721c-33f3-11ed-ba0b-00505687dcd3", //测试环境
+        fresourceId: this.requestForm.fresourceId, // 本地环境
+        processId: this.requestForm.processDefinitionKey,
+        // fresourceId: "0d94de8a-0281-11ed-a302-4ae7da54db39", // 本地环境
+        // processId: "request_form_process",
+        // resourceId: e,
+      };
+      if (e) {
+        // this.propsList = [];
+        list.resourceId = e;
+      }
+      this.$http({
+        url: "/market/waf/queryPath",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: list,
+      }).then((res) => {
+        if (res.data.body.nextShapes[0].multi) {
+          console.log('这是mulit节点');
+          if (res.data.body.nextShapes[0].multi.multi === "true") {
+             console.log('这是mulit节点');
+            this.getLastName();
+          } else {
+            this.adminResourceId = ''
+            console.log('这不是mulit节点');
+            this.destroy = true;
+            this.handleStatus = true;
+            this.getMetirialType();
+          }
+        } else {
+          this.adminResourceId = ''
+          console.log('这不是mulit节点');
+          this.destroy = true;
+          this.handleStatus = true;
+          this.getMetirialType();
+        }
+        if (this.fromList.processId) {
+        } else {
+          this.$message.error("请先点击保存按钮");
+        }
+      });
+    },
     //处理按钮,开始工作流接口
     clickHandles() {
-      if (this.fromList.taskId) {
-        this.destroy = true;
-        this.handleStatus = true;
-      } else {
-        this.$message.error("请先点击保存按钮");
-      }
-      this.getMetirialType();
+      this.getNextPath(this.fromList.resourceId || "");
     },
 
     //批量审批
@@ -1244,11 +1366,43 @@ export default {
 
       let res = await this.common.httpPost(obj, success);
       function success(data) {
-        data.data.map((item) => {
+        console.log("[ 接口返回值第一曾 ] >", data);
+        let list = [];
+        list = data.data.data;
+        // list.map((item,index) => {
+        //     item.startTime = _this.$util.datetimeFormat(item.startTime);
+        //     item.endTime = _this.$util.datetimeFormat(item.endTime);
+        //     item.id = index + 1;
+        //   if (item.traceList) {
+        //     if (item.traceList.length > 0) {
+        //       item.children = item.traceList;
+        //     }
+        //   }
+        // });
+        // console.log(list);
+        if (data.data.lastmandata.length != 0) {
+          data.data.lastmandata.map((item, index) => {
+            item.id = index + 22;
+          });
+        }
+        list.map((item, index) => {
           item.startTime = _this.$util.datetimeFormat(item.startTime);
           item.endTime = _this.$util.datetimeFormat(item.endTime);
+          item.id = index + 1;
+          item.children = [];
+          if (data.data.lastmandata.length != 0) {
+            let indexs = data.data.lastmandata.findIndex((items) => {
+              if (items.taskId == item.taskId) {
+                item.children.push(items);
+              }
+            });
+          }
         });
-        _this.lables.data = data.data;
+        console.log(list);
+
+        _this.lables.data = list;
+        console.log("[ _this.lables.data ] >", _this.lables.data);
+        _this.abc = true;
       }
     },
     async clickHandle(e) {
@@ -1264,12 +1418,13 @@ export default {
 
       let res = await this.common.httpPost(obj, success);
       function success(data) {
-        _this.fromList.taskId = data.data;
+        console.log(data);
+        _this.fromList.processId = data.data;
         _this.taskId = data.data;
         let list = {
           id: e,
           // taskId:_this.formId,
-          processId: _this.fromList.taskId,
+          processId: _this.fromList.processId,
           // resourceId: _this.nextPath.currentShape[0].resourceId,
         };
         _this.setUpdate(list);
@@ -1286,8 +1441,10 @@ export default {
         },
         data: e,
       }).then((res) => {
+        this.$message.success("工单更新成功");
         this.fromList.taskId = res.data.body.taskId;
         this.fromList.taskName = res.data.body.taskName;
+        this.fromList.processId = res.data.body.processId;
         if (res.data.body.taskName === "起草") {
           this.isSync = res.data.body.isSync;
         } else {
@@ -1298,6 +1455,47 @@ export default {
         // }
       });
     },
+    //添加字典表常用意见
+    geaddctType(e) {
+      this.$http({
+        url: "/market/cfgDataDict/add",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: e,
+      }).then((res) => {
+        this.getMetirialType();
+      });
+    },
+    //删除字典表常用意见
+    geDelectType(e) {
+      this.$http({
+        url: "/market/cfgDataDicts/del",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: e,
+      }).then((res) => {
+        this.getMetirialType();
+      });
+    },
+    //获取字典表常用意见
+    getMetirialType(e) {
+      this.$http({
+        url: "/market/cfgDataDict/queryList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {
+          dictCodePks: "approval",
+        },
+      }).then((res) => {
+        this.commonlyList = res.data;
+      });
+    },
     //获取待阅接口
     getToBeRead(e, status) {
       this.$http({
@@ -1368,6 +1566,7 @@ export default {
         },
         data: e || {},
       }).then((res) => {
+        console.log(res);
         if (status === 0) {
           this.clickDemand("需求名称", res.data.data[0]);
         } else {
@@ -1390,8 +1589,15 @@ export default {
     getNum(e) {
       //多选数组
       this.batchList = e;
+      console.log(e);
       if (e.length > 0) {
-        this.exportStatus = true;
+        let user = this.UserPermissionsList.findIndex(
+          (item) => item === "市场需求管理员"
+        );
+        console.log(user);
+        if (user != -1) {
+          this.exportStatus = true;
+        }
       } else {
         this.exportStatus = false;
       }
@@ -1456,6 +1662,7 @@ export default {
       this.saveStatus = false;
       this.startStatus = true;
       this.closeStatus = true;
+      this.abc = false;
       // this.fromList = {};
     },
     handleCloses() {
@@ -1474,6 +1681,12 @@ export default {
 .copyClass {
   display: flex;
 }
+.flex-count {
+  // overflow-y: auto;
+  //     overflow-x: initial;
+
+  // height: au;
+}
 .flex-header-text-tree {
   width: 50%;
   text-align: center;
@@ -1539,11 +1752,14 @@ export default {
 ::v-deep .el-dialog {
   margin-top: 0 !important;
 }
-::v-deep .el-table__fixed-body-wrapper {
-  top: 50px !important;
-}
+// ::v-deep .el-table__fixed-body-wrapper {
+//   top: 50px !important;
+// }
 .flex-box {
   display: flex;
+  // overflow: auto;
+  overflow-y: auto;
+  overflow-x: hidden;
   width: calc(100% - 40px);
   border-radius: 20px;
   background-color: #fff;
@@ -1551,6 +1767,7 @@ export default {
   margin-top: 20px;
   position: relative;
   flex-direction: column;
+  // height: 100%;
   .flex-header {
     display: flex;
     width: 100%;

+ 213 - 44
src/pages/main/leader/demand/demandHomes.vue

@@ -44,6 +44,7 @@
       :before-close="handleClose"
       :modal="false"
       v-if="dialogStatus"
+      style="display: flex; flex-direction: column"
       :destroy-on-close="true"
     >
       <!-- 后期维护 -->
@@ -76,10 +77,12 @@
       />
       <div>
         <div class="table-title">流程追踪</div>
-        <Table :list="lables"></Table>
+        <div v-if="abc == true">
+          <Tables :list="lables"></Tables>
+        </div>
       </div>
     </el-dialog>
-    <div v-if="destroy">
+    <div >
       <el-dialog
         title="处理操作"
         width="100%"
@@ -91,16 +94,17 @@
       >
         <Workflow
           :list="fromList"
-          v-if="isWorkflowStatus"
+   
           @beforeClose="beforeClose"
           :requestForm="requestForm"
         />
-        <WorkflowEntrance
+        <!-- <WorkflowEntrance
           :list="fromList"
           v-else
+          :lastManList="lastManList"
           @beforeClose="beforeClose"
           :requestForm="requestForm"
-        />
+        /> -->
 
         <!-- 后期维护 -->
       </el-dialog>
@@ -139,6 +143,7 @@ import Seach from "../components/search.vue";
 import Export from "../components/export.vue";
 import Tabs from "../components/tabs.vue";
 import Table from "../components/form.vue";
+import Tables from "../components/formTrace.vue";
 import deptTree from "../components/deptThree.vue";
 import Qs from "qs";
 export default {
@@ -151,14 +156,16 @@ export default {
     deptTree,
     Workflow,
     WorkflowEntrance,
+    Tables
   },
   data() {
     return {
-      isWorkflowStatus: false, //默认展示模式组件,为true时展示多人处理组件
+      UserPermissionsList: [],
+      isWorkflowStatus: true, //默认展示模式组件,为true时展示多人处理组件
       buttonStatus: true,
       copyStatus: false,
       dialogTitle: "",
-      disabled: false,
+      disabled: true,
       destroy: false,
       //分页数据
       totalPage: "1", //默认第一页
@@ -185,12 +192,12 @@ export default {
         // nextDealMan:'',
         title: "title",
         businessKey: "288",
-        processDefinitionKey: "scsjdc_pro_process",
+        processDefinitionKey: "request_form_process",
       },
       requestForm: {
-        fresourceId: "d3f1793f-2f20-11ed-a6ed-02427ba2d388", // 本地环境
-        // fresourceId: "bf79721c-33f3-11ed-ba0b-00505687dcd3", //测试环境
-        processDefinitionKey: "scsjdc_pro_process",
+        // fresourceId: "0d94de8a-0281-11ed-a302-4ae7da54db39", // 本地环境
+        fresourceId: "bf79721c-33f3-11ed-ba0b-00505687dcd3", //测试环境
+        processDefinitionKey: "request_form_process",
       },
       treeList: [], //候选人列表
       treeCopyList: [], //抄送人列表
@@ -202,7 +209,7 @@ export default {
       textarea: "未填写意见",
       num: 0,
       dialogStatus: false, //新建dialog显示
-      handleStatus: false, //处理按钮状态
+      handleStatus: true, //处理按钮状态
       tabList: [
         {
           index: "first",
@@ -286,7 +293,6 @@ export default {
       },
       firstTable: {
         name: "first",
-        height: "650",
         titledata: [
           {
             label: "需求名称",
@@ -577,6 +583,7 @@ export default {
                 this.disabled = true;
                 this.buttonStatus = false;
                 this.getReadList(r.copytaskid);
+                this.clickForm(r)
               }, // 自定义事件
             },
           ],
@@ -656,6 +663,7 @@ export default {
           ],
         },
       },
+      abc: false,
       lable: {},
       copyUser: "", //抄送人
       backThree: [],
@@ -664,26 +672,31 @@ export default {
         height: "400",
         titledata: [
           {
+            id: 1,
             label: "环节名称",
             prop: "taskName",
             width: 300,
           },
           {
+            id: 2,
             label: "处理人",
             prop: "assignee",
             width: 300,
           },
           {
+            id: 3,
             label: "到达时间",
             prop: "startTime",
             width: 300,
           },
           {
+            id: 4,
             label: "处理时间",
             prop: "endTime",
             width: 300,
           },
           {
+            id: 5,
             label: "回复意见",
             prop: "content",
             width: 300,
@@ -692,7 +705,7 @@ export default {
         data: [], //内容数据
         loading: true,
         pageData: {
-          total: 10, // 总条数
+          total: 0, // 总条数
           pageSize: 10, // 每页数量
           pageNum: 1, // 页码
         },
@@ -744,17 +757,75 @@ export default {
       clickTaskName: "",
       seachLists: {},
       timeList: {},
+      lastManList: [],
     };
   },
   created() {
-    // const func = (name) => {
-    //   name = name || "fatfish";
+    this.getUserIndex();
+    // let A = [
+    //   {
+    //     id: 1,
+    //     b: "456",
+    //   },
+    //   {
+    //     id: 2,
+    //     b: "456",
+    //   },
+    // ];
+    // let B = [
+    //   {
+    //     a: 1,
+    //     b: "4567",
+    //   },
+    //   {
+    //     a: 1,
+    //     b: "4568",
+    //   },
+    //   {
+    //     a: 2,
+    //     b: "4567",
+    //   },
+    // ];
+    // A.map((item) => {
+    //   item.c = [];
+    //   let index = B.findIndex((items) => {
+    //     if (items.a == item.id) {
+    //       item.c.push(items);
+    //     }
+    //   });
+    //   console.log(index);
+    //  B.map((items,index) =>{
+    //   if(item.id == items.a){
+    //     item.c.push(items)
+    //   }
+
+    //  })
+    // });
+    // console.log(A);
+    // function getUserDescribe(name) {
+    //   const describeForNameMap = [
+    //     [
+    //       (name) => name.length > 3, // 判断条件
+    //       () => console.log("名字太长"), // 执行函数
+    //     ],
+    //     [(name) => name.length < 2, () => console.log("名字太短")],
+    //     [(name) => name[0] === "陈", () => console.log("小陈")],
+    //     [(name) => name === "大鹏", () => console.log("管理员")],
+    //     [
+    //       (name) => name[0] === "李" && name !== "李鹏",
+    //       () => console.log("小李"),
+    //     ],
+    //   ];
+    //   // 获取符合条件的子数组
+    //   const getDescribe = describeForNameMap.find((item) => item[0](name));
+    //   // 子数组存在则运行子数组中的第二个元素(执行函数)
+    //   getDescribe ? getDescribe[1]() : console.log("此人比较神秘!");
+    // }
+    // getUserDescribe('张元芳微软')
+    // const func = (name, age = "fatfish") => {
     //   console.log(name);
     // };
-    const func = (name, age = "fatfish") => {
-      console.log(name);
-    };
-    func("123123123");
+    // func("123123123");
 
     //oa跳转回来显示
     let status = JSON.stringify(this.$route.query) == "{}";
@@ -785,8 +856,11 @@ export default {
   methods: {
     //是否最后一个人
     async getLastName() {
+      console.log(this.fromList);
       let list = {
+        procinstid: this.fromList.processId,
         taskid: this.fromList.taskId,
+
         // taskId:e.taskId
       };
       let _this = this;
@@ -801,8 +875,9 @@ export default {
 
       let res = await this.common.httpPost(obj, success);
       function success(data) {
-        _this.isWorkflowStatus = data.lastMan == true ? true : false;
-        console.log(_this.isWorkflowStatus);
+        _this.isWorkflowStatus = data.lastMan == false ? false : true;
+        _this.lastManList = data;
+        // console.log(_this.isWorkflowStatus);
       }
     },
     //添加面包屑
@@ -902,11 +977,7 @@ export default {
         },
         data: this.$refs.formTable.form,
       }).then((res) => {
-        if (res.code === 0) {
-          this.$message.success("转需求管理平台成功!");
-        } else {
-          this.$message.error("转需求管理平台错误!");
-        }
+        this.$message.success("转需求管理平台成功!");
       });
     },
     //批量导出搜索
@@ -940,10 +1011,11 @@ export default {
           this.disabled = true;
           this.startStatus = false;
           this.saveStatus = false;
+          this.forwardStatus = false;
+          this.exportBtnStatus = false;
         }
         if (this.clickTagName === "three") {
           if (res.taskName === "起草") {
-            console.log(res);
             this.startStatus = true;
             this.disabled = false;
             this.saveStatus = true;
@@ -1179,6 +1251,22 @@ export default {
         this.request_form.userId = res.data.data.rows[0].userCode;
       });
     },
+    getUserIndex() {
+      this.$http({
+        url: "/market/waf/queryRole",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {
+          userCode: JSON.parse(window.sessionStorage.userInfo).loginNo,
+        },
+      }).then((res) => {
+        console.log(res.data.data);
+        let list = res.data.data.split(",");
+        this.UserPermissionsList = list;
+      });
+    },
     async clickSave() {
       this.$refs.formTable.$refs.form.validate((valid) => {
         if (valid) {
@@ -1243,16 +1331,45 @@ export default {
         this.clickHandle(res.data.body);
       });
     },
+    getNextPath(e) {
+      let list = {
+        // fresourceId: "bf79721c-33f3-11ed-ba0b-00505687dcd3", //测试环境
+        fresourceId: this.requestForm.fresourceId, // 本地环境
+        processId: this.requestForm.processDefinitionKey,
+        // fresourceId: "0d94de8a-0281-11ed-a302-4ae7da54db39", // 本地环境
+        // processId: "request_form_process",
+        // resourceId: e,
+      };
+      if (e) {
+        // this.propsList = [];
+        list.resourceId = e;
+      }
+      this.$http({
+        url: "/market/waf/queryPath",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: list,
+      }).then((res) => {
+        if (res.data.body.nextShapes[0].multi) {
+          if (res.data.body.nextShapes[0].multi.multi === "true") {
+            this.getLastName();
+          }
+        }
+        if (this.fromList.taskId) {
+          this.destroy = true;
+          this.handleStatus = true;
+          this.getMetirialType();
+        } else {
+          this.$message.error("请先点击保存按钮");
+        }
+      });
+    },
     //处理按钮,开始工作流接口
     clickHandles() {
-      this.getLastName();
-      if (this.fromList.taskId) {
-        this.destroy = true;
-        this.handleStatus = true;
-      } else {
-        this.$message.error("请先点击保存按钮");
-      }
-      this.getMetirialType();
+      console.log(this.fromList);
+      this.getNextPath(this.fromList.resourceId || "");
     },
 
     //批量审批
@@ -1288,11 +1405,43 @@ export default {
 
       let res = await this.common.httpPost(obj, success);
       function success(data) {
-        data.data.map((item) => {
+        console.log('[ 接口返回值第一曾 ] >', data)
+        let list = [];
+        list = data.data.data;
+        // list.map((item,index) => {
+        //     item.startTime = _this.$util.datetimeFormat(item.startTime);
+        //     item.endTime = _this.$util.datetimeFormat(item.endTime);
+        //     item.id = index + 1;
+        //   if (item.traceList) {
+        //     if (item.traceList.length > 0) {
+        //       item.children = item.traceList;
+        //     }
+        //   }
+        // });
+        // console.log(list);
+        if (data.data.lastmandata.length != 0) {
+          data.data.lastmandata.map((item, index) => {
+            item.id = index + 22;
+          });
+        }
+        list.map((item, index) => {
           item.startTime = _this.$util.datetimeFormat(item.startTime);
           item.endTime = _this.$util.datetimeFormat(item.endTime);
+          item.id = index + 1;
+          item.children = [];
+          if (data.data.lastmandata.length != 0) {
+            let indexs = data.data.lastmandata.findIndex((items) => {
+              if (items.taskId == item.taskId) {
+                item.children.push(items);
+              }
+            });
+          }
         });
-        _this.lables.data = data.data;
+        console.log(list);
+
+        _this.lables.data = list;
+        console.log("[ _this.lables.data ] >", _this.lables.data);
+        _this.abc = true;
       }
     },
     async clickHandle(e) {
@@ -1308,12 +1457,12 @@ export default {
 
       let res = await this.common.httpPost(obj, success);
       function success(data) {
-        _this.fromList.taskId = data.data;
+        _this.fromList.processId = data.data;
         _this.taskId = data.data;
         let list = {
           id: e,
           // taskId:_this.formId,
-          processId: _this.fromList.taskId,
+          processId: _this.fromList.processId,
           // resourceId: _this.nextPath.currentShape[0].resourceId,
         };
         _this.setUpdate(list);
@@ -1330,8 +1479,10 @@ export default {
         },
         data: e,
       }).then((res) => {
+        this.$message.success("工单更新成功");
         this.fromList.taskId = res.data.body.taskId;
         this.fromList.taskName = res.data.body.taskName;
+        this.fromList.processId = res.data.body.processId;
         if (res.data.body.taskName === "起草") {
           this.isSync = res.data.body.isSync;
         } else {
@@ -1475,8 +1626,15 @@ export default {
     getNum(e) {
       //多选数组
       this.batchList = e;
+      console.log(e);
       if (e.length > 0) {
-        this.exportStatus = true;
+        let user = this.UserPermissionsList.findIndex(
+          (item) => item === "市场需求管理员"
+        );
+        console.log(user);
+        if (user != -1) {
+          this.exportStatus = true;
+        }
       } else {
         this.exportStatus = false;
       }
@@ -1541,6 +1699,7 @@ export default {
       this.saveStatus = false;
       this.startStatus = true;
       this.closeStatus = true;
+      this.abc = false;
       // this.fromList = {};
     },
     handleCloses() {
@@ -1559,6 +1718,12 @@ export default {
 .copyClass {
   display: flex;
 }
+.flex-count {
+  // overflow-y: auto;
+  //     overflow-x: initial;
+
+  // height: au;
+}
 .flex-header-text-tree {
   width: 50%;
   text-align: center;
@@ -1624,11 +1789,14 @@ export default {
 ::v-deep .el-dialog {
   margin-top: 0 !important;
 }
-::v-deep .el-table__fixed-body-wrapper {
-  top: 50px !important;
-}
+// ::v-deep .el-table__fixed-body-wrapper {
+//   top: 50px !important;
+// }
 .flex-box {
   display: flex;
+  // overflow: auto;
+  overflow-y: auto;
+  overflow-x: hidden;
   width: calc(100% - 40px);
   border-radius: 20px;
   background-color: #fff;
@@ -1636,6 +1804,7 @@ export default {
   margin-top: 20px;
   position: relative;
   flex-direction: column;
+  // height: 100%;
   .flex-header {
     display: flex;
     width: 100%;

+ 4 - 1
src/pages/main/leader/demand/supportState.vue

@@ -190,13 +190,15 @@ export default {
         headers: {
           "Content-Type": "application/json",
         },
+        // 20221214001
         data: {
-          needNo: this.needNo,
+          needNo:this.needNo,
         },
       }).then((res) => {
         this.firstTable.data.push(res.data);
         this.listTable = res.data.cwfInfo;
         this.listTable.map((item) => {
+          console.log(item);
           item.state.map((items, index) => {
             if (items.status === false) {
               items.imgUrl = require("../../../../assets/b_img" +
@@ -260,6 +262,7 @@ export default {
           .flex-time {
             margin-top: 5px;
             margin-bottom: 10%;
+            height: 16px;
           }
         }
       }

+ 16 - 31
src/pages/main/leader/index.vue

@@ -6,29 +6,29 @@
           <el-row>
             <el-col :span="24">
               <div class="car-line">
-                <el-carousel height="40px" direction="vertical" trigger="click">
-                  <el-carousel-item
-                    v-for="item in noticeData"
-                    :key="item.noticeId"
-                  >
+                <el-carousel height="40px" direction="vertical" trigger="click" v-if="noticeData.length != '0'">
+                  <el-carousel-item v-for="item in noticeData" :key="item.noticeId">
                     <div class="car-box">
                       <i class="el-icon-message-solid"></i>
                       <span>公告</span>
                       <span style="color: #0b82ff" @click="uploadsee(item)">{{
-                        item.noticeTitle
-                      }}</span>
+    item.noticeTitle
+}}</span>
                       <span @click="jNotice">更多</span>
                     </div>
                   </el-carousel-item>
                 </el-carousel>
+                <div height="40px" direction="vertical" trigger="click" v-if="noticeData.length == '0'">
+
+                  <div class="car-box" style="text-align: center;">
+                    暂无公告
+                  </div>
+                </div>
               </div>
             </el-col>
           </el-row>
           <el-row>
-            <el-col
-              :span="24"
-              style="background: #fff; margin-top: 10px; border-radius: 5px"
-            >
+            <el-col :span="24" style="background: #fff; margin-top: 10px; border-radius: 5px">
               <leaderTag :dynamicTags="dynamicTags"></leaderTag>
             </el-col>
           </el-row>
@@ -38,10 +38,7 @@
                 <hometask></hometask>
               </el-col>
               <el-col :span="6">
-                <numberhits
-                  :numHits="numHits"
-                  :numHits1="numHits1"
-                ></numberhits>
+                <numberhits :numHits="numHits" :numHits1="numHits1"></numberhits>
               </el-col>
             </div>
             <div v-else>
@@ -56,24 +53,11 @@
         </div>
       </div>
     </div>
-    <el-dialog
-      title="公告"
-      :visible.sync="dialogStatus"
-      width="50%"
-      :close-on-press-escape="false"
-      :show-close="true"
-      :destroy-on-close="true"
-      :modal-append-to-body="false"
-      :close-on-click-modal="false"
-      :fullscreen="true"
-    >
+    <el-dialog title="公告" :visible.sync="dialogStatus" width="50%" :close-on-press-escape="false" :show-close="true"
+      :destroy-on-close="true" :modal-append-to-body="false" :close-on-click-modal="false" :fullscreen="true">
       <el-form :model="infolist" ref="infolist">
         <div style="height: calc(100vh - 180px); overflow-y: scroll">
-          <notiCheck
-            :infolist="infolist"
-            :datalist="datalist"
-            :dialogInfo="dialogStatus"
-          ></notiCheck>
+          <notiCheck :infolist="infolist" :datalist="datalist" :dialogInfo="dialogStatus"></notiCheck>
         </div>
       </el-form>
       <div class="myfooter" style="text-align: right; margin: 20px 20px 0 0">
@@ -294,6 +278,7 @@ export default {
     overflow-y: scroll;
   }
 }
+
 .car-line {
   height: 40px;
   background: #fff;

+ 298 - 305
src/pages/main/leader/leaderhomeTask.vue

@@ -2,9 +2,7 @@
   <div style="display: flex; justify-content: space-between">
     <div class="taskbox">
       <div class="tit">
-        <span class="span1" @click="tabboxclick1"
-          >我的待办 ({{ this.niticList.length }})</span
-        >
+        <span class="span1" @click="tabboxclick1">我的待办 ({{ this.daitotal }})</span>
         <span class="span2" @click="tabboxclick2">我的已办</span>
         <span class="span3" @click="tabboxclick3">我的发起</span>
         <!-- <span class="span" @click="more">更多>></span> -->
@@ -12,300 +10,173 @@
       <div class="fatherbox">
         <div class="tabbox">
           <!-- 我的待办列表 -->
-          <el-table
-            :header-cell-style="{
-              background: '#F2F2F2',
-              'text-align': 'center',
-            }"
-            :cell-style="{ background: '#FaFaFa' }"
-            v-if="tabbox1"
-            class="com-table"
-            ref="multipleTable"
-            :data="niticList"
-            tooltip-effect="dark"
-            size="small"
-            style="width: 100%; font-size: 16px; background: '#FaFaFa'"
-            height="442px"
-          >
-            <el-table-column
-              prop="woTitle"
-              label="工单标题"
-              align="left"
-              :show-overflow-tooltip="true"
-            >
+          <el-table :header-cell-style="{
+            background: '#F2F2F2',
+            'text-align': 'center',
+          }" :cell-style="{ background: '#FaFaFa' }" v-if="tabbox1" class="com-table" ref="multipleTable"
+            :data="niticList" tooltip-effect="dark" size="small"
+            style="width: 100%; font-size: 16px; background: '#FaFaFa'" height="442px">
+            <el-table-column prop="woTitle" label="工单标题" align="left" :show-overflow-tooltip="true">
               <template slot-scope="scope">
-                <span
-                  :title="scope.row.woTitle"
-                  @click="RowTitle(scope.row)"
-                  :style="
-                    scope.row.woTypeDesc == '预警工单'
-                      ? 'cursor: pointer;color:red;'
-                      : 'cursor: pointer;color:blue;'
-                  "
-                >
+                <span :title="scope.row.woTitle" @click="RowTitle(scope.row)" :style="
+                  scope.row.woTypeDesc == '预警工单'
+                    ? 'cursor: pointer;color:red;'
+                    : 'cursor: pointer;color:blue;'
+                ">
                   <!-- <span style="float: left; color: #afb2d8;margin-right:5px"
                   >•</span> -->
-                  {{ scope.row.woTitle }}</span
-                >
+                  {{ scope.row.woTitle }}
+                </span>
               </template>
             </el-table-column>
-            <el-table-column
-              prop="procName"
-              label="流程名称"
-              align="center"
-              width="180"
-              :show-overflow-tooltip="true"
-            >
+            <el-table-column prop="procName" label="流程名称" align="center" width="180" :show-overflow-tooltip="true">
               <template slot-scope="scope">
                 <span :title="scope.row.procName">{{
-                  scope.row.procName
+                    scope.row.procName
                 }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              prop="assigneName"
-              label="上一步处理人"
-              align="center"
-              width="120"
-              :show-overflow-tooltip="true"
-            >
+            <el-table-column prop="assigneName" label="上一步处理人" align="center" width="120" :show-overflow-tooltip="true">
               <template slot-scope="scope">
                 <span :title="scope.row.assigneName">{{
-                  scope.row.assigneName
+                    scope.row.assigneName
                 }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              prop="clsj"
-              label="上一步处理时间"
-              align="center"
-              width="140"
-              :show-overflow-tooltip="true"
-            >
+            <el-table-column prop="clsj" label="上一步处理时间" align="center" width="135" :show-overflow-tooltip="true">
               <template slot-scope="scope">
-                <span>{{ scope.row.clsj }}</span>
+                <span  :title="scope.row.clsj">{{ scope.row.clsj }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              prop="opName"
-              label="发起姓名"
-              align="center"
-              width="100"
-            >
+            <el-table-column prop="opName" label="发起人" align="center" width="100">
               <template slot-scope="scope">
                 <span>{{ scope.row.opName }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              prop="createTime"
-              label="发起时间"
-              align="center"
-              width="120"
-              :show-overflow-tooltip="true"
-            >
+            <el-table-column prop="createTime" label="发起时间" align="center" width="130" :show-overflow-tooltip="true">
               <template slot-scope="scope">
-                <span>{{ scope.row.createTime }}</span>
+                <span  :title="scope.row.createTime">{{ scope.row.createTime }}</span>
               </template>
             </el-table-column>
           </el-table>
-          <el-pagination
-            class="pageBox"
-            @current-change="currchangeDdaiban"
-            layout="total,prev, pager, next"
-            background
-            :page-size="pagesize"
-            :total="totalDaiban"
-            v-if="tabbox1"
-          >
+          <!-- <el-pagination class="pageBox" @current-change="currchangeDdaiban" layout="total,prev, pager, next" background
+            page-size="10" :total="totalDaiban" v-if="tabbox1">
+          </el-pagination> -->
+          <el-pagination @current-change="currchangeDdaiban" :current-page="daipage" :page-size="daisize"
+            layout="total,prev, pager, next" :total="daitotal" v-if="tabbox1">
           </el-pagination>
         </div>
         <div class="tabbox">
           <!-- 我的已办列表 -->
-          <el-table
-            :header-cell-style="{
-              background: '#F2F2F2',
-              'text-align': 'center',
-            }"
-            :cell-style="{ background: '#FaFaFa' }"
-            class="com-table"
-            ref="tableDatayj"
-            v-if="tabbox2"
-            :data="tableDatayj"
-            tooltip-effect="dark"
-            size="small"
-            style="width: 100%; font-size: 16px; background: '#FaFaFa'"
-            height="442px"
-          >
-            <el-table-column
-              prop="woTitle"
-              label="工单标题"
-              align="left"
-              :show-overflow-tooltip="true"
-            >
+          <el-table :header-cell-style="{
+            background: '#F2F2F2',
+            'text-align': 'center',
+          }" :cell-style="{ background: '#FaFaFa' }" class="com-table" ref="tableDatayj" v-if="tabbox2"
+            :data="tableDatayj" tooltip-effect="dark" size="small"
+            style="width: 100%; font-size: 16px; background: '#FaFaFa'" height="442px">
+            <el-table-column prop="woTitle" label="工单标题" align="left" :show-overflow-tooltip="true">
               <template slot-scope="scope">
                 <!-- <span style="float: left; color: #afb2d8;margin-right:5px"
                   >•</span
                 > -->
-                <span
-                  @click="RowDoneTitle(scope.row)"
-                  :title="scope.row.woTitle"
-                  style="cursor: pointer; color: blue"
-                  >{{ scope.row.woTitle }}</span
-                >
+                <span @click="RowDoneTitle(scope.row)" :title="scope.row.woTitle"
+                  style="cursor: pointer; color: blue">{{ scope.row.woTitle }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              prop="procName"
-              label="流程名称"
-              align="center"
-              width="180"
-              :show-overflow-tooltip="true"
-            >
+            <el-table-column prop="procName" label="流程名称" align="center" width="180" :show-overflow-tooltip="true">
               <template slot-scope="scope">
                 <span :title="scope.row.procName">{{
-                  scope.row.procName
+                    scope.row.procName
                 }}</span>
               </template>
             </el-table-column>
 
-            <el-table-column
-              prop="opName"
-              label="发起姓名"
-              align="center"
-              width="120"
-            >
+            <el-table-column prop="opName" label="发起人" align="center" width="120">
               <template slot-scope="scope">
                 <span>{{ scope.row.opName }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              prop="createTime"
-              label="发起时间"
-              align="center"
-              width="180"
-            >
+            <el-table-column prop="createTime" label="发起时间" align="center" width="180">
               <template slot-scope="scope">
                 <span>{{ scope.row.createTime }}</span>
               </template>
             </el-table-column>
           </el-table>
-          <el-pagination
-            class="pageBox"
-            v-if="tabbox2"
-            @current-change="currchangeDone"
-            layout="total,prev, pager, next"
-            background
-            :total="totalDone"
-            :page-size="pagesize"
-          >
+          <!-- <el-pagination class="pageBox"  @current-change="currchangeDone"
+            layout="total,prev, pager, next" background :total="totalDone" page-size="10">
+          </el-pagination> -->
+          <el-pagination @current-change="currchangeDyiban" :current-page="yibanpage" :page-size="yibansize"
+            layout="total,prev, pager, next" :total="yibantotal" v-if="tabbox2">
           </el-pagination>
         </div>
         <div class="tabbox">
           <!-- 我的发起列表 -->
-          <el-table
-            :header-cell-style="{
-              background: '#F2F2F2',
-              'text-align': 'center',
-            }"
-            :cell-style="{ background: '#FaFaFa' }"
-            class="com-table"
-            ref="OpList"
-            :data="OpList"
-            v-if="tabbox3"
-            tooltip-effect="dark"
-            size="small"
-            style="width: 100%; font-size: 16px; background: '#FaFaFa'"
-            height="442px"
-          >
-            <el-table-column
-              prop="woTitle"
-              label="工单标题"
-              align="left"
-              :show-overflow-tooltip="true"
-            >
+          <el-table :header-cell-style="{
+            background: '#F2F2F2',
+            'text-align': 'center',
+          }" :cell-style="{ background: '#FaFaFa' }" class="com-table" ref="OpList" :data="OpList" v-if="tabbox3"
+            tooltip-effect="dark" size="small" style="width: 100%; font-size: 16px; background: '#FaFaFa'"
+            height="442px">
+            <el-table-column prop="woTitle" label="工单标题" align="left" :show-overflow-tooltip="true">
               <template slot-scope="scope">
                 <!-- <span style="float: left; color: #afb2d8;margin-right:5px"
                   >•</span
                 > -->
-                <span
-                  :title="scope.row.woTitle"
-                  @click="RowlaunchTitle(scope.row)"
-                  style="cursor: pointer; color: blue"
-                  >{{ scope.row.woTitle }}</span
-                >
+                <span :title="scope.row.woTitle" @click="RowlaunchTitle(scope.row)"
+                  style="cursor: pointer; color: blue">{{ scope.row.woTitle }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              prop="procName"
-              label="流程名称"
-              align="center"
-              :show-overflow-tooltip="true"
-            >
+            <el-table-column prop="procName" label="流程名称" align="center" :show-overflow-tooltip="true">
               <template slot-scope="scope">
                 <span :title="scope.row.procName">{{
-                  scope.row.procName
+                    scope.row.procName
                 }}</span>
               </template>
             </el-table-column>
 
-            <el-table-column
-              prop="createTime"
-              label="发起时间"
+            <el-table-column prop="createTime" label="发起时间" align="center" width="180">
+              <template slot-scope="scope">
+                <span>{{ scope.row.createTime }}</span>
+              </template>
+            </el-table-column>
+             <el-table-column 
               align="center"
-              width="180"
+              width="80"
+              label="操作"
             >
               <template slot-scope="scope">
-                <span>{{ scope.row.createTime }}</span>
+                <el-button
+                  size="mini"
+                  
+                  :disabled="scope.row.flag == '1' ? true : false"
+                  @click="handleEdit(scope.$index, scope.row)">催办</el-button>
+                
               </template>
             </el-table-column>
+
           </el-table>
-          <el-pagination
-            class="pageBox"
-            @current-change="currchangeOp"
-            layout="total,prev, pager, next"
-            background
-            :total="totalOp"
-            v-if="tabbox3"
-            :page-size="pagesize"
-          >
+          <!-- <el-pagination class="pageBox" @current-change="currchangeOp" layout="total,prev, pager, next" background
+            :total="totalOp" v-if="tabbox3" page-size="10">
+          </el-pagination> -->
+          <el-pagination @current-change="currchangefaqi" :current-page="faqipage" :page-size="faqisize"
+            layout="total,prev, pager, next" :total="faqitotal" v-if="tabbox3">
           </el-pagination>
         </div>
       </div>
       <!-- 查看待办弹窗 -->
-      <el-dialog
-        title="查看"
-        :visible.sync="WorkOrderStatus"
-        width="50%"
-        :close-on-press-escape="false"
-        :show-close="true"
-        :destroy-on-close="true"
-        :modal-append-to-body="false"
-        :close-on-click-modal="false"
-      >
+      <el-dialog title="查看" :visible.sync="WorkOrderStatus" width="50%" :close-on-press-escape="false"
+        :show-close="true" :destroy-on-close="true" :modal-append-to-body="false" :close-on-click-modal="false">
         <div>
           <el-form :inline="true" :model="StatusList" class="demo-form-inline">
             <el-form-item label="工单标题">
-              <el-input
-                v-model="StatusList.woTitle"
-                placeholder="工单标题"
-                disabled
-              />
+              <el-input v-model="StatusList.woTitle" placeholder="工单标题" disabled />
             </el-form-item>
             <el-form-item label="流程名称">
-              <el-input
-                v-model="StatusList.procName"
-                placeholder="流程名称"
-                disabled
-              />
+              <el-input v-model="StatusList.procName" placeholder="流程名称" disabled />
             </el-form-item>
           </el-form>
           <h3>流程轨迹</h3>
-          <el-table
-            :data="WorkOrderList"
-            style="width: 100%"
-            max-height="350"
-            height="300"
-          >
+          <el-table :data="WorkOrderList" style="width: 100%" max-height="350" height="300">
             <el-table-column prop="createTime" label="节点开始时间" />
             <el-table-column prop="stepName" label="节点名称" width="180" />
             <el-table-column prop="assigneeName" label="处理角色" width="180" />
@@ -317,40 +188,19 @@
         </div>
       </el-dialog>
       <!-- 查看已办弹窗 -->
-      <el-dialog
-        title="查看"
-        :visible.sync="DoneStatus"
-        width="50%"
-        :close-on-press-escape="false"
-        :show-close="true"
-        :destroy-on-close="true"
-        :modal-append-to-body="false"
-        :close-on-click-modal="false"
-      >
+      <el-dialog title="查看" :visible.sync="DoneStatus" width="50%" :close-on-press-escape="false" :show-close="true"
+        :destroy-on-close="true" :modal-append-to-body="false" :close-on-click-modal="false">
         <div>
           <el-form :inline="true" :model="StatusList" class="demo-form-inline">
             <el-form-item label="工单标题">
-              <el-input
-                v-model="StatusList.woTitle"
-                placeholder="工单标题"
-                disabled
-              />
+              <el-input v-model="StatusList.woTitle" placeholder="工单标题" disabled />
             </el-form-item>
             <el-form-item label="流程名称">
-              <el-input
-                v-model="StatusList.procName"
-                placeholder="流程名称"
-                disabled
-              />
+              <el-input v-model="StatusList.procName" placeholder="流程名称" disabled />
             </el-form-item>
           </el-form>
           <h3>流程轨迹</h3>
-          <el-table
-            :data="DoneList"
-            style="width: 100%"
-            max-height="350"
-            height="300"
-          >
+          <el-table :data="DoneList" style="width: 100%" max-height="350" height="300">
             <el-table-column prop="createTime" label="节点开始时间" />
             <el-table-column prop="stepName" label="节点名称" width="180" />
             <el-table-column prop="assigneeName" label="处理角色" width="180" />
@@ -362,40 +212,19 @@
         </div>
       </el-dialog>
       <!-- 查看发起弹窗 -->
-      <el-dialog
-        title="查看"
-        :visible.sync="launchStatus"
-        width="50%"
-        :close-on-press-escape="false"
-        :show-close="true"
-        :destroy-on-close="true"
-        :modal-append-to-body="false"
-        :close-on-click-modal="false"
-      >
+      <el-dialog title="查看" :visible.sync="launchStatus" width="50%" :close-on-press-escape="false" :show-close="true"
+        :destroy-on-close="true" :modal-append-to-body="false" :close-on-click-modal="false">
         <div>
           <el-form :inline="true" :model="StatusList" class="demo-form-inline">
             <el-form-item label="工单标题">
-              <el-input
-                v-model="StatusList.woTitle"
-                placeholder="工单标题"
-                disabled
-              />
+              <el-input v-model="StatusList.woTitle" placeholder="工单标题" disabled />
             </el-form-item>
             <el-form-item label="流程名称">
-              <el-input
-                v-model="StatusList.procName"
-                placeholder="流程名称"
-                disabled
-              />
+              <el-input v-model="StatusList.procName" placeholder="流程名称" disabled />
             </el-form-item>
           </el-form>
           <h3>流程轨迹</h3>
-          <el-table
-            :data="launchList"
-            style="width: 100%"
-            max-height="350"
-            height="300"
-          >
+          <el-table :data="launchList" style="width: 100%" max-height="350" height="300">
             <el-table-column prop="createTime" label="节点开始时间" />
             <el-table-column prop="stepName" label="节点名称" width="180" />
             <el-table-column prop="assigneeName" label="处理角色" width="180" />
@@ -404,25 +233,47 @@
         </div>
       </el-dialog>
       <!-- 处理弹窗 -->
-      <el-dialog
-        title="处理"
-        :visible.sync="WorkOrderStatus1"
-        width="40%"
-        :close-on-press-escape="false"
-        :show-close="true"
-        :destroy-on-close="true"
-        :modal-append-to-body="false"
-        :close-on-click-modal="false"
-      >
+      <el-dialog title="处理" :visible.sync="WorkOrderStatus1" width="40%" :close-on-press-escape="false"
+        :show-close="true" :destroy-on-close="true" :modal-append-to-body="false" :close-on-click-modal="false">
         <div style="height: 450px">
-          <iframe
-            height="100%"
-            width="100%"
-            :src="dialogdiv"
-            frameborder="0"
-          ></iframe>
+          <iframe height="100%" width="100%" :src="dialogdiv" frameborder="0"></iframe>
         </div>
       </el-dialog>
+      <div>
+      <el-dialog title="有您的催办工单" :visible.sync="dialogTableVisible"  :modal="false" >
+        <el-table :data="gridData">
+          <el-table-column property="woTitle" 
+          label="工单标题" width="625" 
+          show-overflow-tooltip=true 
+           >
+           <template slot-scope="scope">
+                <span 
+                  @click="urgedDeal(scope.row)"
+                  :title="scope.row.woTitle"
+                  style="cursor: pointer; color: blue"
+                  >{{ scope.row.woTitle }}</span
+                >
+              </template>
+           </el-table-column>
+          
+          <el-table-column 
+              align="center"
+              width="100"
+              label="操作"
+            >
+            <!-- <el-form-item> -->
+              <template slot-scope="scope">
+                
+                <el-button
+                  size="mini"
+                  @click="handleEdit1(scope.$index, scope.row)">已阅</el-button>
+                
+              </template>
+              <!-- </el-form-item> -->
+            </el-table-column>
+        </el-table>
+      </el-dialog>
+    </div>
     </div>
   </div>
 </template>
@@ -432,6 +283,8 @@ export default {
   // props:["tableDatayj","niticList"],
   data() {
     return {
+      gridData:[],//催办列表
+      dialogTableVisible: false,//催办弹窗是否显示
       tabbox1: true, //待办
       tabbox2: false, //已办
       tabbox3: false, //发起
@@ -457,6 +310,15 @@ export default {
       pageSizeDone: 1,
       pageSizeDdaiban: 1,
       pageSizeOp: 1,
+      daipage: 1, //第几页
+      daisize: 10, //一页多少条
+      daitotal: 0, //总条目数
+      yibanpage: 1, //第几页
+      yibansize: 10, //一页多少条
+      yibantotal: 0, //总条目数
+      faqipage: 1, //第几页
+      faqisize: 10, //一页多少条
+      faqitotal: 0, //总条目数
     };
   },
   methods: {
@@ -471,7 +333,7 @@ export default {
     RowTitle(v) {
       this.StatusList = v;
       console.log(v.actionUrl);
-      if (v.procName) {
+      if (v.taskName) {
         this.WorkOrderStatus = true;
         this.$http({
           url: "/market/cwo/queryProcStepByWono",
@@ -510,7 +372,7 @@ export default {
     RowDoneTitle(v) {
       this.StatusList = v;
       console.log(v.actionUrl);
-      if (v.procName) {
+      if (v.taskName) {
         this.DoneStatus = true;
         this.$http({
           url: "/market/cwo/queryProcStepByWono",
@@ -550,7 +412,7 @@ export default {
     RowlaunchTitle(v) {
       this.StatusList = v;
       console.log(v.actionUrl);
-      if (v.procName) {
+      if (v.taskName) {
         this.launchStatus = true;
         this.$http({
           url: "/market/cwo/queryProcStepByWono",
@@ -564,16 +426,112 @@ export default {
         }).then((res) => {
           this.launchList = res.data;
         });
-      }else {
+      } else {
         this.$router.push(v.actionUrl);
       }
     },
+     //催办按钮
+     handleEdit(index, row) {
+        this.open(row);
+  
+      },
+      //已阅按钮
+     handleEdit1(index, row) {
+        this.haveRead(row);   //点已阅后返回数据给后台
+        
+      },
+      
+    //催办按钮弹窗
+    open(row) {
+        this.$confirm('催办此条工单, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          this.urgedDeal(row);
+          
+          this.$message({
+            type: 'success',
+            message: '催办成功!'
+          });
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消催办'
+          });          
+        });
+      },
+     
+     //催办向后台返回数据
+     urgedDeal(row) {
+      let list = {}
+      list.id = row.id;
+      list.woNo = row.woNo;
+      list.woTitle = row.woTitle;
+      list.nextNo = row.assigneeNo;
+      list.nextName = row.assigneeName;
+      list.sts = row.sts;
+      list.actionUrl = row.actionUrl;
+      console.log(row); 
+        this.$http({
+        url: "/market/remind/add",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+         },
+        data: list,
+      }).then((res) => {
+        
+      });
+     },
+     //已阅向后台返回数据
+     haveRead(row) {
+      let list = {}
+      list.id = row.id;
+      list.woNo = row.woNo;
+      list.woTitle = row.woTitle;
+      list.nextNo = row.assigneeNo;
+      list.nextName = row.assigneeName;
+      list.sts = row.sts;
+      console.log(row); 
+        this.$http({
+        url: "/market/remind/update",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+         },
+        data: list,
+      }).then((res) => {
+        this.popupWindow();
+      });
+     },
 
+      //接收数据判断是否弹窗
+    popupWindow(){
+       this.$http({
+        url: "/market/remind/queryListByNo",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+         },
+        
+      }).then((res) => {
+        console.log(res);
+        console.log(res.data.length);
+        if(res.data.length == 0){
+          this.dialogTableVisible = false;
+        }else{
+          this.dialogTableVisible = true;
+        }
+        this.gridData = res.data
+      });
+    },
     //更多按钮
     more() {
       console.log(11);
     },
 
+
     //待办列表初始化
     daiban(v, n) {
       this.pageSizeDdaiban = n;
@@ -582,12 +540,18 @@ export default {
         method: "post",
         headers: {
           "Content-Type": "application/json",
-          page: '{"pageNo":"' + n + '","pageSize":"10"}',
+          page: '{"pageNo":"' + '1' + '","pageSize":"100"}',
         },
-        data: '{"pageNo":"' + n + '","pageSize":"10"}',
+        data: '{"pageNo":"' + '1' + '","pageSize":"100"}',
       }).then((res) => {
-        this.niticList = res.data.data;
-        this.totalDaiban = res.data.totalRecord;
+       // this.niticList = res.data.data;
+       let data = JSON.parse(JSON.stringify(res.data.data))
+        this.niticList = data.splice(
+          (this.daipage - 1) * this.daisize,
+          this.daisize
+        );
+        this.daitotal = res.data.data.length
+        // this.totalDaiban = res.data.totalRecord;
       });
     },
 
@@ -600,27 +564,38 @@ export default {
         method: "post",
         headers: {
           "Content-Type": "application/json",
-          page: '{"pageNo":"' + n + '","pageSize":"10"}',
+          page: '{"pageNo":"' + '1' + '","pageSize":"100"}',
         },
-        data: '{"pageNo":"' + n + '","pageSize":"10"}',
+        data: '{"pageNo":"' + '1' + '","pageSize":"100"}',
       }).then((res) => {
-        this.tableDatayj = res.data.data;
-        this.totalDone = res.data.totalRecord;
+         // this.tableDatayj = res.data.data;
+        // this.totalDone = res.data.totalRecord;
+        let data = JSON.parse(JSON.stringify(res.data.data))
+        this.tableDatayj = data.splice(
+          (this.yibanpage - 1) * this.yibansize,
+          this.yibansize
+        );
+        this.yibantotal = res.data.data.length
       });
     },
     //待办分页
-    currchangeDdaiban(v) {
-      this.pageSizeDdaiban = v;
+    currchangeDdaiban(val) {
+      console.log("翻页,当前为第几页", val);
+      this.daipage = val;
+      // this.getTabelData2();
+      // this.pageSizeDdaiban = v;
       this.daiban(this.params, this.pageSizeDdaiban);
     },
     //已办分页
-    currchangeDone(v) {
-      this.pageSizeDone = v;
+    currchangeyiban(val) {
+      // this.pageSizeDone = v;
+      this.yibanpage = val;
       this.getListyj(this.params, this.pageSizeDone);
     },
     //发起分页
-    currchangeOp(v) {
-      this.pageSizeOp = v;
+    currchangefaqi(val) {
+      // this.pageSizeOp = v;
+      this.faqipage = val;
       this.getOPlist(this.params, this.pageSizeOp);
     },
     //我的发起列表初始化
@@ -631,12 +606,18 @@ export default {
         method: "post",
         headers: {
           "Content-Type": "application/json",
-          page: '{"pageNo":"' + n + '","pageSize":"10"}',
+          page: '{"pageNo":"' + '1' + '","pageSize":"100"}',
         },
-        data: '{"pageNo":"' + n + '","pageSize":"10"}',
+        data: '{"pageNo":"' + '1' + '","pageSize":"100"}',
       }).then((res) => {
-        this.OpList = res.data.data;
-        this.totalOp = res.data.totalRecord;
+      // this.OpList = res.data.data;
+        // this.totalOp = res.data.totalRecord;
+        let data = JSON.parse(JSON.stringify(res.data.data))
+        this.OpList = data.splice(
+          (this.faqipage - 1) * this.faqisize,
+          this.faqisize
+        );
+        this.faqitotal = res.data.data.length
       });
     },
     tabboxclick1() {
@@ -682,7 +663,9 @@ export default {
     this.getOPlist({}, 1);
     this.userInfo = JSON.parse(window.sessionStorage.userInfo);
   },
-  created() {},
+  created() {
+     this.popupWindow();
+  },
 };
 </script>
 
@@ -694,6 +677,7 @@ export default {
   //     justify-content: end;
   margin-top: 10px;
 }
+
 .taskbox {
   width: 100%;
   display: inline-block;
@@ -711,13 +695,16 @@ export default {
   border-top-left-radius: 5px;
   border-top-right-radius: 5px;
   justify-content: space-between;
+
   .com-table {
     background: "#FaFaFa";
   }
+
   .span {
     float: right;
     color: orange;
   }
+
   .span1 {
     display: inline-block;
     color: blue;
@@ -727,6 +714,7 @@ export default {
     width: 120px;
     border-bottom: 2px solid blue;
   }
+
   .span2 {
     display: inline-block;
     text-align: center;
@@ -734,6 +722,7 @@ export default {
     width: 120px;
     font-weight: 900;
   }
+
   .span3 {
     display: inline-block;
     text-align: center;
@@ -741,6 +730,7 @@ export default {
     width: 120px;
     font-weight: 900;
   }
+
   span {
     cursor: pointer;
   }
@@ -776,6 +766,7 @@ export default {
     margin-left: 20px;
   }
 }
+
 .fatherbox {
   background: #fafafa;
   padding: 10px;
@@ -784,11 +775,13 @@ export default {
   border-bottom-right-radius: 5px;
   width: 100%;
 }
-.pageBox {
-}
+
+.pageBox {}
+
 ::v-deep .gutter {
   background: #fafafa;
 }
+
 ::v-deep .is-scrolling-none {
   background: #fafafa;
 }

Fichier diff supprimé car celui-ci est trop grand
+ 1284 - 0
src/pages/main/leader/risk/riskManagement.vue


Fichier diff supprimé car celui-ci est trop grand
+ 1444 - 0
src/pages/main/leader/risk/riskMaterials.vue


+ 3 - 0
src/pages/main/memberFamily/dataStatistics.vue

@@ -30,6 +30,9 @@
 						</template>
 					</el-table-column>
 				</el-table>
+				<el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
 			</div>
 		</div>
 	</fullscreen>

Fichier diff supprimé car celui-ci est trop grand
+ 679 - 642
src/pages/main/memberFamily/haveInHand.vue


+ 2 - 1
src/pages/main/memberFamily/index.vue

@@ -17,7 +17,8 @@
 						
 
 					</div>
-					<div @click="advmaterial(typeList[1])" v-if="roleStatus <= 1">
+					<!-- <div @click="advmaterial(typeList[1])" v-if="roleStatus <= 1"> -->
+					<div @click="advmaterial(typeList[1])" v-if="roleStatus <= 2">
 						
 							<span><i class="el-icon-folder-opened"></i></span>
 							<span>信息汇总</span>

+ 51 - 4
src/pages/main/officialAccount/officialAccountadd.vue

@@ -62,7 +62,7 @@
 				</div>
 			</el-form>
 		</div>
-		<el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
+		<!-- <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
 			:modal-append-to-body="false" :close-on-click-modal="false">
 			<div>
 
@@ -85,14 +85,45 @@
 					<el-button @click="checkexa = false">取 消</el-button>
 				</div>
 			</div>
-		</el-dialog>
+		</el-dialog> -->
+		<el-dialog
+        title="选择审批人"
+        :visible.sync="checkexa"
+        width="100%"
+        style="height: 100%"
+        :fullscreen="true"
+        :destroy-on-close="true"
+        :modal-append-to-body="false"
+        :close-on-click-modal="false"
+      >
+        <div style="height: 100%">
+          <el-form :model="infolist" ref="infolist" style="height: 100%">
+            <el-form-item prop="visiblec" style="height: 100%">
+              <!-- <span style="width: 80px">审批人员</span> -->
+              <deptTreeOnly
+                @treeCheck="treeCheckonly"
+                :defaultList="defaultList"
+                :type="depttype"
+                :closeList="closeList"
+              ></deptTreeOnly>
+              <div style="text-align: center; margin-top: 30px">
+                <el-button type="primary" @click="checkProcessUser()"
+                  >确 定</el-button
+                >
+                <el-button @click="checkexa = false">取 消</el-button>
+              </div>
+              
+            </el-form-item>
+          </el-form>
+        </div>
+      </el-dialog>
 	</div>
 </template>
 <script>
 	import mySearch from "../../../components/search.vue";
 	import myUpload from "../../../components/upload.vue";
-	import deptTreeOnly from "../../../components/deptTreeOnly.vue"
-
+	// import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+	import deptTreeOnly from "../../../components/newTree.vue";
 	export default {
 		components: {
 			mySearch,
@@ -141,12 +172,25 @@
 			}
 		},
 		methods: {
+				checkProcessUser() {
+                let _this = this;
+                if (_this.treeListonly.length > 1) {
+                    _this.$message({
+                    message: "只能选择一个人",
+                    type: "error",
+                    });
+                } else {
+                    _this.dialogCli(2);
+                }
+                },
 			deletes() {
 				this.treeListonly = {};
 				this.closeList = !this.closeList;
 			},
 			treeCheckonly(v) {
 				this.treeListonly = v;
+				this.treeListonly.leaderAuditName = v[0].label;
+				this.treeListonly.leaderAuditNo = v[0].key;
 			},
 			chocomp(v) {
 				this.company = [];
@@ -337,6 +381,9 @@
 	}
 </script>
 <style scoped lang="scss">
+	  ::v-deep .el-dialog .flex-box{
+        height: 400px;
+    }
 	.img-box {
 		height: calc(100vh - 240px);
 		overflow-y: scroll;

+ 62 - 3
src/pages/main/outCallDemand/index.vue

@@ -230,7 +230,49 @@
 				</div>
 			</div>
 		</el-dialog>
-        <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
+		 <el-dialog
+        title="选择审批人"
+        :visible.sync="checkexa"
+        width="100%"
+        style="height: 100%"
+        :fullscreen="true"
+        :destroy-on-close="true"
+        :modal-append-to-body="false"
+        :close-on-click-modal="false"
+      >
+        <div style="height: 100%">
+          <el-form :model="infolist" ref="infolist" style="height: 100%">
+            <el-form-item prop="visiblec" style="height: 100%">
+              <!-- <span style="width: 80px">审批人员</span> -->
+              <deptTreeOnly
+                @treeCheck="treeCheckonly"
+                :defaultList="defaultList"
+                :type="depttype"
+                :closeList="closeList"
+              ></deptTreeOnly>
+              <div style="text-align: center; margin-top: 30px">
+                <el-button type="primary" @click="checkProcessUser()"
+                  >确 定</el-button
+                >
+				<!-- <el-button type="primary" @click="dialogCliadd" v-if="!visionchonly">确 定</el-button>
+        			<el-button type="primary" @click="dialogCli(2)" v-if="visionchonly">确 定</el-button> -->
+                <el-button @click="checkexa = false">取 消</el-button>
+              </div>
+              <!-- <div class="tree treeUser">
+                <p>
+                  {{ treeListonly.leaderAuditName }}
+                  <i
+                    v-if="treeListonly.leaderAuditName"
+                    @click="treeDelete()"
+                    class="el-icon-error"
+                  ></i>
+                </p>
+              </div> -->
+            </el-form-item>
+          </el-form>
+        </div>
+      </el-dialog>
+        <!-- <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
         	:modal-append-to-body="false" :close-on-click-modal="false">
         	<div>
 
@@ -254,7 +296,7 @@
         			<el-button @click="checkexa = false">取 消</el-button>
         		</div>
         	</div>
-        </el-dialog>
+        </el-dialog> -->
 
 	</fullscreen>
 
@@ -265,7 +307,8 @@
 	import toolList from '../../../components/toolList'
 	import myUpload from '../../../components/upload'
 	import uploadDown from '../../../components/uploadDown.vue'
-    import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+    // import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+	import deptTreeOnly from "../../../components/newTree.vue";
 
 	export default {
 		components: {
@@ -532,12 +575,25 @@
 			}
 		},
 		methods: {
+			checkProcessUser() {
+                let _this = this;
+                if (_this.treeListonly.length > 1) {
+                    _this.$message({
+                    message: "只能选择一个人",
+                    type: "error",
+                    });
+                } else {
+                    _this.dialogCliadd();
+                }
+                },
             deletes() {
             	this.treeListonly = {};
             	this.closeList = !this.closeList;
             },
             treeCheckonly(v) {
             	this.treeListonly = v;
+				this.treeListonly.leaderAuditName = v[0].label;
+				this.treeListonly.leaderAuditNo = v[0].key;
             },
 			closedia() {
 				this.infolist = {
@@ -937,6 +993,9 @@
 	}
 </script>
 <style scoped lang="scss">
+	::v-deep .el-dialog .flex-box{
+        height: 400px;
+    }
 	.onetab {
 		margin-bottom: 20px;
 		padding: 0 20px;

+ 1 - 1
src/pages/main/performance/components/dialog.vue

@@ -16,7 +16,7 @@
     <div slot="footer">
       <slot name="footer">
         <el-button @click="handleCancel" size="small">取消</el-button>
-        <el-button @click="handleConfirm" type="primary" size="small" :disabled="this.BtnDisabled"
+        <el-button @click="handleConfirm" type="primary" size="small" :disabled="BtnDisabled"
           >确定</el-button
         >
       </slot>

+ 2 - 2
src/pages/main/terminal/advertisement.vue

@@ -24,10 +24,10 @@
                     <div class="adv-tit" @click="jumpinfo">
                         <span>广告设计费明细</span>
                     </div>
-                    <div class="adv-tit adv-add" @click="advadd">
+                    <!-- <div class="adv-tit adv-add" @click="advadd">
                         <i class="el-icon-plus"></i>
                         <span>申请</span>
-                    </div>
+                    </div> -->
                 </div>
             </div>
         </div>

+ 23 - 60
src/pages/main/terminals/advchecks.vue

@@ -4,27 +4,13 @@
       <toolList @iconCli="iconCli" :tooltit="tooltit"></toolList>
       <div class="search">
         <el-select v-model="advstatus" @change="advchange">
-          <el-option
-            v-for="items in advopt"
-            :key="items.id"
-            :label="items.name"
-            :value="items.id"
-          >
+          <el-option v-for="items in advopt" :key="items.id" :label="items.name" :value="items.id">
           </el-option>
         </el-select>
       </div>
       <div class="tabbox">
-        <el-table
-          height="calc(100% - 40px)"
-          class="com-table"
-          ref="multipleTable"
-          :data="tableData"
-          tooltip-effect="dark"
-          size="small"
-          border
-          style="width: 100%"
-          v-loading="loading"
-        >
+        <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+          tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
           <el-table-column prop="process_id" label="工单编号">
           </el-table-column>
           <el-table-column prop="need_name" label="工单标题"> </el-table-column>
@@ -36,20 +22,10 @@
           <el-table-column prop="taskName" label="状态"> </el-table-column>
           <el-table-column label="操作" width="120px" align="center">
             <template slot-scope="scope">
-              <el-button
-                size="mini"
-                type="primary"
-                @click="dialogCheck(scope.row, 1)"
-                >查看</el-button
-              >
+              <el-button size="mini" type="primary" @click="dialogCheck(scope.row, 1)">查看</el-button>
               <!--<el-button size="mini" type="danger" v-if="scope.row.sts==3"-->
-              <el-button
-                size="mini"
-                v-if="scope.row.status === '1'"
-                type="danger"
-                @click="dialogCheck(scope.row, 2)"
-                >审核</el-button
-              >
+              <el-button size="mini" v-if="scope.row.status === '1'" type="danger" @click="dialogCheck(scope.row, 2)">审核
+              </el-button>
               <!-- <el-button
                 v-if="
                   userInfo.loginName == scope.row.opName && scope.row.sts == '3'
@@ -62,24 +38,12 @@
             </template>
           </el-table-column>
         </el-table>
-        <el-pagination
-          class="pageBox"
-          @current-change="currchange"
-          layout="prev, pager, next"
-          background
-          :total="total"
-        >
+        <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+          :total="total">
         </el-pagination>
       </div>
-      <el-dialog
-        title="广告管理"
-        v-if="dialogStatus"
-        :visible.sync="dialogStatus"
-        width="80%"
-        :destroy-on-close="true"
-        :modal-append-to-body="false"
-        :close-on-click-modal="false"
-      >
+      <el-dialog title="广告管理" v-if="dialogStatus" :visible.sync="dialogStatus" width="80%" :destroy-on-close="true"
+        :modal-append-to-body="false" :close-on-click-modal="false">
         <div>
           <advert
             v-if="typestatsu === 2"
@@ -92,14 +56,8 @@
         </div>
       </el-dialog>
 
-      <el-dialog
-        title="定稿素材"
-        :visible.sync="dialogStatusc"
-        width="50%"
-        :destroy-on-close="true"
-        :modal-append-to-body="false"
-        :close-on-click-modal="false"
-      >
+      <el-dialog title="定稿素材" :visible.sync="dialogStatusc" width="50%" :destroy-on-close="true"
+        :modal-append-to-body="false" :close-on-click-modal="false">
         <!-- <el-form>
                     <el-form-item class="info-line online">
                         <span>素材类型</span>
@@ -157,6 +115,7 @@ export default {
       dialogStatusc: false,
       loading: false,
       changeinfo: false,
+      saveStatus: false,
       advstatus: "",
       advopt: [
         {
@@ -198,6 +157,8 @@ export default {
         this.tableData.map((item) => {
           item.status = "1";
         });
+        this.total = res.data.totalRecord;
+        this.loading = false;
       });
 
       // console.log(this.$utilflow);
@@ -337,6 +298,7 @@ export default {
     },
     //获取列表
     getList(e) {
+      console.log(e);
       switch (e) {
         //我的待办
         case "0":
@@ -456,8 +418,10 @@ export default {
     },
     //处理申请
     dialogCheck(n, v) {
+
       if (v == 1) {
         this.changeinfo = false;
+        this.saveStatus = false
       } else {
         if(n.taskName == "科室经理审批"){
           this.draftStatus = false;
@@ -577,13 +541,14 @@ export default {
   },
   mounted() {
     this.userInfo = JSON.parse(window.sessionStorage.userInfo);
-    this.advstatus = this.$route.query.type;
-    this.clickStatus = this.$route.query.type
-    this.getList(this.$route.query.type);
+    this.advstatus = String(this.$route.query.type);
+    this.clickStatus = this.$route.query.type;
+    this.getList(this.advstatus);
+
     this.ctrlbtn();
     this.gettype();
   },
-  created() {},
+  created() { },
 };
 </script>
 <style scoped lang="scss">
@@ -681,6 +646,4 @@ export default {
     width: calc(100% - 100px);
   }
 }
-
-
 </style>

+ 1 - 1
src/pages/main/terminals/advertincreases.vue

@@ -665,7 +665,7 @@ export default {
                 type: "success",
               });
               _this.$router.push({
-                path: "/advcheck",
+                path: "/advchecks",
                 query: {
                   type: 0,
                 },

+ 54 - 85
src/pages/main/terminals/components/adverts.vue

@@ -35,11 +35,7 @@
           </el-form-item>
           <el-form-item prop="proposer">
             <span>申请人</span>
-            <el-input
-              disabled
-              v-model="infoApply.proposer"
-              placeholder="申请人"
-            ></el-input>
+            <el-input disabled v-model="infoApply.proposer" placeholder="申请人"></el-input>
           </el-form-item>
         </div>
         <div class="info-line">
@@ -65,11 +61,7 @@
         <div class="info-line">
           <el-form-item prop="filenum">
             <span>文件编号</span>
-            <el-input
-              disabled
-              v-model="infoApply.filenum"
-              placeholder="文件编号"
-            >
+            <el-input disabled v-model="infoApply.filenum" placeholder="文件编号">
             </el-input>
           </el-form-item>
           <el-form-item>
@@ -163,15 +155,8 @@
             :dialogStatus="uploadstatus"
           ></uploadDown>
         </div>
-        <div
-          style="padding: 0 20px 0 100px; margin-bottom: 20px"
-          v-if="uploadsts"
-        >
-          <myUpload
-            @uploadBack="uploadBack"
-            :fileInfo="fileInfo"
-            :fileList="fileInfo.fileList"
-          >
+        <div style="padding: 0 20px 0 100px; margin-bottom: 20px" v-if="uploadsts">
+          <myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
           </myUpload>
         </div>
         <!-- <el-form-item class="info-line online" v-if="changeinfo">
@@ -187,52 +172,26 @@
       <div v-if="suppSts" class="supp-box">
         <span style="padding-left: 20px; padding-top: 8px">简易设计</span>
         <div v-for="item in gys" class="suppdiv">
-          <el-checkbox
-            :disabled="!changeinfo || !suppdis"
-            v-model="item.sts"
-            @change="cancel(item)"
-            ><span>{{ item.type }}</span></el-checkbox
-          >
+          <el-checkbox :disabled="!changeinfo || !suppdis" v-model="item.sts" @change="cancel(item)"><span>{{ item.type
+          }}</span></el-checkbox>
           <div class="box">
             <div v-for="one in item.list" class="supp-list">
-              <el-select
-                :disabled="!changeinfo || !suppdis"
-                v-model="one.cho"
-                placeholder="请选择供应商"
-                @change="priceone(one, item)"
-              >
-                <el-option
-                  v-for="items in item.supplier"
-                  :key="items.name"
-                  :label="items.name"
-                  :value="items.name"
-                >
+              <el-select :disabled="!changeinfo || !suppdis" v-model="one.cho" placeholder="请选择供应商"
+                @change="priceone(one, item)">
+                <el-option v-for="items in item.supplier" :key="items.name" :label="items.name" :value="items.name">
                 </el-option>
               </el-select>
-              <el-input
-                :disabled="!changeinfo || !suppdis"
-                v-model="one.num"
-                placeholder="数量"
-                @input="numChange(one)"
-              ></el-input>
+              <el-input :disabled="!changeinfo || !suppdis" v-model="one.num" placeholder="数量" @input="numChange(one)">
+              </el-input>
             </div>
           </div>
-          <el-button @click="item.list.push({})" type="text" v-if="suppdis"
-            >继续添加</el-button
-          >
+          <el-button @click="item.list.push({})" type="text" v-if="suppdis">继续添加</el-button>
         </div>
       </div>
 
       <div style="margin-bottom: 20px; padding: 0 20px">
-        <el-table
-          class="com-table"
-          ref="multipleTable"
-          :data="rovaList"
-          tooltip-effect="dark"
-          size="small"
-          border
-          style="width: 100%"
-        >
+        <el-table class="com-table" ref="multipleTable" :data="rovaList" tooltip-effect="dark" size="small" border
+          style="width: 100%">
           <el-table-column prop="taskId" label="编号"> </el-table-column>
           <el-table-column prop="taskName" label="环节"> </el-table-column>
           <el-table-column prop="assignee" label="处理人"> </el-table-column>
@@ -242,22 +201,9 @@
         </el-table>
       </div>
     </div>
-    <el-dialog
-      title="选择审批人"
-      v-if="checkexa"
-      :before-close="handleClose"
-      :visible.sync="checkexa"
-      :modal="false"
-      width="100%"
-      :destroy-on-close="true"
-      :modal-append-to-body="false"
-      :close-on-click-modal="false"
-    >
-      <Workflow
-        :list="infoApply"
-        :requestForm="requestForm"
-        @updateForm="updateForm"
-      />
+    <el-dialog title="选择审批人" v-if="checkexa" :before-close="handleClose" :visible.sync="checkexa" :modal="false"
+      width="100%" :destroy-on-close="true" :modal-append-to-body="false" :close-on-click-modal="false">
+      <Workflow :list="infoApply" :requestForm="requestForm" @updateForm="updateForm" />
     </el-dialog>
     <div slot="footer" class="dialog-footer">
       <el-button v-if="changeinfo" type="primary" @click="dialogCli(2)"
@@ -535,20 +481,22 @@ export default {
       });
     },
     dialogCli(v) {
-      this.checkexa = true;
+      if(v ==2 ){
+        this.checkexa = true;
+      }
       //取消操作
-      // if (v === 1) {
-      //   this.$http({
-      //     url: "/market/ggsj/update",
-      //     method: "post",
-      //     headers: {
-      //       "Content-Type": "application/json",
-      //     },
-      //     data: this.infoApply,
-      //   }).then((res) => {
-      //     console.log(res);
-      //   });
-      // }
+      if (v == 4) {
+        this.$http({
+          url: "/market/ggsj/update",
+          method: "post",
+          headers: {
+            "Content-Type": "application/json",
+          },
+          data: this.infoApply,
+        }).then((res) => {
+          this.$message.success('保存成功')
+        });
+      }
       if (v === 3) {
         console.log(this.gys);
         this.$emit("closeEdio");
@@ -585,7 +533,7 @@ export default {
             },
             data: list,
           }).then((res) => {
-            console.log(res);
+            this.$message.success('保存成功')
           });
           //调用接口
           // this.suppSts = true;
@@ -827,6 +775,20 @@ export default {
       this.checkexa = false;
     },
   },
+  computed: {
+    pickerOptions: function () {
+      return {
+        disabledDate(time) {
+          // if(time.getTime() < Date.now() - 8.64e7 || (time.getTime() > Date.now() && time.getTime() < Date.now() + 8.64e7*3) ){
+          //     return true
+          // }
+          if (time.getTime() < Date.now() + 8.64e7 * 3) {
+            return true;
+          }
+        },
+      };
+    },
+  },
   mounted() {
     this.getQueryList(this.componentInfo); //获取表单上传列表,爆炸贴
     this.clickForm(this.componentInfo);
@@ -924,30 +886,37 @@ export default {
   text-align: right;
   padding: 15px 20px;
 }
+
 .supp-box {
   span {
     width: 100px;
     display: inline-block;
   }
+
   .suppdiv {
     width: calc(100% - 110px);
     float: right;
+
     .el-checkbox {
       vertical-align: top;
       padding-top: 10px;
     }
   }
+
   .box {
     width: calc(100% - 200px);
     display: inline-block;
     // float: right;
   }
+
   .supp-list {
     margin-bottom: 20px;
+
     .el-select {
       width: 45%;
       margin-right: 5%;
     }
+
     .el-input {
       width: 45%;
       margin-right: 5%;

src/pages/main/terminals/components/terminal.vue → src/pages/main/terminals/components/terminals.vue


+ 92 - 13
src/pages/main/vendor/Export2Excel.js

@@ -1,8 +1,38 @@
 /* eslint-disable */
 require('script-loader!file-saver');
 // require('script-loader!./Blob');
-const {blob} = require('./Blob')
+const { blob } = require('./Blob')
+// /static/js/util.js?v=1.0.0
 require('script-loader!xlsx/dist/xlsx.core.min');
+const getNowDate = () => {
+    var date = new Date();
+    var sign2 = ":";
+    var year = date.getFullYear() // 年
+    var month = date.getMonth() + 1; // 月
+    var day = date.getDate(); // 日
+    var hour = date.getHours(); // 时
+    var minutes = date.getMinutes(); // 分
+    var seconds = date.getSeconds() //秒
+    var weekArr = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天'];
+    var week = weekArr[date.getDay()];
+    // 给一位数的数据前面加 “0”
+    if (month >= 1 && month <= 9) {
+        month = "0" + month;
+    }
+    if (day >= 0 && day <= 9) {
+        day = "0" + day;
+    }
+    if (hour >= 0 && hour <= 9) {
+        hour = "0" + hour;
+    }
+    if (minutes >= 0 && minutes <= 9) {
+        minutes = "0" + minutes;
+    }
+    if (seconds >= 0 && seconds <= 9) {
+        seconds = "0" + seconds;
+    }
+    return year + "-" + month + "-" + day + " " + hour + sign2 + minutes + sign2 + seconds;
+}
 function generateArray(table) {
     var out = [];
     var rows = table.querySelectorAll('tr');
@@ -29,7 +59,7 @@ function generateArray(table) {
             if (rowspan || colspan) {
                 rowspan = rowspan || 1;
                 colspan = colspan || 1;
-                ranges.push({s: {r: R, c: outRow.length}, e: {r: R + rowspan - 1, c: outRow.length + colspan - 1}});
+                ranges.push({ s: { r: R, c: outRow.length }, e: { r: R + rowspan - 1, c: outRow.length + colspan - 1 } });
             }
             ;
 
@@ -52,16 +82,16 @@ function datenum(v, date1904) {
 
 function sheet_from_array_of_arrays(data, opts) {
     var ws = {};
-    var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}};
+    var range = { s: { c: 10000000, r: 10000000 }, e: { c: 0, r: 0 } };
     for (var R = 0; R != data.length; ++R) {
         for (var C = 0; C != data[R].length; ++C) {
             if (range.s.r > R) range.s.r = R;
             if (range.s.c > C) range.s.c = C;
             if (range.e.r < R) range.e.r = R;
             if (range.e.c < C) range.e.c = C;
-            var cell = {v: data[R][C]};
+            var cell = { v: data[R][C] };
             if (cell.v == null) continue;
-            var cell_ref = XLSX.utils.encode_cell({c: C, r: R});
+            var cell_ref = XLSX.utils.encode_cell({ c: C, r: R });
 
             if (typeof cell.v === 'number') cell.t = 'n';
             else if (typeof cell.v === 'boolean') cell.t = 'b';
@@ -93,6 +123,7 @@ function s2ab(s) {
 }
 
 export function export_table_to_excel(id) {
+
     var theTable = document.getElementById(id);
     var oo = generateArray(theTable);
     var ranges = oo[1];
@@ -112,20 +143,29 @@ export function export_table_to_excel(id) {
     wb.SheetNames.push(ws_name);
     wb.Sheets[ws_name] = ws;
 
-    var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
+    var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: false, type: 'binary' });
 
-    saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx")
+    saveAs(new Blob([s2ab(wbout)], { type: "application/octet-stream" }), "test.xlsx")
+    ajaxJson("数据加载中", '/market/clickCurrenLog/add', {//导出请求日志接口
+        "opName": JSON.parse(window.sessionStorage.userInfo).loginNo,
+        "fileName": "test.xlsx",
+        "opTime": getNowDate(),
+    }, function (res) {
+        console.log(res)
+    });
 }
 
 function formatJson(jsonData) {
     console.log(jsonData)
 }
-export function export_json_to_excel(th, jsonData, defaultTitle,   autoWidth = true,
-                                     bookType = 'xlsx',
-                                     myRowFont = '1') {
 
-    /* original data */
 
+export function export_json_to_excel(th, jsonData, defaultTitle, autoWidth = true,
+    bookType = 'xlsx',
+    myRowFont = '1') {
+
+    /* original data */
+    console.log('11111')
     var data = jsonData;
     data.unshift(th);
     var ws_name = "SheetJS";
@@ -167,7 +207,46 @@ export function export_json_to_excel(th, jsonData, defaultTitle,   autoWidth = t
     wb.SheetNames.push(ws_name);
     wb.Sheets[ws_name] = ws;
 
-    var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
+    var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: false, type: 'binary' });
     var title = defaultTitle || '列表'
-    saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), title + ".xlsx")
+    saveAs(new Blob([s2ab(wbout)], { type: "application/octet-stream" }), title + ".xlsx")
+    ajaxJson("数据加载中", '/market/clickCurrenLog/add', {//导出请求日志接口
+        "opName": JSON.parse(window.sessionStorage.userInfo).loginNo,
+        "fileName": title + ".xlsx",
+        "opTime": getNowDate(),
+    }, function (res) {
+        console.log(res)
+    });
+}
+
+
+function ajaxJson(msg, url, param, callBack, beforeSend, async) {
+    $.ajax({
+        type: "POST",
+        url: url,
+        global: true,
+        data: JSON.stringify(param),
+        contentType: "application/json;charset=UTF-8",
+        beforeSend: function (req) {
+
+            req.setRequestHeader("agileauthtoken", JSON.parse(window.sessionStorage.agileauthtoken).replace(/"/g, ''));
+
+            if ($.isFunction(beforeSend)) {
+
+                beforeSend.call(this, req);
+            }
+
+
+        },
+        xhrFields: {
+            withCredentials: false //跨域session保持
+        },
+        async: async == undefined ? true : async,
+        dataType: "json",
+        success: function (page) {
+        },
+        error: function (xhr, textStatus, errorThrow) {
+        }
+    });
+
 }

+ 26 - 2
src/router/index.js

@@ -552,6 +552,18 @@ const routes = [{
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/advertising/index.vue'], resolve)
         },
         {
+            meta: { name: '验收打分单', keepAlive: false },
+            path: '/materialAppNum',
+            name: 'materialAppNum',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/advertising/materialAppNum.vue'], resolve)
+        },
+        {
+            meta: { name: '宣传物料制作费用明细', keepAlive: false },
+            path: '/materialAppMessage',
+            name: 'materialAppMessage',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/advertising/materialAppMessage.vue'], resolve)
+        },
+        {
             meta: { name: '宣传费台账', keepAlive: false },
             path: '/publicity',
             name: 'publicity',
@@ -2109,14 +2121,13 @@ const routes = [{
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcel/index'], resolve)
         },
         {
-
             meta: {
                 name: '协同编辑',
                 keepAlive: false
             },
             path: '/editOnline',
             name: 'editOnline',
-            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/luckySheet/index'], resolve)
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcel/index'], resolve)
         },
         {
             meta: {
@@ -2163,6 +2174,19 @@ const routes = [{
             component: resolve => require(['../pages/main/processruns/processruns.vue'], resolve),
             meta: { title: '运行流程' }
         }
+        ,{
+            meta: { name: '风险防控管理', keepAlive: false },
+            path: '/riskMaterials',
+            name: 'riskMaterials',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/leader/risk/riskMaterials.vue'], resolve)
+        },{
+            meta: { name: '风险防控管理', keepAlive: false },
+            path: '/riskManagement',
+            name: 'riskManagement',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/leader/risk/riskManagement.vue'], resolve)
+        },
     ]
 },
 {

+ 49 - 1
src/vendor/Export2Excel.js

@@ -115,13 +115,20 @@ export function export_table_to_excel(id) {
     var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
 
     saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx")
+    ajaxJson("数据加载中", '/market/clickCurrenLog/add', {//导出请求日志接口
+        "opName": JSON.parse(window.sessionStorage.userInfo).loginNo,
+        "fileName": "test.xlsx",
+        "opTime": getNowDate(),
+    }, function (res) {
+        console.log(res)
+    });
+    
 }
 
 function formatJson(jsonData) {
     console.log(jsonData)
 }
 export function export_json_to_excel(th, jsonData, defaultTitle) {
-
     /* original data */
 
     var data = jsonData;
@@ -138,4 +145,45 @@ export function export_json_to_excel(th, jsonData, defaultTitle) {
     var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
     var title = defaultTitle || '列表'
     saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), title + ".xlsx")
+    
+    ajaxJson("数据加载中", '/market/clickCurrenLog/add', {//导出请求日志接口
+        "opName": JSON.parse(window.sessionStorage.userInfo).loginNo,
+        "fileName":  title + ".xlsx",
+        "opTime": getNowDate(),
+    }, function (res) {
+        console.log(res)
+    });
 }
+
+
+function ajaxJson(msg, url, param, callBack, beforeSend, async) {
+    $.ajax({
+        type: "POST",
+        url: url,
+        global: true,
+        data: JSON.stringify(param),
+        contentType: "application/json;charset=UTF-8",
+        beforeSend: function (req) {
+
+            req.setRequestHeader("agileauthtoken", JSON.parse(window.sessionStorage.agileauthtoken).replace(/"/g, ''));
+
+            if ($.isFunction(beforeSend)) {
+
+                beforeSend.call(this, req);
+            }
+
+
+        },
+        xhrFields: {
+            withCredentials: false //跨域session保持
+        },
+        async: async == undefined ? true : async,
+        dataType: "json",
+        success: function (page) {
+        },
+        error: function (xhr, textStatus, errorThrow) {
+        }
+    });
+
+}
+

+ 23 - 0
vue.config.js

@@ -94,7 +94,11 @@ module.exports = {
         proxy: {
             // 开发环境变化可注释 ⬇️⬇️
             "/market/CMK": {
+<<<<<<< HEAD
                 target: "http://43.138.50.94:9600",
+=======
+                target: "http://192.168.2.124:9113",
+>>>>>>> 994fc041f082ba5e33229f3e58f7c4b6c7b355c4
                 ws: false,
                 changeOrigin: true,
                 pathRewrite: {
@@ -102,7 +106,11 @@ module.exports = {
                 },
             },
             "/market/mk": {
+<<<<<<< HEAD
                 target: "http://43.138.50.94:9600",
+=======
+                target: "http://192.168.2.124:9113",
+>>>>>>> 994fc041f082ba5e33229f3e58f7c4b6c7b355c4
                 ws: false,
                 changeOrigin: true,
                 pathRewrite: {
@@ -110,7 +118,11 @@ module.exports = {
                 },
             },
             "/market/techcentergj": {
+<<<<<<< HEAD
                 target: "http://43.138.50.94:9600",
+=======
+                target: "http://192.168.2.124:9113",
+>>>>>>> 994fc041f082ba5e33229f3e58f7c4b6c7b355c4
                 ws: false,
                 changeOrigin: true,
                 pathRewrite: {
@@ -118,7 +130,11 @@ module.exports = {
                 },
             },
             "/mkWangge": {
+<<<<<<< HEAD
                 target: "http://43.138.50.94:9600",
+=======
+                target: "http://192.168.2.124:9113",
+>>>>>>> 994fc041f082ba5e33229f3e58f7c4b6c7b355c4
                 ws: false,
                 changeOrigin: true,
                 pathRewrite: {
@@ -142,10 +158,17 @@ module.exports = {
                 // target: 'http://192.168.1.9:9600/spfm',
                 // target: 'http://127.0.0.1:9600/',
                 // target: 'http://192.168.0.156:9600/',
+<<<<<<< HEAD
                 // target: 'http://192.168.2.170:9600/',
                 // target: 'http://192.168.2.169:9600/',
                 target: "http://192.168.2.124:9600/",
                 // target:'http://43.138.50.94:9600',
+=======
+                // target: 'http://192.168.2.44:9600/',
+                target: 'http://192.168.2.124:9600/',
+                // target: "http://124.223.66.248:9600",
+                // target: "http://43.138.50.94:9600",
+>>>>>>> 994fc041f082ba5e33229f3e58f7c4b6c7b355c4
                 changeOrigin: true,
             },
         },

Fichier diff supprimé car celui-ci est trop grand
+ 1544 - 1529
yarn.lock