From be84867c57d55112ade4cc45b9e7d7434054778e Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期二, 08 四月 2025 17:29:46 +0800 Subject: [PATCH] art: 设备管理-周保-我的待办 处理 --- src/views/eam/maintenance/EamWeekMaintenanceOrderList.vue | 49 ++++++ src/views/flowable/workflow/FlowTodo.vue | 25 ++ src/views/flowable/workflow/weekMaintenance/WeekMaintenanceApprovalModal.vue | 330 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 396 insertions(+), 8 deletions(-) diff --git a/src/views/eam/maintenance/EamWeekMaintenanceOrderList.vue b/src/views/eam/maintenance/EamWeekMaintenanceOrderList.vue index bbd505c..39ccbf6 100644 --- a/src/views/eam/maintenance/EamWeekMaintenanceOrderList.vue +++ b/src/views/eam/maintenance/EamWeekMaintenanceOrderList.vue @@ -22,7 +22,7 @@ </a-col> <a-col :xl="4" :lg="7" :md="8" :sm="24"> <a-form-item label="淇濆吇鐘舵��"> - <j-dict-select-tag placeholder="璇烽�夋嫨淇濆吇鐘舵��" dict-code="maintenance_status" v-model="queryParam.maintenanceStatus" /> + <j-dict-select-tag placeholder="璇烽�夋嫨淇濆吇鐘舵��" dict-code="week_maintenance_status" v-model="queryParam.maintenanceStatus" /> </a-form-item> </a-col> <a-col :xl="4" :lg="7" :md="8" :sm="24"> @@ -44,6 +44,10 @@ <a-menu-item key="1" @click="handlerBatchAbolish"> <a-icon type="delete" /> 浣滃簾 + </a-menu-item> + <a-menu-item key="1" @click="handlerBatchCollect"> + <a-icon type="delete" /> + 棰嗗彇 </a-menu-item> </a-menu> <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 @@ -79,10 +83,18 @@ <a-dropdown> <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> <a-menu slot="overlay"> + <a-menu-item v-if="record.maintenanceStatus === 'WAIT_MAINTENANCE'"> + <a-popconfirm title="纭畾棰嗗彇鍚�?" @confirm="() => handlerCollect(record.id)"> + <a>棰嗗彇</a> + </a-popconfirm> + </a-menu-item> <a-menu-item v-if="record.maintenanceStatus === 'WAIT_MAINTENANCE'"> <a-popconfirm title="纭畾浣滃簾鍚�?" @confirm="() => handlerAbolish(record.id)"> <a>浣滃簾</a> </a-popconfirm> + </a-menu-item> + <a-menu-item > + <a @click="handleDetail(record)">璇︽儏</a> </a-menu-item> </a-menu> </a-dropdown> @@ -102,7 +114,7 @@ import EamWeekMaintenanceOrderModal from './modules/EamWeekMaintenanceOrderModal' import { JeecgListMixin } from '@/mixins/JeecgListMixin' import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue' -import { deleteAction } from '@api/manage' +import { deleteAction, getAction } from '@api/manage' export default { name: 'EamWeekMaintenanceOrderList', @@ -207,7 +219,8 @@ url: { list: '/eam/weekMaintenanceOrder/list', abolish: '/eam/weekMaintenanceOrder/abolish', - abolishBatch: '/eam/weekMaintenanceOrder/abolishBatch' + abolishBatch: '/eam/weekMaintenanceOrder/abolishBatch', + collect: '/eam/weekMaintenanceOrder/collect', } } }, @@ -290,6 +303,36 @@ }); } }, + //鍗曚釜棰嗗彇 + handlerCollect(id) { + if(!this.url.collect){ + this.$message.error("璇疯缃畊rl.collect灞炴��!") + return + } + var that = this; + getAction(that.url.collect, {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 + }); + } + }); + }, + //鎵归噺棰嗗彇 + handlerBatchCollect(){ + + } } } </script> diff --git a/src/views/flowable/workflow/FlowTodo.vue b/src/views/flowable/workflow/FlowTodo.vue index 6ce720b..f46a3be 100644 --- a/src/views/flowable/workflow/FlowTodo.vue +++ b/src/views/flowable/workflow/FlowTodo.vue @@ -103,6 +103,7 @@ <AssignFileStreamHandle ref="modalFormApproval" :selectShenpiData="selectShenpiData"></AssignFileStreamHandle> <DispatchFileHandle ref="modalFormDispatchFileXq" :selectShenpiData="selectDispatchFileXqData" @searchReset="searchReset"></DispatchFileHandle> <DispatchFileBachHandleStyle ref="modalFormDispatchFileBatch" @searchReset="searchReset" @ok="modalFormOk"></DispatchFileBachHandleStyle> + <week-maintenance-approval-modal ref = "weekMaintenanceApprovalModal" :maintenanceId="dataId"></week-maintenance-approval-modal> </a-card> </template> @@ -115,6 +116,8 @@ import AssignFileStreamHandle from '@views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue' import DispatchFileHandle from '@views/flowable/workflow/dispatchFile/DispatchFileHandle.vue' import DispatchFileBachHandleStyle from '@views/flowable/workflow/dispatchFile/DispatchFileBachHandleStyle#Drawer.vue' +import WeekMaintenanceApprovalModal from '@views/flowable/workflow/weekMaintenance/WeekMaintenanceApprovalModal'; + import { getAction } from '@api/manage' export default { name: 'NcDeviceCharactersList', @@ -123,7 +126,8 @@ AssignFileStreamHandle, JDictSelectTag, DispatchFileHandle, - DispatchFileBachHandleStyle + DispatchFileBachHandleStyle, + WeekMaintenanceApprovalModal }, data () { return { @@ -198,7 +202,9 @@ dictOptions:{}, selectShenpiData: {}, selectDispatchFileXqData:{}, - selectBachData:{} + selectBachData:{}, + //涓氬姟淇℃伅ID + dataId: undefined, } }, created() { @@ -213,14 +219,17 @@ console.log('鐐瑰嚮浜嗚鎯�') console.log('item----->', item) console.log('index----->', index) - let approcesstype = this.splitAprocessType(item.category_dictText) + let approcesstype = this.splitAprocessType(item.category) console.log('approcesstype--->', approcesstype) switch (approcesstype) { - case '鎸囨淳NC鏂囨。鍒拌澶囨祦绋�': + case 'drApproval': this.handDrDetial(item) break - case 'NC绋嬪簭绛炬淳': + case 'ggApproval': this.handDispatchFileDetial(item) + break + case 'WEEK_MAINTENANCE': + this.handleWeekMaintenance(item) break default: alert('娌℃壘鍒拌瀹℃壒') @@ -274,6 +283,12 @@ } }) } + }, + handleWeekMaintenance(item) { + this.dataId = item.dataId; + this.$refs.weekMaintenanceApprovalModal.add() + this.$refs.weekMaintenanceApprovalModal.title = item.preNode; + this.$refs.weekMaintenanceApprovalModal.disableSubmit = false; } } } diff --git a/src/views/flowable/workflow/weekMaintenance/WeekMaintenanceApprovalModal.vue b/src/views/flowable/workflow/weekMaintenance/WeekMaintenanceApprovalModal.vue new file mode 100644 index 0000000..220a1e6 --- /dev/null +++ b/src/views/flowable/workflow/weekMaintenance/WeekMaintenanceApprovalModal.vue @@ -0,0 +1,330 @@ +<template> + <j-modal + :title="title" + :width="1200" + :visible="visible" + :confirmLoading="confirmLoading" + switchFullscreen + @ok="handleOk" + @cancel="handleCancel" + cancelText="鍏抽棴"> + + <a-spin :spinning="confirmLoading"> + <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="8"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderNum" label="宸ュ崟鍙�"> + <a-input placeholder="宸ュ崟鍙风郴缁熻嚜鍔ㄧ敓鎴�" v-model="model.orderNum" disabled /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧缂栫爜"> + <maintenance-equipment-select placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="model.equipmentId" + :maintenanceCategory="maintenanceCategory" + @autocompleteForm="autocompleteForm" :disabled="editable"></maintenance-equipment-select> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardName" label="鏍囧噯鍚嶇О"> + <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.standardName" disabled /> + </a-form-model-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-col :span="8"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenanceDate" label="淇濆吇鏃ユ湡"> + <a-date-picker placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡" v-model="model.maintenanceDate" format="YYYY-MM-DD" + style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operator" label="淇濆吇浜�"> + <j-search-select-tag v-model="model.operator" placeholder="璇烽�夋嫨淇濆吇浜�" + :dictOptions="maintenanceOperatorOptions" /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡"> + <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.maintenancePeriod" disabled /> + </a-form-model-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="remark" label="澶囨敞"> + <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark" /> + </a-form-model-item> + </a-row> + <a-row :gutter="24"> + <j-vxe-table + ref="editableDetailTable" + :rowNumber="true" + :rowSelection="true" + :bordered="true" + :alwaysEdit="true" + :toolbar="true" + :toolbarConfig="detail.toolbarConfig" + keep-source + :height="300" + :loading="detail.loading" + :dataSource="detail.dataSource" + :columns="detail.columns" + style="margin-top: 8px;" /> + </a-row> + </a-form-model> + </a-spin> + </j-modal> +</template> + +<script> +import { getAction, httpAction } from '@/api/manage' +import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' +import { JVXETypes } from '@comp/jeecg/JVxeTable' +import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect' + +export default { + name: 'EamWeekMaintenanceOrderModal', + mixins: [JVxeTableModelMixin], + props: { + maintenanceId: { + type: String, + default: '', + required: true, + } + }, + components: { + MaintenanceEquipmentSelect + }, + data() { + return { + title: '鎿嶄綔', + visible: false, + editable: false, + model: {}, + maintenanceCategory: 'WEEK_MAINTENANCE', + maintenanceOperatorOptions: [], + labelCol: { + xs: { span: 24 }, + sm: { span: 6 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 } + }, + labelColLong: { + xs: { span: 24 }, + sm: { span: 2 } + }, + wrapperColLong: { + xs: { span: 24 }, + sm: { span: 21 } + }, + confirmLoading: false, + validatorRules: { + }, + url: { + add: '/eam/weekMaintenanceOrder/add', + edit: '/eam/weekMaintenanceOrder/edit', + standardDetail: '/eam/eamMaintenanceStandardDetail/queryList', + detail: '/eam/weekMaintenanceOrderDetail/queryList', + userSelect: '/eam/user_select/list', + }, + detail: { + loading: false, + dataSource: [], + columns: [ + { + title: 'ID', + key: 'id', + type: JVXETypes.hidden + }, + { + title: 'orderId', + key: 'orderId', + type: JVXETypes.hidden + }, + { + title: '搴忓彿', + key: 'itemCode', + type: JVXETypes.inputNumber, + width: '10%', + align: 'center', + validateRules: [ + { required: true, unique: true, message: '搴忓彿涓嶈兘閲嶅' } + ] + }, + { + title: '淇濆吇椤�', + key: 'itemName', + type: JVXETypes.textarea, + width: '20%', + align: 'center', + validateRules: [ + { required: true, message: '淇濆吇椤逛笉鑳戒负绌猴紒' } + ] + }, + { + title: '瀛愪繚鍏婚」', + key: 'subItemName', + type: JVXETypes.textarea, + width: '25%', + align: 'center' + }, + { + title: '淇濆吇瑕佹眰', + key: 'itemDemand', + type: JVXETypes.textarea, + width: '30%', + align: 'center', + validateRules: [ + { required: true, message: '淇濆吇瑕佹眰涓嶈兘涓虹┖锛�' } + ] + } + ], + toolbarConfig: { + // prefix 鍓嶇紑锛泂uffix 鍚庣紑 + slot: ['prefix', 'suffix'], + // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 + btn: ['add', 'remove', 'clearSelection'] + } + } + } + }, + created() { + }, + methods: { + add() { + //鍒濆鍖栭粯璁ゅ�� + this.model = {} + this.visible = true + this.editable = false + this.detail.dataSource = [] + this.loadMaintenanceOperatorList(); + }, + edit(record) { + this.model = Object.assign({}, record) + this.visible = true + this.editable = true + this.detail.dataSource = [] + this.loadDetail(record.id) + }, + close() { + this.$emit('close') + this.visible = false + this.$refs.form.clearValidate() + }, + async handleOk() { + const that = this + let errMap = await that.$refs.editableDetailTable.validateTable() + if (errMap) { + this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�') + return + } + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + let tableData = that.$refs.editableDetailTable.getTableData() + let removeData = that.$refs.editableDetailTable.getDeleteData() + that.model.tableDetailList = [...tableData] + that.model.removeDetailList = [...removeData] + + that.confirmLoading = 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.$message.success(res.message) + that.$emit('ok') + that.close() + } else { + that.$message.warning(res.message) + } + }).finally(() => { + that.confirmLoading = false + }) + } else { + return false + } + }) + }, + handleCancel() { + this.close() + }, + autocompleteForm(selectObj) { + //鏍囧噯鍚嶇О锛屼繚鍏诲懆鏈熶笉鍒锋柊瑙e喅鍔炴硶 + //鍔炴硶涓� validatorRules equipmentId 杩樻槸鏈夐棶棰� + // const newObj = { + // standardName: selectObj.standardName, + // maintenancePeriod: selectObj.maintenancePeriod, + // standardId : selectObj.id, + // equipmentId: selectObj.equipmentId, + // }; + // this.model = Object.assign({}, newObj, this.model) + //鍔炴硶浜� + this.$set(this.model, 'standardName', selectObj.standardName) + this.$set(this.model, 'maintenancePeriod', selectObj.maintenancePeriod) + this.$set(this.model, 'standardId', selectObj.id) + this.$set(this.model, 'equipmentId', selectObj.equipmentId) + // console.log('model', this.model) + if (!this.model.id) { + this.loadStandardDetail(selectObj.id) + } + this.loadMaintenanceOperatorList(this.model.equipmentId); + }, + //鍔犺浇璇︽儏鏁版嵁 + loadStandardDetail(standardId) { + if (standardId) { + getAction(this.url.standardDetail, { standardId: standardId }).then(res => { + if (res.success) { + this.detail.dataSource = res.result.map(item => ({ + itemCode: item.itemCode, + itemName: item.itemName, + subItemName: item.subItemName, + itemDemand: item.itemDemand + })) + } + }) + } + }, + //鏍囧噯閫夋嫨鍙樺寲 + loadDetail(orderId) { + if (orderId) { + getAction(this.url.detail, { orderId: orderId }).then(res => { + if (res.success) { + this.detail.dataSource = [...res.result] + } + }) + } + }, + loadMaintenanceOperatorList(equipmentId) { + this.maintenanceOperatorOptions = [] + let params = { positionCode: 'PCR0001' } + if (equipmentId) { + params.equipmentId = equipmentId + } + getAction(this.url.userSelect, params).then(res => { + if (res.success) { + this.maintenanceOperatorOptions = res.result.map(item => ({ + key: item.id, + value: item.username, + text: item.realname + })) + } + }) + } + + } +} +</script> + +<style lang="less" scoped> + +</style> \ No newline at end of file -- Gitblit v1.9.3