From e8d564377d20526c643f00132ccc3466360f9c5b Mon Sep 17 00:00:00 2001
From: zs <zhousong@weben-smart.com>
Date: 周二, 13 5月 2025 15:33:58 +0800
Subject: [PATCH] 详情页面

---
 HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.tsx |  347 +++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 210 insertions(+), 137 deletions(-)

diff --git a/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.tsx b/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.tsx
index 40d7b2b..a2f4737 100644
--- a/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.tsx
+++ b/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.tsx
@@ -4,21 +4,22 @@
 import styles from './WmsMaterialStockDetail.module.scss'
 import { useWmsMaterialStock } from '../../../Controllers/WmsMaterialStock'
 import IconButton from '@/components/IconButton/IconButton'
-import WmsMaterialStockDrawer from '../Dialog/WmsMaterialStockDrawer/WmsMaterialStockDrawer'
+import WmsMaterialStockDetailQueryDrawer from '../Dialog/WmsMaterialStockDetailQuery/WmsMaterialStockDetailQueryDrawer'
 import Search from '@/components/Search/Search'
 import { columns } from './Config'
 import TdButton from '@/components/TdButton/TdButton'
 import { vPermission } from '@/libs/Permission/Permission'
 import dayjs from 'dayjs'
+import { getWmsEnumData } from '@/widgets/WmsMaterialStock/Models/Service/WmsMaterialStockDrawer'
 import {
+  ElInput,
+  ElSelect,
+  ElOption,
   ElDatePicker,
   ElForm,
   ElFormItem,
-  ElInput,
-  ElOption,
-  ElSelect,
 } from 'element-plus'
-import { getWmsEnumData } from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer'
+import { injectModel } from '@/libs/Provider/Provider'
 
 interface RenderTableType {
   url?: string
@@ -31,7 +32,7 @@
 }
 
 export default defineComponent({
-  name: 'WmsMaterialStock',
+  name: 'WmsMaterialStockDetail',
   directives: {
     permission: vPermission,
   },
@@ -40,6 +41,7 @@
       dataSource,
       contextMenu,
       dialogConfig,
+      dialogConfigForQuery,
       tableRef,
       current,
       search,
@@ -51,91 +53,81 @@
       onConfirmWmsMaterialStock,
       onCheck,
       onAddWmsMaterialStock,
+      onAdvancedQuery,
       onExport,
       openDetail,
       onSuccess,
       onBeforeUpload,
     } = useWmsMaterialStock(props, ctx)
 
+    //瀹氫箟楂樼骇鏌ヨ寮曠敤
+    const wmsMaterialStockDetailQueryDrawerRef = ref(null)
     // 鏂板鐨勬煡璇㈡潯浠�
     const queryForm = ref({
-      containerNo: '',
-      materialNo: '',
-      materialName: '',
-      containerType: '',
-      containerStatus: '',
-      storageTypeNo: 1,
-      placeStatus: '',
-      placeNo: '',
-      isLock: '',
-      emptyContainer: '',
-      dateRange: [],
-      filter: '',
+      searchVal: '',
+      str_searchFormInputAttrs: [],
     })
-
-    const queryParams = computed(() => ({
-      ...queryForm.value,
-      containerType: queryForm.value.containerType || '', // 澶勭悊涓嬫媺
-      containerStatus: queryForm.value.containerStatus || '',
-      storageTypeNo: queryForm.value.storageTypeNo || 1, // 澶勭悊涓嬫媺
-      placeStatus: queryForm.value.placeStatus || '',
-      islock: queryForm.value.isLock || '',
-      emptyContainer: queryForm.value.emptyContainer || '',
-      startTime: queryForm.value.dateRange[0] || '',
-      endTime: queryForm.value.dateRange[1] || '',
-    }))
+    //瀹氫箟鏁翠綋妯$硦鏌ヨ鐨勫垪鏁扮粍(娉ㄦ剰锛氬繀椤诲ぇ灏忓啓璺熷悗绔殑瀹炰綋绫诲睘鎬у悕涓�鑷达紝鍚﹀垯浼氬鑷村尮閰嶄笉瀵圭殑闂)
+    const _searchFormInputAttrs = ref(['OrderNo', 'MaterialNo', 'MaterialId'])
+    const searchFormInputAttrs_Placeholder = ref('璇疯緭鍏ュ崟鎹彿/鐗╂枡缂栧彿/鐗╂枡ID')
 
     // 鍔ㄦ�佹灇涓鹃�夐」
     const enumOptions = reactive({
-      containerType: [] as Array<{ label: string; value: any }>,
       containerStatus: [] as Array<{ label: string; value: any }>,
-      storageTypeNo: [] as Array<{ label: string; value: any }>,
+      containerType: [] as Array<{ label: string; value: any }>,
       placeStatus: [] as Array<{ label: string; value: any }>,
-      yesOrNo: [] as Array<{ label: string; value: any }>,
+      storageTypeNo: [] as Array<{ label: string; value: any }>,
+      checkStatus: [] as Array<{ label: string; value: any }>,
+      isLock: [] as Array<{ label: string; value: any }>,
+      emptyContainer: [] as Array<{ label: string; value: any }>,
     })
 
     // 鑾峰彇鏋氫妇鏁版嵁
     const fetchEnumData = async () => {
       try {
-        // 鑾峰彇鐗╂枡绫诲瀷鏋氫妇
-        const containerTypeData = await getWmsEnumData({
-          EnumName: 'ContainerTypeEnum',
-        })
-        enumOptions.containerType = containerTypeData.map((item) => ({
-          label: item.description,
-          value: item.value,
-        }))
-        // 鑾峰彇鐗╂枡绫诲瀷鏋氫妇
-        const storageTypeNoData = await getWmsEnumData({
-          EnumName: 'PlaceTypeEnum',
-        })
-        enumOptions.storageTypeNo = storageTypeNoData.map((item) => ({
-          label: item.description,
-          value: item.value,
-        }))
-
-        // 鑾峰彇閲囪喘绫诲瀷鏋氫妇
-        const placeStatusData = await getWmsEnumData({
-          EnumName: 'PlaceStatusEnum',
-        })
-        enumOptions.placeStatus = placeStatusData.map((item) => ({
-          label: item.description,
-          value: item.value,
-        }))
-
-        // 鑾峰彇閲囪喘绫诲瀷鏋氫妇
-        const containerStatusData = await getWmsEnumData({
+        const containerStatusEnumData = await getWmsEnumData({
           EnumName: 'ContainerStatusEnum',
         })
-        enumOptions.containerStatus = containerStatusData.map((item) => ({
+        enumOptions.containerStatus = containerStatusEnumData.map((item) => ({
           label: item.description,
           value: item.value,
         }))
-
-        const yesNoData = await getWmsEnumData({
+        const containerTypeEnumData = await getWmsEnumData({
+          EnumName: 'ContainerTypeEnum',
+        })
+        enumOptions.containerType = containerTypeEnumData.map((item) => ({
+          label: item.description,
+          value: item.value,
+        }))
+        const placeStatusEnumData = await getWmsEnumData({
+          EnumName: 'PlaceStatusEnum',
+        })
+        enumOptions.placeStatus = placeStatusEnumData.map((item) => ({
+          label: item.description,
+          value: item.value,
+        }))
+        const placeTypeEnumData = await getWmsEnumData({
+          EnumName: 'PlaceTypeEnum',
+        })
+        enumOptions.storageTypeNo = placeTypeEnumData.map((item) => ({
+          label: item.description,
+          value: item.value,
+        }))
+        const materialCheckStatusEnumData = await getWmsEnumData({
+          EnumName: 'MaterialCheckStatusEnum',
+        })
+        enumOptions.checkStatus = materialCheckStatusEnumData.map((item) => ({
+          label: item.description,
+          value: item.value,
+        }))
+        const yesNoEnumData = await getWmsEnumData({
           EnumName: 'YesNoEnum',
         })
-        enumOptions.yesOrNo = yesNoData.map((item) => ({
+        enumOptions.isLock = yesNoEnumData.map((item) => ({
+          label: item.description,
+          value: item.value,
+        }))
+        enumOptions.emptyContainer = yesNoEnumData.map((item) => ({
           label: item.description,
           value: item.value,
         }))
@@ -147,33 +139,65 @@
     // 缁勪欢鎸傝浇鏃惰幏鍙栨灇涓炬暟鎹�
     onMounted(() => {
       fetchEnumData()
-      handleQuery()
+      handleQueryForMain()
     })
 
-    // 鏂板鐨勬煡璇㈡柟娉�
-    const handleQuery = async () => {
-      console.log('鏌ヨ鏉′欢:', queryParams.value)
-      // tableRef.value.getTableList()
-      tableRef.value.getList(queryParams.value)
+    // 瀹氫箟鍝嶅簲寮忔煡璇㈡暟鎹�
+    const _curHighQueryData = ref({
+      searchVal: '',
+      str_searchFormInputAttrs: [],
+    })
+    // 鏂扮増鐨勬煡璇㈡柟娉曪紙涓婚〉闈腑鐨勬寜閽�愭煡璇€�戯級
+    const handleQueryForMain = async () => {
+      _curHighQueryData.value.searchVal = queryForm.value.searchVal
+      _curHighQueryData.value.str_searchFormInputAttrs =
+        _searchFormInputAttrs.value
+      tableRef.value.getList(_curHighQueryData.value)
+    }
+    // 鏂扮増鐨勬煡璇㈡柟娉曪紙楂樼骇鏌ヨ涓殑鎸夐挳銆愭煡璇€�戯級
+    const handleQuery = async (extraParams = {}) => {
+      let filteredData = commonGetHighQueryForm(extraParams)
+      commonSaveCurHighQueryData(filteredData)
+      tableRef.value.getList(filteredData)
+    }
+    // 鏂扮増鐨勬煡璇㈤噸缃�
+    const resetQuery = () => {
+      queryForm.value.searchVal = ''
+      queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value
+    }
+    //鏂扮増鐨勫鍑烘柟娉�
+    const handleExport = () => {
+      onExport(_curHighQueryData.value)
+    }
+    // 鏂扮増鐨勬煡璇㈠脊鍑烘鍏抽棴鏂规硶
+    const closeQuery = (extraParams = {}) => {
+      let filteredData = commonGetHighQueryForm(extraParams)
+      console.log('closeQuery鏂规硶')
+      console.log(filteredData)
+      commonSaveCurHighQueryData(filteredData)
+    }
+    //淇濆瓨鏌ヨ鍊�
+    const commonSaveCurHighQueryData = (filteredData = {}) => {
+      _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData }
+      _curHighQueryData.value.searchVal = queryForm.value.searchVal
+      _curHighQueryData.value.str_searchFormInputAttrs =
+        _searchFormInputAttrs.value
+    }
+    //鑾峰彇楂樼骇鏌ヨ寮瑰嚭妗嗙殑鏌ヨ鍊�
+    const commonGetHighQueryForm = (extraParams = {}) => {
+      // 杩囨护鎺� undefined 鐨勫��
+      let filteredData = Object.assign(
+        {},
+        ...Object.entries(extraParams).map(([key, value]) =>
+          value !== undefined ? { [key]: value } : {}
+        )
+      )
+      //缁勫悎妯$硦鏌ヨ
+      filteredData.searchVal = queryForm.value.searchVal
+      filteredData.str_searchFormInputAttrs = _searchFormInputAttrs.value
+      return filteredData
     }
 
-    // 閲嶇疆鏌ヨ鏉′欢
-    const resetQuery = () => {
-      queryForm.value = {
-        containerNo: '',
-        materialNo: '',
-        materialName: '',
-        containerType: '',
-        containerStatus: '',
-        storageTypeNo: 1,
-        placeStatus: '',
-        placeNo: '',
-        isLock: '',
-        emptyContainer: '',
-        dateRange: [],
-        filter: '',
-      }
-    }
     /**
      * @returns 琛ㄦ牸
      */
@@ -187,20 +211,17 @@
         params,
         autoHeight,
       } = props
-      props.params = {
-        ...queryParams.value,
-        ...params,
-      }
+
       return (
         <div
           class={{
-            [styles.wmsMaterialStockList]: true,
+            [styles.wmsMaterialStockDetailList]: true,
           }}
         >
           <BaseTable
             ref={tableRef}
             url={url}
-            sortUrlTpl="/api/v1/HIAWms/wmsMaterialStock/{id}/adjustsort/{sort}"
+            sortUrlTpl="/api/v1/HIAWms/wmsMaterialStockDetail/{id}/adjustsort/{sort}"
             v-model:dataSource={dataSource.value}
             columns={columns}
             contextMenu={contextMenu}
@@ -218,6 +239,57 @@
                   <div>
                     {row.inStockTime != null
                       ? dayjs(row.inStockTime).format('YYYY-MM-DD HH:mm:ss')
+                      : '-'}
+                  </div>
+                )
+              },
+              isDisabled: ({ row }: any) => {
+                return (
+                  <div>
+                    {row.isDisabled != null
+                      ? row.isDisabled
+                        ? '鏄�'
+                        : '鍚�'
+                      : '-'}
+                  </div>
+                )
+              },
+              creationTime: ({ row }: any) => {
+                return (
+                  <div>
+                    {row.creationTime != null
+                      ? dayjs(row.creationTime).format('YYYY-MM-DD HH:mm:ss')
+                      : '-'}
+                  </div>
+                )
+              },
+              lastModificationTime: ({ row }: any) => {
+                return (
+                  <div>
+                    {row.lastModificationTime != null
+                      ? dayjs(row.lastModificationTime).format(
+                          'YYYY-MM-DD HH:mm:ss'
+                        )
+                      : '-'}
+                  </div>
+                )
+              },
+              isDeleted: ({ row }: any) => {
+                return (
+                  <div>
+                    {row.isDeleted != null
+                      ? row.isDeleted
+                        ? '鏄�'
+                        : '鍚�'
+                      : '-'}
+                  </div>
+                )
+              },
+              deletionTime: ({ row }: any) => {
+                return (
+                  <div>
+                    {row.deletionTime != null
+                      ? dayjs(row.deletionTime).format('YYYY-MM-DD HH:mm:ss')
                       : '-'}
                   </div>
                 )
@@ -242,20 +314,13 @@
         </div>
       )
     }
+
     return () => {
       return (
-        <div class={styles.wmsMaterialStockContent}>
-          {/* 娣诲姞/缂栬緫 */}
-          <WmsMaterialStockDrawer
-            v-model={dialogConfig.visible}
-            title={dialogConfig.title}
-            row={current.value}
-            sort={sort.value}
-            onConfirm={onConfirmWmsMaterialStock}
-          />
+        <div class={styles.wmsMaterialStockDetailContent}>
           {/* 楂樼骇鏌ヨ */}
-          {/* <WmsMaterialStockDetailDrawer
-            ref="wmsTaskQueryDrawerRef"
+          <WmsMaterialStockDetailQueryDrawer
+            ref="wmsMaterialStockDetailQueryDrawerRef"
             v-model={dialogConfigForQuery.visible}
             title={dialogConfigForQuery.title}
             row={current.value}
@@ -263,49 +328,57 @@
             onConfirmQuery={handleQuery}
             onRestQuery={resetQuery}
             onClose={closeQuery}
-          /> */}
+          />
+
           <div class={styles.headerContent}>
             <div class={styles.header}>
               <IconButton
-                v-permission="wmsMaterialStock-add"
-                icon="add-p"
-                onClick={onAddWmsMaterialStock}
-                type="primary"
-              >
-                娣诲姞
-              </IconButton>
-              <el-divider direction="vertical" />
-              <el-upload
-                v-permission="wmsMaterialStock-import"
-                name="file"
-                accept=".xlsx,.xls,.csv"
-                show-file-list={false}
-                onError={onError}
-                onSuccess={onSuccess}
-                before-upload={onBeforeUpload}
-                headers={headers.value}
-                action="/api/v1/HIAWms/wmsMaterialStock/import"
-              >
-                <IconButton icon="in">瀵煎叆</IconButton>
-              </el-upload>
-
-              <IconButton
-                v-permission="wmsMaterialStock-output"
+                v-permission="wmsMaterialStockDetail-output"
                 icon="out"
                 onClick={onExport}
               >
                 瀵煎嚭
               </IconButton>
             </div>
-            {/* <Search
-              placeholder="璇疯緭鍏ュ叧閿瓧"
-              v-model={search.value}
-              onConfirm={onSearch}
-              style={{ marginTop: '-1px' }}
-            /> */}
+            <ElFormItem style={{ marginTop: '15px' }}>
+              <ElFormItem label="鍏抽敭瀛�">
+                <el-tooltip
+                  class="box-item"
+                  effect="dark"
+                  content={searchFormInputAttrs_Placeholder.value}
+                  placement="top-start"
+                >
+                  <ElInput
+                    v-model={queryForm.value.searchVal}
+                    placeholder={searchFormInputAttrs_Placeholder.value}
+                    clearable
+                    class={styles.formItem}
+                  />
+                </el-tooltip>
+              </ElFormItem>
+              <IconButton
+                type="primary"
+                icon="search"
+                onClick={handleQueryForMain}
+              >
+                鏌ヨ
+              </IconButton>
+              {/* <IconButton style="" icon="refresh" onClick={resetQuery}> 
+                閲嶇疆 
+              </IconButton> */}
+              <IconButton
+                v-permission="wmsMaterialStockDetail-hightQuery"
+                icon="search"
+                onClick={onAdvancedQuery}
+                type="primary"
+              >
+                楂樼骇鏌ヨ
+              </IconButton>
+            </ElFormItem>
           </div>
+
           <RenderBaseTable
-            url="/api/v1/HIAWms/wmsMaterialStock"
+            url="/api/v1/HIAWms/wmsMaterialStock/StockDetail"
             dataSource={dataSource}
             isChecked={true}
             isDrag={true}

--
Gitblit v1.9.3