From 5208ae16a508a42be2e4b50ef299389fb556a67e Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期日, 28 四月 2024 09:14:18 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/system/score/default/index.vue | 360 ++++++++++++++++++++++++++++------------------------------- 1 files changed, 173 insertions(+), 187 deletions(-) diff --git a/src/views/system/score/default/index.vue b/src/views/system/score/default/index.vue index 126fd5e..538e637 100644 --- a/src/views/system/score/default/index.vue +++ b/src/views/system/score/default/index.vue @@ -3,36 +3,18 @@ <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px"> <el-form-item label="杩愮淮鑰冩牳鍗曚綅" prop="belongUnit"> <el-select v-model="queryParams.unitId" @change="handleQuery" clearable placeholder="杩愮淮鑰冩牳鍗曚綅"> - <el-option - v-for="item in unitList" - :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="瀹℃牳鏃堕棿"> - <el-date-picker - v-model="daterangeAuditingTime" - style="width: 240px" - value-format="yyyy-MM-dd HH:mm:ss" - type="daterange" - range-separator="-" - start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡" - ></el-date-picker> + <el-date-picker v-model="daterangeAuditingTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" + type="daterange" range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡"></el-date-picker> </el-form-item> <el-form-item label="鍒涘缓鏃堕棿"> - <el-date-picker - v-model="daterangeCreateTime" - style="width: 240px" - value-format="yyyy-MM-dd HH:mm:ss" - type="daterange" - range-separator="-" - start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡" - ></el-date-picker> + <el-date-picker v-model="daterangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" + type="daterange" range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡"></el-date-picker> </el-form-item> <el-form-item> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button> @@ -42,119 +24,76 @@ <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> - <el-button - type="primary" - plain - icon="el-icon-plus" - size="mini" - @click="handleAdd" - v-hasPermi="['system:template:add']" - >鏂板</el-button> + <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" + v-hasPermi="['platform:score:add']">鏂板</el-button> </el-col> <el-col :span="1.5"> - <el-button - type="success" - plain - icon="el-icon-edit" - size="mini" - :disabled="single" - @click="handleUpdate" - v-hasPermi="['system:template:edit']" - >淇敼</el-button> + <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" + v-hasPermi="['platform:score:edit']">淇敼</el-button> </el-col> <el-col :span="1.5"> - <el-button - type="danger" - plain - icon="el-icon-delete" - size="mini" - :disabled="multiple" - @click="handleDelete" - v-hasPermi="['system:template:remove']" - >鍒犻櫎</el-button> + <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" + v-hasPermi="['platform:score:remove']">鍒犻櫎</el-button> </el-col> <el-col :span="1.5"> - <el-button - type="warning" - plain - icon="el-icon-download" - size="mini" - @click="handleExport" - v-hasPermi="['system:template:export']" - >瀵煎嚭</el-button> + <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" + v-hasPermi="['platform:score:export']">瀵煎嚭</el-button> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> <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> + <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 - size="mini" - type="text" - icon="el-icon-s-check" - @click="handleAuditing(scope.row)" - v-hasPermi="['default:audit']" - >瀹℃牳</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-delete" - @click="handleDelete(scope.row)" - >鍒犻櫎</el-button> + <el-button size="mini" type="text" 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-if="scope.row.auditingStatus === '寰呭鏍�'" v-hasPermi="['system:auditing:edit']">淇敼</el-button> + <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">鍒犻櫎</el-button> </template> </el-table-column> </el-table> - <pagination - v-show="total>0" - :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" - @pagination="getList" - /> + <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" + @pagination="getList" /> <!-- 瀹℃牳 --> <el-dialog title="杩愮淮鑰冩牳瀹℃牳" :visible.sync="auditingOpen" width="500px" append-to-body> <el-form ref="auditingForm" :model="auditingForm" :rules="auditingRules" label-width="120px"> <el-form-item label="杩愮淮鑰冩牳鍗曚綅"> - <el-input v-model="auditingForm.unitName" disabled/> + <el-input v-model="auditingForm.unitName" disabled /> </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-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"/> + <el-input v-model="auditingForm.remark" type="textarea" show-word-limit maxlength="100" /> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> @@ -164,63 +103,46 @@ </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-option - v-for="item in unitNameList" - :key="item.id" - :label="item.value" - :value="item.id"> + <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 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" - :options="options" - :props = "props" - @change="handleChange"></el-cascader> + <el-cascader ref="cascader" v-model="form.ruleIdsArray" :options="options" @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> @@ -228,44 +150,24 @@ </template> <script> -import { listAuditing, getAuditing, delAuditing, addAuditing, updateAuditing,auditing } from "@/api/platform/contract-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:"瑙嗛鑰冩牳"} + { id: 1, value: "杞﹁締鑰冩牳" }, + { id: 2, value: "瑙嗛鑰冩牳" } ], - // 涓存椂瑙勫垯琛ㄥ崟 - tempRuleForm: {}, - // 涓存椂瑙勫垯琛ㄥ崟鍒楄〃 - tempRuleFormList: [{"ruleId": null, "adjustCoefficient": null}], // 閬僵灞� loading: true, // 閫変腑鏁扮粍 @@ -293,20 +195,45 @@ queryParams: { pageNum: 1, pageSize: 10, - defaultId: null, + unitId: null, auditingStatus: null, auditingTime: null, auditingUser: null, createTime: null, }, // 琛ㄥ崟鍙傛暟 - form: {}, + form: { + score: '', + temp: '' + }, // 琛ㄥ崟鏍¢獙 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() { @@ -314,8 +241,51 @@ 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 = ''; + } + 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() { @@ -336,8 +306,7 @@ // 鎵撳紑瀹℃牳 handleAuditing(row) { this.auditingOpen = true; - this.auditingForm = row; - this.auditingForm.auditingStatus = this.auditingForm.auditingStatus ? this.auditingForm.auditingStatus : null + this.auditingForm = { ...row }; }, // 鍏抽棴瀹℃牳 closeAuditing() { @@ -363,8 +332,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; }); @@ -379,20 +349,16 @@ reset() { this.form = { id: null, - defaultId: null, auditingStatus: null, remark: null, auditingTime: null, auditingUser: null, - createTime: null, - updateTime: null, - deleted: null + score: '' }; this.resetForm("form"); }, /** 鎼滅储鎸夐挳鎿嶄綔 */ handleQuery() { - this.queryParams.pageNum = 1; this.getList(); }, /** 閲嶇疆鎸夐挳鎿嶄綔 */ @@ -405,7 +371,7 @@ // 澶氶�夋閫変腑鏁版嵁 handleSelectionChange(selection) { this.ids = selection.map(item => item.id) - this.single = selection.length!==1 + this.single = selection.length !== 1 this.multiple = !selection.length }, /** 鏂板鎸夐挳鎿嶄綔 */ @@ -418,14 +384,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.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) { @@ -447,18 +425,18 @@ /** 鍒犻櫎鎸夐挳鎿嶄綔 */ handleDelete(row) { const ids = row.id || this.ids; - this.$modal.confirm('鏄惁纭鍒犻櫎杩愮淮鑰冩牳瀹℃牳缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() { + this.$modal.confirm('鏄惁纭鍒犻櫎杩愮淮鑰冩牳瀹℃牳缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function () { return delAuditing(ids); }).then(() => { this.getList(); this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); - }).catch(() => {}); + }).catch(() => { }); }, /** 瀵煎嚭鎸夐挳鎿嶄綔 */ handleExport() { - this.download('/default-auditing/export', { + this.download('/contract/score/export', { ...this.queryParams - }, `auditing_${new Date().getTime()}.xlsx`) + }, `鍚堝悓鑰冩牳绉垎_${new Date().getTime()}.xlsx`) } } }; @@ -467,10 +445,12 @@ .margin-5 { margin-left: 5px; } + .row-warp { display: flex; flex-direction: column; } + .row { display: flex; flex-direction: row; @@ -478,15 +458,21 @@ justify-content: center; margin: 5px 0; } + .row-left { flex: 1; display: flex; flex-direction: row; } + .row-right { flex: 1; display: flex; flex-direction: row; } </style> - +<style> +.el-cascader-node { + max-width: 300px; +} +</style> \ No newline at end of file -- Gitblit v1.8.0