Bläddra i källkod

线上渠道业务需求

bianww 2 år sedan
förälder
incheckning
3a05e2827e

+ 311 - 178
src/pages/main/demandDevelop/index.vue

@@ -258,60 +258,73 @@
               >导入</el-button
             ></el-upload
           >
-          <div
-            style="margin: 20px 0; padding: 0 20px"
-            v-if="vision == '信息补填'"
-          >
-            <el-table
-              class="com-table"
-              ref="multipleTable"
-              :data="infodatas"
-              tooltip-effect="dark"
-              size="small"
-              border
-              style="width: 100%"
+            <div
+                style="margin: 20px 0; padding: 0 20px"
+                v-if="vision == '信息补填'"
             >
-              <el-table-column prop="infoName" label="需求承接支撑方">
-                <template slot-scope="scope">
-                  <el-input
-                    v-model="scope.row.factoryName"
-                    :disabled="tableSatus === '4'"
-                  ></el-input>
-                </template>
-              </el-table-column>
-              <el-table-column prop="infoName" label="涉及发生工作量">
-                <template slot-scope="scope">
-                  <el-input
-                    v-model="scope.row.workLoad"
-                    :disabled="tableSatus === '4'"
-                  ></el-input>
-                </template>
-              </el-table-column>
-              <el-table-column
-                label="操作"
-                width="120px"
-                align="center"
-                v-if="titname == '审批'"
-              >
-                <template slot-scope="scope">
-                  <el-button
-                    size="mini"
-                    type="primary"
-                    :disabled="tableSatus === '4'"
-                    @click="choline(1, scope)"
-                    >添加</el-button
-                  >
-                  <el-button
-                    size="mini"
-                    type="danger"
-                    :disabled="tableSatus === '4'"
-                    @click="choline(2, scope)"
-                    >删除</el-button
-                  >
-                </template>
-              </el-table-column>
-            </el-table>
-          </div>
+                <el-table
+                    class="com-table"
+                    ref="multipleTable"
+                    :data="infodatas"
+                    tooltip-effect="dark"
+                    size="small"
+                    border
+                    style="width: 100%"
+                >
+                    <el-table-column prop="factoryName" label="需求承接支撑方">
+                        <template slot-scope="scope">
+                            <el-form :ref="'supportFactoryName'+scope.$index" :model="scope.row" :rules="supportRules">
+                                <el-form-item prop="factoryName">
+                                    <el-select v-model="scope.row.factoryName" filterable placeholder="请选择厂商" :disabled="tableSatus === '4'" style="width: 100%">
+                                        <el-option
+                                            v-for="item in supportList"
+                                            :key="item.id"
+                                            :label="item.factoryName"
+                                            :value="item.factoryName">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-form>
+                        </template>
+
+                    </el-table-column>
+                    <el-table-column prop="workLoad" label="涉及发生工作量">
+                        <template slot-scope="scope">
+                            <el-form :ref="'supportWorkLoad'+scope.$index" :model="scope.row" :rules="supportRules">
+                                <el-form-item prop="workLoad">
+                                    <el-input
+                                        v-model="scope.row.workLoad"
+                                        :disabled="tableSatus === '4'"
+                                    ></el-input>
+                                </el-form-item>
+                            </el-form>
+                        </template>
+                    </el-table-column>
+                    <el-table-column
+                        label="操作"
+                        width="120px"
+                        align="center"
+                        v-if="titname == '审批'"
+                    >
+                        <template slot-scope="scope">
+                            <el-button
+                                size="mini"
+                                type="primary"
+                                :disabled="tableSatus === '4'"
+                                @click="choline(1, scope)"
+                            >添加</el-button
+                            >
+                            <el-button
+                                size="mini"
+                                type="danger"
+                                :disabled="tableSatus === '4'"
+                                @click="choline(2, scope)"
+                            >删除</el-button
+                            >
+                        </template>
+                    </el-table-column>
+                </el-table>
+            </div>
           <el-form-item class="info-line online" v-if="visionsts == '2'">
             <span>审批说明</span>
             <el-input
@@ -323,30 +336,41 @@
             >
             </el-input>
           </el-form-item>
-
-          <div
-            style="margin: 20px 0px; padding: 0 20px"
-            v-if="titname !== '添加'"
-          >
-            <el-table
-              class="com-table"
-              :data="rovaList"
-              tooltip-effect="dark"
-              size="small"
-              border
-              style="width: 100%"
+          <el-form-item class="info-line online" prop="opinion" v-if="visionsts === '2'">
+              <span>审批意见</span>
+              <el-select v-model="infolist.opinion" placeholder="请选择审批意见" :disabled="titname === '查看'">
+                  <el-option label="同意" value="1"></el-option>
+                  <el-option label="不同意" value="2"></el-option>
+              </el-select>
+          </el-form-item>
+            <div
+                style="margin: 20px 0px; padding: 0 20px"
+                v-if="titname !== '添加'"
             >
-              <el-table-column prop="logNo" label="编号"> </el-table-column>
-              <el-table-column prop="stepName" label="环节"> </el-table-column>
-              <el-table-column prop="processName" label="处理人">
-              </el-table-column>
-              <el-table-column prop="processWorkNo" label="处理人工号">
-              </el-table-column>
-              <el-table-column prop="updateTimeStr" label="处理时间">
-              </el-table-column>
-              <el-table-column prop="remark" label="备注"> </el-table-column>
-            </el-table>
-          </div>
+                <el-table
+                    class="com-table"
+                    :data="rovaList"
+                    tooltip-effect="dark"
+                    size="small"
+                    border
+                    style="width: 100%"
+                >
+                    <el-table-column prop="logNo" label="编号"> </el-table-column>
+                    <el-table-column prop="stepName" label="环节"> </el-table-column>
+                    <el-table-column prop="processName" label="处理人">
+                    </el-table-column>
+                    <el-table-column prop="processWorkNo" label="处理人工号">
+                    </el-table-column>
+                    <el-table-column prop="updateTimeStr" label="处理时间">
+                    </el-table-column>
+                    <el-table-column prop="remark" label="备注"> </el-table-column>
+                    <el-table-column prop="opinion" label="审批意见">
+                        <template slot-scope="scope">
+                            {{ scope.row.opinion === "1" ? '同意' : (scope.row.opinion === "2" ? '不同意' : '') }}
+                        </template>
+                    </el-table-column>
+                </el-table>
+            </div>
         </el-form>
 
         <div slot="footer" class="info-footer">
@@ -354,8 +378,8 @@
             <el-button type="primary" @click="handleApprove('送部门人员审核')"
               >送部门人员审核</el-button
             >
-            <el-button type="primary" @click="handleApprove('送领导审核')"
-              >送领导审核</el-button
+            <el-button type="primary" @click="handleApprove('送科室领导审核')"
+              >送科室领导审核</el-button
             >
             <el-button @click="handleApprove('取消')">取消</el-button>
           </div>
@@ -472,6 +496,13 @@ export default {
     deptTreeOnly,
   },
   data() {
+      const validatorWorkLoad = (rule, value, callback) => {
+          if (/^[0-9]+(\.[0-9]{1,1})?$/.test(value)){
+              callback()
+          }  else {
+              callback(new Error('只能输入一位小数数字'))
+          }
+      }
     return {
       rules: {
         demandName: [
@@ -481,6 +512,33 @@ export default {
             message: "不能为空",
           },
         ],
+        opinion: [
+            {
+                required: true,
+                trigger: "blur",
+                message: "不能为空",
+            },
+        ],
+      },
+      supportRules: {
+          factoryName: [
+          {
+            required: true,
+            trigger: "change",
+            message: "不能为空",
+          },
+        ],
+          workLoad: [
+            {
+                required: true,
+                trigger: "blur",
+                message: "不能为空",
+            },
+            {
+                trigger: "change",
+                validator:validatorWorkLoad
+            }
+        ],
       },
       // 操作名称
       operateName: "",
@@ -529,7 +587,7 @@ export default {
         },
       ],
       // 用来控制多选里的单选
-      only: false,
+      only: true,
       // 信息回显
       infolist: {},
       // 用户信息
@@ -573,7 +631,7 @@ export default {
           name: "否",
         },
       ],
-      infodatas: [],
+      infodatas: [{factoryName:'',workLoad:''}],
       busiTime: [],
       urgDegreeopt: [
         {
@@ -605,6 +663,7 @@ export default {
         fileList: [],
       },
       tempSave: false,
+      supportList:[]
     };
   },
   watch: {
@@ -675,7 +734,7 @@ export default {
             case "送部门人员审核":
               this.operateName = "送部门人员审核";
               this.checkexa = true;
-              this.type = "0";
+              this.type = "1";
               console.log("送部门人员审核");
               break;
             // case "送领导审核":
@@ -685,13 +744,21 @@ export default {
             //   console.log("送领导审核");
             //   break;
             //领导审批支持整个OA组织架构
-            case "送领导审核":
-              this.operateName = "送领导审核";
-              this.type = "1";
+            case "送科室领导审核":
+              this.operateName = "送科室领导审核";
+              this.type = "2";
               // this.checkLaeder = true;
               this.checkexa = true;
               console.log("送领导审核");
               break;
+            case "送部门领导审核":
+            case "送公司领导审核":
+              this.operateName = type;
+              this.type = "3";
+              // this.checkLaeder = true;
+              this.checkexa = true;
+              console.log(type);
+              break;
             case "送起草人编号发送":
               this.operateName = "送起草人编号";
               this.handleSendNo();
@@ -700,39 +767,45 @@ export default {
               this.operateName = "确认编号";
               this.handleComfirmNo();
               break;
+            case "提交电商接口人审批":
+            case "提交省公司电商接口人审批":
+              this.operateName = type;
+              this.deliverReadOffice();
+              break;
             case "打回":
               this.operateName = "打回";
               this.handleBackRecord();
               break;
-            case "确认需求":
+            case "转交渠道经理待办":
               this.checkexa = true;
               this.type = "0";
-              this.operateName = "确认需求";
+              this.operateName = "转交渠道经理待办";
               break;
             case "送项目经理会签":
               this.checkexa = true;
               this.type = "0";
+              this.only = false;
               this.operateName = "送项目经理会签";
               break;
-            case "送电商接口人阅办":
-              this.operateName = "送电商接口人阅办";
+            case "送电商接口人":
+              this.operateName = type;
               this.handleDeliverReadOfficeOrOtherDo("1");
               break;
             case "送其他人办理":
               this.checkexa = true;
-              this.only = true;
               this.operateName = "送其他人办理";
               break;
             case "确认上线":
               this.operateName = "确认上线";
               this.handleConfirmOnline("1");
               break;
-            case "已办结":
+/*            case "已办结":
               this.operateName = "已办结";
               this.handleConfirmOnline("2");
-              break;
+              break;*/
             case "保存":
               this.operateName = "保存";
+              console.log(this.infodatas)
               this.handleConfirmOnline("3");
               break;
           }
@@ -740,22 +813,32 @@ export default {
       });
     },
     // 确认上线/已办结
-    handleConfirmOnline(type) {
+    async handleConfirmOnline(type) {
+      // 校验需求支撑方和工作量 是否合规
+        for (let i = 0; i < this.infodatas.length; i++) {
+            let supportFlag = await this.$refs['supportFactoryName' + i].validate();
+            if (supportFlag){
+                let workLoadFlag = await this.$refs['supportWorkLoad' + i].validate();
+                if (!workLoadFlag){
+                    return ;
+                }
+            }else {
+                return ;
+            }
+        }
       let flag = 1;
       const factoryName = [];
       const workLoad = [];
-      if (type !== "1") {
-        this.infodatas.forEach((el) => {
+      this.infodatas.forEach((el) => {
           // 判断条件
           if (el.factoryName && el.workLoad) {
-            flag = flag * 1;
-            factoryName.push(el.factoryName);
-            workLoad.push(el.workLoad);
+              flag = flag * 1;
+              factoryName.push(el.factoryName);
+              workLoad.push(el.workLoad);
           } else {
-            flag = flag * 0;
+              flag = flag * 0;
           }
-        });
-      }
+      });
       if (flag) {
         let reqdata = {
           operateName: this.operateName,
@@ -764,6 +847,7 @@ export default {
           support: factoryName,
           workload: workLoad,
           woNo: this.woNo + "",
+          opinion: this.infolist.opinion,
         };
         this.$http({
           url: "/market/mkOnlineChannel/confirmOnline",
@@ -772,14 +856,14 @@ export default {
             "Content-Type": "application/json",
           },
           data: reqdata,
-        }).then(({ data: { desc } }) => {
-          console.log(desc);
-          if (desc === "操作成功") {
-            this.$message.success("操作成功");
-            this.dialogStatus = false;
-            this.handleInit();
-            this.closedia();
-          } else {
+        }).then(({ data }) => {
+            console.log(data)
+            if (data && data.result === 0) {
+                this.$message.success(data.desc);
+                this.dialogStatus = false;
+                this.handleInit();
+                this.closedia();
+            } else {
             this.$message.error("操作失败");
           }
         });
@@ -802,6 +886,7 @@ export default {
         type,
         reviewOpinion: this.remark,
         woId: this.woNo + "",
+        opinion: this.infolist.opinion,
       };
       if (type === "2") {
         reqdata = {
@@ -818,15 +903,15 @@ export default {
           "Content-Type": "application/json",
         },
         data: reqdata,
-      }).then(({ data: { desc } }) => {
-        console.log(desc);
-        if (desc === "操作成功") {
-          this.$message.success("操作成功");
-          this.checkexa = false;
-          this.dialogStatus = false;
-          this.handleInit();
-          this.closedia();
-        } else {
+      }).then(({ data }) => {
+          console.log(data)
+          if (data && data.result === 0) {
+              this.$message.success(data.desc);
+              this.checkexa = false;
+              this.dialogStatus = false;
+              this.handleInit();
+              this.closedia();
+          } else {
           this.$message.error("操作失败");
         }
       });
@@ -846,6 +931,7 @@ export default {
         receiveName: receiveName.join(","),
         reviewOpinion: this.remark,
         woNo: this.woNo + "",
+        opinion: this.infolist.opinion,
       };
       console.log(reqdata);
 
@@ -856,20 +942,20 @@ export default {
           "Content-Type": "application/json",
         },
         data: reqdata,
-      }).then(({ data: { desc } }) => {
-        console.log(desc);
-        if (desc === "操作成功") {
-          this.$message.success("操作成功");
-          this.checkexa = false;
-          this.dialogStatus = false;
-          this.handleInit();
-          this.closedia();
-        } else {
-          this.$message.error("操作失败");
-        }
+      }).then(({ data }) => {
+          console.log(data)
+          if (data && data.result === 0) {
+              this.$message.success(data.desc);
+              this.checkexa = false;
+              this.dialogStatus = false;
+              this.handleInit();
+              this.closedia();
+          } else {
+              this.$message.error("操作失败");
+            }
       });
     },
-    // 确认需求
+    // 转交渠道经理待办
     handleNeedyComfirm() {
       let receiveId = [];
       let receiveName = [];
@@ -884,6 +970,7 @@ export default {
         receiveName: receiveName.join(","),
         reviewOpinion: this.remark,
         woNo: this.woNo + "",
+        opinion: this.infolist.opinion,
       };
       console.log(reqdata);
 
@@ -894,17 +981,17 @@ export default {
           "Content-Type": "application/json",
         },
         data: reqdata,
-      }).then(({ data: { desc } }) => {
-        console.log(desc);
-        if (desc === "操作成功") {
-          this.$message.success("操作成功");
-          this.checkexa = false;
-          this.dialogStatus = false;
-          this.handleInit();
-          this.closedia();
-        } else {
-          this.$message.error("操作失败");
-        }
+      }).then(({ data }) => {
+          console.log(data)
+          if (data && data.result === 0) {
+              this.$message.success(data.desc);
+              this.checkexa = false;
+              this.dialogStatus = false;
+              this.handleInit();
+              this.closedia();
+          } else {
+              this.$message.error("操作失败");
+            }
       });
     },
     // 打回方法
@@ -920,17 +1007,18 @@ export default {
           remark: [this.operateName, this.remark]
             .filter((el) => el !== "")
             .join(","),
+          opinion: this.infolist.opinion,
         },
-      }).then(({ data: { desc } }) => {
-        console.log(desc);
-        if (desc === "操作成功") {
-          this.$message.success("操作成功");
-          this.dialogStatus = false;
-          this.handleInit();
-          this.closedia();
-        } else {
-          this.$message.error("操作失败");
-        }
+      }).then(({ data }) => {
+          console.log(data)
+          if (data && data.result === 0) {
+              this.$message.success(data.desc);
+              this.dialogStatus = false;
+              this.handleInit();
+              this.closedia();
+          } else {
+            this.$message.error("操作失败");
+          }
       });
     },
     // 表单提交
@@ -998,7 +1086,10 @@ export default {
             })
           : [this.leader],
         type: this.type,
-        // fileList: this.file,
+        opinion: this.infolist.opinion ? this.infolist.opinion : '',
+          // fileList: this.file,
+        // 添加操作步骤
+        operateName: this.operateName
       };
       // 处理其他参数
       for (let key in params) {
@@ -1012,7 +1103,7 @@ export default {
           }
         });
       }
-      if (this.operateName === "确认需求") {
+      if (this.operateName === "转交渠道经理待办") {
         this.handleNeedyComfirm();
         return;
       }
@@ -1034,7 +1125,7 @@ export default {
           },
           data: formData,
         }).then(({ data }) => {
-          if (data && data.desc === "操作成功") {
+          if (data && data.result === 0) {
             this.$message({
               type: "success",
               message: data.desc,
@@ -1058,16 +1149,17 @@ export default {
           remark: [this.operateName, this.remark]
             .filter((el) => el !== "")
             .join(","),
+          opinion: this.infolist.opinion
         },
-      }).then(({ data: { desc } }) => {
-        console.log(desc);
-        if (desc === "操作成功") {
-          this.$message.success("操作成功");
-          this.handleInit();
-          this.closedia();
-        } else {
-          this.$message.error("操作失败");
-        }
+      }).then(({ data }) => {
+          console.log(data)
+          if (data && data.result === 0) {
+              this.$message.success(data.desc);
+              this.handleInit();
+              this.closedia();
+          } else {
+              this.$message.error("操作失败");
+            }
       });
     },
     // 确认编号
@@ -1083,16 +1175,43 @@ export default {
           remark: [this.operateName, this.remark]
             .filter((el) => el !== "")
             .join(","),
+          opinion: this.infolist.opinion,
         },
-      }).then(({ data: { desc } }) => {
-        console.log(desc);
-        if (desc === "操作成功") {
-          this.$message.success("操作成功");
-          this.handleInit();
-          this.closedia();
-        } else {
-          this.$message.error("操作失败");
-        }
+      }).then(({ data }) => {
+          console.log(data)
+          if (data && data.result === 0) {
+              this.$message.success(data.desc);
+              this.handleInit();
+              this.closedia();
+          } else {
+            this.$message.error("操作失败");
+          }
+      });
+    },
+    // 确认编号后送电商接口人
+    deliverReadOffice() {
+      this.$http({
+        url: "/market/mkOnlineChannel/deliverReadOffice",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {
+          woNo: this.woNo + "",
+          remark: [this.operateName, this.remark]
+            .filter((el) => el !== "")
+            .join(","),
+          opinion: this.infolist.opinion,
+        },
+      }).then(({ data }) => {
+          console.log(data)
+          if (data && data.result === 0) {
+              this.$message.success(data.desc);
+              this.handleInit();
+              this.closedia();
+            } else {
+              this.$message.error("操作失败");
+            }
       });
     },
     // 初始化列表接口
@@ -1171,6 +1290,7 @@ export default {
             carryChannelCode: mkOnlineChannel.carryChannelCode
               ? mkOnlineChannel.carryChannelCode.split(",")
               : [],
+            opinion: ''
           };
           this.busiTime = [
             mkOnlineChannel.busiStartTime,
@@ -1203,8 +1323,9 @@ export default {
               this.buttonList = [];
               this.disableStatus = true;
               this.visionsts = "";
-              if (this.step === "7") {
+              if (this.step === "9") {
                 this.vision = "信息补填";
+                this.getSupportList()
                 // 查看也不能操作数据
                 this.tableSatus = "4";
                 this.visionsts = "";
@@ -1230,14 +1351,12 @@ export default {
               }
               this.disableStatus = true;
               this.dialogStatus = true;
-              if (this.step === "7") {
+              if (this.step === "9") {
                 // 这个是判断最后一步是否可以导入数据
                 if (this.buttonList[0] === "确认上线") {
-                  this.vision = "";
-                  this.visionsts = "2";
-                } else {
                   this.vision = "信息补填";
                   this.visionsts = "";
+                  this.getSupportList()
                 }
                 this.infodatas = mkOnlineChannel.workloadAndsupport.length
                   ? mkOnlineChannel.workloadAndsupport.map((el) => ({
@@ -1259,6 +1378,20 @@ export default {
         }
       );
     },
+    // 获取所有需求承接支撑方
+    getSupportList(){
+        this.$http({
+            url: "/market/cChannelContract/queryList",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json",
+
+            },
+            data: {},
+        }).then((res) => {
+            this.supportList = res.data;
+        });
+    },
 
     // 老方法
     temp() {
@@ -1306,7 +1439,7 @@ export default {
     },
     choline(v, n) {
       if (v == 1) {
-        this.infodatas.push({});
+        this.infodatas.push({factoryName:'',workLoad:''});
       } else {
         this.infodatas.splice(n.$index, 1);
       }
@@ -1334,7 +1467,7 @@ export default {
       // 审核人
       this.checkexa = false;
       // 审核人单选是否开启
-      this.only = false;
+      this.only = true;
     },
     //获取列表
     getList(v, n) {

+ 3 - 3
src/pages/main/performance/components/deptTreeOnly.vue

@@ -118,7 +118,7 @@ export default {
         }
       }
     },
-    handleCheckChange() {
+    handleCheckChange(node) {
       console.log(this.only, "only");
       const nodeList = this.$refs.tree.store.getCheckedNodes();
       if (this.only) {
@@ -128,10 +128,10 @@ export default {
           this.$refs.tree.setCheckedKeys([]);
           this.$emit("treeCheck", nodeList);
         } else {
-          let obj = { ...nodeList[0] };
+          let obj = nodeList.filter(item => item.o !== node.data.o)
           this.$refs.tree.setCheckedKeys([]);
           this.$nextTick(() => {
-            this.$refs.tree.setChecked(obj, true);
+            this.$refs.tree.setChecked(obj[0], true);
           });
           this.$message.error("这里只能选择一个审批人");
         }