From 34c674d503e23c0cf6d0b6dec063f3049885e5f8 Mon Sep 17 00:00:00 2001
From: 朱桂飞 <zhuguifei@zhuguifeideMacBook-Air.local>
Date: 星期一, 10 二月 2025 13:17:10 +0800
Subject: [PATCH] 新增盘点明细

---
 eims-ui/apps/web-antd/src/views/eims/inventory-detail/index.vue |   98 ++++++++++++++++++++++++++++++++-----------------
 1 files changed, 64 insertions(+), 34 deletions(-)

diff --git a/eims-ui/apps/web-antd/src/views/eims/inventory-detail/index.vue b/eims-ui/apps/web-antd/src/views/eims/inventory-detail/index.vue
index 85ce23f..d8fdaae 100644
--- a/eims-ui/apps/web-antd/src/views/eims/inventory-detail/index.vue
+++ b/eims-ui/apps/web-antd/src/views/eims/inventory-detail/index.vue
@@ -1,9 +1,10 @@
 <script setup lang="ts">
 import type { Recordable } from '@vben/types';
 
-import { ref } from 'vue';
-import { useRoute, useRouter } from 'vue-router';
+import { computed, nextTick, ref } from 'vue';
+import { useRoute } from 'vue-router';
 
+import { useAccess } from '@vben/access';
 import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui';
 import { $t } from '@vben/locales';
 import { getVxePopupContainer } from '@vben/utils';
@@ -15,7 +16,7 @@
 import { commonDownloadExcel } from '#/utils/file/download';
 
 import { columns, querySchema } from './data';
-import equDrawer from './equ-drawer.vue';
+import detailDrawer from './detail-drawer.vue';
 import EquTypeTree from './equ-type-tree.vue';
 
 const route = useRoute();
@@ -23,6 +24,12 @@
 
 // 宸﹁竟閮ㄩ棬鐢�
 const selectTypeId = ref<string[]>([]);
+// 宸茬洏鐐�
+const check = ref<string>('宸茬洏');
+// 鏈洏鐐�
+const noCheck = ref<string>('鏈洏');
+// 鏌ヨ娣诲姞鐩樼偣鏍囪杩囨护
+const checkFilter = ref<string>();
 
 const formOptions: VbenFormProps = {
   commonConfig: {
@@ -35,6 +42,7 @@
   wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',
   handleReset: async () => {
     selectTypeId.value = [];
+    checkFilter.value = undefined;
     // eslint-disable-next-line no-use-before-define
     const { formApi, reload } = tableApi;
     await formApi.resetForm();
@@ -58,7 +66,12 @@
   columns,
   height: 'auto',
   keepSource: true,
-  pagerConfig: {},
+  pagerConfig: {
+    // 榛樿鏉℃暟
+    pageSize: 1000,
+    // 鍒嗛〉鍙�夋潯鏁�
+    pageSizes: [1000, 2000, 3000, 4000, 5000]
+  },
   proxyConfig: {
     ajax: {
       query: async ({ page }, formValues = {}) => {
@@ -68,10 +81,36 @@
         } else {
           Reflect.deleteProperty(formValues, 'equTypeId');
         }
+        // 鏄惁鐩樼偣
+        if (checkFilter.value === '0' || checkFilter.value === '1') {
+          formValues.status = checkFilter.value;
+        } else {
+          Reflect.deleteProperty(formValues, 'status');
+        }
         return await listInventoryDetail({
           pageNum: page.currentPage,
           pageSize: page.pageSize,
+          inventoryId,
           ...formValues
+        });
+      },
+      querySuccess: () => {
+        nextTick(() => {
+          // 杩囨护宸茬洏鍜屾湭鐩樼殑鏁版嵁
+          // eslint-disable-next-line no-use-before-define
+          const data = tableApi.grid.getData();
+          const data0 = data.filter((item) => {
+            return item.status === '' || item.status === null || item.status === '0';
+          });
+          if (data0 !== null && data0.length > 0) {
+            noCheck.value = `鏈洏(${data0.length})`;
+          }
+          const data1 = data.filter((item) => {
+            return item.status !== '' && item.status !== null && item.status === '1';
+          });
+          if (data1 !== null && data1.length > 0) {
+            check.value = `宸茬洏(${data1.length})`;
+          }
         });
       }
     }
@@ -97,18 +136,13 @@
   }
 });
 
-const [EquDrawer, equDrawerApi] = useVbenDrawer({
-  connectedComponent: equDrawer
+const [DetailDrawer, detailDrawerApi] = useVbenDrawer({
+  connectedComponent: detailDrawer
 });
 
-function handleAdd() {
-  equDrawerApi.setData({});
-  equDrawerApi.open();
-}
-
 async function handleEdit(record: Recordable<any>) {
-  equDrawerApi.setData({ id: record.equId });
-  equDrawerApi.open();
+  detailDrawerApi.setData({ id: record.id });
+  detailDrawerApi.open();
 }
 
 async function handleDelete(row: Recordable<any>) {
@@ -129,7 +163,6 @@
     }
   });
 }
-
 function handleDownloadExcel() {
   commonDownloadExcel(inventoryDetailExport, '鐩樼偣鏄庣粏', tableApi.formApi.form.values, {
     fieldMappingTime: formOptions.fieldMappingTime
@@ -145,11 +178,12 @@
   const inventoryFlag = row.inventoryFlag === null || row.inventoryFlag;
   return inventoryFlag ? '鏈洏鐐�' : '宸茬洏鐐�';
 }
-
-const router = useRouter();
-function handleDetail(record: Recordable<any>) {
-  router.push(`/equ/detail/${record.id}`);
+function handleQuery(isChecked: string) {
+  checkFilter.value = isChecked;
+  tableApi.query();
 }
+const { hasAccessByRoles } = useAccess();
+const isSuperAdmin = computed(() => hasAccessByRoles(['superadmin']));
 </script>
 
 <template>
@@ -159,34 +193,30 @@
       <BasicTable class="flex-1 overflow-hidden" table-title="鐩樼偣鏄庣粏鍒楄〃">
         <template #toolbar-tools>
           <Space>
+            <a-button @click="handleQuery('0')">{{ noCheck }}</a-button>
+            <a-button type="primary" @click="handleQuery('1')"> {{ check }}</a-button>
             <a-button v-access:code="['eims:inventory:export']" @click="handleDownloadExcel">
               {{ $t('pages.common.export') }}
             </a-button>
-            <a-button :disabled="!vxeCheckboxChecked(tableApi)" danger type="primary" v-access:code="['eims:inventory:remove']" @click="handleMultiDelete">
+            <a-button
+              :disabled="!vxeCheckboxChecked(tableApi) || !isSuperAdmin"
+              danger
+              type="primary"
+              v-access:code="['eims:inventory:remove']"
+              @click="handleMultiDelete"
+            >
               {{ $t('pages.common.delete') }}
             </a-button>
-            <a-button type="primary" v-access:code="['eims:inventory:add']" @click="handleAdd">
-              {{ $t('pages.common.add') }}
-            </a-button>
-          </Space>
-        </template>
-
-        <template #equName="{ row }">
-          <Space>
-            <a-button type="link" @click="handleDetail(row)"> {{ row.equName }}</a-button>
           </Space>
         </template>
 
         <template #action="{ row }">
           <Space>
-            <ghost-button v-access:code="['eims:inventory:edit']" @click.stop="handleEdit(row)">
+            <ghost-button :disabled="!isSuperAdmin" v-access:code="['eims:inventory:edit']" @click.stop="handleEdit(row)">
               {{ $t('pages.common.edit') }}
             </ghost-button>
-            <ghost-button v-if="row.menuType !== 'F'" class="btn-success" v-access:code="['eims:inventory:list']" @click="handleDetail(row)">
-              {{ $t('pages.common.info') }}
-            </ghost-button>
             <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�" @confirm="handleDelete(row)">
-              <ghost-button danger v-access:code="['eims:inventory:remove']" @click.stop="">
+              <ghost-button :disabled="!isSuperAdmin" danger v-access:code="['eims:inventory:remove']" @click.stop="">
                 {{ $t('pages.common.delete') }}
               </ghost-button>
             </Popconfirm>
@@ -202,6 +232,6 @@
         </template>
       </BasicTable>
     </div>
-    <EquDrawer @reload="tableApi.query()" />
+    <DetailDrawer @reload="tableApi.query()" />
   </Page>
 </template>

--
Gitblit v1.9.3