From 323e576c64129723df20fd18effb20d96d8d18b3 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期一, 22 七月 2024 10:27:50 +0800 Subject: [PATCH] 工单更新 --- src/views/tigerprojects/system/lowcode/composition/CarGridNav.vue | 257 +++++++++++++++++++++++---------------------------- 1 files changed, 115 insertions(+), 142 deletions(-) diff --git a/src/views/tigerprojects/system/lowcode/composition/CarGridNav.vue b/src/views/tigerprojects/system/lowcode/composition/CarGridNav.vue index 4e21485..2970147 100644 --- a/src/views/tigerprojects/system/lowcode/composition/CarGridNav.vue +++ b/src/views/tigerprojects/system/lowcode/composition/CarGridNav.vue @@ -1,174 +1,147 @@ <!-- - * @Description: 宸ヨ壓璺嚎娣诲姞椤甸潰 + * @Description: 瀵艰埅椤甸潰 * @Author: Ben Lin * @version: * @Date: 2024-06-20 12:13:27 * @LastEditors: Ben Lin - * @LastEditTime: 2024-06-25 00:07:08 + * @LastEditTime: 2024-07-22 03:45:38 --> <template> - <Card title="娣诲姞宸ヨ壓"> - <CardGrid v-for="item in navItems" :key="item.title" @click="changeItem(item.action)"> + <Card :title="GetTitle(props.configType)['navTitle']"> + <CardGrid + v-for="item in GetNavItems(props.configType)" + :key="item.title" + @click=" + navChangeItem(item.action, useModalData[item.action][1].openModal, openRvModal, selectedNodes) + " + > <span class="flex flex-col items-center"> <Icon :icon="item.icon" :color="item.color" size="20" /> <span class="text-md mt-2 truncate">{{ item.title }}</span> </span> + <GeneralModal + v-if="!item.isStep" + @register="useModalData[item.action][0]" + @success="(d, u) => handleSuccess(d, u, item.action, objParams, refreshPage)" + ></GeneralModal> + <StepModal + v-if="item.isStep" + @register="useModalData[item.action][0]" + @success="(d, u) => handleSuccess(d, u, item.action, objParams, refreshPage)" + /> </CardGrid> </Card> - <GeneralModal @register="register" @success="handleSuccess"></GeneralModal> + <!-- 鍏朵粬鑷畾涔夊崱鐗囧唴瀹� --> + <a-card + :title="item.title" + :bordered="false" + class="!mt-2" + v-for="(item, index) in otherSlots" + :key="item.name" + > + <slot :name="item.name" :index="index"></slot> + </a-card> + <RouteViewModal @register="registerRv" @success="RvItemSuccess" /> </template> <script lang="ts" setup> import { Card, CardGrid } from 'ant-design-vue'; import Icon from '@/components/Icon/Icon.vue'; - import { RouteToCust, RouteToProd } from '/@/api/tigerapi/mes/router'; import GeneralModal from '/@/views/components/GeneralModal.vue'; - import { useModal } from '/@/components/Modal'; - import { useI18n } from '/@/hooks/web/useI18n'; - import { Ref, inject, ref, watch } from 'vue'; - import { isNullOrEmpty } from '/@/utils/is'; + import RouteViewModal from '/@/views/components/RouteViewModal.vue'; + import StepModal from '/@/views/components/StepModal.vue'; + import { Ref, inject, nextTick, onMounted, ref, watch } from 'vue'; + import { isNullOrUnDef } from '/@/utils/is'; import { useTabs } from '/@/hooks/web/useTabs'; - import { useMessage } from '/@/hooks/web/useMessage'; + import { EntityCustFunctionType } from '/@/api/tigerapi/model/basModel'; + import { useModal } from '/@/components/Modal'; +import { CustModalParams } from '/@/api/tigerapi/model/systemModel'; + const ACard = Card; + const objParams = inject('objParams') as Ref<any>; + const selectedNodes = inject('selectedNodes') as Ref<any>; + const props = defineProps({ + configType: { type: String }, + nodes: { type: Array as PropType<any[]> }, + }); + const custImport = ref<any[]>([]); + const EntityCustFunction = ref([ + { + GetTitle(type: string | undefined) {}, + GetNavItems(type: string) {}, + navChangeItem(action: any, ...args) {}, + GetUseModals() {}, + GetBaseCards(type: string | undefined) {}, + GetSelectSuccess(d, u, ...args) {}, + GenerateHtml(ype: string | null) {}, + CustFunc(param: CustModalParams) {}, + } as EntityCustFunctionType, + ]); + /* 鍔ㄦ�乮mport瀹炰綋鍚�.ts鐨勮嚜瀹氫箟鏂规硶 */ + try { + custImport.value = await import(`../entityts/${objParams.value['Name']}.ts`); + } catch (e) {} + const [ + { + GetTitle, + GetNavItems, + navChangeItem, + GetUseModals, + GetSelectSuccess, + GetBaseCards, + GenerateHtml, + CustFunc, + }, + ] = isNullOrUnDef(custImport.value['default']) + ? EntityCustFunction.value + : custImport.value['default'](); + + const useModalData = ref(GetUseModals()); + const otherSlots = ref<any[]>(GetBaseCards(props.configType)); const { refreshPage } = useTabs(); - const { createErrorModal } = useMessage(); - // const props = defineProps({ - // prodCode: { type: String }, - // }); - const { t } = useI18n(); - const [register, { openModal }] = useModal(); - interface NavItem { - title: string; - icon: string; - color: string; - url: string; - action: string; - } - const Prod_Code = inject('prodCode') as Ref<string>; + const [registerRv, { openModal: openRvModal }] = useModal(); - // watch( - // () => Prod_Code, - // (v) => { - // if (v !== Prod_Code.value) { - // Prod_Code.value = isNullOrEmpty(v) ? Prod_Code.value : v; - // } - // }, - // { deep: true }, - // ); + watch( + [() => props.configType, () => props.nodes], + (v) => { + otherSlots.value = GetBaseCards(v[0]); + nextTick(() => { + // var div = document.getElementById('container') as HTMLElement; + // div.innerHTML = ''; + // div.appendChild(GenerateHtml(v[0])); + // setTimeout(() => { + // if (!isNullOrUnDef(v[1])) { + // CustFunc(v[0], v[1][0]['id'], '#lfContainer'); + // } + // }, 100); + }); + }, + { deep: true }, + ); - // 蹇嵎瀵艰埅 - const navItems: NavItem[] = [ - { - title: '娣诲姞浜у搧宸ヨ壓璺嚎', - icon: 'add_green|svg', - color: '#1fdaca', - url: '/addRoute', - action: 'addRoute', - }, - { - title: '娣诲姞瀹㈡埛宸ヨ壓璺嚎', - icon: 'add_customer|svg', - color: '#bf0c2c', - url: '/addCustomer', - action: 'addCustomer', - }, - // { - // title: '閿�鍞嚭搴撳崟', - // icon: 'Out|svg', - // color: '#e18525', - // url: '/saleoutorder', - // }, - // { - // title: '瀹屽伐鍏ュ簱鍗�', - // icon: 'In|svg', - // color: '#3fb27f', - // url: '/finishedwarehouse', - // }, - // { - // title: '鐢熶骇閫�鏂欏崟', - // icon: 'materialret|svg', - // color: '#4daf1bc9', - // url: '/materialret', - // }, - // { - // title: '鐩樼偣鍗�', - // icon: 'inventory|svg', - // color: '#00d8ff', - // url: '/inventory', - // }, - // { - // title: '璋冩嫧鍗�', - // icon: 'transfer|svg', - // color: '#00d8ff', - // url: '/transfer', - // }, - // { - // title: '瀹炴椂搴撳瓨', - // icon: 'WmsItem|svg', - // color: '#00d8ff', - // url: '/WmsItem', - // }, - ]; - function changeItem(action) { - openModal(true, { - title: '宸ヨ壓璺嚎鍒楄〃', - schemas: [ - { - field: 'ROT_CODE', - component: 'Input', - label: '宸ヨ壓璺嚎缂栫爜', - colProps: { - span: 12, - }, - }, - ], - ItemColumns: [ - { - title: t('宸ヨ壓璺嚎缂栫爜'), - dataIndex: 'ROT_CODE', - resizable: true, - sorter: true, - width: 200, - }, - { - title: t('宸ヨ壓璺嚎鍚嶇О'), - dataIndex: 'ROT_NAME', - resizable: true, - sorter: true, - width: 180, - }, - ], - tableName: 'MES_ROUTE', - rowKey: 'ROT_CODE', - returnFieldName: 'ROUTE_CODE', //杩斿洖鍊艰璧嬪�肩殑瀛楁鍚嶇О - searchInfo: { TABLE_NAME: 'MES_ROUTE' }, - which: action, + onMounted(() => { + nextTick(() => { + // var div = document.getElementById('container') as HTMLElement; + // if (!isNullOrUnDef(div)) { + // div.innerHTML = ''; + // div.appendChild(GenerateHtml(props.configType)); + // setTimeout(() => { + // if (!isNullOrUnDef(props.nodes) && props.nodes.length > 0) { + // CustFunc(props.configType, props.nodes[0]['id'], '#lfContainer'); + // } + // }, 100); + // } }); - } + }); /** - * @description: 閫夋嫨宸ヨ壓璺嚎鎴愬姛杩斿洖鏂规硶 + * @description: 寮瑰嚭閫夋嫨妗嗘垚鍔熻繑鍥炴柟娉� * @param {*} d * @param {*} u * @return {*} */ - async function handleSuccess(d, u) { - if (isNullOrEmpty(Prod_Code.value)) { - createErrorModal({ - title: t('sys.api.errorTip'), - content: '浜у搧涓虹┖锛屼笉鑳芥坊鍔犲伐鑹鸿矾绾匡紝璇风偣鍑诲乏渚ч�夋嫨浜у搧', - }); - return; - } - let codes = d.values.id.split(','); - var i; - for (i = 0; i < codes.length; i++) { - if (d.which == 'addRoute') { - await RouteToProd({ rotId: codes[i], prodCode: Prod_Code.value }); - } else { - await RouteToCust({ rotId: codes[i], prodCode: Prod_Code.value, custCode: '' }); - } - } - - await refreshPage(); + async function handleSuccess(d, u, item, objParams, refreshPage) { + GetSelectSuccess(d, u, item, objParams, refreshPage); } + + function RvItemSuccess(d, u) {} </script> -- Gitblit v1.9.3