| | |
| | | <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" |
| | | <j-vxe-table ref="editableDetailTable" rowNumber rowSelection bordered alwaysEdit toolbar |
| | | :toolbarConfig="detail.toolbarConfig" keep-source :height="500" |
| | | :dataSource="detail.dataSource" :columns="detail.columns"/> |
| | | :dataSource="detail.dataSource" :columns="detail.columns"> |
| | | <!--统一编码--> |
| | | <template v-slot:equipmentId="props"> |
| | | <maintenance-equipment-select placeholder="请输入统一编码或名称搜索" v-model="props.row.equipmentId" |
| | | maintenanceCategory="SECOND_MAINTENANCE" :allowClear="false" |
| | | @autocompleteForm="autocompleteForm($event,props.row)"/> |
| | | </template> |
| | | |
| | | <!-- 保养日期--> |
| | | <template v-slot:maintenanceDate="props"> |
| | | <a-date-picker v-model="props.row.maintenanceDate" value-format="YYYY-MM-DD"/> |
| | | </template> |
| | | |
| | | <!-- 操作--> |
| | | <template v-slot:action="props"> |
| | | <a :disabled="!props.row.equipmentId" @click="handlePreviewDetail(props.row.standardId)">预览明细</a> |
| | | </template> |
| | | </j-vxe-table> |
| | | </a-spin> |
| | | |
| | | <eam-second-maintenance-batch-order-detail-modal ref="detailModal"/> |
| | | </j-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getAction, httpAction } from '@/api/manage' |
| | | import { postAction } from '@/api/manage' |
| | | import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue' |
| | | import { JVXETypes } from '@comp/jeecg/JVxeTable' |
| | | import EamSecondMaintenanceBatchOrderDetailModal from './EamSecondMaintenanceBatchOrderDetailModal' |
| | | |
| | | export default { |
| | | name: 'EamSecondMaintenanceBatchOrderModal', |
| | | components: { MaintenanceEquipmentSelect }, |
| | | components: { EamSecondMaintenanceBatchOrderDetailModal, MaintenanceEquipmentSelect }, |
| | | data() { |
| | | return { |
| | | title: '操作', |
| | |
| | | }, |
| | | { |
| | | title: '工单号', |
| | | dataIndex: 'orderNum', |
| | | key: 'orderNum', |
| | | align: 'center', |
| | | type: JVXETypes.inputNumber, |
| | | disabled: true, |
| | | placeholder: '工单号系统自动生成' |
| | | placeholder: '${title}系统自动生成', |
| | | width: 200 |
| | | }, |
| | | { |
| | | title: '统一编码', |
| | | dataIndex: 'equipmentId', |
| | | key: 'equipmentId', |
| | | align: 'center', |
| | | type: JVXETypes.slot, |
| | | slotName: 'equipmentId' |
| | | slotName: 'equipmentId', |
| | | width: 300, |
| | | validateRules: [ |
| | | { required: true, message: '请输入${title}或名称搜索' }, |
| | | { unique: true, message: '${title}不能重复' } |
| | | ] |
| | | }, |
| | | { |
| | | title: '规范名称', |
| | | dataIndex: 'standardName', |
| | | key: 'standardName', |
| | | align: 'center', |
| | | type: JVXETypes.input, |
| | | disabled: true, |
| | | placeholder: '选择设备后自动带出' |
| | | type: JVXETypes.normal, |
| | | width: 200 |
| | | }, |
| | | { |
| | | title: '保养日期', |
| | | dataIndex: 'maintenanceDate', |
| | | key: 'maintenanceDate', |
| | | align: 'center', |
| | | type: JVXETypes.date |
| | | type: JVXETypes.slot, |
| | | width: 200, |
| | | slotName: 'maintenanceDate', |
| | | validateRules: [{ required: true, message: '请选择${title}' }] |
| | | }, |
| | | { |
| | | title: '保养周期', |
| | | dataIndex: 'maintenancePeriod', |
| | | key: 'maintenancePeriod', |
| | | align: 'center', |
| | | type: JVXETypes.inputNumber, |
| | | defaultValue: '6' |
| | | type: JVXETypes.normal, |
| | | width: 150 |
| | | }, |
| | | { |
| | | title: '备注', |
| | | key: 'remark', |
| | | align: 'center', |
| | | type: JVXETypes.textarea, |
| | | placeholder: '请输入备注', |
| | | width: 300 |
| | | }, |
| | | { |
| | | title: '操作', |
| | | align: 'center', |
| | | type: JVXETypes.slot, |
| | | width: 150, |
| | | slotName: 'action', |
| | | fixed: 'right' |
| | | } |
| | | ], |
| | | toolbarConfig: { |
| | |
| | | this.detail.operatorMaintenanceList = this.detail.repairerMaintenanceList = [] |
| | | }, |
| | | |
| | | addNewRow({ row }) { |
| | | console.log('row', row) |
| | | row.maintenancePeriod = 6 |
| | | this.$refs.editableDetailTable.updateData() |
| | | handlePreviewDetail(standardId) { |
| | | this.$refs.detailModal.visible = true |
| | | this.$refs.detailModal.loadStandardDetail(standardId) |
| | | }, |
| | | |
| | | 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) |
| | | autocompleteForm(selectObj, record) { |
| | | this.$set(record, 'standardName', selectObj.standardName) |
| | | this.$set(record, 'standardId', selectObj.id) |
| | | this.$set(record, 'equipmentId', selectObj.equipmentId) |
| | | this.$set(record, 'maintenancePeriod', selectObj.maintenancePeriod) |
| | | this.$refs.editableDetailTable.validateTable() |
| | | }, |
| | | |
| | | 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' |
| | | const requests = this.$refs.editableDetailTable.getTableData() |
| | | if (requests.length == 0) { |
| | | this.$notification.warning({ |
| | | message: '消息', |
| | | description: '请至少新增一条记录' |
| | | }) |
| | | return |
| | | } |
| | | |
| | | const errMap = await this.$refs.editableDetailTable.validateTable() |
| | | if (errMap) return |
| | | |
| | | this.confirmLoading = this.spinning = true |
| | | postAction(this.url.batchAdd, requests) |
| | | .then((res) => { |
| | | if (res.success) { |
| | | this.$notification.success({ |
| | | message: '消息', |
| | | description: res.message |
| | | }) |
| | | this.$emit('ok') |
| | | this.close() |
| | | } else { |
| | | httpUrl += this.url.edit |
| | | method = 'put' |
| | | this.$notification.warning({ |
| | | message: '消息', |
| | | description: res.message |
| | | }) |
| | | } |
| | | 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 |
| | | } |
| | | }) |
| | | }) |
| | | .finally(() => { |
| | | this.confirmLoading = this.spinning = false |
| | | }) |
| | | }, |
| | | |
| | | handleCancel() { |
| | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="less"> |
| | | /deep/ .ant-select-dropdown-menu { |
| | | text-align: left; |
| | | } |
| | | </style> |