From 6e6fec028ffc9a27b3c8d30eb484cd361a119d76 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期一, 25 十一月 2024 23:53:12 +0800 Subject: [PATCH] 入库单更新 --- src/router/routes/modules/erpprodinbth.ts | 13 src/views/tigerprojects/system/lowcode/composition/mainTable.vue | 19 src/views/tigerprojects/system/lowcode/data.ts | 18 src/views/tigerprojects/system/lowcode/composition/LeftTable.vue | 472 +++++++++++++++++++++--- src/views/tigerprojects/system/lowcode/setting/pageDetail.vue | 2 src/components/Upload/src/components/data.tsx | 2 src/views/tigerprojects/system/lowcode/composition/printTemplate1.vue | 185 +++++++++ src/views/tigerprojects/system/lowcode/high/dtl.vue | 2 src/store/modules/multipleTab.ts | 4 src/layouts/default/menu/index.vue | 17 tsconfig.json | 2 src/views/tigerprojects/system/menu/index.vue | 6 src/views/tigerprojects/wms/finishedwarehouse/ErpProdInBth.vue | 358 ++++++++++++++++++ .env.production | 10 src/views/tigerprojects/system/lowcode/entityts/BIZ_ERP_PROD_IN_BTH.ts | 0 src/store/modules/websocket.ts | 2 src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_RULE.ts | 2 src/router/routes/index.ts | 4 src/views/tigerprojects/system/dept/index.vue | 2 src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_DTL.ts | 10 20 files changed, 1,034 insertions(+), 96 deletions(-) diff --git a/.env.production b/.env.production index 1093946..afe32fe 100644 --- a/.env.production +++ b/.env.production @@ -4,7 +4,7 @@ # @version: # @Date: 2024-06-17 14:51:25 # @LastEditors: Ben Lin - # @LastEditTime: 2024-07-25 09:46:02 + # @LastEditTime: 2024-08-27 09:32:23 ### # Whether to open mock VITE_USE_MOCK = false @@ -19,10 +19,10 @@ # Basic interface address SPA -VITE_GLOB_API_URL=http://localhost:9527/api -VITE_GLOB_SYS_API_URL=http://localhost:9527 -VITE_GLOB_TSK_API_URL=http://localhost:9633/api -VITE_GLOB_WS_URL=http://localhost:7519 +VITE_GLOB_API_URL=http://47.115.28.255:9520/api +VITE_GLOB_SYS_API_URL=http://47.115.28.255:9520 +VITE_GLOB_TSK_API_URL=http://47.115.28.255:9520/api +VITE_GLOB_WS_URL=ws://47.115.28.255:7519 # File upload address锛� optional # It can be forwarded by nginx or write the actual address directly diff --git a/src/components/Upload/src/components/data.tsx b/src/components/Upload/src/components/data.tsx index 1760661..97a8163 100644 --- a/src/components/Upload/src/components/data.tsx +++ b/src/components/Upload/src/components/data.tsx @@ -135,10 +135,12 @@ uidKey: 'uid', valueKey: 'url', }), + name: '' }, { label: t('component.upload.download'), onClick: handleDownload.bind(null, record), + name: '' }, ]; diff --git a/src/layouts/default/menu/index.vue b/src/layouts/default/menu/index.vue index b0f37b2..99c20e4 100644 --- a/src/layouts/default/menu/index.vue +++ b/src/layouts/default/menu/index.vue @@ -116,7 +116,7 @@ getEntity({ sqlcmd: `ASSEMBLY_NAME ='${path.split('/')[1]}'`, entityName: 'SYS_LOW_CODE', - order: '' + order: '', }).then((data) => { var searchForms = JSON.parse(data.Data.Items[0].SEARCH_FORM_JSON); let colSlots = [] as string[]; @@ -140,8 +140,19 @@ (path.split('/').length > 2 && path.split('/')[2] == 'High') || path.split('/')[2] == 'CP' ) { - const id = { Name: path.split('/')[1], Title: `${path.split('/')[1]}`,}; - go(`/${path.split('/')[1]}/${path.split('/')[2]}/${encodeURI(JSON.stringify(id))}`); + const id = { + Name: path.split('/')[1], + Title: `${path.split('/')[1]}`, + colSlots: [], + crudColSlots: [], + OtherTableName: [], + SessionName: + 'ProdRouteBinding_update' /* session鍚嶏紝鐢ㄦ潵浼犻�掑弬鏁帮紝涓嶅湪娴忚鍣ㄥ湴鍧�鏍忔樉绀� */, + }; + // 灏嗗璞¤浆鎹负JSON瀛楃涓插苟淇濆瓨鍒皊essionStorage + sessionStorage.removeItem(`${id.SessionName}_params`); + sessionStorage.setItem(`${id.SessionName}_params`, encodeURI(JSON.stringify(id))); + go(`/${path.split('/')[1]}/${path.split('/')[2]}/${encodeURI(JSON.stringify({ sName: id.SessionName, Name: id.Name }))}`); } else { go(path); } diff --git a/src/router/routes/index.ts b/src/router/routes/index.ts index 0bb349a..3606708 100644 --- a/src/router/routes/index.ts +++ b/src/router/routes/index.ts @@ -3,6 +3,7 @@ import { PAGE_NOT_FOUND_ROUTE, REDIRECT_ROUTE } from '@/router/routes/basic'; import { mainOutRoutes } from './mainOut'; +import { ErpProdInBthRoutes } from './modules/erpprodinbth'; import { PageEnum } from '@/enums/pageEnum'; import { t } from '@/hooks/web/useI18n'; @@ -38,10 +39,11 @@ }, }; -// Basic routing without permission +// Basic routing without permission // 鏈粡璁稿彲鐨勫熀鏈矾鐢� export const basicRoutes = [ LoginRoute, + ErpProdInBthRoutes, RootRoute, ...mainOutRoutes, REDIRECT_ROUTE, diff --git a/src/router/routes/modules/erpprodinbth.ts b/src/router/routes/modules/erpprodinbth.ts new file mode 100644 index 0000000..c35e142 --- /dev/null +++ b/src/router/routes/modules/erpprodinbth.ts @@ -0,0 +1,13 @@ +import type { AppRouteModule } from '@/router/types'; + +export const ErpProdInBthRoutes: AppRouteModule = { + path: '/ErpProdInBth', + name: 'ErpProdInBth', + component: () => import('@/views/tigerprojects/wms/finishedwarehouse/ErpProdInBth.vue'), + meta: { + title: '鎵撳嵃鍏ュ簱鍗�', + ignoreAuth: true, + }, +}; + +export default ErpProdInBthRoutes; diff --git a/src/store/modules/multipleTab.ts b/src/store/modules/multipleTab.ts index 69cdd67..e9a65a0 100644 --- a/src/store/modules/multipleTab.ts +++ b/src/store/modules/multipleTab.ts @@ -15,7 +15,7 @@ import projectSetting from '@/settings/projectSetting'; import { useUserStore } from '@/store/modules/user'; import { useProdRouteStore } from './prodRoute'; -import { isNullOrUnDef } from '/@/utils/is'; +import { isArray, isNullOrUnDef } from '/@/utils/is'; export interface MultipleTabState { cacheTabList: Set<string>; @@ -89,7 +89,7 @@ const name = route.name; const useProdRoute = useProdRouteStore(); useProdRoute.setChangeToCPPage(false); - if (!isNullOrUnDef(route.params.id)) { + if (!isNullOrUnDef(route.params.id) && isArray(route.params.id)) { // 浠巗essionStorage涓鍙栧弬鏁板苟杞崲鍥炲璞� const savedParams = sessionStorage.getItem( `${JSON.parse(decodeURI(route.params.id[0]))['sName']}_params`, diff --git a/src/store/modules/websocket.ts b/src/store/modules/websocket.ts index 5930bd7..1302983 100644 --- a/src/store/modules/websocket.ts +++ b/src/store/modules/websocket.ts @@ -34,7 +34,7 @@ socketHeart: 0, socketError: 0, heartTime: null, - HeartTimeOut: 30000, + HeartTimeOut: 5*60*1000, printTag: '', printJson: '' }), diff --git a/src/views/tigerprojects/system/dept/index.vue b/src/views/tigerprojects/system/dept/index.vue index 9d2b44d..3ac74ff 100644 --- a/src/views/tigerprojects/system/dept/index.vue +++ b/src/views/tigerprojects/system/dept/index.vue @@ -10,6 +10,7 @@ { icon: 'clarity:note-edit-line', onClick: handleEdit.bind(null, record), + name: '' }, { icon: 'ant-design:delete-outlined', @@ -19,6 +20,7 @@ placement: 'left', confirm: handleDelete.bind(null, record), }, + name: '' }, ]" /> diff --git a/src/views/tigerprojects/system/lowcode/composition/LeftTable.vue b/src/views/tigerprojects/system/lowcode/composition/LeftTable.vue index 03f5acd..9171c1d 100644 --- a/src/views/tigerprojects/system/lowcode/composition/LeftTable.vue +++ b/src/views/tigerprojects/system/lowcode/composition/LeftTable.vue @@ -7,26 +7,29 @@ * @LastEditTime: 2024-10-21 23:03:27 --> <template> - <div> - <Suspense class="w-1/4 xl:w-1/5"> - <mainTable /> + <div class="flex"> + <div v-show="false"> + <printTemplate1 :table-data="printData" :qrInstoreOrder="qrInstoreOrder"></printTemplate1> + </div> + <Suspense> + <div class="w-1/4 xl:w-4/5 h-full"> + <mainTable /> + </div> </Suspense> <Suspense> - <div class="w-3/4 xl:w-4/5 p-5"> - <CarGridNav v-if="showNav" :configType="configType" :nodes="nodes"> - <template #[item] v-for="item in otherSlots" :key="item"> - <!-- 鑷畾涔夊唴瀹� --> - <div class="h-full" style="height: 400px"> - <FlowChartView :data="routeData" @init="init" /> - </div> - </template> - </CarGridNav> - <Config - v-if="showConfig" - :configType="configType" - :OtherTableName="OtherTableName" - @success="configSuccess" - /> + <div class="w-1/4 xl:w-1/5 py-4 pr-4 h-full"> + <div class="p-5 h-full" style="background-color: white"> + <span class="mb-5 p-5" style="color: #0780b9; font-size: 16px">璇锋壂鐮佹墦鍗板叆搴撳崟</span> + <!-- <a-button type="primary" @click="ToPrint"> 鎵撳嵃 </a-button> --> + <QrCode + :value="qrCodeUrl" + :height="198" + :options="{ margin: 5 }" + ref="qrDiyRef" + :logo="LogoImg" + /> + <!-- <span class="mb-5 p-5" style="color: #0780b9">{{ qrCodeUrl }}</span> --> + </div> </div> </Suspense> <Suspense> @@ -63,24 +66,30 @@ <script lang="ts" setup> import { useModal } from '@/components/Modal'; import GeneralModal from '/@/views/components/GeneralModal.vue'; - import CarGridNav from './CarGridNav.vue'; - import Config from './Config.vue'; import mainTable from './mainTable.vue'; + import printTemplate1 from './printTemplate1.vue'; import CustModal from '/@/views/components/CustModal.vue'; - import { OpenCustModal, initRoute } from '../data'; - import { Ref, onMounted, provide, ref } from 'vue'; - import { FlowChartView } from '/@/components/FlowChart'; - import { useRoute } from 'vue-router'; + import { custOnChange, goByParams, OpenCustModal } from '../data'; + import { Ref, h, onMounted, onUnmounted, provide, ref, unref } from 'vue'; + import { useRoute, useRouter } from 'vue-router'; import { BasicForm } from '/@/components/Form/index'; - import { useTabs } from '/@/hooks/web/useTabs'; - import { useMessage } from '/@/hooks/web/useMessage'; - import LogicFlow from '@logicflow/core'; + import { getEntity, GetEnum } from '/@/api/tigerapi/system'; + import { isNullOrEmpty } from '/@/utils/is'; + import { useLocale } from '/@/locales/useLocale'; + import { Tag, Tooltip } from 'ant-design-vue'; + import { getRoleButtons } from '/@/api/sys/menu'; + import { QrCode } from '/@/components/Qrcode/index'; + import LogoImg from '/@/assets/images/logo.png'; + import printJS from 'print-js'; + import { useWebSocketStore } from '/@/store/modules/websocket'; + import { buildUUID } from '/@/utils/uuid'; defineOptions({ name: '宸ュ崟宸ヨ壓缁戝畾' }); - const { notification } = useMessage(); + const usewebSocket = useWebSocketStore(); + const { getLocale } = useLocale(); const route = useRoute(); - const { setTitle } = useTabs(); + const { currentRoute } = useRouter(); // const objParams = ref(JSON.parse(decodeURI(route.params?.id as string))); //ref(JSON.parse(history.state.obj)) const routeParams = ref(JSON.parse(decodeURI(route.params?.id as string))); // 浠巗essionStorage涓鍙栧弬鏁板苟杞崲鍥炲璞� @@ -94,29 +103,199 @@ const otherSlots = ref<any[]>([]); const selectVals = ref({}); const isMounted = ref(false); - const showNav = ref(false); - const showConfig = ref(false); - const configType = ref(''); - const OtherTableName = ref(''); - const nodes = ref([]); - const routeData = ref({ - nodes: [], - edges: [], + const qrCodeUrl = ref(`PrintJS_${buildUUID()}`); + const _columns = ref<any[]>([]); + const _searchFormSchema = ref<any[]>([]); + const _crudFormSchema = ref<any[]>([]); + const buttons = ref([]); + const printData = ref<any[]>([]); + const qrInstoreOrder = ref('YDRKD20241118001'); + const AuthOption = ref({ + BY_ORG: '', + BY_PROD: '', + BY_WH: '', }); const keyFieldValues = ref<any>(null); const custImport = ref<any>(null); const [registerCust] = useModal(); provide<Ref<any>>('objParams', objParams); - provide<Ref<any>>('selectedNodes', nodes); - setTitle(objParams.value.Title); //璁剧疆鏍囩椤垫爣棰� - - - // function handleAdd(){ - // console.log('handleAdd'); - // } + provide<Ref<any>>('keyFieldValues', keyFieldValues); + provide<Ref<{}>>('AuthOption', AuthOption); + provide<Ref<any[]>>('_columns', _columns); + provide<Ref<any[]>>('_searchFormSchema', _searchFormSchema); + provide<Ref<any[]>>('_crudFormSchema', _crudFormSchema); onMounted(async () => { isMounted.value = false; + + // printData.value = [ + // { + // id: '111', + // Items: [ + // { + // ID: 111, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + // { + // ID: 112, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + // { + // ID: 113, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + // { + // ID: 114, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + // { + // ID: 115, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + // { + // ID: 116, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + // { + // ID: 116, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + // { + // ID: 116, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + // // { + // // ID: 116, + // // ORDER_NO: 'YDSO241101002', + // // WORK_ORDER: 'YDMOB241104737', + // // ITEM_CODE: '20100705.0102.00', + // // ITEM_NAME: + // // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // // PLAN_QTY: 100, + // // SCAN_QTY: 50, + // // }, + // ], + // }, + // { + // id: '112', + // Items: [ + // { + // ID: 311, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + // { + // ID: 312, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + // { + // ID: 313, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + // ], + // }, + // { + // id: '113', + // Items: [ + // { + // ID: 211, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + // { + // ID: 212, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + // { + // ID: 213, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + // ], + // }, + // ]; + /* 鍔ㄦ�乮mport瀹炰綋鍚�.ts鐨勮嚜瀹氫箟鏂规硶 */ try { custImport.value = await import(`../entityts/${entityName.value}.ts`); @@ -124,29 +303,208 @@ otherSlots.value = custImport.value['default']()[0]['GetSlots'](); } isMounted.value = true; + + const data = await getEntity({ + sqlcmd: `ASSEMBLY_NAME ='${objParams.value.Name}'`, + entityName: 'SYS_LOW_CODE', + order: '', + }); + AuthOption.value.BY_ORG = data.Data.Items[0].BY_ORG; + AuthOption.value.BY_PROD = data.Data.Items[0].BY_PROD; + AuthOption.value.BY_WH = data.Data.Items[0].BY_WH; + var searchForms = JSON.parse(data.Data.Items[0].SEARCH_FORM_JSON); + for (const i in searchForms) { + if ( + !isNullOrEmpty(searchForms[i].componentProps) && + !isNullOrEmpty(searchForms[i].componentProps.api) && + searchForms[i].componentProps.api == 'GetEnum' + ) { + searchForms[i].componentProps.api = GetEnum; + searchForms[i].componentProps.params.name = + `${objParams.value.ID}+${searchForms[i].field}s`; + searchForms[i].componentProps.labelField = unref(getLocale) == 'zh_CN' ? 'Desc' : 'Name'; + } + if ( + !isNullOrEmpty(searchForms[i].componentProps) && + !isNullOrEmpty(searchForms[i].componentProps.api) && + searchForms[i].componentProps.api == 'getEntity' + ) { + searchForms[i].componentProps.api = getEntity; + searchForms[i].componentProps.resultField = 'Data.Items'; + } + if (searchForms[i].component == 'RangePicker') { + } + onChangeConfig(searchForms[i]); + } + _searchFormSchema.value = searchForms; + + var objs = JSON.parse(data.Data.Items[0].BASE_FORM_JSON); + for (const i in objs) { + if (!isNullOrEmpty(objs[i].customRender)) { + const func = new Function(objs[i].customRender)(); + objs[i].customRender = ({ record }) => { + let texts = func(record); + /* 濡傛灉鏄摼鎺ュ氨璺宠浆骞朵紶鍏ラ厤缃殑鍙傛暟 */ + if (texts.isLink == 'Y') { + return h('a', [ + h( + 'span', + { + onClick: () => { + goByParams(texts.path, texts.params, go); + }, + }, + texts.text, + ), + ]); + } else { + return h(Tooltip, { title: texts.text }, () => + h(Tag, { color: texts.color }, () => texts.text), + ); + } + }; + } + } + _columns.value = objs; + buttons.value = await getRoleButtons(currentRoute.value.meta.menuCode as string); } catch (e) { console.log(e); } }); - const currlf = ref(null) as Ref<LogicFlow | null>; /** - * @description: 宸ヨ壓璺嚎鍒濆鍖栵紝鐗规畩椤甸潰鑷畾涔夊唴瀹� - * @param {*} lf + * @description: Select 鑷畾涔塷nChange鏂规硶 + * @param {*} obj * @return {*} */ - async function init(lf, rotId) { - initRoute(lf, rotId, routeData, currlf, objParams.value.rotType); + function onChangeConfig(obj: any) { + if (obj.component == 'Select') { + var options = obj.componentProps.options; + var onChange = obj.componentProps.onChange; + obj.componentProps = ({ schema, tableAction, formActionType, formModel }) => { + return { + options: options, + onChange: (e) => custOnChange(e, onChange, objParams.value.ID), + }; + }; + } } - - /** - * @description: 淇濆瓨閰嶇疆鎴愬姛杩斿洖鏂规硶 - * @return {*} + * @desc 鐢熸垚QR瀹屾垚 */ - function configSuccess() { - notification.success({ message: '鎴愬姛淇濆瓨琛屼负閰嶇疆鏁版嵁' }); + function onQrcodeDone({ ctx }: any) { + if (ctx instanceof CanvasRenderingContext2D) { + // 棰濆缁樺埗 + ctx.fillStyle = 'black'; + ctx.font = '16px "寰蒋闆呴粦"'; + ctx.textBaseline = 'bottom'; + ctx.textAlign = 'center'; + ctx.fillText('浣犲竻浣犲厛鎵�', 200, 380, 600); + } + } + + const unsubscribe = usewebSocket.$subscribe((mutation, state) => { + if (state.printTag == qrCodeUrl.value) { + // printJS(state.printJson); + printData.value = state.printJson as unknown as any[]; + usewebSocket.SetPrintTag(''); + setTimeout(() => { + ToPrint(); + }, 100); + } + }); + + // 褰撶粍浠跺嵏杞芥椂鍙栨秷璁㈤槄 + onUnmounted(() => { + unsubscribe(); + }); + + function ToPrint() { + const _style = ` + #print-area { + position: absolute; + inset: 0; + background-color: #fff; + + .item { + display: flex; + flex-direction: column; + page-break-after: always; + height: 100%; + + + .head { + z-index: 1; + width: 100%; + background-color: azure; + font-size: 22px; + font-weight: bold; + line-height: 100px; + text-align: center; + } + + .main { + display: flex; + flex: 1; + justify-content: center; + padding: 15px; + + table { + border-collapse: collapse; + width: 100%; + } + + table, + th, + td { + border: solid 1px black; + } + + tr > th { + height: 60px; + } + .instore_td { + border: 1px solid #000; + font-size: 12px; + line-height: 20px; + text-align: center; + word-break: break-all; + } + + .material_table_td { + border: 1px solid #000; + font-size: 14px; + line-height: 20px; + text-align: center; + word-break: break-all; + } + } + + .footer { + display: flex; + margin-bottom: 15px; + background-color: #eee; + font-size: 12px; + line-height: 21px; + text-align: center; + } + } + }`; + + printJS({ + // 闇�瑕佹墦鍗板尯鍩熻缃殑Id + printable: 'print-area', + // 鎵撳嵃绫诲瀷 + type: 'html', + // 榛樿鍊间负800锛屾垜浠妸鎶婅缃负100% + maxWidth: '100%', + // *浠h〃搴旂敤鎵�鏈夋牱寮忥紝榛樿鍊间负null锛屽鏋滀笉璁剧疆锛屾墦鍗扮獥鍙e垯浼氬拷鐣ユ墍鏈夋牱寮� + targetStyles: ['*'], + // font_size: '9pt', + scanStyles: false, + style: `@page {size: auto; margin: 0mm;} html, ${_style}`, + }); } /** @@ -197,7 +555,7 @@ } </script> <style lang="less"> -.vben-page-wrapper .vben-page-wrapper-content { + .vben-page-wrapper .vben-page-wrapper-content { margin: 1px; -} + } </style> diff --git a/src/views/tigerprojects/system/lowcode/composition/mainTable.vue b/src/views/tigerprojects/system/lowcode/composition/mainTable.vue index ad98fbf..e63781f 100644 --- a/src/views/tigerprojects/system/lowcode/composition/mainTable.vue +++ b/src/views/tigerprojects/system/lowcode/composition/mainTable.vue @@ -178,7 +178,7 @@ title: '鍒楄〃淇℃伅', api: getListByPage, searchInfo: { - TABLE_NAME: objParams.value['ID'], + TABLE_NAME: objParams.value['Name'], option: AuthOption.value['BY_ORG'] == 'Y' ? { @@ -218,11 +218,10 @@ () => AuthOption.value, (newVal, oldVal) => { nextTick(() => { - if (!isNullOrEmpty(newVal.BY_ORG) && !isNullOrUnDef(savedParams.value['params'])) { - getForm().setFieldsValue(savedParams.value['params']); + if (!isNullOrEmpty(newVal.BY_ORG)) { setProps({ searchInfo: { - TABLE_NAME: objParams.value['ID'], + TABLE_NAME: objParams.value['Name'], option: AuthOption.value['BY_ORG'] == 'Y' ? { @@ -242,18 +241,6 @@ ); onMounted(async () => { - if (!isNullOrUnDef(savedParams) && !isNullOrUnDef(savedParams.value['params'])) { - getForm().setFieldsValue(savedParams.value['params']); - reload(); - } - // if ( - // !isNullOrUnDef(useQuery.getCurSearchInfo['searchInfo']) && - // useQuery.getCurSearchInfo['name'] == route.name - // ) { - // getForm().resetFields(); - // const searchInfo = useQuery.getCurSearchInfo['searchInfo']; - // await getForm().setFieldsValue(searchInfo); - // } }); /** diff --git a/src/views/tigerprojects/system/lowcode/composition/printTemplate1.vue b/src/views/tigerprojects/system/lowcode/composition/printTemplate1.vue new file mode 100644 index 0000000..466c78b --- /dev/null +++ b/src/views/tigerprojects/system/lowcode/composition/printTemplate1.vue @@ -0,0 +1,185 @@ +<template> + <div id="print-area"> + <div class="item" v-for="(items, index) in tableData" :key="items.id"> + <div v-if="index == 0"> + <div class="flex relative"> + <div class="head">鎴愬搧鍏ュ簱鍗� </div> + <div class="absolute right-12 m-4 z-2"> + <!-- <QrCode + :value="qrInstoreOrder" + :width="64" + :height="64" + :options="{ margin: 5 }" + ref="qrDiyRef" + /> --> + </div> + </div> + <div style="display: flex; flex-direction: row; height: 30px; margin: 2px"> + <div style="width: 40%"></div> + <div style="width: 17%"></div> + <div style="width: 18%"></div> + <div style="width: 25%">鍏ュ簱鏃ユ湡锛歿{ formatToDate(new Date()) }}</div> + </div> + </div> + <div class="main"> + <table class=" "> + <tr> + <!-- <th class="material_table_td w-1/14">搴忓彿</th> --> + <th class="material_table_td" style="width: 14%">鍏ュ簱鍗曞彿</th> + <th class="material_table_td" style="width: 14%">閿�鍞鍗曞彿</th> + <th class="material_table_td" style="width: 16%">鍖呰宸ュ崟鍙�</th> + <th class="material_table_td" style="width: 16%">鏂欏彿</th> + <th class="material_table_td" style="width: 24%">鎻忚堪</th> + <th class="material_table_td" style="width: 8%">璁″垝鏁伴噺</th> + <th class="material_table_td" style="width: 8%">鍏ュ簱鏁伴噺</th> + </tr> + <tr v-for="(item, indexs) in items.Items.filter((q) => q.STATUS == 'Y')" :key="indexs"> + <!-- <td class="material_table_td"> + {{ Number(indexs) + 1 }} + </td> --> + <td class="instore_td"> + <QrCode + :value="item.ORDER_NO" + :width="80" + :height="80" + :options="{ margin: 1 }" + ref="qrDiyRef" + /> + </td> + <td class="instore_td"> + {{ item.SALES_ORDER }} + </td> + <td class="instore_td"> + {{ item.WORK_ORDER }} + </td> + <td class="instore_td"> + {{ item.ITEM_CODE }} + </td> + <td class="instore_td"> + {{ item.ITEM_NAME }} + </td> + <td class="instore_td"> + {{ item.PLAN_QTY }} + </td> + <td class="instore_td"> + {{ item.SCAN_QTY }} + </td> + </tr> + </table> + </div> + <div style="display: flex; flex-direction: row; height: 30px; margin-bottom: 15px; " v-if="index == Number(tableData?.length) - 1"> + <div style="width: 20%; margin-left: 15px;">鍏ュ簱浜哄憳锛歿{}}</div> + <div style="width: 20%">鐢熶骇涓荤锛歿{}}</div> + <div style="width: 20%">鍝佺纭锛歿{}}</div> + <div style="width: 20%">PMC瀹℃牳锛歿{}}</div> + <div style="width: 20%">浠撳簱绛炬敹锛歿{}}</div> + </div> + <div class="footer flex"> + <div style="width: 40%"></div> + <div style="width: 10%">绗瑊{ index + 1 }}椤�</div> + <div style="width: 10%">鍏眥{ tableData?.length }}椤�</div> + <div style="width: 40%"></div> + </div> + </div> + </div> +</template> +<script lang="ts" setup> + import { ref, toRefs } from 'vue'; + import { QrCode } from '/@/components/Qrcode/index'; + import { formatToDate } from '/@/utils/dateUtil'; + + const props = defineProps({ + tableData: { type: Object as PropType<any[]> }, + qrInstoreOrder: { type: String }, + }); + const { tableData, qrInstoreOrder } = toRefs(props); +</script> +<style lang="scss" scoped> + #print-area { + position: absolute; + inset: 0; + background-color: #fff; + + .item { + display: flex; + flex-direction: column; + // background-color: bisque; + page-break-after: always; + height: 100%; + + .head { + z-index: 1; + width: 100%; + background-color: azure; + font-size: 36px; + font-weight: bold; + line-height: 100px; + text-align: center; + } + + .main { + display: flex; + flex: 1; + // align-items: center; + justify-content: center; + padding: 15px; + + table { + border-collapse: collapse; + } + + table, + th, + td { + border: solid 1px black; + } + + tr > th { + height: 60px; + } + + /* 璁剧疆鏍囬瀛楁瀛椾綋澶у皬 */ + // :deep() { + // .ant-table-tbody > tr > td { + // font-size: 3px; /* 淇敼涓轰綘鎯宠鐨勫瓧浣撳ぇ灏� */ + // line-height: 18px; + // } + + // .ant-table-thead > tr > th { + // line-height: 21px; + // } + + // .ant-table-title { + // font-size: 4px; /* 璁剧疆浣犳兂瑕佺殑瀛椾綋澶у皬 */ + // } + // } + + .instore_td { + border: 1px solid #000; + font-size: 6px; /* 淇敼涓轰綘鎯宠鐨勫瓧浣撳ぇ灏� */ + line-height: 20px; + text-align: center; + word-break: break-all; + } + + .material_table_td { + border: 1px solid #000; + font-size: 6px; /* 淇敼涓轰綘鎯宠鐨勫瓧浣撳ぇ灏� */ + line-height: 20px; + text-align: center; + word-break: break-all; + } + } + + .footer { + display: flex; + margin-bottom: 15px; + background-color: #eee; + font-size: 14px; + // font-weight: bold; + line-height: 100px; + text-align: center; + } + } + } +</style> diff --git a/src/views/tigerprojects/system/lowcode/data.ts b/src/views/tigerprojects/system/lowcode/data.ts index a5a84be..dca6657 100644 --- a/src/views/tigerprojects/system/lowcode/data.ts +++ b/src/views/tigerprojects/system/lowcode/data.ts @@ -9,19 +9,21 @@ import { ActionItem, FormSchema, PopConfirm } from '/@/components/Table'; import { useI18n } from '/@/hooks/web/useI18n'; -import { isNullOrEmpty, isNullOrUnDef } from '/@/utils/is'; +import { isArray, isNullOrEmpty, isNullOrUnDef, isTimeViaRegExp8601 } from '/@/utils/is'; import { woCustFn, woformSchema } from '/@/views/components/bizMesWo'; import { useModal } from '/@/components/Modal'; import { Ref, unref } from 'vue'; import { getRouteData, getWoRouteData } from '/@/api/tigerapi/mes/router'; import { buildUUID } from '/@/utils/uuid'; import { useUserStore } from '/@/store/modules/user'; -import { formatToDateTime } from '/@/utils/dateUtil'; +import { dateUtil, formatToDateTime } from '/@/utils/dateUtil'; import { DeleteEntity, getEntity } from '/@/api/tigerapi/system'; import { useGo } from '/@/hooks/web/usePage'; import { useQueryStore } from '/@/store/modules/queryInpage'; import { RouteRecordName } from 'vue-router'; import { cloneDeep } from 'lodash-es'; +import dayjs from 'dayjs'; +import { utils } from 'sortablejs'; const { t } = useI18n(); /** @@ -423,6 +425,16 @@ useQuery.getCurSearchInfo.some((q) => q.name == name) ) { const curSearchInfo = useQuery.getCurSearchInfo.filter((q) => q.name == name); - f.setFieldsValue(curSearchInfo[0].searchInfo); + const params = cloneDeep(curSearchInfo[0].searchInfo); + const Keys = Object.getOwnPropertyNames(params); + for (const k in Keys) { + if (!isNullOrEmpty(params[Keys[k]].length) && isArray(params[Keys[k]])) { + if (isTimeViaRegExp8601(params[Keys[k]][0])) { + params[Keys[k]][0] = dateUtil(params[Keys[k]][0]) + params[Keys[k]][1] = dateUtil(params[Keys[k]][1]) + } + } + } + f.setFieldsValue(params); } } diff --git a/src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_DTL.ts b/src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_DTL.ts index b3a19e9..a3ff82d 100644 --- a/src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_DTL.ts +++ b/src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_DTL.ts @@ -506,6 +506,7 @@ ] as BasicColumn[], }; + let disableQty = false; const crudForms = { BAS_PKG_DTL: [ { @@ -534,6 +535,12 @@ return max < Number(item.PKG_LEVEL) ? Number(item.PKG_LEVEL) : max; }, 0) + 1; } + // if (formModel.PKG_LEVEL == 1) { + // disableQty = true; + // formModel.PKG_QTY = 1; + // } else { + // disableQty = false; + // } return { onChange: (e) => {}, }; @@ -581,6 +588,9 @@ colProps: { span: 24, }, + dynamicDisabled: ({ values }) => { + return disableQty; + }, }, { field: 'LABEL_CODE', diff --git a/src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_RULE.ts b/src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_RULE.ts index d1242b1..d683986 100644 --- a/src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_RULE.ts +++ b/src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_RULE.ts @@ -96,7 +96,7 @@ drawers: [ { name: 'BAS_PKG_DTL', - dataType: 'V_BAS_PKG_DTL', //濡傛灉杩欓噷缁欎簡鍊硷紝鍒欎細鏇挎崲name鐨勫疄浣撳悕鍘绘煡涔夋暟鎹簱 + dataType: 'V_BAS_PKG_DTL', //濡傛灉杩欓噷缁欎簡鍊硷紝鍒欎細鏇挎崲name鐨勫疄浣撳悕鍘绘煡鏁版嵁搴� code: 'PKG_RULE_ID', type: 'one', keyName: 'BAS_PKG_DTL', diff --git a/src/views/tigerprojects/system/lowcode/entityts/TestDemo.ts b/src/views/tigerprojects/system/lowcode/entityts/BIZ_ERP_PROD_IN_BTH.ts similarity index 100% rename from src/views/tigerprojects/system/lowcode/entityts/TestDemo.ts rename to src/views/tigerprojects/system/lowcode/entityts/BIZ_ERP_PROD_IN_BTH.ts diff --git a/src/views/tigerprojects/system/lowcode/high/dtl.vue b/src/views/tigerprojects/system/lowcode/high/dtl.vue index 975bbed..8282b12 100644 --- a/src/views/tigerprojects/system/lowcode/high/dtl.vue +++ b/src/views/tigerprojects/system/lowcode/high/dtl.vue @@ -307,7 +307,7 @@ function handleSuccess(d, u, item) { if (!isNullOrUnDef(custImport.value)) { /* 鑷畾涔夌紪杈戞柟娉曪紝鏍规嵁瀹炰綋鍚嶅幓璋冪敤 */ - if (data.value[item].some((q) => q.ITEM_CODE == d.ITEM_CODE)) { + if (item == 'BAS_PKG_PROD' && data.value[item].some((q) => q.ITEM_CODE == d.ITEM_CODE)) { createErrorModal({ title: t('sys.api.errorTip'), content: t(`鏂欏彿[${d.ITEM_CODE}]宸茬粡瀛樺湪`), diff --git a/src/views/tigerprojects/system/lowcode/setting/pageDetail.vue b/src/views/tigerprojects/system/lowcode/setting/pageDetail.vue index cddad4b..73b2d05 100644 --- a/src/views/tigerprojects/system/lowcode/setting/pageDetail.vue +++ b/src/views/tigerprojects/system/lowcode/setting/pageDetail.vue @@ -1550,5 +1550,3 @@ padding-bottom: 48px; } </style> -: { values: any[]; }: any: { values: any[]; }: any: { values: any[]; }: any: any: any: any: any: -any: any diff --git a/src/views/tigerprojects/system/menu/index.vue b/src/views/tigerprojects/system/menu/index.vue index 9eea644..6b29a8f 100644 --- a/src/views/tigerprojects/system/menu/index.vue +++ b/src/views/tigerprojects/system/menu/index.vue @@ -15,14 +15,14 @@ @expanded-rows-change="onExpandedRChg" > <template #toolbar> - <a-button type="primary" @click="handleCreate('BS 鑿滃崟')"> 鏂板鑿滃崟 </a-button> + <a-button type="primary" @click="handleCreate('BS')"> 鏂板鑿滃崟 </a-button> </template> <template #action="{ record }"> <TableAction :actions="[ { icon: 'clarity:note-edit-line', - onClick: handleEdit.bind(null, record, 'BS 鑿滃崟'), + onClick: handleEdit.bind(null, record, 'BS'), name: '', }, { @@ -98,7 +98,7 @@ // const [registerTable, { reload, expandRows }] = useTable({ title: '鑿滃崟鍒楄〃', api: getMenuList, - searchInfo: { menuName: 'BS 鑿滃崟' }, + searchInfo: { menuName: 'BS' }, columns, formConfig: { labelWidth: 120, diff --git a/src/views/tigerprojects/wms/finishedwarehouse/ErpProdInBth.vue b/src/views/tigerprojects/wms/finishedwarehouse/ErpProdInBth.vue new file mode 100644 index 0000000..34d471a --- /dev/null +++ b/src/views/tigerprojects/wms/finishedwarehouse/ErpProdInBth.vue @@ -0,0 +1,358 @@ +<template> + <div class="flex"> + <div id="print-area"> + <div class="item" v-for="(items, index) in printData" :key="items.id"> + <div v-if="index == 0"> + <div class="flex relative"> + <div class="head">鎴愬搧鍏ュ簱鍗� </div> + <div class="absolute right-12 m-4 z-2"> + <!-- <QrCode + :value="qrInstoreOrder" + :width="64" + :height="64" + :options="{ margin: 5 }" + ref="qrDiyRef" + /> --> + </div> + </div> + <div style="display: flex; flex-direction: row; height: 30px; margin: 2px"> + <div style="width: 40%"></div> + <div style="width: 17%"></div> + <div style="width: 18%"></div> + <div style="width: 25%">鍏ュ簱鏃ユ湡锛歿{ formatToDate(new Date()) }}</div> + </div> + </div> + <div class="main"> + <table class=" "> + <tr> + <!-- <th class="material_table_td w-1/14">搴忓彿</th> --> + <th class="material_table_td" style="width: 14%">鍏ュ簱鍗曞彿</th> + <th class="material_table_td" style="width: 14%">閿�鍞鍗曞彿</th> + <th class="material_table_td" style="width: 16%">鍖呰宸ュ崟鍙�</th> + <th class="material_table_td" style="width: 16%">鏂欏彿</th> + <th class="material_table_td" style="width: 24%">鎻忚堪</th> + <th class="material_table_td" style="width: 8%">璁″垝鏁伴噺</th> + <th class="material_table_td" style="width: 8%">鍏ュ簱鏁伴噺</th> + </tr> + <tr v-for="(item, indexs) in items.Items" :key="indexs"> + <!-- <td class="material_table_td"> + {{ Number(indexs) + 1 }} + </td> --> + <td class="instore_td"> + <QrCode + :value="item.ORDER_NO" + :width="80" + :height="80" + :options="{ margin: 1 }" + ref="qrDiyRef" + /> + </td> + <td class="instore_td"> + <!-- {{ item.SALES_ORDER }} --> + </td> + <td class="instore_td"> + {{ item.WORK_ORDER }} + </td> + <td class="instore_td"> + {{ item.ITEM_CODE }} + </td> + <td class="instore_td"> + {{ item.ITEM_NAME }} + </td> + <td class="instore_td"> + {{ item.PLAN_QTY }} + </td> + <td class="instore_td"> + {{ item.SCAN_QTY }} + </td> + </tr> + </table> + </div> + <div + style="display: flex; flex-direction: row; height: 30px; margin-bottom: 15px" + v-if="index == Number(printData?.length) - 1" + > + <div style="width: 20%; margin-left: 15px">鍏ュ簱浜哄憳锛歿{}}</div> + <div style="width: 20%">鐢熶骇涓荤锛歿{}}</div> + <div style="width: 20%">鍝佺纭锛歿{}}</div> + <div style="width: 20%">PMC瀹℃牳锛歿{}}</div> + <div style="width: 20%">浠撳簱绛炬敹锛歿{}}</div> + </div> + <div class="footer flex"> + <div style="width: 40%"></div> + <div style="width: 10%">绗瑊{ index + 1 }}椤�</div> + <div style="width: 10%">鍏眥{ printData?.length }}椤�</div> + <div style="width: 40%"></div> + </div> + </div> + </div> + </div> +</template> +<script lang="ts" setup> + import { ref, toRefs } from 'vue'; + import { QrCode } from '/@/components/Qrcode/index'; + import { formatToDate } from '/@/utils/dateUtil'; + + const props = defineProps({ + tableData: { type: Object as PropType<any[]> }, + qrInstoreOrder: { type: String }, + }); + + const { tableData, qrInstoreOrder } = toRefs(props); + const printData = [ + { + id: '111', + Items: [ + { + ID: 111, + ORDER_NO: 'YDSO241101002', + WORK_ORDER: 'YDMOB241104737', + ITEM_CODE: '20100705.0102.00', + ITEM_NAME: + 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + PLAN_QTY: 100, + SCAN_QTY: 50, + }, + { + ID: 112, + ORDER_NO: 'YDSO241101002', + WORK_ORDER: 'YDMOB241104737', + ITEM_CODE: '20100705.0102.00', + ITEM_NAME: + 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + PLAN_QTY: 100, + SCAN_QTY: 50, + }, + { + ID: 113, + ORDER_NO: 'YDSO241101002', + WORK_ORDER: 'YDMOB241104737', + ITEM_CODE: '20100705.0102.00', + ITEM_NAME: + 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + PLAN_QTY: 100, + SCAN_QTY: 50, + }, + { + ID: 114, + ORDER_NO: 'YDSO241101002', + WORK_ORDER: 'YDMOB241104737', + ITEM_CODE: '20100705.0102.00', + ITEM_NAME: + 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + PLAN_QTY: 100, + SCAN_QTY: 50, + }, + { + ID: 115, + ORDER_NO: 'YDSO241101002', + WORK_ORDER: 'YDMOB241104737', + ITEM_CODE: '20100705.0102.00', + ITEM_NAME: + 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + PLAN_QTY: 100, + SCAN_QTY: 50, + }, + { + ID: 116, + ORDER_NO: 'YDSO241101002', + WORK_ORDER: 'YDMOB241104737', + ITEM_CODE: '20100705.0102.00', + ITEM_NAME: + 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + PLAN_QTY: 100, + SCAN_QTY: 50, + }, + { + ID: 116, + ORDER_NO: 'YDSO241101002', + WORK_ORDER: 'YDMOB241104737', + ITEM_CODE: '20100705.0102.00', + ITEM_NAME: + 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + PLAN_QTY: 100, + SCAN_QTY: 50, + }, + { + ID: 116, + ORDER_NO: 'YDSO241101002', + WORK_ORDER: 'YDMOB241104737', + ITEM_CODE: '20100705.0102.00', + ITEM_NAME: + 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + PLAN_QTY: 100, + SCAN_QTY: 50, + }, + // { + // ID: 116, + // ORDER_NO: 'YDSO241101002', + // WORK_ORDER: 'YDMOB241104737', + // ITEM_CODE: '20100705.0102.00', + // ITEM_NAME: + // 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + // PLAN_QTY: 100, + // SCAN_QTY: 50, + // }, + ], + }, + { + id: '112', + Items: [ + { + ID: 311, + ORDER_NO: 'YDSO241101002', + WORK_ORDER: 'YDMOB241104737', + ITEM_CODE: '20100705.0102.00', + ITEM_NAME: + 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + PLAN_QTY: 100, + SCAN_QTY: 50, + }, + { + ID: 312, + ORDER_NO: 'YDSO241101002', + WORK_ORDER: 'YDMOB241104737', + ITEM_CODE: '20100705.0102.00', + ITEM_NAME: + 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + PLAN_QTY: 100, + SCAN_QTY: 50, + }, + { + ID: 313, + ORDER_NO: 'YDSO241101002', + WORK_ORDER: 'YDMOB241104737', + ITEM_CODE: '20100705.0102.00', + ITEM_NAME: + 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + PLAN_QTY: 100, + SCAN_QTY: 50, + }, + ], + }, + { + id: '113', + Items: [ + { + ID: 211, + ORDER_NO: 'YDSO241101002', + WORK_ORDER: 'YDMOB241104737', + ITEM_CODE: '20100705.0102.00', + ITEM_NAME: + 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + PLAN_QTY: 100, + SCAN_QTY: 50, + }, + { + ID: 212, + ORDER_NO: 'YDSO241101002', + WORK_ORDER: 'YDMOB241104737', + ITEM_CODE: '20100705.0102.00', + ITEM_NAME: + 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + PLAN_QTY: 100, + SCAN_QTY: 50, + }, + { + ID: 213, + ORDER_NO: 'YDSO241101002', + WORK_ORDER: 'YDMOB241104737', + ITEM_CODE: '20100705.0102.00', + ITEM_NAME: + 'YM-DEMS-BD11Q48 AC0-300V AC20mA 鐢佃兘1绾� 缃戠嚎2m 閰嶅悎YD-DEMS-BD2RHT浣跨敤,閰嶅浜掓劅鍣ㄥ甫灏忔彃澶� 闆呰揪鐧借壊鍟ょ洅V3/B鐗圚C', + PLAN_QTY: 100, + SCAN_QTY: 50, + }, + ], + }, + ]; +</script> +<style lang="scss" scoped> + #print-area { + position: absolute; + inset: 0; + background-color: #fff; + + .item { + display: flex; + flex-direction: column; + // background-color: bisque; + page-break-after: always; + height: 100%; + + .head { + z-index: 1; + width: 100%; + background-color: azure; + font-size: 36px; + font-weight: bold; + line-height: 100px; + text-align: center; + } + + .main { + display: flex; + flex: 1; + // align-items: center; + justify-content: center; + padding: 15px; + + table { + border-collapse: collapse; + } + + table, + th, + td { + border: solid 1px black; + } + + tr > th { + height: 60px; + } + + /* 璁剧疆鏍囬瀛楁瀛椾綋澶у皬 */ + // :deep() { + // .ant-table-tbody > tr > td { + // font-size: 3px; /* 淇敼涓轰綘鎯宠鐨勫瓧浣撳ぇ灏� */ + // line-height: 18px; + // } + + // .ant-table-thead > tr > th { + // line-height: 21px; + // } + + // .ant-table-title { + // font-size: 4px; /* 璁剧疆浣犳兂瑕佺殑瀛椾綋澶у皬 */ + // } + // } + + .instore_td { + border: 1px solid #000; + font-size: 6px; /* 淇敼涓轰綘鎯宠鐨勫瓧浣撳ぇ灏� */ + line-height: 20px; + text-align: center; + word-break: break-all; + } + + .material_table_td { + border: 1px solid #000; + font-size: 6px; /* 淇敼涓轰綘鎯宠鐨勫瓧浣撳ぇ灏� */ + line-height: 20px; + text-align: center; + word-break: break-all; + } + } + + .footer { + display: flex; + margin-bottom: 15px; + background-color: #eee; + font-size: 14px; + // font-weight: bold; + line-height: 100px; + text-align: center; + } + } + } +</style> diff --git a/tsconfig.json b/tsconfig.json index 31c1e1c..6329d8e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -25,6 +25,6 @@ "build/**/*.d.ts", "mock/**/*.ts", "vite.config.ts" - ], +, "src/router/routes/modules/erpprodinbth.bak" ], "exclude": ["node_modules", "tests/server/**/*.ts", "dist", "**/*.js"] } -- Gitblit v1.9.3