From b2c2a77b5632b7e5f29a6cdce816bd977bc8604d Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期四, 25 四月 2024 16:33:53 +0800
Subject: [PATCH] 车间管理 修改完成之后,再次打开 爆红的问题修改+新建薪资方案的前端开发+

---
 src/views/systemSetting/silkStandardSetting/components/silkTableList.vue |    1 
 src/assets/style/index.scss                                              |   14 +
 src/api/data.js                                                          |    7 
 src/views/employeeSalary/salaryPlan/components/SilkSetDialog.vue         |  106 +++++++++++++
 src/views/systemSetting/workshopManage/components/addDialog.vue          |    9 +
 src/views/employeeSalary/salaryPlan/components/bomDialog.vue             |    4 
 src/views/employeeSalary/salaryPlan/components/ConstantSetDialog.vue     |  149 ++++++++++++++++++
 src/views/employeeSalary/salaryPlan/components/addDialog.vue             |  132 ++++++++++++++-
 8 files changed, 405 insertions(+), 17 deletions(-)

diff --git a/src/api/data.js b/src/api/data.js
index 815656d..def6c5e 100644
--- a/src/api/data.js
+++ b/src/api/data.js
@@ -12,10 +12,17 @@
   { id: 3, value: "浼戝亣" },
   { id: 4, value: "寮傚父" },
 ]
+const silkSet=[
+  { id: 1, value: "閲庣氦" },
+  { id: 2, value: "澶ч噹" },
+  { id: 3, value: "鐗归噹" },
+]
 export const getDataByType = (type) => {
   if (type == "projectOptions") {
     return projectOptions
   }else if(type=='attendanceStatus'){
     return attendanceStatus
+  }else if(type=='silkSet'){
+    return silkSet;
   }
 }
diff --git a/src/assets/style/index.scss b/src/assets/style/index.scss
index e9288e6..f79a476 100644
--- a/src/assets/style/index.scss
+++ b/src/assets/style/index.scss
@@ -123,6 +123,9 @@
 .font_size_40 {
   font-size: 40px !important;
 }
+.color_fff {
+  color: #fff;
+}
 .color_333 {
   color: #333;
 }
@@ -144,6 +147,17 @@
 .background_blue{
   background: #2a78fb;
 }
+.background_e3e3e3{
+  background: #e3e3e3;
+}
+.background_red{
+  background: red;
+}
+.formula-input-item{
+  padding:3px 8px;
+  font-size:12px;
+  margin-right:3px;
+}
 .cursor_pointer {
   cursor: pointer;
 }
diff --git a/src/views/employeeSalary/salaryPlan/components/ConstantSetDialog.vue b/src/views/employeeSalary/salaryPlan/components/ConstantSetDialog.vue
new file mode 100644
index 0000000..9e5dba2
--- /dev/null
+++ b/src/views/employeeSalary/salaryPlan/components/ConstantSetDialog.vue
@@ -0,0 +1,149 @@
+<template>
+  <el-dialog :close-on-click-modal="false" :visible.sync="islook" width="35rem" class="add-rule-set-dialog"
+    @close="shutdown">
+    <div slot="title" class="tac drawerHeader">{{ title }}</div>
+    <div class="dialog-content-box">
+      <el-form ref="form" class="form-box" :rules="rules" 
+       :model="form" 
+       label-width="150px"
+        label-position="right">
+              <el-form-item v-if="constType==2" label="缂哄嫟瓒呰繃" label-width="100px" prop="cycle">
+              
+                <el-input 
+                  style="width:calc(100% - 150px)"
+                  class="margin_left_5px margin_right_5px" 
+                  v-model="form.cycle"
+                  placeholder="璇疯緭鍏�"></el-input>
+                  澶╁垯婊″嫟濂栧叏棰濇墸闄�
+              </el-form-item>
+              <el-form-item v-if="constType==3" label="璇疯緭鍏ュ父閲忔暟鍊�" label-width="150px" prop="number">
+                <el-input 
+                 v-model="form.number"
+                 class="margin_left_5px"
+                  placeholder="璇疯緭鍏�"></el-input>
+              </el-form-item>
+      </el-form>
+    </div>
+    <div slot="footer" class="dialog-footer tac">
+      <el-button @click="shutdown">鍙栨秷</el-button>
+      <el-button type="primary" @click="onSubmit(form)">纭畾</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+export default {
+  props: {
+    constType:{
+      type:[Number,String],
+      default:''
+    },
+    title:{
+      type:[String,Number],
+      default:''
+    },
+    editRow:{
+      type:[Object],
+    }
+  },
+  data() {
+    return {
+      islook: false,
+      form: {
+        cycle:1,
+        number:'',
+      },
+      rules: {
+        cycle: [
+          {
+            required: true,
+            message: "璇疯緭鍏�",
+            trigger: "blur",
+          },
+          {
+            validator: this.validatorNum,
+            trigger: "blur",
+          },
+        ],
+        number: [
+          {
+            required: true,
+            message: "璇疯緭鍏�",
+            trigger: "blur",
+          },
+          {
+            validator: this.validatorNum,
+            trigger: "blur",
+          },
+        ],
+      },
+      procedureIdsList: [],
+    };
+  },
+  mounted() {
+  },
+  watch: {
+    islook(newVal) {
+      if (newVal) {
+        this.$nextTick(() => {
+          this.$refs["form"].resetFields();
+        });
+        this.form.cycle=this.editRow.cycle
+        this.form.number=null
+      }
+    },
+  },
+  methods: {
+    validatorNum(rule, value, callback) {
+      if (value) {
+        if (value == undefined || value == null) {
+          callback(new Error("璇疯緭鍏ユ湁鏁堟暟瀛�"));
+        } else {
+          let reg2 =
+            /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
+          if (!reg2.test(value)) {
+            callback(new Error("璇峰~鍐�2浣嶅皬鏁扮殑鏁板瓧"));
+          } else {
+            callback();
+          }
+        }
+      } else {
+        callback();
+      }
+    },
+    onSubmit() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          this.$emit('confirmValueSave',this.form,this.constType)
+          this.shutdown()
+        }
+      });
+    },
+    shutdown() {
+      this.islook = false;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.add-rule-set-dialog {
+  .form-box {
+    width:94%;
+    .el-form-item {
+      width: 100%;
+      .el-radio{
+        height:40px;
+        line-height:40px;
+      }
+    }
+  }
+}
+
+
+::v-deep .el-input__inner {
+  font-size: 13px !important;
+  color: rgba(0, 0, 0, 0.9);
+  text-align: left;
+}
+</style>
diff --git a/src/views/employeeSalary/salaryPlan/components/SilkSetDialog.vue b/src/views/employeeSalary/salaryPlan/components/SilkSetDialog.vue
new file mode 100644
index 0000000..5ec9a12
--- /dev/null
+++ b/src/views/employeeSalary/salaryPlan/components/SilkSetDialog.vue
@@ -0,0 +1,106 @@
+<template>
+  <el-dialog :close-on-click-modal="false" :visible.sync="islook" width="35rem" class="add-rule-set-dialog"
+    @close="shutdown">
+    <div slot="title" class="tac drawerHeader">{{ title }}</div>
+    <div class="dialog-content-box">
+      <el-form ref="form" class="form-box" :rules="rules" 
+       :model="form" 
+       label-width="300px"
+        label-position="top">
+        <el-form-item label="璇烽�夋嫨閲庣氦鍖呭惈閭e嚑涓敓涓濇爣鍑嗭細" prop="purchaseTypeList">
+              <el-checkbox-group v-model="form.purchaseTypeList">
+                <el-checkbox
+                  v-for="item in silkSetList"
+                  :label="item.id"
+                  :key=item.id
+                  >{{ item.value }}</el-checkbox
+                >
+              </el-checkbox-group>
+        </el-form-item>
+      </el-form>
+    </div>
+    <div slot="footer" class="dialog-footer tac">
+      <el-button @click="shutdown">鍙栨秷</el-button>
+      <el-button type="primary" @click="onSubmit(form)">纭畾</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import { getDataByType } from "@/api/data"
+export default {
+  props: {
+    title:{
+      type:[String,Number],
+      default:''
+    },
+    editRow:{
+      type:[Object],
+    }
+  },
+  data() {
+    return {
+      islook: false,
+      silkSetList:getDataByType('silkSet'),
+      form: {
+        purchaseTypeList:[1],
+      },
+      rules: {
+        // 閲囪喘绫诲瀷
+        purchaseTypeList: [
+          { required: true, message: "璇烽�夋嫨", trigger: ["blur",'change'] },
+        ],
+      },
+      procedureIdsList: [],
+    };
+  },
+  mounted() {
+  },
+  watch: {
+    islook(newVal) {
+      if (newVal) {
+        this.$nextTick(() => {
+          this.$refs["form"].resetFields();
+        });
+        this.form=this.editRow
+      }
+    },
+  },
+  methods: {
+    onSubmit() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          this.$emit('confirmValueSave',this.form,1)
+          this.shutdown()
+        }
+      });
+    },
+    shutdown() {
+      this.islook = false;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.add-rule-set-dialog {
+  .form-box {
+    width:93%;
+    margin: 0 auto;
+    .el-form-item {
+      width: 100%;
+      .el-radio{
+        height:40px;
+        line-height:40px;
+      }
+    }
+  }
+}
+
+
+::v-deep .el-input__inner {
+  font-size: 13px !important;
+  color: rgba(0, 0, 0, 0.9);
+  text-align: left;
+}
+</style>
diff --git a/src/views/employeeSalary/salaryPlan/components/addDialog.vue b/src/views/employeeSalary/salaryPlan/components/addDialog.vue
index aa2a3bc..cd33fac 100644
--- a/src/views/employeeSalary/salaryPlan/components/addDialog.vue
+++ b/src/views/employeeSalary/salaryPlan/components/addDialog.vue
@@ -56,15 +56,21 @@
           ></i>
         </el-form-item>
         <el-form-item prop="salaryFormula" label="璁¤垂鍏紡瀹氫箟">
-          <el-input
+          <!-- <el-input
             type="textarea"
             :autosize="{ minRows: 4, maxRows: 6}"
             disabled
             placeholder="璇疯緭鍏ュ唴瀹�"
             v-model="form.salaryFormula"
           >
-          </el-input>
+          </el-input> -->
+          <div class="formula-input" v-html="form.salaryFormula"></div>
+          <el-button class='formula-btn' type="text" @click="checkFormula()">妫�鏌ュ叕寮�</el-button>
         </el-form-item>
+        <div class="formula-error" >
+         <span v-if="form.error==1"> 鏃犻敊璇紝鍙斁蹇冧娇鐢� ! </span>
+         <span v-if="form.error==2"> 鍏紡鏈夐敊璇紝璇锋鏌� ! </span>
+        </div>
         <div class="formula-box">
           <div class="table-bottom-tabs">
             <div
@@ -93,12 +99,24 @@
               <div class="formula-p">鍙�夋暟鎹�</div>
               <div class="formula-bottom" v-if="activeName==1">
                 <div  :class="item.width==2?'formula-item-100':'formula-item'" v-for='item in formulaName' :key="item.name">
-                 <span @click="formulaClick(item)"> {{ item.name }}</span>
+                  <span @click="formulaClick(item)"> {{ item.name }}</span>
+                    <i
+                      v-if="item.type==1"
+                      class="el-icon-setting margin_left_5px  cursor_pointer"
+                      style="font-size: 18px; color: gray"
+                      @click="handleSlikSetShow"
+                    ></i>
                 </div>
               </div>
               <div class="formula-bottom" v-if="activeName==2">
                 <div  :class="item.width==2?'formula-item-100':'formula-item'" v-for='item in formulaNameTwo' :key="item.name">
                  <span @click="formulaClick(item)"> {{ item.name }}</span>
+                 <i
+                      v-if="item.type==2"
+                      class="el-icon-setting margin_left_5px  cursor_pointer"
+                      style="font-size: 18px; color: gray"
+                      @click="handleConstSetShow(2)"
+                    ></i>
                 </div>
               </div>
             </div>
@@ -106,7 +124,8 @@
               <div class="formula-p">甯哥敤绗﹀彿/浜ч噺</div>
               <div class="formula-bottom">
                 <div  :class="item.width==2?'formula-item-100':'formula-item'" v-for='item in formulaSymbol' :key="item.name">
-                  <span @click="formulaClick(item)"> {{ item.name }}</span>
+                  <span v-if="item.type==3" @click="handleConstSetShow(3)"> {{ item.name }}</span>
+                  <span v-else @click="formulaClick(item)"> {{ item.name }}</span>
                 </div>
               </div>
             </div>
@@ -124,6 +143,19 @@
       :workList="unitList"
       title="璁¢噺鍗曚綅"
     ></BomDialog>
+    <SilkSetDialog
+      ref="silkSetDialog"
+      @confirmValueSave="confirmValueSave"
+      :editRow="form"
+      title="閰嶇疆"
+    ></SilkSetDialog>
+    <ConstantSetDialog
+      ref="constantSetDialog"
+      @confirmValueSave="confirmValueSave"
+      :constType="constType"
+      :editRow="form"
+      :title="constType==2?'閰嶇疆':'杈撳叆'"
+    ></ConstantSetDialog>
   </div>
 </template>
 
@@ -135,8 +167,14 @@
 } from "@/api/employeeSalary/salaryPlan.js";
 import { getWorkTypeList } from "@/api/employeeManage/employeeInfo.js";
 import BomDialog from "@/views/employeeSalary/salaryPlan/components/bomDialog.vue";
+import SilkSetDialog from "@/views/employeeSalary/salaryPlan/components/SilkSetDialog.vue"; 
+import ConstantSetDialog from "@/views/employeeSalary/salaryPlan/components/ConstantSetDialog.vue"; 
 export default {
-  components: { BomDialog },
+  components: { 
+    BomDialog,
+    SilkSetDialog,
+    ConstantSetDialog
+   },
   props: {
     editRow: {
       type: Object,
@@ -144,12 +182,15 @@
   },
   data() {
     return {
-      islook: true,
+      islook: false,
       form: {
         name: "",
         workTypes: [],
         salaryType: "",
         salaryFormula: "",
+        error:'',
+        purchaseTypeList:[1],
+        cycle:1,
       },
       activeName: 1,
       formulaName:[
@@ -187,7 +228,7 @@
         },
         {
           name:'婊″嫟濂�',
-          type:1,
+          type:2,
         },
         {
           name:'浼戞伅鏃ュ姞鐝椂闀�',
@@ -208,15 +249,19 @@
       formulaSymbol:[
         {
           name:'+',
+          background:'background_red',
         },
         {
           name:'-',
+          background:'background_red',
         },
         {
           name:'/',
+          background:'background_red',
         },
         {
           name:'*',
+          background:'background_red',
         },
         {
           name:'(',
@@ -226,7 +271,7 @@
         },
         {
           name:'甯搁噺鏁板瓧',
-          type:1,
+          type:3,
           width:2
         },
       ],
@@ -250,6 +295,7 @@
         ],
       },
       unitList: [],
+      constType:'',
     };
   },
   computed: {},
@@ -271,6 +317,43 @@
   methods: {
     tabClickBottom(activeName) {
       this.activeName = activeName;
+    },
+    // 鐐瑰嚮鐢熶骇鏁版嵁鍜岃�冨嫟鍙婅ˉ璐存暟鎹� 璧嬪�艰璐瑰叕寮忓畾涔�
+    formulaClick(item,value){
+      let string=''
+      let name=(item.type==3&&item.name=='甯搁噺鏁板瓧')?value:item.name
+      if(item.background){
+        string="<span class='formula-input-item background_red color_fff'>"+ name +"</span>"
+      }else{
+        string="<span class='formula-input-item background_e3e3e3'>"+ name +"</span>"
+      }
+      this.form.salaryFormula= this.form.salaryFormula+string;
+      this.$forceUpdate()
+    },
+    checkFormula(){
+
+    },
+    confirmValueSave(form,type){
+      if(type==1){
+        this.form.purchaseTypeList=form.purchaseTypeList;
+      }else if(type==2){
+        this.form.cycle=form.cycle
+      }else if(type==3){
+        this.formulaClick({
+          name:'甯搁噺鏁板瓧',
+          type:3,
+          width:2
+        },form.number)
+      }
+    },
+    // 閲庣氦鏁伴噺
+    handleSlikSetShow(){
+      this.$refs.silkSetDialog.islook = true;
+    },
+    // 婊″嫟濂�
+    handleConstSetShow(val){
+      this.constType=val;
+      this.$refs.constantSetDialog.islook = true;
     },
     // 鍗曚綅
     handleUnitShow() {
@@ -304,15 +387,14 @@
           workTypes: [],
           salaryType: "",
           salaryFormula: "",
+          error:'',
+          purchaseTypeList:[1],
+          cycle:1,
         };
         this.$nextTick(() => {
           this.$refs["form"].resetFields();
           if (this.editRow.id) {
             this.form = JSON.parse(JSON.stringify(this.editRow));
-            this.form.groupNumber = this.form.groupNumber
-              ? this.form.groupNumber
-              : null;
-            this.getGroupNumber(true);
           }
         });
       }
@@ -339,6 +421,10 @@
       this.$refs[formName].validate((valid) => {
         if (valid) {
           let form = JSON.parse(JSON.stringify(this.form));
+          if(form.purchaseTypeList.length==0){
+            this.$message.error('璇风偣鍑婚噹绾ゆ暟閲忛厤缃敓涓濇爣鍑嗭紒')
+            return true;
+          }
           saveSalaryPlan(form).then((res) => {
             if (res.code == 200) {
               this.$message({
@@ -372,6 +458,7 @@
       width:100%;
       height:auto;
       overflow:hidden;
+      margin-bottom:30px;
       .formula-p{
         line-height:40px;
       }
@@ -412,8 +499,27 @@
         overflow:hidden;
       }
     }
-    
   }
+  .formula-input{
+      width:calc(100% - 100px);
+      height:100px;
+      padding:10px 10px;
+      overflow-y:auto;
+      background:#F5F7FA;
+      border:1px solid #E4E7ED;
+      cursor:not-allowed;
+      float:left;
+      margin-right:20px;
+    }
+    .formula-btn{
+      float:left;
+      margin-top:80px;
+    }
+    .formula-error{
+      width:100%;
+      line-height:28px;
+      font-size:12px;
+    }
 }
 
 ::v-deep {
diff --git a/src/views/employeeSalary/salaryPlan/components/bomDialog.vue b/src/views/employeeSalary/salaryPlan/components/bomDialog.vue
index c2fbb38..dc2cbb9 100644
--- a/src/views/employeeSalary/salaryPlan/components/bomDialog.vue
+++ b/src/views/employeeSalary/salaryPlan/components/bomDialog.vue
@@ -38,7 +38,7 @@
             <i
               class="el-icon-delete cursor_pointer"
               id="iconStyle"
-              @click="handleDelete(scope.row.id, scope)"
+              @click="handleDelete(scope)"
             ></i>
           </template>
         </el-table-column>
@@ -102,7 +102,7 @@
         }, 500);
       });
     },
-    handleDelete(id, scope) {
+    handleDelete(scope) {
       if (this.BomTableData.length === 1) {
         this.$message.warning("鑷冲皯淇濈暀涓�鏉℃暟鎹�");
         return;
diff --git a/src/views/systemSetting/silkStandardSetting/components/silkTableList.vue b/src/views/systemSetting/silkStandardSetting/components/silkTableList.vue
index bc3226f..5881827 100644
--- a/src/views/systemSetting/silkStandardSetting/components/silkTableList.vue
+++ b/src/views/systemSetting/silkStandardSetting/components/silkTableList.vue
@@ -47,7 +47,6 @@
                       }
                     "
                   ></el-input>
-                  {{item.prop}}
                   <div class="common-select-btn" @click="clearupColumn(item.prop,i)">
                     <i class="el-icon-remove" title="鍒犻櫎"></i>
                   </div>
diff --git a/src/views/systemSetting/workshopManage/components/addDialog.vue b/src/views/systemSetting/workshopManage/components/addDialog.vue
index 6135db5..06b7048 100644
--- a/src/views/systemSetting/workshopManage/components/addDialog.vue
+++ b/src/views/systemSetting/workshopManage/components/addDialog.vue
@@ -138,7 +138,14 @@
 
   },
   watch: {
-
+    'editConfig.visible'(newVal) {
+      if (newVal) {
+        this.$nextTick(()=>{
+          this.$refs["ruleForm"].resetFields();
+          this.editConfig=this.editDiaConfig
+        })
+      }
+    },
   },
   methods: {
     handleClose(done) {

--
Gitblit v1.8.0