From 9be2e2f91332ed341406acf9739d8912dddbf6fe Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期二, 22 七月 2025 20:43:43 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/flowable/workflow/TechnicalStatus/TechnicalStatusChangeApprovalModal.vue | 394 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 394 insertions(+), 0 deletions(-) diff --git a/src/views/flowable/workflow/TechnicalStatus/TechnicalStatusChangeApprovalModal.vue b/src/views/flowable/workflow/TechnicalStatus/TechnicalStatusChangeApprovalModal.vue new file mode 100644 index 0000000..b3de472 --- /dev/null +++ b/src/views/flowable/workflow/TechnicalStatus/TechnicalStatusChangeApprovalModal.vue @@ -0,0 +1,394 @@ +<template> + <j-modal :title="title" fullscreen :visible="visible" :confirmLoading="confirmLoading" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" @ok="handleOk" + @cancel="handleCancel" cancelText="鍏抽棴"> + <a-spin :spinning="spinning"> + <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-row id="outer-row" :gutter="24"> + <!--宸︿晶鍩虹淇℃伅鍒�--> + <a-col :span="8" class="scroll-col"> + <a-tabs> + <a-tab-pane tab="鍩虹淇℃伅"> + <a-row> + <a-col :span="12"> + <a-form-model-item label="鍙樻洿鍗曞彿"> + <a-input v-model="model.changeOrderNum" readOnly/> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="鐢宠鍗曚綅"> + <a-input v-model="model.factoryOrgCode_dictText" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span="12"> + <a-form-model-item label="缂栧埗浜�"> + <a-input v-model="model.designer_dictText" readOnly/> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="缂栧埗鏃堕棿"> + <a-input v-model="model.designerTime" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span="24"> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="澶囨敞"> + <a-textarea v-model="model.remark" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + </a-tab-pane> + </a-tabs> + </a-col> + + <!-- 涓棿鏄庣粏椤瑰垪--> + <a-col :span="10" class="scroll-col"> + <a-tabs> + <a-tab-pane key="1" tab="璁惧鏄庣粏"> + <j-vxe-table ref="editableDetailTable" rowNumber bordered keep-source :dataSource="detail.dataSource" + :columns="detail.columns"/> + </a-tab-pane> + <a-tab-pane key='2' tab='娴佺▼鍥�' v-if="selectShenpiData.procInstId"> + <img :src="imageSrc" alt="Fetched Image" style="width: 100%" v-if="imageSrc"/> + </a-tab-pane> + </a-tabs> + </a-col> + + <!--鍙充晶瀹℃壒鍒�--> + <a-col :span="6" class="scroll-col"> + <a-tabs v-if="displayDepartHeaderFlag"> + <a-tab-pane tab="浣跨敤鍗曚綅瀹ょ骇棰嗗纭"> + <a-row> + <a-col :span="24"> + <a-form-model-item prop="departHeaderSignatureResult" label="纭绫诲瀷" :labelCol="rightColLabelCol" + :wrapperCol="rightColWrapperCol"> + <j-dict-select-tag type='radio' v-model='model.departHeaderSignatureResult' + dictCode='approve_reject' + :disabled="disableSubmit||(model.changeStatus&&model.changeStatus!='DEPART_HEADER_SIGNING')"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="纭鎰忚" :labelCol="rightColLabelCol" :wrapperCol="rightColWrapperCol"> + <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.departHeaderComment" + :disabled="disableSubmit||(model.changeStatus&&model.changeStatus!='DEPART_HEADER_SIGNING')"/> + </a-form-model-item> + </a-col> + </a-row> + </a-tab-pane> + </a-tabs> + + <a-tabs v-if="displayDepartLeaderFlag"> + <a-tab-pane tab="浣跨敤鍗曚綅閮ㄧ骇棰嗗纭"> + <a-row> + <a-col :span="24"> + <a-form-model-item prop="departLeaderSignatureResult" label="纭绫诲瀷" :labelCol="rightColLabelCol" + :wrapperCol="rightColWrapperCol"> + <j-dict-select-tag type='radio' v-model='model.departLeaderSignatureResult' + dictCode='approve_reject' + :disabled="disableSubmit||(model.changeStatus&&model.changeStatus!='DEPART_LEADER_SIGNING')"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="纭鎰忚" :labelCol="rightColLabelCol" :wrapperCol="rightColWrapperCol"> + <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.departLeaderComment" + :disabled="disableSubmit||(model.changeStatus&&model.changeStatus!='DEPART_LEADER_SIGNING')"/> + </a-form-model-item> + </a-col> + </a-row> + </a-tab-pane> + </a-tabs> + </a-col> + </a-row> + </a-form-model> + </a-spin> + </j-modal> +</template> + +<script> + import { downFile, getAction, postAction } from '@/api/manage' + import TechnicalStatusEquipmentSelect from '../../../eam/equipment/modules/TechnicalStatusEquipmentSelect' + import { JVXETypes } from '@comp/jeecg/JVxeTable' + + export default { + name: 'TechnicalStatusChangeApprovalModal', + components: { + TechnicalStatusEquipmentSelect + }, + props: { + selectShenpiData: { + type: Object + } + }, + data() { + return { + title: '鎿嶄綔', + visible: false, + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 8 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 } + }, + labelColLong: { + xs: { span: 24 }, + sm: { span: 4 } + }, + wrapperColLong: { + xs: { span: 24 }, + sm: { span: 20 } + }, + rightColLabelCol: { + xs: { span: 24 }, + sm: { span: 6 } + }, + rightColWrapperCol: { + xs: { span: 24 }, + sm: { span: 16 } + }, + confirmLoading: false, + spinning: false, + imageSrc: null, + validatorRules: { + departHeaderSignatureResult: [{ required: true, message: '璇烽�夋嫨纭绫诲瀷' }], + departLeaderSignatureResult: [{ required: true, message: '璇烽�夋嫨纭绫诲瀷' }] + }, + url: { + queryById: '/eam/eamTechnicalStatusChange/queryById', + approval: '/eam/eamTechnicalStatusChange/approval', + detail: '/eam/eamTechnicalStatusChangeDetail/queryList', + diagramView: '/assign/flow/diagramView' + }, + disableSubmit: false, + selectedRowKeys: [], + detail: { + dataSource: [], + columns: [ + { + title: 'ID', + key: 'id', + type: JVXETypes.hidden + }, + { + title: '缁熶竴缂栫爜', + key: 'equipmentCode', + align: 'center', + type: JVXETypes.normal, + width: 200 + }, + { + title: '璁惧鍚嶇О', + key: 'equipmentName', + align: 'center', + type: JVXETypes.normal, + width: 200 + }, + { + title: '璁惧鍨嬪彿', + key: 'equipmentModel', + align: 'center', + type: JVXETypes.normal, + width: 200 + }, + { + title: '浣跨敤鍗曚綅', + key: 'factoryName', + align: 'center', + type: JVXETypes.normal, + width: 200 + }, + { + title: '鍙樻洿鍘熷洜', + key: 'changeCategory_dictText', + align: 'center', + type: JVXETypes.normal, + width: 200 + }, + { + title: '鍙樻洿鏃ユ湡', + key: 'changeDate', + align: 'center', + type: JVXETypes.normal, + width: 200 + }, + { + title: '鍙樻洿鍚庢妧鏈姸鎬�', + key: 'changeTechnicalStatus_dictText', + align: 'center', + type: JVXETypes.normal, + width: 200 + } + ] + } + } + }, + computed: { + displayDepartHeaderFlag() { + return this.model.changeStatus && ['DEPART_HEADER_SIGNING', 'DEPART_LEADER_SIGNING', 'COMPLETED'].includes(this.model.changeStatus) + }, + displayDepartLeaderFlag() { + return this.model.changeStatus && ['DEPART_LEADER_SIGNING', 'COMPLETED'].includes(this.model.changeStatus) + } + }, + methods: { + /** + * 涓婚〉闈㈢偣鍑绘墽琛屽鎵规椂瑙﹀彂 + * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍 + */ + handleApprove(record) { + this.model = {} + this.getBasicInformationByApi(record) + this.getFlowChartImageByApi(record) + }, + + /** + * 涓婚〉闈㈢偣鍑昏鎯呮椂瑙﹀彂 + * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍 + */ + handleDetail(record) { + this.model = Object.assign({}, record) + this.loadDetail(record.id) + }, + + /** + * 鑾峰彇鍩虹淇℃伅 + * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍 + */ + getBasicInformationByApi(record) { + this.spinning = true + const that = this + getAction(this.url.queryById, { id: record.dataId }) + .then(res => { + if (res.success) { + that.model = Object.assign({}, res.result) + that.model.dataId = record.dataId + that.model.taskId = record.id + that.model.userId = record.assignee + that.model.instanceId = record.procInstId + } + else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) + .finally(() => { + this.loadDetail(record.dataId) + }) + }, + + /** + * 鑾峰彇娴佺▼鍥� + * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍 + */ + getFlowChartImageByApi(record) { + const { processDefinitionId, processInstanceId, processDefinitionKey } = record + this.imageSrc = null + downFile(this.url.diagramView, { + processDefinitionId, + processInstanceId, + TaskDefinitionKey: processDefinitionKey + }, 'get') + .then((res => { + this.imageSrc = window.URL.createObjectURL(new Blob([res])) + })) + .catch(err => { + this.$notification.error({ + message: '娑堟伅', + description: err.message + }) + }) + }, + + /** + * 鑾峰彇璁惧鏄庣粏 + * @param orderId + */ + loadDetail(orderId) { + this.detail.dataSource = [] + getAction(this.url.detail, { orderId }) + .then(res => { + console.log('res', res) + if (res.success) this.detail.dataSource = res.result + }) + .finally(() => { + this.spinning = false + }) + }, + + async handleOk() { + const that = this + + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = that.spinning = true + + postAction(that.url.approval, that.model) + .then((res) => { + if (res.success) { + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.$emit('modalFormOk') + that.close() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) + .finally(() => { + that.confirmLoading = that.spinning = false + }) + } else { + return false + } + }) + }, + + handleCancel() { + this.close() + }, + + close() { + this.$emit('close') + this.visible = false + this.$refs.form.clearValidate() + } + } + } +</script> + +<style scoped lang="less"> + /deep/ .ant-spin-nested-loading { + height: 100%; + + .ant-spin-container { + height: 100%; + + .ant-form { + height: 100%; + + #outer-row { + height: 100%; + + .scroll-col { + height: 100%; + overflow: auto; + } + } + } + } + } +</style> \ No newline at end of file -- Gitblit v1.9.3