From caeb71b06d19a8ffd854c19e5e4b58f7180cdce8 Mon Sep 17 00:00:00 2001 From: haoxuan <haoxuan> Date: 星期一, 29 四月 2024 18:55:14 +0800 Subject: [PATCH] 纤度检验表的保存接口参数修改 --- src/views/employeeSalary/salaryPlan/components/addDialog.vue | 650 +++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 439 insertions(+), 211 deletions(-) diff --git a/src/views/employeeSalary/salaryPlan/components/addDialog.vue b/src/views/employeeSalary/salaryPlan/components/addDialog.vue index cd33fac..6fd49ea 100644 --- a/src/views/employeeSalary/salaryPlan/components/addDialog.vue +++ b/src/views/employeeSalary/salaryPlan/components/addDialog.vue @@ -30,14 +30,14 @@ v-for="item in workTypeList" :key="item.ID" :label="item.workName" - :value="item" + :value="{ value: item.ID, label: item.workName }" > </el-option> </el-select> </el-form-item> - <el-form-item prop="salaryType" label="钖祫绫诲瀷"> + <el-form-item prop="salaryTypeId" label="钖祫绫诲瀷"> <el-select - v-model="form.salaryType" + v-model="form.salaryTypeId" style="width: calc(100% - 40px)" placeholder="璇烽�夋嫨杞﹂棿" > @@ -45,7 +45,7 @@ v-for="item in unitList" :key="item.id" :label="item.name" - :value="item.name" + :value="item.id" > </el-option> </el-select> @@ -55,21 +55,40 @@ @click="handleUnitShow" ></i> </el-form-item> - <el-form-item prop="salaryFormula" label="璁¤垂鍏紡瀹氫箟"> + <el-form-item prop="salaryFormulaHtml" label="璁¤垂鍏紡瀹氫箟"> <!-- <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 6}" disabled placeholder="璇疯緭鍏ュ唴瀹�" - v-model="form.salaryFormula" + v-model="form.salaryFormulaHtml" > </el-input> --> - <div class="formula-input" v-html="form.salaryFormula"></div> - <el-button class='formula-btn' type="text" @click="checkFormula()">妫�鏌ュ叕寮�</el-button> + <div class="formula-input" v-html="form.salaryFormulaHtml"></div> + <div class="formula-btn-right"> + <el-button + class="formula-btn-t" + type="text" + :disabled="form.salaryFormulaHtml.length > 0 ? false : true" + @click="deleteFormula()" + >娓呴櫎</el-button + > + <el-button + class="formula-btn" + :disabled="form.salaryFormulaHtml.length > 0 ? false : true" + type="text" + @click="checkFormula()" + >妫�鏌ュ叕寮�</el-button + > + </div> </el-form-item> - <div class="formula-error" > - <span v-if="form.error==1"> 鏃犻敊璇紝鍙斁蹇冧娇鐢� ! </span> - <span v-if="form.error==2"> 鍏紡鏈夐敊璇紝璇锋鏌� ! </span> + <div class="formula-error"> + <span v-if="form.error == 1" class="color_blue"> + 鏃犻敊璇紝鍙斁蹇冧娇鐢� ! + </span> + <span v-if="form.error == 2" class="color_red"> + 鍏紡鏈夐敊璇紝璇锋鏌� ! + </span> </div> <div class="formula-box"> <div class="table-bottom-tabs"> @@ -97,35 +116,51 @@ <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"> + <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> - <i - v-if="item.type==1" - class="el-icon-setting margin_left_5px cursor_pointer" - style="font-size: 18px; color: gray" - @click="handleSlikSetShow" - ></i> + <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 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(10)" + ></i> </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 v-if="item.type==3" @click="handleConstSetShow(3)"> {{ item.name }}</span> - <span v-else @click="formulaClick(item)"> {{ item.name }}</span> + <div + :class="item.width == 2 ? 'formula-item-100' : 'formula-item'" + v-for="item in formulaSymbol" + :key="item.name" + > + <span v-if="item.type == 3" @click="handleConstSetShow(3)"> + {{ item.name }}</span + > + <span v-else @click="formulaClick(item)"> + {{ item.name }}</span + > </div> </div> </div> @@ -134,7 +169,7 @@ </el-form> <span slot="footer" class="dialog-footer"> <el-button type="cancel" @click="cancelMethod()">鍙栨秷</el-button> - <el-button type="primary" @click="submitForm('form')">纭� 瀹�</el-button> + <el-button type="primary" :loading="isAddloading" @click="submitForm('form')">纭� 瀹�</el-button> </span> </el-dialog> <BomDialog @@ -146,15 +181,15 @@ <SilkSetDialog ref="silkSetDialog" @confirmValueSave="confirmValueSave" - :editRow="form" + :editRow="{wildSilkList:wildSilkList}" title="閰嶇疆" ></SilkSetDialog> <ConstantSetDialog ref="constantSetDialog" @confirmValueSave="confirmValueSave" :constType="constType" - :editRow="form" - :title="constType==2?'閰嶇疆':'杈撳叆'" + :editRow="constType == 10?{absenteeism:absenteeism}:form" + :title="constType == 10 ? '閰嶇疆' : '杈撳叆'" ></ConstantSetDialog> </div> </template> @@ -167,14 +202,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"; +import SilkSetDialog from "@/views/employeeSalary/salaryPlan/components/SilkSetDialog.vue"; +import ConstantSetDialog from "@/views/employeeSalary/salaryPlan/components/ConstantSetDialog.vue"; export default { - components: { + components: { BomDialog, SilkSetDialog, - ConstantSetDialog - }, + ConstantSetDialog, + }, props: { editRow: { type: Object, @@ -186,93 +221,96 @@ form: { name: "", workTypes: [], - salaryType: "", + salaryTypeId: null, salaryFormula: "", - error:'', - purchaseTypeList:[1], - cycle:1, + salaryFormulaHtml: "", + error: "", }, + // 婊″嫟濂栬缃� + absenteeism:{value:1,id:null}, + // 璁剧疆閲庣氦鐨勭敓涓濇爣鍑� + wildSilkList: {value:'閲庣氦',id:null}, activeName: 1, - formulaName:[ + formulaName: [ { - name:'鏃ヤ骇涓濋噺', + name: "鏃ヤ骇涓濋噺", }, { - name:'閲庣氦鏁伴噺', - type:1, + name: "閲庣氦鏁伴噺", + type: 1, }, { - name:'鐢熶笣鍗曚环', + name: "鐢熶笣鍗曚环", }, { - name:'閲庣氦鍗曚环', + name: "閲庣氦鍗曚环", }, { - name:'妗舵暟(鏃�)', + name: "妗舵暟(鏃�)", }, { - name:'鍑哄嫟澶╂暟', + name: "鍑哄嫟澶╂暟", }, { - name:'鍚岀粍鎸¤溅宸ユ湀骞冲潎宸ヨ祫', - width:2 + name: "鍚岀粍鎸¤溅宸ユ湀骞冲潎宸ヨ祫", + width: 2, }, { - name:'鍚岀粍杞﹀ご宸ュ伐璧�', - width:2 - } - ], - formulaNameTwo:[ - { - name:'宸ヤ綔鏃ュ姞鐝椂闀�', - }, - { - name:'婊″嫟濂�', - type:2, - }, - { - name:'浼戞伅鏃ュ姞鐝椂闀�', - }, - { - name:'璇峰亣澶╂暟', - }, - { - name:'甯﹀緬澶╂暟', - }, - { - name:'宸ラ緞', - }, - { - name:'鍑哄嫟澶╂暟', + name: "鍚岀粍杞﹀ご宸ュ伐璧�", + width: 2, }, ], - formulaSymbol:[ + formulaNameTwo: [ { - name:'+', - background:'background_red', + name: "宸ヤ綔鏃ュ姞鐝椂闀�", }, { - name:'-', - background:'background_red', + name: "婊″嫟濂�", + type: 2, }, { - name:'/', - background:'background_red', + name: "浼戞伅鏃ュ姞鐝椂闀�", }, { - name:'*', - background:'background_red', + name: "璇峰亣澶╂暟", }, { - name:'(', + name: "甯﹀緬澶╂暟", }, { - name:')', + name: "宸ラ緞", }, { - name:'甯搁噺鏁板瓧', - type:3, - width:2 + name: "鍑哄嫟澶╂暟", + }, + ], + formulaSymbol: [ + { + name: "+", + background: "background_red", + }, + { + name: "-", + background: "background_red", + }, + { + name: "/", + background: "background_red", + }, + { + name: "*", + background: "background_red", + }, + { + name: "(", + }, + { + name: ")", + }, + { + name: "甯搁噺鏁板瓧", + type: 3, + width: 2, }, ], workTypeList: [], //宸ョ @@ -287,20 +325,23 @@ trigger: ["blur", "change"], }, ], - salaryType: [ + salaryTypeId: [ { required: true, message: "璇烽�夋嫨", trigger: ["blur", "change"] }, ], - salaryFormula: [ + salaryFormulaHtml: [ { required: true, message: "璇烽�夋嫨", trigger: ["blur", "change"] }, ], }, unitList: [], - constType:'', + constType: "", + isAddloading: false, }; }, computed: {}, created() { this.handleGetBomKindDictList(); + this.handleGetBomKindDictList(9); + this.handleGetBomKindDictList(10); this.getSelectDataList(); }, mounted() {}, @@ -318,41 +359,181 @@ 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>" + formInfo() { + if (this.islook) { + this.form = { + name: "", + workTypes: [], + salaryTypeId: null, + salaryFormula: "", + salaryFormulaHtml: "", + error: "", + }; + this.$nextTick(() => { + this.$refs["form"].resetFields(); + if (this.editRow.id) { + this.form = JSON.parse(JSON.stringify(this.editRow)); + let salaryFormula = this.form.salaryFormula + ? this.form.salaryFormula + : ""; + this.form.salaryFormulaHtml = ""; + this.form.salaryFormula = ""; + let arr = salaryFormula ? salaryFormula.split(",") : []; + this.getSalaryFormulaHtml(arr); + } + }); } - this.form.salaryFormula= this.form.salaryFormula+string; - this.$forceUpdate() }, - checkFormula(){ + getSalaryFormulaHtml(arr) { + let formulaNameArr = this.formulaName + .concat(this.formulaNameTwo) + .concat(this.formulaSymbol); + if (arr.length > 0) { + for (let i in arr) { + for (let j in formulaNameArr) { + let reg2 = + /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/; + if (reg2.test(arr[i])) { + this.formulaClick( + { name: "甯搁噺鏁板瓧", type: 3, width: 2 }, + arr[i] + ); + } else if (formulaNameArr[j].name == arr[i]) { + this.formulaClick(formulaNameArr[j]); + } + } + } + } + }, + // 鐐瑰嚮鐢熶骇鏁版嵁鍜岃�冨嫟鍙婅ˉ璐存暟鎹� 璧嬪�艰璐瑰叕寮忓畾涔� + 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 + name + ","; + this.form.salaryFormulaHtml = this.form.salaryFormulaHtml + string; + this.$forceUpdate(); + }, + deleteFormula() { + let salaryFormula = this.form.salaryFormula + ? this.form.salaryFormula + : ""; + let arr = salaryFormula.split(","); + arr = arr.splice(0, arr.length - 1); + arr = arr.splice(0, arr.length - 1); + this.form.salaryFormulaHtml = ""; + this.form.salaryFormula = ""; + this.getSalaryFormulaHtml(arr); + }, + checkFormula() { + if (this.form.salaryFormula) { + let string = true; + let isString = "+-*/"; + let arr = this.form.salaryFormula.split(","); + arr = arr.splice(0, arr.length - 1); + for (let i = 0; i < arr.length; i++) { + if (arr[i] != "") { + // 闄ゆ暟涓嶈兘涓�0, 绗﹀彿閭h竟闇�瑕佹湁鍊� + if (isString.indexOf(arr[i]) != -1 || arr[i] == "(") { + if (i != 0) { + if (isString.indexOf(arr[i - 1]) != -1) { + string = false; + break; + } + } + if (i == arr.length - 1) { + string = false; + break; + } + if (i < arr.length - 1) { + if (isString.indexOf(arr[i + 1]) != -1) { + string = false; + break; + } else if (arr[i] == "/" && arr[i + 1] == 0) { + string = false; + break; + } + } + } else if (arr[i] == ")") { + if (i < arr.length - 1) { + if (isString.indexOf(arr[i + 1]) == -1) { + string = false; + break; + } + } + } else { + if (i != 0) { + if (isString.indexOf(arr[i - 1]) == -1 && arr[i - 1] != "(") { + string = false; + break; + } + } + if (i < arr.length - 1) { + if (isString.indexOf(arr[i + 1]) == -1 && arr[i + 1] != ")") { + string = false; + break; + } + } + } + } + } + if (!string) { + this.$set(this.form, "error", 2); + } else { + this.$set(this.form, "error", 1); + } + } }, - 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) + confirmValueSave(form, type) { + if (type == 9) { + let wildSilkList = form.wildSilkList; + this.handleConfirmSave([ + { + name:wildSilkList.join(','), + id:this.wildSilkList.id + } + ],type) + } else if (type == 10) { + let absenteeism = form.absenteeism + ""; + this.handleConfirmSave([ + { + name:absenteeism, + id:this.absenteeism.id + } + ],type) + } else if (type == 3) { + this.formulaClick( + { + name: "甯搁噺鏁板瓧", + type: 3, + width: 2, + }, + form.number + ); } }, // 閲庣氦鏁伴噺 - handleSlikSetShow(){ + handleSlikSetShow() { + this.handleGetBomKindDictList(9); this.$refs.silkSetDialog.islook = true; }, // 婊″嫟濂� - handleConstSetShow(val){ - this.constType=val; + handleConstSetShow(val) { + this.constType = val; + if(val==10){ + this.handleGetBomKindDictList(10); + } this.$refs.constantSetDialog.islook = true; }, // 鍗曚綅 @@ -360,44 +541,67 @@ this.handleGetBomKindDictList(); this.$refs.editDialog.editDialogVisible = true; }, - handleConfirmSave(dataList) { - saveSalaryType({ - type: 8, - values: dataList, - }).then((res) => { + handleConfirmSave(dataList,val) { + let params={} + if(val==9||val==10){ + params={ + type: val, + values: dataList, + } + }else{ + params={ + type: 8, + values: dataList, + } + } + this.isAddloading = true; + saveSalaryType(params).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: "", - error:'', - purchaseTypeList:[1], - cycle:1, - }; - this.$nextTick(() => { - this.$refs["form"].resetFields(); - if (this.editRow.id) { - this.form = JSON.parse(JSON.stringify(this.editRow)); + if(val==9){ + this.$refs.silkSetDialog.islook = false; + }else if(val==10){ + this.$refs.constantSetDialog.islook = false; + }else{ + this.$refs.editDialog.editDialogVisible = false; } - }); - } + this.handleGetBomKindDictList(val?val:''); + } + this.isAddloading = false; + }).catch(() => { + setTimeout(() => { + this.isAddloading = false; + }, 3000); + }); + }, + handleGetBomKindDictList(val) { + getSalaryTypeList({ type: val?val:8 }).then((res) => { + if(val==9){ + // 閲庣氦鐨勭敓涓濇爣鍑嗛厤缃� + this.wildSilkList=(res.data&&res.data.length>0)?{ + ...res.data[0], + value:res.data[0].name.split(',')||[] + }:{ + id:null, + value:['閲庣氦'] + } + }else if(val==10){ + // 鑰冨嫟閰嶇疆 + this.absenteeism=(res.data&&res.data.length>0)?{ + ...res.data[0], + value:res.data[0].name||1 + }:{ + id:null, + value:1 + } + }else{ + this.unitList = res.data; + } + + }); }, getSelectDataList() { getWorkTypeList({ @@ -420,11 +624,25 @@ submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { - let form = JSON.parse(JSON.stringify(this.form)); - if(form.purchaseTypeList.length==0){ - this.$message.error('璇风偣鍑婚噹绾ゆ暟閲忛厤缃敓涓濇爣鍑嗭紒') + this.checkFormula(); + if (this.form.error == 2) { + this.$message.error("璇锋鏌ヨ璐瑰叕寮忓畾涔夛紒"); return true; } + let form = JSON.parse(JSON.stringify(this.form)); + let arr = form.salaryFormula.split(","); + arr = arr.splice(0, arr.length - 1); + form.salaryFormula = arr.join(","); + let workTypes = []; + if (form.workTypes && form.workTypes.length > 0) { + for (let i in form.workTypes) { + workTypes.push({ + workName: form.workTypes[i].label, + id: form.workTypes[i].value, + }); + } + } + form.workTypes = workTypes; saveSalaryPlan(form).then((res) => { if (res.code == 200) { this.$message({ @@ -448,78 +666,88 @@ 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; - margin-bottom:30px; - .formula-p{ - line-height:40px; + .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; + margin-bottom: 30px; + .formula-p { + line-height: 40px; } - .formula-l,.formula-r{ - height:auto; - float:left; + .formula-l, + .formula-r { + height: auto; + float: left; } - .formula-l{ - width:calc(75% - 10px); - margin-right:20px; + .formula-l { + width: calc(75% - 10px); + margin-right: 20px; } - .formula-r{ - width:calc(25% - 10px); + .formula-r { + width: calc(25% - 10px); } - .formula-item-100{ - width:100%; - margin-bottom:10px; - span{ + .formula-item-100 { + width: 100%; + margin-bottom: 10px; + span { cursor: pointer; - padding:5px 10px; + padding: 5px 10px; } } - .formula-item{ - width:calc(50% - 5px); - margin-bottom:10px; - float:left; + .formula-item { + width: calc(50% - 5px); + margin-bottom: 10px; + float: left; &:nth-of-type(odd) { margin-right: 10px; } - span{ + span { cursor: pointer; - padding:5px 10px; + padding: 5px 10px; } } - .formula-bottom{ - padding:15px 10px; - background:#f3f3f3; - overflow:hidden; + .formula-bottom { + padding: 15px 10px; + background: #f3f3f3; + 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-input { + width: calc(100% - 90px); + height: 100px; + padding: 10px 10px; + overflow-y: auto; + background: #f5f7fa; + border: 1px solid #e4e7ed; + cursor: not-allowed; + float: left; + } + .formula-btn-right { + width: 60px; + float: left; + position: relative; + .formula-btn-t { + margin-left: 10px; } - .formula-btn{ - float:left; - margin-top:80px; + .formula-btn { + margin-top: 40px; } - .formula-error{ - width:100%; - line-height:28px; - font-size:12px; - } + } + + .formula-error { + width: calc(100% - 110px); + line-height: 28px; + font-size: 14px; + margin-left: 110px; + margin-bottom: 10px; + } } ::v-deep { -- Gitblit v1.8.0