From 0e8aa7db6379af20392793295eee2ff3e173af1c Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期三, 24 四月 2024 18:54:50 +0800
Subject: [PATCH] 获取薪资类型的接口联调,字段调试+保存薪资类型的接口联调和数据处理

---
 src/views/employeeSalary/salaryPlan/components/addDialog.vue |  412 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 364 insertions(+), 48 deletions(-)

diff --git a/src/views/employeeSalary/salaryPlan/components/addDialog.vue b/src/views/employeeSalary/salaryPlan/components/addDialog.vue
index 45899f7..645e466 100644
--- a/src/views/employeeSalary/salaryPlan/components/addDialog.vue
+++ b/src/views/employeeSalary/salaryPlan/components/addDialog.vue
@@ -1,104 +1,420 @@
 <template>
   <div class="add_wordshop">
-    <el-dialog :title="form.title + '钖祫鏂规'" :visible.sync="islook" width="30%"
-      :before-close="handleClose">
-      <el-form label-width="120px" style="width: 100%;" :model="form" :rules="rules"
-        ref="form">
-        <el-form-item label="鏂规鍚嶇О" style="width: 100%;" prop="groupNumber">
-          <el-input v-model="form.workshop" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
+    <el-dialog
+      :visible.sync="islook"
+      width="44rem"
+      :before-close="cancelMethod"
+    >
+      <div slot="title" class="tac drawerHeader">
+        {{ editRow.title }}钖祫鏂规
+      </div>
+      <el-form
+        label-width="110px"
+        class="form-box"
+        :model="form"
+        :rules="rules"
+        ref="form"
+      >
+        <el-form-item label="鏂规鍚嶇О" prop="name">
+          <el-input v-model="form.name" placeholder="璇疯緭鍏�"></el-input>
         </el-form-item>
-        <el-form-item prop="workshop"  label="宸ョ" style="width: 100%;" >
-          <el-select 
-             v-model="form.workshop" value-key="name" placeholder="璇烽�夋嫨杞﹂棿">
+        <el-form-item label="宸ョ锛�" prop="workTypes">
+          <el-select
+            v-model="form.workTypes"
+            multiple
+            collapse-tags
+            placeholder="璇烽�夋嫨"
+            style="width: 100%"
+          >
             <el-option
-              v-for="item in workshopList"
+              v-for="item in workTypeList"
               :key="item.ID"
-              :label="item.name"
-              :value="item">
+              :label="item.workName"
+              :value="item"
+            >
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item prop="workshop"  label="钖祫绫诲瀷" style="width: 100%;" >
-          <el-select 
-            v-model="form.groupNumber" value-key="name" placeholder="璇烽�夋嫨杞﹂棿">
+        <el-form-item prop="salaryType" label="钖祫绫诲瀷">
+          <el-select
+            v-model="form.salaryType"
+            style="width: calc(100% - 40px)"
+            placeholder="璇烽�夋嫨杞﹂棿"
+          >
             <el-option
-              v-for="item in workshopList"
-              :key="item.ID"
+              v-for="item in unitList"
+              :key="item.id"
               :label="item.name"
-              :value="item">
+              :value="item.name"
+            >
             </el-option>
           </el-select>
+          <i
+            class="el-icon-setting margin_left_10px cursor_pointer"
+            style="font-size: 20px; color: gray"
+            @click="handleUnitShow"
+          ></i>
         </el-form-item>
-        <el-form-item prop="workshop"  label="璁¤垂鍏紡瀹氫箟" style="width: 100%;" >
+        <el-form-item prop="salaryFormula" label="璁¤垂鍏紡瀹氫箟">
           <el-input
             type="textarea"
-            :autosize="{ minRows: 2, maxRows: 4}"
+            :autosize="{ minRows: 4, maxRows: 6}"
+            disabled
             placeholder="璇疯緭鍏ュ唴瀹�"
-            v-model="form.workshop">
+            v-model="form.salaryFormula"
+          >
           </el-input>
         </el-form-item>
+        <div class="formula-box">
+          <div class="table-bottom-tabs">
+            <div
+              class="tab-pane"
+              @click="tabClickBottom(1)"
+              :style="{
+                background: activeName == 1 ? '#2a78fb' : '#F1F3F8',
+                color: activeName == 1 ? '#fff' : '#666',
+              }"
+            >
+              鐢熶骇鏁版嵁
+            </div>
+            <div
+              class="tab-pane"
+              @click="tabClickBottom(2)"
+              :style="{
+                background: activeName == 2 ? '#2a78fb' : '#F1F3F8',
+                color: activeName == 2 ? '#fff' : '#666',
+              }"
+            >
+              鑰冨嫟鍙婅ˉ璐存暟鎹�
+            </div>
+          </div>
+          <div class="formula-bottom-box">
+            <div class="formula-l">
+              <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>
+                </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>
+                </div>
+              </div>
+            </div>
+            <div class="formula-r">
+              <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>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
       </el-form>
       <span slot="footer" class="dialog-footer">
         <el-button type="cancel" @click="cancelMethod()">鍙栨秷</el-button>
-        <el-button type="primary" @click="commitForm('form')">纭� 瀹�</el-button>
+        <el-button type="primary" @click="submitForm('form')">纭� 瀹�</el-button>
       </span>
     </el-dialog>
+    <BomDialog
+      ref="editDialog"
+      @handleConfirmSave="handleConfirmSave"
+      :workList="unitList"
+      title="璁¢噺鍗曚綅"
+    ></BomDialog>
   </div>
 </template>
 
 <script>
-// import {} from "@/api/systemSetting/workshopManage"
+import {
+  saveSalaryPlan,
+  getSalaryTypeList,
+  saveSalaryType,
+} from "@/api/employeeSalary/salaryPlan.js";
+import { getWorkTypeList } from "@/api/employeeManage/employeeInfo.js";
+import BomDialog from "@/views/employeeSalary/salaryPlan/components/bomDialog.vue";
 export default {
+  components: { BomDialog },
   props: {
     editRow: {
       type: Object,
-    }
+    },
   },
   data() {
     return {
-      form: {},
-      workshopList: [],
-      rules: {
-        workshopNumber: [
-          { required: true, message: '璇烽�夋嫨杞﹂棿', trigger: 'change' }
-        ],
-        groupNumber: [
-          { required: true, message: '璇峰~鍐欑粍鍒�', trigger: 'change' }
-        ]
+      islook: true,
+      form: {
+        name: "",
+        workTypes: [],
+        salaryType: "",
+        salaryFormula: "",
       },
+      activeName: 1,
+      formulaName:[
+        {
+          name:'鏃ヤ骇涓濋噺',
+        },
+        {
+          name:'閲庣氦鏁伴噺',
+          type:1,
+        },
+        {
+          name:'鐢熶笣鍗曚环',
+        },
+        {
+          name:'閲庣氦鍗曚环',
+        },
+        {
+          name:'妗舵暟(鏃�)',
+        },
+        {
+          name:'鍑哄嫟澶╂暟',
+        },
+        {
+          name:'鍚岀粍鎸¤溅宸ユ湀骞冲潎宸ヨ祫',
+          width:2
+        },
+        {
+          name:'鍚岀粍杞﹀ご宸ュ伐璧�',
+          width:2
+        }
+      ],
+      formulaNameTwo:[
+        {
+          name:'宸ヤ綔鏃ュ姞鐝椂闀�',
+        },
+        {
+          name:'婊″嫟濂�',
+          type:1,
+        },
+        {
+          name:'浼戞伅鏃ュ姞鐝椂闀�',
+        },
+        {
+          name:'璇峰亣澶╂暟',
+        },
+        {
+          name:'甯﹀緬澶╂暟',
+        },
+        {
+          name:'宸ラ緞',
+        },
+        {
+          name:'鍑哄嫟澶╂暟',
+        },
+      ],
+      formulaSymbol:[
+        {
+          name:'+',
+        },
+        {
+          name:'-',
+        },
+        {
+          name:'/',
+        },
+        {
+          name:'*',
+        },
+        {
+          name:'(',
+        },
+        {
+          name:')',
+        },
+        {
+          name:'甯搁噺鏁板瓧',
+          type:1,
+          width:2
+        },
+      ],
+      workTypeList: [], //宸ョ
+      rules: {
+        name: [
+          { required: true, message: "璇峰~鍐�", trigger: ["blur", "change"] },
+        ],
+        workTypes: [
+          {
+            required: true,
+            message: "璇烽�夋嫨",
+            trigger: ["blur", "change"],
+          },
+        ],
+        salaryType: [
+          { required: true, message: "璇烽�夋嫨", trigger: ["blur", "change"] },
+        ],
+        salaryFormula: [
+          { required: true, message: "璇烽�夋嫨", trigger: ["blur", "change"] },
+        ],
+      },
+      unitList: [],
     };
   },
-  computed: {
-  },
+  computed: {},
   created() {
+    this.handleGetBomKindDictList();
+    this.getSelectDataList();
   },
-  mounted() {
-
-  },
+  mounted() {},
   watch: {
-
+    islook(newVal) {
+      if (newVal) {
+        this.formInfo();
+      }
+    },
+    editRow() {
+      this.formInfo();
+    },
   },
   methods: {
-    
-    async commitForm(formName) {
+    tabClickBottom(activeName) {
+      this.activeName = activeName;
+    },
+    // 鍗曚綅
+    handleUnitShow() {
+      this.handleGetBomKindDictList();
+      this.$refs.editDialog.editDialogVisible = true;
+    },
+    handleConfirmSave(dataList) {
+      saveSalaryType({
+        type: 8,
+        values: dataList,
+      }).then((res) => {
+        if (res.code == 200) {
+          this.$message({
+            message: "鎿嶄綔鎴愬姛锛�",
+            type: "success",
+          });
+          this.$refs.editDialog.editDialogVisible = false;
+          this.handleGetBomKindDictList();
+        }
+      });
+    },
+    handleGetBomKindDictList() {
+      getSalaryTypeList({ type: 8 }).then((res) => {
+        this.unitList = res.data;
+      });
+    },
+    formInfo() {
+      if (this.islook) {
+        this.form = {
+          name: "",
+          workTypes: [],
+          salaryType: "",
+          salaryFormula: "",
+        };
+        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);
+          }
+        });
+      }
+    },
+    getSelectDataList() {
+      getWorkTypeList({
+        page: 0,
+        pageSize: 0,
+        keyWord: "",
+      }).then((res) => {
+        if (res.code == 200) {
+          this.workTypeList = res.data || [];
+        }
+      });
+    },
+    cancelMethod(val) {
+      this.$refs["form"].resetFields();
+      this.islook = false;
+      if (val) {
+        this.$emit("refresh");
+      }
+    },
+    submitForm(formName) {
       this.$refs[formName].validate((valid) => {
         if (valid) {
-          console.log("鏍¢獙閫氳繃")
+          let form = JSON.parse(JSON.stringify(this.form));
+          saveSalaryPlan(form).then((res) => {
+            if (res.code == 200) {
+              this.$message({
+                message: "淇濆瓨鎴愬姛锛�",
+                type: "success",
+              });
+              this.cancelMethod(true);
+            }
+          });
         } else {
-          console.log('error submit!!');
+          console.log("error submit!!");
           return false;
         }
       });
-
-
-    }
+    },
   },
 };
 </script>
 
 <style scoped lang="scss">
-::v-deep .el-form-item__content {
-  width: 70% !important;
+.form-box {
+  width: 90%;
+  margin-bottom: 40px;
+  margin: 0 auto;
+  .formula-box{
+    height:auto;
+    width:calc(100% - 110px);
+    font-size:14px;
+    line-height:25px;
+    padding-left:110px;
+    .formula-bottom-box{
+      width:100%;
+      height:auto;
+      overflow:hidden;
+      .formula-p{
+        line-height:40px;
+      }
+      .formula-l,.formula-r{
+        height:auto;
+        float:left;
+      }
+      .formula-l{
+        width:calc(75% - 10px);
+        margin-right:20px;
+      }
+      .formula-r{
+        width:calc(25% - 10px);
+      }
+      .formula-item-100{
+        width:100%;
+        margin-bottom:10px;
+        span{
+          cursor: pointer;
+          padding:5px 10px;
+        }
+      }
+      .formula-item{
+        width:calc(50% - 5px);
+        margin-bottom:10px;
+        float:left;
+        &:nth-of-type(odd) {
+          margin-right: 10px;
+        }
+        span{
+          cursor: pointer;
+          padding:5px 10px;
+        }
+      }
+      .formula-bottom{
+        padding:15px 10px;
+        background:#f3f3f3;
+        overflow:hidden;
+      }
+    }
+    
+  }
 }
 
 ::v-deep {

--
Gitblit v1.8.0