From dbb3445dc720a8f36b3424e73f2e02a6b0f9deb6 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期日, 27 四月 2025 11:31:57 +0800 Subject: [PATCH] art: 从沃克项目迁移设备管理代码到航宇 --- src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue | 874 ++++++++++++++++++++++++++++++--------------------------- 1 files changed, 461 insertions(+), 413 deletions(-) diff --git a/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue index d4cfa8b..c99495f 100644 --- a/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue +++ b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue @@ -1,133 +1,98 @@ -<!-- - Description: 宸ヤ綔娴�-璁惧鐐规澶勭悊椤甸潰 List - Author: 浣滆�� liuyh - Date: 2025-02-27 ---> <template> - <a-modal + <j-modal :title="title" - :width="width" + :width="1200" :visible="visible" - :footer="null" - @cancel="handCancel" + :okButtonProps="{ class:{'jee-hidden': disableSubmit||!hasInspectionDateArrived} }" + @ok="submitForm" + @cancel="handleCancel" + :mask-closable="false" + :confirmLoading="confirmLoading" + switchFullscreen + centered > - <a-card :bordered="false"> - <div> - <b>{{ selectShenpiData.description }}</b> - <br> - <br> - <a-tag color="blue"> - 褰撳墠澶勭悊浜� {{ selectShenpiData.assignee_dictText }} - </a-tag> - <a-tag color="blue"> - 浠诲姟鍒涘缓鏃堕棿 {{ selectShenpiData.createTime }} - </a-tag> - <br> - <br> - <button @click="fetchAndShowBmp" class="btn-custom">鎵撳紑娴佺▼鍥�</button> - <div v-if="imageSrc"> - <img :src="imageSrc" alt="Fetched Image" /> - </div> - <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-spin :spinning="spinning"> + <a-form-model ref='form' :model='tableRowRecord' :labelCol="labelCol" :wrapperCol="wrapperCol" + :rules="validatorRules"> + <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 鐐规鍩虹淇℃伅</a-divider> - </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-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-col :span='span'> + <a-form-model-item label="鏍囧噯鍚嶇О"> + <a-input readOnly v-model="tableRowRecord.standardName"/> + </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.standardCode"/> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label="鐐规鏃ユ湡"> + <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='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_dictText" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span="span*3"> + <a-form-model-item label="澶囨敞" :labelCol="{span:2}" :wrapperCol="{span:21}"> + <a-textarea v-model="tableRowRecord.remark" rows="3" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-form-model-item prop="imageFilesResult" label="鐐规鍥剧墖" :labelCol="{span:2}" :wrapperCol="{span:21}"> + <lx-upload :returnUrl="false" :isMultiple="true" file-type="image" :number="3" + :disabled="isDisableOperation||!hasInspectionDateArrived" + v-model="tableRowRecord.fileList"/> + </a-form-model-item> + </a-row> + + <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> + 淇濆吇椤逛俊鎭� + </a-divider> + + <a-tabs v-model="activeTabKey"> + <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 +101,394 @@ :loading="detail.loading" :dataSource="detail.dataSource" :columns="detail.columns" - style="margin-top: 8px;" /> + @selectRowChange="handleTableSelectRowChange" + > + <template v-slot:inspectionResult="props"> + <j-dict-select-tag v-model="props.row.inspectionResult" dictCode="eam_inspection_result" + :disabled="isDisableOperation" + 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" + :placeholder="props.row.inspectionResult==='2'?'璇疯緭鍏ュ紓甯告弿杩�':''" + :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'"/> + </template> + + <template v-slot:reportFlag="props"> + <j-dict-select-tag v-model="props.row.reportFlag" + :placeholder="props.row.inspectionResult==='2'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''" + :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'" + dictCode="yn" + style="width: 100%"/> + </template> + </j-vxe-table> + </a-tab-pane> + + <template v-if="selectShenpiData.procInstId"> + <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-tab-pane key='3' tab='娴佺▼鍥�'> + <img :src="imageSrc" alt="Fetched Image"/> + </a-tab-pane> + </template> + + <a-button + v-if="selectedRowKeys.length>0&&!isDisableOperation&&hasInspectionDateArrived&&activeTabKey==='1'" + 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> + + <template v-if="isDisplayConfirm"> + <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 prop="confirmDealType" label="澶勭悊绫诲瀷"> + <j-dict-select-tag type='radio' v-model='tableRowRecord.confirmDealType' dictCode='approved_rejected' + :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='WAIT_CONFIRM'"/> + </a-form-model-item> + </a-col> + + <a-col :span="12"> + <a-form-model-item prop="confirmComment" label="澶勭悊鎰忚"> + <a-textarea placeholder="璇疯緭鍏ュ鐞嗘剰瑙�" + :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='WAIT_CONFIRM'" + v-model="tableRowRecord.confirmComment"/> + </a-form-model-item> + </a-col> </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> - </a-card> - - - </a-modal> + </template> + </a-form-model> + </a-spin> + </j-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 moment from 'moment' -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 + } + }, + data() { + return { + span: 8, + confirmLoading: false, + spinning: false, + tableRowRecord: {}, + assignFileStream: {}, + hitaskDataSource: [], + validatorRules: { + confirmDealType: [ + { required: true, message: '璇烽�夋嫨澶勭悊绫诲瀷' } + ], + confirmComment: [ + { required: true, message: '璇疯緭鍏ュ鐞嗘剰瑙�' } ] }, - }, - approveData: {}, - flowData: {}, - title: '璇︽儏椤甸潰', - width: 1000, - visible: false, - // 琛ㄥご - url: { - queryBomDataById: '/eam/eamInspectionOrder/selectVoById', - diagramView: '/assign/flow/diagramView', - queryHisTaskList:'/dncFlow/dispatchFile/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('鏃犳硶鍔犺浇鍥剧墖锛岃绋嶅悗鍐嶈瘯銆�') - } - }, - 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); + 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', + queryById: '/eam/eamInspectionOrder/queryById', + detailList: '/eam/eamInspectionOrderDetail/queryList' + }, + detail: { + loading: false, + dataSource: [], + columns: [ + { + title: '搴忓彿', + key: 'itemCode', + type: JVXETypes.normal, + width: '5%', + align: 'center', + fixed: 'left' + }, + { + title: '淇濆吇椤�', + key: 'itemName', + type: JVXETypes.normal, + width: '15%', + align: 'center', + fixed: 'left' + }, + { + title: '淇濆吇瑕佹眰', + key: 'itemDemand', + type: JVXETypes.normal, + width: '15%', + align: 'center', + fixed: 'left' + }, + { + title: '鐐规缁撴灉', + key: 'inspectionResult', + type: JVXETypes.slot, + slotName: 'inspectionResult', + width: '15%', + align: 'center', + validateRules: [ + { required: true, message: '${title}涓嶈兘涓虹┖锛�' } + ] + }, + { + title: '寮傚父鎻忚堪', + key: 'exceptionDescription', + type: JVXETypes.slot, + slotName: 'exceptionDescription', + width: '20%', + align: 'center', + validateRules: [ + { handler: this.customValidator } + ] + }, + { + title: '寮傚父鏄惁鎶ヤ慨', + key: 'reportFlag', + type: JVXETypes.slot, + slotName: 'reportFlag', + width: '20%', + align: 'center', + validateRules: [ + { handler: this.customValidator } + ] } - }).finally(() => { - that.confirmLoading = false; - }) - } - }) + ] + }, + selectedRowKeys: [], + disableSubmit: false, + activeTabKey: '1', + title: '' + } }, - getAllApproveData(item) { - console.log('selectShenpiData----->', this.selectShenpiData) - this.flowData = item - let param = { - 'id': item.dataId + computed: { + hasInspectionDateArrived() { + return moment(this.tableRowRecord.inspectionDate).diff(moment(), 'hours') <= 0 + }, + isDisplayConfirm() { + return ['WAIT_CONFIRM', 'COMPLETE'].includes(this.tableRowRecord.inspectionStatus) + }, + isDisableOperation() { + return this.disableSubmit || this.tableRowRecord.inspectionStatus !== 'UNDER_INSPECTION' } - 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]) + }, + methods: { + /** + * 鑾峰彇娴佺▼鑺傜偣鍜屾祦绋嬪浘 + * @param record 寰呭姙璁板綍淇℃伅 + */ + getAllApproveData(record) { + if (record.procInstId) { + const { processDefinitionId, processInstanceId, processDefinitionKey, procInstId } = record + const param = { procInstId } + const imageParam = { processDefinitionId, processInstanceId, TaskDefinitionKey: processDefinitionKey } + const that = this + + getAction(this.url.queryHisTaskList, param) + .then(res => { + that.hitaskDataSource = res.result + }) + + downFile(this.url.diagramView, imageParam, 'get') + .then((res => { + const urlObject = window.URL.createObjectURL(new Blob([res])) + that.imageSrc = urlObject + })) + .catch(err => { + that.$notification.error({ + message: '娑堟伅', + description: res.message + }) + }) + } + }, + + /** + * 鑾峰彇寰呭姙璁板綍鐨勫熀鏈俊鎭� + * @param record 寰呭姙璁板綍淇℃伅 + */ + async getBasicInformation(record) { + this.activeTabKey = '1' + this.detail.dataSource = [] + this.spinning = true + const param = { id: record.dataId } + let res = await getAction(this.url.queryById, param); + this.tableRowRecord = Object.assign({}, res.result); + if (this.tableRowRecord.imageFiles) { + let obj = JSON.parse(this.tableRowRecord.imageFiles) + this.tableRowRecord.fileList = [...obj] + } + await this.loadDetail(record.dataId) + }, + + async submitForm() { + let errMap = await this.$refs.editableDetailTable.validateTable() + if (errMap) { + console.log('err', errMap) + return + } + + this.$refs.form.validate(valid => { + if (valid) { + this.confirmLoading = this.spinning = true + 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.confirmDealType = this.tableRowRecord.confirmDealType + flowTaskVo.confirmComment = this.tableRowRecord.confirmComment + flowTaskVo.fileList = this.tableRowRecord.fileList + flowTaskVo.tableDetailList = this.$refs.editableDetailTable.getTableData() + const that = this + 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 = this.spinning = false + }) + } else { + return false } - })) - }).finally( - this.visible = true, - console.log('this.approveData---->', this.approveData) - ) + }) + }, + + autoCompleteForm({ standardName, maintenancePeriod, standardCode }) { + this.$set(this.tableRowRecord, 'standardName', standardName) + this.$set(this.tableRowRecord, 'maintenancePeriod', maintenancePeriod) + this.$set(this.tableRowRecord, 'standardCode', standardCode) + }, + + // 鎵归噺閫夋嫨鎵�鏈夌偣妫�缁撴灉 + handleSelectAllInspectionResult() { + this.selectedRowKeys.forEach(key => { + const dataItem = this.detail.dataSource.find(item => item.id === key) + if (dataItem && dataItem.inspectionResult !== '1') { + delete dataItem.exceptionDescription + delete dataItem.reportFlag + dataItem.inspectionResult = '1' + } + }) + 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 + }, + + customValidator({ cellValue, row }, callback) { + if (row.inspectionResult === '2') { + if (!cellValue) { + callback(false, '${title}涓嶈兘涓虹┖锛�') // false = 鏈�氳繃锛屽彲浠ヨ窡鑷畾涔夋彁绀� + } else { + callback(true) // true = 閫氳繃楠岃瘉 + } + } else { + callback(true) + } + }, + + handleCancel() { + this.selectedRowKeys = [] + this.visible = false + }, + //鏍囧噯閫夋嫨鍙樺寲 + loadDetail(orderId) { + if (orderId) { + getAction(this.url.detailList, { orderId: orderId }) + .then(res => { + if (res.success) { + this.detail.dataSource = [...res.result] + } + }) + .finally(() => { + this.spinning = 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; /* 鍦嗚杈规 */ -} + /deep/ .ant-select-dropdown-menu { + text-align: left; + } -.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%; -} - -.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 -- Gitblit v1.9.3