From 6cc2d85787171281c269f4a6c3290b4a0762bcb6 Mon Sep 17 00:00:00 2001 From: YangYuGang <1378265336@qq.com> Date: 星期三, 05 三月 2025 16:21:43 +0800 Subject: [PATCH] 生产工具 --- src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts | 308 ++++++++++++++++++++++++++++++++++----------------- 1 files changed, 205 insertions(+), 103 deletions(-) diff --git a/src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts b/src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts index 864da48..e25dfd8 100644 --- a/src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts +++ b/src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts @@ -1,13 +1,15 @@ +/* eslint-disable no-var */ +/* eslint-disable no-fallthrough */ /* * @Description: 浜у搧宸ヨ壓璺嚎鐩稿叧 * @Author: Ben Lin * @version: * @Date: 2024-06-19 20:34:27 * @LastEditors: Ben Lin - * @LastEditTime: 2024-09-25 15:08:58 + * @LastEditTime: 2024-10-24 01:21:57 */ -import { Ref, h, ref, render, unref } from 'vue'; +import { Ref, unref } from 'vue'; import { DeleteProdRoute, GetRoutePTree, @@ -28,10 +30,16 @@ import { ContextMenuItem } from '/@/components/TigerTree'; import { useForm } from '/@/components/Form'; import { mesApi } from '/@/api/tigerapi/mes/mesApi'; +import { BAS_LABEL_VAR_WO, MesRotTree } from '/@/api/tigerapi/model/mesModel'; +import { buildUUID } from '/@/utils/uuid'; +import { AddOrEditLabelVarByWorkOrder } from '/@/api/tigerapi/mes/wo'; +import { useProdRouteStore } from '/@/store/modules/prodRoute'; +import { useWebSocketStore } from '/@/store/modules/websocket'; const { t } = useI18n(); const { createErrorModal } = useMessage(); const { getLocale } = useLocale(); +const useProdRoute = useProdRouteStore(); function _default() { /* 瀹氫箟鍙橀噺 */ const isNormal = (type: number) => type === 0; @@ -76,8 +84,8 @@ * @description: 楂樼骇琛ㄥ崟鍜岃鎯呴〉闈㈣繑鍥炰富椤甸潰鐨剈rl * @return {*} */ - GetHomeUrl: () => { - return `/V_BAS_PROD_R/LC/${encodeURI(JSON.stringify({ ID: 'V_BAS_PROD_R', colSlots: [], crudColSlots: [] }))}`; + GetHomeUrl: (params) => { + return `/V_BAS_PROD_R/LC/${encodeURI(JSON.stringify({ ID: 'V_BAS_PROD_R', colSlots: [], crudColSlots: [], sName: params['sName'] }))}`; }, /** * @description: 鑾峰彇鏍戝舰鏁版嵁 @@ -85,20 +93,29 @@ * @return {*} */ fetchTreeData: async (type: string, itemCode: string) => { - let data = { title: '', treeData: [] as any[], fieldNames: {} }; - let prodTreeData = await GetRoutePTree({ + const data = { title: '', treeData: [] as any[], fieldNames: {} }; + const prodTreeData = (await GetRoutePTree({ prodCode: itemCode, orgCode: useUserStore().getUserInfo.orgCode, - }); - // let uniqueArr = prodTreeData.reduce((acc, current) => { - // if (!acc.some((x) => x.pid == current.pid && x.id == current.id && x.seq == current.seq && x.type == current.type)) { - // acc.push(current); - // } - // return acc; - // }, [] as V_MES_ROUTE_PTREE[]); - data.treeData = convertToTree(prodTreeData, 'pid', 'tid', 'root'); + })) as unknown as MesRotTree[]; + const _treeData = convertToTree(prodTreeData, 'pid', 'tid', 'root'); data.title = '宸ヨ壓璺嚎'; data.fieldNames = { key: 'tid', title: 'name' }; + if ( + !useProdRoute.changeToCPPage || + !useProdRoute.curProdRotTree.some((q) => q.name == itemCode) + ) { + /* 淇濆瓨宸ヨ壓鏍戝舰鏁版嵁鍒扮姸鎬佺鐞� */ + useProdRoute.setCurProdRotTree({ + name: itemCode, + treeInfo: _treeData as unknown as MesRotTree[], + }); + } + useProdRoute.setItemCode(itemCode); + useProdRoute.setname(itemCode); + if (useProdRoute.curProdRotTree.some((q) => q.name == itemCode)) { + data.treeData = useProdRoute.curProdRotTree.filter((q) => q.name == itemCode)[0].treeInfo; + } return data; }, /** @@ -146,7 +163,7 @@ { name: 'auditadd', icon: 'search|svg' }, { name: 'printadd', icon: 'search|svg' }, { name: 'pkgadd', icon: 'search|svg' }, - { name: 'labeladd', icon: 'search|svg' }, + { name: 'labeladd', icon: 'template|svg' }, ]; }, /** @@ -156,14 +173,13 @@ nodeChange: (params: { useForms: Ref<any>; objParams: Ref<any>; selectedNodes: any[] }) => new Promise<any>(async (resolve, reject) => { // params['useForms'].value = methods.GetUseForm(); - let result = { isShow: {} }; + const result = { isShow: {} }; let sqlcmd = ' 1=1 '; if (!isNullOrEmpty(params['objParams'].value['CODE'])) { sqlcmd += `And PROD_CODE = '${params['objParams'].value['CODE']}'`; } - if (!isNullOrEmpty(params['selectedNodes'][0].cust)) { - sqlcmd += `And CUST_CODE = '${params['selectedNodes'][0].cust}'`; - } + sqlcmd += `And ISNULL(CUST_CODE, '') = ISNULL('${params['selectedNodes'][0].cust}', '')`; + if (!isNullOrEmpty(params['selectedNodes'][0].id)) { sqlcmd += params['selectedNodes'][0].type == 'Action' @@ -219,9 +235,7 @@ ? ents.Data.Items : JSON.parse(res.Data.Items[0].OPTION_1); /* 濡傛灉OPTION_1瀛楁涓虹┖灏辨妸鍖呰淇℃伅杞琂SON瀛樺埌OPTION_1瀛楁 */ - res.Data.Items[0].OPTION_1 = isNullOrEmpty(res.Data.Items[0].OPTION_1) - ? JSON.stringify(ents.Data.Items) - : res.Data.Items[0].OPTION_1; + res.Data.Items[0].OPTION_1 = JSON.stringify(result['BAS_PKG_DTL']); } /* 濡傛灉鏄粍瑁呬笂鏂� */ if (res.Data.Items[0].ACT_TYPE == 2) { result['name'] = 'ItemCode'; @@ -235,34 +249,38 @@ } if (params['selectedNodes'][0].type == 'Node') { resetFieldsNode(); - setFieldsValueNode({ - ID: res.Data.Items[0].ID, - OPER_CODE: res.Data.Items[0].OPER_CODE, - ROT_ID: res.Data.Items[0].ROT_ID, - NODE_ID: res.Data.Items[0].NODE_ID, - NODE_NAME: res.Data.Items[0].NODE_NAME, - IS_ACTIVE: isNullOrEmpty(res.Data.Items[0].IS_ACTIVE) - ? 'N' - : res.Data.Items[0].IS_ACTIVE, - IS_CALC_FPY: isNullOrEmpty(res.Data.Items[0].IS_CALC_FPY) - ? 'N' - : res.Data.Items[0].IS_CALC_FPY, - CAN_SKIP: isNullOrEmpty(res.Data.Items[0].CAN_SKIP) - ? 'N' - : res.Data.Items[0].CAN_SKIP, - IS_INPUT: isNullOrEmpty(res.Data.Items[0].IS_INPUT) - ? 'N' - : res.Data.Items[0].IS_INPUT, - IS_OUTPUT: isNullOrEmpty(res.Data.Items[0].IS_OUTPUT) - ? 'N' - : res.Data.Items[0].IS_OUTPUT, - ALLOW_DFT_IN: isNullOrEmpty(res.Data.Items[0].ALLOW_DFT_IN) - ? 'N' - : res.Data.Items[0].ALLOW_DFT_IN, - REMARK: res.Data.Items[0].REMARK, - PROD_CODE: params['objParams'].value['CODE'], - CUST_CODE: params['selectedNodes'][0].cust, - }); + if(isNullOrEmpty(res.Data.Items[0].IS_ACTIVE)){ + res.Data.Items[0].IS_ACTIVE = 'N' + } + if(isNullOrEmpty(res.Data.Items[0].IS_CALC_FPY)){ + res.Data.Items[0].IS_CALC_FPY = 'N' + } + if(isNullOrEmpty(res.Data.Items[0].CAN_SKIP)){ + res.Data.Items[0].CAN_SKIP = 'N' + } + if(isNullOrEmpty(res.Data.Items[0].IS_INPUT)){ + res.Data.Items[0].IS_INPUT = 'N' + } + if(isNullOrEmpty(res.Data.Items[0].IS_OUTPUT)){ + res.Data.Items[0].IS_OUTPUT = 'N' + } + if(isNullOrEmpty(res.Data.Items[0].ALLOW_DFT_IN)){ + res.Data.Items[0].ALLOW_DFT_IN = 'N' + } + if(isNullOrEmpty(res.Data.Items[0].IF_DFT_OFFLINE)){ + res.Data.Items[0].IF_DFT_OFFLINE = 'N' + } + if(!isNullOrEmpty(params['objParams'].value['CODE'])){ + res.Data.Items[0].PROD_CODE = params['objParams'].value['CODE'] + } + if(!isNullOrEmpty(params['selectedNodes'][0].cust)){ + res.Data.Items[0].CUST_CODE = params['selectedNodes'][0].cust + } + setFieldsValueNode(res.Data.Items[0]); + + /* 榛樿淇濆瓨 */ + SaveEntity(res.Data.Items[0], true, 'MES_PROD_OPER'); + // result['Node'] = res.Data.Items; result['name'] = 'Node'; result['isShow'] = { @@ -270,6 +288,7 @@ ItemCode: false, }; } + useProdRoute.setcurDtl(result); resolve(result); } catch (e) { reject(e); @@ -292,6 +311,9 @@ } values.AUTH_ORG = useUserStore().getUserInfo.orgCode; values.AUTH_PROD = useUserStore().getUserInfo.prodCode; + if (type == 'Action') { + values.OPTION_1 = JSON.stringify(useProdRoute.getcurDtl['BAS_PKG_DTL']); + } SaveEntity(values, true, entityName).then((action) => { if (action.IsSuccessed) { emit('success'); @@ -302,6 +324,7 @@ /** * @description: 寮瑰嚭閫夋嫨妗嗘墦寮�鏂规硶 * @param {Fn} openItemModal + * @param {array} args * @return {*} */ OpenSelectItem: (openItemModal: Fn, ...args) => { @@ -336,6 +359,11 @@ ItemColumns: TemplateBasColumn, //寮瑰嚭妗嗕腑琛ㄦ牸瀛楁缁撴瀯 schemas: [], //鏌ヨ鏉′欢瀛楁缁撴瀯 others: { WORK_ORDER: OrderNo }, //闇�瑕佸甫鍒板脊鍑虹獥鍙d腑鐨勬暟鎹� + alertConfig: { + showAlert: false, + message: '閿�鍞鍗曞娉�', + description: '', + }, searchInfo: { TABLE_NAME: 'BAS_LABEL_VAR_WO', //瀹炰綋鍚嶇О LabelId: record.LABEL_CODE, //妯℃澘ID @@ -360,6 +388,7 @@ * @description: 寮瑰嚭閫夋嫨妗嗛�夋嫨鎴愬姛杩斿洖 * @param {*} d * @param {*} u + * @param {array} args * @return {*} */ GetSelectSuccess: async (d, u, ...args) => { @@ -375,7 +404,7 @@ break; case 'assyadd': const items = d.values['val'].split(','); - let data: any[] = []; + const data: any[] = []; if (!isNullOrEmpty(items) && items.length > 0) { items.map((x) => { data.push({ @@ -426,7 +455,7 @@ }); return; } - let codes = d.values.id.split(','); + const codes = d.values.id.split(','); var i; for (i = 0; i < codes.length; i++) { if (d.which == 'addRoute') { @@ -444,7 +473,7 @@ }); return; } - let rotIds = d.ROT_ID.split(','); + const rotIds = d.ROT_ID.split(','); var i; for (i = 0; i < rotIds.length; i++) { RouteToCust({ rotId: rotIds[i], prodCode: args[1]['CODE'], custCode: d.CUST_CODE }); @@ -474,7 +503,7 @@ }; }, /** - * @description: 鑾峰彇妯℃�佹搴旂敤鍒楄〃 + * @description: 鑾峰彇鍦ㄥ鍒犳敼琛ㄥ崟涓殑妯℃�佹搴旂敤鍒楄〃 * @return {*} */ GetUseCrudModals: () => { @@ -498,19 +527,25 @@ * @return {*} */ GetUseTables: (data: Ref<{}>, ...args) => { - // data.value['Table'] = []; + let sortData = isNullOrUnDef(data.value['BAS_PKG_DTL']) + ? data.value['BAS_PKG_DTL'] + : data.value['BAS_PKG_DTL'].sort((a, b) => { + return a.PKG_LEVEL - b.PKG_LEVEL; + }); return { BAS_PKG_DTL: useTable({ title: '鍒楄〃淇℃伅', // api: getListByPage, // searchInfo: { TABLE_NAME: 'V_BAS_PKG_DTL' }, - dataSource: data.value['BAS_PKG_DTL'], + dataSource: sortData, columns: GetBaseColumns('BAS_PKG_DTL', args[0], data), - maxHeight: 520, + // maxHeight: 520, + // scroll: { y: window.screen.width == 1366? 400: 450 }, + isCanResizeParent: true, useSearchForm: false, showTableSetting: false, bordered: true, - canResize: true, + // canResize: false, showIndexColumn: false, // rowSelection: { // type: 'radio', //'checkbox' @@ -548,6 +583,10 @@ }), }; }, + /** + * @description: 鑾峰彇琛屼负鎴栬�呰妭鐐圭殑閰嶇疆琛ㄥ崟缁撴瀯锛屼娇鐢╱seForm() + * @return {*} + */ GetUseForm: () => { return { Action: useForm({ @@ -585,6 +624,7 @@ /** * @description: 鑾峰彇鏍囬淇℃伅 * @param {string} type + * @param {*} item * @return {*} */ GetTitle: (type: string, item) => { @@ -599,8 +639,8 @@ * @param {Ref} selectedNodes * @return {*} */ - SelectNode: (selectedNodes: Ref<any[]>) => { - let result = { + SelectNode: (selectedNodes: Ref<any[]>, code: string) => { + const result = { showConfig: false, showNav: false, type: selectedNodes.value[0].type, @@ -618,16 +658,15 @@ if (selectedNodes.value[0].type == 'Action' || selectedNodes.value[0].type == 'Node') { result.showNav = false; result.showConfig = true; - if (selectedNodes.value[0].type == 'Action') { - result.showOtherTable = { BAS_PKG_DTL: false, ItemCode: false }; - } else { - result.showOtherTable = { BAS_PKG_DTL: false, ItemCode: false }; - } + result.showOtherTable = { BAS_PKG_DTL: false, ItemCode: false }; } + /* 淇濆瓨褰撳墠閫夋嫨鐨勮妭鐐规暟鎹埌鐘舵�佺鐞� */ + useProdRoute.setCurSelectedNodes({ name: code, SelectedNodes: selectedNodes.value }); return result; }, /** * @description: 鑾峰彇瀵艰埅椤� + * @param {string} type * @return {*} */ GetNavItems: (type: string) => { @@ -642,6 +681,7 @@ url: '/addRoute', action: 'addRoute', isStep: false, + isCustEl: false, }, { title: '娣诲姞瀹㈡埛宸ヨ壓璺嚎', @@ -650,18 +690,29 @@ url: '/addCustomer', action: 'addCustomer', isStep: true, + isCustEl: false, }, ]; break; case 'Route': item = [ { - title: '缂栬緫宸ヨ壓璺嚎', - icon: 'clarity:note-edit-line', + title: '缂栬緫宸ヨ壓璺嚎', //鏍囬 + icon: 'clarity:note-edit-line', //鍥炬爣 + color: '#1fdaca', //瀛椾綋棰滆壊 + url: '/editRoute', //瀵艰埅鍦板潃 + action: 'editRoute', //瀵艰埅鎵ц鐨勬柟娉曪紝濡傛灉鎸夎繖涓猘ction鏉ユ墽琛岋紝涓婇潰鐨剈rl灏辨棤鏁� + isStep: false, //鏄惁鏄楠� + isCustEl: false, //鏄惁鏄嚜瀹氫箟html鍐呭 + }, + { + title: '璁剧疆榛樿宸ヨ壓璺嚎', + icon: '', color: '#1fdaca', - url: '/editRoute', - action: 'editRoute', + url: '', + action: '', isStep: false, + isCustEl: true, }, ]; break; @@ -671,12 +722,15 @@ /** * @description: 瀵艰埅椤甸潰鍒囨崲鎸夐挳鏃惰皟鐢ㄦ柟娉� * @param {any} action + * @param {array} args * @return {*} */ navChangeItem: (action: any, ...args) => { + const openRvModal = args[1]; + const openModal = args[0]; switch (action) { case 'addRoute': - args[0](true, { + openModal(true, { title: '宸ヨ壓璺嚎鍒楄〃', schemas: [ { @@ -712,12 +766,12 @@ }); break; case 'addCustomer': - args[0](true, { + openModal(true, { title: '璇峰畬鎴愪互涓嬫楠�', }); break; case 'editRoute': - args[1](true, { + openRvModal(true, { rotId: args[2][0].id, slotName: '', prodCode: args[3], @@ -791,12 +845,13 @@ param.data.value['BAS_PKG_DTL'].map((x) => { if (x.PKG_CODE == param.values['PKG_CODE']) { x.LABEL_CODE = param.values['LABEL_CODE']; - x.LABEL_ID = param.values['LABEL_CODE']; + x.LABEL_ID = param.values['LABEL_CODE']; } }); param.data.value['Action'][0]['OPTION_1'] = JSON.stringify( param.data.value['BAS_PKG_DTL'], ); + resolve('OK'); break; case 'ItemCode': param.data.value['ItemCode'].map((x) => { @@ -808,13 +863,28 @@ param.data.value['Action'][0]['OPTION_1'] = JSON.stringify( param.data.value['ItemCode'], ); + resolve('OK'); break; case 'BAS_LABEL_VAR_WO': - param.values['WORK_ORDER'] = param.others['WORK_ORDER']; + param.values['PROD_CODE'] = param.others['PROD_CODE']; param.values['ID'] = buildUUID(); - await AddOrEditLabelVarByWorkOrder(param.values as unknown as BAS_LABEL_VAR_WO); + var action = await AddOrEditLabelVarByWorkOrder( + param.values as unknown as BAS_LABEL_VAR_WO, + ); + resolve(action); + case 'isDefault': + /* 璁剧疆榛樿宸ヨ壓璺嚎 */ + var action = await useProdRoute.setDefaulRoute(param); + resolve(action); + case 'delete': + const webSocketStore = useWebSocketStore(); + if (webSocketStore.GetSocketState == 1) { + webSocketStore.sendMessage( + `wsGetNew ${param.values['LABEL_ID']}_#_${param.values['PROD_CODE']}`, + ); + } + break; } - resolve('OK'); } catch (e) { reject(e); } @@ -839,18 +909,21 @@ label: '鍒犻櫎', handler: () => { console.log('鐐瑰嚮浜嗗垹闄�', node); - DeleteProdRoute({ rotId: node.id, rotCode: node.code, prodCode: args[1] }).then( - (action) => { - if (action.IsSuccessed) { - emit('deletenode', node); - } else { - createErrorModal({ - title: t('sys.api.errorTip'), - content: t(action.LocaleMsg), - }); - } - }, - ); + DeleteProdRoute({ + rotId: node.id, + rotCode: node.code, + prodCode: args[1], + custCode: node.cust, + }).then((action) => { + if (action.IsSuccessed) { + emit('deletenode', node); + } else { + createErrorModal({ + title: t('sys.api.errorTip'), + content: t(action.LocaleMsg), + }); + } + }); }, icon: 'bx:bxs-folder-open', }, @@ -1585,6 +1658,29 @@ }, }, { + field: 'IF_DFT_OFFLINE', + label: '鍒ゆ柇涓嶈壇鍚庢槸鍚︿笅绾�', + required: true, + defaultValue: 'N', + component: 'Select', + colProps: { span: 12 }, + componentProps: { + options: [ + { + label: '鏄�', + value: 'Y', + key: 'Y', + }, + { + label: '鍚�', + value: 'N', + key: 'N', + }, + ], + }, + ifShow: ({ values }) => values.OPER_CODE == 'TestNode', + }, + { field: 'REMARK', label: '澶囨敞', component: 'Input', @@ -1753,7 +1849,6 @@ ] as FormSchema[], }; - /** * @description: 妯℃澘缁存姢 * @param {*} args @@ -1762,7 +1857,9 @@ */ function handleTemplate(args, params: Recordable) { const openCrudModal = args[0]; - const OrderNo = args[2]; + // const OrderNo = args[2]; + const ProdCode = args[2]; + const WoRecord = args[4]; openCrudModal(true, { isUpdate: true, //鏄惁鏇存柊鎿嶄綔 entityName: 'ProdRouteBinding', //鏄摢涓〉闈� @@ -1771,20 +1868,19 @@ width: '1024px', //寮瑰嚭妗嗗搴� ItemColumns: TemplateBasColumn, //寮瑰嚭妗嗕腑琛ㄦ牸瀛楁缁撴瀯 schemas: [], //鏌ヨ鏉′欢瀛楁缁撴瀯 - others: { WORK_ORDER: OrderNo }, //闇�瑕佸甫鍒板脊鍑虹獥鍙d腑鐨勬暟鎹� + others: { WORK_ORDER: '', PROD_CODE: ProdCode }, //闇�瑕佸甫鍒板脊鍑虹獥鍙d腑鐨勬暟鎹� + alertConfig: { + showAlert: false, + message: '閿�鍞鍗曞娉�', + description: '', + }, searchInfo: { TABLE_NAME: 'BAS_LABEL_VAR_WO', //瀹炰綋鍚嶇О LabelId: params['record'].LABEL_ID, //妯℃澘ID - WorkOrder: OrderNo, //宸ュ崟鍙� + WorkOrder: '', //宸ュ崟鍙� + ProdCode: ProdCode, + CustCode: '', apiUrl: mesApi.GetLabelVarByWorkOrder, //鑷畾涔夎幏鍙栨暟鎹垎椤电殑api锛屼笉鐢ㄩ粯璁ょ殑鍩虹鏂规硶 - // sqlcmd: ` (WORK_ORDER = '${OrderNo}' OR WORK_ORDER = '' OR WORK_ORDER IS NULL)`, - // option: - // { - // //鏍规嵁鎹偣鏌ヨ锛屽繀闇�甯﹁繖涓弬鏁� - // UserId: useUserStore().getUserInfo.userId, - // ByOrg: true, - // CurOrg: useUserStore().getUserInfo.orgCode, - // }, }, values: params['record'], //琛ㄥ崟璁板綍 }); @@ -1803,8 +1899,14 @@ title: '宸ュ崟鍙�', dataIndex: 'WORK_ORDER', width: 280, - editRow: true, + // editRow: true, // editable: true, + ifShow: false, + }, + { + title: '宸ュ崟鍙�', + dataIndex: 'PROD_CODE', + width: 280, ifShow: false, }, { @@ -1820,8 +1922,8 @@ { title: '榛樿鍊�', dataIndex: 'DEFAULT_VALUE', - editRow: true, - editRule: true, + // editRow: true, + // editRule: true, }, ] as BasicColumn[]; -- Gitblit v1.9.3