Просмотр исходного кода

Merge branch 'dev_info' into 'master'

Dev info

See merge request spfm-group/spfm-market-front!32
韩兵 3 лет назад
Родитель
Сommit
d38f68a4b9

+ 40 - 27
src/pages/main/demandDevelop/index.vue

@@ -90,18 +90,14 @@
               <span>需求名称</span>
               <el-input
                 v-model="infolist.demandName"
-                placeholder="需求名称"
+                placeholder=""
                 :disabled="disableStatus"
               >
               </el-input>
             </el-form-item>
             <el-form-item>
               <span>需求编号</span>
-              <el-input
-                v-model="infolist.demandNo"
-                placeholder="需求编号"
-                disabled
-              >
+              <el-input v-model="infolist.demandNo" placeholder="" disabled>
               </el-input>
             </el-form-item>
             <!-- <el-form-item prop="terminal">
@@ -117,7 +113,7 @@
               <el-select
                 clearable
                 v-model="infolist.urgDegree"
-                placeholder="紧急程度"
+                placeholder=""
                 :disabled="disableStatus"
               >
                 <el-option
@@ -133,7 +129,7 @@
               <span>业务主题</span>
               <el-input
                 v-model="infolist.busiSubject"
-                placeholder="业务主题"
+                placeholder=""
                 :disabled="disableStatus"
               >
               </el-input>
@@ -143,7 +139,7 @@
               <el-select
                 clearable
                 v-model="infolist.demandTypeCode"
-                placeholder="需求类别"
+                placeholder=""
                 :disabled="disableStatus"
               >
                 <el-option
@@ -162,7 +158,7 @@
                 clearable
                 multiple
                 v-model="infolist.carryChannelCode"
-                placeholder="承载渠道"
+                placeholder=""
                 :disabled="disableStatus"
               >
                 <el-option
@@ -180,7 +176,7 @@
                 :disabled="disableStatus"
                 v-model="busiTime"
                 type="daterange"
-                placeholder="加载周期"
+                placeholder=""
                 style="display: inline-flex; width: calc(100% - 120px)"
               >
               </el-date-picker>
@@ -190,7 +186,7 @@
             <span>需求背景</span>
             <el-input
               v-model="infolist.demandBackground"
-              placeholder="需求背景"
+              placeholder=""
               type="textarea"
               :autosize="{ minRows: 3, maxRows: 10 }"
               :disabled="disableStatus"
@@ -201,7 +197,7 @@
             <span>需求描述</span>
             <el-input
               v-model="infolist.demandDesc"
-              placeholder="需求描述"
+              placeholder=""
               type="textarea"
               :autosize="{ minRows: 3, maxRows: 10 }"
               :disabled="disableStatus"
@@ -312,7 +308,7 @@
             <span>审批说明</span>
             <el-input
               v-model="remark"
-              placeholder="审批说明"
+              placeholder=""
               type="textarea"
               :rows="3"
               :disabled="titname == '查看'"
@@ -732,19 +728,22 @@ export default {
       let flag = 1;
       const factoryName = [];
       const workLoad = [];
-      this.infodatas.forEach((el) => {
-        // 判断条件
-        if (el.factoryName && el.workLoad) {
-          flag = flag * 1;
-          factoryName.push(el.factoryName);
-          workLoad.push(el.workLoad);
-        } else {
-          flag = flag * 0;
-        }
-      });
+      if (type !== "1") {
+        this.infodatas.forEach((el) => {
+          // 判断条件
+          if (el.factoryName && el.workLoad) {
+            flag = flag * 1;
+            factoryName.push(el.factoryName);
+            workLoad.push(el.workLoad);
+          } else {
+            flag = flag * 0;
+          }
+        });
+      }
       if (flag) {
         let reqdata = {
           operateName: this.operateName,
+          reviewOpinion:this.remark,
           type,
           support: factoryName,
           workload: workLoad,
@@ -1118,9 +1117,16 @@ export default {
             body: { button, mkOnlineChannel },
           },
         }) => {
+          for (const i in mkOnlineChannel) {
+            if (mkOnlineChannel[i] === "undefined") {
+              mkOnlineChannel[i] = "";
+            }
+          }
           this.infolist = {
             ...mkOnlineChannel,
-            carryChannelCode: mkOnlineChannel.carryChannelCode.split(","),
+            carryChannelCode: mkOnlineChannel.carryChannelCode
+              ? mkOnlineChannel.carryChannelCode.split(",")
+              : [],
           };
           this.busiTime = [
             mkOnlineChannel.busiStartTime,
@@ -1181,8 +1187,14 @@ export default {
               this.disableStatus = true;
               this.dialogStatus = true;
               if (this.step === "7") {
-                this.vision = "信息补填";
-                this.visionsts = "";
+                // 这个是判断最后一步是否可以导入数据
+                if (this.buttonList[0] === "确认上线") {
+                  this.vision = "";
+                  this.visionsts = "2";
+                } else {
+                  this.vision = "信息补填";
+                  this.visionsts = "";
+                }
                 this.infodatas = mkOnlineChannel.workloadAndsupport.length
                   ? mkOnlineChannel.workloadAndsupport.map((el) => ({
                       factoryName: el.support,
@@ -1195,6 +1207,7 @@ export default {
                       },
                     ];
               } else {
+                this.vision = "";
                 this.visionsts = "2";
               }
             }

+ 234 - 43
src/pages/main/performance/components/sheet.vue

@@ -1,11 +1,10 @@
 <!--
  * @Author       : yuanrunwei
  * @Date         : 2021-12-04 14:23:58
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2022-01-23 19:41:44
+ * @LastEditors: daiqisheng
+ * @LastEditTime: 2022-02-15 15:59:58
  * @FilePath     : \spfm-market-front\src\pages\main\performance\components\sheet.vue
 -->
-
 <template>
   <div class="sheet-container">
     <div class="flex-justify-align-end margin-bottom-20">
@@ -63,7 +62,10 @@
       @cancel="handleVisible"
     >
       <el-form ref="form" :model="form" label-width="80px">
-        <el-radio-group v-model="form.permission_type">
+        <el-radio-group
+          v-model="form.permission_type"
+          :disabled="type !== 'edit'"
+        >
           <el-form-item>
             <el-radio :label="0"><span>无特殊权限</span></el-radio>
             <div>
@@ -72,6 +74,7 @@
                 v-model="form.person"
                 multiple
                 placeholder="请选择负责人"
+                :disabled="type !== 'edit'"
               >
                 <el-option
                   v-for="({ label, value }, index) in charge_list"
@@ -101,6 +104,7 @@
                   placeholder="请选择负责人"
                   v-model="item.person"
                   filterable
+                  :disabled="type !== 'edit'"
                 >
                   <el-option
                     v-for="({ label, value }, index) in charge_list"
@@ -111,23 +115,43 @@
                 </el-select>
                 <div class="form-select">
                   <span class="form-content">可编辑行:从</span>
-                  <el-input v-model="item.row_start" />
+                  <el-input
+                    v-model="item.row_start"
+                    @input="(params) => handleInput(index, 'row_start', params)"
+                    :disabled="type !== 'edit'"
+                  />
                   <span class="form-content">到</span>
-                  <el-input v-model="item.row_end" />
+                  <el-input
+                    v-model="item.row_end"
+                    @input="(params) => handleInput(index, 'row_end', params)"
+                    :disabled="type !== 'edit'"
+                  />
                 </div>
                 <div class="form-select">
                   <span class="form-content">可编辑列:从</span>
-                  <el-input v-model="item.col_start" />
+                  <el-input
+                    :disabled="type !== 'edit'"
+                    v-model="item.col_start"
+                  />
+                  <!-- @input="(params) => handleInput(index, 'col_start', params)" -->
                   <span class="form-content">到</span>
-                  <el-input v-model="item.col_end" />
+                  <el-input
+                    :disabled="type !== 'edit'"
+                    v-model="item.col_end"
+                  />
                 </div>
               </div>
             </el-form-item>
             <div>
-              <el-button @click.prevent="handleCharge('add')">添加</el-button>
+              <el-button
+                @click.prevent="handleCharge('add')"
+                :disabled="type !== 'edit'"
+                >添加</el-button
+              >
               <el-button
                 v-if="form.charge.length - 1"
                 @click.prevent="handleCharge('delete')"
+                :disabled="type !== 'edit'"
                 >删除</el-button
               >
             </div>
@@ -140,7 +164,7 @@
       title="提交"
       :visible="manager_approve"
       :modal="false"
-      @cancel="handleApprove"
+      @cancel="handleApprove(0)"
     >
       <el-form :model="approveForm" label-width="120px">
         <el-form-item
@@ -227,7 +251,6 @@ export default {
         ],
         array: [],
         type: null,
-
         permission_type: null,
         col_start: "",
         col_end: "",
@@ -252,8 +275,10 @@ export default {
           },
         ],
       },
+
       // 可提交标志
       addFlag: "0",
+      rowList: [],
       isDisable: true,
       issued_id: null,
       template_id: null,
@@ -287,11 +312,14 @@ export default {
     //     console.log(e,'e');
     // },
     handleAllow({ row, column }) {
-      return (
-        (!this.form.permission_type && this.type === "edit") ||
-        (this.row_list.includes(row) && this.column_list.includes(column)) ||
-        (this.status === "2" && this.type === "edit")
-      );
+      let public_permisson =
+        (!this.form.permission_type || this.status === "2") &&
+        this.type === "edit";
+      let editable =
+        this.row_list.includes(row) && this.column_list.includes(column);
+      // let totalBoolean = (public_permisson || editable) && this.id;
+      let totalBoolean = public_permisson || editable;
+      return totalBoolean;
     },
     async handleQuery() {
       let url = "";
@@ -337,7 +365,7 @@ export default {
       this.template_id = templateId;
       this.issued_id = issuedId;
       this.addFlag = addFlag;
-      console.log(addFlag, "addFlag");
+      console.log(JSON.parse(templateContent), "123123");
       if (list && list.length) {
         const { type } = list[0];
         if (type === "1") {
@@ -384,12 +412,22 @@ export default {
                 .split(",")
                 .map((element) => JSON.parse(element) - 1)
             : [];
-        this.column_list =
-          this.type === "edit" && list[0].allowEditingColumns
-            ? list[0].allowEditingColumns
-                .split(",")
-                .map((element) => JSON.parse(element) - 1)
-            : [];
+        if (this.type === "edit" && list[0].allowEditingColumns) {
+          // this.column_list = list[0].allowEditingColumns
+          //   .split(",")
+          //   .map((element) => JSON.parse(element) - 1);
+          this.column_list =
+            list[0].allowEditingColumnsFlag === "1"
+              ? list[0].allowEditingColumnsShuzi
+                  .split(",")
+                  .map((element) => JSON.parse(element) - 1)
+              : list[0].allowEditingColumns
+                  .split(",")
+                  .map((element) => JSON.parse(element) - 1);
+        } else {
+          this.column_list = [];
+        }
+        // this.formateNumber(list[0].allowEditingColumns);
       }
       this.handleCreate({
         json: templateContent ? JSON.parse(templateContent) : {},
@@ -397,6 +435,10 @@ export default {
         type: "json",
       });
     },
+    // formateNumber(String) {
+    //   console.log(String, "daa");
+    //   if(String.split(','))
+    // },
     handleForbid() {
       // const object = {};
       const { permission_type } = this.form;
@@ -441,6 +483,9 @@ export default {
               that.$message.error("您没有编辑权限");
             }
           },
+          // cellUpdated: function (row, column) {
+          //   that.rowList.push(row);
+          // },
           cellUpdateBefore: function (row, column) {
             if (!that.handleAllow({ row, column })) {
               return false;
@@ -448,6 +493,7 @@ export default {
           },
           cellRenderAfter: function (cell, position) {
             const { r: row, c: column } = position;
+            console.log();
             if (cell) {
               if (!that.handleAllow({ row, column })) {
                 cell.bg = "#d5d5d5";
@@ -456,6 +502,14 @@ export default {
               }
             }
           },
+          updated: function ({ range }) {
+            const middle = range.map((el) => {
+              return that.paramsArr(el.row[0], el.row[1]);
+            });
+            let changedList = middle.join(",").split(",");
+            that.rowList.push(...changedList);
+            console.log(that.rowList,'that.rowList');
+          },
         },
       };
       switch (type) {
@@ -536,7 +590,9 @@ export default {
           })
         );
       }
-      await this.$http({
+      const {
+        data: { result, desc },
+      } = await this.$http({
         url: this.id
           ? "/market/CMKFileTemplateAuthority/CMKFileTemplateAuthorityUpdate"
           : "/market/CMKFileTemplateAuthority/CMKFileTemplateAuthorityAdd",
@@ -546,7 +602,12 @@ export default {
         },
         data: reqdata,
       });
-      this.$message.success("操作成功");
+      if (result) {
+        this.$message.error(desc);
+      } else {
+        this.$message.success(desc);
+      }
+      return result;
     },
     async handleSave(type) {
       let edit_url = "";
@@ -582,15 +643,64 @@ export default {
             status: type,
           },
         });
-        this.handleAddAuth({ id: body });
+        await this.handleAddAuth({ id: body });
         this.$emit("save");
       } else {
         // 职位
         let duty = JSON.parse(sessionStorage.userInfo).duty;
+        // let { permission_type, charge } = this.form;
+        this.rowList.shift();
+        let reqdata = {
+          rowIndex: [...new Set(this.rowList)]
+            .sort(function (a, b) {
+              return a - b;
+            })
+            .join(","),
+          rowContent: [...new Set(this.rowList)]
+            .sort(function (a, b) {
+              return a - b;
+            })
+            .map((el) => {
+              return data.data[el];
+            }),
+        };
+        console.log(reqdata, "reqdata");
+        // if (permission_type) {
+        //   // 特殊权限
+        //   reqdata = {
+        //     ...reqdata,
+        //     rowIndex: this.paramsArr(
+        //       charge[0].row_start - 1,
+        //       charge[0].row_end - 1
+        //     ),
+        // rowContent: this.paramsArr(
+        //   charge[0].row_start - 1,
+        //   charge[0].row_end - 1
+        // )
+        //   .split(",")
+        //   .map((el) => {
+        //     return data.data[el];
+        //   }),
+        //   };
+        // } else {
+        //   // 公共权限
+        //   const RowList = [];
+        //   const RowContent = [];
+        //   data.data.forEach((item, rowIndex) => {
+        //     if (this.confirmArrayData(item)) {
+        //       RowList.push(rowIndex);
+        //       RowContent.push(item);
+        //     }
+        //   });
+        //   reqdata = {
+        //     ...reqdata,
+        //     rowIndex: RowList.join(","),
+        //     rowContent: RowContent,
+        //   };
+        // }
         if (duty === "7") {
           this.manager_approve = true;
         } else {
-          // 员工提交
           if (type === "2") {
             // 暂存
             await this.$http({
@@ -609,8 +719,9 @@ export default {
             this.$emit("save");
             return;
           }
+          // 员工提交
           await this.$http({
-            url: edit_url, // 新增
+            url: edit_url, //提交
             method: "post",
             headers: {
               "Content-Type": "application/json",
@@ -620,25 +731,46 @@ export default {
               templateContent: JSON.stringify(data),
               templateName: workbook_name,
               issuedId: this.issued_id,
+              rowJson: JSON.stringify(reqdata),
             },
           });
           this.$emit("save");
         }
       }
     },
-    handleAuth() {
+    // 判断数组是否有值
+    confirmArrayData(data) {
+      if (data instanceof Array) {
+        let flag = 0;
+        if (data.length) {
+          data.forEach((el) => {
+            if (el instanceof Object) {
+              flag = flag + 1;
+            }
+          });
+          if (flag) {
+            return true;
+          } else {
+            return false;
+          }
+        } else {
+          return false;
+        }
+      } else {
+        return false;
+      }
+    },
+    async handleAuth() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
           if (this.handleForbid()) {
             this.$message.error("请完善可编辑信息");
             return false;
           }
-          this.handleVisible();
           if (this.id) {
             this.handleAddAuth({ id: this.id });
-          } else {
-            this.$message.success("设置成功");
           }
+          this.handleVisible();
         }
       });
     },
@@ -669,25 +801,83 @@ export default {
       }
     },
     handleVisible() {
-      console.log(this.form, "aada");
       this.visible = !this.visible;
     },
+    handleInput(index, name, value) {
+      let reg = /^[0-9]*$/;
+      if (!reg.test(value)) {
+        this.form.charge[index][name] = this.form.charge[index][name].substr(
+          0,
+          this.form.charge[index][name].length - 1
+        );
+        this.$message.error("该处只能填写数字");
+      }
+    },
     async handleApprove(type) {
-      if (this.approveForm.type) {
-        if (this.approveForm.type === "3" && !this.approveForm.comments) {
-          this.$message.error("请输入其他审批意见");
+      if (type) {
+        if (this.approveForm.type) {
+          if (this.approveForm.type === "3" && !this.approveForm.comments) {
+            this.$message.error("请输入其他审批意见");
+            return;
+          }
+        } else {
+          this.$message.error("请选择审批意见");
           return;
         }
-      } else {
-        this.$message.error("请选择审批意见");
-        return;
-      }
-      if (type) {
         const sheet_name = window.luckysheet.getSheet().name;
         const data = window.luckysheet.getSheet(sheet_name);
         const workbook_name = window.luckysheet.getWorkbookName();
+        // let { permission_type, charge } = this.form;
+        this.rowList.shift();
+        let reqdata = {
+          rowIndex: [...new Set(this.rowList)]
+            .sort(function (a, b) {
+              return a - b;
+            })
+            .join(","),
+          rowContent: [...new Set(this.rowList)]
+            .sort(function (a, b) {
+              return a - b;
+            })
+            .map((el) => {
+              return data.data[el];
+            }),
+        };
+        // if (permission_type) {
+        //   // 特殊权限
+        //   reqdata = {
+        //     ...reqdata,
+        //     rowIndex: this.paramsArr(
+        //       charge[0].row_start - 1,
+        //       charge[0].row_end - 1
+        //     ),
+        //     rowContent: this.paramsArr(
+        //       charge[0].row_start - 1,
+        //       charge[0].row_end - 1
+        //     )
+        //       .split(",")
+        //       .map((el) => {
+        //         return data.data[el];
+        //       }),
+        //   };
+        // } else {
+        //   // 公共权限
+        //   const RowList = [];
+        //   const RowContent = [];
+        //   data.data.forEach((item, rowIndex) => {
+        //     if (this.confirmArrayData(item)) {
+        //       RowList.push(rowIndex);
+        //       RowContent.push(item);
+        //     }
+        //   });
+        //   reqdata = {
+        //     ...reqdata,
+        //     rowIndex: RowList.join(","),
+        //     rowContent: RowContent,
+        //   };
+        // }
         await this.$http({
-          url: "/market/CMKIssued/CMKIssuedSubmit", // 新增
+          url: "/market/CMKIssued/CMKIssuedSubmit", // 提交
           method: "post",
           headers: {
             "Content-Type": "application/json",
@@ -697,6 +887,7 @@ export default {
             templateContent: JSON.stringify(data),
             templateName: workbook_name,
             issuedId: this.issued_id,
+            rowJson: JSON.stringify(reqdata),
           },
         });
         let params = {
@@ -730,7 +921,7 @@ export default {
             break;
         }
         await this.$http({
-          url: "/market/CMKIssued/CMKIssuedCheck", // 新增
+          url: "/market/CMKIssued/CMKIssuedCheck", // 审批
           method: "post",
           headers: {
             "Content-Type": "application/json",

+ 24 - 4
src/pages/main/performance/components/table.vue

@@ -2,7 +2,7 @@
  * @Author       : yuanrunwei
  * @Date         : 2021-11-01 18:02:58
  * @LastEditors: Please set LastEditors
- * @LastEditTime: 2022-01-23 16:54:13
+ * @LastEditTime: 2022-02-10 11:17:50
  * @FilePath     : /spfm-market-front/src/pages/main/performance/components/table.vue
 -->
 <template>
@@ -59,7 +59,7 @@
               v-for="(item, index) in scope.row[props].split(',')"
               :key="index"
               class="simple-table-click cursor-pointer"
-              @click="handleClick(props, { ...scope.row,index })"
+              @click="handleClick(props, { ...scope.row, index })"
             >
               {{ scope.row[props].split(",")[index] }}
             </span>
@@ -132,7 +132,7 @@
           class="padding-right-5"
         >
           <span v-if="handleFormat(visible, scope.row)">
-            <el-popconfirm
+            <!-- <el-popconfirm
               v-if="popconfirm"
               :title="`确定要${label}吗?`"
               @confirm="handleClick(props, scope.row)"
@@ -141,7 +141,14 @@
               <el-button slot="reference" type="text" size="small">{{
                 label
               }}</el-button>
-            </el-popconfirm>
+            </el-popconfirm> -->
+            <el-button
+              v-if="popconfirm"
+              type="text"
+              size="small"
+              @click="handleConfirm(label, props, scope.row)"
+              >{{ label }}</el-button
+            >
             <el-button
               v-else
               @click="handleClick(props, scope.row)"
@@ -202,6 +209,19 @@ export default {
       }
       return visible;
     },
+    handleConfirm(label, props, row) {
+      this.$confirm(`确定要${label}吗?`, "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "error",
+      })
+        .then(() => {
+          this.$emit(props, row);
+        })
+        .catch(() => {
+          console.log("error");
+        });
+    },
     handleClick(props, row) {
       this.$emit(props, row);
     },

+ 14 - 12
src/pages/main/performance/department.vue

@@ -690,19 +690,21 @@ export default {
       console.log(row, "row");
       this.edit_form = row;
       this.edit_visible = false;
-      if (row.receiverId && row.receiverId.split(",").length > 1) {
-        this.menager_visible = true;
+      this.id = row.id;
+      this.visible = true;
+      // if (row.receiverId && row.receiverId.split(",").length > 1) {
+      //   this.menager_visible = true;
 
-        this.receiverList = row.receiverName
-          ? row.receiverId.split(",").map((el, index) => ({
-              label: row.receiverName.split(",")[index],
-              value: el,
-            }))
-          : [];
-      } else {
-        this.id = row.id;
-        this.visible = true;
-      }
+      //   this.receiverList = row.receiverName
+      //     ? row.receiverId.split(",").map((el, index) => ({
+      //         label: row.receiverName.split(",")[index],
+      //         value: el,
+      //       }))
+      //     : [];
+      // } else {
+      //   this.id = row.id;
+      //   this.visible = true;
+      // }
     },
     confirmManger() {
       this.visible = true;

+ 9 - 1
vue.config.js

@@ -100,6 +100,14 @@ module.exports = {
                     "^/market": "",
                 },
             },
+            "/market/mk": {
+                target: "http://192.168.1.9:9114",
+                ws: false,
+                changeOrigin: true,
+                pathRewrite: {
+                    "^/market": "",
+                },
+            },
             "/market/techcentergj": {
                 target: "http://192.168.1.9:9114",
                 ws: false,
@@ -109,7 +117,7 @@ module.exports = {
                 },
             },
             "/mkWangge": {
-                target: "http://192.168.1.19:9114",
+                target: "http://192.168.1.9:9114",
                 ws: false,
                 changeOrigin: true,
                 pathRewrite: {