src/views/eam/base/EamMaintenanceStandardList.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/eam/repair/modules/ImagesPreviewModal.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/flowable/workflow/FlowCompleted.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/flowable/workflow/FlowTodo.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/flowable/workflow/repairOrder/RepairOrderApprovalModal.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/flowable/workflow/weekMaintenance/WeekMaintenanceApprovalModal.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/views/eam/base/EamMaintenanceStandardList.vue
@@ -45,12 +45,12 @@ <div class="table-operator"> <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button> <a-upload name="file" :showUploadList="false" :multiple="true" :headers="tokenHeader" :action="inspectionImportExcel" @change="inspectionImportExcel"> @change="handleImportExcel"> <a-button type="primary" icon="import">点检标准导入</a-button> </a-upload> <a-button type="primary" icon="download" @click="handleTemplateXlsDownload(url.inspectionXlsDownloadUrl)">点检标准模板下载</a-button> <a-upload name="file" :showUploadList="false" :multiple="true" :headers="tokenHeader" :action="weekMaintenanceImportExcel" @change="weekMaintenanceImportExcel"> @change="handleImportExcel"> <a-button type="primary" icon="import">周保标准导入</a-button> </a-upload> <a-button type="primary" icon="download" @click="handleTemplateXlsDownload(url.weekMaintenanceXlsDownloadUrl)">周保标准模板下载</a-button> src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue
@@ -63,7 +63,7 @@ <a-row> <a-col :span="24"> <a-form-model-item prop="imageFiles" label="报修图片" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> <j-image-upload v-model="model.imageFiles" :is-multiple="true" :number="3"/> <lx-upload :returnUrl="false" :isMultiple="true" file-type="image" :number="3" v-model="model.imageFilesResult"/> </a-form-model-item> </a-col> </a-row> src/views/eam/repair/modules/ImagesPreviewModal.vue
@@ -1,56 +1,61 @@ <template> <a-modal title="预览" :visible="visible" width="50%" :footer="null" @cancel="visible=false"> <template v-for="(item,index) in imageListUrl.split(',')"> <template v-for="(item,index) in imageUrlArr"> <img :src="getImageItemUrl(item)" width="100%;"/> <a-divider v-if="index+1<imageListUrl.split(',').length" style="margin:20px 0;background-color: #000"></a-divider> <a-divider v-if="index+1<imageUrlArr.length" style="margin:20px 0;background-color: #000"></a-divider> </template> </a-modal> </template> <script> export default { name: 'ImagesPreviewModal', props: { imageListUrl: { type: String, default: '' } }, data() { return { visible: false } }, methods: { getImageItemUrl(imageItemSrcSuffix) { return `${window._CONFIG['domianURL']}/${imageItemSrcSuffix}` export default { name: 'ImagesPreviewModal', props: { imageListUrl: { type: String, default: '' } }, data() { return { visible: false } }, computed: { imageUrlArr() { return JSON.parse(this.imageListUrl).map(item => item.filePath) } }, methods: { getImageItemUrl(imageItemSrcSuffix) { return `${window._CONFIG['domianURL']}/${imageItemSrcSuffix}` } } } } </script> <style scoped lang="less"> /deep/ .ant-modal { height: 70%; overflow: hidden; .ant-modal-content { height: 100%; display: flex; flex-direction: column; /deep/ .ant-modal { height: 70%; overflow: hidden; ::-webkit-scrollbar { width: 8px; height: 8px; } .ant-modal-content { height: 100%; display: flex; flex-direction: column; overflow: hidden; .ant-modal-body { flex: 1; overflow: auto; ::-webkit-scrollbar { width: 8px; height: 8px; } .ant-modal-body { flex: 1; overflow: auto; } } } } </style> src/views/flowable/workflow/FlowCompleted.vue
@@ -80,6 +80,8 @@ </div> <inspection-order-handle ref="modalFormInspectionOrderXq" :selectShenpiData="selectInspectionOrderXqData"/> <week-maintenance-approval-modal ref="weekMaintenanceApprovalModal" :selectShenpiData="selectWeekMaintenanceData"/> </a-card> </template> @@ -90,11 +92,13 @@ import { JeecgListMixin } from '@/mixins/JeecgListMixin' import JDictSelectTag from '@/components/dict/JDictSelectTag.vue' import InspectionOrderHandle from './InspectionOrder/InspectionOrderHandle' import WeekMaintenanceApprovalModal from './weekMaintenance/WeekMaintenanceApprovalModal' export default { name: 'NcDeviceCharactersList', mixins: [JeecgListMixin, mixinDevice], components: { WeekMaintenanceApprovalModal, InspectionOrderHandle, JDictSelectTag }, @@ -162,8 +166,7 @@ list: '/assign/flow/finishedList' }, dictOptions: {}, selectShenpiData: {}, selectDispatchFileXqData: {}, selectWeekMaintenanceData: {}, selectInspectionOrderXqData: {} } }, @@ -199,8 +202,11 @@ return result }, handleWeekMaintenance() { handleWeekMaintenance(record) { this.selectWeekMaintenanceData = Object.assign({}, record) this.$refs.weekMaintenanceApprovalModal.handleDetail(record) this.$refs.weekMaintenanceApprovalModal.title = '详情' this.$refs.weekMaintenanceApprovalModal.disableSubmit = true }, handInspectionOrder(record) { src/views/flowable/workflow/FlowTodo.vue
@@ -291,6 +291,7 @@ handleRepairOrder(record) { this.selectRepairOrderData = Object.assign({}, record) this.$refs.repairOrderApprovalModal.visible = true this.$refs.repairOrderApprovalModal.title = record.name this.$refs.repairOrderApprovalModal.getAllApproveData(record) this.$refs.repairOrderApprovalModal.getBasicInformation(record) } src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue
@@ -78,8 +78,8 @@ <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="disableSubmit||tableRowRecord.inspectionStatus!=='UNDER_INSPECTION'" v-model="tableRowRecord.imageFiles"/> :disabled="isDisableOperation||!hasInspectionDateArrived" v-model="tableRowRecord.fileList"/> </a-form-model-item> </a-row> @@ -105,7 +105,7 @@ > <template v-slot:inspectionResult="props"> <j-dict-select-tag v-model="props.row.inspectionResult" dictCode="eam_inspection_result" :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='UNDER_INSPECTION'" :disabled="isDisableOperation" placeholder="请选择点检结果" @change="handleInspectionResultSelectChange($event,props.row)" style="width: 100%"/> @@ -114,13 +114,13 @@ <template v-slot:exceptionDescription="props"> <a-textarea style="height: 32px" v-model="props.row.exceptionDescription" :placeholder="props.row.inspectionResult==='2'?'请输入异常描述':''" :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='UNDER_INSPECTION'||!props.row.inspectionResult||props.row.inspectionResult==='1'"/> :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="disableSubmit||tableRowRecord.inspectionStatus!=='UNDER_INSPECTION'||!props.row.inspectionResult||props.row.inspectionResult==='1'" :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'" dictCode="yn" style="width: 100%"/> </template> @@ -150,7 +150,7 @@ </template> <a-button v-if="selectedRowKeys.length>0&&!disableSubmit&&tableRowRecord.inspectionStatus==='UNDER_INSPECTION'&&hasInspectionDateArrived&&activeTabKey==='1'" v-if="selectedRowKeys.length>0&&!isDisableOperation&&hasInspectionDateArrived&&activeTabKey==='1'" slot="tabBarExtraContent" type="primary" @click="handleSelectAllInspectionResult">批量点检正常 </a-button> @@ -175,8 +175,7 @@ <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'" placeholder="请选择处理类型"/> :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='WAIT_CONFIRM'"/> </a-form-model-item> </a-col> @@ -305,8 +304,6 @@ } ] }, isDisplayBmp: false, showBmpButtonLoading: false, selectedRowKeys: [], disableSubmit: false, activeTabKey: '1', @@ -319,11 +316,14 @@ }, isDisplayConfirm() { return ['WAIT_CONFIRM', 'COMPLETE'].includes(this.tableRowRecord.inspectionStatus) }, isDisableOperation() { return this.disableSubmit || this.tableRowRecord.inspectionStatus !== 'UNDER_INSPECTION' } }, methods: { /** * 获取流程节点 * 获取流程节点和流程图 * @param record 待办记录信息 */ getAllApproveData(record) { @@ -366,7 +366,7 @@ getAction(this.url.queryBomDataById, param) .then((res => { if (res.success) { that.tableRowRecord = res.result[0] that.tableRowRecord = { ... res.result[0], fileList: JSON.parse(res.result[0].imageFiles) } if (!this.hasInspectionDateArrived && !this.disableSubmit) this.title += `(未到点检日期不能提前点检)` that.detail.dataSource = res.result[0].tableDetailList console.log('that.tableRowRecord----->', that.tableRowRecord) @@ -392,6 +392,7 @@ 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) src/views/flowable/workflow/repairOrder/RepairOrderApprovalModal.vue
@@ -1,118 +1,147 @@ <template> <a-modal :width="1000" :width="1200" :visible="visible" :title="title" @cancel="handCancel" @ok="submitForm" :mask-closable="false" centered > <a-card :bordered="false"> <div> <b>{{ selectShenpiData.title }}</b> <br/> <br/> <a-tag color="blue"> 处理人 {{ selectShenpiData.assignee }} </a-tag> <a-tag color="blue"> 创建时间 {{ selectShenpiData.createTime }} </a-tag> <br> <br> <a-button @click="fetchAndShowBmp" :loading="showBmpButtonLoading" class="btn-custom">流程图</a-button> <div v-if="imageSrc&&isDisplayBmp"> <img :src="imageSrc" alt="Fetched Image"/> </div> <!--<hr class="shallow-hr"/>--> </div> <a-spin :spinning="spinning"> <a-form-model :model='tableRowRecord' :rules='validatorRules' :labelCol='labelCol' :wrapperCol='wrapperCol'> <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;">报修基础信息</a-divider> <div> <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> <a-row> <a-col :span='threeColSpan'> <a-form-model-item label='工单编号'> <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairCode'/> </a-form-model-item> </a-col> <a-col :span='threeColSpan'> <a-form-model-item label='设备编号'> <lx-search-equipment-select disabled v-model='tableRowRecord.equipmentId'/> </a-form-model-item> </a-col> <a-col :span='threeColSpan'> <a-form-model-item label='单据状态'> <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairStatus_dictText'/> </a-form-model-item> </a-col> </a-row> <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-row> <a-col :span='threeColSpan'> <a-form-model-item label='维修负责人'> <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairer'/> </a-form-model-item> </a-col> <a-col :span="threeColSpan"> <a-form-model-item label="故障开始时间"> <a-input :readOnly='inputReadOnly' v-model="tableRowRecord.faultStartTime"/> </a-form-model-item> </a-col> <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> <a-col :span="threeColSpan"> <a-form-model-item label="是否停机"> <j-dict-select-tag type='radio' v-model='tableRowRecord.breakdownFlag' dictCode='breakdown_flag' disabled/> </a-form-model-item> </a-col> </a-row> <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-row> <a-col :span='threeColSpan*3'> <a-form-model-item label='报修图片' :labelCol='labelColLong' :wrapperCol='wrapperColLong'> <j-image-upload v-model="tableRowRecord.imageFiles" disabled :is-multiple="true" :number="3"/> </a-form-model-item> </a-col> </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="领用备件"> <a-form-model ref="form" :model="approveData" :rules="validatorRules" :labelCol='labelCol' :wrapperCol='wrapperCol'> <a-row> <a-col :span="twoColSpan*2"> <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-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 v-if="approveData.status===0"> <a-col :span="twoColSpan*2"> <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="twoColSpan*2"> <a-form-model-item label="维修结果描述" prop="repairResultDescription"> <a-textarea v-model="approveData.repairResultDescription" placeholder="请输入维修结果描述"/> </a-form-model-item> </a-col> <a-col :span="twoColSpan*2"> <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-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> </a-tabs> <template> <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;">管理员领用备件 </a-divider> <a-row> <a-col :span="twoColSpan"> <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'" placeholder="请选择处理类型"/> </a-form-model-item> </a-col> <a-col :span="twoColSpan"> <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> </template> </a-form-model> </a-spin> </a-modal> </template> @@ -132,13 +161,17 @@ }, data() { return { title: '', form: this.$form.createForm(this), span: 12, threeColSpan: 8, twoColSpan: 12, inputReadOnly: true, disableSubmit: false, spinning: false, tableRowRecord: {}, hitaskDataSource: [], imageSrc: null, activeTabKey: '1', labelCol: { xs: { span: 24 }, sm: { span: 6 } @@ -146,6 +179,14 @@ wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }, labelColLong: { xs: { span: 24 }, sm: { span: 2 } }, wrapperColLong: { xs: { span: 24 }, sm: { span: 20 } }, validatorRules: { status: [ @@ -166,22 +207,36 @@ diagramView: '/assign/flow/diagramView', queryHisTaskList: '/assign/flow/queryHisTaskList', approve: '/activit/assign/file/approve' }, isDisplayBmp: false, showBmpButtonLoading: false } } }, methods: { /** * 获取流程节点 * 获取流程节点和流程图 * @param record 待办记录信息 */ getAllApproveData(record) { console.log('selectShenpiData----->', this.selectShenpiData) const param = { 'procInstId': record.dataId } console.log('record----->', record) const { procInstId, processDefinitionId, processInstanceId, processDefinitionKey } = record const param = { procInstId } const imageParam = { processDefinitionId, processInstanceId, TaskDefinitionKey: processDefinitionKey } const that = this getAction(this.url.queryHisTaskList, param) .then(res => { this.hitaskDataSource = res.result 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 }) }) }, @@ -195,6 +250,7 @@ const param = { id: record.dataId } this.tableRowRecord = {} this.approveData = { status: 0 } this.activeTabKey = '1' getAction(this.url.queryBomDataById, param) .then((res => { if (res.success) { @@ -205,31 +261,6 @@ .finally(() => { that.spinning = false }) }, // 获取并展开流程图 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 }) } }, submitForm() { @@ -267,8 +298,7 @@ handCancel() { this.visible = false this.isDisplayBmp = false this.imageSrc = null this.$refs.form.clearValidate() } } } src/views/flowable/workflow/weekMaintenance/WeekMaintenanceApprovalModal.vue
@@ -61,11 +61,12 @@ </a-form-model-item> </a-row> <a-row :gutter="24"> <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="remark" label="保养图片"> <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="保养图片"> <lx-upload :returnUrl="false" :isMultiple="true" file-type="image" :disabled="confirmDisable" :number="3" v-model="model.imageFilesResult"/> </a-form-model-item> </a-row> @@ -428,6 +429,7 @@ }, recordDetail(record) { console.log('record', record) this.initParams() this.model = Object.assign({}, record) if (this.model.imageFiles) { @@ -462,11 +464,9 @@ // 触发表单验证 this.$refs.form.validate(valid => { if (valid) { that.confirmLoading = that.spinning = true let tableData = that.$refs.editableDetailTable.getTableData() that.model.tableDetailList = [...tableData] that.confirmLoading = spinnning = true let httpurl = this.url.approval let method = 'put' @@ -479,7 +479,7 @@ that.$message.warning(res.message) } }).finally(() => { that.confirmLoading = spinning = false that.confirmLoading = that.spinning = false }) } else { return false