Quellcode durchsuchen

Merge branch 'hjw-tongyonggongdan' into 'master'

Hjw tongyonggongdan

See merge request spfm/spfm-market-front!435
杨壁繁 vor 2 Jahren
Ursprung
Commit
cfc652501d

+ 2 - 2
config/dev.env.js

@@ -7,8 +7,8 @@ module.exports = merge(prodEnv, {
   ENV_CONFIG: '"dev"',
   ENV_CONFIG: '"dev"',
   ctx:'"http://127.0.0.1:8080"',
   ctx:'"http://127.0.0.1:8080"',
   // ctxForm: '"http://10.149.85.91:8000/api"',//dev
   // ctxForm: '"http://10.149.85.91:8000/api"',//dev
-  // ctxForm: '"http://43.138.50.94:8880"',//test
-  // ctxForm: '"http://192.168.2.44:8880"',//test
+  // ctxForm: '"http://43.138.50.94:8880/api"',//test
+  // ctxForm: '"http://192.168.2.92:8880/api"',//test
   ctxForm: '"http://10.230.26.15:8000/api"',//生产
   ctxForm: '"http://10.230.26.15:8000/api"',//生产
 
 
   excludeMeWhenSelectNextHandler:false,
   excludeMeWhenSelectNextHandler:false,

+ 1 - 1
public/index.html

@@ -33,7 +33,7 @@
   <script type="text/javascript">
   <script type="text/javascript">
     window.staticHost = 'http://10.230.26.15:8000/mkt'; // 正式
     window.staticHost = 'http://10.230.26.15:8000/mkt'; // 正式
     // window.staticHost = 'http://10.149.85.91:8000/spfm'; // 测试
     // window.staticHost = 'http://10.149.85.91:8000/spfm'; // 测试
-    // window.staticHost = 'http://192.168.0.103:9600/';
+    // window.staticHost = 'http://192.168.2.92:9600';
     // window.staticHost = 'http://43.138.50.94:9600/';
     // window.staticHost = 'http://43.138.50.94:9600/';
 
 
     // document.title = "hello";
     // document.title = "hello";

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

@@ -264,12 +264,12 @@ let common = {
                         loading.close()
                         loading.close()
                     }
                     }
                     if (response.data.code === 1 ||response.data.code == '1') {
                     if (response.data.code === 1 ||response.data.code == '1') {
-                        bus.$message.success(response.data.data.message)
+                        bus.$message.success(response.data.message)
                          loading.close()
                          loading.close()
                          success(response.data.data)
                          success(response.data.data)
                          return response
                          return response
                         // if (response.code === 1 ||response.code == '1') {
                         // if (response.code === 1 ||response.code == '1') {
-                        //     bus.$message.success(response.data.message)
+                        //     bus.$message.success(response.message)
                         //      loading.close()
                         //      loading.close()
                         //      success(response.data)
                         //      success(response.data)
                         //      return response
                         //      return response

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

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

+ 3 - 2
src/components/el-form.vue

@@ -12,7 +12,6 @@
       empty-text="暂无数据"
       empty-text="暂无数据"
       @cell-click="getRowList"
       @cell-click="getRowList"
       :cell-style="columnbackgroundStyle"
       :cell-style="columnbackgroundStyle"
-      row-key="id"
       :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
       :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
     >
     >
       <!-- 是否多选 -->
       <!-- 是否多选 -->
@@ -121,10 +120,12 @@ export default {
   methods: {
   methods: {
     columnbackgroundStyle({ row, column, rowIndex, columnIndex }) {
     columnbackgroundStyle({ row, column, rowIndex, columnIndex }) {
       if (column.type == "default") {
       if (column.type == "default") {
-        if (column.label === "文件标题") {
+        if (column.type == "default") {
+        if (column.property === "need_name"||column.property === "needName"||column.property === "doc_title"||column.property === "document_title") {
           return "color:#0682CD;";
           return "color:#0682CD;";
         }
         }
       }
       }
+      }
     },
     },
     selectionChange(val) {
     selectionChange(val) {
 
 

+ 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>
+  

+ 75 - 71
src/components/workflowBase.vue

@@ -8,27 +8,15 @@
               选择路径
               选择路径
 
 
               <div class="flex-path-list">
               <div class="flex-path-list">
-                <div
-                  v-if="manyReassignment"
-                  :class="actives"
-                  @click="clickManyTransfer(1)"
-                >
+                <div v-if="manyReassignment" :class="actives" @click="clickManyTransfer(1)">
                   转派
                   转派
                 </div>
                 </div>
-                <div
-                  v-if="transferStatus"
-                  :class="active"
-                  @click="clickTransfer(1)"
-                >
+                <div v-if="transferStatus" :class="active" @click="clickTransfer(1)">
                   转派
                   转派
                 </div>
                 </div>
                 <div v-if="copyStatus" @click="clickTransfer(2)">抄送</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)"
-                >
+                <div v-for="(item, index) in node.nextShapes" :key="index" :class="seleIndex == index ? 'active' : ''"
+                  @click="clickGetTree(item, index)">
                   {{ item.properties.name }}
                   {{ item.properties.name }}
                 </div>
                 </div>
               </div>
               </div>
@@ -37,18 +25,11 @@
           <div class="flex-commons">
           <div class="flex-commons">
             <div class="flex-left-header-text">
             <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>
             <div class="flex-slide">
             <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 }}
                 {{ item.dataName }}
               </div>
               </div>
             </div>
             </div>
@@ -56,30 +37,17 @@
         </div>
         </div>
         <div class="flex-opinion">
         <div class="flex-opinion">
           <div class="flex-left-header-text">意见内容</div>
           <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>
           </el-input>
         </div>
         </div>
       </div>
       </div>
       <div class="flex-right" :class="{ copyClass: CopyStatus }">
       <div class="flex-right" :class="{ copyClass: CopyStatus }">
-        <div
-          class="flex-left-header-text"
-          :class="{ 'flex-right-text': CopyStatus }"
-        >
+        <div class="flex-left-header-text" :class="{ 'flex-right-text': CopyStatus }">
           本部门人员办理
           本部门人员办理
           <div style="display: flex">
           <div style="display: flex">
             <div class="flex-header-text-tree">
             <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>
             <div class="flex-header-text-tree">
             <div class="flex-header-text-tree">
               已选人员
               已选人员
@@ -95,16 +63,13 @@
           <div style="display: flex">
           <div style="display: flex">
             <div class="flex-header-text-tree">
             <div class="flex-header-text-tree">
               抄送人
               抄送人
-              <deptTree
-                ref="defTrees"
-                class="flex-slide"
-                :treeList="treeCopyList"
-                @changeTree="changeTreeCopy"
-              />
+              <deptTree ref="defTrees" class="flex-slide" :treeList="treeCopyList" @changeTree="changeTreeCopy" />
             </div>
             </div>
             <div class="flex-header-text-tree">
             <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>
           </div>
         </div>
         </div>
@@ -115,21 +80,10 @@
         <el-button type="primary" @click="submitWork()">提交</el-button>
         <el-button type="primary" @click="submitWork()">提交</el-button>
       </div>
       </div>
     </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 style="overflow-y: scroll; overflow-x: hidden; height: 240px">
-        <div
-          v-for="(item, index) in commonlyList"
-          :key="index"
-          ref="common"
-          class="flex-common"
-        >
+        <div v-for="(item, index) in commonlyList" :key="index" ref="common" class="flex-common">
           {{ item.dataName
           {{ item.dataName
           }}<i class="el-icon-circle-close" @click="deleStatus(item)"></i>
           }}<i class="el-icon-circle-close" @click="deleStatus(item)"></i>
         </div>
         </div>
@@ -214,7 +168,7 @@ export default {
       };
       };
 
 
       let res = await this.common.httpPost(obj, success);
       let res = await this.common.httpPost(obj, success);
-      function success(data) {}
+      function success(data) { }
     },
     },
     async nextWorks(lists, list) {
     async nextWorks(lists, list) {
       let listss = {
       let listss = {
@@ -309,9 +263,14 @@ export default {
             return false;
             return false;
           }
           }
         } else {
         } 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) {
           if (this.isLastManStatus == true) {
             list.lastman = "yes";
             list.lastman = "yes";
@@ -331,7 +290,7 @@ export default {
               list.nextDealMan = this.backThree[0].loginNoStr;
               list.nextDealMan = this.backThree[0].loginNoStr;
             }
             }
           } else {
           } else {
-            if (this.clicknextName === "流程结束"||this.clicknextName === "提交至任务发起人") {
+            if (this.clicknextName === "流程结束" || this.clicknextName === "提交至任务发起人") {
             } else {
             } else {
               this.$message.error("请选择候选人");
               this.$message.error("请选择候选人");
               return false;
               return false;
@@ -357,6 +316,7 @@ export default {
     async nextWork(list) {
     async nextWork(list) {
       //e:yes||no,list:传入数组,title:结束标签,res:驳回标签,id:工单更新id
       //e:yes||no,list:传入数组,title:结束标签,res:驳回标签,id:工单更新id
       let _this = this;
       let _this = this;
+      let copylist = list
       let obj = {
       let obj = {
         url: _this.$url.formList.nextWork, //下一步工作流接口
         url: _this.$url.formList.nextWork, //下一步工作流接口
         data: list,
         data: list,
@@ -392,7 +352,8 @@ export default {
             };
             };
             if (data.copytaskid) {
             if (data.copytaskid) {
               list.copytaskid = 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) {
             if (_this.demand) {
               list.needNo = _this.demand;
               list.needNo = _this.demand;
@@ -459,7 +420,7 @@ export default {
           }
           }
           if (res.data.body.nextShapes[0].copy !== null) {
           if (res.data.body.nextShapes[0].copy !== null) {
             if (res.data.body.nextShapes[0].copy.copy === "true") {
             if (res.data.body.nextShapes[0].copy.copy === "true") {
-              // this.copyStatus = true; //抄送按钮生效
+              this.copyStatus = true; //抄送按钮生效
               this.CopyStatus = true;
               this.CopyStatus = true;
             } else {
             } else {
               this.copyStatus = false;
               this.copyStatus = false;
@@ -512,7 +473,7 @@ export default {
       }).then((res) => {
       }).then((res) => {
         console.log(status);
         console.log(status);
         if (status === 2) {
         if (status === 2) {
-          this.treeCopyList = res.data; //抄送
+          // this.treeCopyList = res.data; //抄送
           //  this.$refs.defTrees.treeList = res.data;
           //  this.$refs.defTrees.treeList = res.data;
         } else {
         } else {
           this.treeList = res.data; //抄送
           this.treeList = res.data; //抄送
@@ -520,6 +481,22 @@ export default {
           console.log(this.treeList);
           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) {
     clickTransfer(e) {
@@ -534,6 +511,9 @@ export default {
     clickGetTree(e, index) {
     clickGetTree(e, index) {
       this.$refs.defTree.userList = [];
       this.$refs.defTree.userList = [];
       this.backThree = [];
       this.backThree = [];
+      this.$refs.defTree.userList = [];
+      this.backThree = [];
+      this.copyUser = [];
       this.CopyStatus = false;
       this.CopyStatus = false;
       this.TransferStatus = false;
       this.TransferStatus = false;
       //   this.clickTaskName = e.properties.name;
       //   this.clickTaskName = e.properties.name;
@@ -568,7 +548,6 @@ export default {
           if (this.CopyStatus === true) {
           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;
             this.selectUser = e[0].loginNameStr;
           } else {
           } else {
@@ -577,6 +556,10 @@ export default {
         }
         }
       }
       }
     },
     },
+    changeTreeCopy(e) {
+      console.log(e);
+      this.copyUser = e
+    },
     //获取字典表常用意见
     //获取字典表常用意见
     getMetirialType(e) {
     getMetirialType(e) {
       this.$http({
       this.$http({
@@ -685,17 +668,20 @@ export default {
   text-align: center;
   text-align: center;
 }
 }
 
 
+
 .flex-icon {
 .flex-icon {
   float: right;
   float: right;
   margin-right: 20px;
   margin-right: 20px;
   color: #4277a1;
   color: #4277a1;
 }
 }
 
 
+
 .flex-handle {
 .flex-handle {
   width: 100%;
   width: 100%;
   padding: 30px;
   padding: 30px;
   display: flex;
   display: flex;
 
 
+
   .flex-right {
   .flex-right {
     width: 50%;
     width: 50%;
     border: 1px solid #e1e1e1;
     border: 1px solid #e1e1e1;
@@ -703,15 +689,18 @@ export default {
   }
   }
 }
 }
 
 
+
 .flex-left {
 .flex-left {
   width: 50%;
   width: 50%;
   display: flex;
   display: flex;
   flex-direction: column;
   flex-direction: column;
 
 
+
   .flex-left-header {
   .flex-left-header {
     display: flex;
     display: flex;
     justify-content: space-around;
     justify-content: space-around;
 
 
+
     .flex-path {
     .flex-path {
       height: 280px;
       height: 280px;
       border: 1px solid #e1e1e1;
       border: 1px solid #e1e1e1;
@@ -720,11 +709,13 @@ export default {
   }
   }
 }
 }
 
 
+
 .flex-common {
 .flex-common {
   padding: 10px 5%;
   padding: 10px 5%;
   font-size: 18px;
   font-size: 18px;
 }
 }
 
 
+
 .flex-left-header-text {
 .flex-left-header-text {
   height: 40px;
   height: 40px;
   line-height: 40px;
   line-height: 40px;
@@ -735,21 +726,25 @@ export default {
   font-weight: bold;
   font-weight: bold;
 }
 }
 
 
+
 .flex-path-list {
 .flex-path-list {
   overflow-y: scroll;
   overflow-y: scroll;
   overflow-x: hidden;
   overflow-x: hidden;
   height: 14rem;
   height: 14rem;
 }
 }
 
 
+
 .flex-slide {
 .flex-slide {
   overflow-y: scroll;
   overflow-y: scroll;
   overflow-x: hidden;
   overflow-x: hidden;
 }
 }
 
 
+
 .active {
 .active {
   background-color: #f3faff;
   background-color: #f3faff;
 }
 }
 
 
+
 .flex-opinion {
 .flex-opinion {
   height: 280px;
   height: 280px;
   border: 1px solid #e1e1e1;
   border: 1px solid #e1e1e1;
@@ -757,28 +752,37 @@ export default {
   margin-top: 20px;
   margin-top: 20px;
 }
 }
 
 
+
 .flex-right-text {
 .flex-right-text {
   margin-right: 20px;
   margin-right: 20px;
   width: 50%;
   width: 50%;
 }
 }
 
 
+
 .flex-commons {
 .flex-commons {
   height: 280px;
   height: 280px;
   border: 1px solid #e1e1e1;
   border: 1px solid #e1e1e1;
   width: 30%;
   width: 30%;
 }
 }
 
 
+
 .flex-footer-botton {
 .flex-footer-botton {
   display: flex;
   display: flex;
   justify-content: space-evenly;
   justify-content: space-evenly;
 }
 }
 
 
+
 .flex-button {
 .flex-button {
   margin-top: 10px;
   margin-top: 10px;
   margin-bottom: 10px;
   margin-bottom: 10px;
 
 
+
   ::v-deep .el-button--primary {
   ::v-deep .el-button--primary {
     width: 222px;
     width: 222px;
   }
   }
 }
 }
+
+.copyClass {
+  display: flex;
+}
 </style>
 </style>

+ 47 - 52
src/components/workflowEntrance.vue

@@ -25,18 +25,11 @@
           <div class="flex-commons">
           <div class="flex-commons">
             <div class="flex-left-header-text">
             <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>
             <div class="flex-slide">
             <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 }}
                 {{ item.dataName }}
               </div>
               </div>
             </div>
             </div>
@@ -44,12 +37,7 @@
         </div>
         </div>
         <div class="flex-opinion">
         <div class="flex-opinion">
           <div class="flex-left-header-text">意见内容</div>
           <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>
           </el-input>
         </div>
         </div>
       </div>
       </div>
@@ -61,12 +49,7 @@
           <div style="display: flex">
           <div style="display: flex">
             <div class="flex-header-text-tree">
             <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>
             <div class="flex-header-text-tree">
             <div class="flex-header-text-tree">
               已选人员
               已选人员
@@ -98,27 +81,15 @@
     </div>
     </div>
     <div class="flex-footer-botton">
     <div class="flex-footer-botton">
       <div class="flex-button">
       <div class="flex-button">
-        <el-button type="primary" @click="getnewtransfertask(1)"
-          >提交</el-button
-        >
+        <el-button type="primary" @click="getnewtransfertask(1)">提交</el-button>
       </div>
       </div>
     </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 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>
           }}<i class="el-icon-circle-close" @click="deleStatus(item)"></i>
         </div>
         </div>
         <div class="flex-common">
         <div class="flex-common">
@@ -138,8 +109,8 @@ export default {
   name: "workflow",
   name: "workflow",
   data() {
   data() {
     return {
     return {
-      active:'',
-      actives:'',
+      active: '',
+      actives: '',
       MultipersonTransfer: false,
       MultipersonTransfer: false,
       transferStatus: false, //转派按钮控制
       transferStatus: false, //转派按钮控制
       TransferStatus: false, //是否点击转派状态
       TransferStatus: false, //是否点击转派状态
@@ -161,7 +132,7 @@ export default {
       treeCopyList: [],
       treeCopyList: [],
       demand: "",
       demand: "",
       close: "",
       close: "",
-      nextDealManLists:''
+      nextDealManLists: ''
     };
     };
   },
   },
   props: {
   props: {
@@ -186,7 +157,7 @@ export default {
       this.backThree = [];
       this.backThree = [];
       this.treeList = [];
       this.treeList = [];
       this.close = "1";
       this.close = "1";
-      this.actives = this.actives!=""? "" :'actives'
+      this.actives = this.actives != "" ? "" : 'actives'
       this.active = ""
       this.active = ""
     },
     },
     // async getqueryMultiTaskId() {
     // async getqueryMultiTaskId() {
@@ -222,7 +193,7 @@ export default {
         // taskName: this.clicknextName, //流程节点
         // taskName: this.clicknextName, //流程节点
         userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
         userCode: JSON.parse(window.sessionStorage.userInfo).loginNo, //人员code
         content: this.textarea, //意见内容
         content: this.textarea, //意见内容
-        resourceId:this.list.resourceId
+        resourceId: this.list.resourceId
       };
       };
       let obj = {};
       let obj = {};
       if (this.close == "1") {
       if (this.close == "1") {
@@ -444,7 +415,7 @@ export default {
           //   this.initialList.nextShapes[0].multi?.multi &&
           //   this.initialList.nextShapes[0].multi?.multi &&
           //   res.data.body.nextShapes[0].multi.multi === "true"
           //   res.data.body.nextShapes[0].multi.multi === "true"
           // ) {
           // ) {
-           
+
           // }
           // }
         }
         }
         if (status === 2) {
         if (status === 2) {
@@ -464,7 +435,7 @@ export default {
     getTreeLists(e, status) {
     getTreeLists(e, status) {
       if (e === 9) {
       if (e === 9) {
         this.close = ""
         this.close = ""
-        this.active = this.active!=""? '' :'active'
+        this.active = this.active != "" ? '' : 'active'
         this.actives = ""
         this.actives = ""
         this.MultipersonTransfer = true;
         this.MultipersonTransfer = true;
       } else {
       } else {
@@ -534,12 +505,17 @@ export default {
     //选择树的回调
     //选择树的回调
     changeTree(e) {
     changeTree(e) {
       if (this.MultipersonTransfer) {
       if (this.MultipersonTransfer) {
+        if (e.length > 1) {
+          this.$message.error("只能选择一个人");
+          return;
+        } else {
           this.backThree = e;
           this.backThree = e;
-        let arr = [];
-        this.backThree.map((item) => {
-          arr.push(item.loginNoStr);
-        });
-        this.nextDealManLists = arr.toString();
+          let arr = [];
+          this.backThree.map((item) => {
+            arr.push(item.loginNoStr);
+          });
+          this.nextDealManLists = arr.toString();
+        }
       }
       }
     },
     },
     //获取字典表常用意见
     //获取字典表常用意见
@@ -648,35 +624,43 @@ export default {
 .active {
 .active {
   background-color: #f3faff;
   background-color: #f3faff;
 }
 }
+
 .actives {
 .actives {
   background-color: #f3faff;
   background-color: #f3faff;
 }
 }
+
 .flex-header-text-tree {
 .flex-header-text-tree {
   width: 50%;
   width: 50%;
   text-align: center;
   text-align: center;
 }
 }
+
 .flex-icon {
 .flex-icon {
   float: right;
   float: right;
   margin-right: 20px;
   margin-right: 20px;
   color: #4277a1;
   color: #4277a1;
 }
 }
+
 .flex-handle {
 .flex-handle {
   width: 100%;
   width: 100%;
   padding: 30px;
   padding: 30px;
   display: flex;
   display: flex;
+
   .flex-right {
   .flex-right {
     width: 50%;
     width: 50%;
     border: 1px solid #e1e1e1;
     border: 1px solid #e1e1e1;
     margin-left: 20px;
     margin-left: 20px;
   }
   }
 }
 }
+
 .flex-left {
 .flex-left {
   width: 50%;
   width: 50%;
   display: flex;
   display: flex;
   flex-direction: column;
   flex-direction: column;
+
   .flex-left-header {
   .flex-left-header {
     display: flex;
     display: flex;
     justify-content: space-around;
     justify-content: space-around;
+
     .flex-path {
     .flex-path {
       height: 280px;
       height: 280px;
       border: 1px solid #e1e1e1;
       border: 1px solid #e1e1e1;
@@ -684,10 +668,12 @@ export default {
     }
     }
   }
   }
 }
 }
+
 .flex-common {
 .flex-common {
   padding: 10px 5%;
   padding: 10px 5%;
   font-size: 18px;
   font-size: 18px;
 }
 }
+
 .flex-left-header-text {
 .flex-left-header-text {
   height: 40px;
   height: 40px;
   line-height: 40px;
   line-height: 40px;
@@ -697,40 +683,49 @@ export default {
   font-size: 18px;
   font-size: 18px;
   font-weight: bold;
   font-weight: bold;
 }
 }
+
 .flex-path-list {
 .flex-path-list {
   overflow-y: scroll;
   overflow-y: scroll;
   overflow-x: hidden;
   overflow-x: hidden;
   height: 14rem;
   height: 14rem;
 }
 }
+
 .flex-slide {
 .flex-slide {
   overflow-y: scroll;
   overflow-y: scroll;
   overflow-x: hidden;
   overflow-x: hidden;
 }
 }
+
 .active {
 .active {
   background-color: #f3faff;
   background-color: #f3faff;
 }
 }
+
 .flex-opinion {
 .flex-opinion {
   height: 280px;
   height: 280px;
   border: 1px solid #e1e1e1;
   border: 1px solid #e1e1e1;
   width: 100%;
   width: 100%;
   margin-top: 20px;
   margin-top: 20px;
 }
 }
+
 .flex-right-text {
 .flex-right-text {
   margin-right: 20px;
   margin-right: 20px;
   width: 50%;
   width: 50%;
 }
 }
+
 .flex-commons {
 .flex-commons {
   height: 280px;
   height: 280px;
   border: 1px solid #e1e1e1;
   border: 1px solid #e1e1e1;
   width: 30%;
   width: 30%;
 }
 }
+
 .flex-footer-botton {
 .flex-footer-botton {
   display: flex;
   display: flex;
   justify-content: space-evenly;
   justify-content: space-evenly;
 }
 }
+
 .flex-button {
 .flex-button {
   margin-top: 10px;
   margin-top: 10px;
   margin-bottom: 10px;
   margin-bottom: 10px;
+
   ::v-deep .el-button--primary {
   ::v-deep .el-button--primary {
     width: 222px;
     width: 222px;
   }
   }

+ 2 - 2
src/components/workflowUpload.vue

@@ -44,8 +44,8 @@ export default {
     };
     };
   },
   },
   methods: {
   methods: {
-    clickDownload() {
-      this.$emit("clickDownload", true);
+    clickDownload(file) {
+      this.$emit("clickDownload", file);
     },
     },
     signUpload() {},
     signUpload() {},
     //删除
     //删除

+ 29 - 3
src/http/api.js

@@ -13,7 +13,7 @@ export function getTodoBase(page, seach, idNo) {
         data: idNo,
         data: idNo,
     })
     })
 }
 }
-//通用方法
+//通用方法
 export function getDoneBase(page, seach, idNo) {
 export function getDoneBase(page, seach, idNo) {
     return axios({
     return axios({
         url: "/market/waf/queryDoneBase",
         url: "/market/waf/queryDoneBase",
@@ -26,7 +26,33 @@ export function getDoneBase(page, seach, idNo) {
         data: 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) {
 export function getInitiateBase(page, seach, idNo) {
     return axios({
     return axios({
         url: "/market/waf/queryInitiateBase",
         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
     let time = yy + e.a + mm + e.a + dd + e.b + hh + e.c + mf + e.c + ss
     return time
     return time
 }
 }
-export default { getTodoBase, getDoneBase, getInitiateBase, updateBase, getNowdata };
+export default { getTodoBase, getDoneBase, getInitiateBase, updateBase, getNowdata, queryReadBase,queryReadDoneBase };

Datei-Diff unterdrückt, da er zu groß ist
+ 1557 - 0
src/pages/main/provincialWorkOrder/provincialWorkOrder.vue


Datei-Diff unterdrückt, da er zu groß ist
+ 1325 - 0
src/pages/main/provincialWorkOrder/provincialWorkOrderArea.vue


+ 17 - 3
src/router/index.js

@@ -2108,7 +2108,7 @@ const routes = [{
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcel/index'], resolve)
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcel/index'], resolve)
         },
         },
         {
         {
-            
+
             meta: {
             meta: {
                 name: '协同编辑',
                 name: '协同编辑',
                 keepAlive: false
                 keepAlive: false
@@ -2162,19 +2162,33 @@ const routes = [{
             component: resolve => require(['../pages/main/processruns/processruns.vue'], resolve),
             component: resolve => require(['../pages/main/processruns/processruns.vue'], resolve),
             meta: { title: '运行流程' }
             meta: { title: '运行流程' }
         }
         }
-        ,{
+        , {
             meta: { name: '风险防控管理', keepAlive: false },
             meta: { name: '风险防控管理', keepAlive: false },
             path: '/riskMaterials',
             path: '/riskMaterials',
             name: 'riskMaterials',
             name: 'riskMaterials',
             component: (resolve) => require( /* webpackChunkName: "system" */
             component: (resolve) => require( /* webpackChunkName: "system" */
                 ['../pages/main/leader/risk/riskMaterials.vue'], resolve)
                 ['../pages/main/leader/risk/riskMaterials.vue'], resolve)
-        },{
+        }, {
             meta: { name: '风险防控管理', keepAlive: false },
             meta: { name: '风险防控管理', keepAlive: false },
             path: '/riskManagement',
             path: '/riskManagement',
             name: 'riskManagement',
             name: 'riskManagement',
             component: (resolve) => require( /* webpackChunkName: "system" */
             component: (resolve) => require( /* webpackChunkName: "system" */
                 ['../pages/main/leader/risk/riskManagement.vue'], resolve)
                 ['../pages/main/leader/risk/riskManagement.vue'], resolve)
         },
         },
+        {
+            path: '/provincialWorkOrder',
+            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: '地市-通用工单' }
+        }
+
+
     ]
     ]
 },
 },
 {
 {

+ 2 - 2
vue.config.js

@@ -134,9 +134,9 @@ module.exports = {
                 // target: 'http://127.0.0.1:9600/',
                 // target: 'http://127.0.0.1:9600/',
                 // target: 'http://192.168.0.156:9600/',
                 // target: 'http://192.168.0.156:9600/',
                 // target: 'http://192.168.2.44:9600/',
                 // target: 'http://192.168.2.44:9600/',
-                // target: 'http://192.168.2.124:9600/',
+                target: 'http://192.168.2.92:9600',
                 // target: "http://124.223.66.248:9600",
                 // target: "http://124.223.66.248:9600",
-                target: "http://43.138.50.94:9600",
+                // target: "http://43.138.50.94:9600",
                 changeOrigin: true,
                 changeOrigin: true,
             },
             },
         },
         },