From 4b031c1288518a6687e75aa7af0e944aa63cbe20 Mon Sep 17 00:00:00 2001 From: cuikaidong <ckd2942379034@163.com> Date: 星期五, 23 五月 2025 09:07:02 +0800 Subject: [PATCH] 设备封存功能 --- .env.development | 2 yarn.lock | 5 src/views/eam/dispose/modules/EamEquipmentSealUpModal.vue | 43 +-- src/views/flowable/workflow/sealUp/EquipmentSealUpApprovalModal.vue | 257 +++++++++++++++++++++ src/views/eam/dispose/EamEquipmentSealUpList.vue | 351 +++++++++++++++-------------- src/views/flowable/workflow/FlowTodo.vue | 15 + 6 files changed, 473 insertions(+), 200 deletions(-) diff --git a/.env.development b/.env.development index ed82b16..e0bf3ab 100644 --- a/.env.development +++ b/.env.development @@ -1,7 +1,7 @@ NODE_ENV=development # VUE_APP_API_BASE_URL=http://192.168.1.118:3000 # VUE_APP_API_BASE_URL=http://195.0.1.10:6099 -VUE_APP_API_BASE_URL=http://192.168.1.12:9999 +VUE_APP_API_BASE_URL=http://192.168.1.27:9999 # VUE_APP_API_BASE_URL=http://127.0.0.1:9999 # VUE_APP_API_BASE_URL=http://195.0.1.10:8099 VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas diff --git a/src/views/eam/dispose/EamEquipmentSealUpList.vue b/src/views/eam/dispose/EamEquipmentSealUpList.vue index 3282867..de6c055 100644 --- a/src/views/eam/dispose/EamEquipmentSealUpList.vue +++ b/src/views/eam/dispose/EamEquipmentSealUpList.vue @@ -1,102 +1,87 @@ <template> - <a-card :bordered="false"> + <a-card :bordered='false'> <!-- 鏌ヨ鍖哄煙 --> - <div class="table-page-search-wrapper"> - <a-form layout="inline" @keyup.enter.native="searchQuery"> - <a-row :gutter="24"> - - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鍒犻櫎鏍囪"> - <a-input placeholder="璇疯緭鍏ュ垹闄ゆ爣璁�" v-model="queryParam.delFlag"></a-input> + <div class='table-page-search-wrapper'> + <a-form layout='inline' @keyup.enter.native='searchQuery'> + <a-row :gutter='24'> + <a-col :lg='7' :md='8' :sm='24' :xl='4'> + <a-form-item label='璁惧缂栧彿'> + <lx-search-equipment-select v-model='queryParam.equipmentId' + placeholder='璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储'></lx-search-equipment-select> </a-form-item> </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="璁惧ID"> - <a-input placeholder="璇疯緭鍏ヨ澶嘔D" v-model="queryParam.equipmentId"></a-input> + <a-col :lg='7' :md='8' :sm='24' :xl='4'> + <a-form-item label='鍗曟嵁鍙�'> + <a-input v-model='queryParam.code' placeholder='璇疯緭鍏ュ崟鎹彿'></a-input> </a-form-item> </a-col> - <template v-if="toggleSearchStatus"> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鍗曟嵁鍙�"> - <a-input placeholder="璇疯緭鍏ュ崟鎹彿" v-model="queryParam.code"></a-input> - </a-form-item> - </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鐢宠浜�"> - <a-input placeholder="璇疯緭鍏ョ敵璇蜂汉" v-model="queryParam.reportUser"></a-input> - </a-form-item> - </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="灏佸瓨寮�濮嬫椂闂�"> - <a-input placeholder="璇疯緭鍏ュ皝瀛樺紑濮嬫椂闂�" v-model="queryParam.sealStartTime"></a-input> - </a-form-item> - </a-col> - </template> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> - <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> - <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> - <a @click="handleToggleSearch" style="margin-left: 8px"> - {{ toggleSearchStatus ? '鏀惰捣' : '灞曞紑' }} - <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> - </a> + <a-col :lg='7' :md='8' :sm='24' :xl='6'> + <span class='table-page-search-submitButtons' style='float: left;overflow: hidden;'> + <a-button icon='search' type='primary' @click='searchQuery'>鏌ヨ</a-button> + <a-button icon='reload' style='margin-left: 8px' type='info' @click='searchReset'>閲嶇疆</a-button> </span> </a-col> - </a-row> </a-form> </div> <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> - <div class="table-operator"> - <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> - <a-button type="primary" icon="download" @click="handleExportXls('璁惧灏佸瓨鍚皝')">瀵煎嚭</a-button> - <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> - <a-button type="primary" icon="import">瀵煎叆</a-button> - </a-upload> - <a-dropdown v-if="selectedRowKeys.length > 0"> - <a-menu slot="overlay"> - <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>鍒犻櫎</a-menu-item> + <div class='table-operator'> + <a-button icon='plus' type='primary' @click='handleAdd'>鏂板</a-button> + <!-- <a-button type="primary" icon="download" @click="handleExportXls('璁惧灏佸瓨鍚皝')">瀵煎嚭</a-button>--> + <!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">--> + <!-- <a-button type="primary" icon="import">瀵煎叆</a-button>--> + <!-- </a-upload>--> + <a-dropdown v-if='selectedRowKeys.length > 0'> + <a-menu slot='overlay'> + <a-menu-item key='1' @click='batchDel'> + <a-icon type='delete' /> + 鍒犻櫎 + </a-menu-item> </a-menu> - <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 <a-icon type="down" /></a-button> + <a-button style='margin-left: 8px'> 鎵归噺鎿嶄綔 + <a-icon type='down' /> + </a-button> </a-dropdown> </div> <!-- table鍖哄煙-begin --> <div> - <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> - <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;'> + <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" + ref='table' + :columns='columns' + :dataSource='dataSource' + :loading='loading' + :pagination='ipagination' + :rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}' bordered - rowKey="id" - :columns="columns" - :dataSource="dataSource" - :pagination="ipagination" - :loading="loading" - class="j-table-force-nowrap" - :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" - @change="handleTableChange"> + class='j-table-force-nowrap' + rowKey='id' + size='middle' + @change='handleTableChange'> - <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">缂栬緫</a> - - <a-divider type="vertical" /> - <a-dropdown> - <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> - <a-menu slot="overlay"> - <a-menu-item> - <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> + <span slot='action' slot-scope='text, record'> + <template v-if="record.sealStatus === 'WAIT_SUBMIT'"> + <a-popconfirm title='纭畾鎻愪氦鍚�?' @confirm='() => handleSubmit(record.id)'> + <a>鎻愪氦</a> + </a-popconfirm> + <a-divider type='vertical' /> + <a @click='handleEdit(record)'>缂栬緫</a> + <a-divider type='vertical' /> + <a-popconfirm title='纭畾鍒犻櫎鍚�?' @confirm='() => handleDelete(record.id)'> <a>鍒犻櫎</a> </a-popconfirm> - </a-menu-item> - </a-menu> - </a-dropdown> + </template> + <template v-else> + <a @click='handleDetail(record)'>璇︽儏</a> + </template> </span> </a-table> @@ -104,117 +89,143 @@ <!-- table鍖哄煙-end --> <!-- 琛ㄥ崟鍖哄煙 --> - <eamEquipmentSealUp-modal ref="modalForm" @ok="modalFormOk"></eamEquipmentSealUp-modal> + <eamEquipmentSealUp-modal ref='modalForm' @ok='modalFormOk'></eamEquipmentSealUp-modal> </a-card> </template> <script> - import '@/assets/less/TableExpand.less' - import EamEquipmentSealUpModal from './modules/EamEquipmentSealUpModal' - import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import '@/assets/less/TableExpand.less' +import EamEquipmentSealUpModal from './modules/EamEquipmentSealUpModal' +import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue' +import { getAction } from '@api/manage' - export default { - name: "EamEquipmentSealUpList", - mixins:[JeecgListMixin], - components: { - EamEquipmentSealUpModal - }, - data () { - return { - description: '璁惧灏佸瓨鍚皝绠$悊椤甸潰', - // 琛ㄥご - columns: [ - { - title: '#', - dataIndex: '', - key:'rowIndex', - width:60, - align:"center", - customRender:function (t,r,index) { - return parseInt(index)+1; - } - }, - { - title: '鍒犻櫎鏍囪', - align:"center", - dataIndex: 'delFlag' - }, - { - title: '璁惧ID', - align:"center", - dataIndex: 'equipmentId' - }, - { - title: '鍗曟嵁鍙�', - align:"center", - dataIndex: 'code' - }, - { - title: '鐢宠浜�', - align:"center", - dataIndex: 'reportUser' - }, - { - title: '灏佸瓨寮�濮嬫椂闂�', - align:"center", - dataIndex: 'sealStartTime' - }, - { - title: '灏佸瓨缁撴潫鏃堕棿', - align:"center", - dataIndex: 'sealEndTime' - }, - { - title: '灏佸瓨鍘熷洜', - align:"center", - dataIndex: 'sealUpReason' - }, - { - title: '灏佸瓨鐘舵��', - align:"center", - dataIndex: 'sealStatus' - }, - { - title: '瀹℃牳浜�', - align:"center", - dataIndex: 'approvalUser' - }, - { - title: '瀹℃牳鏃堕棿', - align:"center", - dataIndex: 'approvalTime' - }, - { - title: '澶囨敞', - align:"center", - dataIndex: 'remark' - }, - { - title: '鎿嶄綔', - dataIndex: 'action', - align:"center", - scopedSlots: { customRender: 'action' }, +export default { + name: 'EamEquipmentSealUpList', + mixins: [JeecgListMixin], + components: { + EamEquipmentSealUpModal, + LxSearchEquipmentSelect + }, + data() { + return { + description: '璁惧灏佸瓨鍚皝绠$悊椤甸潰', + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 } - ], - url: { - list: "/eam/eamEquipmentSealUp/list", - delete: "/eam/eamEquipmentSealUp/delete", - deleteBatch: "/eam/eamEquipmentSealUp/deleteBatch", - exportXlsUrl: "eam/eamEquipmentSealUp/exportXls", - importExcelUrl: "eam/eamEquipmentSealUp/importExcel", - }, + }, + { + title: '璁惧缂栧彿', + align: 'center', + dataIndex: 'equipmentCode' + }, + { + title: '璁惧鍚嶇О', + align: 'center', + dataIndex: 'equipmentName' + }, + { + title: '鍗曟嵁鍙�', + align: 'center', + dataIndex: 'code' + }, + { + title: '鐢宠浜�', + align: 'center', + dataIndex: 'reportUser_dictText' + }, + { + title: '灏佸瓨寮�濮嬫椂闂�', + align: 'center', + dataIndex: 'sealStartTime' + }, + { + title: '灏佸瓨缁撴潫鏃堕棿', + align: 'center', + dataIndex: 'sealEndTime' + }, + { + title: '灏佸瓨鍘熷洜', + align: 'center', + dataIndex: 'sealUpReason' + }, + { + title: '灏佸瓨鐘舵��', + align: 'center', + dataIndex: 'sealStatus_dictText' + }, + { + title: '瀹℃牳浜�', + align: 'center', + dataIndex: 'approvalUser' + }, + { + title: '瀹℃牳鏃堕棿', + align: 'center', + dataIndex: 'approvalTime' + }, + { + title: '澶囨敞', + align: 'center', + dataIndex: 'remark' + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align: 'center', + scopedSlots: { customRender: 'action' } + } + ], + url: { + list: '/eam/eamEquipmentSealUp/list', + delete: '/eam/eamEquipmentSealUp/delete', + deleteBatch: '/eam/eamEquipmentSealUp/deleteBatch', + submit: '/eam/eamEquipmentSealUp/submit' + } } }, computed: { - importExcelUrl: function(){ - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; + importExcelUrl: function() { + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` } }, - methods: { - + methods: { + handleSubmit(id) { + if (!this.url.submit) { + this.$message.error('璇疯缃畊rl.submit灞炴��!') + return + } + let that = this + getAction(that.url.submit, { 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 + }) + } + }) } } +} </script> <style scoped> - @import '~@assets/less/common.less'; +@import '~@assets/less/common.less'; </style> \ No newline at end of file diff --git a/src/views/eam/dispose/modules/EamEquipmentSealUpModal.vue b/src/views/eam/dispose/modules/EamEquipmentSealUpModal.vue index 19a2d8c..9e552ea 100644 --- a/src/views/eam/dispose/modules/EamEquipmentSealUpModal.vue +++ b/src/views/eam/dispose/modules/EamEquipmentSealUpModal.vue @@ -8,44 +8,23 @@ @ok="handleOk" @cancel="handleCancel" cancelText="鍏抽棴"> - + <a-spin :spinning="confirmLoading"> <a-form-model ref="form" :model="model" :rules="validatorRules"> - - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="delFlag" label="鍒犻櫎鏍囪"> - <a-input-number v-model="model.delFlag"/> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧ID"> - <a-input placeholder="璇疯緭鍏ヨ澶嘔D" v-model="model.equipmentId" /> - </a-form-model-item> <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="code" label="鍗曟嵁鍙�"> - <a-input placeholder="璇疯緭鍏ュ崟鎹彿" v-model="model.code" /> + <a-input placeholder="缂栫爜绯荤粺鑷姩鐢熸垚" v-model="model.code" disabled /> </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reportUser" label="鐢宠浜�"> - <a-input placeholder="璇疯緭鍏ョ敵璇蜂汉" v-model="model.reportUser" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sealStartTime" label="灏佸瓨寮�濮嬫椂闂�"> - <a-input placeholder="璇疯緭鍏ュ皝瀛樺紑濮嬫椂闂�" v-model="model.sealStartTime" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sealEndTime" label="灏佸瓨缁撴潫鏃堕棿"> - <a-input placeholder="璇疯緭鍏ュ皝瀛樼粨鏉熸椂闂�" v-model="model.sealEndTime" /> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧缂栧彿"> + <lx-search-equipment-select placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" + v-model="model.equipmentId"></lx-search-equipment-select> </a-form-model-item> <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sealUpReason" label="灏佸瓨鍘熷洜"> <a-input placeholder="璇疯緭鍏ュ皝瀛樺師鍥�" v-model="model.sealUpReason" /> </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sealStatus" label="灏佸瓨鐘舵��"> - <a-input placeholder="璇疯緭鍏ュ皝瀛樼姸鎬�" v-model="model.sealStatus" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="approvalUser" label="瀹℃牳浜�"> - <a-input placeholder="璇疯緭鍏ュ鏍镐汉" v-model="model.approvalUser" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="approvalTime" label="瀹℃牳鏃堕棿"> - <a-input placeholder="璇疯緭鍏ュ鏍告椂闂�" v-model="model.approvalTime" /> - </a-form-model-item> <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark" label="澶囨敞"> <a-input placeholder="璇疯緭鍏ュ娉�" v-model="model.remark" /> </a-form-model-item> - + </a-form-model> </a-spin> </j-modal> @@ -54,9 +33,13 @@ <script> import { httpAction } from '@/api/manage' import moment from "moment" + import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue' export default { name: "EamEquipmentSealUpModal", + components: { + LxSearchEquipmentSelect + }, data () { return { title:"鎿嶄綔", @@ -73,6 +56,12 @@ confirmLoading: false, validatorRules:{ + equipmentId: [ + { required: true, message: '璇烽�夋嫨璁惧锛�' } + ], + sealUpReason: [ + { required: true, message: '璇疯緭鍏ュ皝瀛樺師鍥狅紒' } + ], }, url: { add: "/eam/eamEquipmentSealUp/add", diff --git a/src/views/flowable/workflow/FlowTodo.vue b/src/views/flowable/workflow/FlowTodo.vue index c488506..4380406 100644 --- a/src/views/flowable/workflow/FlowTodo.vue +++ b/src/views/flowable/workflow/FlowTodo.vue @@ -124,6 +124,7 @@ @searchReset="searchReset"></second-maintenance-approval-modal> <third-maintenance-approval-modal ref="thirdMaintenanceApprovalModal" :selectShenpiData="selectThirdMaintenanceData" @searchReset="searchReset"></third-maintenance-approval-modal> + <equipment-seal-up-approval-modal ref="equipmentSealUpApprovalModelRef" @searchReset="searchReset"/> </a-card> </template> @@ -147,7 +148,7 @@ import EquipmentLeanOutApprovalModal from '@views/flowable/workflow/leanOut/EquipmentLeanOutApprovalModal.vue' import SecondMaintenanceApprovalModal from '@views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue' import ThirdMaintenanceApprovalModal from '@views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue' - + import EquipmentSealUpApprovalModal from '@views/flowable/workflow/sealUp/EquipmentSealUpApprovalModal.vue' export default { name: 'NcDeviceCharactersList', mixins: [JeecgListMixin, mixinDevice], @@ -163,7 +164,8 @@ InspectionOrderHandle, EquipmentLeanOutApprovalModal, SecondMaintenanceApprovalModal, - ThirdMaintenanceApprovalModal + ThirdMaintenanceApprovalModal, + EquipmentSealUpApprovalModal, }, data() { return { @@ -325,6 +327,9 @@ case 'third_maintenance': this.handleThirdMaintenance(item) break + case 'equipment_seal_up': + this.handleEquipmentSealUp(item) + break default: alert('娌℃壘鍒拌娴佺▼') } @@ -431,6 +436,12 @@ this.$refs.thirdMaintenanceApprovalModal.disableSubmit = false } }, + handleEquipmentSealUp(item) { + this.$refs.equipmentSealUpApprovalModelRef.visible = true + this.$refs.equipmentSealUpApprovalModelRef.title = item.name + this.$refs.equipmentSealUpApprovalModelRef.handleDetail(item) + this.$refs.equipmentSealUpApprovalModelRef.disableSubmit = false + }, } } </script> diff --git a/src/views/flowable/workflow/sealUp/EquipmentSealUpApprovalModal.vue b/src/views/flowable/workflow/sealUp/EquipmentSealUpApprovalModal.vue new file mode 100644 index 0000000..282d290 --- /dev/null +++ b/src/views/flowable/workflow/sealUp/EquipmentSealUpApprovalModal.vue @@ -0,0 +1,257 @@ +<template> + <j-modal + :title="title" + :width="800" + :visible="visible" + :confirmLoading="confirmLoading" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" + switchFullscreen + @ok="handleOk" + @cancel="handleCancel" + centered + cancelText="鍏抽棴"> + + <a-spin :spinning="spinning"> + <a-form-model ref="form" :model="model" :rules="validatorRules"> + <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 灏佸瓨淇℃伅 + </a-divider> + <a-row :gutter="24"> + <a-col :span="12"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="code" label="鍗曟嵁鍙�"> + <a-input v-model="model.code" disabled /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧缂栫爜"> + <lx-search-equipment-select placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" + v-model="model.equipmentId" disabled></lx-search-equipment-select> + </a-form-model-item> + </a-col> + </a-row> + <a-row :guitter="24"> + <a-col :span="12"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="leanDepartId_dictText" label="鍊熷叆杞﹂棿"> + <a-input v-model="model.leanDepartId_dictText" disabled /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="leanPerson_dictText" label="鍊熺敤浜�"> + <a-input v-model="model.leanPerson_dictText" disabled /> + </a-form-model-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-col :span="12"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="leanReason" label="鍊熺敤鍘熷洜"> + <a-textarea v-model="model.leanReason" disabled /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark" label="澶囨敞"> + <a-textarea v-model="model.remark" disabled /> + </a-form-model-item> + </a-col> + </a-row> + <div v-if="approvalDisable"> + <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 绠$悊鍛樺鎵� + </a-divider> + <a-row :gutter="24"> + <a-col :span="12"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="approvalDealType" label="瀹℃壒绫诲瀷"> + <j-dict-select-tag type="radio" v-model="model.approvalDealType" dictCode="approved_rejected" + placeholder="璇烽�夋嫨澶勭悊绫诲瀷" :disabled="disableSubmit || initialAcceptanceDisable" /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="approvalComment" label="瀹℃壒鎰忚"> + <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.approvalComment" + :disabled="disableSubmit || returnDisable" /> + </a-form-model-item> + </a-col> + </a-row> + </div> + <div v-if="returnDisable"> + <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 褰掕繕淇℃伅 + </a-divider> + <a-row :gutter="24"> + <a-col :span="24"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="returnComment" + label="褰掕繕澶囨敞"> + <a-textarea placeholder="璇疯緭鍏ュ綊杩樺娉�" v-model="model.returnComment" + :disabled="disableSubmit || confirmDisable" /> + </a-form-model-item> + </a-col> + </a-row> + </div> + <div v-if="confirmDisable"> + <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 绠$悊鍛樼‘璁� + </a-divider> + <a-row :gutter="24"> + <a-col :span="24"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="confirmComment" + label="纭鎰忚"> + <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.confirmComment" + :disabled="disableSubmit || completionDisable" /> + </a-form-model-item> + </a-col> + </a-row> + </div> + </a-form-model> + </a-spin> + </j-modal> +</template> + +<script> +import { getAction, httpAction } from '@/api/manage' +import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue' + +export default { + name: 'EquipmentLeanOutApprovalModal', + components: { + LxSearchEquipmentSelect + }, + props: { + selectShenpiData: { + type: Object + } + }, + data() { + return { + title: '鎿嶄綔', + visible: false, + editable: false, + model: {}, + treeData: [], + labelCol: { + xs: { span: 24 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 18 } + }, + labelColLong: { + xs: { span: 24 }, + sm: { span: 2 } + }, + wrapperColLong: { + xs: { span: 24 }, + sm: { span: 21 } + }, + confirmLoading: false, + spinning: false, + imageSrc: null, + validatorRules: { + approvalDealType: [ + { required: true, message: '璇烽�夋嫨閫氳繃鎴栭┏鍥�!' } + ], + approvalComment: [ + { required: true, message: '璇疯緭鍏ュ鎵规剰瑙�!' } + ], + returnComment: [ + { required: true, message: '璇疯緭鍏ュ綊杩樺娉�!' } + ], + confirmComment: [ + { required: true, message: '璇疯緭鍏ョ‘璁ゆ剰瑙�!' } + ] + }, + url: { + queryById: '/eam/eamEquipmentSealUp/queryById', + approval: '/eam/eamEquipmentSealUp/approval', + loadProductionOptions: '/mdc/mdcProduction/loadProductionTreeOptions' + }, + disableSubmit: false + } + }, + created() { + this.loadAllProductionTree() + }, + computed: { + approvalDisable: function() { + return ['WAIT_APPROVAL', 'WAIT_RETURN', 'WAIT_CONFIRM', 'COMPLETE'].includes(this.model.leanStatus) + }, + returnDisable: function() { + return ['WAIT_RETURN', 'WAIT_CONFIRM', 'COMPLETE'].includes(this.model.leanStatus) + }, + confirmDisable: function() { + return ['WAIT_CONFIRM', 'COMPLETE'].includes(this.model.leanStatus) + }, + completionDisable: function() { + return ['COMPLETE'].includes(this.model.leanStatus) + } + }, + methods: { + async handleDetail(item) { + this.initParams() + this.model = {} + let res = await getAction(this.url.queryById, { id: item.dataId }) + this.model = Object.assign({}, res.result) + this.model.dataId = item.dataId + this.model.taskId = item.id + this.model.userId = item.assignee + this.model.instanceId = item.procInstId + this.model.values = item.variables + this.spinning = false; + }, + + recordDetail(record) { + console.log('record', record) + this.initParams() + this.model = Object.assign({}, record) + }, + + initParams() { + this.visible = true + this.spinning = true + }, + + async handleOk() { + const that = this + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = that.spinning = true + let httpurl = this.url.approval + let method = 'put' + httpAction(httpurl, this.model, method).then((res) => { + if (res.success) { + that.$message.success(res.message) + that.$emit('searchReset') + that.close() + } else { + that.$message.warning(res.message) + } + }).finally(() => { + that.confirmLoading = that.spinning = false + }) + } else { + return false + } + }) + }, + handleCancel() { + this.close() + }, + + close() { + this.$emit('close') + this.visible = false + this.$refs.form.clearValidate() + }, + loadAllProductionTree() { + //鍔犺浇杞﹂棿閫夋嫨鏍� + getAction(this.url.loadProductionOptions).then(res => { + if (res.success) { + this.treeData = [...res.result] + } else { + that.$message.warning(res.message) + } + }) + } + } +} +</script> + +<style lang="less" scoped> + +</style> \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 4d56384..4a998e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9682,6 +9682,11 @@ single-spa "^5.9.2" tslib "^1.10.0" +qrcode.vue@^1.7.0: + version "1.7.0" + resolved "https://registry.npmmirror.com/qrcode.vue/-/qrcode.vue-1.7.0.tgz#c54b2934f0650c10d92785d08aaad36c55e0fc56" + integrity sha512-R7t6Y3fDDtcU7L4rtqwGUDP9xD64gJhIwpfjhRCTKmBoYF6SS49PIJHRJ048cse6OI7iwTwgyy2C46N9Ygoc6g== + qs@6.7.0: version "6.7.0" resolved "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" -- Gitblit v1.9.3