From c887bb7836b82573c0bc7d11b8dd46b4d7e522e1 Mon Sep 17 00:00:00 2001 From: “linengliang” <vanSuperEnergy@163.com> Date: 星期四, 14 九月 2023 18:11:55 +0800 Subject: [PATCH] 预测性维护工单 --- src/views/eam/modules/predictiveWorkOrder/ActualMaterialEditTable.vue | 277 +++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 196 insertions(+), 81 deletions(-) diff --git a/src/views/eam/modules/predictiveWorkOrder/ActualMaterialEditTable.vue b/src/views/eam/modules/predictiveWorkOrder/ActualMaterialEditTable.vue index 448d049..22a19f5 100644 --- a/src/views/eam/modules/predictiveWorkOrder/ActualMaterialEditTable.vue +++ b/src/views/eam/modules/predictiveWorkOrder/ActualMaterialEditTable.vue @@ -29,20 +29,50 @@ /> <a-input-number :value="text" - v-if="col.dataIndex == 'actualQuantity'" + v-if="col.dataIndex == 'quantity'" :min="1" :max="99999" @change="(e)=>handleChange(e, record.key, col, index)" - :disabled="record.disabled" + :disabled="record.isLock == 'yes'||orderStatus!='4'" /> </div> </template> <span slot='action' - slot-scope='text, record,index' + slot-scope='text, record' > - <a @click="handleDeleteFake(index)">鍒犻櫎</a> + <a-popconfirm + title="纭閿佹枡鍚�?" + @confirm="() => handleLock(record)" + > + <a + v-has="'specialtyMaintenanceOrder:actualMaterialLock'" + v-if="record.isLock=='no'&&orderStatus=='4'" + >閿佹枡</a> + </a-popconfirm> + <a-divider + v-if="record.isLock=='no'" + type="vertical" + /> + <a-popconfirm + title="瑙i攣鍚庝細鑷姩閲婃斁搴撳瓨锛岀‘璁よВ閿佸悧?" + @confirm="() => handleUnLock(record)" + > + <a + v-has="'specialtyMaintenanceOrder:actualMaterialLock'" + v-if="record.isLock=='yes'&&orderStatus=='4'" + >瑙i攣</a> + </a-popconfirm> + <a-popconfirm + title="纭畾鍒犻櫎鍚�?" + @confirm="() => handleDelete(record.id)" + > + <a + v-has="'specialtyMaintenanceOrder:actualMaterialDelete'" + v-if="record.isLock=='no'&&orderStatus=='4'" + >鍒犻櫎</a> + </a-popconfirm> </span> </a-table> <a-button @@ -50,37 +80,35 @@ type="dashed" icon="plus" @click="addMaterial" - :disabled="repairOrderStatus!='3'" - >娣诲姞瀹為檯鐢ㄦ枡 - - </a-button> + :disabled="orderStatus!='4'" + v-has="'specialtyMaintenanceOrder:actualMaterialAdd'" + >娣诲姞瀹為檯鐢ㄦ枡</a-button> <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}"> <a-row :style="{textAlign:'right'}"> - <a-button + <!-- <a-button :style="{marginRight: '8px'}" @click="handleCancel" - :disabled="repairOrderStatus!='3'" > - 娓呯┖ - </a-button> - <a-button + 鍙栨秷 + </a-button> --> + <!-- <a-button @click="handleOk(1)" type="primary" :style="{marginRight: '8px'}" - :disabled="repairOrderStatus!='3'" + :disabled="orderStatus!='4'" >鏆傚瓨</a-button> <a-button @click="handleOk(0)" type="primary" - :disabled="repairOrderStatus!='3'" - >淇濆瓨</a-button> + :disabled="orderStatus!='4'" + >淇濆瓨</a-button> --> </a-row> <!-- :disabled="false" --> </div> - <actual-material-select - ref="actualMaterialSelect" - @sendMaterialRecord="sendMaterialRecord" - > + <actual-material-select + @getSelectRows="getSelectRows" + ref='JSelectSparePartModal'> + <!-- @sendMaterialRecord="sendMaterialRecord" --> </actual-material-select> </a-card> </template> @@ -95,29 +123,34 @@ mixins: [JeecgListMixin], components: { JEllipsis, - ActualMaterialSelect + ActualMaterialSelect, }, props: { - repairOrderId: { - type: String, - required: false, - default: '-1' - }, - repairOrderStatus: { + orderId: { type: String, required: false, default: '' - } + }, + orderStatus: { + type: String, + required: false, + default: '' + }, + equipmentId: { + type: String, + required: false, + default: '' + }, }, data() { return { - title: "宸ヨ壓纭", - flag: false,//涓婚〉闈㈢殑鏍囪浣� 鐢ㄤ簬鍖哄垎鏄惁纭杩囧伐鍗曞伐鑹� 鏉ュ尯鍒唗able椤靛睍绀� 宸ュ崟宸ュ簭 杩樻槸浜у搧宸ュ簭 + disableMixiCreated:true, + title: "瀹為檯鐢ㄦ枡", visible: false, model: {}, - obj: {}, maskClosable: true, confirmLoading: false, + // specialyMaintenanceOrderStatus: '', form: this.$form.createForm(this), /* 鍒嗛〉鍙傛暟 */ ipagination: { @@ -137,7 +170,7 @@ { required: true, message: '璇烽�夋嫨鐗╂枡!' }, ] }, - actualQuantity: { + quantity: { rules: [ { required: false, message: '璇峰~鍐欐暟閲�!' }, ] @@ -158,8 +191,8 @@ loading: false, dataSource: [], columns: [ - { - title: '棰嗘枡鍑哄簱鍗曞彿', + { + title: '棰嗘枡鍑哄簱鍗�', dataIndex: 'num', align: "center", width: 150, @@ -224,23 +257,44 @@ } ], url: { - list: "/eam/repairOrder/listRepairOrderActualMaterialByMainId", - confirmMaterial: "/eam/repairOrder/addRepairOrderActualMaterial" + list: "/eam/maintenanceOrderActualMaterial/getMaintenanceOrderActualMaterialList", + confirmMaterial: "/eam/maintenanceOrderActualMaterial/add", + delete: "/eam/maintenanceOrderActualMaterial/delete", + addInit: "/eam/maintenanceOrderActualMaterial/addInit", + lock: "/eam/maintenanceOrderActualMaterial/lock", + unLock: "/eam/maintenanceOrderActualMaterial/unLock" }, changeIndex: 0 } }, - - created() { - this.queryParam['repairOrderId'] = this.repairOrderId; - this.loadData(1); + watch: { + orderId: { + immediate: true, + handler(val) { + if(this.orderId){ + alert + this.queryParam['maintenanceOrderId'] = val + this.queryParam['equipmentId'] = this.equipmentId + this.queryParam['delFlag'] = 0 + this.loadData(1); + }else{ + this.clearList(); + } + } + }, }, methods: { addMaterial() { - this.dataSource.push({ materialId: '', repairOrderId: this.repairOrderId, actualQuantity: 1, materialNum: '', materialName: '', materialModel: '', materialSpecification: '', unitId_dictText: '' }) + let ids = []; + for (let i = 0; i < this.dataSource.length; i++) { + ids.push(this.dataSource[i].outboundOrderDetailId); + } + this.$refs.JSelectSparePartModal.showModals(ids); + this.$refs.JSelectSparePartModal.title = '閫夋嫨澶囦欢淇℃伅' + this.$refs.JSelectSparePartModal.disableSubmit = false }, handleCancel() { - this.close() + this.$bus.$emit('closeDrawer'); }, close() { this.$emit('close'); @@ -261,18 +315,23 @@ that.$message.warning("璇烽�夋嫨绗�" + (i + 1) + "琛岀墿鏂欙紒"); return false; } - if (materialDataSource[i].actualQuantity == undefined || materialDataSource[i].actualQuantity == null || materialDataSource[i].actualQuantity == '') { + if (materialDataSource[i].quantity == undefined || materialDataSource[i].quantity == null || materialDataSource[i].quantity == '') { that.$message.warning("璇峰~鍐欑" + (i + 1) + "琛岀敤鏂欐暟锛�"); return false; } } } + if (that.dataSource.length === 0) { + that.$message.warning("璇锋坊鍔犵墿鏂欙紒") + return + } this.form.validateFields((err, values) => { if (!err) { that.confirmLoading = true let formData = {} - formData.repairOrderId = that.repairOrderId; - formData.actualMaterialList = that.dataSource; + formData.maintenanceOrderId = that.specialyMaintenanceOrderId; + formData.maintenanceOrderActualMaterials = that.dataSource; + formData.equipmentId = that.equipmentId; let obj = obj = postAction(this.url.confirmMaterial, formData) obj.then((res) => { if (res.success) { @@ -290,18 +349,17 @@ }) }, handleChange(value, key, column, index) { - let that = this; - const temp = [...that.dataSource]; - const target = temp[index]; + console.log(column) + const temp = [...this.dataSource] + const target = temp[index] + let availableQuantity = target['availableQuantity'] if (target) { - target[column.dataIndex] = value; - if ('materialId' == column.dataIndex) { - target['materialId'] = value; + if (value != undefined && value != null && value != '' && availableQuantity < value) { + this.$message.error('浣跨敤鏁伴噺涓嶈兘澶т簬鍙敤鏁伴噺!') + } else { } - if ('actualQuantity' == column.dataIndex) { - target['actualQuantity'] = value; - } - that.dataSource = temp; + target[column.dataIndex] = value + this.dataSource = temp } }, onSearchMaterial(index) { @@ -309,37 +367,94 @@ this.$refs.actualMaterialSelect.list() this.$refs.actualMaterialSelect.title = '鐗╂枡閫夋嫨' }, - sendMaterialRecord(data, val) { - let record = data.record - const temp = [...this.dataSource] - const target = temp[this.recordIndex] - if (target) { - console.log(target) - target.materialId = record.id; - target.materialName = record.name; - target.materialNum = record.num; - target.materialModel = record.model; - target.materialSpecification = record.specification; - target.unitId_dictText = record.unitId_dictText; - this.dataSource = temp - } - }, clearList() { this.dataSource = []; this.ipagination.current = 1 + }, + // getUuiD(randomLength) { + // return Number( + // Math.random() + // .toString() + // .substr(2, randomLength) + Date.now() + // ).toString(36) + // }, + handleLock(record) { + let that = this; + if (record.quantity == null || record.quantity == undefined || record.quantity == '') { + this.$message.error('璇峰厛濉啓鏁伴噺!'); + return false + } + if (record.availableQuantity < record.quantity) { + this.$message.error('浣跨敤鏁伴噺涓嶈兘澶т簬鍙敤鏁伴噺!'); + return false; + } + this.confirmLoading = true; + postAction(this.url.lock, record).then(res => { + if (res.success) { + this.$message.success("搴撳瓨閿佸畾鎴愬姛锛�") + } else { + this.$message.error(res.message) + } + }).finally(res => { + that.confirmLoading = false + that.loadData(); + }) + + }, + handleUnLock(record) { + let that = this; + this.confirmLoading = true; + postAction(this.url.unLock, record).then(res => { + if (res.success) { + this.$message.success("搴撳瓨瑙i攣鎴愬姛锛�") + } else { + this.$message.error(res.message) + } + }).finally(res => { + that.confirmLoading = false + that.loadData(); + }) + }, + getSelectRows(data){ + let newActualMaterials = []; + for (let i = 0; i < data.length; i++) { + newActualMaterials.push({ + // id: this.getUuiD(16), + // num: data[i].num, + outboundOrderDetailId: data[i].id, + sparePartId: data[i].sparePartId, + // sparePartNum: data[i].spareNum, + // sparePartName: data[i].spareName, + // specification: data[i].specification, + // model: data[i].model, + // constructorName: data[i].constructorName, + // constructorId: data[i].constructorId, + // mainUnitName: data[i].mainUnitName, + // mainUnitId: data[i].mainUnitId, + mainQuantity: data[i].mainQuantity, + useQuantity: data[i].useQuantity, + availableQuantity: data[i].availableQuantity, + maintenanceOrderId: this.orderId, + equipmentId: this.equipmentId, + isLock: 'no' + }) + } + let that = this + postAction(this.url.addInit, newActualMaterials).then((res) => { + if (res.success) { + that.$message.success(res.message) + that.$emit('ok') + } else { + that.$message.warning(res.message) + } + }).finally(res => { + newActualMaterials = [] + that.loadData(); + + }) + } }, - - watch: { - repairOrderId: { - immediate: true, - handler(val) { - this.clearList(); - this.queryParam['repairOrderId'] = val - this.loadData(1); - } - } - } } </script> -- Gitblit v1.9.3