From 5fdea06fbfc49a8ae8f20054db6b27fcf4ade75f Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期四, 04 七月 2024 00:34:19 +0800 Subject: [PATCH] 一些更新 --- src/views/tigerprojects/mes/prod/biz_mes_wo/index.vue | 247 ++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 202 insertions(+), 45 deletions(-) diff --git a/src/views/tigerprojects/mes/prod/biz_mes_wo/index.vue b/src/views/tigerprojects/mes/prod/biz_mes_wo/index.vue index 56fe9bd..f401942 100644 --- a/src/views/tigerprojects/mes/prod/biz_mes_wo/index.vue +++ b/src/views/tigerprojects/mes/prod/biz_mes_wo/index.vue @@ -1,8 +1,16 @@ +<!-- + * @Description: 宸ュ崟绠$悊椤甸潰 + * @Author: Ben Lin + * @version: + * @Date: 2024-05-25 00:27:00 + * @LastEditors: Ben Lin + * @LastEditTime: 2024-07-03 20:51:05 +--> <template> <div> <BasicTable @register="registerTable"> <template #toolbar> - <a-button color="primary" @click="addWo" preIcon="add_02|svg"> 鏂板 </a-button> + <a-button type="primary" @click="addWo" preIcon="add_02|svg"> 鏂板 </a-button> <a-button ghost color="success" @click="ExcelToDb" preIcon="excel-import|svg"> 瀵煎叆 </a-button> @@ -15,7 +23,7 @@ @click="handleSelectItem" preIcon="search|svg" /> - <NormalModal @register="registerItemAdd" @success="handleItemSuccess" /> + <GeneralModal @register="registerItemAdd" @success="handleItemSuccess" /> </template> <template #action="{ record }"> <TableAction @@ -71,7 +79,7 @@ > <!-- 鐢ㄦ彃妲借嚜瀹氫箟澶氳〃鍗� --> <template #[item.name] v-for="item in dtlSlots" :key="item.name"> - <BasicForm @register="useFormData[item.name][0]"> + <BasicForm @register="useFormData[item.name][0]" v-if="useFormData[item.name]"> <!-- 鐢ㄦ彃妲借嚜瀹氫箟寮瑰嚭閫夋嫨妗� --> <template #[name]="{ field }" v-for="name in item.slots" :key="name"> <a-button @@ -80,25 +88,32 @@ @click="handleCustClick(field)" :preIcon="item.preIcons[name]" /> - <NormalModal + <GeneralModal @register="useModalData[name][0]" @success="(d, u) => handleEntSuccess(d, u, item.name)" /> </template> </BasicForm> + <!-- 鑷畾涔夊唴瀹� --> + <!-- <div style="height: 200px" id="lfContainer" v-if="isCustEl[item.name]"></div> --> + <div class="h-full" style="height: 380px" v-if="isCustEl[item.name]"> + <FlowChartView :data="routeData" @init="init" /> + </div> </template> </CustModal> <RouteViewModal @register="registerRv" @success="RvItemSuccess" /> </div> </template> <script lang="ts" setup> - import { reactive, unref, h, onMounted, ref, nextTick } from 'vue'; + import { reactive, unref, h, onMounted, ref, nextTick, Ref } from 'vue'; + import { Steps, Step, Layout, LayoutContent } from 'ant-design-vue'; import { BasicTable, useTable, TableAction } from '/@/components/Table'; import { BasicForm, FormSchema, FormActionType, useForm } from '/@/components/Form/index'; import WoDrawer from './WoDrawer.vue'; import WoModal from './WoModal.vue'; - import NormalModal from '/@/views/components/NormalModal.vue'; + import GeneralModal from '/@/views/components/GeneralModal.vue'; import RouteViewModal from '/@/views/components/RouteViewModal.vue'; + import { FlowChartView } from '/@/components/FlowChart'; import CustModal from '/@/views/components/CustModal.vue'; import { useDrawer } from '/@/components/Drawer'; import { columns, searchFormSchema } from './biz_mes_wo.data'; @@ -107,26 +122,31 @@ import { useMessage } from '/@/hooks/web/useMessage'; import { useI18n } from '/@/hooks/web/useI18n'; import { useModal } from '/@/components/Modal'; - import { getListByPage } from '/@/api/tigerapi/system'; + import { SaveEntity, getListByPage } from '/@/api/tigerapi/system'; import { GetSelectSuccess, OpenSelectItem, getFormSchema } from '/@/views/components/data'; + import LogicFlow from '@logicflow/core'; + import { initRoute } from '../../../system/lowcode/data'; const { t } = useI18n(); + const ASteps = Steps; + const AStep = Step; const cType = ref(''); const title = ref('宸ュ崟瀵煎叆'); const mtitle = ref('宸ュ崟鍒楄〃'); const dtlSlots = ref([] as any[]); const selectVals = ref({}); - const { createMessage } = useMessage(); + const { createMessage, createErrorModal } = useMessage(); const [registerDrawer, { openDrawer }] = useDrawer(); const compState = reactive({ absolute: false, loading: false, tip: '鍔犺浇涓�...', }); - const [registerRv, { openModal: openRvModal }] = useModal(); + const lfInstance = ref(null) as Ref<LogicFlow | null>; + const [registerRv, { openModal: openRvModal, closeModal }] = useModal(); const [registerWo, { openModal: openWoModal }] = useModal(); const [registerItemAdd, { openModal: openItemModal }] = useModal(); - const [registerCust, { openModal: openCustModal, closeModal }] = useModal(); + const [registerCust, { openModal: openCustModal }] = useModal(); const [registerTable, { getForm, reload }] = useTable({ title: '宸ュ崟淇℃伅', api: getListByPage, @@ -148,10 +168,19 @@ bordered: true, showIndexColumn: false, }); + const routeData = ref({ + nodes: [], + edges: [], + }); const formSchema = ref([] as FormSchema[]); - const woSchema = ref([] as FormSchema[]); - const prodSchema = ref([] as FormSchema[]); - const xxSchema = ref([] as FormSchema[]); + const woSchema = ref<FormSchema[]>(getFormSchema('woinfo')); + const prodSchema = ref<FormSchema[]>(getFormSchema('prodinfo')); + const isCustEl = ref({ + forminfo: false, + woinfo: false, + prodinfo: false, + rotinfo: true, + }); //琛ㄥ崟涓彃妲芥覆鏌撴寜閽墦寮�妯℃�佹useModal鏂规硶 const useModalData = ref({ add: useModal(), @@ -185,17 +214,27 @@ }, showActionButtonGroup: false, }), - xxinfo: useForm({ - labelWidth: 120, - schemas: xxSchema, - actionColOptions: { - span: 24, - }, - showActionButtonGroup: false, - }), + // rotinfo: useForm({ + // labelWidth: 120, + // schemas: rotSchema, + // actionColOptions: { + // span: 24, + // }, + // showActionButtonGroup: false, + // }), }); - onMounted(() => {}); + onMounted(async () => {}); + + const currlf = ref(null) as Ref<LogicFlow | null>; + /** + * @description: 宸ヨ壓璺嚎鍒濆鍖� + * @param {*} lf + * @return {*} + */ + async function init(lf, rotId) { + initRoute(lf, rotId, routeData, currlf); + } //鏂板 function addWo() { @@ -231,24 +270,45 @@ preIcons: { addRot: 'search|svg', setRot: 'config|svg' }, title: '浜у搧淇℃伅', }, - { name: 'xxinfo', slots: ['add'], preIcons: { add: 'search|svg' }, title: 'XXX' }, + { name: 'rotinfo', slots: ['add'], preIcons: { add: 'search|svg' }, title: '宸ヨ壓淇℃伅' }, ]; - woSchema.value = getFormSchema('woinfo'); - prodSchema.value = getFormSchema('prodinfo'); - xxSchema.value = getFormSchema('xxinfo'); + // rotSchema.value = getFormSchema('rotinfo'); + routeData.value = { + nodes: [], + edges: [], + }; + initRoute(currlf, record.ROUTE_CODE, routeData, currlf); + selectVals.value['ROUTE_CODE'] = record.ROUTE_CODE; openCustModal(true, { isUpdate: true, ctype: cType, title: '宸ヨ壓閰嶇疆', - width: '1000px', + width: '1200px', formEl: useFormData.value, //濡傛灉鏄涓〃鍗曪紝澧炲姞澶氫釜鎻掓Ы - formElName: ['woinfo', 'prodinfo', 'xxinfo'], + formElName: ['woinfo', 'prodinfo', 'rotinfo'], //琛ㄥ崟鎻掓Ы鍚嶇О锛屾敮鎸佸涓〃鍗� RowKey: '', - ...record, + fnName: { BIZ_MES_WO_Config: 'SaveCofig' }, //淇濆瓨鏂规硶鍚� + initFnName: { BIZ_MES_WO_Config: 'initRoute' }, //鍒濆鍖栨柟娉曞悕 + isCustEl: isCustEl.value, + others: routeData.value, + values: record, //琛ㄥ崟璁板綍 }); } - //涓嬪彂 + + /** + * @description: 涓嬪彂 + * @param {*} record + * @return {*} + */ function handleRelease(record: Recordable) { + if (record.STATUS == 2) { + createErrorModal({ + title: t('璀﹀憡'), + content: t('宸ュ崟宸茬粡涓嬪彂锛屼笉鑳藉啀涓嬪彂锛�'), + getContainer: () => document.body, + }); + return; + } cType.value = 'BIZ_MES_WO'; dtlSlots.value = [ { @@ -265,22 +325,75 @@ title: '宸ュ崟涓嬪彂', //鏍囬 width: '900px', //寮瑰嚭妗嗗搴� formEl: useFormData.value, - formElName: ['forminfo'], + formElName: ['forminfo'], //琛ㄥ崟鎻掓Ы鍚嶇О RowKeys: { add: 'ROUTE_CODE', set: 'ROUTE_CODE' }, //鎻掓Ы鐨勫脊鍑烘閫夋嫨鐨刢ode - ...record, + fnName: { BIZ_MES_WO: 'SaveWoBatch' }, //淇濆瓨鏂规硶鍚� + initFnName: {}, //鍒濆鍖栨柟娉曞悕 + isCustEl: isCustEl.value, + values: record, //琛ㄥ崟璁板綍 }); } - function custSuccess(d) { - reload(); + + /** + * @description: 鍙栨秷涓嬪彂 + * @param {*} record + * @return {*} + */ + function handleUnRelease(record: Recordable) { + if (record.STATUS == 0) { + createErrorModal({ + title: t('璀﹀憡'), + content: t('宸ュ崟鏄垵濮嬪寲鐘舵�侊紝涓嶈兘鍙栨秷涓嬪彂锛�'), + getContainer: () => document.body, + }); + return; + } + record.STATUS = 0; + SaveEntity(record, true, 'BIZ_MES_WO').then((action) => { + if (action.IsSuccessed) { + createMessage.success(t('宸插彇娑堜笅鍙�')); + reload(); + } else { + createMessage.success(t('鍙栨秷涓嬪彂鎿嶄綔澶辫触')); + } + }); } - //鍙栨秷涓嬪彂 - function handleUnRelease(record: Recordable) {} //鏆傚仠 - function handlePause(record: Recordable) {} - //鍒犻櫎 + function handlePause(record: Recordable) { + if (record.STATUS == 0) { + createErrorModal({ + title: t('璀﹀憡'), + content: t('宸ュ崟鏄垵濮嬪寲鐘舵�侊紝涓嶈兘鏆傚仠锛�'), + getContainer: () => document.body, + }); + return; + } + if (record.STATUS == 5) { + createErrorModal({ + title: t('璀﹀憡'), + content: t('宸ュ崟鏄畬鎴愮姸鎬侊紝涓嶈兘鏆傚仠锛�'), + getContainer: () => document.body, + }); + return; + } + record.STATUS = 4; + SaveEntity(record, true, 'BIZ_MES_WO').then((action) => { + if (action.IsSuccessed) { + createMessage.success(t('宸叉殏鍋�')); + reload(); + } else { + createMessage.success(t('鏆傚仠鎿嶄綔澶辫触')); + } + }); + } + + /** + * @description: 鍒犻櫎 + * @param {*} record + * @return {*} + */ function handleDelete(record: Recordable) { - const apiAction = DeleteMesWo(record.ID); - apiAction.then((action) => { + DeleteMesWo(record.ID).then((action) => { if (action.IsSuccessed) { createMessage.success(t('宸插垹闄�')); reload(); @@ -289,7 +402,20 @@ } }); } - //鐐瑰嚮鎵撳紑鐗╂枡鍒楄〃妗� + + /** + * @description: 寮瑰嚭妗嗙‘瀹氳繑鍥� + * @param {*} d + * @return {*} + */ + function custSuccess(d) { + reload(); + } + + /** + * @description: 鐐瑰嚮鎵撳紑鐗╂枡鍒楄〃妗� + * @return {*} + */ function handleSelectItem() { openItemModal(true, { title: '鐗╂枡鍒楄〃', @@ -321,24 +447,52 @@ ], tableName: 'BAS_ITEM', rowKey: 'ITEM_CODE', + searchInfo: { TABLE_NAME: 'BAS_ITEM' }, }); } + /** + * @description: 寮瑰嚭閫夋嫨鐗╂枡妗嗚繑鍥炴垚鍔熸柟娉� + * @param {*} d + * @param {*} u + * @return {*} + */ function handleItemSuccess(d, u) { getForm().setFieldsValue({ ITEM_CODE: d.values['val'], }); } - /* 鍚勮〃鍗曞唴寮瑰嚭閫夋嫨妗嗛�夋嫨鎴愬姛鍚庝簨浠� */ + + /** + * @description: 鍚勮〃鍗曞唴寮瑰嚭閫夋嫨妗嗛�夋嫨鎴愬姛鍚庢柟娉� + * @param {*} d + * @param {*} u + * @param {*} item + * @return {*} + */ function handleEntSuccess(d, u, item) { var values = GetSelectSuccess(d, u, cType.value); selectVals.value = values; //淇濆瓨寮瑰嚭妗嗛�夋嫨鐨勭粨鏋� let _val = {}; _val[d.returnFieldName] = values[d.returnFieldName]; useFormData.value[item][1].setFieldsValue(_val); + if (d.returnFieldName == 'ROUTE_CODE' && cType.value == 'BIZ_MES_WO_Config') { + routeData.value = { + nodes: [], + edges: [], + }; + + init(currlf, selectVals.value['ROUTE_CODE']); + const { transformModel, width, height } = unref(currlf).graphModel; + transformModel.focusOn(300, 200, width, height); + } } - /* 寮瑰嚭閫夋嫨妗� */ + /** + * @description: 寮瑰嚭閫夋嫨妗� + * @param {*} item + * @return {*} + */ function handleCustClick(item) { //鎵撳紑鑷畾涔夋ā鎬佹 OpenSelectItem( @@ -346,8 +500,11 @@ cType.value, item, [openRvModal], - selectVals.value['ID'], + selectVals.value['ROUTE_CODE'], ); //[openRvModal], selectVals.value['ID']杩欐槸鑷畾涔夊弬鏁帮紝鎸夊疄闄呴渶姹� } - function RvItemSuccess(d, u) {} + + function RvItemSuccess(d, u) { + closeModal(); + } </script> -- Gitblit v1.9.3