From 6a3a82279be265d61faaffa0100e25820e2be6f6 Mon Sep 17 00:00:00 2001 From: ZhangXianQiang <1135831638@qq.com> Date: 星期五, 26 四月 2024 10:56:51 +0800 Subject: [PATCH] fix:修改考核结果表格分页 --- src/views/system/score/default/index.vue | 260 +++++++++++++++++++++++++++++++-------------------- 1 files changed, 159 insertions(+), 101 deletions(-) diff --git a/src/views/system/score/default/index.vue b/src/views/system/score/default/index.vue index bb8463e..d62817e 100644 --- a/src/views/system/score/default/index.vue +++ b/src/views/system/score/default/index.vue @@ -48,6 +48,7 @@ icon="el-icon-plus" size="mini" @click="handleAdd" + v-hasPermi="['platform:score:add']" >鏂板</el-button> </el-col> <el-col :span="1.5"> @@ -58,6 +59,7 @@ size="mini" :disabled="single" @click="handleUpdate" + v-hasPermi="['platform:score:edit']" >淇敼</el-button> </el-col> <el-col :span="1.5"> @@ -68,6 +70,7 @@ size="mini" :disabled="multiple" @click="handleDelete" + v-hasPermi="['platform:score:remove']" >鍒犻櫎</el-button> </el-col> <el-col :span="1.5"> @@ -77,7 +80,7 @@ icon="el-icon-download" size="mini" @click="handleExport" - v-hasPermi="['system:auditing:export']" + v-hasPermi="['platform:score:export']" >瀵煎嚭</el-button> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> @@ -85,20 +88,20 @@ <el-table v-loading="loading" :data="auditingList" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" align="center" /> - <el-table-column label="杩愮淮鑰冩牳鍗曚綅" align="center" prop="unitName" width="180"/> - <el-table-column label="鑰冩牳鍚�" align="center" prop="checkPublishId" width="180"> + <el-table-column label="鑰冩牳鍗曚綅" align="center" prop="unitName" width="180"/> + <el-table-column label="鑰冩牳鍚堝悓" align="center" prop="contractName" width="180" /> + <el-table-column label="鑰冩牳瑙勫垯" align="center" prop="ruleName" width="120" :show-overflow-tooltip="true"/> + <el-table-column label="鑰冩牳鎸囨爣" align="center" prop="num" width="120" /> + <el-table-column label="鑰冩牳鎵e垎" align="center" prop="score" width="120" /> + <el-table-column label="鍒涘缓浜�" align="center" prop="createUser" /> + <el-table-column label="瀹℃牳鐘舵��" align="center" prop="auditingStatus"> <template slot-scope="scope"> - <div v-if="scope.row.checkPublishId === 5">瑙嗛鑰冩牳</div> - </template> + <el-tag + :type="scope.row.auditingStatus === '閫氳繃' ? 'success' : scope.row.auditingStatus === '鏈�氳繃' ? 'danger' : 'primary'" + disable-transitions>{{scope.row.auditingStatus}}</el-tag> + </template> </el-table-column> - <el-table-column label="杩愮淮鑰冩牳瑙勫垯" align="center" prop="defaultRuleName" width="180" /> - <el-table-column label="杩愮淮鑰冩牳鎵e垎" align="center" prop="score" width="120" /> - <el-table-column label="鍒涘缓浜�" align="center" prop="createBy" /> - <el-table-column label="瀹℃牳浜�" align="center" prop="auditingUserName" /> - <el-table-column label="瀹℃牳鐘舵��" align="center" prop="auditingStatus" /> - <el-table-column label="瀹℃牳璇存槑" align="center" prop="remark" width="180"/> - <el-table-column label="瀹℃牳鏃堕棿" align="center" prop="auditingTime" width="180"/> - <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="180"/> + <el-table-column label="瀹℃牳浜�" align="center" prop="auditingUser" /> <el-table-column label="鎿嶄綔" align="center" fixed="right" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button @@ -107,14 +110,16 @@ icon="el-icon-s-check" @click="handleAuditing(scope.row)" v-hasPermi="['default:audit']" + v-if="scope.row.auditingStatus === '寰呭鏍�'" >瀹℃牳</el-button> -<!-- <el-button--> -<!-- size="mini"--> -<!-- type="text"--> -<!-- icon="el-icon-edit"--> -<!-- @click="handleUpdate(scope.row)"--> -<!-- v-hasPermi="['system:auditing:edit']"--> -<!-- >淇敼</el-button>--> + <el-button + size="mini" + type="text" + icon="el-icon-edit" + @click="handleUpdate(scope.row)" + v-if="scope.row.auditingStatus === '寰呭鏍�'" + v-hasPermi="['system:auditing:edit']" + >淇敼</el-button> <el-button size="mini" type="text" @@ -141,14 +146,17 @@ </el-form-item> <el-form-item label="杩愮淮鑰冩牳瑙勫垯"> - <el-input v-model="auditingForm.defaultRuleName" disabled/> + <el-input v-model="auditingForm.ruleName" type="textarea" autosize disabled/> + </el-form-item> + <el-form-item label="杩愮淮鑰冩牳鎸囨爣"> + <el-input v-model="auditingForm.num" disabled/> </el-form-item> <el-form-item label="杩愮淮鑰冩牳鎵e垎"> <el-input v-model="auditingForm.score" disabled/> </el-form-item> <el-form-item label="瀹℃牳缁撴灉" prop="auditingStatus"> - <el-radio v-model="auditingForm.auditingResult" label="pass">閫氳繃</el-radio> - <el-radio v-model="auditingForm.auditingResult" label="return">椹冲洖</el-radio> + <el-radio v-model="auditingForm.auditingStatus" label="閫氳繃">閫氳繃</el-radio> + <el-radio v-model="auditingForm.auditingStatus" label="鏈�氳繃">椹冲洖</el-radio> </el-form-item> <el-form-item label="瀹℃牳璇存槑" prop="remark"> <el-input v-model="auditingForm.remark" type="textarea" show-word-limit maxlength="100"/> @@ -161,63 +169,58 @@ </el-dialog> <!-- 鏂板鎴栦慨鏀� --> - <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-dialog :title="title" :visible.sync="open" width="700px" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="120px"> + <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> + 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="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> - </el-select> - </el-form-item> - <el-form-item label="杩愮淮鑰冩牳瑙勫垯" prop="tempRuleFormList"> + <el-form-item label="杩愮淮鑰冩牳瑙勫垯" prop="ruleIdsArray"> <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 - v-model="value" + ref="cascader" + v-model="form.ruleIdsArray" :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 placeholder="璇疯緭鍏�" v-model="form.num" @input="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%" prop="score"> + <el-input v-model="form.score"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> - <el-button type="primary" @click="submitAuditing">纭� 瀹�</el-button> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> <el-button @click="cancel">鍙� 娑�</el-button> </div> </el-dialog> @@ -225,44 +228,24 @@ </template> <script> -import { listAuditing, getAuditing, delAuditing, addAuditing, updateAuditing,auditing } from "@/api/platform/default-score"; +import { listAuditing, getAuditing, delAuditing, addAuditing, updateAuditing, auditing } from "@/api/platform/contract-score"; import { unitSelect } from "@/api/platform/unit"; +import { getRuleListByUnitId, getRule } 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:"杞﹁締鑰冩牳"}, {id:2 , value:"瑙嗛鑰冩牳"} ], - // 涓存椂瑙勫垯琛ㄥ崟 - tempRuleForm: {}, - // 涓存椂瑙勫垯琛ㄥ崟鍒楄〃 - tempRuleFormList: [{"ruleId": null, "adjustCoefficient": null}], // 閬僵灞� loading: true, // 閫変腑鏁扮粍 @@ -290,7 +273,7 @@ queryParams: { pageNum: 1, pageSize: 10, - defaultId: null, + unitId: null, auditingStatus: null, auditingTime: null, auditingUser: null, @@ -301,9 +284,31 @@ // 琛ㄥ崟鏍¢獙 auditingRules: { auditingStatus: [ - { required: true, message: "璇峰厛瀹屾垚瀹℃牳缁撴灉", trigger: "blur" } + { required: true, message: "璇峰厛瀹屾垚瀹℃牳缁撴灉", trigger: "blur", }, + { + validator: (rule, value, callback) => { + if (value === '寰呭鏍�') { + callback(new Error("璇峰厛瀹屾垚瀹℃牳缁撴灉")); + } else { + callback(); + } + }, + trigger: 'blur' + } ], - } + }, + rules: { + unitId: [ + { required: true, message: "璇烽�夋嫨杩愮淮鑰冩牳鍗曚綅", trigger: "blur" } + ], + ruleIdsArray: [ + { required: true, message: "璇烽�夋嫨杩愮淮鑰冩牳瑙勫垯", trigger: "blur" } + ], + score: [ + { required: true, message: "鍒嗘暟涓嶈兘涓虹┖", trigger: "blur" } + ] + }, + calcObj: {} }; }, created() { @@ -311,8 +316,50 @@ this.getUnitSelect(); }, methods: { - handleChange(value) { - console.log(value); + /** + * 閫夋嫨瑙勫垯 + */ + handleChange() { + let item = this.$refs['cascader'].getCheckedNodes()[0].data; + this.calcObj = item; + this.form.contractId = item.contractId; + if (item.deductCategory == "鎵f寚瀹氬垎鏁�") { + this.needNum = false; + this.form.score = item.calcFraction; + } else { + this.needNum = true; + this.form.score = null; + } + if (this.form.num != null && this.needNum) { + this.handleChangeNum(); + } + }, + /** + * 杈撳叆鎸囨爣 + */ + handleChangeNum() { + if (this.calcObj.deductCategory == "鍒嗘暟涔樹互鏁伴噺") { + this.form.score = Math.floor(this.calcObj.calcFraction * this.form.num * 100) / 100; + } else if (this.calcObj.deductCategory == "闄や互鏁伴噺鍚庝箻浠ュ垎鏁�") { + this.form.score = Math.floor(Math.ceil(this.form.num / this.calcObj.calcUnit) * this.calcObj.calcFraction * 100) / 100; + } + }, + 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() { @@ -333,8 +380,7 @@ // 鎵撳紑瀹℃牳 handleAuditing(row) { this.auditingOpen = true; - this.auditingForm = row; - this.auditingForm.auditingStatus = this.auditingForm.auditingStatus ? this.auditingForm.auditingStatus : null + this.auditingForm = {...row}; }, // 鍏抽棴瀹℃牳 closeAuditing() { @@ -360,8 +406,9 @@ this.queryParams["createStartTime"] = this.daterangeCreateTime[0]; this.queryParams["createEndTime"] = this.daterangeCreateTime[1]; } + console.log("this.queryParams", this.queryParams) listAuditing(this.queryParams).then(response => { - this.auditingList = response.data; + this.auditingList = response.rows; this.total = response.total; this.loading = false; }); @@ -376,20 +423,15 @@ reset() { this.form = { id: null, - defaultId: null, auditingStatus: null, remark: null, auditingTime: null, - auditingUser: null, - createTime: null, - updateTime: null, - deleted: null + auditingUser: null }; this.resetForm("form"); }, /** 鎼滅储鎸夐挳鎿嶄綔 */ handleQuery() { - this.queryParams.pageNum = 1; this.getList(); }, /** 閲嶇疆鎸夐挳鎿嶄綔 */ @@ -415,14 +457,26 @@ handleUpdate(row) { this.reset(); const id = row.id || this.ids + if (row.auditingStatus != '寰呭鏍�') { + this.$message.warning("璇ヨ褰曞凡瀹℃牳锛屼笉鑳戒慨鏀�"); + return; + } getAuditing(id).then(response => { this.form = response.data; this.open = true; - this.title = "淇敼杩愮淮鑰冩牳瀹℃牳"; + this.title = "淇敼杩愮淮鑰冩牳绉垎"; + this.handleChangeUnit(this.form.unitId); + getRule(this.form.ruleId).then(res => { + this.calcObj = res.data; + if (this.calcObj.deductCategory != "鎵f寚瀹氬垎鏁�") { + this.needNum = true; + } + }) }); }, /** 鎻愪氦鎸夐挳 */ submitForm() { + this.form.ruleId = this.calcObj.id; this.$refs["form"].validate(valid => { if (valid) { if (this.form.id != null) { @@ -453,9 +507,9 @@ }, /** 瀵煎嚭鎸夐挳鎿嶄綔 */ handleExport() { - this.download('/default-auditing/export', { + this.download('/contract/score/export', { ...this.queryParams - }, `auditing_${new Date().getTime()}.xlsx`) + }, `鍚堝悓鑰冩牳绉垎_${new Date().getTime()}.xlsx`) } } }; @@ -486,4 +540,8 @@ flex-direction: row; } </style> - +<style> +.el-cascader-node { + max-width: 300px; +} +</style> \ No newline at end of file -- Gitblit v1.8.0