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