From e14ed882d12df3b48e59390eba364442cdff70bd Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期三, 28 五月 2025 15:46:32 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/flowable/workflow/lossBound/lossBoundHandle.vue | 505 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 505 insertions(+), 0 deletions(-) diff --git a/src/views/flowable/workflow/lossBound/lossBoundHandle.vue b/src/views/flowable/workflow/lossBound/lossBoundHandle.vue new file mode 100644 index 0000000..df462bd --- /dev/null +++ b/src/views/flowable/workflow/lossBound/lossBoundHandle.vue @@ -0,0 +1,505 @@ +<template> + <a-modal + :title="title" + :width="width" + :visible="visible" + :footer="null" + @cancel="handCancel" + > + <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"> + <a-row> + <a-col :span="span"> + <a-form-model-item label="鎶ユ崯鍗曞崟鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="outNum"> + <a-input disabled v-model="tableRowRecord.orderCode"></a-input> + </a-form-model-item> + </a-col> + <a-col :span="span"> + <a-form-model-item label="鎶ユ崯浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" + prop="outStorehouseType"> + <j-dict-select-tag disabled + v-model="tableRowRecord.losser" dictCode="sys_user,realname,id" + placeholder="璇烽�夋嫨" /> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span="span"> + <a-form-model-item label="鎶ユ崯鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" + prop="outboundTime"> + <j-date disabled v-model="tableRowRecord.lossTime" :show-time="true" + dateFormat="YYYY-MM-DD HH:mm" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="span"> + <a-form-model-item label="鎶ユ崯鍘熷洜" :labelCol="labelCol" :wrapperCol="wrapperCol" + prop="subjectMatter"> + <a-input disabled v-model="tableRowRecord.lossReason"></a-input> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span="span"> + <a-form-model-item label="缁忔墜浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="handler"> + <j-dict-select-tag disabled + v-model="tableRowRecord.handler" dictCode="sys_user,realname,id" + placeholder="璇烽�夋嫨" /> + </a-form-model-item> + </a-col> + <a-col :span="span"> + <a-form-model-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark"> + <a-textarea disabled v-model="tableRowRecord.remark" rows="4" /> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </a-tab-pane> + <a-tab-pane key="2" tab="鎶ユ崯鏄庣粏淇℃伅"> + <a-table + ref="table" + size="middle" + bordered + rowKey="id" + :scroll="{x:'max-content'}" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="null"> + </a-table> + </a-tab-pane> + <a-tab-pane key="3" tab="娴佺▼鑺傜偣"> + <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-tab-pane> + </a-tabs> + </a-spin> + </a-form> + </div> + <div v-if="auditVisible"> + <hr class="shallow-hr"> + <br> + <b>瀹℃壒璇︽儏</b> + <br> + <a-form-model ref="form" :model="approveData" :rules="validatorRules" slot="detail"> + <a-row> + <a-col ::span="span"> + <a-form-model-item label="鐢宠浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="handler_dictText"> + <a-input :readOnly="inputReadOnly" v-model="tableRowRecord.handler_dictText"></a-input> + </a-form-model-item> + </a-col> + <a-col ::span="span"> + <a-form-model-item label="鐢宠鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime"> + <a-input :readOnly="inputReadOnly" v-model="tableRowRecord.createTime"></a-input> + </a-form-model-item> + </a-col> + <a-col :span="24" class="btxx"> + <a-form-item label="瀹℃壒鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-select :disabled="disableSubmit" v-model="assignFileStream.status" placeholder="璇烽�夋嫨瀹℃壒缁撴灉"> + <a-select-option value="3">閫氳繃</a-select-option> + <a-select-option value="4">椹冲洖</a-select-option> + </a-select> + </a-form-item> + </a-col> + <a-col :span="24" class="btxx"> + <a-form-model-item label="瀹℃壒鎰忚" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-textarea :disabled="disableSubmit" v-model="assignFileStream.approvalOpinion" rows="4" + placeholder="璇疯緭鍏ュ鎵规剰瑙�" /> + </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 :disabled="disableSubmit" @click="submitForm">鎻愪氦</a-button> + </div> + </a-form-model> + </div> + </a-card> + + + </a-modal> +</template> + +<script> + +import '@assets/less/TableExpand.less' +import { mixinDevice } from '@/utils/mixin' +import { downFile, getAction, httpAction } from '@api/manage' + +export default { + name: 'lossBoundHandle', + mixins: [mixinDevice], + props: { + selectShenpiData: { + type: Object, + required: true + } + }, + + data() { + return { + form: this.$form.createForm(this), + span: 12, + span1: 8, + disableSubmit: false, + inputReadOnly: true, + spinning: false, + tableRowRecord: {}, + assignFileStream: {}, + tableDataSource: [], + usageDataSource: [], + hitaskDataSource: [], + dataSource: [], + bomForm: {}, + imageSrc: null, + drawerVisible: true, + auditVisible: true, + loading: false, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 30 }, + sm: { span: 16 } + }, + /* 鍒嗛〉鍙傛暟 */ + ipagination: { + current: 1, + pageSize: 5, + pageSizeOptions: ['5', '10', '50'], + showTotal: (total, range) => { + return range[0] + '-' + range[1] + ' 鍏�' + total + '鏉�' + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0 + }, + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + } + }, + { + title: '鍒�鍏风紪鍙�', + align: 'center', + dataIndex: 'toolCode' + }, + { + title: '宸ュ叿绫诲瀷', + align: 'center', + dataIndex: 'applicationType_dictText' + }, + { + title: '鎶ユ崯鍘熷洜', + align: 'center', + dataIndex: 'lossReason' + }, + { + title: '鎶ユ崯鏁伴噺', + align: 'center', + dataIndex: 'lossNumber' + }, + { + title: '涓枃鍚嶇О', + align: 'center', + dataIndex: 'chineseName' + }, + { + title: '鍨嬪彿/鍥惧彿', + align: 'center', + dataIndex: 'toolModel' + }, + { + title: '鍒�鍏锋潗鏂�', + align: 'center', + dataIndex: 'toolMaterial' + }, + { + title: '闆朵欢鏉愭枡', + align: 'center', + dataIndex: 'partMaterial' + }, + { + title: '鍘傚', + align: 'center', + dataIndex: 'supplierId' + }, + { + title: '瀛樺偍浣嶇疆(搴撲綅鍙�)', + align: 'center', + dataIndex: 'positionCode' + }, + + { + title: '鍒涘缓鏃堕棿', + align: 'center', + dataIndex: 'createTime' + }, + { + title: '澶囨敞', + align: 'center', + dataIndex: 'remark' + } + ], + validatorRules: { + status: { + rules: [ + { required: true, message: '璇烽�夋嫨瀹℃壒鐘舵��!' } + ] + } + }, + approveData: {}, + flowData: {}, + title: '瀹℃壒椤甸潰', + width: 1200, + visible: false, + // 琛ㄥご + url: { + queryLossBoundOrder: '/tms/toolsLossBound/queryById', + queryLossBoundDetailList: '/tms/toolsLossBound/listlossboundDetailByMainId', + diagramView: '/assign/flow/diagramView', + queryHisTaskList: '/assign/flow/queryHisTaskList', + approve: '/tms/toolsLossBound/approval' + }, + dictOptions: {}, + superFieldList: [], + workflowSource: [] + } + }, + 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() + }, + submitForm() { + const that = this + if (!that.assignFileStream.status == null || that.assignFileStream.status === undefined) { + this.$message.warning('璇烽�夋嫨瀹℃壒鐘舵�侊紒') + return false + } + if (!that.assignFileStream.approvalOpinion == null || that.assignFileStream.approvalOpinion === undefined) { + this.$message.warning('璇疯緭鍏ュ鎵规剰瑙侊紒') + return false + } + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.form.validateFields((err, values) => { + if (!err) { + that.confirmLoading = true + let url = this.url.approve + let method = 'post' + let flowTaskVo = {} + flowTaskVo.status = that.assignFileStream.status + flowTaskVo.approvalOpinion = that.assignFileStream.approvalOpinion + flowTaskVo.comment = that.assignFileStream.approvalOpinion + flowTaskVo.dataId = this.selectShenpiData.dataId + flowTaskVo.taskId = this.selectShenpiData.id + flowTaskVo.userId = this.selectShenpiData.assignee + flowTaskVo.instanceId = this.selectShenpiData.procInstId + flowTaskVo.targetKey = this.selectShenpiData.taskDefKey + flowTaskVo.values = this.selectShenpiData.variables + flowTaskVo.assignee = this.selectShenpiData.assignee + 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 + }) + } + + }) + }, + /** + * 鑾峰彇娴佺▼鑺傜偣鍜屾祦绋嬪浘 + * @param record 寰呭姙璁板綍淇℃伅 + */ + getAllApproveData(item) { + this.visible = true + this.loading = true + console.log('selectShenpiData----->', this.selectShenpiData) + this.flowData = item + getAction(this.url.queryHisTaskList, { procInstId: item.procInstId }).then(res => { + if (res.success) { + this.hitaskDataSource = res.result + } + }) + getAction(this.url.queryLossBoundOrder, { id: item.dataId }).then((res => { + if (res.success) { + this.tableRowRecord = res.result + } + })) + getAction(this.url.queryLossBoundDetailList, { lossBoundId: item.dataId }).then(res => { + if (res.success) { + this.dataSource = res.result.records + if (res.result.total) { + this.ipagination.total = res.result.total + } else { + this.ipagination.total = 0 + } + } else { + this.$message.warning(res.message) + } + }).finally(() => { + this.loading = 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; /* 鍦嗚杈规 */ +} + +.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'; +</style> \ No newline at end of file -- Gitblit v1.9.3