From 7160d176c51807c4cdda631edacf366731556969 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期一, 14 四月 2025 17:33:29 +0800 Subject: [PATCH] 1、工作流我的待办页面 设备维修 分类详情弹窗样式调整完成100% 2、工作流我的待办页面 设备点检 分类详情弹窗样式与功能逻辑调整 3、工作流我的待办页面 设备点检 分类详情弹窗保养明细列表增加异常选项是否禁用由点检结果选中项决定 4、工作流我的待办页面 设备点检 分类详情弹窗保养明细列表增加批量选择点检结果功能 --- src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue | 751 +++++++++++++++++++--------------------- src/views/flowable/workflow/repairOrder/RepairOrderApprovalModal.vue | 209 +++++------ src/views/flowable/workflow/FlowTodo.vue | 52 +- src/views/eam/equipment/EamEquipmentList.vue | 14 4 files changed, 486 insertions(+), 540 deletions(-) diff --git a/src/views/eam/equipment/EamEquipmentList.vue b/src/views/eam/equipment/EamEquipmentList.vue index 1d7ca59..f830daa 100644 --- a/src/views/eam/equipment/EamEquipmentList.vue +++ b/src/views/eam/equipment/EamEquipmentList.vue @@ -167,14 +167,16 @@ <!-- table鍖哄煙-end --> <a-tabs v-model="activeTabKey" @change="handleTabChange"> - <a-tab-pane tab="淇濆吇鏍囧噯" :key="1"> - <eam-maintenance-standard-list ref="tabPaneTableListRef1" :isDisplayOperation="false"/> + <a-tab-pane tab="璁惧鏂囨。" :key="1">璁惧鏂囨。</a-tab-pane> + <a-tab-pane tab="鐐规宸ュ崟" :key="2"> + <eam-inspection-order-list ref="tabPaneTableListRef2" :isDisplayOperation="false"/> </a-tab-pane> - <a-tab-pane tab="缁翠慨宸ュ崟" :key="2"> - <eam-repair-order-list ref="tabPaneTableListRef2" :isDisplayOperation="false"/> + <a-tab-pane tab="鍛ㄦ姤宸ュ崟" :key="3">鍛ㄦ姤宸ュ崟</a-tab-pane> + <a-tab-pane tab="缁翠慨宸ュ崟" :key="4"> + <eam-repair-order-list ref="tabPaneTableListRef4" :isDisplayOperation="false"/> </a-tab-pane> - <a-tab-pane tab="鐐规宸ュ崟" :key="3"> - <eam-inspection-order-list ref="tabPaneTableListRef3" :isDisplayOperation="false"/> + <a-tab-pane tab="淇濆吇鏍囧噯" :key="5"> + <eam-maintenance-standard-list ref="tabPaneTableListRef5" :isDisplayOperation="false"/> </a-tab-pane> </a-tabs> diff --git a/src/views/flowable/workflow/FlowTodo.vue b/src/views/flowable/workflow/FlowTodo.vue index 0929e14..07b0f7d 100644 --- a/src/views/flowable/workflow/FlowTodo.vue +++ b/src/views/flowable/workflow/FlowTodo.vue @@ -73,7 +73,7 @@ bordered size="middle" rowKey="id" - :scroll="{x:'max-content',y:465}" + :scroll="{x:getTableColumnsTotalWidth,y:465}" :columns="columns" :dataSource="dataSource" :pagination="ipagination" @@ -82,7 +82,7 @@ @change="handleTableChange"> <span slot="action" slot-scope="text, record"> - <a @click="handelDetial(record,text)">鏌ョ湅璇︽儏</a> + <a @click="handelDetail(record,text)">鏌ョ湅璇︽儏</a> </span> </a-table> @@ -163,7 +163,9 @@ title: '娴佺▼涓氬姟绠�瑕佹弿杩�', align: 'center', dataIndex: 'title', - width: 500 + width: 350, + ellipsis: true + }, { title: '涓婁竴姝ュ鐞嗕汉', @@ -218,21 +220,24 @@ computed: { importExcelUrl: function() { return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` + }, + getTableColumnsTotalWidth() { + return this.columns.reduce((total, item) => total + item.width, 0) } }, methods: { - handelDetial(item, index) { + handelDetail(item, index) { console.log('鐐瑰嚮浜嗚鎯�') console.log('item----->', item) console.log('index----->', index) - let approcesstype = this.splitAprocessType(item.category) - console.log('approcesstype--->', approcesstype) - switch (approcesstype) { + let processType = this.splitAprocessType(item.category) + console.log('processType--->', processType) + switch (processType) { case 'drApproval': - this.handDrDetial(item) + this.handDrDetail(item) break case 'ggApproval': - this.handDispatchFileDetial(item) + this.handDispatchFileDetail(item) break case 'sbdjApproval': this.handInspectionOrder(item) @@ -252,31 +257,32 @@ let result = parts[0] return result }, - handDrDetial(item) { - this.selectShenpiData = item - this.$refs.modalFormApproval.clearTableSource() - this.$refs.modalFormApproval.getAllApproveData(item) + handDrDetail(record) { + this.selectShenpiData = Object.assign({}, record) + this.$refs.modalFormApproval.visible = true + this.$refs.modalFormApproval.getAllApproveData(record) }, searchReset() { this.queryParam = {} this.loadData(1) }, - handDispatchFileDetial(item) { + handDispatchFileDetail(item) { console.log('item----->', item) this.selectDispatchFileXqData = item this.$refs.modalFormDispatchFileXq.clearTableSource() this.$refs.modalFormDispatchFileXq.getAllApproveData(item) }, - handInspectionOrder(item) { - console.log('item----->', item) - if (item.taskDefKey === 'Confirmed_completed') { - this.selectInspectionOrderDataBzz = item - this.$refs.modalFormInspectionOrderBzz.clearTableSource() - this.$refs.modalFormInspectionOrderBzz.getAllApproveData(item) + handInspectionOrder(record) { + console.log('record----->', record) + const tableRecord = Object.assign({}, record) + if (record.taskDefKey === 'Confirmed_completed') { + this.selectInspectionOrderDataBzz = tableRecord + this.$refs.modalFormInspectionOrderBzz.getAllApproveData(record) } else { - this.selectInspectionOrderData = item - this.$refs.modalFormInspectionOrder.clearTableSource() - this.$refs.modalFormInspectionOrder.getAllApproveData(item) + this.selectInspectionOrderData = tableRecord + this.$refs.modalFormInspectionOrder.visible = true + this.$refs.modalFormInspectionOrder.getAllApproveData(record) + this.$refs.modalFormInspectionOrder.getBasicInformation(record) } }, batchHandle() { diff --git a/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue index 0fe58e5..c954873 100644 --- a/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue +++ b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue @@ -1,15 +1,11 @@ -<!-- - Description: 宸ヤ綔娴�-璁惧鐐规澶勭悊椤甸潰 List - Author: 浣滆�� liuyh - Date: 2025-02-27 ---> <template> <a-modal - :title="title" - :width="width" + :width="1000" :visible="visible" - :footer="null" + @ok="submitForm" @cancel="handCancel" + :mask-closable="false" + centered > <a-card :bordered="false"> <div> @@ -24,110 +20,101 @@ </a-tag> <br> <br> - <button @click="fetchAndShowBmp" class="btn-custom">鎵撳紑娴佺▼鍥�</button> - <div v-if="imageSrc"> - <img :src="imageSrc" alt="Fetched Image" /> + <a-button @click="fetchAndShowBmp" class="btn-custom" :loading="showBmpButtonLoading">娴佺▼鍥�</a-button> + <div v-if="imageSrc&&isDisplayBmp"> + <img :src="imageSrc" alt="Fetched Image"/> </div> - <hr class="shallow-hr"> + <!--<hr class="shallow-hr">--> </div> - <div> - <b>鐐规宸ュ崟璇︽儏</b> - <br> - <a-form :form='form'> - <a-spin :spinning="spinning"> - <a-tabs default-active-key='1' @change='callback'> - <a-tab-pane key='1' tab='鍩烘湰淇℃伅'> - <a-form-model ref='form' :model='tableRowRecord' :rules='validatorRules'> - <a-row> - <a-col :span='span'> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="宸ュ崟鍙�"> - <a-input placeholder="宸ュ崟鍙疯嚜鍔ㄧ敓鎴�" :disabled="true" v-model="tableRowRecord.orderNum" /> - </a-form-model-item> - </a-col> - <a-col :span='span'> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧缂栧彿"> - <MaintenanceEquipmentSelect placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="tableRowRecord.equipmentId" - :maintenanceCategory="maintenanceCategory" :disabled="true" - @autocompleteForm="autocompleteForm"></MaintenanceEquipmentSelect> - </a-form-model-item> - </a-col> - </a-row> - <a-row> - <a-col :span='span'> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardName" label="鏍囧噯鍚嶇О"> - <a-input placeholder="璇疯緭鍏ユ爣鍑嗗悕绉�" disabled v-model="this.standardName" /> - </a-form-model-item> - </a-col> - <a-col :span='span'> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="鏍囧噯缂栫爜"> - <a-input placeholder="璇疯緭鍏ユ爣鍑嗙紪鐮�" disabled v-model="this.standardCode" /> - </a-form-model-item> - </a-col> - </a-row> - <a-row> - <a-col :span='span'> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡"> - <a-input-number v-model="this.maintenancePeriod" :min="1" :precision="0" disabled style="width: 100%" /> - </a-form-model-item> - </a-col> - <a-col :span='span'> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operator" label="鐐规浜�"> - <j-dict-select-tag v-model="tableRowRecord.operator" placeholder="璇烽�夋嫨鐢ㄦ埛" disabled dictCode="sys_user,realname,username,username!='admin' order by create_time"/> - </a-form-model-item> - </a-col> - </a-row> - <a-row> - <a-col :span='span'> - <a-form-model-item label="鐐规鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectionDate"> - <j-date placeholder="璇烽�夋嫨鐐规鏃ユ湡" v-model="tableRowRecord.inspectionDate" disabled style="width: 100%" /> - </a-form-model-item> - </a-col> - <a-col :span='span'> - <a-form-model-item label="鐐规杩囨湡鏃堕棿" :labelCol="{span:6}" :wrapperCol="{span:15}" prop="expirationTime"> - <j-date placeholder="璇烽�夋嫨鐐规杩囨湡鏃堕棿" v-model="tableRowRecord.expirationTime" disabled style="width: 100%" /> - </a-form-model-item> - </a-col> - </a-row> - <a-row > - <a-col :span="24"> - <a-form-model-item label="澶囨敞" :labelCol="{span:1}" :wrapperCol="{span:22}" prop="remark"> - <a-textarea v-model="tableRowRecord.remark" rows="3" placeholder="璇疯緭鍏ュ娉�" disabled /> - </a-form-model-item> - </a-col> - </a-row> - </a-form-model> - </a-tab-pane> - <a-tab-pane key='2' tab='娴佺▼鑺傜偣'> - <a-card> - <a-timeline style="padding:0 1% 0 12%" > - <a-timeline-item color='white' v-for="(item,index1) in hitaskDataSource" :key="index1"> - <div class="bottom"> - <p>澶勭悊浜猴細{{item.assignee_dictText}}</p> - <p v-if="index1 !==0">澶勭悊鏃堕暱锛歿{item.duration}}</p> - <p v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</p> - <p v-if="item.description != null">澶勭悊鎰忚锛歿{item.description}}</p> - <div class="left_qiu"><span>{{item.taskName}}</span></div> - </div> - </a-timeline-item> - </a-timeline> - </a-card> - </a-tab-pane> - </a-tabs> - </a-spin> - </a-form> - </div> - <div> - <hr class="shallow-hr"> - <br> - <b>淇濆吇椤规槑缁�</b> - <br> - <a-form-model ref="form" :model="approveData" :rules="validatorRules" slot="detail"> - <a-row :gutter="24"> + <a-spin :spinning="spinning"> + <a-tabs default-active-key='1'> + <a-tab-pane key='1' tab='鍩烘湰淇℃伅'> + <a-form-model ref='form' :model='tableRowRecord' :labelCol="labelCol" + :wrapperCol="wrapperCol"> + <a-row> + <a-col :span='span'> + <a-form-model-item label="宸ュ崟鍙�"> + <a-input readOnly v-model="tableRowRecord.orderNum"/> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label="璁惧缂栧彿"> + <MaintenanceEquipmentSelect v-model="tableRowRecord.equipmentId" + :maintenanceCategory="'POINT_INSPECTION'" disabled + @autocompleteForm="autoCompleteForm"/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span='span'> + <a-form-model-item label="鏍囧噯鍚嶇О"> + <a-input readOnly v-model="tableRowRecord.standardName"/> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label="鏍囧噯缂栫爜"> + <a-input readOnly v-model="tableRowRecord.standardCode"/> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item label="淇濆吇鍛ㄦ湡"> + <a-input v-model="tableRowRecord.maintenancePeriod" readOnly/> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label="鐐规浜�"> + <a-input v-model="tableRowRecord.operator" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item label="鐐规鏃ユ湡" prop="inspectionDate"> + <a-input v-model="tableRowRecord.inspectionDate" readOnly/> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label="鐐规杩囨湡鏃堕棿"> + <a-input v-model="tableRowRecord.expirationTime" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span="24"> + <a-form-model-item label="澶囨敞" :labelCol="{span:3}" :wrapperCol="{span:20}"> + <a-textarea v-model="tableRowRecord.remark" rows="3" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </a-tab-pane> + <a-tab-pane key='2' tab='娴佺▼鑺傜偣'> + <a-card :bordered="false"> + <a-timeline> + <a-timeline-item v-for="(item,index) in hitaskDataSource" :key="index"> + <div> + <h3 style="font-weight: bold;">{{item.taskName}}</h3> + <div>澶勭悊浜猴細{{item.assignee_dictText}}</div> + <div v-if="index !==0">澶勭悊鏃堕暱锛歿{item.duration}}</div> + <div v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</div> + <div v-if="item.description">澶勭悊鎰忚锛歿{item.description}}</div> + </div> + </a-timeline-item> + </a-timeline> + </a-card> + </a-tab-pane> + </a-tabs> + + <a-tabs default-active-key='1'> + <a-tab-pane key="1" tab="淇濆吇椤规槑缁�"> <j-vxe-table ref="editableDetailTable" :rowNumber="false" - :rowSelection="false" + :rowSelection="true" :bordered="true" :alwaysEdit="true" :toolbar="false" @@ -136,311 +123,287 @@ :loading="detail.loading" :dataSource="detail.dataSource" :columns="detail.columns" - style="margin-top: 8px;" /> - </a-row> - <div class="table-operator" style="text-align: right;"> - <a-button @click="handleQueXiaoTask" type="primary" icon="close">鍙栨秷</a-button> - <a-button @click="submitForm">鎻� 浜�</a-button> - </div> - </a-form-model> - </div> + @selectRowChange="handleTableSelectRowChange" + > + <template v-slot:inspectionResult="props"> + <j-dict-select-tag v-model="props.row.inspectionResult" dictCode="eam_inspection_result" + placeholder="璇烽�夋嫨鐐规缁撴灉" + @change="handleInspectionResultSelectChange($event,props.row)" + style="width: 100%"/> + </template> + + <template v-slot:exceptionDescription="props"> + <a-textarea style="height: 32px" v-model="props.row.exceptionDescription" + :disabled="!props.row.inspectionResult||props.row.inspectionResult==='1'"/> + </template> + + <template v-slot:reportFlag="props"> + <j-dict-select-tag v-model="props.row.reportFlag" + :disabled="!props.row.inspectionResult||props.row.inspectionResult==='1'" + dictCode="yn" + style="width: 100%"/> + </template> + </j-vxe-table> + </a-tab-pane> + + <a-button v-if="selectedRowKeys.length>0" slot="tabBarExtraContent" type="primary" + @click="handleSelectAllInspectionResult">鎵归噺鐐规姝e父 + </a-button> + + <!--<a-dropdown slot="tabBarExtraContent" v-if="selectedRowKeys.length>0">--> + <!--<a-menu slot="overlay">--> + <!--<a-menu-item key="1" @click="handleSelectAllInspectionResult('姝e父')">姝e父</a-menu-item>--> + <!--<a-menu-item key="2" @click="handleSelectAllInspectionResult('寮傚父')">寮傚父</a-menu-item>--> + <!--</a-menu>--> + + <!--<a-button> 鎵归噺閫夋嫨鐐规缁撴灉--> + <!--<a-icon type="down"/>--> + <!--</a-button>--> + <!--</a-dropdown>--> + </a-tabs> + </a-spin> </a-card> - - </a-modal> </template> <script> + import '@assets/less/TableExpand.less' + import { getAction, deleteAction, postAction, downFile, httpAction } from '@api/manage' + import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue' + import { JVXETypes } from '@comp/jeecg/JVxeTable' -import '@assets/less/TableExpand.less' -import { mixinDevice } from '@/utils/mixin' -import { getAction, deleteAction, postAction, downFile, httpAction } from '@api/manage' -import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue' -import { JVXETypes } from '@comp/jeecg/JVxeTable' -export default { - name: 'FlowShenPi', - components: { MaintenanceEquipmentSelect }, - mixins: [mixinDevice], - props: { - selectShenpiData: { - type: Object, - required: true - } - }, - - data() { - return { - form: this.$form.createForm(this), - span: 12, - span1: 8, - coldisabled: true, - spinning: false, - tableRowRecord: {}, - assignFileStream:{}, - tableDataSource: [], - usageDataSource: [], - hitaskDataSource:[], - bomForm: {}, - approveContent:"", - imageSrc: null, - drawerVisible: true, - labelCol: { - xs: { span: 24 }, - sm: { span: 5 } - }, - wrapperCol: { - xs: { span: 30 }, - sm: { span: 16 } - }, - validatorRules: { - status: { - rules: [ - { required: true, message: '璇烽�夋嫨瀹℃壒鐘舵��!'}, + export default { + name: 'InspectionOrderHandle', + components: { MaintenanceEquipmentSelect }, + props: { + selectShenpiData: { + type: Object, + required: true + } + }, + data() { + return { + span: 12, + spinning: false, + tableRowRecord: {}, + hitaskDataSource: [], + imageSrc: null, + labelCol: { + xs: { span: 24 }, + sm: { span: 6 } + }, + wrapperCol: { + xs: { span: 30 }, + sm: { span: 16 } + }, + visible: false, + // 琛ㄥご + url: { + queryBomDataById: '/eam/eamInspectionOrder/selectVoById', + diagramView: '/assign/flow/diagramView', + queryHisTaskList: '/assign/flow/queryHisTaskList', + approve: '/eam/eamInspectionOrder/approval' + }, + detail: { + loading: false, + dataSource: [], + columns: [ + { + title: '搴忓彿', + key: 'itemCode', + type: JVXETypes.normal, + width: '10%', + align: 'center', + fixed: 'left' + }, + { + title: '淇濆吇椤�', + key: 'itemName', + type: JVXETypes.normal, + width: '20%', + align: 'center', + fixed: 'left' + }, + { + title: '淇濆吇瑕佹眰', + key: 'itemDemand', + type: JVXETypes.normal, + width: '30%', + align: 'center', + fixed: 'left' + }, + { + title: '鐐规缁撴灉', + key: 'inspectionResult', + type: JVXETypes.slot, + slotName: 'inspectionResult', + width: '20%', + align: 'center' + }, + { + title: '寮傚父鎻忚堪', + key: 'exceptionDescription', + type: JVXETypes.slot, + slotName: 'exceptionDescription', + width: '30%', + align: 'center' + }, + { + title: '寮傚父鏄惁鎶ヤ慨', + key: 'reportFlag', + type: JVXETypes.slot, + slotName: 'reportFlag', + width: '20%', + align: 'center' + } ] }, - }, - approveData: {}, - flowData: {}, - title: '璇︽儏椤甸潰', - width: 1000, - visible: false, - // 琛ㄥご - url: { - queryBomDataById: '/eam/eamInspectionOrder/selectVoById', - diagramView: '/assign/flow/diagramView', - queryHisTaskList:'/assign/flow/queryHisTaskList', - approve:"/eam/eamInspectionOrder/approval", - saveDispatchFile:"/dncFlow/dispatchFile/saveDispatchFile" - }, - dictOptions: {}, - superFieldList: [], - workflowSource: [], - maintenanceCategory: 'POINT_INSPECTION', - standardName:"", - maintenancePeriod:"", - standardCode:"", - detail: { - loading: false, - dataSource: [], - columns: [ - { - title: '搴忓彿', - key: 'itemCode', - type: JVXETypes.normal, - width: '10%', - align:"center", - }, - { - title: '淇濆吇椤�', - key: 'itemName', - type: JVXETypes.normal, - width: '20%', - align:"center", - }, - { - title: '淇濆吇瑕佹眰', - key: 'itemDemand', - type: JVXETypes.normal, - width: '30%', - align:"center", - }, - { - title: "鐐规缁撴灉" - ,key: 'inspectionResult' - ,type: JVXETypes.selectSearch - ,dictCode:'eam_inspection_result' - ,width: '20%' - ,align:"center" - }, - { - title: '寮傚父鎻忚堪', - key: 'exceptionDescription', - type: JVXETypes.textarea, - width: '30%', - align:"center", - }, - { - title: '寮傚父鏄惁鎶ヤ慨', - key: 'reportFlag', - type: JVXETypes.selectSearch, - dictCode:'yn', - width: '20%', - align:"center", - } - ] - } - } - }, - created() { - }, - computed: {}, - methods: { - callback() { - }, - handCancel() { - this.visible = false - }, - clearTableSource() { - this.tableDataSource = [] - this.usageDataSource = [] - }, - fetchAndShowBmp() { - console.log('flowData----->', this.flowData) - try { - let parm = { - processDefinitionId: this.flowData.processDefinitionId, - processInstanceId:this.flowData.processInstanceId, - TaskDefinitionKey:this.flowData.processDefinitionKey - } - downFile(this.url.diagramView,parm,'get').then((res=>{ - console.log('Pica------>',res) - const urlObject = window.URL.createObjectURL(new Blob([res])) - this.imageSrc = urlObject - })) - } catch (error) { - console.error('Error fetching image blob:', error) - alert('鏃犳硶鍔犺浇鍥剧墖锛岃绋嶅悗鍐嶈瘯銆�') + isDisplayBmp: false, + showBmpButtonLoading: false, + selectedRowKeys: [] } }, - handleQueXiaoTask(){ - this.visible = false - this.routeReload() - }, - autocompleteForm(selectObj) { - this.standardName = selectObj.standardName - this.maintenancePeriod=selectObj.maintenancePeriod - this.standardCode=selectObj.standardCode - }, - submitForm () { - const that = this; - // 瑙﹀彂琛ㄥ崟楠岃瘉 - this.form.validateFields((err, values) => { - if (!err) { - that.confirmLoading = true; - let url=this.url.approve - let method = 'post'; - let flowTaskVo = {} - let tableData = that.$refs.editableDetailTable.getTableData() - flowTaskVo.comment =that.assignFileStream.approveContent; - flowTaskVo.dataId = this.selectShenpiData.dataId - flowTaskVo.taskId = this.selectShenpiData.id - flowTaskVo.userId = this.selectShenpiData.assignee - flowTaskVo.instanceId = this.selectShenpiData.procInstId - flowTaskVo.values = this.selectShenpiData.variables - flowTaskVo.tableDetailList=tableData - console.log("琛ㄥ崟鎻愪氦鏁版嵁",flowTaskVo) - httpAction(url,flowTaskVo,method).then((res)=>{ - if(res.success){ - that.$message.success(res.message); - that.visible = false - //鍒锋柊琛ㄦ牸 - that.$emit('searchReset') - }else{ - that.$message.warning(res.message); - } - }).finally(() => { - that.confirmLoading = false; + methods: { + /** + * 鑾峰彇娴佺▼鑺傜偣 + * @param record 寰呭姙璁板綍淇℃伅 + */ + getAllApproveData(record) { + const param = { 'procInstId': record.procInstId } + getAction(this.url.queryHisTaskList, param) + .then(res => { + this.hitaskDataSource = res.result }) + }, + + /** + * 鑾峰彇寰呭姙璁板綍鐨勫熀鏈俊鎭� + * @param record 寰呭姙璁板綍淇℃伅 + */ + getBasicInformation(record) { + this.tableRowRecord = {} + this.detail.dataSource = [] + this.spinning = true + const param = { id: record.dataId } + const that = this + getAction(this.url.queryBomDataById, param) + .then((res => { + if (res.success) { + that.tableRowRecord = res.result[0] + that.detail.dataSource = res.result[0].tableDetailList + console.log('that.tableRowRecord----->', that.tableRowRecord) + } + })) + }, + + // 鑾峰彇骞跺睍寮�娴佺▼鍥� + fetchAndShowBmp() { + this.isDisplayBmp = !this.isDisplayBmp + if (!this.imageSrc) { + const { processDefinitionId, processInstanceId, processDefinitionKey } = this.selectShenpiData + let param = { processDefinitionId, processInstanceId, TaskDefinitionKey: processDefinitionKey } + this.showBmpButtonLoading = true + const that = this + downFile(this.url.diagramView, param, 'get') + .then((res => { + const urlObject = window.URL.createObjectURL(new Blob([res])) + this.imageSrc = urlObject + })) + .catch(err => { + that.$notification.error({ + message: '娑堟伅', + description: res.message + }) + }) + .finally(() => { + this.showBmpButtonLoading = false + }) } - }) - }, - getAllApproveData(item) { - console.log('selectShenpiData----->', this.selectShenpiData) - this.flowData = item - let param = { - 'id': item.dataId - } - let parmhis={ - 'procInstId': item.procInstId - } - getAction(this.url.queryHisTaskList,parmhis).then(res=>{ - this.hitaskDataSource=res.result - getAction(this.url.queryBomDataById, param).then((res => { - if (res.success) { - this.tableRowRecord = res.result[0] - this.detail.dataSource=res.result[0].tableDetailList - console.log('this.tableRowRecord----->', this.tableRowRecord[0]) + }, + + submitForm() { + const flowTaskVo = {} + flowTaskVo.dataId = this.selectShenpiData.dataId + flowTaskVo.taskId = this.selectShenpiData.id + flowTaskVo.userId = this.selectShenpiData.assignee + flowTaskVo.instanceId = this.selectShenpiData.procInstId + flowTaskVo.values = this.selectShenpiData.variables + flowTaskVo.tableDetailList = this.$refs.editableDetailTable.getTableData() + const that = this + this.confirmLoading = true + console.log('琛ㄥ崟鎻愪氦鏁版嵁', flowTaskVo) + // httpAction(this.url.approve, flowTaskVo, 'post') + // .then((res) => { + // if (res.success) { + // that.$message.success(res.message) + // //鍒锋柊琛ㄦ牸 + // that.$emit('searchReset') + // that.handleCancel() + // } else { + // that.$message.warning(res.message) + // } + // }) + // .finally(() => { + // that.confirmLoading = false + // }) + }, + + autoCompleteForm({ standardName, maintenancePeriod, standardCode }) { + this.$set(this.tableRowRecord, 'standardName', standardName) + this.$set(this.tableRowRecord, 'maintenancePeriod', maintenancePeriod) + this.$set(this.tableRowRecord, 'standardCode', standardCode) + this.spinning = false + }, + + // 鎵归噺閫夋嫨鎵�鏈夌偣妫�缁撴灉 + handleSelectAllInspectionResult() { + this.selectedRowKeys.forEach(key => { + const dataItem = this.detail.dataSource.find(item => item.id === key) + if (dataItem && dataItem.inspectionResult !== '1') { + console.log('dataItem', dataItem) + delete dataItem.exceptionDescription + delete dataItem.reportFlag + dataItem.inspectionResult = '1' } - })) - }).finally( - this.visible = true, - console.log('this.approveData---->', this.approveData) - ) + }) + this.$refs.editableDetailTable.clearCheckboxRow() + this.selectedRowKeys = [] + }, + + /** + * 琛ㄦ牸澶氶�夋鍙戠敓鏀瑰彉鏃惰Е鍙� + * @param {selectedRowIds} 琛ㄦ牸涓凡閫夋嫨鐨処D鍒楄〃 + */ + handleTableSelectRowChange({ selectedRowIds }) { + this.selectedRowKeys = selectedRowIds + }, + + /** + * 鐐规缁撴灉閫夋嫨鍣ㄥ彂鐢熸敼鍙樻椂瑙﹀彂 + * @param value 鏀瑰彉鍚庣殑鍊� + * @param record 淇濆吇鏄庣粏琛岃褰� + */ + handleInspectionResultSelectChange(value, record) { + if (record.exceptionDescription) delete record.exceptionDescription + if (record.reportFlag) delete record.reportFlag + }, + + handCancel() { + this.selectedRowKeys = [] + this.visible = false + } } } -} </script> <style scoped> -.shallow-hr { - border: 0; - height: 1px; /* 鍒嗙晫绾跨殑楂樺害 */ - background-color: rgba(0, 0, 0, 0.1); /* 浣跨敤 RGBA 棰滆壊锛屽苟璁剧疆杈冧綆鐨勯�忔槑搴� */ - margin: 20px 0; /* 鍒嗙晫绾夸笂涓嬬殑澶栬竟璺� */ -} -.btn-custom { - background-color: #4CAF50; /* 缁胯壊鑳屾櫙 */ - color: white; /* 鐧借壊鏂囧瓧 */ - border: none; /* 鏃犺竟妗� */ - padding: 5px 15px; /* 鍐呰竟璺� */ - text-align: center; /* 鏂囧瓧灞呬腑 */ - text-decoration: none; /* 鏃犱笅鍒掔嚎 */ - display: inline-block; /* 琛屽唴鍧楀厓绱� */ - font-size: 12px; /* 瀛椾綋澶у皬 */ - margin: 4px 2px; /* 澶栬竟璺� */ - cursor: pointer; /* 榧犳爣鎮仠鏃舵樉绀烘墜鍨� */ - border-radius: 4px; /* 鍦嗚杈规 */ -} + .btn-custom { + background-color: #4CAF50; /* 缁胯壊鑳屾櫙 */ + color: #fff; /* 鐧借壊鏂囧瓧 */ + } -.bold-large-label { - font-weight: bold; - font-size: 20px; /* 鎴栦綘闇�瑕佺殑浠讳綍澶у皬 */ -} -.left_qiu{ - position: absolute; - left: -74px; - top: 0; - width:54px; - border-radius: 50%; - height:54px; - font-size: 13px; - margin: auto; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: center; - background: #0099ff; - transform: translate(0, 0); -} -/deep/ .ant-timeline-item-tail{ - left: -29px !important; -} -.left_qiu span{ - width: 3em; - display: block; - color: #fff; - text-align: center; -} -.img{ - width: 75%; -} + /deep/ .ant-select-dropdown-menu { + text-align: left; + } -.wrap{ - clear: both; - width: 100%; - display: flex; - height: 50px; - border: 1px solid #ccc; - /* background-color: aqua; */ -} -.box{ - width:21%; - height:50px; - border-right: 1px solid #ccc; - line-height: 50px; - /* background: red; */ - text-align:center; - margin: auto; -} - -@import '~@assets/less/common.less'; + @import '~@assets/less/common.less'; </style> \ No newline at end of file diff --git a/src/views/flowable/workflow/repairOrder/RepairOrderApprovalModal.vue b/src/views/flowable/workflow/repairOrder/RepairOrderApprovalModal.vue index 98b7bea..76c6210 100644 --- a/src/views/flowable/workflow/repairOrder/RepairOrderApprovalModal.vue +++ b/src/views/flowable/workflow/repairOrder/RepairOrderApprovalModal.vue @@ -3,6 +3,7 @@ :width="1000" :visible="visible" @cancel="handCancel" + @ok="submitForm" :mask-closable="false" centered > @@ -23,118 +24,106 @@ <div v-if="imageSrc&&isDisplayBmp"> <img :src="imageSrc" alt="Fetched Image"/> </div> - <hr class="shallow-hr"/> + <!--<hr class="shallow-hr"/>--> </div> - <div> - <b>鎸囨淳璇︽儏</b> - <br> - <a-form :form='form'> - <a-spin :spinning="spinning"> - <a-tabs default-active-key='1'> - <a-tab-pane key='1' tab='鍩烘湰淇℃伅'> - <a-form-model ref='form' :model='tableRowRecord' :rules='validatorRules' :labelCol='labelCol' - :wrapperCol='wrapperCol'> - <a-row> - <a-col :span='span'> - <a-form-model-item label='宸ュ崟缂栧彿'> - <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairCode'/> - </a-form-model-item> - </a-col> - <a-col :span='span'> - <a-form-model-item label='璁惧缂栧彿'> - <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.equipmentId_dictText'/> - </a-form-model-item> - </a-col> - <a-col :span='span'> - <a-form-model-item label='鍗曟嵁鐘舵��'> - <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairStatus_dictText'/> - </a-form-model-item> - </a-col> - <a-col :span='span'> - <a-form-model-item label='缁翠慨璐熻矗浜�'> - <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairer'/> - </a-form-model-item> - </a-col> - </a-row> - </a-form-model> - </a-tab-pane> - <a-tab-pane key='2' tab='娴佺▼鑺傜偣'> - <a-card> - <a-timeline style="padding:0 1% 0 12%"> - <a-timeline-item color='white' v-for="(item,index1) in hitaskDataSource" :key="index1"> - <div class="bottom"> - <p>寮�濮嬫椂闂达細{{item.startTime}}</p> - <p>缁撴潫鏃堕棿锛歿{item.endTime}}</p> - <p>澶勭悊浜猴細{{item.assignee}}</p> - <p>鍔炵悊绫诲瀷锛歿{item.bllx_dictText}}</p> - <p v-if="item.name == '鎻愪氦鐢宠'">鎸囨淳鍘熷洜锛歿{item.cause}}</p> - <p v-else>澶勭悊鎰忚锛歿{item.cause}}</p> - <div class="left_qiu"><span>{{item.name}}</span></div> - </div> - </a-timeline-item> - </a-timeline> - </a-card> - </a-tab-pane> - </a-tabs> - </a-spin> - </a-form> - </div> <div> - <hr class="shallow-hr"> - <br> - <b>瀹℃壒璇︽儏</b> - <br> - <br> - <a-form-model ref="form" :model="approveData" :rules="validatorRules" :labelCol='labelCol' - :wrapperCol='wrapperCol'> - <a-row> - <a-col :span="24"> - <a-form-model-item label="鏄惁闇�瑕侀鐢ㄥ浠�" prop="status"> - <a-radio-group v-model="approveData.status"> - <a-radio :value="1">鏄�</a-radio> - <a-radio :value="0">鍚�</a-radio> - </a-radio-group> - </a-form-model-item> - </a-col> + <a-spin :spinning="spinning"> + <a-tabs default-active-key='1'> + <a-tab-pane key='1' tab='鍩烘湰淇℃伅'> + <a-form-model :model='tableRowRecord' :rules='validatorRules' :labelCol='labelCol' + :wrapperCol='wrapperCol'> + <a-row> + <a-col :span='span'> + <a-form-model-item label='宸ュ崟缂栧彿'> + <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairCode'/> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label='璁惧缂栧彿'> + <lx-search-equipment-select disabled v-model='tableRowRecord.equipmentId'/> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label='鍗曟嵁鐘舵��'> + <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairStatus_dictText'/> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label='缁翠慨璐熻矗浜�'> + <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairer'/> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </a-tab-pane> - <template v-if="approveData.status===0"> - <a-col :span="24"> - <a-form-model-item label="鏁呴殰鍘熷洜" prop="faultReason"> - <a-input v-model="approveData.faultReason" rows="4" placeholder="璇疯緭鍏ユ晠闅滃師鍥�"/> - </a-form-model-item> - </a-col> - <a-col :span="24"> - <a-form-model-item label="缁翠慨缁撴灉鎻忚堪" prop="repairResultDescription"> - <a-textarea v-model="approveData.repairResultDescription" placeholder="璇疯緭鍏ョ淮淇粨鏋滄弿杩�"/> - </a-form-model-item> - </a-col> - <a-col :span="24"> - <a-form-model-item label="缁翠慨鍥剧墖"> - <j-image-upload v-model="approveData.imageFiles" :is-multiple="true" :number="3"/> - </a-form-model-item> - </a-col> - </template> - </a-row> - </a-form-model> + <a-tab-pane key='2' tab='娴佺▼鑺傜偣'> + <a-card :bordered="false"> + <a-timeline> + <a-timeline-item v-for="(item,index) in hitaskDataSource" :key="index"> + <div> + <h3 style="font-weight: bold">{{item.taskName}}</h3> + <div>澶勭悊浜猴細{{item.assignee_dictText}}</div> + <div v-if="index !==0">澶勭悊鏃堕暱锛歿{item.duration}}</div> + <div v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</div> + <div v-if="item.description">澶勭悊鎰忚锛歿{item.description}}</div> + </div> + </a-timeline-item> + </a-timeline> + </a-card> + </a-tab-pane> + </a-tabs> + </a-spin> </div> + + <a-tabs default-active-key='1'> + <a-tab-pane key="1" tab="瀹℃壒璇︽儏"> + <a-form-model ref="form" :model="approveData" :rules="validatorRules" :labelCol='labelCol' + :wrapperCol='wrapperCol'> + <a-row> + <a-col :span="24"> + <a-form-model-item label="鏄惁闇�瑕侀鐢ㄥ浠�" prop="status"> + <a-radio-group v-model="approveData.status"> + <a-radio :value="1">鏄�</a-radio> + <a-radio :value="0">鍚�</a-radio> + </a-radio-group> + </a-form-model-item> + </a-col> + + <template v-if="approveData.status===0"> + <a-col :span="24"> + <a-form-model-item label="鏁呴殰鍘熷洜" prop="faultReason"> + <a-input v-model="approveData.faultReason" rows="4" placeholder="璇疯緭鍏ユ晠闅滃師鍥�"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="缁翠慨缁撴灉鎻忚堪" prop="repairResultDescription"> + <a-textarea v-model="approveData.repairResultDescription" placeholder="璇疯緭鍏ョ淮淇粨鏋滄弿杩�"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="缁翠慨鍥剧墖"> + <j-image-upload v-model="approveData.imageFiles" :is-multiple="true" :number="3"/> + </a-form-model-item> + </a-col> + </template> + </a-row> + </a-form-model> + </a-tab-pane> + </a-tabs> </a-card> - - <template slot="footer"> - <div> - <a-button @click="handCancel">鍙栨秷</a-button> - <a-button @click="submitForm" type="primary">鎻� 浜�</a-button> - </div> - </template> </a-modal> </template> <script> import '@assets/less/TableExpand.less' import { getAction, deleteAction, postAction, downFile, httpAction } from '@api/manage' + import LxSearchEquipmentSelect from '../../../eam/equipment/modules/LxSearchEquipmentSelect' export default { name: 'RepairOrderApprovalModal', + components: { LxSearchEquipmentSelect }, props: { selectShenpiData: { type: Object, @@ -148,12 +137,11 @@ inputReadOnly: true, spinning: false, tableRowRecord: {}, - assignFileStream: {}, hitaskDataSource: [], imageSrc: null, labelCol: { xs: { span: 24 }, - sm: { span: 5 } + sm: { span: 6 } }, wrapperCol: { xs: { span: 24 }, @@ -171,7 +159,6 @@ ] }, approveData: {}, - flowData: {}, visible: false, // 琛ㄥご url: { @@ -184,16 +171,13 @@ showBmpButtonLoading: false } }, - created() { - }, methods: { /** - * 鑾峰彇寰呭姙璁板綍鐨勫熀鏈俊鎭� + * 鑾峰彇娴佺▼鑺傜偣 * @param record 寰呭姙璁板綍淇℃伅 */ getAllApproveData(record) { console.log('selectShenpiData----->', this.selectShenpiData) - this.flowData = Object.assign({}, record) const param = { 'procInstId': record.dataId } getAction(this.url.queryHisTaskList, param) .then(res => { @@ -209,7 +193,8 @@ this.spinning = true const that = this const param = { id: record.dataId } - this.tableRowRecord = this.approveData = {} + this.tableRowRecord = {} + this.approveData = { status: 0 } getAction(this.url.queryBomDataById, param) .then((res => { if (res.success) { @@ -226,13 +211,10 @@ fetchAndShowBmp() { this.isDisplayBmp = !this.isDisplayBmp if (!this.imageSrc) { + const { processDefinitionId, processInstanceId, processDefinitionKey } = this.selectShenpiData + let param = { processDefinitionId, processInstanceId, TaskDefinitionKey: processDefinitionKey } this.showBmpButtonLoading = true const that = this - let param = { - processDefinitionId: this.flowData.processDefinitionId, - processInstanceId: this.flowData.processInstanceId, - TaskDefinitionKey: this.flowData.processDefinitionKey - } downFile(this.url.diagramView, param, 'get') .then((res => { const urlObject = window.URL.createObjectURL(new Blob([res])) @@ -292,13 +274,6 @@ } </script> <style scoped> - .shallow-hr { - border: 0; - height: 1px; /* 鍒嗙晫绾跨殑楂樺害 */ - background-color: rgba(0, 0, 0, 0.1); /* 浣跨敤 RGBA 棰滆壊锛屽苟璁剧疆杈冧綆鐨勯�忔槑搴� */ - margin: 20px 0; /* 鍒嗙晫绾夸笂涓嬬殑澶栬竟璺� */ - } - .btn-custom { background-color: #4CAF50; /* 缁胯壊鑳屾櫙 */ color: #fff; /* 鐧借壊鏂囧瓧 */ -- Gitblit v1.9.3