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