Browse Source

Merge branch 'master' of https://git.agilestar.cn/spfm/spfm-market-front into hjw-1-10

# Conflicts:
#	src/assets/js/common.js
#	src/components/workflowEntrance.vue
hujunwei@agilestar.cn 2 years ago
parent
commit
f1c08df257

+ 3 - 3
public/index.html

@@ -19,7 +19,7 @@
   <link rel='stylesheet' href='/static/js/luckysheet/plugins/plugins.css' />
   <link rel='stylesheet' href='/static/js/luckysheet/css/luckysheet.css' />
   <link rel='stylesheet' href='/static/js/luckysheet/assets/iconfont/iconfont.css' />
-
+  <script src="./static/js/base64.min.js"></script>
   <script src="/static/js/ace.js"></script>
 </head>
 
@@ -31,8 +31,8 @@
   <div id="app"></div>
   <!-- built files will be auto injected -->
   <script type="text/javascript">
-    window.staticHost = 'http://10.230.26.15:8000/mkt'; // 正式
-    // window.staticHost = 'http://10.149.85.91:8000/spfm'; // 测试
+    // window.staticHost = 'http://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://43.138.50.94:9600/';
 

File diff suppressed because it is too large
+ 8 - 0
public/static/js/base64.min.js


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

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

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

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

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

@@ -12,7 +12,6 @@
       empty-text="暂无数据"
       @cell-click="getRowList"
       :cell-style="columnbackgroundStyle"
-      row-key="id"
       :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
     >
       <!-- 是否多选 -->

+ 166 - 0
src/components/el-formid.vue

@@ -0,0 +1,166 @@
+<template>
+    <div>
+      <slot :name="list.name"></slot>
+      <el-table
+        ref="table"
+        style="width: 100%"
+        :data="list.data"
+        :height="list.height + 'px'"
+        :max-height="list.height + 'px'"
+        @row-click="getRowData"
+        @selection-change="selectionChange"
+        empty-text="暂无数据"
+        @cell-click="getRowList"
+        :cell-style="columnbackgroundStyle"
+        row-key="id"
+        :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.isIndex"
+          type="index"
+          label="序号"
+          width="55"
+          align="center"
+        />
+        <template v-for="item in list.titledata">
+          <el-table-column
+            :key="item.prop"
+            :prop="item.prop"
+            :label="item.label"
+            align="center"
+            show-overflow-tooltip
+            :width="item.width || 100"
+          />
+        </template>
+        <!-- 操作列 -->
+        <el-table-column
+          v-if="list.isOperation"
+          v-bind="list.data && list.data.length ? { fixed: 'right' } : null"
+          style="margin-right: 20px"
+          class-name="handle-td"
+          label-class-name="tc"
+          :label="list.operation.label"
+          align="center"
+        >
+          <!-- UI统一一排放3个,4个以上出现更多 -->
+          <template slot-scope="scope">
+            <!-- 三个一排的情况,去掉隐藏的按钮后的长度 -->
+            <template v-if="list.operation.data.length > 0">
+              <div class="btn">
+                <div v-for="item in list.operation.data" :key="item.label">
+                  <template v-if="item.type !== 'icon'">
+                    <el-button
+                      v-bind="item"
+                      :type="item.type ? item.type : ''"
+                      size="mini"
+                      @click.native.prevent="
+                        item.handleRow(scope.$index, scope.row, item.label)
+                      "
+                    >
+                      {{ item.label }}
+                    </el-button>
+                  </template>
+                  <template v-else>
+                    <i
+                      :class="[icon, item.icon]"
+                      v-bind="item"
+                      @click="item.handleRow(scope.$index, scope.row, item.label)"
+                    />
+                  </template>
+                </div>
+              </div>
+            </template>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="page">
+        <el-pagination
+          style="display: flex; flex-direction: row-reverse"
+          v-if="list.pageData.total > 0"
+          :current-page.sync="page"
+          :page-sizes="
+            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"
+        />
+      </div>
+    </div>
+  </template>
+  
+  <script>
+  export default {
+    data(){
+      return{
+       page:1
+      }
+    },
+    props: {
+      //  表格数据和表格部分属性的对象
+      // eslint-disable-next-line vue/require-default-prop
+      list: {
+        type: Object,
+      },
+    },
+    created() {
+  
+    },
+    methods: {
+      columnbackgroundStyle({ row, column, rowIndex, columnIndex }) {
+        if (column.type == "default") {
+          if (column.label === "文件标题"||column.label === "待办事项名称") {
+            return "color:#0682CD;";
+          }
+        }
+      },
+      selectionChange(val) {
+  
+        //多选数字回调
+        this.$emit("num", val);
+      },
+      handleAdd(name) {
+       
+        this.$emit("toolMsg", name);
+      },
+      handleRow(index, row, lable) {
+       
+      },
+      handleSizeChange(val) {
+        this.$emit("changeSize", val);
+        console.log(`每页 ${val} 条`);
+      },
+      handleCurrentChange(val) {
+        this.$emit("changeNum", val);
+        console.log(`当前页: ${val}`);
+      },
+      // 点击行即可选中
+      getRowData(row) {
+        this.$refs.table.toggleRowSelection(row);
+      },
+      getRowList(row, column, event, cell) {
+        this.$emit("clickDemand", column.label, row);
+      },
+    },
+  };
+  </script>
+  
+  <style lang="scss" scoped>
+  .btn{
+    display: flex;
+    justify-content: center;
+  }
+  </style>
+  

+ 2 - 2
src/components/uploadDown.vue

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

+ 173 - 192
src/components/workDeptThree.vue

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

+ 81 - 25
src/components/workflow.vue

@@ -9,7 +9,20 @@
               选择路径
 
               <div class="flex-path-list">
-                <div v-if="transferStatus" :class="active" @click="clickTransfer(1)">转派</div>
+                <div
+                  v-if="manyReassignment"
+                  :class="actives"
+                  @click="clickManyTransfer(1)"
+                >
+                  转派
+                </div>
+                <div
+                  v-if="transferStatus"
+                  :class="active"
+                  @click="clickTransfer(1)"
+                >
+                  转派
+                </div>
                 <div v-if="copyStatus" @click="clickTransfer(2)">抄送</div>
                 <div
                   v-for="(item, index) in node.nextShapes"
@@ -136,14 +149,14 @@ export default {
   name: "workflow",
   data() {
     return {
-      active:'',
+      active: "",
       transferStatus: false, //转派按钮控制
       manyPeopleStatus: false, //多人处理下发任务
       TransferStatus: false, //是否点击转派状态
       copyStatus: false, //抄送按钮控制
       CopyStatus: false, //是否点击抄送状态
       node: [], //路径列表
-      seleIndex: "", //点击路径下标
+      seleIndex: "1099", //点击路径下标
       commonlyList: [], //常用意见数组
       textarea: "未填写意见", //意见内容字段
       copyUser: "", //抄送人员列表
@@ -159,6 +172,8 @@ export default {
       demand: "",
       nextDealManList: "",
       isLastManStatus: false,
+      manyReassignment: false,
+      actives: "",
     };
   },
   props: {
@@ -170,12 +185,24 @@ export default {
     requestForm: {
       type: Object,
     },
+    adminResourceId: {
+      type: String,
+    },
   },
   created() {
+    if (this.adminResourceId) {
+      this.manyReassignment = true;
+    }
     this.getNextPath(this.list.resourceId, 1);
     this.getMetirialType();
   },
   methods: {
+    //多人转派
+    clickManyTransfer() {
+      (this.actives = this.actives != "" ? "" : "active"),
+        (this.seleIndex = "1099");
+      this.getNextPath(this.adminResourceId, 3);
+    },
     //生成需求决策编号接口
     getDemand() {
       this.$http({
@@ -204,26 +231,49 @@ export default {
       function success(data) {}
     },
     async nextWorks(lists, list) {
-      let _this = this;
-      let obj = {
-        url: _this.$url.formList.nextWork, //下一步工作流接口
-        data: lists,
-        status: "form",
-      };
-      await this.common.httpPost(obj, success);
-      function success(data) {
-        console.log(data);
-        let updateList = {
-          taskId: data.taskid,
-          id: _this.list.id,
-          resourceId: _this.nodes.currentShape[0].resourceId,
+     let listss = {
+          userId:this.nextDealManList , //人员id
+          taskId: this.list.taskId, //表单标识
+          loginstr: JSON.parse(window.sessionStorage.userInfo).loginNoStr,
+          // taskName: this.clicknextName, //流程节点
+          content: this.textarea, //意见内容
+        };
+      if (this.manyReassignment == true) {
+        let _this = this;
+        let obj = {
+          url: _this.$url.formList.getNewTransferTask + _this.list.taskId, //下一步工作流接口
+          data: listss,
+          status: "form",
+        };
+        await this.common.httpPost(obj, success);
+        function success(data) {
+          _this.$emit("beforeClose", true);
+        }
+      } else {
+        let _this = this;
+        let obj = {
+          url: _this.$url.formList.nextWork, //下一步工作流接口
+          data: lists,
+          status: "form",
         };
-        list.taskId = data.taskid;
-        _this.setUpdate(updateList);
-        _this.getLastManList(list);
+        await this.common.httpPost(obj, success);
+        function success(data) {
+          console.log(data);
+          let updateList = {
+            taskId: data.taskid,
+            id: _this.list.id,
+            resourceId: _this.nodes.currentShape[0].resourceId,
+          };
+          list.taskId = data.taskid;
+          _this.setUpdate(updateList);
+          _this.getLastManList(list);
+        }
       }
     },
     submitWork() {
+      console.log(this.nodes);
+      //多人转派环节
+
       //多人会签处理环节
       let list = {
         userId: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员id
@@ -232,6 +282,7 @@ export default {
         taskName: this.clicknextName, //流程节点
         userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
         content: this.textarea, //意见内容
+        resourceId: this.nodes.currentShape[0].resourceId,
       };
       let newlist = {
         userId: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员id
@@ -241,13 +292,14 @@ export default {
         userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
         content: this.textarea, //意见内容
       };
+
       if (this.manyPeopleStatus == true) {
         list.procinstid = this.list.processId;
         // if (this.backThree.length <= 1) {
         //   this.$message.error("请选择多人");
         //   return;
         // } else {
-          list.lastmanList = this.nextDealManList;
+        list.lastmanList = this.nextDealManList;
         // }
         if (this.nodes.currentShape) {
           newlist.resolution = this.nodes.currentShape[0].condition.resolution;
@@ -462,7 +514,7 @@ export default {
       }
 
       this.$http({
-       url: "/market/api/user/info/queryNodePers?params=" + id,
+        url: "/market/api/user/info/queryNodePers?params=" + id,
         method: "post",
         headers: {
           "Content-Type": "application/json",
@@ -471,26 +523,27 @@ export default {
       }).then((res) => {
         console.log(res);
         if (status === 2) {
+          console.log(777);
           this.treeCopyList = res.data; //抄送
           //  this.$refs.defTrees.treeList = res.data;
         } else {
           // let list = []
           // list.push(res.data)
           // this.treeList = list; //抄送
-          this.treeList = res.data
+          this.treeList = res.data;
           // this.$refs.defTree.treeList = res.data;
         }
       });
     },
 
-   
     //转派按钮方法
     clickTransfer(e) {
       this.$refs.defTree.userList = [];
       this.backThree = [];
       this.treeList = [];
       if (e == 1) {
-        this.active = this.active!=""?'':'active'
+        this.seleIndex = "";
+        this.active = this.active != "" ? "" : "active";
         this.manyPeopleStatus = false;
         this.TransferStatus = true;
       } else if (e == 2) {
@@ -500,13 +553,15 @@ export default {
     },
     //点击节点获取下一步的处理人字段
     clickGetTree(e, index) {
-      this.active = ''
+      this.active = "";
+      this.actives = "";
       this.$refs.defTree.userList = [];
       this.backThree = [];
       // this.CopyStatus = false;
       this.TransferStatus = false;
       //   this.clickTaskName = e.properties.name;
       this.clicknextName = e.properties.name;
+      console.log(index);
       this.seleIndex = index;
       this.getNextPath(e.resourceId, 3); //1 为点击后获取线
     },
@@ -545,6 +600,7 @@ export default {
           }
         }
       }
+      console.log(this.backThree);
     },
     //获取字典表常用意见
     getMetirialType(e) {

+ 127 - 54
src/components/workflowBase.vue

@@ -8,7 +8,12 @@
               选择路径
 
               <div class="flex-path-list">
-                <div v-if="transferStatus" @click="clickTransfer(1)">转派</div>
+                <div v-if="manyReassignment" :class="actives" @click="clickManyTransfer(1)">
+                  转派
+                </div>
+                <div v-if="transferStatus" :class="active" @click="clickTransfer(1)">
+                  转派
+                </div>
                 <div v-if="copyStatus" @click="clickTransfer(2)">抄送</div>
                 <div v-for="(item, index) in node.nextShapes" :key="index" :class="seleIndex == index ? 'active' : ''"
                   @click="clickGetTree(item, index)">
@@ -62,7 +67,9 @@
             </div>
             <div class="flex-header-text-tree">
               已选人员
-              <div class="">{{ copyUser }}</div>
+              <div class="" v-for="(item, index) in copyUser" :key="index">
+                {{ item.loginNameStr }}
+              </div>
             </div>
           </div>
         </div>
@@ -78,7 +85,7 @@
       <div style="overflow-y: scroll; overflow-x: hidden; height: 240px">
         <div v-for="(item, index) in commonlyList" :key="index" ref="common" class="flex-common">
           {{ item.dataName
-}}<i class="el-icon-circle-close" @click="deleStatus(item)"></i>
+          }}<i class="el-icon-circle-close" @click="deleStatus(item)"></i>
         </div>
         <div class="flex-common">
           <i class="el-icon-circle-plus-outline" @click="addStatus()"></i>
@@ -97,6 +104,7 @@ export default {
   name: "workflow",
   data() {
     return {
+      active: "",
       manyPeopleStatus: false, //多人处理下发任务
       editStatus: false, //常用意见控制
       transferStatus: false, //转派按钮控制
@@ -104,7 +112,7 @@ export default {
       copyStatus: false, //抄送按钮控制
       CopyStatus: false, //是否点击抄送状态
       node: [], //路径列表
-      seleIndex: "", //点击路径下标
+      seleIndex: "1099", //点击路径下标
       commonlyList: [], //常用意见数组
       textarea: "未填写意见", //意见内容字段
       copyUser: "", //抄送人员列表
@@ -119,6 +127,8 @@ export default {
       demand: "",
       nextDealManList: "",
       isLastManStatus: false,
+      manyReassignment: false,
+      actives: "",
     };
   },
   props: {
@@ -130,30 +140,75 @@ export default {
     requestForm: {
       type: Object,
     },
+    adminResourceId: {
+      type: String,
+    },
   },
   created() {
+    console.log(this.list);
     this.getNextPath(this.list.resourceId, 1);
     this.getMetirialType();
   },
   methods: {
-    async nextWorks(lists, list) {
+    //多人转派
+    clickManyTransfer() {
+      (this.actives = this.actives != "" ? "" : "active"),
+        (this.seleIndex = "1099");
+      this.getNextPath(this.adminResourceId, 3);
+    },
+    async getLastManList(e) {
       let _this = this;
       let obj = {
-        url: _this.$url.formList.nextWork, //下一步工作流接口
-        data: lists,
-        status: "form",
+        url: _this.$url.formList.getComplateLastMan, //开始工作流接口
+        data: e,
+        // status: "form",
+        headers: {
+          "Content-Type": "application/json",
+        },
       };
-      await this.common.httpPost(obj, success);
-      function success(data) {
-        let updateList = {
-          taskId: data.taskid,
-          id: _this.list.id,
-          resourceId: _this.nodes.currentShape[0].resourceId,
-          tableName: _this.requestForm.processDefinitionKey,
+
+      let res = await this.common.httpPost(obj, success);
+      function success(data) { }
+    },
+    async nextWorks(lists, list) {
+      let listss = {
+        userId: this.nextDealManList, //人员id
+        taskId: this.list.taskId, //表单标识
+        loginstr: JSON.parse(window.sessionStorage.userInfo).loginNoStr,
+        // taskName: this.clicknextName, //流程节点
+        content: this.textarea, //意见内容
+      };
+      if (this.manyReassignment == true) {
+        let _this = this;
+        let obj = {
+          url: _this.$url.formList.getNewTransferTask + _this.list.taskId, //下一步工作流接口
+          data: listss,
+          status: "form",
+        };
+        await this.common.httpPost(obj, success);
+        function success(data) {
+          _this.$emit("beforeClose", true);
+        }
+      } else {
+        let _this = this;
+        let obj = {
+          url: _this.$url.formList.nextWork, //下一步工作流接口
+          data: lists,
+          status: "form",
         };
-        list.taskId = data.taskid;
-        _this.setUpdate(updateList);
-        _this.getLastManList(list);
+        await this.common.httpPost(obj, success);
+        function success(data) {
+          console.log(data);
+          let updateList = {
+            taskId: data.taskid,
+            id: _this.list.id,
+            resourceId: _this.nodes.currentShape[0].resourceId,
+            tableName: _this.requestForm.processDefinitionKey,
+          };
+          list.taskId = data.taskid;
+          _this.setUpdate(updateList);
+          _this.getLastManList(list);
+        }
       }
     },
     submitWork() {
@@ -208,9 +263,14 @@ export default {
             return false;
           }
         } else {
-          if (this.treeCopyList.length) {
+          if (this.copyUser.length) {
             //抄送
-            list.copyman = this.treeCopyList[0].loginNoStrCopy;
+            // list.copyman = this.treeCopyList[0].loginNoStrCopy;
+            // list.copyman = this.copyUser;
+            list.copyman = ''
+            this.copyUser.map((item) => {
+              list.copyman += item.loginNoStr + ','
+            })
           }
           if (this.isLastManStatus == true) {
             list.lastman = "yes";
@@ -230,7 +290,7 @@ export default {
               list.nextDealMan = this.backThree[0].loginNoStr;
             }
           } else {
-            if (this.clicknextName === "流程结束") {
+            if (this.clicknextName === "流程结束" || this.clicknextName === "提交至任务发起人") {
             } else {
               this.$message.error("请选择候选人");
               return false;
@@ -253,23 +313,10 @@ export default {
         this.demand = res.data;
       });
     },
-    async getLastManList(e) {
-      let _this = this;
-      let obj = {
-        url: _this.$url.formList.getComplateLastMan, //开始工作流接口
-        data: e,
-        // status: "form",
-        headers: {
-          "Content-Type": "application/json",
-        },
-      };
-
-      let res = await this.common.httpPost(obj, success);
-      function success(data) { }
-    },
     async nextWork(list) {
       //e:yes||no,list:传入数组,title:结束标签,res:驳回标签,id:工单更新id
       let _this = this;
+      let copylist=list
       let obj = {
         url: _this.$url.formList.nextWork, //下一步工作流接口
         data: list,
@@ -305,7 +352,8 @@ export default {
             };
             if (data.copytaskid) {
               list.copytaskid = data.copytaskid;
-              list.copyman = _this.treeCopyList[0].loginNoStrCopy;
+              // list.copyman = _this.treeCopyList[0].loginNoStrCopy;
+              list.copyman = copylist.copyman;
             }
             if (_this.demand) {
               list.needNo = _this.demand;
@@ -372,7 +420,7 @@ export default {
           }
           if (res.data.body.nextShapes[0].copy !== null) {
             if (res.data.body.nextShapes[0].copy.copy === "true") {
-              // this.copyStatus = true; //抄送按钮生效
+              this.copyStatus = true; //抄送按钮生效
               this.CopyStatus = true;
             } else {
               this.copyStatus = false;
@@ -409,7 +457,7 @@ export default {
     },
     //查询候选人接口
     getTreeLists(e, status) {
-      let createdId = "createld";
+      let createdId = "createId";
       let id =
         e.nextShapes[0].properties.documentation === createdId
           ? this.list.createId
@@ -425,7 +473,7 @@ export default {
       }).then((res) => {
         console.log(status);
         if (status === 2) {
-          this.treeCopyList = res.data; //抄送
+          // this.treeCopyList = res.data; //抄送
           //  this.$refs.defTrees.treeList = res.data;
         } else {
           this.treeList = res.data; //抄送
@@ -433,6 +481,22 @@ export default {
           console.log(this.treeList);
         }
       });
+      if (this.copyStatus == true) {
+        this.$http({
+          url: "/market/api/user/info/queryNodePers?params=" + e.nextShapes[0].properties.formkeydefinition,
+          method: "post",
+          headers: {
+            "Content-Type": "application/json",
+          },
+          data: "",
+        }).then((res) => {
+          console.log(status);
+          this.treeCopyList = res.data; //抄送
+
+        });
+      } else {
+
+      }
     },
     //转派按钮方法
     clickTransfer(e) {
@@ -449,6 +513,7 @@ export default {
       this.backThree = [];
       this.$refs.defTree.userList = [];
       this.backThree = [];
+      this.copyUser = [];
       this.CopyStatus = false;
       this.TransferStatus = false;
       //   this.clickTaskName = e.properties.name;
@@ -476,36 +541,40 @@ export default {
         this.nextDealManList = arr.toString();
       } else {
         if (this.manyPeopleStatus == true) {
-        this.backThree = e;
+          this.backThree = e;
 
-        let arr = [];
-        this.backThree.map((item) => {
-          arr.push(item.loginNoStr);
-        });
-        this.nextDealManList = arr.toString();
-      } else {
-        if (e.length > 1) {
+          let arr = [];
+          this.backThree.map((item) => {
+            arr.push(item.loginNoStr);
+          });
+          this.nextDealManList = arr.toString();
+        } else {
+          if (e.length > 1) {
             this.$message.error("只能选择一个人");
             return;
           } else {
             this.backThree = e;
-          if (this.CopyStatus === true) {
-            this.getTreeLists(e[0].loginNoStr, 2);
-          }
+            if (this.CopyStatus === true) {
+              this.getTreeLists(e[0].loginNoStr, 2);
+            }
 
             if (this.CopyStatus === true) {
-            this.getTreeLists(e[0].loginNoStr, 2);
-          }
+              this.getTreeLists(e[0].loginNoStr, 2);
+            }
 
-          if (e[0]) {
+            if (e[0]) {
               this.selectUser = e[0].loginNameStr;
             } else {
               this.selectUser = "暂无选择";
-          }
+            }
           }
         }
       }
     },
+    changeTreeCopy(e) {
+      console.log(e);
+      this.copyUser = e
+    },
     //获取字典表常用意见
     getMetirialType(e) {
       this.$http({
@@ -727,4 +796,8 @@ export default {
     width: 222px;
   }
 }
+
+.copyClass {
+  display: flex;
+}
 </style>

+ 44 - 47
src/components/workflowEntrance.vue

@@ -25,18 +25,11 @@
           <div class="flex-commons">
             <div class="flex-left-header-text">
               常用意见
-              <span @click="clickEdit" class="flex-icon"
-                ><i class="el-icon-edit"></i>修改</span
-              >
+              <span @click="clickEdit" class="flex-icon"><i class="el-icon-edit"></i>修改</span>
             </div>
             <div class="flex-slide">
-              <div
-                v-for="(item, index) in commonlyList"
-                :key="index"
-                ref="common"
-                class="flex-common"
-                @click="clickCommonly($event)"
-              >
+              <div v-for="(item, index) in commonlyList" :key="index" ref="common" class="flex-common"
+                @click="clickCommonly($event)">
                 {{ item.dataName }}
               </div>
             </div>
@@ -44,12 +37,7 @@
         </div>
         <div class="flex-opinion">
           <div class="flex-left-header-text">意见内容</div>
-          <el-input
-            type="textarea"
-            autosize
-            placeholder="请输入内容"
-            v-model="textarea"
-          >
+          <el-input type="textarea" autosize placeholder="请输入内容" v-model="textarea">
           </el-input>
         </div>
       </div>
@@ -61,12 +49,7 @@
           <div style="display: flex">
             <div class="flex-header-text-tree">
               候选人
-              <deptTree
-                ref="defTree"
-                class="flex-slide"
-                :treeList="treeList"
-                @changeTree="changeTree"
-              />
+              <deptTree ref="defTree" class="flex-slide" :treeList="treeList" @changeTree="changeTree" />
             </div>
             <div class="flex-header-text-tree">
               已选人员
@@ -98,27 +81,15 @@
     </div>
     <div class="flex-footer-botton">
       <div class="flex-button">
-        <el-button type="primary" @click="getnewtransfertask(1)"
-          >提交</el-button
-        >
+        <el-button type="primary" @click="getnewtransfertask(1)">提交</el-button>
       </div>
     </div>
-    <el-dialog
-      title="修改常用意见"
-      :visible.sync="editStatus"
-      width="100%"
-      :before-close="editCloses"
-      :modal="false"
-      :destroy-on-close="true"
-    >
+    <el-dialog title="修改常用意见" :visible.sync="editStatus" width="100%" :before-close="editCloses" :modal="false"
+      :destroy-on-close="true">
       <div style="overflow-y: scroll; overflow-x: hidden; height: 240px">
-        <div
-          v-for="(item, index) in commonlyList"
-          :key="index"
-          ref="common"
-          class="flex-common"
-        >
-          {{ item.dataName
+        <div v-for="(item, index) in commonlyList" :key="index" ref="common" class="flex-common">
+          {{
+            item.dataName
           }}<i class="el-icon-circle-close" @click="deleStatus(item)"></i>
         </div>
         <div class="flex-common">
@@ -138,8 +109,8 @@ export default {
   name: "workflow",
   data() {
     return {
-      active:'',
-      actives:'',
+      active: '',
+      actives: '',
       MultipersonTransfer: false,
       transferStatus: false, //转派按钮控制
       TransferStatus: false, //是否点击转派状态
@@ -161,6 +132,7 @@ export default {
       treeCopyList: [],
       demand: "",
       close: "",
+      nextDealManLists: ''
     };
   },
   props: {
@@ -185,7 +157,7 @@ export default {
       this.backThree = [];
       this.treeList = [];
       this.close = "1";
-      this.actives = this.actives!=""? "" :'actives'
+      this.actives = this.actives != "" ? "" : 'actives'
       this.active = ""
     },
     // async getqueryMultiTaskId() {
@@ -221,6 +193,7 @@ export default {
         // taskName: this.clicknextName, //流程节点
         userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
         content: this.textarea, //意见内容
+        resourceId: this.list.resourceId
       };
       let obj = {};
       if (this.close == "1") {
@@ -229,7 +202,7 @@ export default {
           (obj.data = list);
       } else {
         let listss = {
-          userId: _this.backThree[0].loginNoStr, //人员id
+          userId: _this.nextDealManLists, //人员id
           taskId: this.list.taskId, //表单标识
           loginstr: JSON.parse(window.sessionStorage.userInfo).loginNoStr,
           // taskName: this.clicknextName, //流程节点
@@ -442,7 +415,7 @@ export default {
           //   this.initialList.nextShapes[0].multi?.multi &&
           //   res.data.body.nextShapes[0].multi.multi === "true"
           // ) {
-           
+
           // }
         }
         if (status === 2) {
@@ -461,8 +434,8 @@ export default {
     //查询候选人接口
     getTreeLists(e, status) {
       if (e === 9) {
-        this.close = "";
-        this.active = this.active!=""? '' :'active'
+        this.close = ""
+        this.active = this.active != "" ? '' : 'active'
         this.actives = ""
         this.MultipersonTransfer = true;
       } else {
@@ -537,6 +510,11 @@ export default {
           return;
         } else {
           this.backThree = e;
+          let arr = [];
+          this.backThree.map((item) => {
+            arr.push(item.loginNoStr);
+          });
+          this.nextDealManLists = arr.toString();
         }
       }
     },
@@ -646,35 +624,43 @@ export default {
 .active {
   background-color: #f3faff;
 }
+
 .actives {
   background-color: #f3faff;
 }
+
 .flex-header-text-tree {
   width: 50%;
   text-align: center;
 }
+
 .flex-icon {
   float: right;
   margin-right: 20px;
   color: #4277a1;
 }
+
 .flex-handle {
   width: 100%;
   padding: 30px;
   display: flex;
+
   .flex-right {
     width: 50%;
     border: 1px solid #e1e1e1;
     margin-left: 20px;
   }
 }
+
 .flex-left {
   width: 50%;
   display: flex;
   flex-direction: column;
+
   .flex-left-header {
     display: flex;
     justify-content: space-around;
+
     .flex-path {
       height: 280px;
       border: 1px solid #e1e1e1;
@@ -682,10 +668,12 @@ export default {
     }
   }
 }
+
 .flex-common {
   padding: 10px 5%;
   font-size: 18px;
 }
+
 .flex-left-header-text {
   height: 40px;
   line-height: 40px;
@@ -695,40 +683,49 @@ export default {
   font-size: 18px;
   font-weight: bold;
 }
+
 .flex-path-list {
   overflow-y: scroll;
   overflow-x: hidden;
   height: 14rem;
 }
+
 .flex-slide {
   overflow-y: scroll;
   overflow-x: hidden;
 }
+
 .active {
   background-color: #f3faff;
 }
+
 .flex-opinion {
   height: 280px;
   border: 1px solid #e1e1e1;
   width: 100%;
   margin-top: 20px;
 }
+
 .flex-right-text {
   margin-right: 20px;
   width: 50%;
 }
+
 .flex-commons {
   height: 280px;
   border: 1px solid #e1e1e1;
   width: 30%;
 }
+
 .flex-footer-botton {
   display: flex;
   justify-content: space-evenly;
 }
+
 .flex-button {
   margin-top: 10px;
   margin-bottom: 10px;
+
   ::v-deep .el-button--primary {
     width: 222px;
   }

+ 29 - 3
src/http/api.js

@@ -13,7 +13,7 @@ export function getTodoBase(page, seach, idNo) {
         data: idNo,
     })
 }
-//通用方法
+//通用方法
 export function getDoneBase(page, seach, idNo) {
     return axios({
         url: "/market/waf/queryDoneBase",
@@ -26,7 +26,33 @@ export function getDoneBase(page, seach, idNo) {
         data: idNo,
     })
 }
-//通用方法待办
+//通用方法待阅
+export function queryReadBase(page, seach, idNo) {
+    return axios({
+        url: "/market/waf/queryReadBase",
+        method: "post",
+        method: "post",
+        headers: {
+            "Content-Type": "application/json",
+            page: '{"pageNo":"' + page + '","pageSize":"10"}',
+        },
+        data: idNo,
+    })
+}
+//通用方法已阅
+export function queryReadDoneBase(page, seach, idNo) {
+    return axios({
+        url: "/market/waf/queryReadDoneBase",
+        method: "post",
+        method: "post",
+        headers: {
+            "Content-Type": "application/json",
+            page: '{"pageNo":"' + page + '","pageSize":"10"}',
+        },
+        data: idNo,
+    })
+}
+//通用方法发起
 export function getInitiateBase(page, seach, idNo) {
     return axios({
         url: "/market/waf/queryInitiateBase",
@@ -60,4 +86,4 @@ export function getNowdata(e) {
     let time = yy + e.a + mm + e.a + dd + e.b + hh + e.c + mf + e.c + ss
     return time
 }
-export default { getTodoBase, getDoneBase, getInitiateBase, updateBase, getNowdata };
+export default { getTodoBase, getDoneBase, getInitiateBase, updateBase, getNowdata, queryReadBase,queryReadDoneBase };

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

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

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

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

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

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

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

@@ -497,9 +497,9 @@ export default {
         needName: [
           { required: true, message: "请输入需求名称", trigger: "blur" },
         ],
-        mkFileShareAttachList: [
-          { required: true, validator: this.validateFiles },
-        ],
+        // mkFileShareAttachList: [
+        //   { required: true, validator: this.validateFiles },
+        // ],
         applyDept: [
           { required: true, message: "请输入申请部门", trigger: "blur" },
         ],

+ 32 - 12
src/pages/main/leader/demand/demandHome.vue

@@ -55,7 +55,7 @@
         <el-button type="primary" v-if="closeStatus" @click="handleClose"
           >关闭</el-button
         >
-        
+
         <el-button
           type="primary"
           v-if="forwardStatus"
@@ -94,10 +94,12 @@
         :destroy-on-close="true"
       >
         <Workflow
+          ref="workflow"
           :list="fromList"
           v-if="isWorkflowStatus == true"
           @beforeClose="beforeClose"
           :requestForm="requestForm"
+          :adminResourceId="adminResourceId"
         />
         <WorkflowEntrance
           :list="fromList"
@@ -157,7 +159,7 @@ export default {
     deptTree,
     Workflow,
     WorkflowEntrance,
-    Tables
+    Tables,
   },
   data() {
     return {
@@ -196,9 +198,9 @@ export default {
         processDefinitionKey: "request_form_process",
       },
       requestForm: {
-        // fresourceId: "0d94de8a-0281-11ed-a302-4ae7da54db39", // 本地环境
+        fresourceId: "0d94de8a-0281-11ed-a302-4ae7da54db39", // 本地环境
         // fresourceId: "bf79721c-33f3-11ed-ba0b-00505687dcd3", //测试环境
-        fresourceId:'81455799-600d-11ed-b399-e00084564cce',//生产环境
+        // fresourceId:'81455799-600d-11ed-b399-e00084564cce',//生产环境
         processDefinitionKey: "request_form_process",
       },
       treeList: [], //候选人列表
@@ -585,7 +587,7 @@ export default {
                 this.disabled = true;
                 this.buttonStatus = false;
                 this.getReadList(r.copytaskid);
-                this.clickForm(r)
+                this.clickForm(r);
               }, // 自定义事件
             },
           ],
@@ -760,6 +762,7 @@ export default {
       seachLists: {},
       timeList: {},
       lastManList: [],
+      adminResourceId: "", //转派多人id
     };
   },
   created() {
@@ -877,8 +880,15 @@ export default {
 
       let res = await this.common.httpPost(obj, success);
       function success(data) {
+        console.log(data);
+        if (data.lastMan == true) {
+          _this.adminResourceId = data.adminResourceId;
+        }
+        _this.destroy = true;
+        _this.handleStatus = true;
         _this.isWorkflowStatus = data.lastMan == false ? false : true;
         _this.lastManList = data;
+
         // console.log(_this.isWorkflowStatus);
       }
     },
@@ -979,12 +989,11 @@ export default {
         },
         data: this.$refs.formTable.form,
       }).then((res) => {
-        if(res.data.result === 1) {
+        if (res.data.result === 1) {
           this.$message.success(res.data.desc);
-        }else{
+        } else {
           this.$message.error(res.data.desc);
         }
-        
       });
     },
     //批量导出搜索
@@ -1360,14 +1369,25 @@ export default {
         data: list,
       }).then((res) => {
         if (res.data.body.nextShapes[0].multi) {
+          console.log('这是mulit节点');
           if (res.data.body.nextShapes[0].multi.multi === "true") {
+             console.log('这是mulit节点');
             this.getLastName();
+          } else {
+            this.adminResourceId = ''
+            console.log('这不是mulit节点');
+            this.destroy = true;
+            this.handleStatus = true;
+            this.getMetirialType();
           }
-        }
-        if (this.fromList.taskId) {
+        } else {
+          this.adminResourceId = ''
+          console.log('这不是mulit节点');
           this.destroy = true;
           this.handleStatus = true;
           this.getMetirialType();
+        }
+        if (this.fromList.processId) {
         } else {
           this.$message.error("请先点击保存按钮");
         }
@@ -1375,7 +1395,6 @@ export default {
     },
     //处理按钮,开始工作流接口
     clickHandles() {
-      console.log(this.fromList);
       this.getNextPath(this.fromList.resourceId || "");
     },
 
@@ -1412,7 +1431,7 @@ export default {
 
       let res = await this.common.httpPost(obj, success);
       function success(data) {
-        console.log('[ 接口返回值第一曾 ] >', data)
+        console.log("[ 接口返回值第一曾 ] >", data);
         let list = [];
         list = data.data.data;
         // list.map((item,index) => {
@@ -1612,6 +1631,7 @@ export default {
         },
         data: e || {},
       }).then((res) => {
+        console.log(res);
         if (status === 0) {
           this.clickDemand("需求名称", res.data.data[0]);
         } else {

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

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

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

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

File diff suppressed because it is too large
+ 679 - 642
src/pages/main/memberFamily/haveInHand.vue


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

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

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

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

+ 317 - 87
src/pages/main/provincialWorkOrder/provincialWorkOrder.vue

@@ -3,22 +3,22 @@
         <div :span="24" class="flex-header">
             <Tabs :tabList="tabListMain" @status="clickTabMains">
             </Tabs>
-            <el-button type="primary" @click="clickNewTag()">+新建</el-button>
+            <el-button v-if="clickTagName == 'first'" type="primary" @click="clickNewTag()">+新建</el-button>
         </div>
         <div class="flex-count">
-            <Table v-loading="loading" @clickDemand="clickDemand" :list="lableTable" ref="TableList"
-                @changeNum="changeNum" @changeSize="changeSize">
+            <Table v-loading="loading" @clickDemand="clickDemand" :list="lableTable" ref="TableList" @changeNum="changeNum"
+                @changeSize="changeSize">
                 <!-- <template v-slot:first>
-                    <Export :num="num" ref="export" :exportStatusList="exportStatus" @seachExportList="seachExportList"
-                        @export="batchExport" @clickApproval="clickApproval"></Export>
-                </template> -->
+                                                                        <Export :num="num" ref="export" :exportStatusList="exportStatus" @seachExportList="seachExportList"
+                                                                            @export="batchExport" @clickApproval="clickApproval"></Export>
+                                                                    </template> -->
                 <!-- <template v-slot:first>
-                    <Seach :list="filterData" @seachList="seachList"></Seach>
-                </template> -->
+                                                                        <Seach :list="filterData" @seachList="seachList"></Seach>
+                                                                    </template> -->
             </Table>
         </div>
-        <el-dialog :title="dialogTitle" :visible.sync="dialogStatus" width="100%" :before-close="handleClose"
-            :modal="false" v-if="dialogStatus" :destroy-on-close="true">
+        <el-dialog :title="dialogTitle" :visible.sync="dialogStatus" width="100%" :before-close="handleClose" :modal="false"
+            v-if="dialogStatus" :destroy-on-close="true">
             <!-- 后期维护 -->
             <div style="position: fixed; z-index: 10000;top: 55px;">
                 <el-button type="primary" v-if="startStatus" @click="clickHandles">处理</el-button>
@@ -38,8 +38,7 @@
                         </el-select>
                     </el-form-item>
                     <el-form-item label="密级:" prop="secretlevel">
-                        <el-select v-model="fromList.secretlevel" placeholder="请选择密级" size="medium"
-                            :disabled="disabled">
+                        <el-select v-model="fromList.secretlevel" placeholder="请选择密级" size="medium" :disabled="disabled">
                             <el-option v-for="item in secretleveloptions" :key="item.code" :label="item.name"
                                 :value="item.code" />
                         </el-select>
@@ -91,12 +90,12 @@
             </el-form>
             <div v-if="dialoglablesStatus">
                 <div class="table-title">流程追踪</div>
-                <Table :list="lables"></Table>
+                <TableId :list="lables"></TableId>
             </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">
+            <el-dialog title="处理操作" width="100%" :visible.sync="handleStatus" :before-close="handleCloses" :modal="false"
+                v-if="handleStatus" :destroy-on-close="true">
                 <Workflow :list="fromList" v-if="isWorkflowStatus == true" @updateForm="updateForm"
                     :requestForm="requestForm" />
 
@@ -106,12 +105,12 @@
             </el-dialog>
         </div>
     </div>
-
 </template>
 
 <script>
 import Tabs from "../../../components/el-tabs";
 import Table from "../../../components/el-form";
+import TableId from "../../../components/el-formid";
 import Seach from "../../../components/el-search";
 import myUpload from "../../../components/workflowUpload";
 import Workflow from "../../../components/workflowBase";
@@ -121,10 +120,14 @@ import {
     getDoneBase,
     getInitiateBase,
     getNowdata,
+    queryReadBase,
+    queryReadDoneBase
 } from "../../../http/api.js";//../../../http/api.js
+import { log } from "console";
 export default {
     components: {
         Table,
+        TableId,
         Tabs,
         myUpload,
         Workflow,
@@ -217,9 +220,9 @@ export default {
                 processDefinitionKey: "tygd_pro_process",//流程key
             },
             requestForm: {
-                // fresourceId: "08368848-2fde-11ed-a6ed-02427ba2d388", // 本地环境
+                fresourceId: "08368848-2fde-11ed-a6ed-02427ba2d388", // 本地环境
                 // fresourceId: "canvas", // 生产环境
-                fresourceId: "canvas", //测试91环境
+                // fresourceId: "4fdbb96e-8bfd-11ed-8988-00505687dcd3", //测试91环境
                 processDefinitionKey: "tygd_pro_process",
             },
             dialogStatus: false, //dialog显示
@@ -299,16 +302,16 @@ export default {
                     label: "我发起的",
                     number: 3,
                 },
-                // {
-                //     index: "four",
-                //     label: "待阅",
-                //     number: 4,
-                // },
-                // {
-                //     index: "five",
-                //     label: "已阅",
-                //     number: 5,
-                // },
+                {
+                    index: "four",
+                    label: "待阅",
+                    number: 4,
+                },
+                {
+                    index: "five",
+                    label: "已阅",
+                    number: 5,
+                },
             ],
             lableTable: {},//传给子组件table
             phone: '',
@@ -491,6 +494,140 @@ export default {
                     ],
                 },
             },
+            fourTable: {
+                name: "four",
+                titledata: [
+                    {
+                        label: "文件标题",
+                        prop: "need_name",
+                        width: 300,
+                        color: "#0682CD",
+                    },
+                    {
+                        label: "发起部门",
+                        prop: "applydept",
+                        width: 300,
+                    },
+                    {
+                        label: "发起科室",
+                        prop: "applydepartment",
+                        width: 300,
+                    },
+                    {
+                        label: "发起人",
+                        prop: "proposer",
+                        width: 200,
+                    },
+                    {
+                        label: "发起时间",
+                        prop: "proposer_time",
+                        width: 300,
+                    },
+                    {
+                        label: "状态",
+                        prop: "taskName",
+                        width: 200,
+                    },
+                ], //表格头
+                data: [], //内容数据
+                loading: true,
+                pageData: {
+                    total: 100, // 总条数
+                    pageSizes: 10, // 每页数量
+                    pageNum: 1, // 页码
+                },
+                isSelection: false, // 表格有多选时设置
+                isOperation: true, // 表格有操作列时设置
+                isIndex: false, // 列表序号
+                operation: {
+                    // 表格有操作列时设置
+                    label: "操作", // 列名
+                    width: "100", // 根据实际情况给宽度
+                    data: [
+                        {
+                            label: "查看", // 操作名称
+                            type: "", //按钮类型
+                            handleRow: (e, r, o) => {
+                                this.fromList = r;
+                                this.dialogStatus = true;
+                                this.disabled = true;
+                                this.buttonStatus = false;
+                                this.getReadList(r.copytaskid);
+                                this.clickForm(r);
+                            }, // 自定义事件
+                        },
+                    ],
+                },
+            },
+            fiveTable: {
+                name: "five",
+                titledata: [
+                    {
+                        label: "文件标题",
+                        prop: "need_name",
+                        width: 300,
+                        color: "#0682CD",
+                    },
+                    {
+                        label: "发起部门",
+                        prop: "applydept",
+                        width: 300,
+                    },
+                    {
+                        label: "发起科室",
+                        prop: "applydepartment",
+                        width: 300,
+                    },
+                    {
+                        label: "发起人",
+                        prop: "proposer",
+                        width: 200,
+                    },
+                    {
+                        label: "发起时间",
+                        prop: "proposer_time",
+                        width: 300,
+                    },
+                    // {
+                    //   label: "工单状态",
+                    //   prop: "taskName",
+                    //   width: 200,
+                    // },
+                ], //表格头
+                data: [], //内容数据
+                loading: true,
+                pageData: {
+                    total: 100, // 总条数
+                    pageSizes: 10, // 每页数量
+                    pageNum: 1, // 页码
+                },
+                isSelection: false, // 表格有多选时设置
+                isOperation: false, // 表格有操作列时设置
+                isIndex: false, // 列表序号
+                operation: {
+                    // 表格有操作列时设置
+                    label: "支撑状态", // 列名
+                    width: "100", // 根据实际情况给宽度
+                    data: [
+                        {
+                            label: "查看", // 操作名称
+                            type: "", //按钮类型
+                            handleRow: (e, r, o) => {
+                                this.getReadList(r.copytaskid);
+                                // if (r.needNo !== null) {
+                                //   this.$router.push({
+                                //     path: "/supportState",
+                                //     query: { id: r.needNo },
+                                //   });
+                                // } else {
+                                //   this.$message.error("暂无支撑状态可查看");
+                                // }
+                                // this.getQuery()
+                            }, // 自定义事件
+                        },
+                    ],
+                },
+            },
             filterData: {
                 timeSelect: false, //是否显示日期控件
                 sreach: true,
@@ -532,6 +669,23 @@ export default {
             this.fromList.fileno = JSON.parse(window.sessionStorage.getItem('userInfo')).loginNoStr.charCodeAt() + getNowdata({ a: '', b: '', c: '' })
             this.fromList.phone = this.phone
         },
+        //点击查阅接口
+        async getReadList(e) {
+            let _this = this;
+            let obj = {
+                url: this.$url.formList.getReadList, //开始工作流接口
+                data: { copytaskid: e },
+                status: "form",
+                headers: {
+                    "Content-Type": "application/x-www-form-urlencoded",
+                },
+            };
+
+            let res = await this.common.httpPost(obj, success);
+            function success(data) {
+                console.log(data);
+            }
+        },
         //是否最后一个人
         async getLastName() {
             console.log(this.fromList);
@@ -682,6 +836,14 @@ export default {
                 this.threelabel.pageData.pageNum = e;
                 this.getMeLaunch()
             }
+            if (this.clickTagName == 'four') {
+                this.fourTable.pageData.pageNum = e;
+                this.getToBeRead()
+            }
+            if (this.clickTagName == 'five') {
+                this.fiveTable.pageData.pageNum = e;
+                this.getBeReadList()
+            }
         },
         //获取页码
         changeSize(e) {
@@ -735,10 +897,16 @@ export default {
                     this.disabled = true;
                     this.dialoglablesStatus = true
                 }
-                this.dialogStatus = true
-                this.fromList = res;
-                this.clickForm(res);
-                this.getFromQuery(res);
+
+                if (this.clickTagName === "four" || this.clickTagName === "five") {
+
+                } else {
+                    this.dialogStatus = true
+                    this.fromList = res;
+                    this.clickForm(res);
+                    this.getFromQuery(res);
+                }
+
             }
         },
         //查询form表单数据
@@ -832,7 +1000,7 @@ export default {
                         });
                     } else {
                         this.getUserIds();
-                        this.setForm();
+
                     }
                 } else {
                     this.$message.error("请完善表单信息");
@@ -843,17 +1011,15 @@ export default {
         //获取自己idname
         getUserIds() {
             this.$http({
-                url: "/market/waf/queryRoleByName",
+                url: "/market/api/user/info/queryNodePers?params=" + JSON.parse(window.sessionStorage.userInfo).loginNo,
                 method: "post",
                 headers: {
                     "Content-Type": "application/json",
                 },
-                data: {
-                    userCode: JSON.parse(window.sessionStorage.userInfo).loginNo,
-                },
             }).then((res) => {
-                this.request_form.userName = res.data.data.rows[0].name;
-                this.request_form.userId = res.data.data.rows[0].userCode;
+                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)
             });
         },
@@ -891,6 +1057,7 @@ export default {
 
             let res = await this.common.httpPost(obj, success);
             function success(data) {
+                // console.log(data);
                 _this.fromList.taskId = data.data;
                 _this.fromList.processId = data.data;
                 // _this.fromList.resourceId = data.data;
@@ -941,10 +1108,8 @@ export default {
         },
         getNextPath(e) {
             let list = {
-                // fresourceId: "bf79721c-33f3-11ed-ba0b-00505687dcd3", //测试环境
                 fresourceId: this.requestForm.fresourceId, // 本地环境
                 processId: this.requestForm.processDefinitionKey,
-                // fresourceId: "0d94de8a-0281-11ed-a302-4ae7da54db39", // 本地环境
                 // processId: "request_form_process",
                 // resourceId: e,
             };
@@ -964,6 +1129,7 @@ export default {
                 data: list,
             }).then((res) => {
                 console.log(res);
+                console.log(this.fromList);
                 console.log(res.data.body);
                 console.log(res.data.body.nextShapes[0].multi);
                 if (res.data.body.nextShapes[0].multi) {
@@ -971,7 +1137,7 @@ export default {
                         this.getLastName();
                     }
                 }
-                if (this.fromList.taskId) {
+                if (this.fromList.taskId || this.fromList.processId) {
                     this.destroy = true;
                     this.handleStatus = true;
                     this.getMetirialType();
@@ -1018,6 +1184,14 @@ export default {
                 this.lableTable = this.threelabel
                 this.getMeLaunch()
             }
+            if (this.clickTagName == 'four') {
+                this.lableTable = this.fourTable
+                this.getToBeRead()
+            }
+            if (this.clickTagName == 'five') {
+                this.lableTable = this.fiveTable
+                this.getBeReadList()
+            }
         },
         clickTabMains(e) {
             console.log(e);
@@ -1036,6 +1210,14 @@ export default {
                 this.lableTable = this.threelabel
                 this.getMeLaunch()
             }
+            if (this.clickTagName == 'four') {
+                this.lableTable = this.fourTable
+                this.getToBeRead()
+            }
+            if (this.clickTagName == 'five') {
+                this.lableTable = this.fiveTable
+                this.getBeReadList()
+            }
         },
         adminhandleSizeChange(val) {
             console.log(`每页 ${val} 条`);
@@ -1045,14 +1227,17 @@ export default {
         },
 
         //我的待办
-        getQueryList() {
+        getQueryList(e, status) {
             this.loading = true;
-            getTodoBase(this.pageNo, "", { tableName: this.tableName, }).then((res) => {
+            getTodoBase(this.pageNo, "", e || { tableName: this.tableName }).then((res) => {
+                if (status === 0) {
+                    this.clickDemand("文件标题", res.data.data[0]);
+                }
                 this.lableTable.data = res.data.data;
 
-                this.lableTable.data.map((item) => {
-                    item.status = "1";
-                });
+                // this.lableTable.data.map((item) => {
+                //     item.status = "1";
+                // });
                 this.lableTable.pageData.total = res.data.totalRecord;
                 this.tabListMain[0].number = res.data.totalRecord
                 this.loading = false;
@@ -1064,26 +1249,52 @@ export default {
             getDoneBase(this.pageNo, "", { tableName: this.tableName, }).then((res) => {
                 this.lableTable.data = res.data.data;
 
-                this.lableTable.data.map((item) => {
-                    item.status = "2";
-                });
+                // this.lableTable.data.map((item) => {
+                //     item.status = "2";
+                // });
                 this.lableTable.pageData.total = res.data.totalRecord;
                 this.tabListMain[1].number = res.data.totalRecord
                 this.loading = false;
             });
         },
+        getToBeRead() {
+            this.loading = true;
+            queryReadBase(this.pageNo, "", { tableName: this.tableName, }).then((res) => {
+                this.lableTable.data = res.data.data;
+
+                // this.lableTable.data.map((item) => {
+                //     item.status = "2";
+                // });
+                this.lableTable.pageData.total = res.data.totalRecord;
+                this.tabListMain[3].number = res.data.totalRecord
+                this.loading = false;
+            });
+        },
+        getBeReadList() {
+            this.loading = true;
+            queryReadDoneBase(this.pageNo, "", { tableName: this.tableName, }).then((res) => {
+                this.lableTable.data = res.data.data;
+
+                // this.lableTable.data.map((item) => {
+                //     item.status = "2";
+                // });
+                this.lableTable.pageData.total = res.data.totalRecord;
+                this.tabListMain[4].number = res.data.totalRecord
+                this.loading = false;
+            });
+        },
         //我发起的
         getMeLaunch() {
             this.loading = true;
             getInitiateBase(this.pageNo, "", { tableName: this.tableName, }).then((res) => {
                 this.lableTable.data = res.data.data;
-                this.lableTable.data.map((item) => {
-                    if (item.taskName === "起草") {
-                        item.status = "1";
-                    } else {
-                        item.status = "2";
-                    }
-                });
+                // this.lableTable.data.map((item) => {
+                //     if (item.taskName === "起草") {
+                //         item.status = "1";
+                //     } else {
+                //         item.status = "2";
+                //     }
+                // });
                 this.lableTable.pageData.total = res.data.totalRecord;
                 this.tabListMain[2].number = res.data.totalRecord
                 this.loading = false;
@@ -1099,39 +1310,58 @@ export default {
             getTodoBase(this.pageNo, "", { tableName: this.tableName, }).then((res) => {
                 this.tabListMain[0].number = res.data.totalRecord
             });
+            queryReadBase(this.pageNo, "", { tableName: this.tableName, }).then((res) => {
+                this.tabListMain[3].number = res.data.totalRecord
+            });
+            queryReadDoneBase(this.pageNo, "", { tableName: this.tableName, }).then((res) => {
+                this.tabListMain[4].number = res.data.totalRecord
+            });
         }
     },
     created() {
-        this.lableTable = this.firstlabel
-        this.getQueryList()
-        this.usernumber()
-        this.$http({
-            url: "/market/tygdProProcess/getPhone",
-            method: "post",
-            headers: {
-                "Content-Type": "application/json",
-            },
-        }).then((res) => {
-            console.log(res.data);
-            this.phone = res.data
-        })
-        this.$http({
-            url: "/sysmgr/csysdept/queryGroupListByLoginNo",
-            method: "post",
-            headers: {
-                "Content-Type": "application/json",
-            },
-            data: {},
-        }).then((res) => {
-            let a = res.data[0].description.split('/')
-            if (a.length == 3) {
-                this.dept = a[1]
-                this.keshi = a[2]
-            } else {
-                this.dept = a[1]
-                this.keshi = a[1]
-            }
-        });
+        let status = JSON.stringify(this.$route.query) == "{}";
+        if (status) {
+            this.lableTable = this.firstlabel
+            this.getQueryList()
+            this.usernumber()
+            this.$http({
+                url: "/market/tygdProProcess/getPhone",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+            }).then((res) => {
+                console.log(res.data);
+                this.phone = res.data
+            })
+            this.$http({
+                url: "/sysmgr/csysdept/queryGroupListByLoginNo",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {},
+            }).then((res) => {
+                let a = res.data[0].description.split('/')
+                if (a.length == 3) {
+                    this.dept = a[1]
+                    this.keshi = a[2]
+                } else {
+                    this.dept = a[1]
+                    this.keshi = a[1]
+                }
+            });
+        } else {
+            let { id, type } = this.$route.query;
+            let list = {
+                taskId: id,
+                tableName: this.tableName
+            };
+            this.usernumber()
+            this.lableTable = this.firstlabel
+            this.getQueryList(list, 0);//代办
+        }
+
     }
 }
 </script>

File diff suppressed because it is too large
+ 1312 - 0
src/pages/main/provincialWorkOrder/provincialWorkOrderArea.vue


+ 6 - 0
src/router/index.js

@@ -2180,6 +2180,12 @@ const routes = [{
             name: 'provincialWorkOrder',
             component: resolve => require(['../pages/main/provincialWorkOrder/provincialWorkOrder.vue'], resolve),
             meta: { title: '省-通用工单' }
+        },
+        {
+            path: '/provincialWorkOrderArea',
+            name: 'provincialWorkOrderArea',
+            component: resolve => require(['../pages/main/provincialWorkOrder/provincialWorkOrderArea.vue'], resolve),
+            meta: { title: '地市-通用工单' }
         }
 
 

+ 3 - 3
vue.config.js

@@ -133,10 +133,10 @@ module.exports = {
                 // target: 'http://192.168.1.9:9600/spfm',
                 // target: 'http://127.0.0.1:9600/',
                 // target: 'http://192.168.0.156:9600/',
-                // target: 'http://192.168.2.170:9600/',
-                // target: 'http://192.168.2.124:9600/',
+                // target: 'http://192.168.2.44:9600/',
+                target: 'http://192.168.2.43:9600',
                 // target: "http://124.223.66.248:9600",
-                target: "http://43.138.50.94:9600",
+                // target: "http://43.138.50.94:9600",
                 changeOrigin: true,
             },
         },

+ 6 - 1
yarn.lock

@@ -3177,6 +3177,11 @@ console-browserify@^1.1.0:
   resolved "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
   integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
 
+console@^0.7.2:
+  version "0.7.2"
+  resolved "https://registry.yarnpkg.com/console/-/console-0.7.2.tgz#f9a4331249291591b7bf9bffa8e205356f20a9f0"
+  integrity sha512-+JSDwGunA4MTEgAV/4VBKwUHonP8CzJ/6GIuwPi6acKFqFfHUdSGCm89ZxZ5FfGWdZfkdgAroy5bJ5FSeN/t4g==
+
 consolidate@^0.15.1:
   version "0.15.1"
   resolved "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7"
@@ -3985,7 +3990,7 @@ element-ui@^2.13.0:
 
 element-ui@^2.15.7:
   version "2.15.12"
-  resolved "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.12.tgz#fdde927a54078b17a85541ff7c0f0dad32488b8e"
+  resolved "https://registry.yarnpkg.com/element-ui/-/element-ui-2.15.12.tgz#fdde927a54078b17a85541ff7c0f0dad32488b8e"
   integrity sha512-Y5FMT2BPOindU2GkDEQ5ZKUVxDawKONRNMh2eL3uBx1FOtvUJ+L6IxXLVsNxq4WnaX/UnVNgWXebl7DobygZMg==
   dependencies:
     async-validator "~1.8.1"