فهرست منبع

宣传修改1

shengbingg 2 سال پیش
والد
کامیت
7f9e37603c
69فایلهای تغییر یافته به همراه33764 افزوده شده و 1092 حذف شده
  1. 0 8
      .gitignore
  2. 3 0
      package.json
  3. 6 3
      public/index.html
  4. BIN
      public/static/file/f.xlsx
  5. BIN
      public/static/file/g.xlsx
  6. BIN
      public/static/file/h.xlsx
  7. 1 1
      public/static/js/api.config.js
  8. 508 582
      public/static/views/onlineShareExcel.html
  9. 637 0
      public/static/views/onlineShareExcelMarkets.html
  10. 720 0
      public/static/views/onlineShareExcels.html
  11. 0 19
      src/App.vue
  12. 3 2
      src/assets/js/common.js
  13. 1 0
      src/assets/js/util.js
  14. 14 8
      src/components/deptTreeUserNew.vue
  15. 30 78
      src/components/el-form.vue
  16. 23 0
      src/components/index.js
  17. 2 2
      src/components/newTree.vue
  18. 3 0
      src/components/onlyoffice-editor/index.js
  19. 140 0
      src/components/onlyoffice-editor/onlyoffice-editor.vue
  20. 21 23
      src/components/workDeptThree.vue
  21. 11 2
      src/components/workflowBase.vue
  22. 0 1
      src/components/workflowEntrance.vue
  23. 0 0
      src/components/workflowPath/workflowPath.vue
  24. 123 36
      src/config/dev.js
  25. 2 2
      src/http/api.js
  26. 4 0
      src/main.js
  27. 1928 0
      src/pages/main/accountPermissions/accountApplication.vue
  28. 1160 0
      src/pages/main/accountPermissions/accountPermissions.vue
  29. 1426 0
      src/pages/main/accountPermissions/accountdel.vue
  30. 1194 0
      src/pages/main/accountPermissions/aqbgsyList.vue
  31. 1235 0
      src/pages/main/accountPermissions/klhfsqList.vue
  32. 1248 0
      src/pages/main/accountPermissions/rltzjlList.vue
  33. 1563 0
      src/pages/main/accountPermissions/sjkdbList.vue
  34. 1253 0
      src/pages/main/accountPermissions/tyshList.vue
  35. 5 1
      src/pages/main/advertising/contractCap.vue
  36. 1420 0
      src/pages/main/applyFor/authoriZation.vue
  37. 1206 0
      src/pages/main/applyFor/backupRequire.vue
  38. 1486 0
      src/pages/main/applyFor/emergencyPlan.vue
  39. 1218 0
      src/pages/main/applyFor/internetAccess.vue
  40. 1219 0
      src/pages/main/applyFor/resourceApply.vue
  41. 1181 0
      src/pages/main/applyFor/securityAudit.vue
  42. 1588 0
      src/pages/main/applyFor/userChange.vue
  43. 11 10
      src/pages/main/bfsj/bfsjList.vue
  44. 58 12
      src/pages/main/documentCollection/documentCollectionApprovalExcel.vue
  45. 1 1
      src/pages/main/documentCollection/newTree.vue
  46. 860 0
      src/pages/main/firewall/formTable.vue
  47. 983 0
      src/pages/main/firewall/index.vue
  48. 1831 0
      src/pages/main/internetAssessment/internetAssessment.vue
  49. 0 3
      src/pages/main/leader/components/formTable.vue
  50. 398 0
      src/pages/main/leader/rli.vue
  51. 60 9
      src/pages/main/memberFamily/dataStatistics.vue
  52. 193 110
      src/pages/main/memberFamily/empInfoFilling.vue
  53. 30 4
      src/pages/main/memberFamily/employeeInfo.vue
  54. 5 2
      src/pages/main/memberFamily/haveInHand.vue
  55. 48 20
      src/pages/main/memberFamily/index.vue
  56. 60 108
      src/pages/main/onlineExcel/index.vue
  57. 40 13
      src/pages/main/onlineExcelMarket/index.vue
  58. 1011 0
      src/pages/main/onlineExcelMarkets/index.vue
  59. 1098 0
      src/pages/main/onlineExcels/index.vue
  60. 307 0
      src/pages/main/onlineOffice/index.vue
  61. 629 0
      src/pages/main/opcode/formTables.vue
  62. 957 0
      src/pages/main/opcode/index.vue
  63. 6 7
      src/pages/main/performance/mould.vue
  64. 1210 0
      src/pages/main/userList/docAppr.vue
  65. 1196 0
      src/pages/main/userList/userList.vue
  66. 2 2
      src/pages/main/workflowdef/index.vue
  67. 151 7
      src/router/index.js
  68. 10 9
      vue.config.js
  69. 27 7
      yarn.lock

+ 0 - 8
.gitignore

@@ -1,17 +1,9 @@
 .DS_Store
 .DS_Store
 node_modules
 node_modules
 /dist
 /dist
-<<<<<<< HEAD
-<<<<<<< HEAD
-/dist-test
-=======
 dist.zip
 dist.zip
->>>>>>> b1d2e0323329f3f9e21c34540cf9e3eb31cf89a8
-
-=======
 /dist-test
 /dist-test
 dist.zip
 dist.zip
->>>>>>> 2e174cfb914257ff0e2bab0e76423d7d1fe78aba
 # local env files
 # local env files
 .env.local
 .env.local
 .env.*.local
 .env.*.local

+ 3 - 0
package.json

@@ -18,6 +18,7 @@
     "@fullcalendar/daygrid": "^5.10.1",
     "@fullcalendar/daygrid": "^5.10.1",
     "@fullcalendar/interaction": "^5.10.1",
     "@fullcalendar/interaction": "^5.10.1",
     "@fullcalendar/vue": "^5.10.1",
     "@fullcalendar/vue": "^5.10.1",
+    "@onlyoffice/document-editor-vue": "^1.3.0",
     "@tinymce/tinymce-vue": "^3.0.1",
     "@tinymce/tinymce-vue": "^3.0.1",
     "axios": "^0.19.0",
     "axios": "^0.19.0",
     "canvg": "^3.0.7",
     "canvg": "^3.0.7",
@@ -33,8 +34,10 @@
     "jquery-ui": "^1.12.1",
     "jquery-ui": "^1.12.1",
     "js-audio-recorder": "^1.0.7",
     "js-audio-recorder": "^1.0.7",
     "jsplumb": "^2.15.5",
     "jsplumb": "^2.15.5",
+    "lodash.merge": "^4.6.2",
     "luckyexcel": "^1.0.1",
     "luckyexcel": "^1.0.1",
     "moment": "^2.29.1",
     "moment": "^2.29.1",
+    "onlyoffice-vue": "^1.0.1",
     "qs": "^6.9.1",
     "qs": "^6.9.1",
     "sass": "^1.46.0",
     "sass": "^1.46.0",
     "tinymce": "^5.7.1",
     "tinymce": "^5.7.1",

+ 6 - 3
public/index.html

@@ -9,6 +9,9 @@
   <title>市场经营管理平台</title>
   <title>市场经营管理平台</title>
   <script src="static/js/crypoto-js.js"></script>
   <script src="static/js/crypoto-js.js"></script>
  
  
+  <link rel='xlsx' href='./static/f.xlsx' />
+  <link rel='xlsx' href='./static/g.xlsx' />
+  <link rel='xlsx' href='./static/h.xlsx' />
   <link rel='xlsx' href='./static/a.xlsx' />
   <link rel='xlsx' href='./static/a.xlsx' />
   <link rel='xlsx' href='./static/b.xlsx' />
   <link rel='xlsx' href='./static/b.xlsx' />
   <link rel='xlsx' href='./static/c.xlsx' />
   <link rel='xlsx' href='./static/c.xlsx' />
@@ -32,9 +35,9 @@
   <div id="app"></div>
   <div id="app"></div>
   <!-- built files will be auto injected -->
   <!-- built files will be auto injected -->
   <script type="text/javascript">
   <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://192.168.0.103:9600/';
+    window.staticHost = 'http://10.230.26.15:8000/mkt/'; // 正式
+    // window.staticHost = 'http://10.149.85.91:8000/spfm/'; // 测试
+    // window.staticHost = 'http://192.168.2.92:9600';
     // window.staticHost = 'http://43.138.50.94:9600/';
     // window.staticHost = 'http://43.138.50.94:9600/';
 
 
     // document.title = "hello";
     // document.title = "hello";

BIN
public/static/file/f.xlsx


BIN
public/static/file/g.xlsx


BIN
public/static/file/h.xlsx


+ 1 - 1
public/static/js/api.config.js

@@ -1,6 +1,6 @@
 // api config
 // api config
 var apiConfig = {
 var apiConfig = {
-  // ctx: window.top.staticHost ? window.top.staticHost : "http://114.215.71.182:29600/spfm", //不知道干啥的
+  ctx: window.top.staticHost ? window.top.staticHost : "http://114.215.71.182:29600/spfm/",
   // http://114.215.71.182:29600/spfm/
   // http://114.215.71.182:29600/spfm/
   // ctx: "http://localhost:9601",//接口地址http://192.168.1.76:8090/ api-gateway
   // ctx: "http://localhost:9601",//接口地址http://192.168.1.76:8090/ api-gateway
   // ctx: "http://192.168.2.192:9600/",//接口地址http://192.168.1.76:8090/ api-gateway
   // ctx: "http://192.168.2.192:9600/",//接口地址http://192.168.1.76:8090/ api-gateway

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 508 - 582
public/static/views/onlineShareExcel.html


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 637 - 0
public/static/views/onlineShareExcelMarkets.html


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 720 - 0
public/static/views/onlineShareExcels.html


+ 0 - 19
src/App.vue

@@ -1,6 +1,5 @@
 <template>
 <template>
   <div id="app">
   <div id="app">
-      <!-- <router-view v-if="showRouter"></router-view> -->
     <transition name="el-fade-in">
     <transition name="el-fade-in">
         <router-view />
         <router-view />
     </transition>
     </transition>
@@ -8,24 +7,6 @@
 </template>
 </template>
 <script>
 <script>
 export default {
 export default {
-    provide (){
-    return {
-      reload: this.reload
-    }
-  },
-  data (){
-    return {
-      showRouter: true
-    }
-  },
-  methods: {
-    reload (){
-      this.showRouter = false
-      this.$nextTick(()=>{
-        this.showRouter = true
-      })
-    }
-  },
   watch: {
   watch: {
     $route(to) {
     $route(to) {
       this.$store.commit("setPages", to.path);
       this.$store.commit("setPages", to.path);

+ 3 - 2
src/assets/js/common.js

@@ -261,13 +261,14 @@ let common = {
         if (obj.type == 'post') {
         if (obj.type == 'post') {
             bus.$axios['post'](obj.url + '?t=' + Math.random(), obj.data, header)
             bus.$axios['post'](obj.url + '?t=' + Math.random(), obj.data, header)
                 .then(function (response) {
                 .then(function (response) {
-                    console.log(response.data)
+                    console.log(response)
                     if (!obj.disableLoading) {
                     if (!obj.disableLoading) {
                         loading.close()
                         loading.close()
                     }
                     }
                     if (process.env.VUE_APP_ENV == 'development' || process.env.VUE_APP_ENV == 'devs') {
                     if (process.env.VUE_APP_ENV == 'development' || process.env.VUE_APP_ENV == 'devs') {
+                        console.log(11111111111);
                         if (response.code === 1 || response.code == '1') {
                         if (response.code === 1 || response.code == '1') {
-                            bus.$message.success(response.data.message)
+                            bus.$message.success(response.message)
                             loading.close()
                             loading.close()
                             success(response.data)
                             success(response.data)
                             return response
                             return response

+ 1 - 0
src/assets/js/util.js

@@ -1,6 +1,7 @@
 //
 //
 // import accounting from 'accounting-js'
 // import accounting from 'accounting-js'
 // import idcard from 'idcard' //https://www.npmjs.com/package/idcard
 // import idcard from 'idcard' //https://www.npmjs.com/package/idcard
+
 let moment = require("moment");
 let moment = require("moment");
 let Decimal = require('decimal');
 let Decimal = require('decimal');
 let util = {
 let util = {

+ 14 - 8
src/components/deptTreeUserNew.vue

@@ -3,17 +3,20 @@
         <el-input placeholder="输入关键字进行过滤" v-model="filterText"></el-input>
         <el-input placeholder="输入关键字进行过滤" v-model="filterText"></el-input>
         <el-tree :highlight-current="true" :check-strictly="true" ref="tree" @check-change="handleCheckChange"
         <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"
             :data="treeList" node-key="id" :default-checked-keys="defaultListc" :default-expanded-keys="defaultListc"
-            @node-click="handleNodeClick" @node-expand="handleNodeClick" :filter-node-method="filterNode">
+            @node-click="handleNodeClick"  :filter-node-method="filterNode">
             <span class="custom-tree-node" slot-scope="{ node, data }" @click="cs(node)">
             <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>
                 <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>
                 <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>
                 <el-checkbox style="margin-right: 10px" v-model="node.checked" v-if="node.data.type == 1"></el-checkbox>
                 <span>{{ node.label }}</span>
                 <span>{{ node.label }}</span>
+                <!-- @node-expand="handleNodeClick" -->
             </span>
             </span>
         </el-tree>
         </el-tree>
     </div>
     </div>
 </template>
 </template>
+
 <script>
 <script>
+import loginInitVue from '../pages/main/userId/loginInit.vue';
     export default {
     export default {
         props: ["defaultList", "type", "closeList","fillLists"],
         props: ["defaultList", "type", "closeList","fillLists"],
         data() {
         data() {
@@ -112,14 +115,15 @@
                 
                 
                     
                     
                 });
                 });
+                // console.log(v.children);
                  
                  
-                    node.childNodes.forEach(m=>{
-                         this.fillLists.forEach(n=>{
-                            if(m.data.loginNoStr == n.fillNo){
-                                m.checked = true
-                            }
-                         })
-                     })
+                    // node.childNodes.forEach(m=>{
+                    //      this.fillLists.forEach(n=>{
+                    //         if(m.data.loginNoStr == n.fillNo){
+                    //             m.checked = true
+                    //         }
+                    //      })
+                    //  })
                      
                      
                 for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
                 for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
                     if (s && v.o == this.$refs.tree.store._getAllNodes()[i].data.o) {
                     if (s && v.o == this.$refs.tree.store._getAllNodes()[i].data.o) {
@@ -130,6 +134,8 @@
             },
             },
         },
         },
         created() {
         created() {
+            console.log(this.fillLists);
+            console.log(this.closeList);
             this.getTree();
             this.getTree();
             this.defaultListc = this.defaultList;
             this.defaultListc = this.defaultList;
         },
         },

+ 30 - 78
src/components/el-form.vue

@@ -1,56 +1,24 @@
 <template>
 <template>
   <div>
   <div>
     <slot :name="list.name"></slot>
     <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"
-      empty-text="暂无数据"
-      @cell-click="getRowList"
-      :cell-style="columnbackgroundStyle"
-      :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
-    >
+    <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" empty-text="暂无数据"
+      @cell-click="getRowList" :cell-style="columnbackgroundStyle"
+      :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
       <!-- 是否多选 -->
       <!-- 是否多选 -->
-      <el-table-column
-        v-if="list.isSelection"
-        :selecttable="list"
-        type="selection"
-        :width="list.width || 50"
-        align="center"
-      />
+      <el-table-column v-if="list.isSelection" :selecttable="list" type="selection" :width="list.width || 50"
+        align="center" />
 
 
       <!-- 是否需要序号 -->
       <!-- 是否需要序号 -->
-      <el-table-column
-        v-if="list.isIndex"
-        type="index"
-        label="序号"
-        width="55"
-        align="center"
-      />
+      <el-table-column v-if="list.isIndex" type="index" label="序号" width="55" align="center" />
       <template v-for="item in list.titledata">
       <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"
-        />
+        <el-table-column :key="item.prop" :prop="item.prop" :label="item.label" align="center" show-overflow-tooltip
+          :width="item.width || 100" />
       </template>
       </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"
-      >
+      <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个以上出现更多 -->
         <!-- UI统一一排放3个,4个以上出现更多 -->
         <template slot-scope="scope">
         <template slot-scope="scope">
           <!-- 三个一排的情况,去掉隐藏的按钮后的长度 -->
           <!-- 三个一排的情况,去掉隐藏的按钮后的长度 -->
@@ -58,23 +26,15 @@
             <div class="btn">
             <div class="btn">
               <div v-for="item in list.operation.data" :key="item.label">
               <div v-for="item in list.operation.data" :key="item.label">
                 <template v-if="item.type !== 'icon'">
                 <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)
-                    "
-                  >
+                  <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 }}
                     {{ item.label }}
                   </el-button>
                   </el-button>
                 </template>
                 </template>
                 <template v-else>
                 <template v-else>
-                  <i
-                    :class="[icon, item.icon]"
-                    v-bind="item"
-                    @click="item.handleRow(scope.$index, scope.row, item.label)"
-                  />
+                  <i :class="[icon, item.icon]" v-bind="item"
+                    @click="item.handleRow(scope.$index, scope.row, item.label)" />
                 </template>
                 </template>
               </div>
               </div>
             </div>
             </div>
@@ -83,28 +43,20 @@
       </el-table-column>
       </el-table-column>
     </el-table>
     </el-table>
     <div class="page">
     <div class="page">
-      <el-pagination
-        style="display: flex; flex-direction: row-reverse"
-        v-if="list.pageData.total > 0"
-        :current-page.sync="page"
-        :page-sizes="
+      <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 : [5, 10, 15, 20]
           list.pageData.pageSizes ? list.pageData.pageSizes : [5, 10, 15, 20]
-        "
-        :page-size="list.pageData.pageSize"
-        layout="total, sizes, prev, pager, next, jumper"
-        :total="list.pageData.total"
-        @size-change="handleSizeChange"
-        @current-change="handleCurrentChange"
-      />
+        " :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>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
 export default {
 export default {
-  data(){
-    return{
-     page:1
+  data() {
+    return {
+      page: 1
     }
     }
   },
   },
   props: {
   props: {
@@ -121,11 +73,11 @@ export default {
     columnbackgroundStyle({ row, column, rowIndex, columnIndex }) {
     columnbackgroundStyle({ row, column, rowIndex, columnIndex }) {
       if (column.type == "default") {
       if (column.type == "default") {
         if (column.type == "default") {
         if (column.type == "default") {
-        if (column.property === "need_name"||column.property === "needName"||column.property === "doc_title"||column.property === "document_title") {
-          return "color:#0682CD;";
+          if (column.property === "need_name" || column.property === "needName" || column.property === "doc_title" || column.property === "document_title" || column.property === "title") {
+            return "color:#0682CD;";
+          }
         }
         }
       }
       }
-      }
     },
     },
     selectionChange(val) {
     selectionChange(val) {
 
 
@@ -133,11 +85,11 @@ export default {
       this.$emit("num", val);
       this.$emit("num", val);
     },
     },
     handleAdd(name) {
     handleAdd(name) {
-     
+
       this.$emit("toolMsg", name);
       this.$emit("toolMsg", name);
     },
     },
     handleRow(index, row, lable) {
     handleRow(index, row, lable) {
-     
+
     },
     },
     handleSizeChange(val) {
     handleSizeChange(val) {
       this.$emit("changeSize", val);
       this.$emit("changeSize", val);
@@ -159,7 +111,7 @@ export default {
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
-.btn{
+.btn {
   display: flex;
   display: flex;
   justify-content: center;
   justify-content: center;
 }
 }

+ 23 - 0
src/components/index.js

@@ -0,0 +1,23 @@
+import OnlyofficeEditor from './onlyoffice-editor'
+
+const components = [
+  OnlyofficeEditor
+]
+
+const install = (Vue) => {
+  components.forEach((component) => {
+    Vue.component(component.name, component)
+  })
+}
+
+if (typeof window !== 'undefined' && window.Vue) {
+  install(window.Vue)
+}
+
+export {
+  OnlyofficeEditor
+}
+export default {
+  install,
+  version: '1.0.1'
+}

+ 2 - 2
src/components/newTree.vue

@@ -218,7 +218,7 @@ export default {
   display: flex;
   display: flex;
   width: 100%;
   width: 100%;
   justify-content: center;
   justify-content: center;
-  height: 80%;
+  height: 100%;
 }
 }
 
 
 ::v-deep .el-icon-caret-right {
 ::v-deep .el-icon-caret-right {
@@ -242,7 +242,7 @@ export default {
 }
 }
 
 
 .flex-transfer {
 .flex-transfer {
-  width: 50%;
+  width: 80%;
   height: 100%;
   height: 100%;
   margin-left: 30px;
   margin-left: 30px;
 }
 }

+ 3 - 0
src/components/onlyoffice-editor/index.js

@@ -0,0 +1,3 @@
+import OnlyofficeEditor from './onlyoffice-editor.vue'
+
+export default OnlyofficeEditor

+ 140 - 0
src/components/onlyoffice-editor/onlyoffice-editor.vue

@@ -0,0 +1,140 @@
+
+<template>
+  <div :id="editorId"></div>
+</template>
+
+<script>
+import merge from 'lodash.merge'
+let script
+// 脚本标识
+const scriptId = 'onlyoffice-editor'
+// 异步加载 api.js
+const loadScript = src => new Promise((resolve, reject) => {
+  script = document.querySelector(`#${scriptId}`)
+  // 加载成功
+  const onLoad = () => {
+    resolve()
+    script.removeEventListener('load', onLoad)
+  }
+  // 加载失败
+  const onError = () => {
+    reject(new Error(`脚本 ${src} 加载失败`))
+    script.removeEventListener('error', onError)
+  }
+  if (!script) {
+    script = document.createElement('script')
+    script.id = scriptId
+    script.src = src
+    script.addEventListener('load', onLoad)
+    script.addEventListener('error', onError)
+    document.head.appendChild(script)
+  } else if (window.DocsAPI) {
+    resolve()
+  } else {
+    script.addEventListener('load', onLoad)
+    script.addEventListener('error', onError)
+  }
+})
+export default {
+  name: 'onlyoffice-editor',
+  props: {
+    /**
+     * Onlyoffice 配置项
+     */
+    config: {
+      type: Object,
+      required: true,
+      validator: value => value && Object.prototype.toString.call(value) === '[object Object]' && Object.keys(value).length > 0
+    },
+    /**
+     * Onlyoffice api.js 路径地址
+     */
+    src: {
+      type: String,
+      required: true
+    }
+  },
+  data () {
+    return {
+      // 编辑器配置项,完整配置项参见:https://api.onlyoffice.com/editors/config/
+      editorConfig: {
+        // 编辑器宽度
+        width: 1200,
+        // 编辑器高度
+        height: 600,
+        // 编辑器类型,支持 word、cell(表格)、slide(PPT)
+        documentType: 'word',
+        // 文档配置
+        document: {
+          // 权限
+          permissions: {
+            // 启用评论
+            comment: false,
+            // 启用下载
+            download: true,
+            // 启用编辑
+            edit: true,
+            // 启用导出
+            print: true,
+            // 启用预览
+            review: true
+          }
+        },
+        editorConfig: {
+          // 回调地址
+          callbackUrl: this.src,
+          // 设置语言
+          lang: 'zh-CN',
+          // customization 字段相关配置详解:https://api.onlyoffice.com/editors/config/editor/customization
+          customization: {
+            // 强制保存
+            forcesave: true,
+            features: {
+              // 关闭拼写检查
+              spellcheck: false
+            }
+          }
+        }
+      },
+      scriptId,
+      editorId: `editor-${new Date().getTime().toString('32')}`
+    }
+  },
+  watch: {
+    config: {
+      handler () {
+        this.initEditor()
+      },
+      deep: true
+    },
+    src () {
+      this.initEditor()
+    }
+  },
+  mounted () {
+    this.initEditor()
+  },
+  beforeDestroy () {
+    // 组件销毁前销毁编辑器
+    if (this.editor) {
+      this.editor.destroyEditor()
+      this.editor = null
+    }
+  },
+  methods: {
+    // 初始化编辑器
+    initEditor () {
+      loadScript(this.src).then(this.createEditor)
+    },
+    // 创建编辑器
+    createEditor () {
+      if (this.editor) {
+        this.editor.destroyEditor()
+        this.editor = null
+      }
+      this.editor = new window.DocsAPI.DocEditor(this.editorId, merge({}, this.editorConfig, this.config))
+      this.$emit('ready', this.editor)
+    }
+  }
+}
+</script>

+ 21 - 23
src/components/workDeptThree.vue

@@ -11,8 +11,6 @@
       node-key="id"
       node-key="id"
       :default-checked-keys="defaultListc"
       :default-checked-keys="defaultListc"
       :default-expanded-keys="defaultListc"
       :default-expanded-keys="defaultListc"
-      @node-click="handleNodeClick"
-      @node-expand="handleNodeClick"
     >
     >
       <span
       <span
         class="custom-tree-node"
         class="custom-tree-node"
@@ -113,27 +111,27 @@ export default {
       ) {
       ) {
         return;
         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,
-          });
-        });
-      });
+      // 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++) {
       for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
         if (s && v.o == this.$refs.tree.store._getAllNodes()[i].data.o) {
         if (s && v.o == this.$refs.tree.store._getAllNodes()[i].data.o) {
           this.$refs.tree.store._getAllNodes()[i].expanded = true;
           this.$refs.tree.store._getAllNodes()[i].expanded = true;

+ 11 - 2
src/components/workflowBase.vue

@@ -77,7 +77,7 @@
     </div>
     </div>
     <div class="flex-footer-botton">
     <div class="flex-footer-botton">
       <div class="flex-button">
       <div class="flex-button">
-        <el-button type="primary" @click="submitWork()">提交</el-button>
+        <el-button type="primary" @click="submitWork()" :loading="buttonLoading">提交</el-button>
       </div>
       </div>
     </div>
     </div>
     <el-dialog title="修改常用意见" :visible.sync="editStatus" width="100%" :before-close="editCloses" :modal="false"
     <el-dialog title="修改常用意见" :visible.sync="editStatus" width="100%" :before-close="editCloses" :modal="false"
@@ -105,6 +105,7 @@ export default {
   data() {
   data() {
     return {
     return {
       active: "",
       active: "",
+      buttonLoading: false, //按钮loadding
       manyPeopleStatus: false, //多人处理下发任务
       manyPeopleStatus: false, //多人处理下发任务
       editStatus: false, //常用意见控制
       editStatus: false, //常用意见控制
       transferStatus: false, //转派按钮控制
       transferStatus: false, //转派按钮控制
@@ -212,6 +213,7 @@ export default {
       }
       }
     },
     },
     submitWork() {
     submitWork() {
+      this.buttonLoading = true
       //多人会签处理环节
       //多人会签处理环节
       let list = {
       let list = {
         userId: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员id
         userId: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员id
@@ -274,6 +276,8 @@ export default {
           }
           }
           if (this.isLastManStatus == true) {
           if (this.isLastManStatus == true) {
             list.lastman = "yes";
             list.lastman = "yes";
+            list.lastManDecision = "yes";
+            list.resourceId = this.nodes.currentShape[0].resourceId
           }
           }
           if (this.nodes.currentShape) {
           if (this.nodes.currentShape) {
             list.resolution = this.nodes.currentShape[0].condition.resolution;
             list.resolution = this.nodes.currentShape[0].condition.resolution;
@@ -335,6 +339,7 @@ export default {
       await this.common.httpPost(obj, success);
       await this.common.httpPost(obj, success);
       function success(data) {
       function success(data) {
         if (data != null) {
         if (data != null) {
+          console.log(123);
           if (_this.TransferStatus === true) {
           if (_this.TransferStatus === true) {
             let list = {
             let list = {
               taskId: data.taskid,
               taskId: data.taskid,
@@ -362,6 +367,9 @@ export default {
             _this.setUpdate(list);
             _this.setUpdate(list);
           }
           }
         } else {
         } else {
+          console.log(_this.list.id);
+          console.log(_this.requestForm.processDefinitionKey);
+          console.log(456);
           let list = {
           let list = {
             taskName: "结束",
             taskName: "结束",
             id: _this.list.id,
             id: _this.list.id,
@@ -381,6 +389,7 @@ export default {
         data: e,
         data: e,
       }).then((res) => {
       }).then((res) => {
         this.$emit("updateForm", true);
         this.$emit("updateForm", true);
+        this.buttonLoading = false
       });
       });
     },
     },
     //查询路径接口
     //查询路径接口
@@ -515,7 +524,7 @@ export default {
       this.$refs.defTree.userList = [];
       this.$refs.defTree.userList = [];
       this.backThree = [];
       this.backThree = [];
       this.copyUser = [];
       this.copyUser = [];
-      this.CopyStatus = false;
+      // this.CopyStatus = false;
       this.TransferStatus = false;
       this.TransferStatus = false;
       //   this.clickTaskName = e.properties.name;
       //   this.clickTaskName = e.properties.name;
       this.clicknextName = e.properties.name;
       this.clicknextName = e.properties.name;

+ 0 - 1
src/components/workflowEntrance.vue

@@ -415,7 +415,6 @@ export default {
           //   this.initialList.nextShapes[0].multi?.multi &&
           //   this.initialList.nextShapes[0].multi?.multi &&
           //   res.data.body.nextShapes[0].multi.multi === "true"
           //   res.data.body.nextShapes[0].multi.multi === "true"
           // ) {
           // ) {
-
           // }
           // }
         }
         }
         if (status === 2) {
         if (status === 2) {

+ 0 - 0
src/components/workflowPath/workflowPath.vue


+ 123 - 36
src/config/dev.js

@@ -1,63 +1,150 @@
 'use strict'
 'use strict'
 let devs = {
 let devs = {
-    TITLE:'本地环境',
-    BASE_URL:"http://43.138.50.94:9600/", //本地环境
-    BASE_API:"http://43.138.50.94:8880/api",//工作流本地环境
-    EXCEL_URL:"http://43.138.50.94:7777", //本地excel路径
-    provincialWorkOrderAreafresourceId:'a682dc9f-2fea-11ed-a6ed-02427ba2d388',//通用工单地市
-    provincialWorkOrderfresourceId:'08368848-2fde-11ed-a6ed-02427ba2d388',//通用工单省
-    riskMaterialsfresourceId:'c9104902-6575-11ed-8e1e-d6cd97160e00',//风险防控
+    TITLE: '本地环境',
+    BASE_URL: "http://43.138.50.94:9600/", //本地环境
+    BASE_API: "http://43.138.50.94:8880/api",//工作流本地环境
+    EXCEL_URL: "http://43.138.50.94:7777", //本地excel路径
+    OFFICE_URL:'http://43.138.50.94:7779',  //在线office路径
+    provincialWorkOrderAreafresourceId: 'a682dc9f-2fea-11ed-a6ed-02427ba2d388',//通用工单地市
+    provincialWorkOrderfresourceId: '08368848-2fde-11ed-a6ed-02427ba2d388',//通用工单省
+    riskMaterialsfresourceId: 'c9104902-6575-11ed-8e1e-d6cd97160e00',//风险防控
     materialApplicationfresourceId:'6cc2a037-a750-11ed-886f-d6cd97160e00',//宣传物料省
     materialApplicationfresourceId:'6cc2a037-a750-11ed-886f-d6cd97160e00',//宣传物料省
     materialApplicationdsfresourceId:'241efa62-a816-11ed-886f-d6cd97160e00',//宣传物料地市
     materialApplicationdsfresourceId:'241efa62-a816-11ed-886f-d6cd97160e00',//宣传物料地市
+    accountApplicationfresourceId: 'b3e6cc47-b1a9-11ed-886f-d6cd97160e00',//账号申请流程
+    accountdelfresourceId: '6a5fc7b5-b290-11ed-886f-d6cd97160e00',//账号删除
+    accountPermissionsfresourceId: '14c60ff0-b1a8-11ed-886f-d6cd97160e00',//账号权限申请流程
+    aqbgsyListfresourceId: '014cf465-b31c-11ed-886f-d6cd97160e00',//安全报告审阅
+    klhfsqList: '4a9e20e8-b33c-11ed-886f-d6cd97160e00',//口令恢复申请流程
+    rltzjlList: '7395620f-b33d-11ed-886f-d6cd97160e00',//容量调整记录流程
+    sjkdbList: '78e1edce-b319-11ed-886f-d6cd97160e00',//数据库导表流程
+    tyshList: '345a2955-b321-11ed-886f-d6cd97160e00',//通用审核流程
+    userList: '65791a1e-b1ac-11ed-886f-d6cd97160e00',//用户清单流程
+    internetAssessment: '87753452-c2f3-11ed-9c8b-d6cd97160e00',//互联网电视
+    authoriZation: '1db52dc3-b328-11ed-886f-d6cd97160e00',//口令授权
+    backupRequire: '4e2aaa61-b339-11ed-886f-d6cd97160e00',//备份需求
+    emergencyPlan: '238f139e-b28f-11ed-886f-d6cd97160e00',//应急预案
+    internetAccess: '2c4fd13a-b32a-11ed-886f-d6cd97160e00',//互联网端口
+    resourceApply: '569ffe50-b25a-11ed-886f-d6cd97160e00',//资源申请
+    securityAudit: 'd7dd8e5e-b320-11ed-886f-d6cd97160e00',//安全审计
+    userChange: 'c4624dbc-b322-11ed-886f-d6cd97160e00',//用户使用者变更
+    bfsjList: '524e01f7-b25d-11ed-886f-d6cd97160e00',//备份数据
+    docAppr: '47b27979-b250-11ed-886f-d6cd97160e00',//文件审批流程
+    firewall: '9d7c2f92-b251-11ed-886f-d6cd97160e00',//防火墙
+    opcode: 'b79206a9-b258-11ed-886f-d6cd97160e00',//opcode
 }
 }
 let dev = {
 let dev = {
-    TITLE:'本地环境',
-    BASE_URL:"http://127.0.0.1:8080", //本地环境
-    BASE_API:"http://43.138.50.94:8880/api",//工作流本地环境
-    EXCEL_URL:"http://43.138.50.94:7777", //本地excel路径
-    provincialWorkOrderAreafresourceId:'a682dc9f-2fea-11ed-a6ed-02427ba2d388',//通用工单地市
-    provincialWorkOrderfresourceId:'08368848-2fde-11ed-a6ed-02427ba2d388',//通用工单省
-    riskMaterialsfresourceId:'c9104902-6575-11ed-8e1e-d6cd97160e00',//风险防控
+    TITLE: '本地环境',
+    OFFICE_URL:'http://43.138.50.94:7779',  //在线office路径
+    BASE_URL: "http://127.0.0.1:8080", //本地环境
+    BASE_API: "http://43.138.50.94:8880/api",//工作流本地环境
+    EXCEL_URL: "http://43.138.50.94:7777", //本地excel路径
+    provincialWorkOrderAreafresourceId: 'a682dc9f-2fea-11ed-a6ed-02427ba2d388',//通用工单地市
+    provincialWorkOrderfresourceId: '08368848-2fde-11ed-a6ed-02427ba2d388',//通用工单省
+    riskMaterialsfresourceId: 'c9104902-6575-11ed-8e1e-d6cd97160e00',//风险防控
     materialApplicationfresourceId:'6cc2a037-a750-11ed-886f-d6cd97160e00',//宣传物料省
     materialApplicationfresourceId:'6cc2a037-a750-11ed-886f-d6cd97160e00',//宣传物料省
     materialApplicationdsfresourceId:'241efa62-a816-11ed-886f-d6cd97160e00',//宣传物料地市
     materialApplicationdsfresourceId:'241efa62-a816-11ed-886f-d6cd97160e00',//宣传物料地市
-
+    accountApplicationfresourceId: 'b3e6cc47-b1a9-11ed-886f-d6cd97160e00',//账号申请流程
+    accountdelfresourceId: '6a5fc7b5-b290-11ed-886f-d6cd97160e00',//账号删除
+    accountPermissionsfresourceId: '14c60ff0-b1a8-11ed-886f-d6cd97160e00',//账号权限申请流程
+    aqbgsyListfresourceId: '014cf465-b31c-11ed-886f-d6cd97160e00',//安全报告审阅
+    klhfsqList: '4a9e20e8-b33c-11ed-886f-d6cd97160e00',//口令恢复申请流程
+    rltzjlList: '7395620f-b33d-11ed-886f-d6cd97160e00',//容量调整记录流程
+    sjkdbList: '78e1edce-b319-11ed-886f-d6cd97160e00',//数据库导表流程
+    tyshList: '345a2955-b321-11ed-886f-d6cd97160e00',//通用审核流程
+    userList: '65791a1e-b1ac-11ed-886f-d6cd97160e00',//用户清单流程
+    internetAssessment: '87753452-c2f3-11ed-9c8b-d6cd97160e00',//互联网电视
+    authoriZation: '1db52dc3-b328-11ed-886f-d6cd97160e00',//口令授权
+    backupRequire: '4e2aaa61-b339-11ed-886f-d6cd97160e00',//备份需求
+    emergencyPlan: '238f139e-b28f-11ed-886f-d6cd97160e00',//应急预案
+    internetAccess: '2c4fd13a-b32a-11ed-886f-d6cd97160e00',//互联网端口
+    resourceApply: '569ffe50-b25a-11ed-886f-d6cd97160e00',//资源申请
+    securityAudit: 'd7dd8e5e-b320-11ed-886f-d6cd97160e00',//安全审计
+    userChange: 'c4624dbc-b322-11ed-886f-d6cd97160e00',//用户使用者变更
+    bfsjList: '524e01f7-b25d-11ed-886f-d6cd97160e00',//备份数据
+    docAppr: '47b27979-b250-11ed-886f-d6cd97160e00',//文件审批流程
+    firewall: '9d7c2f92-b251-11ed-886f-d6cd97160e00',//防火墙
+    opcode: 'b79206a9-b258-11ed-886f-d6cd97160e00',//opcode
 }
 }
 let test = {
 let test = {
-    TITLE:'测试环境',
-    BASE_URL:"http://10.149.85.91:8000/spfm", //测试环境
-    BASE_API:"http://10.149.85.91:8000/api",//工作流测试环境
-    EXCEL_URL:"http://10.149.85.91:7777", //测试excel路径
-    provincialWorkOrderAreafresourceId:'33b0af93-b1ce-11ed-be6b-00505687dcd3',//通用工单地市
-    provincialWorkOrderfresourceId:'4fdbb96e-8bfd-11ed-8988-00505687dcd3',//通用工单省
-    riskMaterialsfresourceId:'3124a2d4-7209-11ed-8d6f-00505687dcd3',//风险防控
+    TITLE: '测试环境',
+    OFFICE_URL:'http://10.149.85.91:8000',  //在线office路径
+    BASE_URL: "http://10.149.85.91:8000/spfm", //测试环境
+    BASE_API: "http://10.149.85.91:8000/api",//工作流测试环境
+    EXCEL_URL: "http://10.149.85.91:7777", //测试excel路径
+    provincialWorkOrderAreafresourceId: '33b0af93-b1ce-11ed-be6b-00505687dcd3',//通用工单地市
+    provincialWorkOrderfresourceId: '4fdbb96e-8bfd-11ed-8988-00505687dcd3',//通用工单省
+    riskMaterialsfresourceId: '3124a2d4-7209-11ed-8d6f-00505687dcd3',//风险防控
     materialApplicationfresourceId:'8f0e9c49-b348-11ed-be6b-00505687dcd3',//宣传物料省
     materialApplicationfresourceId:'8f0e9c49-b348-11ed-be6b-00505687dcd3',//宣传物料省
     materialApplicationdsfresourceId:'a7f127b7-b348-11ed-be6b-00505687dcd3',//宣传物料地市
     materialApplicationdsfresourceId:'a7f127b7-b348-11ed-be6b-00505687dcd3',//宣传物料地市
+    accountApplicationfresourceId: '9acf34bf-b24d-11ed-be6b-00505687dcd3',//账号申请流程
+    accountdelfresourceId: 'e907b062-b33f-11ed-be6b-00505687dcd3',//账号删除
+    accountPermissionsfresourceId: '2b9e648d-b24d-11ed-be6b-00505687dcd3',//账号权限申请流程
+    aqbgsyListfresourceId: 'bc3402ee-b33f-11ed-be6b-00505687dcd3',//安全报告审阅
+    klhfsqList: 'd4101040-b33e-11ed-be6b-00505687dcd3',//口令恢复申请流程
+    rltzjlList: 'b9283efe-b33e-11ed-be6b-00505687dcd3',//容量调整记录流程
+    sjkdbList: 'd36c60c0-b33f-11ed-be6b-00505687dcd3',//数据库导表流程
+    tyshList: '4a4153db-b33f-11ed-be6b-00505687dcd3',//通用审核流程
+    userList: '4edefb21-b24f-11ed-be6b-00505687dcd3',//用户清单流程
+    internetAssessment: 'd4092f5e-c49b-11ed-a8d3-00505687dcd3',//互联网电视
+    authoriZation: '1ecbaf96-b33f-11ed-be6b-00505687dcd3',//口令授权
+    backupRequire: 'ed1f02d2-b33e-11ed-be6b-00505687dcd3',//备份需求
+    emergencyPlan: '03be5f93-b340-11ed-be6b-00505687dcd3',//应急预案
+    internetAccess: '094631e4-b33f-11ed-be6b-00505687dcd3',//互联网端口
+    resourceApply: '1f6a7842-b25c-11ed-be6b-00505687dcd3',//资源申请
+    securityAudit: '93dc4075-b33f-11ed-be6b-00505687dcd3',//安全审计
+    userChange: '3626d7d9-b33f-11ed-be6b-00505687dcd3',//用户使用者变更
+    bfsjList: 'dbd83414-b25f-11ed-be6b-00505687dcd3',//备份数据
+    docAppr: '3b21cf73-b251-11ed-be6b-00505687dcd3',//文件审批流程
+    firewall: '86e7c09e-b256-11ed-be6b-00505687dcd3',//防火墙
+    opcode: '1245d300-b25a-11ed-be6b-00505687dcd3',//opcode
 }
 }
 let prod = {
 let prod = {
-    TITLE:'线上环境',
-    BASE_URL:"http://10.230.26.15:8000/mkt", //线上环境
-    BASE_API:"http://10.230.26.15:8000/api",//工作流线上环境
-    EXCEL_URL:"http://10.230.26.15:7777", //线上excel路径
-    provincialWorkOrderAreafresourceId:'db26384e-b984-11ed-afb6-e00084564cce',//通用工单地市
-    provincialWorkOrderfresourceId:'9b83efc7-b984-11ed-afb6-e00084564cce',//通用工单省
-    riskMaterialsfresourceId:'canvas',//风险防控
+    TITLE: '线上环境',
+    OFFICE_URL:'http://10.230.26.15:8000',  //在线office路径
+    BASE_URL: "http://10.230.26.15:8000/mkt", //线上环境
+    BASE_API: "http://10.230.26.15:8000/api",//工作流线上环境
+    EXCEL_URL: "http://10.230.26.15:7777", //线上excel路径
+    provincialWorkOrderAreafresourceId: 'db26384e-b984-11ed-afb6-e00084564cce',//通用工单地市
+    provincialWorkOrderfresourceId: '9b83efc7-b984-11ed-afb6-e00084564cce',//通用工单省
+    riskMaterialsfresourceId: 'canvas',//风险防控
     materialApplicationfresourceId:'b58e5e25-ce13-11ed-afb6-e00084564cce',//宣传物料省
     materialApplicationfresourceId:'b58e5e25-ce13-11ed-afb6-e00084564cce',//宣传物料省
     materialApplicationdsfresourceId:'cd072057-ce13-11ed-afb6-e00084564cce',//宣传物料地市
     materialApplicationdsfresourceId:'cd072057-ce13-11ed-afb6-e00084564cce',//宣传物料地市
+    authoriZation: 'a4c88c4e-d99e-11ed-8255-e00084564cce',//口令授权
+    backupRequire: 'b5c62d50-d99d-11ed-8255-e00084564cce',//备份需求
+    emergencyPlan: '8bcdfa43-d9a0-11ed-8255-e00084564cce',//应急预案
+    internetAccess: '5e83a807-d99e-11ed-8255-e00084564cce',//互联网端口
+    resourceApply: '428f1a81-d9a1-11ed-8255-e00084564cce',//资源申请
+    securityAudit: '99fa2bcc-d99f-11ed-8255-e00084564cce',//安全审计
+    userChange: 'e6eaf005-d99e-11ed-8255-e00084564cce',//用户使用者变更
+    bfsjList: 'f458d35a-d9a0-11ed-8255-e00084564cce',//备份数据
+    accountApplicationfresourceId: '27a9dbbf-d742-11ed-8255-e00084564cce',//账号申请流程
+    accountdelfresourceId: '8a519886-d742-11ed-8255-e00084564cce',//账号删除
+    accountPermissionsfresourceId: '2e508b91-d741-11ed-8255-e00084564cce',//账号权限申请流程
+    aqbgsyListfresourceId: '19bed1f4-d743-11ed-8255-e00084564cce',//安全报告审阅
+    klhfsqList: '9f3ab9d2-d743-11ed-8255-e00084564cce',//口令恢复申请流程
+    rltzjlList: 'd38ce419-d743-11ed-8255-e00084564cce',//容量调整记录流程
+    sjkdbList: 'd874ccdd-d742-11ed-8255-e00084564cce',//数据库导表流程
+    tyshList: '5b87cb0b-d743-11ed-8255-e00084564cce',//通用审核流程
+    userList: '81bc22d8-d741-11ed-8255-e00084564cce',//用户清单流程
+    internetAssessment: '433402bb-d52d-11ed-afb6-e00084564cce',//互联网电视
+    docAppr: '917d8bf9-d918-11ed-8255-e00084564cce',//文件审批流程
+    firewall: '3c3df7fb-d918-11ed-8255-e00084564cce',//防火墙
+    opcode: '6b9e1cb2-d918-11ed-8255-e00084564cce',//opcode
 }
 }
-export const getConfig  = () =>{
-    switch(process.env.VUE_APP_ENV){
+export const getConfig = () => {
+    switch (process.env.VUE_APP_ENV) {
         case "development":
         case "development":
-            window.sessionStorage.setItem('getConfig',JSON.stringify(dev) )
+            window.sessionStorage.setItem('getConfig', JSON.stringify(dev))
             return dev;
             return dev;
         case 'test':
         case 'test':
-            window.sessionStorage.setItem('getConfig',JSON.stringify(test))
+            window.sessionStorage.setItem('getConfig', JSON.stringify(test))
             return test;
             return test;
         case 'production':
         case 'production':
-            window.sessionStorage.setItem('getConfig',JSON.stringify(prod))
+            window.sessionStorage.setItem('getConfig', JSON.stringify(prod))
             return prod
             return prod
         case 'devs':
         case 'devs':
-            window.sessionStorage.setItem('getConfig',JSON.stringify(devs))
-            return devs; 
+            window.sessionStorage.setItem('getConfig', JSON.stringify(devs))
+            return devs;
     }
     }
 }
 }
 export default getConfig;
 export default getConfig;

+ 2 - 2
src/http/api.js

@@ -80,10 +80,10 @@ export function getNowdata(e) {
     let yy = new Date().getFullYear()
     let yy = new Date().getFullYear()
     let mm = new Date().getMonth() + 1 < 10 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1
     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 dd = new Date().getDate() < 10 ? '0' + new Date().getDate() : new Date().getDate()
-    let hh = new Date().getHours()
+    let hh = new Date().getHours() < 10 ? '0' + new Date().getHours() : new Date().getHours()
     let mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes()
     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 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
     let time = yy + e.a + mm + e.a + dd + e.b + hh + e.c + mf + e.c + ss
     return time
     return time
 }
 }
-export default { getTodoBase, getDoneBase, getInitiateBase, updateBase, getNowdata, queryReadBase,queryReadDoneBase };
+export default { getTodoBase, getDoneBase, getInitiateBase, updateBase, getNowdata, queryReadBase, queryReadDoneBase };

+ 4 - 0
src/main.js

@@ -6,6 +6,7 @@ import './plugins';
 import router from './router'
 import router from './router'
 import store from './store'
 import store from './store'
 import VueCookie from 'vue-cookie';
 import VueCookie from 'vue-cookie';
+import OnlyofficeEditor from '@/components'
 import App from './App.vue';
 import App from './App.vue';
 import './assets/mc-inconfont/iconfont.css'
 import './assets/mc-inconfont/iconfont.css'
 import fullscreen from 'vue-fullscreen'
 import fullscreen from 'vue-fullscreen'
@@ -14,6 +15,7 @@ import VueContextMenu from 'vue-contextmenu'
 import Urls from './assets/js/url.js' //路径共用
 import Urls from './assets/js/url.js' //路径共用
 import excelUrl from '../config/excel.env.js'
 import excelUrl from '../config/excel.env.js'
 import util from './assets/js/util.js'
 import util from './assets/js/util.js'
+
 import common from './assets/js/common.js' //公共注册
 import common from './assets/js/common.js' //公共注册
 import http from './assets/js/http.js'
 import http from './assets/js/http.js'
 
 
@@ -25,10 +27,12 @@ Vue.use(FormMaking)
 Vue.prototype.$url = Urls
 Vue.prototype.$url = Urls
 Vue.prototype.$excelUrl = excelUrl
 Vue.prototype.$excelUrl = excelUrl
 Vue.prototype.$util = util
 Vue.prototype.$util = util
+// Vue.prototype.$getConfig = getConfig
 Vue.prototype.common = common
 Vue.prototype.common = common
 Vue.prototype.$axios = http //axios 设置
 Vue.prototype.$axios = http //axios 设置
 Vue.use(fullscreen)
 Vue.use(fullscreen)
 Vue.use(VueCookie);
 Vue.use(VueCookie);
+Vue.use(OnlyofficeEditor)
 Vue.use(VueContextMenu)
 Vue.use(VueContextMenu)
 Vue.config.productionTip = false
 Vue.config.productionTip = false
 
 

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1928 - 0
src/pages/main/accountPermissions/accountApplication.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1160 - 0
src/pages/main/accountPermissions/accountPermissions.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1426 - 0
src/pages/main/accountPermissions/accountdel.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1194 - 0
src/pages/main/accountPermissions/aqbgsyList.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1235 - 0
src/pages/main/accountPermissions/klhfsqList.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1248 - 0
src/pages/main/accountPermissions/rltzjlList.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1563 - 0
src/pages/main/accountPermissions/sjkdbList.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1253 - 0
src/pages/main/accountPermissions/tyshList.vue


+ 5 - 1
src/pages/main/advertising/contractCap.vue

@@ -27,7 +27,11 @@
                     </el-table-column>
                     </el-table-column>
                     <el-table-column prop="secbuySchedule" label="使用进度">
                     <el-table-column prop="secbuySchedule" label="使用进度">
                     </el-table-column>
                     </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">
                         <template slot-scope="scope">
                             <div v-if="
                             <div v-if="
                                 scope.row.cMkSupplierCumulativeAmounts.filter(
                                 scope.row.cMkSupplierCumulativeAmounts.filter(

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1420 - 0
src/pages/main/applyFor/authoriZation.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1206 - 0
src/pages/main/applyFor/backupRequire.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1486 - 0
src/pages/main/applyFor/emergencyPlan.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1218 - 0
src/pages/main/applyFor/internetAccess.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1219 - 0
src/pages/main/applyFor/resourceApply.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1181 - 0
src/pages/main/applyFor/securityAudit.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1588 - 0
src/pages/main/applyFor/userChange.vue


+ 11 - 10
src/pages/main/bfsj/bfsjList.vue

@@ -47,7 +47,7 @@
                         <my-upload v-if="!disabled" @uploadBack="uploadBack" @delloadBack="delloadBack"
                         <my-upload v-if="!disabled" @uploadBack="uploadBack" @delloadBack="delloadBack"
                             @clickDownload="download" :fileInfo="fileInfo" :fileList="fromList.mkFileShareAttachList"
                             @clickDownload="download" :fileInfo="fileInfo" :fileList="fromList.mkFileShareAttachList"
                             style="width: 30% !important"></my-upload>
                             style="width: 30% !important"></my-upload>
-                        <div v-if="fromList.taskName != '起草'">
+                        <div v-if="fromList.taskName != '填写备份数据申请'">
                             <div v-for="(item, index) in fromList.mkFileShareAttachList" :key="index">
                             <div v-for="(item, index) in fromList.mkFileShareAttachList" :key="index">
                                 <span style="color: blue;cursor: pointer;" @click="downloadOne(item)">{{
                                 <span style="color: blue;cursor: pointer;" @click="downloadOne(item)">{{
                                     item.fileName
                                     item.fileName
@@ -84,6 +84,7 @@ import Seach from "../../../components/el-search";
 import myUpload from "../../../components/workflowUpload";
 import myUpload from "../../../components/workflowUpload";
 import Workflow from "../../../components/workflowBase";
 import Workflow from "../../../components/workflowBase";
 import WorkflowEntrance from "../../../components/workflowEntrance";
 import WorkflowEntrance from "../../../components/workflowEntrance";
+import getConfig from '../../../config/dev.js'
 import {
 import {
     getTodoBase,
     getTodoBase,
     getDoneBase,
     getDoneBase,
@@ -123,7 +124,7 @@ export default {
                 type: "bt1n",
                 type: "bt1n",
                 typename: "上传文件",
                 typename: "上传文件",
                 // limit: 5,
                 // limit: 5,
-                url: "/market/waf/upload",
+                url: "/market/waf/uploadByMinio",
                 fileList: [],
                 fileList: [],
             },
             },
             list: {},
             list: {},
@@ -147,8 +148,8 @@ export default {
             },
             },
             requestForm: {
             requestForm: {
                 // fresourceId: "524e01f7-b25d-11ed-886f-d6cd97160e00", // 本地环境
                 // fresourceId: "524e01f7-b25d-11ed-886f-d6cd97160e00", // 本地环境
-                // fresourceId: "canvas", // 生产环境
-                fresourceId: "canvas", //测试91环境
+                // fresourceId: "dbd83414-b25f-11ed-be6b-00505687dcd3", // 91环境
+                fresourceId: getConfig().bfsjList,
                 processDefinitionKey: "BFSJ_process",
                 processDefinitionKey: "BFSJ_process",
             },
             },
             dialogStatus: false, //dialog显示
             dialogStatus: false, //dialog显示
@@ -461,7 +462,7 @@ export default {
                 fileName: e.fileName,
                 fileName: e.fileName,
             };
             };
             this.$http({
             this.$http({
-                url: "/market/waf/downFile",
+                url: "/market/waf/downFileByMinio",
                 method: "post",
                 method: "post",
                 headers: {
                 headers: {
                     "Content-Type": "application/json",
                     "Content-Type": "application/json",
@@ -500,7 +501,7 @@ export default {
                 fileName: e.name,
                 fileName: e.name,
             };
             };
             this.$http({
             this.$http({
-                url: "/market/waf/downFile",
+                url: "/market/waf/downAllFileByMinio",
                 method: "post",
                 method: "post",
                 headers: {
                 headers: {
                     "Content-Type": "application/json",
                     "Content-Type": "application/json",
@@ -593,7 +594,7 @@ export default {
                     console.log(res.taskName)
                     console.log(res.taskName)
                     this.dialogTitle = "查看";
                     this.dialogTitle = "查看";
                     this.closeStatus = true;
                     this.closeStatus = true;
-                    if (res.taskName == "起草") {
+                    if (res.taskName == "填写备份数据申请") {
                         this.disabled = false;
                         this.disabled = false;
                         this.startStatus = true;
                         this.startStatus = true;
                         this.saveStatus = true;
                         this.saveStatus = true;
@@ -607,7 +608,7 @@ export default {
                 }
                 }
                 if (this.clickTagName === "first") {//代办
                 if (this.clickTagName === "first") {//代办
                     this.dialogTitle = "处理";
                     this.dialogTitle = "处理";
-                    if (res.taskName == "起草") {
+                    if (res.taskName == "填写备份数据申请") {
                         this.savestatusBtn = false
                         this.savestatusBtn = false
                         this.disabled = false;
                         this.disabled = false;
                         this.startStatus = true;
                         this.startStatus = true;
@@ -819,7 +820,7 @@ export default {
             }).then((res) => {
             }).then((res) => {
                 this.fromList.taskId = res.data.body[0].taskId;
                 this.fromList.taskId = res.data.body[0].taskId;
                 this.fromList.taskName = res.data.body[0].taskName;
                 this.fromList.taskName = res.data.body[0].taskName;
-                // if (res.data.body.taskName === "起草") {
+                // if (res.data.body.taskName === "填写备份数据申请") {
                 //     this.isSync = res.data.body.isSync;
                 //     this.isSync = res.data.body.isSync;
                 // } else {
                 // } else {
                 //     this.isSync = "1";
                 //     this.isSync = "1";
@@ -977,7 +978,7 @@ export default {
             getInitiateBase(this.pageNo, "", { tableName: this.tableName, }).then((res) => {
             getInitiateBase(this.pageNo, "", { tableName: this.tableName, }).then((res) => {
                 this.lableTable.data = res.data.data;
                 this.lableTable.data = res.data.data;
                 // this.lableTable.data.map((item) => {
                 // this.lableTable.data.map((item) => {
-                //     if (item.taskName === "起草") {
+                //     if (item.taskName === "填写备份数据申请") {
                 //         item.status = "1";
                 //         item.status = "1";
                 //     } else {
                 //     } else {
                 //         item.status = "2";
                 //         item.status = "2";

+ 58 - 12
src/pages/main/documentCollection/documentCollectionApprovalExcel.vue

@@ -5,7 +5,7 @@
                 name="excelIframe" id="excelIframe"></iframe>
                 name="excelIframe" id="excelIframe"></iframe>
         </fullscreen>
         </fullscreen>
         <el-dialog :title="'督办'" :visible.sync="dubanStatus" width="50%" :destroy-on-close="true"
         <el-dialog :title="'督办'" :visible.sync="dubanStatus" width="50%" :destroy-on-close="true"
-            :modal-append-to-body="false" :close-on-click-modal="false">
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closeduban">
             <el-form ref="form" :model="testModel" :rules="rules">
             <el-form ref="form" :model="testModel" :rules="rules">
                 <div>
                 <div>
                     <div style="padding: 10px 20%;">
                     <div style="padding: 10px 20%;">
@@ -34,14 +34,14 @@
                         </el-form-item>
                         </el-form-item>
                     </div>
                     </div>
                     <div slot="footer" style="text-align: right;padding-bottom: 20px;padding-top: 20px">
                     <div slot="footer" style="text-align: right;padding-bottom: 20px;padding-top: 20px">
-                        <el-button @click="dubanStatus = false">取 消</el-button>
+                        <el-button @click="closeduban">取 消</el-button>
                         <el-button type="primary" @click="processAuthduban()">确 定</el-button>
                         <el-button type="primary" @click="processAuthduban()">确 定</el-button>
                     </div>
                     </div>
                 </div>
                 </div>
             </el-form>
             </el-form>
         </el-dialog>
         </el-dialog>
         <el-dialog :title="'权限设置'" :visible.sync="authSettingStatus" width="100%" :show-close="true"
         <el-dialog :title="'权限设置'" :visible.sync="authSettingStatus" width="100%" :show-close="true"
-            :modal-append-to-body="false">
+            :modal-append-to-body="false" :before-close="closequanxian">
             <el-form :model="testModel" ref="addInfoList">
             <el-form :model="testModel" ref="addInfoList">
                 <div>
                 <div>
                     <div class="info-line">
                     <div class="info-line">
@@ -59,6 +59,7 @@
                         <el-radio v-if="type == '1' || type == '2'" v-model="authType" label="2"
                         <el-radio v-if="type == '1' || type == '2'" v-model="authType" label="2"
                             style="margin: 10px">特殊权限</el-radio>
                             style="margin: 10px">特殊权限</el-radio>
                         <div id="limit">
                         <div id="limit">
+                            <div style="margin: 10px;display: inline-block;color: red;">注:分配的行的权限不能重复</div>
                             <div v-for="(item, index) in limitList">
                             <div v-for="(item, index) in limitList">
                                 <div style="margin-right: 10px;margin-left: 10px;display: inline-block;">负责人:</div>
                                 <div style="margin-right: 10px;margin-left: 10px;display: inline-block;">负责人:</div>
                                 <el-button v-if="type == '1' || type == '2'" type="primary"
                                 <el-button v-if="type == '1' || type == '2'" type="primary"
@@ -113,10 +114,10 @@
         <el-dialog title="选择填报人" :visible.sync="noLimitDialog" width="100%" :destroy-on-close="true"
         <el-dialog title="选择填报人" :visible.sync="noLimitDialog" width="100%" :destroy-on-close="true"
             :modal-append-to-body="false" :close-on-click-modal="false">
             :modal-append-to-body="false" :close-on-click-modal="false">
             <div style="max-height:500px ;">
             <div style="max-height:500px ;">
-                <deptTreeUserNew v-if="authType == '1'" @treeCheck="treeCheckonly" :defaultList="defaultList"
-                    :type="depttype" :closeList="closeList" :oneORmore="authType" treeListType="1"></deptTreeUserNew>
-                <deptTreeUserNew v-if="authType == '2'" @treeCheck="treeCheckonly" :defaultList="defaultList"
-                    :type="depttype" :closeList="closeList" :oneORmore="authType" treeListType="1"></deptTreeUserNew>
+                <!-- <deptTreeUserNew v-if="authType == '1'" @treeCheck="treeCheckonly" :defaultList="defaultList"
+                    :type="depttype" :closeList="closeList" :oneORmore="authType" treeListType="1"></deptTreeUserNew> -->
+                <deptTreeUserNew @treeCheck="treeCheckonly" :defaultList="defaultList" :type="depttype"
+                    :closeList="closeList" oneORmore="2" treeListType="1"></deptTreeUserNew>
 
 
                 <div slot="footer" style="text-align: right;padding-bottom: 20px">
                 <div slot="footer" style="text-align: right;padding-bottom: 20px">
                     <el-button @click="noLimitDialog = false">取 消</el-button>
                     <el-button @click="noLimitDialog = false">取 消</el-button>
@@ -125,7 +126,7 @@
             </div>
             </div>
         </el-dialog>
         </el-dialog>
         <el-dialog :title="'提交'" :visible.sync="authDialog" width="50%" :destroy-on-close="true"
         <el-dialog :title="'提交'" :visible.sync="authDialog" width="50%" :destroy-on-close="true"
-            :modal-append-to-body="false" :close-on-click-modal="false">
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closetijiao">
             <el-form :model="testModel" ref="addInfoList">
             <el-form :model="testModel" ref="addInfoList">
                 <div>
                 <div>
                     <div class="info-line">
                     <div class="info-line">
@@ -150,7 +151,7 @@
                     </div>
                     </div>
                     <br />
                     <br />
                     <div slot="footer" style="text-align: right;padding-bottom: 20px;padding-top: 20px">
                     <div slot="footer" style="text-align: right;padding-bottom: 20px;padding-top: 20px">
-                        <el-button @click="authDialog = false">取 消</el-button>
+                        <el-button @click="closetijiao()">取 消</el-button>
                         <el-button type="primary" @click="processAudit()" :disabled="BtnDisabled">确 定</el-button>
                         <el-button type="primary" @click="processAudit()" :disabled="BtnDisabled">确 定</el-button>
                     </div>
                     </div>
                 </div>
                 </div>
@@ -266,6 +267,16 @@ export default {
         }
         }
     },
     },
     methods: {
     methods: {
+        closequanxian() {
+            this.authSettingStatus = false
+            this.limitList = [{}]
+            this.noLimitUserName = ''
+            this.authType = '2'
+        },
+        closeduban() {
+            this.dubanStatus = false
+            this.testModel = {}
+        },
         // 填报日期
         // 填报日期
         handleWrite(value) {
         handleWrite(value) {
             if (value) {//
             if (value) {//
@@ -307,6 +318,12 @@ export default {
             //     };
             //     };
             // }
             // }
         },
         },
+        closetijiao() {
+            this.authDialog = false;
+            this.treeListType = '';
+            this.auditForm.receiverName = '';
+            this.auditForm.authType = ''
+        },
         auditUserAdd() {
         auditUserAdd() {
             this.checkexapeople = true;
             this.checkexapeople = true;
         },
         },
@@ -479,7 +496,7 @@ export default {
                         message: '处理成功',
                         message: '处理成功',
                         type: 'success'
                         type: 'success'
                     });
                     });
-                    
+
                     //没找到关闭标签页之前的临时处理措施
                     //没找到关闭标签页之前的临时处理措施
                     // const newUrl = '#' + this.$route.path + '?type=5&id=' + this.getUrlKey("id");
                     // const newUrl = '#' + this.$route.path + '?type=5&id=' + this.getUrlKey("id");
                     // console.log(newUrl);
                     // console.log(newUrl);
@@ -787,9 +804,9 @@ export default {
                 }
                 }
             } else if (this.authType == '2') {
             } else if (this.authType == '2') {
                 this.limitList.map((o) => {
                 this.limitList.map((o) => {
-                    console.log(o.userIds);
+                    // console.log(o.userIds);
                     console.log(o.editStart);
                     console.log(o.editStart);
-                    console.log(o.editStartCol);
+                    console.log(o.editEnd);
                     let str = o.editStartCol + o.editEndCol
                     let str = o.editStartCol + o.editEndCol
                     if (o.userIds == null || o.userIds[0].key == null) {
                     if (o.userIds == null || o.userIds[0].key == null) {
                         this.$message({
                         this.$message({
@@ -863,6 +880,34 @@ export default {
                         return;
                         return;
                     }
                     }
                 })
                 })
+                // let arr = []
+                // this.limitList.map((o) => {
+                //     for (var i = o.editStart; i <= o.editEnd; i++) {
+                //         arr.push(i);
+                //     }
+                // })
+                // console.log(arr);
+
+                // let arr2 = arr.sort();
+                // for (let i = 0; i < arr2.length; i++) {
+
+                //     if (typeof (arr2[i]) === 'number') {
+                //         arr2[i] = arr2[i].toString()
+                //     }
+                //     if (typeof (arr2[i + 1]) === 'number') {
+                //         arr2[i + 1] = arr2[i + 1].toString()
+                //     }
+                //     console.log(typeof (arr2[i]));
+                //     console.log((arr2[i]));
+                //     if (arr2[i] === arr2[i + 1]) {
+                //         this.$message({
+                //             message: '分配的行的权限不能重复',
+                //             type: 'error'
+                //         });
+                //         this.success = false;
+                //         return;
+                //     }
+                // }
                 console.log(this.limitList);
                 console.log(this.limitList);
             }
             }
             if (this.success) {
             if (this.success) {
@@ -1180,6 +1225,7 @@ export default {
 span {
 span {
     width: 80px;
     width: 80px;
 }
 }
+
 ::v-deep .el-button--text {
 ::v-deep .el-button--text {
     display: none !important;
     display: none !important;
 }
 }

+ 1 - 1
src/pages/main/documentCollection/newTree.vue

@@ -97,7 +97,7 @@ export default {
       }
       }
       if (v.o !== this.treeId) {
       if (v.o !== this.treeId) {
         this.$http({
         this.$http({
-          url: "/sysmgr/sysuserinfo/queryListByName",
+          url: "/sysmgr/sysuserinfo/querySysUserListByNameOrderByDuty",
           method: "post",
           method: "post",
           headers: {
           headers: {
             "Content-Type": "application/json",
             "Content-Type": "application/json",

+ 860 - 0
src/pages/main/firewall/formTable.vue

@@ -0,0 +1,860 @@
+<template>
+    <div>
+        <div>
+            <div class="flex-title">防火墙策略申请流程</div>
+            <el-form ref="form" :model="form" :rules="rule" :disabled="disabled">
+                <el-row>
+                    <el-col :span="6">
+                        <el-form-item label="工号单:" prop="orderNumber">
+                            <el-input v-model="form.orderNumber" :disabled="true"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="标题:" prop="needName">
+                            <el-input v-model="form.needName"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="申请人:" prop="applicant">
+                            <el-input v-model="form.applicant" :disabled="true"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="申请时间:">
+                            <el-date-picker type="date" :disabled="true" placeholder="选择日期" v-model="form.applicationTime"
+                                :picker-options="pickerOptions" value-format="yyyy-MM-dd"
+                                style="width: 100%"></el-date-picker>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="6">
+                        <el-form-item label="有效期:" prop="validPeriod">
+                            <el-select v-model="form.validPeriod" placeholder="请选择">
+                                <el-option label="长期" value="长期"></el-option>
+                                <el-option label="限期" value="限期"></el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="开始时间:">
+                            <el-date-picker type="date" placeholder="选择日期" v-model="form.startTime"
+                                :picker-options="pickerOptions" value-format="yyyy-MM-dd"
+                                style="width: 100%"></el-date-picker>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="结束时间:">
+                            <el-date-picker type="date" placeholder="选择日期" v-model="form.endTime"
+                                :picker-options="pickerOptions" value-format="yyyy-MM-dd"
+                                style="width: 100%"></el-date-picker>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+
+                    <el-row>
+                        <el-form-item label="申请原因:" prop="applicationReason" label-width="110px">
+                            <el-input type="textarea" maxlength="300" show-word-limit
+                                v-model="form.applicationReason"></el-input>
+                        </el-form-item>
+                        <el-col :span="24">
+                            <el-form-item label="正文:" prop="content" label-width="110px">
+                                <el-input type="textarea" maxlength="300" show-word-limit v-model="form.content"></el-input>
+                            </el-form-item>
+
+                        </el-col>
+                        <el-col :span="24">
+                            <el-form-item label="备注:" prop="note" label-width="110px">
+                                <el-input type="textarea" maxlength="300" show-word-limit v-model="form.note"></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="源IP地址:" prop="sourceIpAddress">
+                                <el-input v-model="form.sourceIpAddress"></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="目标IP地址:" prop="destinationIpAddress">
+                                <el-input v-model="form.destinationIpAddress"></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="源地址设备类型:" prop="sourceDeviceType">
+                                <el-select v-model="form.sourceDeviceType" placeholder="请选择">
+                                    <el-option label="路由器" value="路由器"></el-option>
+                                    <el-option label="交换机" value="交换机"></el-option>
+                                    <el-option label="防火墙" value="防火墙"></el-option>
+                                    <el-option label="主机" value="主机"></el-option>
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="目的地址设备类型:" prop="destinationDeviceType" label-width="140px">
+                                <el-select v-model="form.destinationDeviceType" placeholder="请选择">
+                                    <el-option label="路由器" value="路由器"></el-option>
+                                    <el-option label="交换机" value="交换机"></el-option>
+                                    <el-option label="防火墙" value="防火墙"></el-option>
+                                    <el-option label="主机" value="主机"></el-option>
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="协议:" prop="protocol">
+                                <el-select v-model="form.protocol" placeholder="请选择">
+                                    <el-option label="TCP" value="TCP"></el-option>
+                                    <el-option label="UDP" value="UDP"></el-option>
+                                    <el-option label="ICMP" value="ICMP"></el-option>
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="网络类型:" prop="networkType">
+                                <el-select v-model="form.networkType" placeholder="请选择">
+                                    <el-option label="内网" value="内网"></el-option>
+                                    <el-option label="互联网" value="互联网"></el-option>
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+
+
+                    <el-row>
+                        <el-col :span="2">
+                            <span>防火墙策略清单:</span>
+                        </el-col>
+                        <el-col :span="22">
+                            <div class="flex-table-header">
+                                <el-button type="primary" @click="newclick(1)">新建</el-button>
+                                <el-button type="danger" @click="fireDel()">删除</el-button>
+                                <span>记录总数({{ num }})</span>
+                            </div>
+
+                            <Table @clickDemand="clickDemand" :list="lable" ref="TableList" @changeNum="changeNum"
+                                @num="selectNum">
+                            </Table>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="2">
+                            <span>端口信息:</span>
+
+                        </el-col>
+                        <el-col :span="22">
+                            <div class="flex-table-header">
+                                <el-button type="primary" @click="newclick(2)">新建</el-button>
+                                <el-button type="danger" @click="portDel()">删除</el-button>
+                                <span>记录总数({{ nums }})</span>
+                            </div>
+
+                            <Table @clickDemand="clickDemand2" @num="selectNums" :list="lables" ref="TableList"
+                                @changeNum="changeNums">
+                            </Table>
+                        </el-col>
+                    </el-row>
+                </el-row>
+                <el-row>
+                    <el-form-item label="附件:" prop="mkFileShareAttachList" label-width="120px">
+                        <my-upload ref="upload" @uploadBack="uploadBack" @delloadBack="delloadBack"
+                            @clickDownload="download" :fileInfo="fileInfo"
+                            :fileList="list.mkFileShareAttachList"></my-upload>
+                    </el-form-item>
+                </el-row>
+            </el-form>
+        </div>
+        <el-dialog v-if="firewallStatus" :before-close="clickClose(1)" title="新建" :visible.sync="firewallStatus"
+            width="100%" :modal="false" style="display: flex; flex-direction: column">
+            <el-button type="primary" @click="newFireAdd(firewallTit)">保存</el-button>
+            <el-form ref="form1" :model="fireList">
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item label="源地址设备类型:" prop="sourceDeviceType">
+                            <el-input v-model="fireList.sourceDeviceType"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="源地址:" prop="sourceAddress">
+                            <el-input v-model="fireList.sourceAddress"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="源端口:" prop="sourcePort">
+                            <el-input v-model="fireList.sourcePort"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="目标地址设备类型:" prop="destinationDeviceType">
+                            <el-input v-model="fireList.destinationDeviceType"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="目的地址:" prop="destinationAddress">
+                            <el-input v-model="fireList.destinationAddress"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="目的端口:" prop="destinationPort">
+                            <el-input v-model="fireList.destinationPort"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="协议:" prop="protocol">
+                            <el-input v-model="fireList.protocol"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="策略有效期:" prop="protocol">
+                            <el-date-picker type="date" placeholder="选择日期" v-model="fireList.policyValidPeriod"
+                                :picker-options="pickerOptions" value-format="yyyy-MM-dd"
+                                style="width: 100%"></el-date-picker>
+
+                        </el-form-item>
+                    </el-col>
+
+                </el-row>
+            </el-form>
+
+        </el-dialog>
+        <el-dialog v-if="protStatus" :before-close="clickClose(2)" title="新增" :visible.sync="protStatus" width="100%"
+            :modal="false" style="display: flex; flex-direction: column">
+            <el-button type="primary" @click="newPortAdd(protTit)">保存</el-button>
+
+            <el-form ref="form2" :model="portList">
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item label="源端口号:" prop="sourcePortnumber">
+                            <el-input v-model="portList.sourcePortNumber"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="目的端口号:" prop="destinationPortNumber">
+                            <el-input v-model="portList.destinationPortNumber"></el-input>
+                        </el-form-item>
+                    </el-col>
+
+                </el-row>
+
+            </el-form>
+        </el-dialog>
+    </div>
+</template>
+  
+<script>
+import myUpload from "../../../components/workflowUpload";
+import Table from "../../../components/el-form.vue";
+export default {
+    components: {
+        myUpload,
+        Table
+    },
+    data() {
+        return {
+            fireList: {},
+            portList: {},
+            fireSelectList: [],
+            portSelectList: [],
+            firewallStatus: false,
+            firewallTit: '新增',
+            protTit: '新增',
+            page: 1,
+            pages: 1,
+            protStatus: false,
+            num: '0',
+            nums: '0',
+            checkBoxNone: false,
+            checkBoxStatus: false,
+            fileInfo: {
+                type: "bt1n",
+                typename: "上传文件",
+                limit: 5,
+                url: "/market/waf/upload",
+                fileList: [],
+            },
+            postEdit: false,
+            newPostAge: false,
+            pickerOptions: {
+                disabledDate(time) {
+                    console.log(time);
+                    return time.getTime() < Date.now() - 8.64e7;
+                },
+            },
+            oneList: [],
+            lable: {
+                name: "first",
+                height: '200',
+                titledata: [
+                    {
+                        label: "源地址设备类型",
+                        prop: "sourceDeviceType",
+                        width: 300,
+                        color: "#0682CD",
+                    },
+                    {
+                        label: "源地址",
+                        prop: "sourceAddress",
+                        width: 200,
+                    },
+                    {
+                        label: "源端口",
+                        prop: "sourcePort",
+                        width: 200,
+                    },
+                    {
+                        label: "目标地址设备类型",
+                        prop: "destinationDeviceType",
+                        width: 200,
+                    },
+                    {
+                        label: "目的地址",
+                        prop: "destinationAddress",
+                        width: 200,
+                    },
+                    {
+                        label: "目的端口",
+                        prop: "destinationPort",
+                        width: 250,
+                    },
+                    {
+                        label: "协议",
+                        prop: "protocol",
+                        width: 200,
+                    },
+                    {
+                        label: "策略有效期",
+                        prop: "policyValidPeriod",
+                        width: 200,
+                    },
+                ], //表格头
+                data: [], //内容数据
+                loading: true,
+                pageData: {
+                    total: 100, // 总条数
+                    pageSizes: 10, // 每页数量
+                    pageNum: 1, // 页码
+                },
+                isSelection: true, // 表格有多选时设置
+                isOperation: false, // 表格有操作列时设置
+                isIndex: false, // 列表序号
+                operation: {
+                    // 表格有操作列时设置
+                    label: "操作", // 列名
+                    width: "50", // 根据实际情况给宽度
+                    data: [
+                        {
+                            label: "操作", // 操作名称
+                            type: "", //按钮类型
+                            handleRow: () => {
+
+                            }, // 自定义事件
+                        },
+                    ],
+                },
+            },
+            lables: {
+                name: "first",
+                height: "200",
+                titledata: [
+                    {
+                        label: "序号",
+                        prop: "index",
+                        width: 600,
+                    },
+                    {
+                        label: "源端口号",
+                        prop: "sourcePortNumber",
+                        width: 600,
+                    },
+                    {
+                        label: "目的端口号",
+                        prop: "destinationPortNumber",
+                        width: 600,
+                    },
+
+                ], //表格头
+                data: [], //内容数据
+                loading: true,
+                pageData: {
+                    total: 1, // 总条数
+                    pageSizes: 10, // 每页数量
+                    pageNum: 1, // 页码
+                },
+                isSelection: true, // 表格有多选时设置
+                isOperation: false, // 表格有操作列时设置
+                isIndex: false, // 列表序号
+                operation: {
+                    // 表格有操作列时设置
+                    label: "操作", // 列名
+                    width: "50", // 根据实际情况给宽度
+                    data: [
+                        {
+                            label: "操作", // 操作名称
+                            type: "", //按钮类型
+                            handleRow: () => {
+
+                            }, // 自定义事件
+                        },
+                    ],
+                },
+            },
+            childrenList: [],
+            twoList: [],
+            twoStatus: false,
+            threeList: [],
+            threeStatus: false,
+            fourList: [],
+            fourStatus: false,
+            fiveList: [],
+            fiveStatus: false,
+            isSensitiveDataStatus: false,
+            timeStatus: false,
+            functionStatus: false,
+            reportStatus: false,
+            Length: "",
+            form: {},
+            rules: {},
+            rule: {
+                needName: [
+                    { required: true, message: "请输入标题", trigger: "blur" },
+                ],
+                applicationReason: [
+                    { required: true, message: "请输入申请原因", trigger: "change" },
+                ]
+            },
+            copyRule: {},
+            isList: [],
+            remindMmsg: []
+        };
+    },
+    props: {
+        list: {
+            type: Object,
+            default: () => { },
+        },
+        disabled: {
+            type: Boolean,
+            default: () => { },
+        },
+    },
+    mounted() {
+        if (this.list.mkFileShareAttachList) {
+            this.$refs.upload.attList = this.list.mkFileShareAttachList;
+            this.list.mkFileShareAttachList.map((item) => {
+                item.name = item.fileName;
+            });
+        }
+        console.log(this.form.orderNumber);
+        this.getFromQuery(this.form.orderNumber)
+        this.getPortQuery(this.form.orderNumber)
+    },
+    created() {
+        this.form = this.list;
+        this.form.applicant = JSON.parse(window.sessionStorage.userInfo).loginName
+        this.form.applicationTime = new Date()
+        this.copyRule = this.rule;
+    },
+
+    methods: {
+        clickClose() {
+
+        },
+        fireDel() {
+            if (this.fireSelectList.length > 0) {
+                this.$confirm("即将删除数据, 是否删除?", "提示", {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning",
+                })
+                    .then(() => {
+                        this.$http({
+                            url: "/market/fhqProcessStrategy/delBatch",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: this.fireSelectList
+                        }).then((res) => {
+                            this.$message.success('删除成功')
+                            this.page = 1;
+                            this.getFromQuery(this.form.orderNumber)
+                        });
+                    })
+                    .catch(() => { });
+            }
+        },
+        portDel() {
+            if (this.portSelectList.length > 0) {
+                this.$confirm("即将删除数据, 是否删除?", "提示", {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning",
+                })
+                    .then(() => {
+                        this.$http({
+                            url: "/market/fhqProcessPort/delBatch",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: this.portSelectList
+                        }).then((res) => {
+                            this.$message.success('删除成功')
+                            this.pages = 1;
+                            this.getPortQuery(this.form.orderNumber)
+                        });
+                    })
+                    .catch(() => { });
+            }
+
+        },
+        newFireAdd(e) {
+            if (e == '新增') {
+                this.fireList.strategyId = this.form.orderNumber
+                this.$http({
+                    url: "/market/fhqProcessStrategy/add",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: this.fireList
+                }).then((res) => {
+                    this.firewallStatus = false;
+                    this.getFromQuery(this.form.orderNumber)
+                    this.$message.success('添加成功')
+                });
+            } else {
+                this.$http({
+                    url: "/market/fhqProcessStrategy/update",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: this.fireList
+                }).then((res) => {
+                    this.firewallStatus = false;
+                    this.getFromQuery(this.form.orderNumber)
+                    this.$message.success('添加成功')
+                });
+            }
+
+        },
+        newPortAdd(e) {
+            if (e == '新增') {
+                this.portList.portId = this.form.orderNumber
+                this.$http({
+                    url: "/market/fhqProcessPort/add",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: this.portList
+                }).then((res) => {
+                    this.protStatus = false;
+                    this.getPortQuery(this.form.orderNumber)
+                    this.$message.success('添加成功')
+                });
+            } else {
+                this.$http({
+                    url: "/market/fhqProcessPort/update",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: this.portList
+                }).then((res) => {
+                    this.protStatus = false;
+                    this.getPortQuery(this.form.orderNumber)
+                    this.$message.success('添加成功')
+                });
+            }
+
+        },
+        getPortQuery(e) {
+            this.$http({
+                url: "/market/fhqProcessPort/queryPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    page: '{"pageNo":"' + this.pages + '","pageSize":"10"}',
+                },
+                data: { portId: e },
+            }).then((res) => {
+                this.lables.data = res.data.data
+                this.lables.pageData.total = res.data.totalRecord ? res.data.totalRecord : 1;
+                this.lables.data.map((item, index) => {
+                    item.index = (index + 1) + (res.data.pageNo - 1) * res.data.pageSize
+                })
+                this.nums = res.data.totalRecord
+            });
+        },
+        getFromQuery(e) {
+            this.$http({
+                url: "/market/fhqProcessStrategy/queryPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    page: '{"pageNo":"' + this.page + '","pageSize":"10"}',
+                },
+                data: { strategyId: e },
+            }).then((res) => {
+                this.lable.data = res.data.data
+                this.lable.pageData.total = res.data.totalRecord ? res.data.totalRecord : 1;
+                this.num = res.data.totalRecord
+            });
+        },
+        newclick(e) {
+            this.fireList = {};
+            this.portList = {};
+            e === 1 ? this.firewallStatus = true : this.protStatus = true;
+            e === 1 ? this.firewallTit = '新增' : this.protTit = '新增';
+        },
+        //页码
+        changeNum(e) {
+            this.page = e;
+            this.getFromQuery(this.form.orderNumber)
+        },
+        changeNums(e) {
+            this.pages = e;
+            this.getPortQuery(this.form.orderNumber)
+        },
+        selectNum(e) {
+            this.fireSelectList = e;
+        },
+        selectNums(e) {
+            this.portSelectList = e
+        },
+        //点击工单
+        clickDemand(row, e) {
+            if (this.form.taskName === '需求发起人') {
+                console.log(e);
+                this.firewallTit = '修改'
+                this.fireList = e
+                this.firewallStatus = true
+            }
+        },
+        clickDemand2(row, e) {
+            if (this.form.taskName === '需求发起人') {
+                console.log(e);
+                this.protTit = '修改'
+                this.portList = e
+                this.protStatus = true
+            }
+        },
+        uploadBack(v) {
+            if (this.form.mkFileShareAttachList) {
+                this.form.mkFileShareAttachList = [];
+                this.form.mkFileShareAttachList = v;
+            } else {
+                let mkFileShareAttachList = [];
+                mkFileShareAttachList = v;
+                this.$set(this.form, "mkFileShareAttachList", mkFileShareAttachList);
+            }
+        },
+        delloadBack(v) {
+            this.form.mkFileShareAttachList = v;
+            this.$http({
+                url: "/market/zfpzProcess/update",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: this.form,
+            }).then((res) => {
+                console.log(res);
+                // if (res.data.result === 0) {
+                //   this.$message.success("工作流更新成功");
+                // }
+            });
+        },
+        download() {
+            console.log(123);
+            if (this.form.mkFileShareAttachList.length > 1) {
+                this.$http({
+                    url: "/market/waf/downAllFile",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    responseType: "blob",
+                    data: { mkFileShareAttachList: this.form.mkFileShareAttachList },
+                }).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().toString() + ".zip"
+                        );
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data]);
+                        var downloadElement = document.createElement("a");
+                        var href = window.URL.createObjectURL(blob);
+                        downloadElement.href = href;
+                        downloadElement.download = this.form.needName + ".zip";
+                        document.body.appendChild(downloadElement);
+                        downloadElement.click();
+                        document.body.removeChild(downloadElement);
+                        window.URL.revokeObjectURL(href);
+                    }
+                    if (this.infolist.authType === "3") {
+                        this.dialogCli(10);
+                    }
+                });
+            } else {
+                console.log(this.form.mkFileShareAttachList);
+                let list = {
+                    id: this.form.mkFileShareAttachList[0].fileCode,
+                    fileName: this.form.mkFileShareAttachList[0].name,
+                };
+                this.$http({
+                    url: "/market/waf/downFile",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    responseType: "blob",
+                    data: list,
+                }).then((response) => {
+                    console.log(response);
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([response.data], {
+                            type: "application/vnd.ms-excel",
+                        });
+                        //window.navigator.msSaveOrOpenBlob(blob, this.form.needName);
+                        window.navigator.msSaveOrOpenBlob(
+                            blob,
+                            this.form.mkFileShareAttachList[0].name
+                        );
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data]);
+                        var downloadElement = document.createElement("a");
+                        var href = window.URL.createObjectURL(blob);
+                        downloadElement.href = href;
+                        downloadElement.download = this.form.mkFileShareAttachList[0].name;
+                        document.body.appendChild(downloadElement);
+                        downloadElement.click();
+                        document.body.removeChild(downloadElement);
+                        window.URL.revokeObjectURL(href);
+                    }
+                });
+            }
+        },
+    },
+
+};
+</script>
+  
+<style lang="scss" scoped>
+.flex-table-header {
+    margin-bottom: 10px;
+
+    span {
+        margin-left: 20px;
+    }
+}
+
+::v-deep .el-row {
+    margin-top: 16px;
+}
+
+a {
+    text-decoration: none;
+}
+
+::v-deep .el-upload-list {
+    width: 23rem;
+}
+
+.flex-title {
+    text-align: center;
+    font-size: 24px;
+    line-height: 60px;
+
+    font-weight: bold;
+}
+
+.flex-header {
+    margin-top: 20px;
+    display: flex;
+    //   justify-content: space-between;
+
+    ::v-deep .el-form-item {
+        width: 20%;
+        margin-right: 60px;
+    }
+}
+
+.flex-upload {
+    ::v-deep .el-form-item {
+        width: 100%;
+    }
+}
+
+.flex-input-tare {
+    ::v-deep .el-form-item {
+        width: 100%;
+        margin-right: 5%;
+    }
+
+    ::v-deep .el-form-item__label {
+        width: 9rem !important;
+    }
+}
+
+.flex-textarea {
+    width: 70.5%;
+}
+
+.el-upload__tip {
+    color: red;
+}
+
+// ::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;
+}
+
+::v-deep .el-pagination {
+    display: block !important;
+    background-color: #fff !important;
+}
+</style>
+  

+ 983 - 0
src/pages/main/firewall/index.vue

@@ -0,0 +1,983 @@
+<template>
+    <div class="flex-box">
+        <!-- v-show="lable.name === 'first'" -->
+        <div class="flex-header" :span="24">
+            <Tabs :tabList="tabList" @status="clickTabTops" />
+            <el-button type="primary" @click="clickNewTag" v-show="lableTable.name === 'first'">+新建</el-button>
+        </div>
+        <div class="flex-count">
+            <Table @clickDemand="clickDemand" :list="lableTable" ref="TableList" @changeNum="changeNum">
+            </Table>
+        </div>
+        <el-dialog v-if="dialogStatus" :before-close="clickClose" :title="dialogTitle + '需求'" :visible.sync="dialogStatus"
+            width="100%" :modal="false" style="display: flex; flex-direction: column">
+            <!-- 后期维护 -->
+            <div style="position: fixed; z-index: 99">
+                <el-button type="primary" v-if="startStatus" @click="clickHandles">处理</el-button>
+                <el-button type="primary" v-if="closeStatus" @click="clickClose">关闭</el-button>
+                <el-button type="primary" v-if="saveStatus" @click="clickSave">保存</el-button>
+            </div>
+            <FormTable :list="fromList" :disabled="disabled" class="flex-form" ref="formTable" />
+            <div>
+                <div class="table-title">流程追踪</div>
+                <div v-if="abc == true">
+                    <Tables :list="lables"></Tables>
+                </div>
+            </div>
+        </el-dialog>
+        <div v-if="destroy">
+            <el-dialog title="处理操作" width="100%" :visible.sync="handleStatus" :before-close="handleCloses" :modal="false"
+                v-if="handleStatus" :destroy-on-close="true">
+                <Workflow ref="workflow" :list="fromList" v-if="isWorkflowStatus == true" @updateForm="beforeClose"
+                    :requestForm="requestForm" :adminResourceId="adminResourceId" />
+                <WorkflowEntrance :list="fromList" v-else :lastManList="lastManList" @beforeClose="beforeClose"
+                    :requestForm="requestForm" />
+            </el-dialog>
+        </div>
+
+    </div>
+</template>
+<script>
+import Workflow from "../../../components/workflowBase";
+import WorkflowEntrance from "../../../components/workflowEntrance";
+import Tabs from "../../../components/el-tabs.vue";
+import Table from "../../../components/el-form.vue";
+import Tables from "../../../components/el-forms.vue";
+import FormTable from "./formTable.vue";
+import { updateBase } from "../../../http/api.js";
+import getConfig from '../../../config/dev.js'
+import {
+    getTodoBase,
+    getDoneBase,
+    getInitiateBase,
+} from "../../../http/api.js";
+import { log } from "console";
+
+export default {
+    components: {
+        Tabs,
+        Table,
+        Tables,
+        FormTable,
+        Workflow,
+        WorkflowEntrance
+    },
+    created() {
+        let status = JSON.stringify(this.$route.query) == "{}";
+        if (status) {
+            this.lableTable = this.firstTable
+            this.getQueryList()
+            this.usernumber()
+        } else {
+            let { id, type } = this.$route.query;
+            let list = {
+                taskId: id,
+                tableName: this.request_form.processDefinitionKey
+            };
+            this.usernumber()
+            this.lableTable = this.firstTable
+            this.getQueryList(list, 0);//代办
+        }
+    },
+    data() {
+        return {
+            abc: false,
+            lableTable: {},
+            handleClose: false,
+            isWorkflowStatus: true, //默认展示模式组件,为true时展示多人处理组件
+            buttonStatus: true,
+            copyStatus: false,
+            dialogTitle: "",
+            disabled: true,
+            destroy: false,
+            //分页数据
+            totalPage: "1", //默认第一页
+            currentPage: "1", //当前页数
+            pageSize: "10", //每页显示十条
+            currentPageList: ["1", "2"],
+            startStatus: true,
+            closeStatus: true, //关闭按钮状态
+            forwardStatus: false, //转需求管理平台状态
+            exportBtnStatus: false, //导出按钮状态
+            saveStatus: true, //保存按钮状态
+            fromList: {}, //表单数据
+            rejectStatus: true,
+            taskId: "", //工单taskID
+            request_form: {
+                userId: "",
+                userName: "",
+                path: this.$router.currentRoute.name,
+                userCode: JSON.parse(window.sessionStorage.userInfo).loginNo,
+                // path:this.$roter.options.routers,
+                // nextDealMan:'',
+                title: "title",
+                businessKey: "288",
+                processDefinitionKey: "fhq_process",
+            },
+            requestForm: {
+                // fresourceId: "9d7c2f92-b251-11ed-886f-d6cd97160e00", // 本地环境
+                // fresourceId: "86e7c09e-b256-11ed-be6b-00505687dcd3", //测试环境
+                // fresourceId:'3c3df7fb-d918-11ed-8255-e00084564cce',//生产环境
+                fresourceId: getConfig().firewall,
+                processDefinitionKey: "fhq_process",
+            },
+            treeList: [], //候选人列表
+            treeCopyList: [], //抄送人列表
+            editStatus: false,
+            querryList: [], //已选人员名单
+            commonlyList: [
+                //常用意见列表页
+            ],
+            textarea: "未填写意见",
+            num: 0,
+            dialogStatus: false, //新建dialog显示
+            handleStatus: false, //处理按钮状态
+            tabList: [
+                {
+                    index: "first",
+                    label: "我的待办",
+                    number: 0,
+                    name: "prosss_key",
+                },
+                {
+                    index: "two",
+                    label: "我的已办",
+                    number: 0,
+                },
+                {
+                    index: "three",
+                    label: "我发起的",
+                    number: 0,
+                },
+
+            ],
+            firstTable: {
+                name: "first",
+                height: 500,
+                titledata: [
+                    {
+                        label: "标题",
+                        prop: "need_name",
+                        width: 300,
+                        color: "#0682CD",
+                    },
+                    {
+                        label: "申请人",
+                        prop: "predealman",
+                        width: 300,
+                    },
+                    {
+                        label: "申请时间",
+                        prop: "proposer_time",
+                        width: 400,
+                    },
+                    {
+                        label: "当前环节",
+                        prop: "taskName",
+                        width: 400,
+                    },
+                ], //表格头
+                data: [], //内容数据
+                loading: true,
+                pageData: {
+                    total: 100, // 总条数
+                    pageSize: 10, // 每页数量
+                    pageNum: 1, // 页码
+                },
+                isSelection: false, // 表格有多选时设置
+                isOperation: false, // 表格有操作列时设置
+                isIndex: false, // 列表序号
+                operation: {
+                    // 表格有操作列时设置
+                    label: "操作", // 列名
+                    width: "50", // 根据实际情况给宽度
+                    data: [
+                        {
+                            label: "操作", // 操作名称
+                            type: "", //按钮类型
+                            handleRow: (e, r, o) => {
+
+                            }, // 自定义事件
+                        },
+                    ],
+                },
+            },
+            twoTable: {
+                name: "two",
+                disabled: true,
+                titledata: [
+                    {
+                        label: "标题",
+                        prop: "need_name",
+                        width: 300,
+                        color: "#0682CD",
+                    },
+                    {
+                        label: "申请人",
+                        prop: "applicant",
+                        width: 300,
+                    },
+                    {
+                        label: "申请时间",
+                        prop: "proposer_time",
+                        width: 400,
+                    },
+                    {
+                        label: "当前环节",
+                        prop: "taskName",
+                        width: 400,
+                    },
+                ], //表格头
+                data: [], //内容数据
+                loading: true,
+                pageData: {
+                    total: 100, // 总条数
+                    pageSize: 10, // 每页数量
+                    pageNum: 1, // 页码
+                },
+                isSelection: false, // 表格有多选时设置
+                isOperation: false, // 表格有操作列时设置
+                isIndex: false, // 列表序号
+                operation: {
+                    // 表格有操作列时设置
+                    label: "操作", // 列名
+                    width: "50", // 根据实际情况给宽度
+                    data: [
+                        {
+                            label: "操作", // 操作名称
+                            type: "", //按钮类型
+                            handleRow: function () { }, // 自定义事件
+                        },
+                    ],
+                },
+            },
+            threeTable: {
+                name: "three",
+                titledata: [
+                    {
+                        label: "标题",
+                        prop: "need_name",
+                        width: 300,
+                        color: "#0682CD",
+                    },
+                    {
+                        label: "申请人",
+                        prop: "applicant",
+                        width: 300,
+                    },
+                    {
+                        label: "申请时间",
+                        prop: "proposer_time",
+                        width: 400,
+                    },
+                    {
+                        label: "当前环节",
+                        prop: "taskName",
+                        width: 400,
+                    },
+                    {
+                        label: "当前处理人",
+                        prop: "currentMan",
+                        width: 200,
+                    },
+                ], //表格头
+                data: [], //内容数据
+                loading: true,
+                pageData: {
+                    total: 100, // 总条数
+                    pageSize: 10, // 每页数量
+                    pageNum: 1, // 页码
+                },
+                isSelection: false, // 表格有多选时设置
+                isOperation: false, // 表格有操作列时设置
+                isIndex: false, // 列表序号
+                operation: {
+                    // 表格有操作列时设置
+                    label: "支撑状态", // 列名
+                    width: "100", // 根据实际情况给宽度
+                    data: [
+                        {
+                            label: "查看", // 操作名称
+                            type: "", //按钮类型
+                            handleRow: (e, r, o) => {
+
+                            }, // 自定义事件
+                        },
+                    ],
+                },
+            },
+            lable: {},
+            lables: {
+                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,
+                    },
+                ], //表格头
+                data: [], //内容数据
+                loading: true,
+                pageData: {
+                    total: 0, // 总条数
+                    pageSize: 10, // 每页数量
+                    pageNum: 1, // 页码
+                },
+                isSelection: false, // 表格有多选时设置
+                isOperation: false, // 表格有操作列时设置
+                isIndex: true, // 列表序号
+                operation: {
+                    // 表格有操作列时设置
+                    label: "操作", // 列名
+                    width: "50", // 根据实际情况给宽度
+                    data: [
+                        {
+                            label: "操作", // 操作名称
+                            type: "", //按钮类型
+                            handleRow: function () { }, // 自定义事件
+                        },
+                    ],
+                },
+            },
+            clickTagName: "first",
+        };
+    },
+    methods: {
+        clickTabTops(e) {
+            this.$refs.TableList.page = 1;
+            this.totalPage = "1";
+            this.clickTagName = e;
+            console.log(e);
+            const options = {
+                first: {
+                    setTable: function () {
+                        this.lableTable = this.firstTable;
+                        this.getQueryList();
+                    }.bind(this)
+                },
+                two: {
+                    setTable: function () {
+                        this.lableTable = this.twoTable;
+                        this.getQueryDone();
+                    }.bind(this)
+                },
+                three: {
+                    setTable: function () {
+                        this.lableTable = this.threeTable;
+                        this.getMeLaunch();
+                    }.bind(this)
+                }
+            };
+            options[e]?.setTable?.();
+
+        },
+        //处理按钮,开始工作流接口
+        clickHandles() {
+            this.getNextPath(this.fromList.resourceId || "");
+        },
+        getNextPath(e) {
+            let list = {
+                fresourceId: this.requestForm.fresourceId, // 本地环境
+                processId: this.requestForm.processDefinitionKey,
+            };
+            if (e) {
+                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();
+                    } else {
+                        this.adminResourceId = "";
+                    }
+                } else {
+                    this.adminResourceId = "";
+
+                    // this.destroy = true;
+                    // this.handleStatus = true;
+                }
+                console.log(this.fromList);
+                if (this.fromList.processId || this.fromList.taskId) {
+                    this.destroy = true;
+                    this.handleStatus = true;
+                } else {
+                    this.$message.error("请先点击保存按钮");
+                }
+            });
+        },
+        getQueryList(e, status) {
+            let list = {
+                tableName: this.request_form.processDefinitionKey,
+            };
+            getTodoBase(this.totalPage, "", list).then((res) => {
+                if (status === 0) {
+                    this.clickDemand("标题", res.data.data[0]);
+                }
+                this.lableTable.data = res.data.data;
+                this.tabList[0].number = res.data.totalRecord;
+                this.lableTable.pageData.total = res.data.totalRecord;
+                this.loading = false;
+            });
+        },
+        getQueryDone() {
+            let list = {
+                tableName: this.request_form.processDefinitionKey,
+            };
+            getDoneBase(this.totalPage, "", list).then((res) => {
+                this.lableTable.data = res.data.data;
+                this.lableTable.pageData.total = res.data.totalRecord;
+                // this.tableData.map((item) => {
+                //   item.status = "2";
+                // });
+                this.tabList[1].number = res.data.totalRecord;
+                this.total = res.data.totalRecord;
+                this.loading = false;
+            });
+        },
+        getMeLaunch() {
+            let list = {
+                tableName: this.request_form.processDefinitionKey,
+            };
+            getInitiateBase(this.totalPage, "", list).then((res) => {
+                this.lableTable.data = res.data.data;
+                this.lableTable.pageData.total = res.data.totalRecord;
+                this.tabList[2].number = res.data.totalRecord;
+                this.lableTable.data.map((item) => {
+                    item.startTime = this.formatTimestamp(item.startTime)
+                })
+
+                // this.tableData.map((item) => {
+                //   if (item.taskName === "起草") {
+                //     item.status = "1";
+                //   } else {
+                //     item.status = "2";
+                //   }
+                // });
+                this.total = res.data.totalRecord;
+                this.loading = false;
+            });
+        },
+        formatTimestamp(timestamp) {
+            var date = new Date(timestamp);
+            var year = date.getFullYear();
+            var month = ('0' + (date.getMonth() + 1)).slice(-2);
+            var day = ('0' + date.getDate()).slice(-2);
+            var hours = ('0' + date.getHours()).slice(-2);
+            var minutes = ('0' + date.getMinutes()).slice(-2);
+            var seconds = ('0' + date.getSeconds()).slice(-2);
+            return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
+        },
+        //新建按钮
+        async clickNewTag() {
+            this.dialogTitle = "新建";
+            this.lables.data = [];
+            this.fromList = {}
+            this.disabled = false;
+            this.saveStatus = true
+            await this.getDepartmentName();
+            await this.getOrderNumber()
+
+        },
+        getOrderNumber() {
+            this.$http({
+                url: "/market/fhqProcess/getOrderNumber",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {}
+            }).then((res) => {
+                this.dialogStatus = true;
+                console.log(this.$refs.formTable);
+                this.fromList.orderNumber = res.data.body
+                this.fromList.taskName = '需求发起人'
+            });
+        },
+        //获取用户部门名称
+        getDepartmentName() {
+            this.$http({
+                url: "/market/waf/queryDept",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {},
+            }).then((res) => {
+                let list = {
+                    applyDept: res.data,
+                    applyDepartment: JSON.parse(window.sessionStorage.userInfo).groupName,
+                    proposer: JSON.parse(window.sessionStorage.userInfo).loginName,
+                };
+                // this.fromList = list;
+                if (this.$refs.formTable) {
+                    // this.$refs.formTable.form = list;
+                }
+
+
+            });
+        },
+        clickDemand(e, res) {
+            if (e === "工单状态" || e === "标题") {
+                if (this.clickTagName === "first") {
+                    this.dialogTitle = "查看";
+                    if (res.taskName === "需求发起人") {
+                        this.disabled = false;
+                        this.saveStatus = true;
+                    } else {
+                        this.disabled = true;
+                        this.saveStatus = false;
+                    }
+                    // this.clickForm(res);
+                    // this.getFromQuery(res);
+                    // setTimeout(() => {
+                    //     this.getBtnStatus(res);
+                    // }, 500);
+                }
+                if (this.clickTagName === "two") {
+                    this.disabled = true;
+                    this.startStatus = false;
+                    this.saveStatus = false;
+                }
+                if (this.clickTagName === "three") {
+                    if (res.taskName === "需求发起人") {
+                        this.startStatus = true;
+                        this.disabled = false;
+                        this.saveStatus = true;
+                    } else {
+                        this.startStatus = false;
+                        this.disabled = true;
+                        this.saveStatus = false;
+                    }
+                }
+                this.fromList = res;
+                this.clickForm(res);
+                this.getFromQuery(res);
+            }
+        },
+        //查询form表单数据
+        getFromQuery(e) {
+            this.$http({
+                url: "/market/fhqProcess/query",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: { id: e.id },
+            }).then((res) => {
+                console.log(e);
+                let list = this.convertObjKeys(e)
+                this.fromList = { ...res.data, ...list }
+                console.log(this.fromList);
+                this.dialogStatus = true;
+            });
+        },
+        async clickForm(e) {
+            let list = {
+                processInstanceId: e.process_id,
+                // taskId:e.taskId
+            };
+            let _this = this;
+            let obj = {
+                url: this.$url.formList.getCommentsByProcessId, //流程追踪接口
+                data: list,
+                headers: {
+                    "Content-Type": "application/json",
+                },
+            };
+
+            let res = await this.common.httpPost(obj, success);
+            function success(data) {
+                let list = [];
+                list = data.data.data;
+                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 = list;
+                _this.abc = true;
+            }
+        },
+        //获取页码
+        changeNum(e) {
+            this.totalPage = e;
+            const methodMapping = {
+                first: (timeList) => {
+                    if (timeList) {
+                        this.getQueryList(timeList);
+                    } else {
+                        this.getQueryList();
+                    }
+                },
+                two: () => {
+                    this.getMeDone();
+                },
+                three: (searchLists) => {
+                    if (searchLists) {
+                        this.getMeLaunch(searchLists);
+                    } else {
+                        this.getMeLaunch();
+                    }
+                },
+
+            }
+            const methodToExecute = methodMapping[this.clickTagName];
+
+            if (methodToExecute) {
+                methodToExecute(this.timeList || this.searchLists);
+            }
+            // this.totalPage = e;
+        },
+        clickSave() {
+            this.$refs.formTable.$refs.form.validate((valid) => {
+                if (valid) {
+                    if (this.fromList.id) {
+                        this.setUpdateCopy(this.$refs.formTable.form)
+                    } else {
+                        this.getUserIds();
+                    }
+                } else {
+                    this.$message.error("请完善表单信息");
+                    return false;
+                }
+            });
+
+            // if (this.fromList.id) {
+            //     this.setUpdateCopy(this.$refs.formTable.form)
+            // } else {
+            //     this.getUserIds();
+            //     this.setForm();
+            // }
+        },
+        getUserIds() {
+            this.$http({
+                url: "/market/api/user/info/queryNodePers?params=" + JSON.parse(window.sessionStorage.userInfo).loginNo,
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+            }).then((res) => {
+                this.request_form.userName = res.data[0].children[0].loginNameStr;
+                this.request_form.userId = res.data[0].children[0].loginNoStr;
+                this.setForm();
+                console.log(this.request_form)
+            });
+        },
+        setForm(e) {
+            this.request_form.title = '[工作台]-防火墙策略-' + this.$refs.formTable.form.needName;
+            this.$http({
+                url: "/market/fhqProcess/add",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: this.$refs.formTable.form,
+            }).then((res) => {
+                this.request_form.businessKey = res.data.body;
+                this.clickHandle(res.data.body);
+            });
+        },
+        async clickHandle(e) {
+            let _this = this;
+            let obj = {
+                url: this.$url.formList.startWork, //开始工作流接口
+                data: _this.request_form,
+                status: "form",
+                headers: {
+                    "Content-Type": "application/x-www-form-urlencoded",
+                },
+            };
+
+            let res = await this.common.httpPost(obj, success);
+            function success(data) {
+                console.log(data);
+                // _this.fromList.processId = data.data;
+                // _this.taskId = data.data;
+                let list = {
+                    id: e,
+                    // taskId:_this.formId,
+                    tableName: _this.request_form.processDefinitionKey,
+                    processId: data.data,
+                    // resourceId: _this.nextPath.currentShape[0].resourceId,
+                };
+                _this.setUpdate(list);
+            }
+        },
+        convertObjKeys(obj) {
+            // 检查传入参数是否为对象
+            if (typeof obj !== "object" || obj === null) {
+                return obj;
+            }
+
+            // 对象遍历,使用 Object.keys() 获取所有属性名称
+            return Object.keys(obj).reduce((result, key) => {
+                // 下划线转驼峰命名
+                const newKey = key.replace(/_(\w)/g, (match, p1) => p1.toUpperCase());
+                // 将原有属性赋值到新属性中
+                result[newKey] = obj[key];
+                return result;
+            }, {});
+        },
+        async setUpdate(e) {
+            await updateBase(e).then((res) => {
+                let list = this.convertObjKeys(res.data.body[0])
+                console.log(list);
+                // console.log(res.data.body);
+                this.fromList = list
+                // console.log(this.formList);
+                // this.fromList.taskId = res.data.body[0].taskId;
+                // this.fromList.taskId = '1111111111';
+                // this.fromList.taskName = res.data.body[0].taskName;
+                // this.fromList = concat;
+            });
+        },
+        setUpdateCopy(e) {
+            this.$http({
+                url: "/market/fhqProcess/update",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: e
+            }).then((res) => {
+                console.log(res);
+                this.$message.success(res.data.desc)
+            });
+
+        },
+        usernumber() {
+            getInitiateBase(this.totalPage, "", { tableName: this.request_form.processDefinitionKey, }).then((res) => {
+                this.tabList[2].number = res.data.totalRecord
+            });
+            getDoneBase(this.totalPage, "", { tableName: this.request_form.processDefinitionKey, }).then((res) => {
+                this.tabList[1].number = res.data.totalRecord;
+            });
+            getTodoBase(this.totalPage, "", { tableName: this.request_form.processDefinitionKey, }).then((res) => {
+                this.tabList[0].number = res.data.totalRecord
+            });
+        },
+        clickClose() {
+            // this.$refs.formTable.form = {}
+            this.fromList = {}
+            this.dialogStatus = false;
+            this.treeList = [];
+            this.textarea = "";
+            this.handleStatus = false;
+            this.handleStatus = false;
+            this.destroy = false;
+            this.saveStatus = false;
+            this.startStatus = true;
+            this.usernumber()
+        },
+        handleCloses() {
+            this.beforeClose()
+
+        },
+        beforeClose(e) {
+            this.usernumber()
+            this.dialogStatus = false;
+            this.handleStatus = false;
+            // this.handleCloses();
+            this.getQueryList();
+
+        },
+    },
+};
+</script>
+<style lang="scss" scoped>
+.copyClass {
+    display: flex;
+}
+
+.flex-header-text-tree {
+    width: 50%;
+    text-align: center;
+}
+
+.active {
+    background-color: #f3faff;
+}
+
+.flex-common {
+    padding: 10px 5%;
+    font-size: 18px;
+}
+
+.flex-buttons {
+    background-color: #cde4f6;
+    border-color: #cde4f6;
+    color: #606266;
+}
+
+.flex-button {
+    margin-top: 10px;
+    margin-bottom: 10px;
+
+    ::v-deep .el-button--primary {
+        width: 222px;
+    }
+}
+
+.flex-left-header-text {
+    height: 40px;
+    line-height: 40px;
+    color: black;
+    padding-left: 10px;
+    background-color: #cde4f6;
+    font-size: 18px;
+    font-weight: bold;
+}
+
+.flex-right-text {
+    margin-right: 20px;
+    width: 50%;
+}
+
+.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;
+        }
+    }
+}
+
+.table-title {
+    height: 50px;
+    line-height: 50px;
+    background-color: #f3faff;
+    font-size: 18px;
+    font-weight: bold;
+}
+
+::v-deep .el-dialog {
+    margin-top: 0 !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;
+    margin: 0 auto;
+    margin-top: 20px;
+    position: relative;
+    flex-direction: column;
+
+    // height: 100%;
+    .flex-header {
+        display: flex;
+        width: 100%;
+        position: relative;
+        height: 60px;
+        margin: 1%;
+        border-bottom: 1px solid #e1e1e1;
+        justify-content: space-between;
+
+        .el-button {
+            width: 150px;
+            float: right;
+            height: 40px !important;
+            margin-right: 30px;
+        }
+    }
+}
+
+//设置子组件样式
+::v-deep .el-tabs__item {
+    padding: 0;
+    margin-right: 20px;
+    width: 166px;
+    text-align: center;
+    background-color: #d8eaf6;
+    color: black;
+}
+
+::v-deep .is-active {
+    color: #fff;
+    background-color: #0583cd;
+}
+
+::v-deep .el-tabs__active-bar {
+    display: none;
+}
+
+::v-deep .el-tabs__nav-wrap::after {
+    display: none !important;
+}
+
+.flex-form {
+    margin-top: 50px;
+}
+
+.flex-footer-botton {
+    display: flex;
+    justify-content: space-evenly;
+}
+</style>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1831 - 0
src/pages/main/internetAssessment/internetAssessment.vue


+ 0 - 3
src/pages/main/leader/components/formTable.vue

@@ -338,10 +338,7 @@
             <a
             <a
               target="_blank"
               target="_blank"
               href="./static/file/b.xlsx"
               href="./static/file/b.xlsx"
-              download="敏感信息范围说明.xlsx"
-              >《敏感信息范围说明.xlsx》、</a
             >
             >
-            <a
               target="_blank"
               target="_blank"
               href="./static/file/d.pptx"
               href="./static/file/d.pptx"
               download="关于系统开发需求的汇报(第十期).pptx"
               download="关于系统开发需求的汇报(第十期).pptx"

+ 398 - 0
src/pages/main/leader/rli.vue

@@ -0,0 +1,398 @@
+<template>
+    <div>
+        <!-- <div class="calendar">
+            <div class="arrow">
+                <i class="el-icon-arrow-left" @click="arrow('left')"></i>
+                <i class="el-icon-arrow-right" @click="arrow('right')"></i>
+            </div>
+            <el-calendar v-model="value" :range="dateRange"></el-calendar>
+        </div> -->
+        <!-- 下面的日历 -->
+        <div class="date">
+            <div class="arrow0">
+                <i class="el-icon-arrow-left" @click="weekPre"></i>
+                <i class="el-icon-arrow-right" @click="weekNext"></i>
+            </div>
+            <!-- 年份 月份 -->
+            <div class="month">
+                <p>{{ currentYear }}年{{ currentMonth }}月</p>
+            </div>
+            <!-- 星期 -->
+            <ul class="weekdays">
+                <li>一</li>
+                <li>二</li>
+                <li>三</li>
+                <li>四</li>
+                <li>五</li>
+                <li>六</li>
+                <li>日</li>
+            </ul>
+            <!-- 日期 -->
+            <ul class="days">
+                <li @click="pick(day)" v-for="(day, index) in days" :key="index">
+                    <!--本月-->
+                    <span v-if="day.getMonth() + 1 != currentMonth" class="other-month">{{ day.getDate() }}</span>
+                    <span v-else>
+                        <!--今天-->
+                        <span
+                            v-if="day.getFullYear() == new Date().getFullYear() && day.getMonth() == new Date().getMonth() && day.getDate() == new Date().getDate()"
+                            class="active">{{ day.getDate() }}</span>
+                        <span v-else>{{ day.getDate() }}</span>
+                    </span>
+                </li>
+            </ul>
+            <el-table v-loading="loading" :data="tableData" style="width: 100%">
+                <el-table-column prop="date" label="日期" width="180">
+                </el-table-column>
+                <el-table-column prop="name" label="姓名" width="180">
+                </el-table-column>
+                <el-table-column prop="address" label="地址">
+                </el-table-column>
+            </el-table>
+            <el-pagination @current-change="currchange" :current-page="page" :page-size="size"
+                layout="total,prev, pager, next" :total="total">
+            </el-pagination>
+        </div>
+    </div>
+</template>
+   
+<script>
+export default {
+    data() {
+        return {
+            // 上
+            value: "",
+            endDate: "",
+            dateRange: [],
+            dateNum: 0,
+            // 下
+            currentYear: "",   // 年份
+            currentMonth: "",  // 月份
+            currentDay: "",    // 日期
+            currentWeek: "",    // 星期
+            days: [],
+            tableData: [{
+                date: '2016-05-02',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1518 弄'
+            }, {
+                date: '2016-05-04',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1517 弄'
+            }, {
+                date: '2016-05-01',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1519 弄'
+            }, {
+                date: '2016-05-03',
+                name: '王小虎',
+                address: '上海市普陀区金沙江路 1516 弄'
+            }],
+            loading:false,
+            params: {},
+            page: 1, //第几页
+            size: 10, //一页多少条
+            total: 50, //总条目数
+        }
+    },
+    created() {
+        // 上面的日历
+        this.dateList(this.dateNum);
+        console.log(this.dateRange);
+        // 下面的日历
+        this.initData();
+        this.getlist();
+    },
+    methods: {
+
+        currchange(val) {
+            console.log("翻页,当前为第几页", val);
+            this.page = val;
+            this.getlist(this.params, this.page);
+        },
+        getlist(v, n) {
+            this.loading=true
+            this.$http({
+                url: "/market/waf/queryTodoBase",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    page: '{"pageNo":"' + n + '","pageSize":"10"}',
+                },
+                data: { tableName: 'fxfk_process', },
+            }).then((res) => {
+                this.loading=false
+                this.tableData = res.data.data;
+                this.total = res.data.totalRecord;
+            });
+        },
+        // 上面的日历
+
+        // 获取当前时间的周一
+        getMonday(date) {
+            var day = date.getDay();
+            var deltaDay;
+            if (day == 0) {
+                deltaDay = 6;
+            } else {
+                deltaDay = day - 1;
+            }
+            var monday = new Date(date.getTime() - deltaDay * 24 * 60 * 60 * 1000);
+            monday.setHours(0);
+            monday.setMinutes(0);
+            monday.setSeconds(0);
+            return monday; //返回选定时间的周一的0时0分0秒
+        },
+        getDateNew(time) {
+            console.log(time);
+            let times = new Date(time);
+            let year = times.getFullYear();
+            let month = times.getMonth() + 1 < 10 ? "0" + (times.getMonth() * 1 + 1) : times.getMonth() * 1 + 1;
+            let day = times.getDate() < 10 ? "0" + times.getDate() * 1 : times.getDate() * 1;
+            return year + "-" + month + "-" + day;
+        },
+        dateList(delta) {
+            //将时间对象转换为时间戳并加几天后转换为时间对象
+            var DateNews = this.getMonday(
+                new Date((new Date().getTime() / 1000 + 86400 * 7 * delta) * 1000)
+            );
+            let startDate = this.getDateNew(DateNews, delta);
+            this.endDate = this.getDateNew(
+                new Date((DateNews.getTime() / 1000 + 6 * 86400) * 1000)
+            );
+            this.dateRange = [startDate, this.endDate];
+        },
+        arrow(arrow) {
+            if (arrow == "left") {
+                this.dateNum--;
+                this.dateList(this.dateNum);
+            } else if (arrow == "right") {
+                this.dateNum++;
+                this.dateList(this.dateNum);
+            }
+        },
+
+        // 下面的日历
+
+        formatDate(year, month, day) {
+            const y = year
+            let m = month
+            if (m < 10) m = `0${m}`
+            let d = day
+            if (d < 10) d = `0${d}`
+            return `${y}-${m}-${d}`
+        },
+        initData(cur) {
+            let date = ''
+            if (cur) {
+                date = new Date(cur)
+            } else {
+                date = new Date()
+            }
+            this.currentDay = date.getDate()          // 今日日期 几号
+            this.currentYear = date.getFullYear()       // 当前年份
+            this.currentMonth = date.getMonth() + 1    // 当前月份
+            this.currentWeek = date.getDay() // 1...6,0   // 星期几
+            if (this.currentWeek === 0) {
+                this.currentWeek = 7
+            }
+            const str = this.formatDate(this.currentYear, this.currentMonth, this.currentDay) // 今日日期 年-月-日
+            this.days.length = 0
+            // 今天是周日,放在第一行第7个位置,前面6个 这里默认显示一周,如果需要显示一个月,则第二个循环为 i<= 35- this.currentWeek
+            /* eslint-disabled */
+            for (let i = this.currentWeek - 1; i >= 0; i -= 1) {
+                const d = new Date(str)
+                d.setDate(d.getDate() - i)
+                // console.log(y:" + d.getDate())
+                this.days.push(d)
+            }
+            for (let i = 1; i <= 7 - this.currentWeek; i += 1) {
+                const d = new Date(str)
+                d.setDate(d.getDate() + i)
+                this.days.push(d)
+            }
+        },
+        //  上个星期
+        weekPre() {
+            const d = this.days[0]    // 如果当期日期是7号或者小于7号
+            d.setDate(d.getDate() - 7)
+            this.initData(d)
+        },
+        //  下个星期
+        weekNext() {
+            const d = this.days[6]    // 如果当期日期是7号或者小于7号
+            d.setDate(d.getDate() + 7)
+            this.initData(d)
+        },
+        // 上一個月   传入当前年份和月份
+        pickPre(year, month) {
+            const d = new Date(this.formatDate(year, month, 1))
+            d.setDate(0)
+            this.initData(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1))
+        },
+        // 下一個月   传入当前年份和月份
+        pickNext(year, month) {
+            const d = new Date(this.formatDate(year, month, 1))
+            d.setDate(35)
+            this.initData(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1))
+        },
+        // 当前选择日期
+        pick(date) {
+            alert(this.formatDate(date.getFullYear(), date.getMonth() + 1, date.getDate()))
+        },
+    },
+};
+</script>
+   
+<style lang="scss" scoped>
+ul {
+    padding: 0;
+}
+
+li {
+    list-style-type: none;
+}
+
+/* 上面的日历 */
+.calendar {
+    position: relative;
+    width: 100%;
+    background: #fff;
+    margin-top: 20px;
+    margin-left: 20px;
+}
+
+.el-calendar__header {
+    display: block;
+}
+
+.el-calendar-table .el-calendar-day {
+    height: auto;
+    text-align: center;
+}
+
+.el-calendar-table td.is-selected {
+    background-color: #24b18d;
+    color: #fff;
+}
+
+.el-calendar-table .el-calendar-day:hover {
+    background-color: #24b18d;
+    color: #fff;
+}
+
+.el-calendar-table {
+    border-bottom: 1px solid #e4e4e4;
+    padding-bottom: 15px;
+}
+
+.el-calendar-table .next {
+    color: rgb(143, 143, 143);
+}
+
+.el-calendar__title,
+.el-calendar__button-group {
+    text-align: center;
+}
+
+.arrow {
+    width: 100%;
+    max-height: 46px;
+    position: absolute;
+    top: 15px;
+    text-align: center;
+}
+
+.arrow i {
+    font-size: 20px;
+    cursor: pointer;
+}
+
+.arrow i:nth-child(1) {
+    margin-right: 10%;
+    text-align: left;
+}
+
+.arrow i:nth-child(2) {
+    margin-left: 10%;
+    text-align: right;
+}
+
+/* 下面的日历 */
+.date {
+    position: relative;
+    margin-top: 20px;
+    padding: 10px 20px;
+    background-color: #D3D3D3;
+}
+
+.arrow0 {
+    width: 100%;
+    max-height: 46px;
+    position: absolute;
+    top: 27px;
+    left: 0px;
+    text-align: center;
+}
+
+.arrow0 i {
+    font-size: 20px;
+    cursor: pointer;
+}
+
+.arrow0 i:nth-child(1) {
+    margin-right: 10%;
+    text-align: left;
+}
+
+.arrow0 i:nth-child(2) {
+    margin-left: 10%;
+    text-align: right;
+}
+
+.month {
+    text-align: center;
+}
+
+.weekdays {
+    display: flex;
+}
+
+.weekdays li {
+    flex: 1;
+    text-align: center;
+}
+
+.days {
+    display: flex;
+}
+
+.days li {
+    flex: 1;
+    text-align: center;
+    cursor: pointer;
+}
+
+.days li span {
+    display: inline-block;
+    width: 22px;
+    height: 22px;
+}
+
+.days li span:hover {
+    color: #fff;
+    background-color: #409EFF;
+    border-radius: 50%;
+}
+
+.active {
+    display: inline-block;
+    color: #fff;
+    border-radius: 50%;
+    background-color: #fa6854 !important;
+}
+
+.other-month {
+    color: #e4393c;
+}
+</style>

+ 60 - 9
src/pages/main/memberFamily/dataStatistics.vue

@@ -24,9 +24,9 @@
 					</el-table-column>
 					</el-table-column>
 					<el-table-column prop="cnt" label="员工总数">
 					<el-table-column prop="cnt" label="员工总数">
 					</el-table-column>
 					</el-table-column>
-					<el-table-column label="操作" width="160px" align="center">
+					<el-table-column label="操作" width="160px" align="center" v-if="look">
 						<template slot-scope="scope">
 						<template slot-scope="scope">
-							<el-button size="mini" type="primary" @click="choseperson(scope.row)">查看</el-button>
+							<el-button size="mini" type="primary" @click="choseperson(scope.row)" >查看</el-button>
 						</template>
 						</template>
 					</el-table-column>
 					</el-table-column>
 				</el-table>
 				</el-table>
@@ -73,12 +73,15 @@
 				delid: '',
 				delid: '',
 				loading: false,
 				loading: false,
 				loadinged: false,
 				loadinged: false,
+				look:false,
 				time: '',
 				time: '',
 				num: '',
 				num: '',
 				fillCnt: '',
 				fillCnt: '',
 				lastUpdateTime: '',
 				lastUpdateTime: '',
                 sts:1,
                 sts:1,
                 companyFlag:'',
                 companyFlag:'',
+                isRegionName:'',
+				regionName:'',
 				// excelCityparam: ""
 				// excelCityparam: ""
 				memberFamilyBtnShow: "-1"
 				memberFamilyBtnShow: "-1"
 			}
 			}
@@ -111,7 +114,7 @@
                         window.navigator.msSaveOrOpenBlob(blob, 'adv.xlsx');
                         window.navigator.msSaveOrOpenBlob(blob, 'adv.xlsx');
                     } else {
                     } else {
                         /* 火狐谷歌的文件下载方式 */
                         /* 火狐谷歌的文件下载方式 */
-                        console.log(response.data.type)
+                        // console.log(response.data.type)
                         var blob = new Blob([response.data])
                         var blob = new Blob([response.data])
                         var downloadElement = document.createElement('a')
                         var downloadElement = document.createElement('a')
                         var href = window.URL.createObjectURL(blob);
                         var href = window.URL.createObjectURL(blob);
@@ -125,6 +128,7 @@
                 });
                 });
             },
             },
 			choseperson(v){
 			choseperson(v){
+			
 				if(v.showButton){
 				if(v.showButton){
 					window.sessionStorage.memberFamilyBtnShow = v.showButton;
 					window.sessionStorage.memberFamilyBtnShow = v.showButton;
 				}
 				}
@@ -133,7 +137,8 @@
 						 this.$router.push({
 						 this.$router.push({
                         	path: "/employeeInfo",
                         	path: "/employeeInfo",
                             query:{
                             query:{
-                                regionName:v.regionName
+                                regionName:v.regionName,
+								isRegionName:v.isRegionName
                             }
                             }
                         });
                         });
                         this.setabList("员工信息", "/employeeInfo?regionName="+v.regionName);
                         this.setabList("员工信息", "/employeeInfo?regionName="+v.regionName);
@@ -153,7 +158,8 @@
                         this.$router.push({
                         this.$router.push({
                         	path: "/employeeInfo",
                         	path: "/employeeInfo",
                             query:{
                             query:{
-                                regionName:v.areaName
+                                regionName:v.areaName,
+								isRegionName:v.isRegionName
                             }
                             }
                         });
                         });
                         this.setabList("员工信息", "/employeeInfo?regionName="+v.areaName);
                         this.setabList("员工信息", "/employeeInfo?regionName="+v.areaName);
@@ -172,6 +178,7 @@
                     	this.tableData = res.data.data;
                     	this.tableData = res.data.data;
                     	this.total = res.data.totalRecord;
                     	this.total = res.data.totalRecord;
                     	this.loading = false;
                     	this.loading = false;
+						this.isRegionName = res.data.data.isRegionName;
                         this.sts = 2;
                         this.sts = 2;
                     });
                     });
 					
 					
@@ -179,7 +186,8 @@
                     this.$router.push({
                     this.$router.push({
                     	path: "/employeeInfo?regionName="+v.areaName,
                     	path: "/employeeInfo?regionName="+v.areaName,
                         query:{
                         query:{
-                            regionName:v.areaName
+                            regionName:v.areaName,
+							isRegionName:v.isRegionName
                         }
                         }
                     });
                     });
 					
 					
@@ -204,7 +212,7 @@
 				this.$store.commit("setTabList", Array.from(set));
 				this.$store.commit("setTabList", Array.from(set));
 			},
 			},
 			handleSelectionChange(val) {
 			handleSelectionChange(val) {
-				console.log(val) 
+				// console.log(val) 
 			},
 			},
 			//搜索数据
 			//搜索数据
 			searchInfo(v) {
 			searchInfo(v) {
@@ -214,19 +222,45 @@
 			},
 			},
 			//获取列表
 			//获取列表
 			getList(v, n) {
 			getList(v, n) {
+		
 				this.pageSize = n;
 				this.pageSize = n;
 				let _this = this;
 				let _this = this;
 				this.loading = true;
 				this.loading = true;
 				this.tableData = [];
 				this.tableData = [];
                 let url = '';
                 let url = '';
-                if(this.companyFlag == 0){
+				if(this.companyFlag == 2){
+					this.$router.push({
+                    	path: "/employeeInfo?regionName="+v.areaName,
+                        query:{
+                            regionName:this.regionName,
+							isRegionName:v.isRegionName
+                        }
+                    });
+					
+                    this.setabList("员工信息", "/employeeInfo?regionName="+v.areaName);
+				}else if(this.companyFlag == 0){
                     url="/market/cMemberWo/querySummaryByProvPage"
                     url="/market/cMemberWo/querySummaryByProvPage"
+					this.$http({
+					url: url,
+					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;
+					// this.isRegionName = res.data.data.isRegionName;
+					
+				});
                 }else if(this.companyFlag == 1){
                 }else if(this.companyFlag == 1){
                     url="/market/cMemberWo/querySummaryByAreaPage"
                     url="/market/cMemberWo/querySummaryByAreaPage"
                     v.regionName = this.userInfo.cityName
                     v.regionName = this.userInfo.cityName
 					window.sessionStorage.excelCityparam = this.userInfo.cityName;
 					window.sessionStorage.excelCityparam = this.userInfo.cityName;
 					this.sts = 2
 					this.sts = 2
-                }
+                
 				this.$http({
 				this.$http({
 					url: url,
 					url: url,
 					method: "post",
 					method: "post",
@@ -239,8 +273,23 @@
 					this.tableData = res.data.data;
 					this.tableData = res.data.data;
 					this.total = res.data.totalRecord;
 					this.total = res.data.totalRecord;
 					this.loading = false;
 					this.loading = false;
+					// this.isRegionName = res.data.data.isRegionName;
 					
 					
 				});
 				});
+				}
+			},
+			judgment(){
+				this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+				if(this.userInfo.duty <= 9){
+					if(this.userInfo.loginNoStr == "kanyanli"){
+						this.look = true;
+					}else{
+						this.look = false;
+					}
+					
+				}else{
+					this.look = true;
+				}
 			},
 			},
 			// 分页
 			// 分页
 			currchange(v) {
 			currchange(v) {
@@ -297,12 +346,14 @@
                     data: {},
                     data: {},
                 }).then((res) => {
                 }).then((res) => {
                     this.companyFlag = res.data.companyFlag;
                     this.companyFlag = res.data.companyFlag;
+					this.regionName = res.data.groupName;
                      this.getList({}, 1);
                      this.getList({}, 1);
                 });
                 });
 			}
 			}
 		},
 		},
 		mounted() {
 		mounted() {
 			this.getUser();
 			this.getUser();
+			this.judgment();
 			window.sessionStorage.memberFamilyBtnShow = this.memberFamilyBtnShow
 			window.sessionStorage.memberFamilyBtnShow = this.memberFamilyBtnShow
 		},
 		},
 		created() {
 		created() {

+ 193 - 110
src/pages/main/memberFamily/empInfoFilling.vue

@@ -35,7 +35,7 @@
         </div>
         </div>
 
 
         <el-dialog title="员工信息" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
         <el-dialog title="员工信息" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
-            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia" :fullscreen="true">
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia" :fullscreen="true" :show-close="false">
             <div>
             <div>
 
 
                 <el-table class="com-table" ref="multipleTable" :data="infodata" tooltip-effect="dark" size="small"
                 <el-table class="com-table" ref="multipleTable" :data="infodata" tooltip-effect="dark" size="small"
@@ -43,7 +43,7 @@
 
 
                     <el-table-column prop="memberRelation" label="成员关系">
                     <el-table-column prop="memberRelation" label="成员关系">
                         <template slot-scope="scope">
                         <template slot-scope="scope">
-                            <el-select clearable v-model="scope.row.memberRelation" :disabled="disableStatus">
+                            <el-select clearable v-model="scope.row.memberRelation" :disabled="scope.row.memberRelation == '本人' ? true : false">
                                 <el-option v-for="items in relationopt" :key="items.dataCode" :label="items.dataName"
                                 <el-option v-for="items in relationopt" :key="items.dataCode" :label="items.dataName"
                                     :value="items.dataCode">
                                     :value="items.dataCode">
                                 </el-option>
                                 </el-option>
@@ -158,7 +158,7 @@
                             </el-button>
                             </el-button>
                             <el-button size="mini" type="primary" @click="choline(3,scope)" v-if="scope.row.id">修改
                             <el-button size="mini" type="primary" @click="choline(3,scope)" v-if="scope.row.id">修改
                             </el-button>
                             </el-button>
-                            <el-button size="mini" type="danger" @click="choline(2,scope)" v-if="scope.row.id">删除
+                            <el-button size="mini" type="danger" @click="choline(2,scope)" v-if="scope.row.id && scope.row.memberRelation != '本人'">删除
                             </el-button>
                             </el-button>
                         </template>
                         </template>
                     </el-table-column>
                     </el-table-column>
@@ -217,6 +217,7 @@
                 tableData: [{}],
                 tableData: [{}],
                 dialogStatus: false,
                 dialogStatus: false,
                 disableStatus: false,
                 disableStatus: false,
+                disableStatus1: false,
                 titname: '',
                 titname: '',
                 infolist: {},
                 infolist: {},
                 userInfo: {},
                 userInfo: {},
@@ -234,7 +235,17 @@
                 partyGroupopt: [],
                 partyGroupopt: [],
                 immiTypeopt: [],
                 immiTypeopt: [],
                 fillId: '',
                 fillId: '',
+                relationship:[],
+                relationshipqi:[],
+
+            }
+        },
+        watch:{
+          'scope.row.memberRelation':{
+            handler(newVal,oldVal){
+                // console.log(newVal);
             }
             }
+          }
         },
         },
         methods: {
         methods: {
             sfzyz(v){
             sfzyz(v){
@@ -253,13 +264,162 @@
                 // console.log(n.row);
                 // console.log(n.row);
                 let url = '';
                 let url = '';
                 if (v == 1) {
                 if (v == 1) {
-                    url = "/market/cMemberFillDetail/add"
+                  
+                    for(let i=0; i<this.infodata.length;i++){
+                      
+                         this.relationship.push(this.infodata[i].memberRelation)
+                    
+                     }  
+                        if(this.relationship.indexOf("本人") == -1 ){
+                             this.$message.error("请先添加本人");
+                        }else{
+                            url = "/market/cMemberFillDetail/add"
+                     
+                    if(!n.row.memberRelation){
+                    this.$message({
+                        message: '请填写成员关系',
+                        type: 'error'
+                    });
+                    return
+                }
+                
+                if(!n.row.memberName){
+                    this.$message({
+                        message: '请填写成员姓名',
+                        type: 'error'
+                    });
+                    return
+                }
+                if(!n.row.memberSex){
+                    this.$message({
+                        message: '请填写成员性别',
+                        type: 'error'
+                    });
+                    return
+                }
+                if(!n.row.idCard){
+                    this.$message({
+                        message: '请填写成员身份证号',
+                        type: 'error'
+                    });
+                    return
+                }
+                this.$http({
+                    url: url,
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: n.row,
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        _this.$message({
+                            message: res.data.desc,
+                            type: 'error'
+                        });
+                    } else {
+                        _this.$message({
+                            message: '成功',
+                            type: 'success'
+                        });
+                        _this.$http({
+                            url: "/market/cMemberFillDetail/queryPage",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                                "page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
+                            },
+                            data: {
+                                fillId: _this.fillId
+                            },
+                        }).then((res) => {
+                            _this.infodata = res.data.data;
+                            // _this.infodata.push({});
+                            _this.infodata.push({fillId: this.fillId});
+                          
+                             for(let i=0; i<_this.infodata.length;i++){
+                       
+                         _this.relationshipqi.push(_this.infodata[i].memberRelation)
+                      
+                     } 
+                     if(_this.relationshipqi.indexOf("本人") != -1 ){
+                             _this.relationopt.splice(22,1);
+                        }
+                        });
+                    }
+                });
+              }
+          
                     // _this.infodata.push({});
                     // _this.infodata.push({});
                 } else if (v == 3) {
                 } else if (v == 3) {
                     url = "/market/cMemberFillDetail/update"
                     url = "/market/cMemberFillDetail/update"
+                    if(!n.row.memberRelation){
+                    this.$message({
+                        message: '请填写成员关系',
+                        type: 'error'
+                    });
+                    return
+                }
+                
+                if(!n.row.memberName){
+                    this.$message({
+                        message: '请填写成员姓名',
+                        type: 'error'
+                    });
+                    return
+                }
+                if(!n.row.memberSex){
+                    this.$message({
+                        message: '请填写成员性别',
+                        type: 'error'
+                    });
+                    return
+                }
+                if(!n.row.idCard){
+                    this.$message({
+                        message: '请填写成员身份证号',
+                        type: 'error'
+                    });
+                    return
+                }
+                this.$http({
+                    url: url,
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: n.row,
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        _this.$message({
+                            message: res.data.desc,
+                            type: 'error'
+                        });
+                    } else {
+                        _this.$message({
+                            message: '成功',
+                            type: 'success'
+                        });
+                        _this.$http({
+                            url: "/market/cMemberFillDetail/queryPage",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                                "page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
+                            },
+                            data: {
+                                fillId: _this.fillId
+                            },
+                        }).then((res) => {
+                            _this.infodata = res.data.data;
+                            // _this.infodata.push({});
+                            _this.infodata.push({fillId: this.fillId});
+                        });
+                    }
+                });
                 } else if (v == 2) {
                 } else if (v == 2) {
                     url = "/market/cMemberFillDetail/del"
                     url = "/market/cMemberFillDetail/del"
-                }
+               
                 if(!n.row.memberRelation){
                 if(!n.row.memberRelation){
                     this.$message({
                     this.$message({
                         message: '请填写成员关系',
                         message: '请填写成员关系',
@@ -275,14 +435,6 @@
                     });
                     });
                     return
                     return
                 }
                 }
-                // if(!n.row.bornDate){
-                //     this.$message({
-                //         message: '请填写成员出生日期',
-                //         type: 'error'
-                //     });
-                //     return
-                // }
-                
                 if(!n.row.memberSex){
                 if(!n.row.memberSex){
                     this.$message({
                     this.$message({
                         message: '请填写成员性别',
                         message: '请填写成员性别',
@@ -297,48 +449,6 @@
                     });
                     });
                     return
                     return
                 }
                 }
-                // if(!n.row.partyGroup){
-                //     this.$message({
-                //         message: '请填写成员政治面貌',
-                //         type: 'error'
-                //     });
-                //     return
-                // }
-                // if(!n.row.workUnit){
-                //     this.$message({
-                //         message: '请填写成员工作单位',
-                //         type: 'error'
-                //     });
-                //     return
-                // }
-                // if(!n.row.memberTel){
-                //     this.$message({
-                //         message: '请填写成员联系电话',
-                //         type: 'error'
-                //     });
-                //     return
-                // }
-                // if(!n.row.memberAddress){
-                //     this.$message({
-                //         message: '请填写成员联系地址',
-                //         type: 'error'
-                //     });
-                //     return
-                // }
-                // if(!n.row.interiorStaff){
-                //     this.$message({
-                //         message: '请填写是否移动系统内工作',
-                //         type: 'error'
-                //     });
-                //     return
-                // }
-                // if(!n.row.staffName){
-                //     this.$message({
-                //         message: '请填写系统内员工职务',
-                //         type: 'error'
-                //     });
-                //     return
-                // }
                 this.$http({
                 this.$http({
                     url: url,
                     url: url,
                     method: "post",
                     method: "post",
@@ -369,10 +479,14 @@
                             },
                             },
                         }).then((res) => {
                         }).then((res) => {
                             _this.infodata = res.data.data;
                             _this.infodata = res.data.data;
-                            _this.infodata.push({});
+                            // _this.infodata.push({});
+                            _this.infodata.push({fillId: this.fillId});
+                            
+                            
                         });
                         });
                     }
                     }
                 });
                 });
+                 }
             },
             },
             jumpfw() {
             jumpfw() {
                 this.$router.push({
                 this.$router.push({
@@ -461,11 +575,21 @@
                     },
                     },
                 }).then((res) => {
                 }).then((res) => {
                     this.infodata = res.data.data;
                     this.infodata = res.data.data;
+                  
                     this.infodata.push({fillId: this.fillId});
                     this.infodata.push({fillId: this.fillId});
+                     for(let i=0; i<this.infodata.length;i++){
+                
+                         this.relationshipqi.push(this.infodata[i].memberRelation)
+                  
+                     } 
+                     if(this.relationshipqi.indexOf("本人") != -1 ){
+                             this.relationopt.splice(22,1);
+                        }
                 });
                 });
             },
             },
             //添加
             //添加
             dialogCli(v) {
             dialogCli(v) {
+
                 if(this.disableStatus){
                 if(this.disableStatus){
                     this.infolist = {};
                     this.infolist = {};
                     this.dialogStatus = false;
                     this.dialogStatus = false;
@@ -473,9 +597,12 @@
 
 
                     let _this = this;
                     let _this = this;
                     let infodata1 = JSON.parse(JSON.stringify(this.infodata))
                     let infodata1 = JSON.parse(JSON.stringify(this.infodata))
+                 
                     let infodataLast = infodata1[infodata1.length-1]
                     let infodataLast = infodata1[infodata1.length-1]
+                
                     if(Object.keys(infodataLast).length >= 2){
                     if(Object.keys(infodataLast).length >= 2){
                         if(!infodataLast.memberRelation && !infodataLast.memberName && !infodataLast.memberSex && !infodataLast.idCard){
                         if(!infodataLast.memberRelation && !infodataLast.memberName && !infodataLast.memberSex && !infodataLast.idCard){
+                       
                             this.loadinged = true;
                             this.loadinged = true;
                         this.$http({
                         this.$http({
                             url: "/market/cMemberFillDetail/saveFillDetailSummaryNew",
                             url: "/market/cMemberFillDetail/saveFillDetailSummaryNew",
@@ -535,6 +662,8 @@
                             });
                             });
                             return false
                             return false
                         }
                         }
+                        
+                        
                         this.loadinged = true;
                         this.loadinged = true;
                         this.$http({
                         this.$http({
                             url: "/market/cMemberFillDetail/saveFillDetailSummaryNew",
                             url: "/market/cMemberFillDetail/saveFillDetailSummaryNew",
@@ -563,10 +692,13 @@
                                 _this.getList({}, _this.pageSize);
                                 _this.getList({}, _this.pageSize);
                             }
                             }
                         });
                         });
-                        }
+                  
+                       
+            }
                         
                         
                     }else if(Object.keys(infodataLast).length == 1){
                     }else if(Object.keys(infodataLast).length == 1){
-                        this.loadinged = true;
+                    
+                                this.loadinged = true;
                         this.$http({
                         this.$http({
                             url: "/market/cMemberFillDetail/saveFillDetailSummaryNew",
                             url: "/market/cMemberFillDetail/saveFillDetailSummaryNew",
                             method: "post",
                             method: "post",
@@ -594,59 +726,10 @@
                                 _this.getList({}, _this.pageSize);
                                 _this.getList({}, _this.pageSize);
                             }
                             }
                         });
                         });
+                       
+                        
                     }
                     }
 
 
-
-                    // let isInfodataNull = infodataLast.filter((item)=>{
-                    //     console.log(item.length);
-                    //     return item.length
-                    // })
-                    // console.log(isInfodataNull);  
-                // this.infodata.forEach((item,index)=>{
-                    // if(!infodataLast.memberRelation){
-                    //     this.$message({
-                    //         message: '请填写成员关系',
-                    //         type: 'error'
-                    //     });
-                    //     return false
-                    // }
-                    
-                    // if(!infodataLast.memberName){
-                    //     this.$message({
-                    //         message: '请填写成员姓名',
-                    //         type: 'error'
-                    //     });
-                    //     return false
-                    // }
-                    
-                    // if(!infodataLast.memberSex){
-                    //     this.$message({
-                    //         message: '请填写成员性别',
-                    //         type: 'error'
-                    //     });
-                    //     return false
-                    // }
-                    // if(!infodataLast.idCard){
-                    //     this.$message({
-                    //         message: '请填写成员身份证号',
-                    //         type: 'error'
-                    //     });
-                    //     return false
-                    // }
-                // })
-                    // this.$http({
-                    //     url: "/market/cMemberFillDetail/saveFillDetailSummaryNew",
-                    //     method: "post",
-                    //     headers: {
-                    //         "Content-Type": "application/json",
-                    //         "page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
-                    //     },
-                    //     data: infodata1,
-                    // }).then((res) => {
-                    //     this.infolist = {};
-                    //     this.dialogStatus = false;
-                    // });
-                    // console.log(infodata1)
                 
                 
                 }
                 }
                 
                 
@@ -721,7 +804,7 @@
             },
             },
             //文件返回值
             //文件返回值
             uploadBack(v) {
             uploadBack(v) {
-                console.log(v)
+                // console.log(v)
             },
             },
             //功能栏
             //功能栏
             iconCli(v) {
             iconCli(v) {

+ 30 - 4
src/pages/main/memberFamily/employeeInfo.vue

@@ -128,12 +128,24 @@
             outexl(){
             outexl(){
                 let url = '/market/cMemberWo/excelExportDetailSummary';
                 let url = '/market/cMemberWo/excelExportDetailSummary';
                 let paramsf = {};
                 let paramsf = {};
-                
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo)
                 if(this.memberFamilyBtnShow && (this.memberFamilyBtnShow == "1")){
                 if(this.memberFamilyBtnShow && (this.memberFamilyBtnShow == "1")){
                     paramsf.areaName = this.$route.query.regionName
                     paramsf.areaName = this.$route.query.regionName
                 }else{
                 }else{
+                    // if(this.userInfo.loginNoStr != "kanyanli"){
+                    //     paramsf.regionName = this.$route.query.regionName
+                    // }
+                    //  paramsf.areaName = this.$route.query.regionName 
+                if(this.$route.query.isRegionName == 1){
                     paramsf.regionName = this.$route.query.regionName
                     paramsf.regionName = this.$route.query.regionName
+                    paramsf.areaNameIsNull = 0
+                   }else{
+                    paramsf.areaName = this.$route.query.regionName
+                   }
                 }
                 }
+                paramsf.isShow = 0;
+                var memberFamilyBtnShow = JSON.parse(window.sessionStorage.memberFamilyBtnShow)
+                paramsf.showButton = memberFamilyBtnShow
                 this.$http({
                 this.$http({
                     url: url,
                     url: url,
                     method: "post",
                     method: "post",
@@ -150,7 +162,7 @@
                         window.navigator.msSaveOrOpenBlob(blob, 'adv.xlsx');
                         window.navigator.msSaveOrOpenBlob(blob, 'adv.xlsx');
                     } else {
                     } else {
                         /* 火狐谷歌的文件下载方式 */
                         /* 火狐谷歌的文件下载方式 */
-                        console.log(response.data.type)
+                        // console.log(response.data.type)
                         var blob = new Blob([response.data])
                         var blob = new Blob([response.data])
                         var downloadElement = document.createElement('a')
                         var downloadElement = document.createElement('a')
                         var href = window.URL.createObjectURL(blob);
                         var href = window.URL.createObjectURL(blob);
@@ -205,7 +217,21 @@
                 let _this = this;
                 let _this = this;
                 this.loading = true;
                 this.loading = true;
                 this.tableData = [];
                 this.tableData = [];
-                v.areaName = this.$route.query.regionName;
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo)
+                //  this.userInfo.loginNoStr != "kanyanli"? :   
+                //  console.log(this.userInfo.loginNoStr);   
+            
+                
+                    if(this.$route.query.isRegionName == 1){
+                        v.regionName = this.$route.query.regionName
+                        v.areaNameIsNull = 0
+                    }else{
+                        v.areaName = this.$route.query.regionName
+                    }
+                    
+                
+                
+                // v.areaName = this.$route.query.regionName
                 v.isShow = 0;
                 v.isShow = 0;
                 var memberFamilyBtnShow = JSON.parse(window.sessionStorage.memberFamilyBtnShow)
                 var memberFamilyBtnShow = JSON.parse(window.sessionStorage.memberFamilyBtnShow)
                 v.showButton = memberFamilyBtnShow
                 v.showButton = memberFamilyBtnShow
@@ -332,7 +358,7 @@
             },
             },
             //文件返回值
             //文件返回值
             uploadBack(v) {
             uploadBack(v) {
-                console.log(v)
+                // console.log(v)
             },
             },
             //功能栏
             //功能栏
             iconCli(v) {
             iconCli(v) {

+ 5 - 2
src/pages/main/memberFamily/haveInHand.vue

@@ -382,17 +382,20 @@ export default {
             });
             });
         },
         },
         deletes(val, index) {
         deletes(val, index) {
+         
             this.treeList.splice(index, 1);
             this.treeList.splice(index, 1);
             this.closeList = this.treeList;
             this.closeList = this.treeList;
         },
         },
         deletess(val, index) {
         deletess(val, index) {
+        
             this.treeListOld.splice(index, 1);
             this.treeListOld.splice(index, 1);
-            this.closeList = this.treeListOld;
+            // this.closeList = this.treeListOld;
         },
         },
         deletest(val, index) {
         deletest(val, index) {
             this.treeListp.splice(index, 1);
             this.treeListp.splice(index, 1);
         },
         },
         treeCheck(v) {
         treeCheck(v) {
+     
             this.treeList = v;
             this.treeList = v;
         },
         },
         choseDept(v) {
         choseDept(v) {
@@ -650,7 +653,7 @@ export default {
         },
         },
         //文件返回值
         //文件返回值
         uploadBack(v) {
         uploadBack(v) {
-            console.log(v)
+            // console.log(v)
         },
         },
         //功能栏
         //功能栏
         iconCli(v) {
         iconCli(v) {

+ 48 - 20
src/pages/main/memberFamily/index.vue

@@ -34,7 +34,7 @@
 						<i class="el-icon-notebook-1"></i>
 						<i class="el-icon-notebook-1"></i>
 						<span>已结束 </span>
 						<span>已结束 </span>
 					</div>
 					</div>
-					<div class="adv-tit adv-add" @click="advadd" v-if="roleStatus == 0">
+					<div class="adv-tit adv-add" @click="advadd" v-if="this.isAuthor">
 						<i class="el-icon-plus"></i>
 						<i class="el-icon-plus"></i>
 						<span>申请</span>
 						<span>申请</span>
 					</div>
 					</div>
@@ -84,7 +84,7 @@
 				</el-form-item>
 				</el-form-item>
 			</el-form>
 			</el-form>
 			<div style="text-align: right;margin-top: 20px">
 			<div style="text-align: right;margin-top: 20px">
-				<el-button @click="dialogCli(1)" type="primary">确 定</el-button>
+				<el-button @click="isClick && dialogCli(1)" type="primary">确 定</el-button>
 				<el-button @click="dialogCli(2)">取 消</el-button>
 				<el-button @click="dialogCli(2)">取 消</el-button>
 			</div>
 			</div>
 		</el-dialog>
 		</el-dialog>
@@ -150,6 +150,8 @@
 				dialogStatus: false,
 				dialogStatus: false,
 				disableStatus: false,
 				disableStatus: false,
 				dialogStatusp: false,
 				dialogStatusp: false,
+				isAuthor:false,
+				isClick: true,
 				infolist: {},
 				infolist: {},
 				treeList:[],
 				treeList:[],
 				treeListp:[],
 				treeListp:[],
@@ -170,6 +172,28 @@
 			}
 			}
 		},
 		},
 		methods: {
 		methods: {
+		getPermissions(){
+            this.$http({
+                url: "/market/waf/checkRole",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {name:"渠道人员填报"},
+            }).then((res) => {
+             
+                this.isAuthor = res.data.body;
+                // if(res.data.isAuthor){
+                //     this.isViewer = true;
+                // }else{
+                //     this.isViewer = res.data.isViewer;
+                // }
+                /*if(!this.isViewer){
+                    this.msg = "权限错误!";
+                    this.popupMsg();
+                }*/
+            });
+        },
 			dialogCli(v) {
 			dialogCli(v) {
 				let _this = this;
 				let _this = this;
 				if (v === 1) {
 				if (v === 1) {
@@ -187,7 +211,7 @@
 						})
 						})
 					}
 					}
 					param.fillList = [];
 					param.fillList = [];
-                    // console.log(this.treeList)
+               
 					for (let i = 0; i < this.treeList.length; i++) {
 					for (let i = 0; i < this.treeList.length; i++) {
 						param.fillList.push({
 						param.fillList.push({
 							fillNo:this.treeList[i].receiveNo,
 							fillNo:this.treeList[i].receiveNo,
@@ -205,6 +229,7 @@
 							}
 							}
 						}
 						}
 					}
 					}
+					this.isClick = false;
                     this.$refs.infolist.validate(valid => {
                     this.$refs.infolist.validate(valid => {
                         if (valid) {
                         if (valid) {
                             this.$http({
                             this.$http({
@@ -229,7 +254,9 @@
                             		_this.treeList = [];
                             		_this.treeList = [];
                             		_this.treeListp = [];
                             		_this.treeListp = [];
                             		_this.dialogStatus = false;
                             		_this.dialogStatus = false;
+
                             	}
                             	}
+								this.isClick = true;
                             });
                             });
                         }
                         }
                     })
                     })
@@ -352,21 +379,21 @@
                     	path: "/empInfoFilling",
                     	path: "/empInfoFilling",
                     });
                     });
                     this.setabList("信息填报", "/empInfoFilling");
                     this.setabList("信息填报", "/empInfoFilling");
-                    this.$http({
-                        url: "/market/cMemberFill/queryMkMemberFillInfo",
-                        method: "post",
-                        headers: {
-                            "Content-Type": "application/json",
-                        },
-                        data: {},
-                    }).then((res) => {
-                        if(res.data){
-                            this.$router.push({
-                            	path: "/empInfoFilling",
-                            });
-                            this.setabList("信息填报", "/empInfoFilling");
-                        }
-                    });
+                    // this.$http({
+                    //     url: "/market/cMemberFill/queryMkMemberFillInfo",
+                    //     method: "post",
+                    //     headers: {
+                    //         "Content-Type": "application/json",
+                    //     },
+                    //     data: {},
+                    // }).then((res) => {
+                    //     if(res.data){
+                    //         this.$router.push({
+                    //         	path: "/empInfoFilling",
+                    //         });
+                    //         this.setabList("信息填报", "/empInfoFilling");
+                    //     }
+                    // });
 				}else{
 				}else{
 					this.$router.push({
 					this.$router.push({
 						path: "/dataStatistics",
 						path: "/dataStatistics",
@@ -406,7 +433,7 @@
 
 
 			getUser() {
 			getUser() {
 				this.userInfo = JSON.parse(window.sessionStorage.userInfo);
 				this.userInfo = JSON.parse(window.sessionStorage.userInfo);
-				// console.log(this.userInfo);
+			
 				let newArr = [];
 				let newArr = [];
 				
 				
 				if(this.userInfo.cityName == null && this.userInfo.countyName == null){
 				if(this.userInfo.cityName == null && this.userInfo.countyName == null){
@@ -424,7 +451,7 @@
 							sts: 0
 							sts: 0
 						},
 						},
 					}).then((res) => {
 					}).then((res) => {
-						// console.log(res.data.body);
+						
 						res.data.body.forEach(item=>{
 						res.data.body.forEach(item=>{
 							newArr.push(...item.dutyNo.split(","));
 							newArr.push(...item.dutyNo.split(","));
 						})
 						})
@@ -473,6 +500,7 @@
 			},
 			},
 		},
 		},
 		mounted() {
 		mounted() {
+			this.getPermissions();
 			this.getUser();
 			this.getUser();
 			this.getlist();
 			this.getlist();
 		},
 		},

+ 60 - 108
src/pages/main/onlineExcel/index.vue

@@ -41,9 +41,10 @@
                             <el-button style="margin-left: 20px;" class="btn-check" size="medium" type="primary"
                             <el-button style="margin-left: 20px;" class="btn-check" size="medium" type="primary"
                                 @click="addNewStatus = true">新建
                                 @click="addNewStatus = true">新建
                             </el-button>
                             </el-button>
-                            <input style="margin-left:30px" id="upload-file" name="file" type="file" @change="handleUpload">
+                            <!-- <el-button style="margin-left: 20px;" class="btn-check" size="medium" type="primary"
+                                @click="shareStatus = true">新建2222
+                            </el-button> -->
                         </div>
                         </div>
-                        
                         <div style="margin-top: 20px;float: right;margin-right: 20px" class="bigbtns"
                         <div style="margin-top: 20px;float: right;margin-right: 20px" class="bigbtns"
                             v-if="selectionSize != 0">
                             v-if="selectionSize != 0">
                             <el-button style="margin-left: 5px;" class="btn-check" size="small" type="primary"
                             <el-button style="margin-left: 5px;" class="btn-check" size="small" type="primary"
@@ -87,33 +88,29 @@
                                 </template>
                                 </template>
                             </el-table-column>
                             </el-table-column>
                         </el-table>
                         </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>
                         </el-pagination>
                     </div>
                     </div>
 
 
                     <div class="container" id="container" v-else>
                     <div class="container" id="container" v-else>
                         <fullscreen :fullscreen.sync="excelFullScreen" class="container">
                         <fullscreen :fullscreen.sync="excelFullScreen" class="container">
                             <iframe id="excelIframe" height="100%" width="100%"
                             <iframe id="excelIframe" height="100%" width="100%"
-                                src="/static/views/onlineShareExcel.html" frameborder="0"></iframe>
+                                src="/marketfront/static/views/onlineShareExcel.html" frameborder="0"></iframe>
                         </fullscreen>
                         </fullscreen>
                     </div>
                     </div>
                 </div>
                 </div>
             </div>
             </div>
-            <el-dialog :title="'新建'" :visible.sync="addNewStatus" width="450px" :destroy-on-close="true"
+            <el-dialog :title="'新建'" :visible.sync="addNewStatus" width="300px" :destroy-on-close="true"
                 :modal-append-to-body="false" :close-on-click-modal="false">
                 :modal-append-to-body="false" :close-on-click-modal="false">
                 <div>
                 <div>
                     <!--                <el-button type="primary" @click="addExcel()" plain class="iconfont icon-wenjian">在线文档</el-button>-->
                     <!--                <el-button type="primary" @click="addExcel()" plain class="iconfont icon-wenjian">在线文档</el-button>-->
                     <!--                <el-button type="primary" @click="addFolderStatus = true" plain class="iconfont icon-wenjianjia">文件夹</el-button>-->
                     <!--                <el-button type="primary" @click="addFolderStatus = true" plain class="iconfont icon-wenjianjia">文件夹</el-button>-->
-                    <div style="padding-bottom: 30px;display:flex">
+                    <div style="padding-bottom: 30px">
                         <div style="width: 85px;display: inline-block;cursor: pointer" @click="addExcel()">
                         <div style="width: 85px;display: inline-block;cursor: pointer" @click="addExcel()">
                             <span class="iconfont icon-wenjian" style="font-size: 80px;color: dodgerblue"></span>
                             <span class="iconfont icon-wenjian" style="font-size: 80px;color: dodgerblue"></span>
                             <p style="margin-left: 20px;margin-top: 10px">在线文档</p>
                             <p style="margin-left: 20px;margin-top: 10px">在线文档</p>
                         </div>
                         </div>
-                        <div style="width: 85px;display: inline-block;margin-left: 70px;cursor: pointer">
-                            <span class="iconfont icon-excel" style="font-size: 80px;color: dodgerblue"></span>
-                            <input id="upload-file" name="file" type="file" @change="handleUpload">
-                        </div>
                         <div style="width: 85px;display: inline-block;margin-left: 70px;cursor: pointer"
                         <div style="width: 85px;display: inline-block;margin-left: 70px;cursor: pointer"
                             @click="addFolderStatus = true">
                             @click="addFolderStatus = true">
                             <span class="iconfont icon-wenjianjia" style="font-size: 80px;color: dodgerblue"></span>
                             <span class="iconfont icon-wenjianjia" style="font-size: 80px;color: dodgerblue"></span>
@@ -129,8 +126,7 @@
                         <div class="online">
                         <div class="online">
                             <el-form-item prop="name">
                             <el-form-item prop="name">
                                 <span>文件夹名称</span>
                                 <span>文件夹名称</span>
-                                <el-input v-model="infolist.name" placeholder="文件夹名称"
-                                    :disabled="disableStatus"></el-input>
+                                <el-input v-model="infolist.name" placeholder="文件夹名称" :disabled="disableStatus"></el-input>
                             </el-form-item>
                             </el-form-item>
                         </div>
                         </div>
                     </el-form>
                     </el-form>
@@ -148,28 +144,38 @@
                     <el-button type="primary" @click="checkexa = true" plain>指定人可编辑</el-button>
                     <el-button type="primary" @click="checkexa = true" plain>指定人可编辑</el-button>
                 </div>
                 </div>
             </el-dialog>
             </el-dialog>
-            <el-dialog title="选择填报人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
-                :modal-append-to-body="false" :close-on-click-modal="false" v-loading="shareLoading">
-                <div>
-                    <el-form :model="exaList" ref="addInfoList">
-                        <el-form-item prop="processUserId" class="info-line online">
-                            <span style="width: 80px;margin-right: 20px">审批人员</span>
-                            <deptTreeUserNew class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
-                                :type="depttype" :closeList="closeList"></deptTreeUserNew>
-                            <div class="tree treeUser">
-                                <p v-for="(item, index) in treeList" :key="index">{{ item.receiveName }}
-                                    <i @click="deletes(item, index)" class="el-icon-error"></i>
+            <div class="flex-dialog">
+                <el-dialog title="选择填报人" :visible.sync="checkexa" width="86%" style="height:100%  ;"
+                    :destroy-on-close="true" :modal-append-to-body="false" :close-on-click-modal="false"
+                    v-loading="shareLoading">
+                    <div class="flex-dialog">
+                        <el-row style="height:80%  ;">
+                            <el-col :span="24" style="height:100%  ;">
+                                <deptTreeUserNew class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+                                    :type="depttype" :closeList="closeList"></deptTreeUserNew>
+                            </el-col>
+
+                        </el-row>
+                        <!-- <el-form :model="exaList" ref="addInfoList"> -->
+                        <!-- <el-form-item prop="processUserId" class="info-line online"> -->
+                        <!-- <span style="width: 80px;margin-right: 20px">审批人员</span> -->
+
+                        <!-- <div class="tree treeUser">
+                                <p v-for="(item,index) in treeList" :key="index">{{ item.receiveName }}
+                                    <i @click="deletes(item,index)" class="el-icon-error"></i>
                                 </p>
                                 </p>
-                            </div>
-                        </el-form-item>
-                    </el-form>
+                            </div> -->
+                        <!-- </el-form-item> -->
+                        <!-- </el-form> -->
 
 
-                    <div slot="footer" style="text-align: right;padding-bottom: 20px">
-                        <el-button type="primary" @click="checkProcessUser(3)">确 定</el-button>
-                        <el-button @click="checkexa = false">取 消</el-button>
+                        <div slot="footer" style="text-align: right;padding-bottom: 20px">
+                            <el-button type="primary" @click="checkProcessUser(3)">确 定</el-button>
+                            <el-button @click="checkexa = false">取 消</el-button>
+                        </div>
                     </div>
                     </div>
-                </div>
-            </el-dialog>
+                </el-dialog>
+            </div>
+
             <el-dialog title="移动到" :visible.sync="moveStatus" width="500px" :destroy-on-close="true"
             <el-dialog title="移动到" :visible.sync="moveStatus" width="500px" :destroy-on-close="true"
                 :modal-append-to-body="false" :close-on-click-modal="false">
                 :modal-append-to-body="false" :close-on-click-modal="false">
                 <div>
                 <div>
@@ -197,23 +203,21 @@
                     </div>
                     </div>
                 </div>
                 </div>
             </el-dialog>
             </el-dialog>
-            <myMessage :messTit='messTit' @closeMessage="processDel" :centerDialogVisible="delVisible"
-                v-if="delVisible"></myMessage>
-            <myMessageRadio :messTit='oaTitle' @closeMessage="processOa" :centerDialogVisible="oaVisible"
-                v-if="oaVisible" yesBtnName="是" noBtnName="否" ok-btn-name="提交"></myMessageRadio>
+            <myMessage :messTit='messTit' @closeMessage="processDel" :centerDialogVisible="delVisible" v-if="delVisible">
+            </myMessage>
+            <myMessageRadio :messTit='oaTitle' @closeMessage="processOa" :centerDialogVisible="oaVisible" v-if="oaVisible"
+                yesBtnName="是" noBtnName="否" ok-btn-name="提交"></myMessageRadio>
         </div>
         </div>
     </fullscreen>
     </fullscreen>
 </template>
 </template>
 
 
 <script>
 <script>
-import LuckyExcel from "luckyexcel";
 import pForm from "../../../components/p-form";
 import pForm from "../../../components/p-form";
 import toolList from "../../../components/toolList";
 import toolList from "../../../components/toolList";
 import myMessage from "../../../components/myMessage.vue";
 import myMessage from "../../../components/myMessage.vue";
 import myMessageNew from "../../../components/myMessageNew.vue";
 import myMessageNew from "../../../components/myMessageNew.vue";
 import myMessageRadio from "../../../components/myMessageRadio.vue";
 import myMessageRadio from "../../../components/myMessageRadio.vue";
-import deptTreeUserNew from "../../../components/deptTreeUserNew.vue"
-import {ajaxJson} from '../../../../public/static/js/util'
+import deptTreeUserNew from "../../../components/newTree.vue"
 
 
 export default {
 export default {
     components: {
     components: {
@@ -279,71 +283,6 @@ export default {
         }
         }
     },
     },
     methods: {
     methods: {
-        //外部导入
-        addExport(e) {
-            this.$http({
-                url: '/market/cOnlineExcel/addExcel',
-                method: "post",
-                headers: {
-                    "Content-Type": "application/json",
-                },
-                data: {
-                    folderId: '',
-                },
-            }).then((res) => {
-                console.log(res);
-                res.data.desc
-                this.startUpload(e, res.data.desc)
-            });
-        },
-        startUpload(e, res) {
-            let _this = this;
-            let files = e.target.files;
-            if (files == null || files.length == 0) {
-                window.top.$vm.$message({
-                    message: '没有文件导入',
-                    type: 'info'
-                })
-                return;
-            }
-            let name = files[0].name;
-            let suffixArr = name.split("."),
-                suffix = suffixArr[suffixArr.length - 1];
-            if (suffix != "xlsx") {
-                window.top.$vm.$message({
-                    message: '目前只支持xlsx文件的导入',
-                    type: 'info'
-                })
-                return;
-            }
-            // 解析文件
-            LuckyExcel.transformExcelToLucky(files[0], function (exportJson, luckysheetfile) {
-                if (exportJson.sheets == null || exportJson.sheets.length == 0) {
-                    window.top.$vm.$message({
-                        message: '无法读取excel文件的内容,当前不支持xls文件',
-                        type: 'info'
-                    })
-                    return;
-                }
-                let exceljson = JSON.stringify(exportJson)
-                _this.$util.ajaxJson("正在导入中", "http://192.168.2.124:7777/sheet/excel/importFile", { exceldata: exceljson, id: res }, function (res) {
-                    // console.log('[ res ] >', res)
-                    _this.addNewStatus = false;
-                    document.getElementById('excelId').setAttribute("value", res.id);
-                    _this.showExcel = true;
-  
-
-                });
-            }
-            );
-            console.log(e); //文件
-            console.log(res);//excel id
-
-        },
-        handleUpload(e) {
-            this.addExport(e)
-
-        },
         processWoNo() {
         processWoNo() {
             console.log(this.woNo);
             console.log(this.woNo);
             var _this = this;
             var _this = this;
@@ -373,7 +312,6 @@ export default {
                     //放入id,切换到excel模式
                     //放入id,切换到excel模式
                     document.getElementById('excelId').setAttribute("value", id);
                     document.getElementById('excelId').setAttribute("value", id);
                     _this.showExcel = true;
                     _this.showExcel = true;
-                    console.log(_this.showExcel);
                 }
                 }
             });
             });
         },
         },
@@ -455,7 +393,7 @@ export default {
             _this.shareLoading = true;
             _this.shareLoading = true;
             if (shareType == 3) {
             if (shareType == 3) {
                 this.treeList.map((o) => {
                 this.treeList.map((o) => {
-                    deptList.push(o.receiveNo);
+                    deptList.push(o.key);
                 });
                 });
             }
             }
             if (shareType == 1) {
             if (shareType == 1) {
@@ -533,7 +471,6 @@ export default {
         },
         },
         //打开excel
         //打开excel
         moveToEdit(row) {
         moveToEdit(row) {
-
             //放入id,切换到excel模式
             //放入id,切换到excel模式
             document.getElementById('excelId').setAttribute("value", row.id);
             document.getElementById('excelId').setAttribute("value", row.id);
             this.showExcel = true;
             this.showExcel = true;
@@ -555,7 +492,6 @@ export default {
                     folderId: folderId,
                     folderId: folderId,
                 },
                 },
             }).then((res) => {
             }).then((res) => {
-                console.log(res);
                 if (res.data.result === 1) {
                 if (res.data.result === 1) {
                     _this.$message({
                     _this.$message({
                         message: res.data.desc,
                         message: res.data.desc,
@@ -861,6 +797,22 @@ export default {
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
+::v-deep .flex-dialog .el-dialog {
+    height: 600px !important;
+}
+
+.flex-dialog {
+    height: 100%;
+}
+
+.el-dialog {
+    height: 100% !important;
+}
+
+::v-deep .flex-dialog .el-dialog__body {
+    height: 100% !important;
+}
+
 .container {
 .container {
     background-color: #f0f2f5;
     background-color: #f0f2f5;
 
 

+ 40 - 13
src/pages/main/onlineExcelMarket/index.vue

@@ -42,6 +42,9 @@
                             <el-button style="margin-left: 20px;" class="btn-check" size="medium" type="primary"
                             <el-button style="margin-left: 20px;" class="btn-check" size="medium" type="primary"
                                        @click="addNewStatus = true">新建
                                        @click="addNewStatus = true">新建
                             </el-button>
                             </el-button>
+                            <!-- <el-button style="margin-left: 20px;" class="btn-check" size="medium" type="primary"
+                                @click="shareStatus = true">新建2222
+                            </el-button> -->
                         </div>
                         </div>
                         <div style="margin-top: 20px;float: right;margin-right: 20px" class="bigbtns"
                         <div style="margin-top: 20px;float: right;margin-right: 20px" class="bigbtns"
                              v-if="selectionSize != 0">
                              v-if="selectionSize != 0">
@@ -144,21 +147,29 @@
                     <el-button type="primary" @click="checkexa = true" plain>指定人可编辑</el-button>
                     <el-button type="primary" @click="checkexa = true" plain>指定人可编辑</el-button>
                 </div>
                 </div>
             </el-dialog>
             </el-dialog>
-            <el-dialog title="选择填报人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
+            <div class="flex-dialog">
+            <el-dialog title="选择填报人" :visible.sync="checkexa" width="86%" style="height:100%  ;" :destroy-on-close="true"
                        :modal-append-to-body="false" :close-on-click-modal="false" v-loading="shareLoading">
                        :modal-append-to-body="false" :close-on-click-modal="false" v-loading="shareLoading">
-                <div>
-                    <el-form :model="exaList" ref="addInfoList">
-                        <el-form-item prop="processUserId" class="info-line online">
-                            <span style="width: 80px;margin-right: 20px">审批人员</span>
-                            <deptTreeUserNew class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
-                                             :type="depttype" :closeList="closeList"></deptTreeUserNew>
-                            <div class="tree treeUser">
+                <div class="flex-dialog">
+                    <el-row style="height:80%  ;">
+                            <el-col :span="24" style="height:100%  ;">
+                                <deptTreeUserNew class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+                                    :type="depttype" :closeList="closeList"></deptTreeUserNew>
+                            </el-col>
+
+                        </el-row>
+                    <!-- <el-form :model="exaList" ref="addInfoList">
+                        <el-form-item prop="processUserId" class="info-line online"> -->
+                            <!-- <span style="width: 80px;margin-right: 20px">审批人员</span> -->
+                            <!-- <deptTreeUserNew class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+                                             :type="depttype" :closeList="closeList"></deptTreeUserNew> -->
+                            <!-- <div class="tree treeUser">
                                 <p v-for="(item,index) in treeList" :key="index">{{ item.receiveName }}
                                 <p v-for="(item,index) in treeList" :key="index">{{ item.receiveName }}
                                     <i @click="deletes(item,index)" class="el-icon-error"></i>
                                     <i @click="deletes(item,index)" class="el-icon-error"></i>
                                 </p>
                                 </p>
-                            </div>
-                        </el-form-item>
-                    </el-form>
+                            </div> -->
+                        <!-- </el-form-item>
+                    </el-form> -->
 
 
                     <div slot="footer" style="text-align: right;padding-bottom: 20px">
                     <div slot="footer" style="text-align: right;padding-bottom: 20px">
                         <el-button type="primary" @click="checkProcessUser(3)">确 定</el-button>
                         <el-button type="primary" @click="checkProcessUser(3)">确 定</el-button>
@@ -166,6 +177,7 @@
                     </div>
                     </div>
                 </div>
                 </div>
             </el-dialog>
             </el-dialog>
+        </div>
             <el-dialog title="移动到" :visible.sync="moveStatus" width="500px" :destroy-on-close="true"
             <el-dialog title="移动到" :visible.sync="moveStatus" width="500px" :destroy-on-close="true"
                        :modal-append-to-body="false" :close-on-click-modal="false">
                        :modal-append-to-body="false" :close-on-click-modal="false">
                 <div>
                 <div>
@@ -207,7 +219,7 @@ import toolList from "../../../components/toolList";
 import myMessage from "../../../components/myMessage.vue";
 import myMessage from "../../../components/myMessage.vue";
 import myMessageNew from "../../../components/myMessageNew.vue";
 import myMessageNew from "../../../components/myMessageNew.vue";
 import myMessageRadio from "../../../components/myMessageRadio.vue";
 import myMessageRadio from "../../../components/myMessageRadio.vue";
-import deptTreeUserNew from "../../../components/deptTreeUserNew.vue"
+import deptTreeUserNew from "../../../components/newTree.vue"
 
 
 export default {
 export default {
     components: {
     components: {
@@ -383,7 +395,7 @@ export default {
             _this.shareLoading = true;
             _this.shareLoading = true;
             if (shareType == 3) {
             if (shareType == 3) {
                 this.treeList.map((o) => {
                 this.treeList.map((o) => {
-                    deptList.push(o.receiveNo);
+                    deptList.push(o.key);
                 });
                 });
             }
             }
             if (shareType == 1) {
             if (shareType == 1) {
@@ -786,6 +798,21 @@ export default {
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
+::v-deep .flex-dialog .el-dialog {
+    height: 600px !important;
+}
+
+.flex-dialog {
+    height: 100%;
+}
+
+.el-dialog {
+    height: 100% !important;
+}
+
+::v-deep .flex-dialog .el-dialog__body {
+    height: 100% !important;
+}
 .container {
 .container {
     background-color: #f0f2f5;
     background-color: #f0f2f5;
 
 

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1011 - 0
src/pages/main/onlineExcelMarkets/index.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1098 - 0
src/pages/main/onlineExcels/index.vue


+ 307 - 0
src/pages/main/onlineOffice/index.vue

@@ -0,0 +1,307 @@
+<template>
+    <div class="flex-count">
+        <div class="flex-header-count">
+            <el-popover placement="right-start" width="460" v-model="visible">
+                <el-form ref="form" :model="form" label-width="80px">
+                    <el-form-item label="文档名称">
+                        <el-input v-model="form.fileName"></el-input>
+                    </el-form-item>
+                    <el-form-item label="文档类型">
+                        <el-select v-model="form.docType" placeholder="请选择文档类型">
+                            <el-option label="word" value="word"></el-option>
+                            <el-option label="cell" value="cell"></el-option>
+                            <el-option label="slide" value="slide"></el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-form>
+                <div style="text-align: right; margin: 0">
+                    <el-button type="primary" @click="visible = false">取消</el-button>
+                    <el-button type="primary" @click="clickNewSave">确定</el-button>
+                </div>
+                <el-button size="medium" slot="reference" icon="el-icon-circle-plus-outline">新建</el-button>
+            </el-popover>
+            <myUpload style="margin-left:20px ;" @uploadBack="uploadBack" :fileInfo="fileInfo"
+                :fileList="fileInfo.fileList">
+            </myUpload>
+        </div>
+
+        <fromList @changeNum="changeNum" :list="firstTable" @clickDemand="clickDemand" />
+        <div>
+
+            <el-dialog :modal="false" title="提示" :visible.sync="officeStatus" style="height:100% ;" width="100%"
+                height="100%" center>
+                <div id="DocEditor" v-if="officeStatus">
+                    <onlyoffice-editor editorId="DocEditor" :src="src" :config="config" @ready="onReady" />
+                </div>
+            </el-dialog>
+
+
+        </div>
+    </div>
+</template>
+
+<script>
+import fromList from '../../../../src/components/el-form.vue'
+import { DocumentEditor } from "@onlyoffice/document-editor-vue";
+import myUpload from '../../../components/upload'
+import getConfig from '../../../config/dev'
+export default {
+    name: 'ExampleComponent',
+    components: {
+        DocumentEditor,
+        myUpload,
+        fromList
+        // DocumentEditor
+
+    },
+    data() {
+        return {
+            dataList: [],
+            page: 1,
+            searchData: '',
+            limit: 10,
+            form: {},
+            visible: false,
+            saveStatus: false,
+            officeStatus: false,
+            src: '',
+            config: {},
+            fileInfo: {
+                limit: 10,
+                type: 'btn',
+                typename: '导入',
+                urlType: 'office',
+                url: '/office/restfile/upload',
+                fileList: []
+            },
+            firstTable: {
+                height: '520',
+                name: "first",
+                titledata: [
+                    {
+                        label: "名称",
+                        prop: "fileName",
+                        width: 600,
+                    },
+                    {
+                        label: "最后修改时间",
+                        prop: "lastModifyTimeStr",
+                        width: 400,
+                    },
+                    {
+                        label: "文件大小",
+                        prop: "fileSizeStr",
+                        width: 400,
+                    },
+                ], //表格头
+                data: [], //内容数据
+                loading: true,
+                pageData: {
+                    total: 100, // 总条数
+                    pageSize: 10, // 每页数量
+                    pageNum: 1, // 页码
+                },
+                isSelection: false, // 表格有多选时设置
+                isOperation: false, // 表格有操作列时设置
+                isIndex: true, // 列表序号
+                operation: {
+                    // 表格有操作列时设置
+                    label: "操作", // 列名
+                    width: "50", // 根据实际情况给宽度
+                    data: [
+                        {
+                            label: "操作", // 操作名称
+                            type: "", //按钮类型
+                            handleRow: (e, r, o) => {
+                            }, // 自定义事件
+                        },
+                    ],
+                },
+            },
+        }
+    },
+    mounted() {
+        // this.getListEdit()
+        this.getLists()
+    },
+    methods: {
+        uploadBack(e) {
+            this.form = {};
+            this.getLists();
+        },
+
+        //新建在线编辑xxx
+        clickNewSave() {
+            let _this = this;
+            _this.$util.ajaxJson("正在加载", getConfig().OFFICE_URL + "/office/restfile/create", { data: this.form }, function (res) {
+                _this.page = 1;
+                _this.$message.success('新建成功')
+                _this.form = {}
+                _this.getLists();
+                _this.visible = false;
+
+
+            });
+            // this.saveStatus = true
+            // this.$http({
+            //     url: "/office/restfile/create",
+            //     method: "post",
+            //     type: 'office',
+            //     headers: {
+            //         "Content-Type": "application/json",
+            //     },
+            //     data: this.form
+            // }).then((res) => {
+            //     this.page = 1;
+            //     this.$message.success('新建成功')
+            //     this.form = {}
+            //     this.getLists();
+            //     this.visible = false;
+
+            // });
+        },
+        //点击工单状态跳转需求流程显示页面
+        clickDemand(e, res) {
+            if (e == '名称') {
+                this.getListEdit(res)
+            }
+        },
+
+        async getListEdit(e) {
+            let _this = this;
+            _this.$util.ajaxJson("正在加载", getConfig().OFFICE_URL + "/office/restfile/edit", {
+                id: e.id,
+                edit: true,
+                userId: JSON.parse(window.sessionStorage.userInfo).loginNo,
+                userName: JSON.parse(window.sessionStorage.userInfo).loginName
+            }, function (res) {
+                let { docType, fileType, id, fileName, downloadUrl, userId, userName, configCallback, api } = res.body
+                _this.src = api;
+                let config = {
+                    documentType: docType,
+                    height: '100%',
+                    width: '100%',
+                    document: {
+                        fileType: fileType,
+                        key: id,
+                        title: fileName,
+                        url: downloadUrl
+                    },
+                    editorConfig: {
+                        user: {
+                            id: userId,
+                            name: userName
+                        },
+                        callbackUrl: decodeURIComponent(configCallback)
+
+                    }
+                }
+                if (res.code == 0) {
+                    _this.config = config;
+                    _this.officeStatus = true;
+                    console.log(this.config);
+                }
+
+
+            });
+            // await this.$http({
+            //     url: "/office/restfile/edit",
+            //     method: "post",
+            //     type: 'office',
+            //     headers: {
+            //         "Content-Type": "application/json",
+            //     },
+            //     data: {
+            //         id: e.id,
+            //         edit: true,
+            //         userId: JSON.parse(window.sessionStorage.userInfo).loginNo,
+            //         userName: JSON.parse(window.sessionStorage.userInfo).loginName
+            //     },
+            // }).then((res) => {
+            //     // console.log('[ res ] >', res)
+                
+
+
+            // });
+        },
+        getLists() {
+            let _this = this;
+            _this.$util.ajaxJson("正在加载", getConfig().OFFICE_URL + "/office/restfile/list", {}, function (res) {
+                console.log(res);
+                _this.dataList = res.body;
+                _this.currentPage(res.body)
+                _this.firstTable.pageData.total = res.body.length;
+
+
+            });
+            // this.$http({
+            //     url: "/office/restfile/list",
+            //     method: "post",
+            //     type: 'office',
+            //     headers: {
+            //         "Content-Type": "application/json",
+            //     },
+            //     data: {
+
+            //     },
+            // }).then((res) => {
+            //     this.dataList = res.data.body;
+            //     this.currentPage(res.data.body)
+            //     this.firstTable.pageData.total = res.data.body.length;
+
+
+            // });
+        },
+        onReady(editor) {
+            console.log('[ editor ] >', editor)
+        },
+        currentPage(e) {
+            console.log(e);
+            let list = e.filter((item, index) =>
+                item.fileName.includes(this.searchData)
+            )
+            this.firstTable.data = list.filter((item, index) =>
+                index < this.page * this.limit && index >= this.limit * (this.page - 1)
+            )
+        },
+        changeNum(e) {
+            this.page = e;
+            this.currentPage(this.dataList)
+        }
+    },
+};
+</script>
+
+<style lang="scss" scoped>
+.flex-header-count {
+    padding: 20px;
+    display: flex;
+}
+
+.el-dropdown-link {
+    margin: 20px;
+    position: relative;
+}
+
+::v-deep .el-dialog--center {
+    height: 100%;
+    margin-top: 10px !important;
+}
+
+::v-deep .el-dialog__body {
+    height: 100%;
+}
+
+#DocEditor {
+    height: 100%;
+}
+
+.flex-count {
+    height: 100%;
+    background: #fff;
+}
+
+::v-deep .el-pagination {
+    background-color: #fff !important;
+}
+</style>

+ 629 - 0
src/pages/main/opcode/formTables.vue

@@ -0,0 +1,629 @@
+<template>
+    <div>
+        <div>
+            <div class="flex-title">OP_CODE申请流程</div>
+            <el-form ref="form" :model="form" :rules="rule" :disabled="disabled">
+                <el-row>
+                    <el-col :span="6">
+                        <el-form-item label="工单编号:" prop="orderNumber">
+                            <el-input v-model="form.orderNumber" disabled></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="工单标题:" prop="needName">
+                            <el-input v-model="form.needName"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="申请人:" prop="applicant">
+                            <el-input v-model="form.applicant" :disabled="true"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="申请时间:">
+                            <el-date-picker type="date" :disabled="true" placeholder="选择日期" v-model="form.applicationTime"
+                                :picker-options="pickerOptions" value-format="yyyy-MM-dd"
+                                style="width: 100%"></el-date-picker>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="6">
+                        <el-form-item label="需求编号:" prop="demandNumber">
+                            <el-input v-model="form.demandNumber"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="需求名称:">
+                            <el-input v-model="form.demandName"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="需求上线时间:">
+                            <el-date-picker type="date" placeholder="选择日期" v-model="form.demandDeployTime"
+                                :picker-options="pickerOptions" value-format="yyyy-MM-dd"
+                                style="width: 100%"></el-date-picker>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="提出地市:" prop="submitCity">
+                            <el-select v-model="form.submitCity" placeholder="请选择">
+                                <el-option v-for="(item, index) in cityList" :label="item.ou" :value="item.ou"></el-option>
+                                <!-- <el-option label="路由器" value="路由器"></el-option>
+                                <el-option label="交换机" value="交换机"></el-option>
+                                <el-option label="防火墙" value="防火墙"></el-option>
+                                <el-option label="主机" value="主机"></el-option> -->
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="提出人:" prop="submitter">
+                            <el-input v-model="form.submitter"></el-input>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+
+                <el-row>
+
+                    <el-col :span="24">
+                        <el-form-item label="备注:" prop="remark" label-width="110px">
+                            <el-input type="textarea" maxlength="300" show-word-limit v-model="form.remark"></el-input>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+
+
+                <el-row>
+                    <el-col :span="2">
+                        <span>操作信息:</span>
+                    </el-col>
+                    <el-col :span="22">
+                        <div class="flex-table-header">
+                            <el-button type="primary" @click="newclick(1)">新建</el-button>
+                            <el-button type="danger" @click="fireDel()">删除</el-button>
+                            <span>记录总数({{ num }})</span>
+                        </div>
+
+                        <Table @clickDemand="clickDemand" :list="lable" ref="TableList" @changeNum="changeNum"
+                            @num="selectNum">
+                        </Table>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-form-item label="附件:" prop="mkFileShareAttachList" label-width="120px">
+                        <my-upload ref="upload" @uploadBack="uploadBack" @delloadBack="delloadBack"
+                            @clickDownload="download" :fileInfo="fileInfo"
+                            :fileList="list.mkFileShareAttachList"></my-upload>
+                    </el-form-item>
+                </el-row>
+            </el-form>
+        </div>
+        <el-dialog v-if="firewallStatus" :before-close="clickClose(1)" :title="OPTit" :visible.sync="firewallStatus"
+            width="100%" :modal="false" style="display: flex; flex-direction: column">
+            <el-button type="primary" @click="newFireAdd(OPTit)">保存</el-button>
+            <el-form ref="form1" :model="fireList">
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item label="操作代码:" prop="code">
+                            <el-input v-model="fireList.code"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="操作代码名称:" prop="name">
+                            <el-input v-model="fireList.name"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="配置地市,部门:" prop="cityDept">
+                            <el-input v-model="fireList.cityDept"></el-input>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-form>
+
+        </el-dialog>
+    </div>
+</template>
+  
+<script>
+import myUpload from "../../../components/workflowUpload";
+import Table from "../../../components/el-form.vue";
+export default {
+    components: {
+        myUpload,
+        Table
+    },
+    data() {
+        return {
+            cityList: [],
+            fireList: {},
+            portList: {},
+            fireSelectList: [],
+            portSelectList: [],
+            firewallStatus: false,
+            page: 1,
+            pages: 1,
+            protStatus: false,
+            OPTit: '新建',
+            num: '0',
+            nums: '0',
+            costPayWayInputRule: {
+                costPayWayInput: [
+                    { required: true, message: "请填写", trigger: "blur" },
+                ],
+            },
+            gratuityInputRule: {
+                gratuityInput: [
+                    { required: true, message: "请填写", trigger: "blur" },
+                ],
+            },
+            reportFormInputRule: {
+                reportFormInput: [
+                    { required: true, message: "请填写", trigger: "blur" },
+                ],
+            },
+            checkBoxNone: false,
+            checkBoxStatus: false,
+            fileInfo: {
+                type: "bt1n",
+                typename: "上传文件",
+                limit: 5,
+                url: "/market/waf/upload",
+                fileList: [],
+            },
+            postEdit: false,
+            newPostAge: false,
+            pickerOptions: {
+                disabledDate(time) {
+                    return time.getTime() < Date.now() - 8.64e7;
+                },
+            },
+            oneList: [],
+            lable: {
+                name: "first",
+                height: '200',
+                titledata: [
+                    {
+                        label: "序号",
+                        prop: "index",
+                        width: 300,
+                    },
+                    {
+                        label: "操作代码",
+                        prop: "code",
+                        width: 300,
+                        color: "#0682CD",
+                    },
+                    {
+                        label: "操作代码名称",
+                        prop: "name",
+                        width: 200,
+                    },
+                    {
+                        label: "配置地市部门",
+                        prop: "cityDept",
+                        width: 200,
+                    },
+
+                ], //表格头
+                data: [], //内容数据
+                loading: true,
+                pageData: {
+                    total: 1, // 总条数
+                    pageSizes: 10, // 每页数量
+                    pageNum: 1, // 页码
+                },
+                isSelection: true, // 表格有多选时设置
+                isOperation: false, // 表格有操作列时设置
+                isIndex: false, // 列表序号
+                operation: {
+                    // 表格有操作列时设置
+                    label: "操作", // 列名
+                    width: "50", // 根据实际情况给宽度
+                    data: [
+                        {
+                            label: "操作", // 操作名称
+                            type: "", //按钮类型
+                            handleRow: () => {
+
+                            }, // 自定义事件
+                        },
+                    ],
+                },
+            },
+            childrenList: [],
+            twoList: [],
+            twoStatus: false,
+            threeList: [],
+            threeStatus: false,
+            fourList: [],
+            fourStatus: false,
+            fiveList: [],
+            fiveStatus: false,
+            isSensitiveDataStatus: false,
+            timeStatus: false,
+            functionStatus: false,
+            reportStatus: false,
+            Length: "",
+            form: {},
+            rules: {},
+            rule: {
+                needName: [
+                    { required: true, message: "请输入工单标题", trigger: "blur" },
+                ],
+                operationType: [
+                    { required: true, message: "请选择操作类型", trigger: "change" },
+                ]
+            },
+            copyRule: {},
+            isList: [],
+            remindMmsg: []
+        };
+    },
+    props: {
+        list: {
+            type: Object,
+            default: () => { },
+        },
+        disabled: {
+            type: Boolean,
+            default: () => { },
+        },
+    },
+    mounted() {
+        if (this.list.mkFileShareAttachList) {
+            this.$refs.upload.attList = this.list.mkFileShareAttachList;
+            this.list.mkFileShareAttachList.map((item) => {
+                item.name = item.fileName;
+            });
+        }
+        if (this.form.orderNumber) {
+            this.getFromQuery(this.form.orderNumber)
+        }
+
+    },
+    created() {
+        this.form = this.list;
+        this.copyRule = this.rule;
+        this.form.applicant = JSON.parse(window.sessionStorage.userInfo).loginName
+        this.form.applicationTime = new Date();
+        this.getcityList()
+    },
+
+    methods: {
+        getcityList() {
+            this.$http({
+                url: "/sysmgr/csysdept/municipalProvincialDepartments",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {}
+            }).then((res) => {
+                console.log(res);
+                this.cityList = res.data;
+            });
+        },
+        clickClose() {
+
+        },
+        fireDel() {
+            if (this.fireSelectList.length > 0) {
+                this.$confirm("即将删除数据, 是否删除?", "提示", {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning",
+                })
+                    .then(() => {
+                        this.$http({
+                            url: "/market/opProcessInfo/delBatch",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: this.fireSelectList
+                        }).then((res) => {
+                            this.$message.success('删除成功')
+                            this.page = 1;
+                            this.getFromQuery(this.form.orderNumber)
+                        });
+                    })
+                    .catch(() => { });
+            }
+
+        },
+
+        newFireAdd(e) {
+            if (e == '新增') {
+                this.fireList.infoId = this.form.orderNumber
+                this.$http({
+                    url: "/market/opProcessInfo/add",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: this.fireList
+                }).then((res) => {
+                    this.firewallStatus = false;
+                    this.getFromQuery(this.form.orderNumber)
+                    this.$message.success('添加成功')
+                });
+            } else if (e == '修改') {
+                this.$http({
+                    url: "/market/opProcessInfo/update",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: this.fireList
+                }).then((res) => {
+                    this.firewallStatus = false;
+                    this.getFromQuery(this.form.orderNumber)
+                    this.$message.success('修改成功')
+                });
+            }
+
+        },
+        getFromQuery(e) {
+            console.log(e);
+            this.$http({
+                url: "/market/opProcessInfo/queryPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    page: '{"pageNo":"' + this.page + '","pageSize":"10"}',
+                },
+                data: { infoId: e },
+            }).then((res) => {
+                this.lable.data = res.data.data
+                this.lable.pageData.total = res.data.totalRecord ? res.data.totalRecord : 1;
+                this.lable.data.map((item, index) => {
+                    item.index = (index + 1) + (res.data.pageNo - 1) * res.data.pageSize
+                })
+                this.num = res.data.totalRecord
+            });
+        },
+        newclick(e) {
+            this.OPTit = '新增'
+            this.fireList = {};
+            this.portList = {};
+            e === 1 ? this.firewallStatus = true : this.protStatus = true;
+        },
+        //页码
+        changeNum(e) {
+            this.page = e;
+            this.getFromQuery(this.form.orderNumber)
+
+
+
+        },
+        selectNum(e) {
+            this.fireSelectList = e;
+        },
+        selectNums(e) {
+            this.portSelectList = e
+        },
+        //点击工单
+        clickDemand(row, e) {
+            if (this.form.taskName === "填写申请单") {
+                this.OPTit = '修改'
+                this.fireList = e
+                this.firewallStatus = true
+                console.log(e);
+            }
+        },
+        uploadBack(v) {
+            if (this.form.mkFileShareAttachList) {
+                this.form.mkFileShareAttachList = [];
+                this.form.mkFileShareAttachList = v;
+            } else {
+                let mkFileShareAttachList = [];
+                mkFileShareAttachList = v;
+                this.$set(this.form, "mkFileShareAttachList", mkFileShareAttachList);
+            }
+        },
+        delloadBack(v) {
+            this.form.mkFileShareAttachList = v;
+            this.$http({
+                url: "/market/zfpzProcess/update",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: this.form,
+            }).then((res) => {
+            });
+        },
+        download() {
+            console.log(123);
+            if (this.form.mkFileShareAttachList.length > 1) {
+                this.$http({
+                    url: "/market/waf/downAllFile",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    responseType: "blob",
+                    data: { mkFileShareAttachList: this.form.mkFileShareAttachList },
+                }).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().toString() + ".zip"
+                        );
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data]);
+                        var downloadElement = document.createElement("a");
+                        var href = window.URL.createObjectURL(blob);
+                        downloadElement.href = href;
+                        downloadElement.download = this.form.needName + ".zip";
+                        document.body.appendChild(downloadElement);
+                        downloadElement.click();
+                        document.body.removeChild(downloadElement);
+                        window.URL.revokeObjectURL(href);
+                    }
+                    if (this.infolist.authType === "3") {
+                        this.dialogCli(10);
+                    }
+                });
+            } else {
+                console.log(this.form.mkFileShareAttachList);
+                let list = {
+                    id: this.form.mkFileShareAttachList[0].fileCode,
+                    fileName: this.form.mkFileShareAttachList[0].name,
+                };
+                this.$http({
+                    url: "/market/waf/downFile",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    responseType: "blob",
+                    data: list,
+                }).then((response) => {
+                    console.log(response);
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([response.data], {
+                            type: "application/vnd.ms-excel",
+                        });
+                        //window.navigator.msSaveOrOpenBlob(blob, this.form.needName);
+                        window.navigator.msSaveOrOpenBlob(
+                            blob,
+                            this.form.mkFileShareAttachList[0].name
+                        );
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data]);
+                        var downloadElement = document.createElement("a");
+                        var href = window.URL.createObjectURL(blob);
+                        downloadElement.href = href;
+                        downloadElement.download = this.form.mkFileShareAttachList[0].name;
+                        document.body.appendChild(downloadElement);
+                        downloadElement.click();
+                        document.body.removeChild(downloadElement);
+                        window.URL.revokeObjectURL(href);
+                    }
+                });
+            }
+        },
+    },
+
+};
+</script>
+  
+<style lang="scss" scoped>
+.flex-table-header {
+    margin-bottom: 10px;
+
+    span {
+        margin-left: 20px;
+    }
+}
+
+::v-deep .el-row {
+    margin-top: 16px;
+}
+
+a {
+    text-decoration: none;
+}
+
+::v-deep .el-upload-list {
+    width: 23rem;
+}
+
+.flex-title {
+    text-align: center;
+    font-size: 24px;
+    line-height: 60px;
+
+    font-weight: bold;
+}
+
+.flex-header {
+    margin-top: 20px;
+    display: flex;
+    //   justify-content: space-between;
+
+    ::v-deep .el-form-item {
+        width: 20%;
+        margin-right: 60px;
+    }
+}
+
+.flex-upload {
+    ::v-deep .el-form-item {
+        width: 100%;
+    }
+}
+
+.flex-input-tare {
+    ::v-deep .el-form-item {
+        width: 100%;
+        margin-right: 5%;
+    }
+
+    ::v-deep .el-form-item__label {
+        width: 9rem !important;
+    }
+}
+
+.flex-textarea {
+    width: 70.5%;
+}
+
+.el-upload__tip {
+    color: red;
+}
+
+// ::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;
+}
+
+::v-deep .el-pagination {
+    display: block !important;
+    background-color: #fff !important;
+}
+</style>
+  

+ 957 - 0
src/pages/main/opcode/index.vue

@@ -0,0 +1,957 @@
+<template>
+    <div class="flex-box">
+        <!-- v-show="lable.name === 'first'" -->
+        <div class="flex-header" :span="24">
+            <Tabs :tabList="tabList" @status="clickTabTops" />
+            <el-button type="primary" @click="clickNewTag" v-show="lableTable.name === 'first'">+新建</el-button>
+        </div>
+        <div class="flex-count">
+            <Table @clickDemand="clickDemand" :list="lableTable" ref="TableList" @changeNum="changeNum">
+            </Table>
+        </div>
+        <el-dialog v-if="dialogStatus" :before-close="clickClose" :title="dialogTitle + '需求'" :visible.sync="dialogStatus"
+            width="100%" :modal="false" style="display: flex; flex-direction: column">
+            <!-- 后期维护 -->
+            <div style="position: fixed; z-index: 99">
+                <el-button type="primary" v-if="startStatus" @click="clickHandles">处理</el-button>
+                <el-button type="primary" v-if="closeStatus" @click="clickClose">关闭</el-button>
+                <el-button type="primary" v-if="saveStatus" @click="clickSave">保存</el-button>
+            </div>
+            <FormTable :list="fromList" :disabled="disabled" class="flex-form" ref="formTable" />
+            <div>
+                <div class="table-title">流程追踪</div>
+                <div v-if="abc == true">
+                    <Tables :list="lables"></Tables>
+                </div>
+            </div>
+        </el-dialog>
+        <div v-if="destroy">
+            <el-dialog title="处理操作" width="100%" :visible.sync="handleStatus" :before-close="handleCloses" :modal="false"
+                v-if="handleStatus" :destroy-on-close="true">
+                <Workflow ref="workflow" :list="fromList" v-if="isWorkflowStatus == true" @updateForm="beforeClose"
+                    :requestForm="requestForm" :adminResourceId="adminResourceId" />
+                <WorkflowEntrance :list="fromList" v-else :lastManList="lastManList" @beforeClose="beforeClose"
+                    :requestForm="requestForm" />
+            </el-dialog>
+        </div>
+
+    </div>
+</template>
+<script>
+import Workflow from "../../../components/workflowBase";
+import WorkflowEntrance from "../../../components/workflowEntrance";
+import Tabs from "../../../components/el-tabs.vue";
+import Table from "../../../components/el-form.vue";
+import Tables from "../../../components/el-forms.vue";
+import getConfig from '../../../config/dev.js'
+import FormTable from "./formTables.vue";
+import { updateBase } from "../../../http/api.js";
+import {
+    getTodoBase,
+    getDoneBase,
+    getInitiateBase,
+} from "../../../http/api.js";
+import { log } from "console";
+
+export default {
+    components: {
+        Tabs,
+        Table,
+        Tables,
+        FormTable,
+        Workflow,
+        WorkflowEntrance
+    },
+    created() {
+        let status = JSON.stringify(this.$route.query) == "{}";
+        if (status) {
+            this.lableTable = this.firstTable
+            this.getQueryList()
+            this.usernumber()
+        } else {
+            let { id, type } = this.$route.query;
+            let list = {
+                taskId: id,
+                tableName: this.request_form.processDefinitionKey
+            };
+            this.usernumber()
+            this.lableTable = this.firstTable
+            this.getQueryList(list, 0);//代办
+        }
+    },
+    data() {
+        return {
+            lableTable: {},
+            abc: false,
+            handleClose: false,
+            isWorkflowStatus: true, //默认展示模式组件,为true时展示多人处理组件
+            buttonStatus: true,
+            copyStatus: false,
+            dialogTitle: "",
+            disabled: true,
+            destroy: false,
+            //分页数据
+            totalPage: "1", //默认第一页
+            currentPage: "1", //当前页数
+            pageSize: "10", //每页显示十条
+            currentPageList: ["1", "2"],
+            startStatus: true,
+            closeStatus: true, //关闭按钮状态
+            forwardStatus: false, //转需求管理平台状态
+            exportBtnStatus: false, //导出按钮状态
+            saveStatus: true, //保存按钮状态
+            fromList: {}, //表单数据
+            rejectStatus: true,
+            taskId: "", //工单taskID
+            request_form: {
+                userId: "",
+                userName: "",
+                path: this.$router.currentRoute.name,
+                userCode: JSON.parse(window.sessionStorage.userInfo).loginNo,
+                // path:this.$roter.options.routers,
+                // nextDealMan:'',
+                title: "title",
+                businessKey: "288",
+                processDefinitionKey: "op_process",
+            },
+            requestForm: {
+                // fresourceId: "b79206a9-b258-11ed-886f-d6cd97160e00", // 本地环境
+                // fresourceId: "1245d300-b25a-11ed-be6b-00505687dcd3", //测试环境
+                // fresourceId:'6b9e1cb2-d918-11ed-8255-e00084564cce',//生产环境
+                fresourceId: getConfig().opcode,
+                processDefinitionKey: "op_process",
+            },
+            treeList: [], //候选人列表
+            treeCopyList: [], //抄送人列表
+            editStatus: false,
+            querryList: [], //已选人员名单
+            commonlyList: [
+                //常用意见列表页
+            ],
+            textarea: "未填写意见",
+            num: 0,
+            dialogStatus: false, //新建dialog显示
+            handleStatus: false, //处理按钮状态
+            tabList: [
+                {
+                    index: "first",
+                    label: "我的待办",
+                    number: 0,
+                    name: "prosss_key",
+                },
+                {
+                    index: "two",
+                    label: "我的已办",
+                    number: 0,
+                },
+                {
+                    index: "three",
+                    label: "我发起的",
+                    number: 0,
+                },
+
+            ],
+            firstTable: {
+                name: "first",
+                height: 500,
+                titledata: [
+                    {
+                        label: "工单标题",
+                        prop: "need_name",
+                        width: 300,
+                        color: "#0682CD",
+                    },
+                    {
+                        label: "申请人",
+                        prop: "predealman",
+                        width: 300,
+                    },
+                    {
+                        label: "申请时间",
+                        prop: "proposer_time",
+                        width: 400,
+                    },
+                    {
+                        label: "当前环节",
+                        prop: "taskName",
+                        width: 400,
+                    },
+                ], //表格头
+                data: [], //内容数据
+                loading: true,
+                pageData: {
+                    total: 100, // 总条数
+                    pageSize: 10, // 每页数量
+                    pageNum: 1, // 页码
+                },
+                isSelection: false, // 表格有多选时设置
+                isOperation: false, // 表格有操作列时设置
+                isIndex: false, // 列表序号
+                operation: {
+                    // 表格有操作列时设置
+                    label: "操作", // 列名
+                    width: "50", // 根据实际情况给宽度
+                    data: [
+                        {
+                            label: "操作", // 操作名称
+                            type: "", //按钮类型
+                            handleRow: (e, r, o) => {
+
+                            }, // 自定义事件
+                        },
+                    ],
+                },
+            },
+            twoTable: {
+                name: "two",
+                disabled: true,
+                titledata: [
+                    {
+                        label: "工单标题",
+                        prop: "need_name",
+                        width: 300,
+                        color: "#0682CD",
+                    },
+                    {
+                        label: "申请人",
+                        prop: "applicant",
+                        width: 300,
+                    },
+                    {
+                        label: "申请时间",
+                        prop: "proposer_time",
+                        width: 400,
+                    },
+                    {
+                        label: "当前环节",
+                        prop: "taskName",
+                        width: 400,
+                    },
+                ], //表格头
+                data: [], //内容数据
+                loading: true,
+                pageData: {
+                    total: 100, // 总条数
+                    pageSize: 10, // 每页数量
+                    pageNum: 1, // 页码
+                },
+                isSelection: false, // 表格有多选时设置
+                isOperation: false, // 表格有操作列时设置
+                isIndex: false, // 列表序号
+                operation: {
+                    // 表格有操作列时设置
+                    label: "操作", // 列名
+                    width: "50", // 根据实际情况给宽度
+                    data: [
+                        {
+                            label: "操作", // 操作名称
+                            type: "", //按钮类型
+                            handleRow: function () { }, // 自定义事件
+                        },
+                    ],
+                },
+            },
+            threeTable: {
+                name: "three",
+                titledata: [
+                    {
+                        label: "标题",
+                        prop: "need_name",
+                        width: 300,
+                        color: "#0682CD",
+                    },
+                    {
+                        label: "申请人",
+                        prop: "applicant",
+                        width: 300,
+                    },
+                    {
+                        label: "申请时间",
+                        prop: "proposer_time",
+                        width: 400,
+                    },
+                    {
+                        label: "当前环节",
+                        prop: "taskName",
+                        width: 400,
+                    },
+                    {
+                        label: "当前处理人",
+                        prop: "currentMan",
+                        width: 200,
+                    },
+                ], //表格头
+                data: [], //内容数据
+                loading: true,
+                pageData: {
+                    total: 100, // 总条数
+                    pageSize: 10, // 每页数量
+                    pageNum: 1, // 页码
+                },
+                isSelection: false, // 表格有多选时设置
+                isOperation: false, // 表格有操作列时设置
+                isIndex: false, // 列表序号
+                operation: {
+                    // 表格有操作列时设置
+                    label: "支撑状态", // 列名
+                    width: "100", // 根据实际情况给宽度
+                    data: [
+                        {
+                            label: "查看", // 操作名称
+                            type: "", //按钮类型
+                            handleRow: (e, r, o) => {
+
+                            }, // 自定义事件
+                        },
+                    ],
+                },
+            },
+            lable: {},
+            lables: {
+                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,
+                    },
+                ], //表格头
+                data: [], //内容数据
+                loading: true,
+                pageData: {
+                    total: 0, // 总条数
+                    pageSize: 10, // 每页数量
+                    pageNum: 1, // 页码
+                },
+                isSelection: false, // 表格有多选时设置
+                isOperation: false, // 表格有操作列时设置
+                isIndex: true, // 列表序号
+                operation: {
+                    // 表格有操作列时设置
+                    label: "操作", // 列名
+                    width: "50", // 根据实际情况给宽度
+                    data: [
+                        {
+                            label: "操作", // 操作名称
+                            type: "", //按钮类型
+                            handleRow: function () { }, // 自定义事件
+                        },
+                    ],
+                },
+            },
+            clickTagName: "first",
+        };
+    },
+    methods: {
+        clickTabTops(e) {
+            console.log(e);
+            this.$refs.TableList.page = 1;
+            this.totalPage = "1";
+            this.clickTagName = e;
+            const options = {
+                first: {
+                    setTable: function () {
+                        this.lableTable = this.firstTable;
+                        this.getQueryList();
+                    }.bind(this)
+                },
+                two: {
+                    setTable: function () {
+                        this.lableTable = this.twoTable;
+                        this.getQueryDone();
+                    }.bind(this)
+                },
+                three: {
+                    setTable: function () {
+                        this.lableTable = this.threeTable;
+                        this.getMeLaunch();
+                    }.bind(this)
+                }
+            };
+            options[e]?.setTable?.();
+
+        },
+        //处理按钮,开始工作流接口
+        clickHandles() {
+            this.getNextPath(this.fromList.resourceId || "");
+        },
+        getNextPath(e) {
+            let list = {
+                fresourceId: this.requestForm.fresourceId, // 本地环境
+                processId: this.requestForm.processDefinitionKey,
+            };
+            if (e) {
+                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();
+                    } else {
+                        this.adminResourceId = "";
+                    }
+                } else {
+                    this.adminResourceId = "";
+
+                    // this.destroy = true;
+                    // this.handleStatus = true;
+                }
+                console.log(this.fromList);
+                if (this.fromList.processId || this.fromList.taskId) {
+                    this.destroy = true;
+                    this.handleStatus = true;
+                } else {
+                    this.$message.error("请先点击保存按钮");
+                }
+            });
+        },
+        usernumber() {
+            getInitiateBase(this.totalPage, "", { tableName: this.request_form.processDefinitionKey, }).then((res) => {
+                this.tabList[2].number = res.data.totalRecord
+            });
+            getDoneBase(this.totalPage, "", { tableName: this.request_form.processDefinitionKey, }).then((res) => {
+                this.tabList[1].number = res.data.totalRecord;
+            });
+            getTodoBase(this.totalPage, "", { tableName: this.request_form.processDefinitionKey, }).then((res) => {
+                this.tabList[0].number = res.data.totalRecord
+            });
+        },
+        getQueryList(e, status) {
+            let list = {
+                tableName: this.request_form.processDefinitionKey,
+            };
+            getTodoBase(this.totalPage, "", list).then((res) => {
+                if (status === 0) {
+                    this.clickDemand("工单标题", res.data.data[0]);
+                }
+                console.log(res);
+                this.lableTable.data = res.data.data;
+                this.tabList[0].number = res.data.totalRecord;
+                this.lableTable.pageData.total = res.data.totalRecord;
+                this.loading = false;
+            });
+        },
+        getQueryDone() {
+            let list = {
+                tableName: this.request_form.processDefinitionKey,
+            };
+            getDoneBase(this.totalPage, "", list).then((res) => {
+                this.lableTable.data = res.data.data;
+                this.lableTable.pageData.total = res.data.totalRecord;
+                this.tabList[1].number = res.data.totalRecord;
+                this.total = res.data.totalRecord;
+                this.loading = false;
+            });
+        },
+        getMeLaunch() {
+            let list = {
+                tableName: this.request_form.processDefinitionKey,
+            };
+            getInitiateBase(this.totalPage, "", list).then((res) => {
+                this.lableTable.data = res.data.data;
+                this.lableTable.pageData.total = res.data.totalRecord;
+                this.tabList[2].number = res.data.totalRecord;
+                this.total = res.data.totalRecord;
+                this.loading = false;
+            });
+        },
+        //新建按钮
+        async clickNewTag() {
+            this.dialogTitle = "新建";
+            this.fromList = {}
+            this.lables.data = [];
+            this.disabled = false;
+            this.saveStatus = true
+            await this.getOrderNumber();
+
+
+        },
+        getOrderNumber() {
+            this.$http({
+                url: "/market/opProcess/getOrderNumber",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {}
+            }).then((res) => {
+                this.fromList.orderNumber = res.data.body
+                this.fromList.taskName = '填写申请单'
+                this.dialogStatus = true;
+            });
+        },
+        //获取用户部门名称
+        getDepartmentName() {
+            this.$http({
+                url: "/market/waf/queryDept",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {},
+            }).then((res) => {
+
+
+
+            });
+        },
+        clickDemand(e, res) {
+            if (e === "工单状态" || e === "标题" || e === "工单标题") {
+                if (this.clickTagName === "first") {
+                    this.dialogTitle = "查看";
+                    if (res.taskName === "填写申请单") {
+                        this.disabled = false;
+                        this.saveStatus = true;
+                    } else {
+                        this.disabled = true;
+                        this.saveStatus = false;
+                    }
+                    // this.clickForm(res);
+                    // this.getFromQuery(res);
+                    // setTimeout(() => {
+                    //     this.getBtnStatus(res);
+                    // }, 500);
+                }
+                if (this.clickTagName === "two") {
+                    this.disabled = true;
+                    this.startStatus = false;
+                    this.saveStatus = false;
+                }
+                if (this.clickTagName === "three") {
+                    if (res.taskName === "填写申请单") {
+                        this.startStatus = true;
+                        this.disabled = false;
+                        this.saveStatus = true;
+                    } else {
+                        this.startStatus = false;
+                        this.disabled = true;
+                        this.saveStatus = false;
+                    }
+                }
+                this.fromList = res;
+                this.clickForm(res);
+                this.getFromQuery(res);
+            }
+        },
+        //查询form表单数据
+        getFromQuery(e) {
+            this.$http({
+                url: "/market/opProcess/query",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: { id: e.id },
+            }).then((res) => {
+                console.log(e);
+                let list = this.convertObjKeys(e)
+                this.fromList = { ...res.data, ...list }
+                this.dialogStatus = true;
+            });
+        },
+        async clickForm(e) {
+            let list = {
+                processInstanceId: e.process_id,
+                // taskId:e.taskId
+            };
+            let _this = this;
+            let obj = {
+                url: this.$url.formList.getCommentsByProcessId, //流程追踪接口
+                data: list,
+                headers: {
+                    "Content-Type": "application/json",
+                },
+            };
+
+            let res = await this.common.httpPost(obj, success);
+            function success(data) {
+                console.log("[ 接口返回值第一曾 ] >", data);
+                let list = [];
+                list = data.data.data;
+                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 = list;
+                _this.abc = true;
+            }
+        },
+        //获取页码
+        changeNum(e) {
+
+            let _this = this
+            this.totalPage = e;
+            const methodMapping = {
+                first: (timeList) => {
+                    _this.firstTable.pageData.pageNum = e;
+                    if (timeList) {
+                        _this.getQueryList(timeList);
+                    } else {
+                        _this.getQueryList();
+                    }
+                },
+                two: () => {
+                    _this.twoTable.pageData.pageNum = e;
+                    _this.getQueryDone();
+                },
+                three: (searchLists) => {
+                    _this.threeTable.pageData.pageNum = e;
+                    if (searchLists) {
+                        _this.getMeLaunch(searchLists);
+                    } else {
+                        _this.getMeLaunch();
+                    }
+                },
+
+            }
+            const methodToExecute = methodMapping[this.clickTagName];
+
+            if (methodToExecute) {
+                methodToExecute(this.timeList || this.searchLists);
+            }
+            // this.totalPage = e;
+        },
+        clickSave() {
+            this.$refs.formTable.$refs.form.validate((valid) => {
+                if (valid) {
+                    if (this.fromList.id) {
+                        this.setUpdateCopy(this.$refs.formTable.form)
+                    } else {
+                        this.getUserIds();
+                    }
+                } else {
+                    this.$message.error("请完善表单信息");
+                    return false;
+                }
+            });
+            // if (this.fromList.id) {
+            //     this.setUpdateCopy(this.$refs.formTable.form)
+            // } else {
+            //     this.getUserIds();
+            //     this.setForm();
+            // }
+        },
+        getUserIds() {
+            this.$http({
+                url: "/market/api/user/info/queryNodePers?params=" + JSON.parse(window.sessionStorage.userInfo).loginNo,
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+            }).then((res) => {
+                this.request_form.userName = res.data[0].children[0].loginNameStr;
+                this.request_form.userId = res.data[0].children[0].loginNoStr;
+                this.setForm();
+                console.log(this.request_form)
+            });
+        },
+        setForm(e) {
+            this.request_form.title = '[工作台]-Op_Code-' + this.$refs.formTable.form.needName;
+            this.$http({
+                url: "/market/opProcess/add",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: this.$refs.formTable.form,
+            }).then((res) => {
+                this.request_form.businessKey = res.data.body;
+                this.clickHandle(res.data.body);
+            });
+        },
+        async clickHandle(e) {
+            let _this = this;
+            let obj = {
+                url: this.$url.formList.startWork, //开始工作流接口
+                data: _this.request_form,
+                status: "form",
+                headers: {
+                    "Content-Type": "application/x-www-form-urlencoded",
+                },
+            };
+
+            let res = await this.common.httpPost(obj, success);
+            function success(data) {
+                console.log(data);
+                // _this.fromList.processId = data.data;
+                // _this.taskId = data.data;
+                let list = {
+                    id: e,
+                    // taskId:_this.formId,
+                    tableName: _this.request_form.processDefinitionKey,
+                    processId: data.data,
+                    // resourceId: _this.nextPath.currentShape[0].resourceId,
+                };
+                _this.setUpdate(list);
+            }
+        },
+        convertObjKeys(obj) {
+            // 检查传入参数是否为对象
+            if (typeof obj !== "object" || obj === null) {
+                return obj;
+            }
+
+            // 对象遍历,使用 Object.keys() 获取所有属性名称
+            return Object.keys(obj).reduce((result, key) => {
+                // 下划线转驼峰命名
+                const newKey = key.replace(/_(\w)/g, (match, p1) => p1.toUpperCase());
+                // 将原有属性赋值到新属性中
+                result[newKey] = obj[key];
+                return result;
+            }, {});
+        },
+        async setUpdate(e) {
+            await updateBase(e).then((res) => {
+                let list = this.convertObjKeys(res.data.body[0])
+                console.log(list);
+                // console.log(res.data.body);
+                this.fromList = list
+                // console.log(this.formList);
+                // this.fromList.taskId = res.data.body[0].taskId;
+                // this.fromList.taskId = '1111111111';
+                // this.fromList.taskName = res.data.body[0].taskName;
+                // this.fromList = concat;
+            });
+        },
+        setUpdateCopy(e) {
+            this.$http({
+                url: "/market/opProcess/update",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: e
+            }).then((res) => {
+                console.log(res);
+                this.$message.success(res.data.desc)
+            });
+
+        },
+        clickClose() {
+            // this.$refs.formTable.form = {}
+            this.fromList = {}
+            this.dialogStatus = false;
+            this.treeList = [];
+            this.textarea = "";
+            this.handleStatus = false;
+            this.handleStatus = false;
+            this.destroy = false;
+            this.dialogStatus = false;
+            this.saveStatus = false;
+            this.startStatus = true;
+            this.usernumber()
+        },
+        handleCloses() {
+            this.beforeClose()
+        },
+        beforeClose(e) {
+            console.log(e);
+            this.dialogStatus = false;
+            this.handleStatus = false;
+            this.usernumber()
+            // this.handleCloses();
+            this.getQueryList();
+            // this.getMeLaunch();
+            // this.getQueryDone();
+        },
+    },
+};
+</script>
+<style lang="scss" scoped>
+.copyClass {
+    display: flex;
+}
+
+.flex-header-text-tree {
+    width: 50%;
+    text-align: center;
+}
+
+.active {
+    background-color: #f3faff;
+}
+
+.flex-common {
+    padding: 10px 5%;
+    font-size: 18px;
+}
+
+.flex-buttons {
+    background-color: #cde4f6;
+    border-color: #cde4f6;
+    color: #606266;
+}
+
+.flex-button {
+    margin-top: 10px;
+    margin-bottom: 10px;
+
+    ::v-deep .el-button--primary {
+        width: 222px;
+    }
+}
+
+.flex-left-header-text {
+    height: 40px;
+    line-height: 40px;
+    color: black;
+    padding-left: 10px;
+    background-color: #cde4f6;
+    font-size: 18px;
+    font-weight: bold;
+}
+
+.flex-right-text {
+    margin-right: 20px;
+    width: 50%;
+}
+
+.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;
+        }
+    }
+}
+
+.table-title {
+    height: 50px;
+    line-height: 50px;
+    background-color: #f3faff;
+    font-size: 18px;
+    font-weight: bold;
+}
+
+::v-deep .el-dialog {
+    margin-top: 0 !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;
+    margin: 0 auto;
+    margin-top: 20px;
+    position: relative;
+    flex-direction: column;
+
+    // height: 100%;
+    .flex-header {
+        display: flex;
+        width: 100%;
+        position: relative;
+        height: 60px;
+        margin: 1%;
+        border-bottom: 1px solid #e1e1e1;
+        justify-content: space-between;
+
+        .el-button {
+            width: 150px;
+            float: right;
+            height: 40px !important;
+            margin-right: 30px;
+        }
+    }
+}
+
+//设置子组件样式
+::v-deep .el-tabs__item {
+    padding: 0;
+    margin-right: 20px;
+    width: 166px;
+    text-align: center;
+    background-color: #d8eaf6;
+    color: black;
+}
+
+::v-deep .is-active {
+    color: #fff;
+    background-color: #0583cd;
+}
+
+::v-deep .el-tabs__active-bar {
+    display: none;
+}
+
+::v-deep .el-tabs__nav-wrap::after {
+    display: none !important;
+}
+
+.flex-form {
+    margin-top: 50px;
+}
+
+.flex-footer-botton {
+    display: flex;
+    justify-content: space-evenly;
+}
+</style>

+ 6 - 7
src/pages/main/performance/mould.vue

@@ -3,7 +3,6 @@
     <div class="simple-container">
     <div class="simple-container">
       <simple-form
       <simple-form
         :form="table_form"
         :form="table_form"
-        :handle="table_handle"
         @search="handleSearch"
         @search="handleSearch"
         @add="handleVisible('add')"
         @add="handleVisible('add')"
         class="department-form"
         class="department-form"
@@ -169,12 +168,12 @@ export default {
         },
         },
       ],
       ],
       table_list: [],
       table_list: [],
-      table_handle: [
-        {
-          label: "新增模板",
-          props: "add",
-        },
-      ],
+      // table_handle: [
+      //   // {
+      //   //   label: "新增模板",
+      //   //   props: "add",
+      //   // },
+      // ],
       table_handle_row: [
       table_handle_row: [
         {
         {
           label: "下发",
           label: "下发",

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1210 - 0
src/pages/main/userList/docAppr.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1196 - 0
src/pages/main/userList/userList.vue


+ 2 - 2
src/pages/main/workflowdef/index.vue

@@ -110,8 +110,8 @@ export default {
             this.common.httpPost(obj, success)
             this.common.httpPost(obj, success)
             function success(data) {
             function success(data) {
                 console.log(data);
                 console.log(data);
-                self.list = data.rows
-                self.total = data.total
+                self.list = data.data.rows
+                self.total = data.data.total
             }
             }
         },
         },
         doImport() {
         doImport() {

+ 151 - 7
src/router/index.js

@@ -16,6 +16,12 @@ const routes = [{
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/infotech/index.vue'], resolve)
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/infotech/index.vue'], resolve)
         },
         },
         {
         {
+            meta: { name: '在线onlineOffice', keepAlive: false },
+            path: '/onlineOffice',
+            name: 'onlineOffice',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineOffice/index.vue'], resolve)
+        },
+        {
             meta: { name: '绩效', keepAlive: false },
             meta: { name: '绩效', keepAlive: false },
             path: '/performance',
             path: '/performance',
             name: 'performance',
             name: 'performance',
@@ -208,14 +214,14 @@ const routes = [{
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/organizaStructure/roleManage.vue'], resolve)
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/organizaStructure/roleManage.vue'], resolve)
         },
         },
         {
         {
-            meta: { name:  '收补预存款', keepAlive: false },
+            meta: { name: '收补预存款', keepAlive: false },
             path: '/closeFill',
             path: '/closeFill',
             name: 'closeFill',
             name: 'closeFill',
             component: (resolve) => require( /* webpackChunkName: "system" */
             component: (resolve) => require( /* webpackChunkName: "system" */
                 ['../pages/main/closeFill/advanceDeposit.vue'], resolve)
                 ['../pages/main/closeFill/advanceDeposit.vue'], resolve)
         },
         },
         {
         {
-            meta: { name:  '工号配置', keepAlive: false },
+            meta: { name: '工号配置', keepAlive: false },
             path: '/workingCon',
             path: '/workingCon',
             name: 'workingCon',
             name: 'workingCon',
             component: (resolve) => require( /* webpackChunkName: "system" */
             component: (resolve) => require( /* webpackChunkName: "system" */
@@ -2167,7 +2173,7 @@ const routes = [{
             path: '/onlineShareExcelMarket',
             path: '/onlineShareExcelMarket',
             name: 'onlineShareExcelMarket',
             name: 'onlineShareExcelMarket',
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcelMarket/index'], resolve)
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcelMarket/index'], resolve)
-        },{
+        }, {
 
 
             meta: {
             meta: {
                 name: '在线文档协同',
                 name: '在线文档协同',
@@ -2220,17 +2226,17 @@ const routes = [{
             name: 'processruns',
             name: 'processruns',
 
 
             component: resolve => require(['../pages/main/processruns/processruns.vue'], resolve),
             component: resolve => require(['../pages/main/processruns/processruns.vue'], resolve),
-            meta: {title: '运行流程'}
+            meta: { title: '运行流程' }
         },
         },
         {
         {
-            meta: {name: '', keepAlive: false},
+            meta: { name: '', keepAlive: false },
             path: '/productionDataExportCityHome',
             path: '/productionDataExportCityHome',
             name: 'productionDataExportCityHome',
             name: 'productionDataExportCityHome',
             component: (resolve) => require( /* webpackChunkName: "system" */
             component: (resolve) => require( /* webpackChunkName: "system" */
                 ['../pages/main/productionDataExport/cityHome.vue'], resolve)
                 ['../pages/main/productionDataExport/cityHome.vue'], resolve)
         },
         },
         {
         {
-            meta: {name: '', keepAlive: false},
+            meta: { name: '', keepAlive: false },
             path: '/productionDataExportProvinceHome',
             path: '/productionDataExportProvinceHome',
             name: 'productionDataExportProvinceHome',
             name: 'productionDataExportProvinceHome',
             component: (resolve) => require( /* webpackChunkName: "system" */
             component: (resolve) => require( /* webpackChunkName: "system" */
@@ -2242,7 +2248,7 @@ const routes = [{
             name: 'riskMaterials',
             name: 'riskMaterials',
             component: (resolve) => require( /* webpackChunkName: "system" */
             component: (resolve) => require( /* webpackChunkName: "system" */
                 ['../pages/main/leader/risk/riskMaterials.vue'], resolve)
                 ['../pages/main/leader/risk/riskMaterials.vue'], resolve)
-        },{
+        }, {
             meta: { name: '风险防控管理', keepAlive: false },
             meta: { name: '风险防控管理', keepAlive: false },
             path: '/riskManagement',
             path: '/riskManagement',
             name: 'riskManagement',
             name: 'riskManagement',
@@ -2250,6 +2256,18 @@ const routes = [{
                 ['../pages/main/leader/risk/riskManagement.vue'], resolve)
                 ['../pages/main/leader/risk/riskManagement.vue'], resolve)
         },
         },
         {
         {
+            meta: { name: '防火墙', keepAlive: false },
+            path: '/firewall',
+            name: 'firewall',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/firewall/index.vue'], resolve)
+        },
+        {
+            meta: { name: 'OPCODE', keepAlive: false },
+            path: '/opcode',
+            name: 'opcode',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/opcode/index.vue'], resolve)
+        },
+        {
             meta: { name: '资费管理', keepAlive: false },
             meta: { name: '资费管理', keepAlive: false },
             path: '/postage',
             path: '/postage',
             name: 'postage',
             name: 'postage',
@@ -2265,6 +2283,7 @@ const routes = [{
                 ['../pages/main/documentCollection/home.vue'], resolve),
                 ['../pages/main/documentCollection/home.vue'], resolve),
             children: [
             children: [
                 {
                 {
+
                     meta: { name: '文件收集与审批我接收的', keepAlive: false },
                     meta: { name: '文件收集与审批我接收的', keepAlive: false },
                     path: '/documentCollectionApproval',
                     path: '/documentCollectionApproval',
                     name: 'documentCollectionApproval',
                     name: 'documentCollectionApproval',
@@ -2306,6 +2325,131 @@ const routes = [{
             meta: { title: '地市-通用工单' }
             meta: { title: '地市-通用工单' }
         },
         },
         {
         {
+            meta: { name: '账号权限申请', keepAlive: false },
+            path: '/accountPermissions',
+            name: 'accountPermissions',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/accountPermissions/accountPermissions.vue'], resolve)
+        },
+        {
+            meta: { name: '账号申请流程', keepAlive: false },
+            path: '/accountApplication',
+            name: 'accountApplication',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/accountPermissions/accountApplication.vue'], resolve)
+        },
+        {
+            meta: { name:  '系统资源申请', keepAlive: false },
+            path: '/resourceApply',
+            name: 'resourceApply',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/applyFor/resourceApply.vue'], resolve)
+        },
+        {
+            meta: { name:  '应急预案审批', keepAlive: false },
+            path: '/emergencyPlan',
+            name: 'emergencyPlan',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/applyFor/emergencyPlan.vue'], resolve)
+        },
+        {
+            meta: { name:  '安全审计计划管理', keepAlive: false },
+            path: '/securityAudit',
+            name: 'securityAudit',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/applyFor/securityAudit.vue'], resolve)
+        },
+        {
+            meta: { name:  '用户使用者变更', keepAlive: false },
+            path: '/userChange',
+            name: 'userChange',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/applyFor/userChange.vue'], resolve)
+        },
+        {
+            meta: { name:  '口令授权', keepAlive: false },
+            path: '/authoriZation',
+            name: 'authoriZation',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/applyFor/authoriZation.vue'], resolve)
+        },
+        {
+            meta: { name:  '互联网端口访问', keepAlive: false },
+            path: '/internetAccess',
+            name: 'internetAccess',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/applyFor/internetAccess.vue'], resolve)
+        },
+        {
+            meta: { name:  '备份需求及变更', keepAlive: false },
+            path: '/backupRequire',
+            name: 'backupRequire',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/applyFor/backupRequire.vue'], resolve)
+        },
+        {
+            meta: { name: '文件审批流程', keepAlive: false },
+            path: '/docAppr',
+            name: 'docAppr',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/userList/docAppr.vue'], resolve)
+        },
+        {
+            meta: { name: '用户清单审核流程', keepAlive: false },
+            path: '/userList',
+            name: 'userList',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/userList/userList.vue'], resolve)
+        },
+        {
+            meta: { name: '账号删除流程', keepAlive: false },
+            path: '/accountdel',
+            name: 'accountdel',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/accountPermissions/accountdel.vue'], resolve)
+        },
+        {
+            meta: { name: '数据库导表流程', keepAlive: false },
+            path: '/sjkdbList',
+            name: 'sjkdbList',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/accountPermissions/sjkdbList.vue'], resolve)
+        },
+        {
+            meta: { name: '安全报告审阅流程', keepAlive: false },
+            path: '/aqbgsyList',
+            name: 'aqbgsyList',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/accountPermissions/aqbgsyList.vue'], resolve)
+        },
+        {
+            meta: { name: '通用审核流程', keepAlive: false },
+            path: '/tyshList',
+            name: 'tyshList',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/accountPermissions/tyshList.vue'], resolve)
+        },
+        {
+            meta: { name: '口令恢复申请流程', keepAlive: false },
+            path: '/klhfsqList',
+            name: 'klhfsqList',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/accountPermissions/klhfsqList.vue'], resolve)
+        },
+        {
+            meta: { name: '容量调整记录流程', keepAlive: false },
+            path: '/rltzjlList',
+            name: 'rltzjlList',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/accountPermissions/rltzjlList.vue'], resolve)
+        },
+        {
+            path: '/internetAssessment',
+            name: 'internetAssessment',
+            component: resolve => require(['../pages/main/internetAssessment/internetAssessment.vue'], resolve),
+            meta: { title: '互联网电视考核' }
+        },
+        {
             meta: { name: '备份数据恢复申请流程', keepAlive: false },
             meta: { name: '备份数据恢复申请流程', keepAlive: false },
             path: '/bfsjList',
             path: '/bfsjList',
             name: 'bfsjList',
             name: 'bfsjList',

+ 10 - 9
vue.config.js

@@ -102,15 +102,16 @@ module.exports = {
                     "^/market": "",
                     "^/market": "",
                 },
                 },
             },
             },
-            "/market/mk": {
-                target: "http://192.168.2.124:9113",
+            "/aps": {
+                target: "http://192.168.2.124:7779",
                 ws: false,
                 ws: false,
                 changeOrigin: true,
                 changeOrigin: true,
+                logLevel:'debug',
                 pathRewrite: {
                 pathRewrite: {
-                    "^/market": "",
+                    "^/aps": "",
                 },
                 },
             },
             },
-            "/market/techcentergj": {
+            "/market/mk": {
                 target: "http://192.168.2.124:9113",
                 target: "http://192.168.2.124:9113",
                 ws: false,
                 ws: false,
                 changeOrigin: true,
                 changeOrigin: true,
@@ -118,7 +119,7 @@ module.exports = {
                     "^/market": "",
                     "^/market": "",
                 },
                 },
             },
             },
-            "/mkWangge": {
+            "/market/techcentergj": {
                 target: "http://192.168.2.124:9113",
                 target: "http://192.168.2.124:9113",
                 ws: false,
                 ws: false,
                 changeOrigin: true,
                 changeOrigin: true,
@@ -147,12 +148,12 @@ module.exports = {
                 // target: 'http://192.168.2.124:9600/',
                 // target: 'http://192.168.2.124:9600/',
                 // target: "http://124.223.66.248:9600",
                 // target: "http://124.223.66.248:9600",
                 // target: "http://43.138.50.94:9600",
                 // target: "http://43.138.50.94:9600",
-                target: 'http://192.168.2.124:9600/',
-                // target: 'http://192.168.2.92:9600',
+                // target: 'http://192.168.2.44:9600/',
+                // target: 'http://192.168.2.124:9600',
                 // target: "http://124.223.66.248:9600",
                 // target: "http://124.223.66.248:9600",
-                // target: "http://43.138.50.94:9600",
+                target: "http://43.138.50.94:9600",
                 changeOrigin: true,
                 changeOrigin: true,
-                logLevel:'debug',
+                // logLevel:'debug',
             },
             },
         },
         },
     },
     },

+ 27 - 7
yarn.lock

@@ -1129,6 +1129,11 @@
   resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
   resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
   integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
   integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
 
 
+"@onlyoffice/document-editor-vue@^1.3.0":
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/@onlyoffice/document-editor-vue/-/document-editor-vue-1.3.0.tgz#3cddb371fc65bff4a65d5ef488c9c940107fbde3"
+  integrity sha512-nopUT3fPD6uM76IHBkn4QGCqwgqC/9zqyYJhQZGN9FS/Ii57KbEKEgueoTaF/P/TvcAPIa745zqlpFdRidbqQQ==
+
 "@socket.io/component-emitter@~3.1.0":
 "@socket.io/component-emitter@~3.1.0":
   version "3.1.0"
   version "3.1.0"
   resolved "https://registry.npmmirror.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553"
   resolved "https://registry.npmmirror.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553"
@@ -1465,9 +1470,9 @@
   resolved "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-4.5.19.tgz#d1206f7802bcba1d9c307695b54091df996db804"
   resolved "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-4.5.19.tgz#d1206f7802bcba1d9c307695b54091df996db804"
   integrity sha512-GdxvNSmOw7NHIazCO8gTK+xZbaOmScTtxj6eHVeMbYpDYVPJ+th3VMLWNpw/b6uOjwzzcyKlA5dRQ1DAb+gF/g==
   integrity sha512-GdxvNSmOw7NHIazCO8gTK+xZbaOmScTtxj6eHVeMbYpDYVPJ+th3VMLWNpw/b6uOjwzzcyKlA5dRQ1DAb+gF/g==
 
 
-"@vue/cli-plugin-babel@^4.1.2":
+"@vue/cli-plugin-babel@^4.5.0":
   version "4.5.19"
   version "4.5.19"
-  resolved "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.19.tgz#288b32e69f0191a77369e88f071c0cd8036edfa7"
+  resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.19.tgz#288b32e69f0191a77369e88f071c0cd8036edfa7"
   integrity sha512-8ebXzaMW9KNTMAN6+DzkhFsjty1ieqT7hIW5Lbk4v30Qhfjkms7lBWyXPGkoq+wAikXFa1Gnam2xmWOBqDDvWg==
   integrity sha512-8ebXzaMW9KNTMAN6+DzkhFsjty1ieqT7hIW5Lbk4v30Qhfjkms7lBWyXPGkoq+wAikXFa1Gnam2xmWOBqDDvWg==
   dependencies:
   dependencies:
     "@babel/core" "^7.11.0"
     "@babel/core" "^7.11.0"
@@ -1478,9 +1483,9 @@
     thread-loader "^2.1.3"
     thread-loader "^2.1.3"
     webpack "^4.0.0"
     webpack "^4.0.0"
 
 
-"@vue/cli-plugin-eslint@^4.1.2":
+"@vue/cli-plugin-eslint@~4.5.0":
   version "4.5.19"
   version "4.5.19"
-  resolved "https://registry.npmmirror.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.19.tgz#d1f908b5d079f2902dc23301290e4dd8176f204c"
+  resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.19.tgz#d1f908b5d079f2902dc23301290e4dd8176f204c"
   integrity sha512-53sa4Pu9j5KajesFlj494CcO8vVo3e3nnZ1CCKjGGnrF90id1rUeepcFfz5XjwfEtbJZp2x/NoX/EZE6zCzSFQ==
   integrity sha512-53sa4Pu9j5KajesFlj494CcO8vVo3e3nnZ1CCKjGGnrF90id1rUeepcFfz5XjwfEtbJZp2x/NoX/EZE6zCzSFQ==
   dependencies:
   dependencies:
     "@vue/cli-shared-utils" "^4.5.19"
     "@vue/cli-shared-utils" "^4.5.19"
@@ -1502,9 +1507,9 @@
   resolved "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.19.tgz#2452de58eb66ed873852bea45e6e06b57d842b47"
   resolved "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.19.tgz#2452de58eb66ed873852bea45e6e06b57d842b47"
   integrity sha512-DUmfdkG3pCdkP7Iznd87RfE9Qm42mgp2hcrNcYQYSru1W1gX2dG/JcW8bxmeGSa06lsxi9LEIc/QD1yPajSCZw==
   integrity sha512-DUmfdkG3pCdkP7Iznd87RfE9Qm42mgp2hcrNcYQYSru1W1gX2dG/JcW8bxmeGSa06lsxi9LEIc/QD1yPajSCZw==
 
 
-"@vue/cli-service@^4.1.2":
+"@vue/cli-service@~4.5.0":
   version "4.5.19"
   version "4.5.19"
-  resolved "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-4.5.19.tgz#5f6513128f426be0ee9a7d03155c23a6f23f8d42"
+  resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-4.5.19.tgz#5f6513128f426be0ee9a7d03155c23a6f23f8d42"
   integrity sha512-+Wpvj8fMTCt9ZPOLu5YaLkFCQmB4MrZ26aRmhhKiCQ/4PMoL6mLezfqdt6c+m2htM+1WV5RunRo+0WHl2DfwZA==
   integrity sha512-+Wpvj8fMTCt9ZPOLu5YaLkFCQmB4MrZ26aRmhhKiCQ/4PMoL6mLezfqdt6c+m2htM+1WV5RunRo+0WHl2DfwZA==
   dependencies:
   dependencies:
     "@intervolga/optimize-cssnano-plugin" "^1.0.5"
     "@intervolga/optimize-cssnano-plugin" "^1.0.5"
@@ -6046,11 +6051,16 @@ jquery-ui@^1.12.1:
   dependencies:
   dependencies:
     jquery ">=1.8.0 <4.0.0"
     jquery ">=1.8.0 <4.0.0"
 
 
-"jquery@>=1.8.0 <4.0.0", jquery@^3.6.0:
+"jquery@>=1.8.0 <4.0.0":
   version "3.6.1"
   version "3.6.1"
   resolved "https://registry.npmmirror.com/jquery/-/jquery-3.6.1.tgz#fab0408f8b45fc19f956205773b62b292c147a16"
   resolved "https://registry.npmmirror.com/jquery/-/jquery-3.6.1.tgz#fab0408f8b45fc19f956205773b62b292c147a16"
   integrity sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==
   integrity sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==
 
 
+jquery@^3.6.4:
+  version "3.6.4"
+  resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.4.tgz#ba065c188142100be4833699852bf7c24dc0252f"
+  integrity sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==
+
 js-audio-recorder@^1.0.7:
 js-audio-recorder@^1.0.7:
   version "1.0.7"
   version "1.0.7"
   resolved "https://registry.npmmirror.com/js-audio-recorder/-/js-audio-recorder-1.0.7.tgz#01501cb9eb143d57994b42bd5ae97974fda18908"
   resolved "https://registry.npmmirror.com/js-audio-recorder/-/js-audio-recorder-1.0.7.tgz#01501cb9eb143d57994b42bd5ae97974fda18908"
@@ -6380,6 +6390,11 @@ lodash.memoize@^4.1.2:
   resolved "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
   resolved "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
   integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
   integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
 
 
+lodash.merge@^4.6.2:
+  version "4.6.2"
+  resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+  integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
 lodash.transform@^4.6.0:
 lodash.transform@^4.6.0:
   version "4.6.0"
   version "4.6.0"
   resolved "https://registry.npmmirror.com/lodash.transform/-/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0"
   resolved "https://registry.npmmirror.com/lodash.transform/-/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0"
@@ -7083,6 +7098,11 @@ onetime@^5.1.0:
   dependencies:
   dependencies:
     mimic-fn "^2.1.0"
     mimic-fn "^2.1.0"
 
 
+onlyoffice-vue@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/onlyoffice-vue/-/onlyoffice-vue-1.0.1.tgz#5d98e973d12e0e96608bb3784a1b848b874f827f"
+  integrity sha512-90L/oxfhVtUgTRHUCQmrb6Ye5sp/GsEEqAl8AWZeeS+IIe68yZrwAzcVhgOe+RtfRb37c2gp+wrs5HHbWxx1CQ==
+
 open@^6.3.0:
 open@^6.3.0:
   version "6.4.0"
   version "6.4.0"
   resolved "https://registry.npmmirror.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9"
   resolved "https://registry.npmmirror.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9"