From 4fa44f71fbb58abf9256f8bd872b8e0890f49f9c Mon Sep 17 00:00:00 2001 From: 龚焕茏 <2842157468@qq.com> Date: 星期三, 24 四月 2024 18:08:59 +0800 Subject: [PATCH] 合同规则分三层、合同积分新增 --- src/views/system/contract/index.vue | 5 + src/api/platform/calculate-rule.js | 8 ++ src/views/system/score/default/index.vue | 119 +++++++++++++++++++++------------------ 3 files changed, 76 insertions(+), 56 deletions(-) diff --git a/src/api/platform/calculate-rule.js b/src/api/platform/calculate-rule.js index fd72c18..0979320 100644 --- a/src/api/platform/calculate-rule.js +++ b/src/api/platform/calculate-rule.js @@ -17,6 +17,14 @@ }) } +// 鏍规嵁杩愮淮鍗曚綅鏌ヨ杩濈害瑙勫垯鍒楄〃 +export function getRuleListByUnitId(data) { + return request({ + url: '/calculate/rule/getRuleListByUnitId?unitId=' + data, + method: 'get' + }) +} + // 鏌ヨ杩濈害瑙勫垯璇︾粏 export function getRule(id) { return request({ diff --git a/src/views/system/contract/index.vue b/src/views/system/contract/index.vue index f04da84..0521346 100644 --- a/src/views/system/contract/index.vue +++ b/src/views/system/contract/index.vue @@ -34,8 +34,8 @@ <el-collapse-item v-for="(item, index) in ruleData" :key="index" :title="item.ruleName" :name="index"> <div class="inline-input-container" v-for="(item, index) in item.children" :key="index"> <b>{{ item.ruleDesc }}</b> <br v-if="item.ruleDesc"/> - <el-tooltip class="item" effect="dark" :content="item.deductCategory + ' ' + item.calcFraction + (item.calcUnit ? '/' + item.calcUnit : '')" placement="top"> - <span>{{ item.ruleCondition }}</span> + <el-tooltip class="item" v-for="(item, index) in item.children" :key="index" effect="dark" :content="item.deductCategory + ' ' + item.calcFraction + (item.calcUnit ? '/' + item.calcUnit : '')" placement="top"> + <span>{{ item.ruleCondition }}<br/></span> <!-- {{ item.deductCategory }} {{ item.calcFraction }}{{ item.calcUnit ? "/" + item.calcUnit : '' }} --> </el-tooltip> </div> @@ -179,6 +179,7 @@ methods: { submitForm() { updateContract(this.form).then(response => { + this.detail = false; if (response.code != 200) { this.$message.error("鎿嶄綔澶辫触"); } else { diff --git a/src/views/system/score/default/index.vue b/src/views/system/score/default/index.vue index 126fd5e..7edbf72 100644 --- a/src/views/system/score/default/index.vue +++ b/src/views/system/score/default/index.vue @@ -164,59 +164,54 @@ </el-dialog> <!-- 鏂板鎴栦慨鏀� --> - <el-dialog title="杩愮淮绉垎瀹℃牳" :visible.sync="open" width="700px"append-to-body> + <el-dialog title="杩愮淮绉垎瀹℃牳" :visible.sync="open" width="700px" append-to-body> <el-form ref="auditingForm" :model="auditingForm" :rules="auditingRules" label-width="120px"> - <el-form-item label="杩愮淮鑰冩牳鍗曚綅" prop="unitName"> - <el-select v-model="form.unitNameList" placeholder="杩愮淮鑰冩牳鍗曚綅"> + <el-form-item label="杩愮淮鑰冩牳鍗曚綅" prop="unitId"> + <el-select v-model="form.unitId" placeholder="杩愮淮鑰冩牳鍗曚綅" @change="handleChangeUnit"> <el-option - v-for="item in unitNameList" - :key="item.id" - :label="item.value" - :value="item.id"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="鑰冩牳鍚�" prop="examineId"> - <el-select v-model="form.examineId" placeholder="鑰冩牳鍚�" > - <el-option - v-for="item in examineList" - :key="item.id" - :label="item.value" - :value="item.id"> - </el-option> + v-for="item in unitList" + :key="item.id" + :label="item.value" + :value="item.id"> + </el-option> </el-select> </el-form-item> <el-form-item label="杩愮淮鑰冩牳瑙勫垯" prop="tempRuleFormList"> <div class="row-warp"> - <div class="row" v-for="(form) in tempRuleFormList"> + <div class="row"> <div class="row-left"> - <div>瑙勫垯</div> <div class="block"> <span class="demonstration"></span> <el-cascader + ref="cascader" v-model="value" :options="options" - :props = "props" - @change="handleChange"></el-cascader> + @change="handleChange"> + <template slot-scope="{ data }"> + <el-tooltip + class="item" + :disabled="data.label.length < 16 && !data.deductCategory" + effect="dark" + :content="data.label.length < 16 ? data.deductCategory ? data.deductCategory + ' ' + data.calcFraction + (data.calcUnit ? '/' + data.calcUnit : '') : '' : (data.deductCategory ? data.label + ' ' + data.deductCategory + ' ' + data.calcFraction + (data.calcUnit ? '/' + data.calcUnit : '') : data.label)" + placement="left" + > + <span>{{ data.label }}</span> + </el-tooltip> + </template> + </el-cascader> </div> </div> - <div class="row-right"> + <div class="row-right" v-if="needNum"> <div>鎸囨爣</div> <div class="margin-5"> - <el-input type="number" v-model="form.weight"/> + <el-input type="number" placeholder="璇疯緭鍏�" v-model="form.num" @change="handleChangeNum"/> </div> </div> - <div class="item-op"> - <el-button @click="removeRule(form)" type="danger" icon="el-icon-delete" circle></el-button> - </div> - </div> - <div style="margin-top: 25px"> - <el-button type="success" @click="nextAdd" size="mini" plain>娣诲姞</el-button> </div> </div> </el-form-item> - <el-form-item label="杩愮淮鑰冩牳鎵e垎" style="width: 20%"> - <el-input v-model="auditingForm.score"></el-input> + <el-form-item label="杩愮淮鑰冩牳鎵e垎" style="width: 51%"> + <el-input type="number" v-model="form.score"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> @@ -230,33 +225,17 @@ <script> import { listAuditing, getAuditing, delAuditing, addAuditing, updateAuditing,auditing } from "@/api/platform/contract-score"; import { unitSelect } from "@/api/platform/unit"; +import { getRuleListByUnitId } from "@/api/platform/calculate-rule"; export default { name: "Auditing", data() { return { - options: [{ - value: 'city', - label: '鍓嶇鎰熺煡婧愭不鐞嗗伐浣�', - children: [{ - value: 'fushun', - label: '鏃堕挓鍚屾', - }, { - value: 'rong', - label: 'OSD鏍囪瘑鏈慨澶�', - }, { - value: 'rong', - label: '涓�鏈轰竴妗d笉鍚堟牸', - } - ] - }, - ], + needNum: false, + options: [], auditingOpen: false, auditingForm: {}, unitList: [], - unitNameList: [ - {id:2 , value:"鎴愰兘x杩愮淮"} - ], // 鑰冩牳妯℃澘 examineList: [ {id:1 , value:"杞﹁締鑰冩牳"}, @@ -314,8 +293,36 @@ this.getUnitSelect(); }, methods: { - handleChange(value) { - console.log(value); + handleChange() { + let item = this.$refs['cascader'].getCheckedNodes()[0].data; + console.log("item", item); + if (item.deductCategory == "鎵f寚瀹氬垎鏁�") { + this.needNum = false; + this.form.score = item.calcFraction; + } else { + this.needNum = true; + this.form.score = null; + } + }, + handleChangeNum() { + // 绠楀垎 + }, + handleChangeUnit(value) { + getRuleListByUnitId(value).then((res) => { + this.options = this.getTreeData(res.data); + }) + }, + getTreeData(data){ + for(var i=0;i<data.length;i++){ + if(data[i].children.length<1){ + // children鑻ヤ负绌烘暟缁勶紝鍒欏皢children璁句负undefined + data[i].children=undefined; + }else { + // children鑻ヤ笉涓虹┖鏁扮粍锛屽垯缁х画 閫掑綊璋冪敤 鏈柟娉� + this.getTreeData(data[i].children); + } + } + return data; }, // 鎻愪氦瀹℃牳 submitAuditing() { @@ -489,4 +496,8 @@ flex-direction: row; } </style> - +<style> +.el-cascader-node { + max-width: 300px; +} +</style> \ No newline at end of file -- Gitblit v1.8.0