From 722b647891b3d4f120ffb492fea2159b54c20768 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期四, 17 七月 2025 16:43:17 +0800 Subject: [PATCH] 新增二保工单批量新增弹窗 --- src/views/eam/maintenance/modules/EamSecondMaintenanceOrderModal.vue | 2 src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue | 3 src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue | 156 ++++++++++++++++++++++++++ src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue | 142 +++++++++-------------- 4 files changed, 215 insertions(+), 88 deletions(-) diff --git a/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue b/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue index 3b9ed5c..b325d22 100644 --- a/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue +++ b/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue @@ -39,53 +39,36 @@ <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> <div class="table-operator" v-if="isDisplayOperation"> <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> + <a-button @click="handleBatchAdd" type="primary" icon="plus">鎵归噺鏂板</a-button> <a-dropdown v-if="selectedRowKeys.length > 0"> <a-menu slot="overlay"> <a-menu-item key="1" @click="handlerBatchAbolish"> - <a-icon type="delete" /> + <a-icon type="delete"/> 浣滃簾 </a-menu-item> <a-menu-item key="2" @click="handlerBatchCollect"> - <a-icon type="form" /> + <a-icon type="form"/> 棰嗗彇 </a-menu-item> </a-menu> <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 - <a-icon type="down" /> + <a-icon type="down"/> </a-button> </a-dropdown> </div> - <!-- table鍖哄煙-begin --> <div> - <div - class="ant-alert ant-alert-info" - style="margin-bottom: 16px;" - v-if="isDisplayOperation" - > - <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤� - <a - style="margin-left: 24px" - @click="onClearSelected" - >娓呯┖</a> + <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;" v-if="isDisplayOperation"> + <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{selectedRowKeys.length + }}</a>椤� + <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a> </div> - <a-table - ref="table" - size="middle" - bordered - rowKey="id" - :columns="columns" - :dataSource="dataSource" - :pagination="ipagination" - :loading="loading" - class="j-table-force-nowrap" - :scroll="{x:'max-content'}" - :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" - @change="handleTableChange" - > + <a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource" + :pagination="ipagination" :loading="loading" class="j-table-force-nowrap" :scroll="{x:'max-content'}" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" @change="handleTableChange"> <span slot="action" slot-scope="text, record"> <template v-if="record.maintenanceStatus === 'WAIT_MAINTENANCE'"> <a @click="handleEdit(record)">缂栬緫</a> @@ -121,6 +104,8 @@ <!-- 琛ㄥ崟鍖哄煙 --> <eamSecondMaintenanceOrder-modal ref="modalForm" @ok="modalFormOk"/> + <eam-second-maintenance-batch-order-modal ref="batchModalForm" @ok="modalFormOk"/> + <second-maintenance-approval-modal ref="secondMaintenanceApprovalModal" :selectShenpiData="selectSecondMaintenanceData"/> </a-card> @@ -133,11 +118,13 @@ import SecondMaintenanceApprovalModal from '@views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue' import LxSearchEquipmentSelect from '../equipment/modules/LxSearchEquipmentSelect' + import EamSecondMaintenanceBatchOrderModal from './modules/EamSecondMaintenanceBatchOrderModal' export default { name: 'EamSecondMaintenanceOrderList', mixins: [JeecgListMixin], components: { + EamSecondMaintenanceBatchOrderModal, LxSearchEquipmentSelect, EamSecondMaintenanceOrderModal, SecondMaintenanceApprovalModal @@ -280,10 +267,11 @@ this.loadData(1) }, methods: { - onMaintenanceDateChange: function(dataArray) { - this.queryParam.maintenanceDateBegin = dataArray[0] - this.queryParam.maintenanceDateEnd = dataArray[1] + handleBatchAdd() { + this.$refs.batchModalForm.title = '鎵归噺鏂板' + this.$refs.batchModalForm.visible = true }, + /** * 鐐瑰嚮棰嗗彇鏃惰Е鍙� * @param id 琛岃褰昳d @@ -315,9 +303,10 @@ */ handleDetail(record) { this.selectSecondMaintenanceData = Object.assign({}, record) - this.$refs.secondMaintenanceApprovalModal.recordDetail(record) this.$refs.secondMaintenanceApprovalModal.title = '璇︽儏' + this.$refs.secondMaintenanceApprovalModal.visible = true this.$refs.secondMaintenanceApprovalModal.disableSubmit = true + this.$refs.secondMaintenanceApprovalModal.recordDetail(record) }, /** @@ -329,58 +318,37 @@ window.open(href, '_blank') }, handlerAbolish(id) { - if (!this.url.abolish) { - this.$message.error('璇疯缃畊rl.abolish灞炴��!') - return - } var that = this - deleteAction(that.url.abolish, { id: id }).then((res) => { - if (res.success) { - //閲嶆柊璁$畻鍒嗛〉闂 - that.reCalculatePage(1) - // that.$message.success(res.message); - that.$notification.success({ - message: '娑堟伅', - description: res.message - }) - that.loadData() - } else { - // that.$message.warning(res.message); - that.$notification.warning({ - message: '娑堟伅', - description: res.message - }) - } - }) + deleteAction(that.url.abolish, { id }) + .then((res) => { + if (res.success) { + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.loadData() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) }, handlerBatchAbolish() { - if (!this.url.abolishBatch) { - this.$message.error('璇疯缃畊rl.abolishBatch灞炴��!') - return + var ids = '' + for (var a = 0; a < this.selectedRowKeys.length; a++) { + ids += this.selectedRowKeys[a] + ',' } - if (this.selectedRowKeys.length <= 0) { - // this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒'); - this.$notification.warning({ - message: '娑堟伅', - description: '璇烽�夋嫨涓�鏉¤褰�' - }) - return - } else { - var ids = '' - for (var a = 0; a < this.selectedRowKeys.length; a++) { - ids += this.selectedRowKeys[a] + ',' - } - var that = this - this.$confirm({ - title: '纭浣滃簾', - content: '鏄惁浣滃簾閫変腑鏁版嵁锛屽彧鏈夊緟淇濆吇鐘舵�佺殑鏁版嵁鎵嶅彲浣滃簾鎴愬姛?', - onOk: function () { - that.loading = true - deleteAction(that.url.abolishBatch, { ids: ids }).then((res) => { + var that = this + this.$confirm({ + title: '纭浣滃簾', + content: '鏄惁浣滃簾閫変腑鏁版嵁锛屽彧鏈夊緟淇濆吇鐘舵�佺殑鏁版嵁鎵嶅彲浣滃簾鎴愬姛?', + onOk: function() { + that.loading = true + deleteAction(that.url.abolishBatch, { ids }) + .then((res) => { if (res.success) { - //閲嶆柊璁$畻鍒嗛〉闂 - that.reCalculatePage(that.selectedRowKeys.length) - // that.$message.success(res.message); that.$notification.success({ message: '娑堟伅', description: res.message @@ -388,18 +356,17 @@ that.loadData() that.onClearSelected() } else { - // that.$message.warning(res.message); that.$notification.warning({ message: '娑堟伅', description: res.message }) } - }).finally(() => { + }) + .finally(() => { that.loading = false }) - } - }) - } + } + }) }, //鎵归噺棰嗗彇 handlerBatchCollect() { @@ -423,7 +390,7 @@ this.$confirm({ title: '纭棰嗗彇', content: '鏄惁棰嗗彇閫変腑鏁版嵁锛屽彧鏈夊緟淇濆吇鐘舵�佺殑鏁版嵁鎵嶅彲棰嗗彇鎴愬姛?', - onOk: function () { + onOk: function() { that.loading = true deleteAction(that.url.collectBatch, { ids: ids }).then((res) => { if (res.success) { @@ -450,6 +417,11 @@ }) } }, + + onMaintenanceDateChange: function(dataArray) { + this.queryParam.maintenanceDateBegin = dataArray[0] + this.queryParam.maintenanceDateEnd = dataArray[1] + } } } </script> \ No newline at end of file diff --git a/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue b/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue new file mode 100644 index 0000000..7f78e9f --- /dev/null +++ b/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue @@ -0,0 +1,156 @@ +<template> + <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen centered + :mask-closable="false" @ok="handleOk" @cancel="handleCancel" cancelText="鍏抽棴"> + <a-spin :spinning="spinning"> + <j-vxe-table ref="editableDetailTable" rowNumber rowSelection bordered alwaysEdit toolbar @added="addNewRow" + :toolbarConfig="detail.toolbarConfig" keep-source :height="500" + :dataSource="detail.dataSource" :columns="detail.columns"/> + </a-spin> + </j-modal> +</template> + +<script> + import { getAction, httpAction } from '@/api/manage' + import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue' + import { JVXETypes } from '@comp/jeecg/JVxeTable' + + export default { + name: 'EamSecondMaintenanceBatchOrderModal', + components: { MaintenanceEquipmentSelect }, + data() { + return { + title: '鎿嶄綔', + visible: false, + confirmLoading: false, + spinning: false, + url: { + batchAdd: '/eam/secondMaintenanceOrder/batchAdd' + }, + detail: { + dataSource: [], + columns: [ + { + title: 'ID', + key: 'id', + type: JVXETypes.hidden + }, + { + title: '宸ュ崟鍙�', + dataIndex: 'orderNum', + align: 'center', + type: JVXETypes.inputNumber, + disabled: true, + placeholder: '宸ュ崟鍙风郴缁熻嚜鍔ㄧ敓鎴�' + }, + { + title: '缁熶竴缂栫爜', + dataIndex: 'equipmentId', + align: 'center', + type: JVXETypes.slot, + slotName: 'equipmentId' + }, + { + title: '瑙勮寖鍚嶇О', + dataIndex: 'standardName', + align: 'center', + type: JVXETypes.input, + disabled: true, + placeholder: '閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�' + }, + { + title: '淇濆吇鏃ユ湡', + dataIndex: 'maintenanceDate', + align: 'center', + type: JVXETypes.date + }, + { + title: '淇濆吇鍛ㄦ湡', + dataIndex: 'maintenancePeriod', + align: 'center', + type: JVXETypes.inputNumber, + defaultValue: '6' + } + ], + toolbarConfig: { + // prefix 鍓嶇紑锛泂uffix 鍚庣紑 + slot: ['prefix', 'suffix'], + // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 + btn: ['add', 'remove', 'clearSelection'] + } + } + } + }, + methods: { + add() { + //鍒濆鍖栭粯璁ゅ�� + this.model = { maintenancePeriod: 6 } + this.visible = true + this.editable = true + this.detail.operatorMaintenanceList = this.detail.repairerMaintenanceList = [] + }, + + addNewRow({ row }) { + console.log('row', row) + row.maintenancePeriod = 6 + this.$refs.editableDetailTable.updateData() + }, + + autocompleteForm(selectObj) { + this.$set(this.model, 'standardName', selectObj.standardName) + this.$set(this.model, 'standardId', selectObj.id) + this.$set(this.model, 'equipmentId', selectObj.equipmentId) + if (!this.model.id) this.loadStandardDetail(selectObj.id) + }, + + async handleOk() { + const that = this + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = that.spinning = true + let httpUrl = '' + let method = '' + if (!this.model.id) { + httpUrl += this.url.add + method = 'post' + } else { + httpUrl += this.url.edit + method = 'put' + } + httpAction(httpUrl, this.model, method) + .then((res) => { + if (res.success) { + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.$emit('ok') + that.close() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) + .finally(() => { + that.confirmLoading = that.spinning = false + }) + } else { + return false + } + }) + }, + + handleCancel() { + this.close() + }, + + close() { + this.$emit('close') + this.visible = false + } + + } + } +</script> diff --git a/src/views/eam/maintenance/modules/EamSecondMaintenanceOrderModal.vue b/src/views/eam/maintenance/modules/EamSecondMaintenanceOrderModal.vue index c0a5293..337e9c4 100644 --- a/src/views/eam/maintenance/modules/EamSecondMaintenanceOrderModal.vue +++ b/src/views/eam/maintenance/modules/EamSecondMaintenanceOrderModal.vue @@ -1,5 +1,5 @@ <template> - <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen + <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen centered :mask-closable="false" @ok="handleOk" @cancel="handleCancel" cancelText="鍏抽棴"> <a-spin :spinning="spinning"> <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol"> diff --git a/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue b/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue index 144ba61..2ff8c43 100644 --- a/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue +++ b/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue @@ -13,8 +13,7 @@ <a-col :span="8"> <a-form-model-item prop="equipmentId" label="缁熶竴缂栫爜"> <maintenance-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="model.equipmentId" - maintenanceCategory="THIRD_MAINTENANCE" @autocompleteForm="autocompleteForm" - :disabled="editable"/> + maintenanceCategory="THIRD_MAINTENANCE" @autocompleteForm="autocompleteForm"/> </a-form-model-item> </a-col> <a-col :span="8"> -- Gitblit v1.9.3