From cfa6fbe23b5aea9b400fab78e04239b64d0dda92 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期六, 24 八月 2024 18:44:35 +0800 Subject: [PATCH] 工单下发分页优化 --- src/views/system/work-order/distribute/index.vue | 191 ++++++++++++++++++++++++++++------------------- 1 files changed, 113 insertions(+), 78 deletions(-) diff --git a/src/views/system/work-order/distribute/index.vue b/src/views/system/work-order/distribute/index.vue index 1db9c1d..5bd701e 100644 --- a/src/views/system/work-order/distribute/index.vue +++ b/src/views/system/work-order/distribute/index.vue @@ -10,45 +10,47 @@ {{ item.unitName }}锛坽{ item.workOrderCount }}锛� </el-menu-item> </el-menu> - <el-popover - placement="right" - width="400" - trigger="click"> - <el-form :model="settingForm" :rules="settingRules" ref="settingForm" label-width="120px"> - <el-form-item label="褰曞儚璐ㄩ噺" prop="videoQuality"> - <el-select style="width: 100%" v-model="settingForm.videoQuality" placeholder="鏈�浣庡綍鍍忚川閲�"> - <el-option label="鍏ㄥ綍鍍�" value="鍏ㄥ綍鍍�"/> - <el-option label="閮ㄥ垎褰曞儚" value="閮ㄥ垎褰曞儚"/> - <el-option label="鏃犲綍鍍�" value="鏃犲綍鍍�"/> - </el-select> - </el-form-item> - <el-form-item label="鐐逛綅绂荤嚎鏃堕暱" prop="outLine"> - <el-input type="number" v-model="settingForm.outLine" placeholder="涓嶈兘瓒呰繃澶氫箙"> - <template slot="append">鍒嗛挓</template> - </el-input> - </el-form-item> - <el-form-item label="瑙嗛鏍囨敞鍑嗙‘鐜�" prop="videoLabel"> - <el-input type="number" v-model="settingForm.videoLabel" placeholder="鏈�浣庡噯纭巼"> - <template slot="append">%</template> - </el-input> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="submitSetting">淇濆瓨</el-button> - </el-form-item> - </el-form> - <el-button title="鑷姩鐢熸垚宸ュ崟璁剧疆" slot="reference" class="setting" style="" type="success" icon="el-icon-s-tools" circle></el-button> - </el-popover> </el-col> </el-row> - <el-row class="op-warp" type="flex" justify="left" > - <el-col :span="24"> - <el-button size="small" type="info" @click="selectedDistribute" class="op">涓嬪彂閫変腑宸ュ崟</el-button> + <el-row class="op-warp"> + <el-row v-show="showSearch"> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> + <el-form-item label="鍏抽敭璇�" prop="keyword"> + <el-input + v-model="queryParams.keyword" + placeholder="鍏抽敭璇嶆悳绱�" + clearable + @keyup.enter.native="page" + @clear="page" + /> + </el-form-item> + <el-form-item label="鏁呴殰绫诲瀷" prop="errorTypeList"> + <el-select v-model="queryParams.errorTypeList" multiple placeholder="鏁呴殰绫诲瀷" clearable @change="page" @clear="page"> + <el-option v-for="dict in dict.type.error_type" + :value="dict.value" + :label="dict.label"/> + </el-select> + </el-form-item> + <el-form-item label="涓嬪彂鐘舵��" prop="status"> + <el-select v-model="queryParams.status" @change="page" placeholder="涓嬪彂鐘舵��" clearable> + <el-option label="鏈笅鍙�" value="WAIT_DISTRIBUTE"/> + <el-option label="宸蹭笅鍙�" value="DISTRIBUTED"/> + </el-select> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="small" @click="page">鎼滅储</el-button> + </el-form-item> + </el-form> + </el-row> + + <el-row> + <el-button size="mini" plain type="info" @click="selectedDistribute" class="op">涓嬪彂閫変腑宸ュ崟</el-button> <el-popconfirm @confirm="allDistribute" title="纭畾瑕佷笅鍙戞墍鏈夊伐鍗曞悧锛�" > - <el-button size="small" type="danger" class="op" slot="reference">鍏ㄩ儴涓嬪彂</el-button> + <el-button size="mini" plain type="danger" class="op" slot="reference">鍏ㄩ儴涓嬪彂</el-button> </el-popconfirm> <el-popover @@ -59,41 +61,43 @@ <span style="font-weight: bold;font-size: 16px">蹇嵎涓嬪彂</span> <el-form ref="fastDistributeForm" :model="fastDistributeForm" :rules="fastDistributeRules" label-width="80px"> <el-form-item label="蹇嵎鏂瑰紡" prop="fastWay"> - <el-radio v-model="fastDistributeForm.fastWay" label="0">鏈�杩�30鍒嗛挓</el-radio> - <el-radio v-model="fastDistributeForm.fastWay" label="01">鏈�杩�1灏忔椂</el-radio> - <el-radio v-model="fastDistributeForm.fastWay" label="10">鏈�杩�2灏忔椂</el-radio> - <el-radio v-model="fastDistributeForm.fastWay" label="11">鏈�杩�1澶�</el-radio> - <el-radio v-model="fastDistributeForm.fastWay" label="101">鑷畾涔�</el-radio> + <el-radio v-model="fastDistributeForm.fastWay" label="LAST_HALF_HOUR">鏈�杩�30鍒嗛挓</el-radio> + <el-radio v-model="fastDistributeForm.fastWay" label="LAST_HOUR">鏈�杩�1灏忔椂</el-radio> + <el-radio v-model="fastDistributeForm.fastWay" label="LAST_TWO_HOUR">鏈�杩�2灏忔椂</el-radio> + <el-radio v-model="fastDistributeForm.fastWay" label="LAST_DAY">鏈�杩�1澶�</el-radio> + <el-radio v-model="fastDistributeForm.fastWay" label="CUSTOM">鑷畾涔�</el-radio> </el-form-item> - <el-form-item v-if="fastDistributeForm.fastWay === '101'" label="鏃堕棿鑼冨洿"> + <el-form-item v-if="fastDistributeForm.fastWay === 'CUSTOM'" label="鏃堕棿鑼冨洿"> <el-date-picker style="width: 100%" v-model="fastTimeRange" type="datetimerange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" + value-format="yyyy-MM-dd HH:mm:ss" end-placeholder="缁撴潫鏃ユ湡"> </el-date-picker> </el-form-item> <el-form-item label="鏁呴殰绫诲瀷" prop="errorType"> - <el-select v-model="fastDistributeForm.errorType"> - <el-option label="甯傛斂鏂藉伐" value="甯傛斂鏂藉伐"/> - <el-option label="璁惧鏁呴殰" value="璁惧鏁呴殰"/> - <el-option label="璁惧閬楀け" value="璁惧閬楀け"/> + <el-select v-model="fastDistributeForm.errorType" multiple> + <el-option v-for="dict in dict.type.error_type" + :value="dict.value" + :key="dict.value" + :label="dict.label"/> </el-select> </el-form-item> <el-form-item label="鏁伴噺闄愬埗" prop="fastNumLimit"> - <el-input v-model="fastDistributeForm.fastNumLimit" size="small" type="number" placeholder="姝ゆ宸ュ崟涓嬪彂鏈�澶ф暟閲�"></el-input> + <el-input v-model="fastDistributeForm.fastNumLimit" type="number" placeholder="姝ゆ宸ュ崟涓嬪彂鏈�澶ф暟閲�"></el-input> </el-form-item> <el-form-item> <el-button type="primary" size="small" @click="fastDistribute">绔嬪嵆涓嬪彂</el-button> </el-form-item> </el-form> - <el-button slot="reference" type="primary" size="small">蹇嵎涓嬪彂</el-button> + <el-button slot="reference" type="primary" size="mini" plain>蹇嵎涓嬪彂</el-button> </el-popover> - <el-button size="small" type="primary" @click="page">鍒锋柊</el-button> - <el-button size="small" type="primary" @click="handleAdd">鏂板</el-button> - </el-col> + <el-button size="mini" plain type="success" @click="handleAdd">鎵嬪姩鏂板宸ュ崟</el-button> + <right-toolbar :showSearch.sync="showSearch" @queryTable="page"></right-toolbar> + </el-row> </el-row> <el-row class="content-warp" type="flex" justify="left"> @@ -101,10 +105,22 @@ <el-table v-loading="loading" :data="workOrderList" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" align="center" /> <el-table-column label="宸ュ崟鍙�" align="center" prop="workOrderNo"/> - <el-table-column label="杩愮淮鍗曚綅" align="center" prop="unitName"/> - <el-table-column label="宸ュ崟鏉ユ簮" align="center" prop="source"/> + <el-table-column label="鏁呴殰鐐逛綅" align="center" prop="source"> + <template slot-scope="scope"> + <el-popover + placement="right" + :title="scope.row.important ? '閲嶇偣鐐逛綅': '姝e父鐐逛綅'" + width="200" + trigger="hover"> + <span :class="{important: scope.row.important}" slot="reference">{{ scope.row.source }}</span> + </el-popover> + </template> + </el-table-column> <el-table-column label="鏁呴殰绫诲瀷" align="center" prop="errorType"/> + <el-table-column label="杩愮淮鍗曚綅" align="center" prop="unitName"/> <el-table-column label="浜х敓鏃堕棿" align="center" prop="createTime"/> + <el-table-column v-if="queryParams.status === 'DISTRIBUTED'" label="涓嬪彂浜�" align="center" prop="realName"/> + <el-table-column v-if="queryParams.status === 'DISTRIBUTED'" label="涓嬪彂鏃堕棿" align="center" prop="distributeTime"/> </el-table> <pagination @@ -139,6 +155,7 @@ reserve-keyword placeholder="璇烽�夋嫨鏉ユ簮" :remote-method="remoteGetPoints" + @change="setPointId" :loading="selectLoading"> <el-option v-for="item in pointList" @@ -149,16 +166,17 @@ </el-select> </el-form-item> <el-form-item label="鏁呴殰绫诲瀷" prop="errorType"> - <el-select v-model="form.errorType"> - <el-option label="甯傛斂鏂藉伐" value="甯傛斂鏂藉伐"/> - <el-option label="璁惧鏁呴殰" value="璁惧鏁呴殰"/> - <el-option label="璁惧閬楀け" value="璁惧閬楀け"/> + <el-select v-model="form.errorType" multiple> + <el-option v-for="dict in dict.type.error_type" + :value="dict.value" + :key="dict.value" + :label="dict.label"/> </el-select> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> - <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> <el-button @click="cancel">鍙� 娑�</el-button> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> </div> </el-dialog> @@ -170,9 +188,15 @@ import {workList} from "@/api/platform/unit"; import { pointSelectData } from "@/api/platform/point"; export default { + dicts: ['error_type'], name: 'index', data() { return { + showSearch: true, + selectedIdsDistributeForm: { + ids: [], + unitId: null + }, unitList: [], settingForm: { // 绂荤嚎 @@ -212,19 +236,21 @@ // 涓嬪彂琛ㄥ崟楠岃瘉 fastDistributeRules: { fastWay: [ - { required: true, message: "璇烽�夋嫨蹇�熷垎鍙戞柟寮�", trigger: "change" } + { required: true, message: "璇烽�夋嫨蹇�熷垎鍙戞柟寮�", trigger: "blur" } ], fastNumLimit: [ - { required: true, message: "璇疯緭鍏ュ揩閫熷垎鍙戞暟閲忛檺鍒�", trigger: "change" } + { required: true, message: "璇疯緭鍏ュ揩閫熷垎鍙戞暟閲忛檺鍒�", trigger: "blur" } ], errorType: [ - { required: true, message: "璇锋晠闅滅被鍨�", trigger: "change" } + { required: true, message: "璇锋晠闅滅被鍨�", trigger: "blur" } ], }, queryParams: { unitId: null, + keyword: '', + status: 'WAIT_DISTRIBUTE', pageNum: 1, - pageSize: 20, + pageSize: 10, }, // 鎬绘潯鏁� total: 0, @@ -270,6 +296,10 @@ }, }, methods: { + setPointId(selectedValue) { + const selectedItem = this.pointList.find(item => item.value === selectedValue); + this.form.serialNumber = selectedItem.id + }, submitSetting() { this.$refs['settingForm'].validate((valid) => { if (valid) { @@ -284,7 +314,7 @@ this.loading = true; this.selectUnit(); distributeWorkOrder(this.queryParams).then(res => { - this.workOrderList = res.data; + this.workOrderList = res.data.records; this.total = res.total; this.loading = false; }) @@ -301,44 +331,43 @@ this.fastDistributeForm.end = null this.fastDistributeForm.fastNumLimit = null this.fastTimeRange = [] + this.fastDistributeForm.errorType = null }, // 鍏ㄩ儴涓嬪彂 allDistribute() { - selectedIdsDistribute([]).then(res => { + this.selectedIdsDistributeForm.unitId = this.unitId + selectedIdsDistribute(this.selectedIdsDistributeForm).then(res => { this.$message.success("宸ュ崟涓嬪彂鎴愬姛") + this.page(); }) }, // 蹇�熶笅鍙� fastDistribute() { - // this.$refs['fastDistributeForm'].validate((valid) => { - // if (valid) { - // 濡傛灉鏄嚜瀹氫箟鏂瑰紡锛岄偅涔堟椂闂存蹇呭~ - if (this.fastDistributeForm.fastWay === '101' && !this.fastTimeRange.length > 0) { - this.$message.warning("璇烽�夋嫨鏃堕棿鑼冨洿") - return false - } - if (this.fastTimeRange.length > 0) { - this.fastDistributeForm.start = this.fastTimeRange[0] - this.fastDistributeForm.end = this.fastTimeRange[1] - } + this.$refs['fastDistributeForm'].validate((valid) => { + if (valid) { + this.fastDistributeForm.start = this.fastTimeRange[0] + this.fastDistributeForm.end = this.fastTimeRange[1] this.fastDistributeForm.unitId = this.unitId fastDistribute(this.fastDistributeForm).then(res => { - // this.clearFastDistributeForm(); + res.code == 200 ? this.$message.success(res.msg) : this.$message.warning(res.msg) + this.clearFastDistributeForm(); this.page(); }) - // } else { - // return false - // } - // }) + } + }) }, // 閫変腑宸ュ崟涓嬪彂 selectedDistribute() { if (this.multipleSelection.length < 1) { this.$message.warning("璇峰厛閫夋嫨瑕佷笅鍙戠殑宸ュ崟") return - } - selectedIdsDistribute(this.multipleSelection).then(res => { + } + this.selectedIdsDistributeForm.unitId = this.unitId; + this.selectedIdsDistributeForm.ids = this.multipleSelection; + selectedIdsDistribute(this.selectedIdsDistributeForm).then(res => { this.$message.success("宸ュ崟涓嬪彂鎴愬姛") + this.selectedIdsDistributeForm.ids = []; + this.page(); }) }, handleSelect(key, keyPath) { @@ -413,6 +442,12 @@ </script> <style scoped> +.important { + color: red; +} +/deep/ .el-popover__title { + margin-bottom: 0px; +} .row { padding: 0 20px; } -- Gitblit v1.8.0