From 3cd9f003ae893abe2483ab3ce0a62bfbd9fa8554 Mon Sep 17 00:00:00 2001
From: zs <zhousong@weben-smart.com>
Date: 周一, 05 5月 2025 18:04:15 +0800
Subject: [PATCH] 库存后端修改
---
HIAWms/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx | 342 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 342 insertions(+), 0 deletions(-)
diff --git a/HIAWms/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx b/HIAWms/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx
new file mode 100644
index 0000000..a2e2c16
--- /dev/null
+++ b/HIAWms/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx
@@ -0,0 +1,342 @@
+import { computed, defineComponent, onMounted, reactive, ref } from 'vue'
+import type { Ref } from 'vue'
+import BaseTable from '@/components/Table/Table'
+import styles from './WmsMaterial.module.scss'
+import { useWmsMaterial } from '../../../Controllers/WmsMaterial'
+import IconButton from '@/components/IconButton/IconButton'
+import WmsMaterialDrawer from '../Dialog/WmsMaterialDrawer/WmsMaterialDrawer'
+import Search from '@/components/Search/Search'
+import { columns } from './Config'
+import TdButton from '@/components/TdButton/TdButton'
+import { vPermission } from '@/libs/Permission/Permission'
+import {
+ getWmsEnumData,
+ getWmsDataList,
+} from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer'
+import {
+ ElInput,
+ ElSelect,
+ ElOption,
+ ElDatePicker,
+ ElForm,
+ ElFormItem,
+} from 'element-plus'
+import { injectModel } from '@/libs/Provider/Provider'
+
+interface RenderTableType {
+ url?: string
+ dataSource: Ref<any[]>
+ isDrag?: boolean
+ isChecked?: boolean
+ isHidePagination?: boolean
+ params?: Record<string, any>
+ autoHeight?: boolean
+}
+
+export default defineComponent({
+ name: 'WmsMaterial',
+ directives: {
+ permission: vPermission,
+ },
+ setup(props, ctx) {
+ const {
+ dataSource,
+ contextMenu,
+ dialogConfig,
+ tableRef,
+ current,
+ search,
+ sort,
+ headers,
+ onError,
+ onSearch,
+ onRowClick,
+ onConfirmWmsMaterial,
+ onCheck,
+ onAddWmsMaterial,
+ onExport,
+ openDetail,
+ onSuccess,
+ onBeforeUpload,
+ } = useWmsMaterial(props, ctx)
+
+ // 鏂板鐨勬煡璇㈡潯浠�
+ const queryForm = ref({
+ materialCode: '',
+ materialName: '',
+ materialType: '',
+ purchaseType: '',
+ filter: '',
+ })
+
+ const queryParams = computed(() => ({
+ ...queryForm.value,
+ materialType: queryForm.value.materialType || '', // 澶勭悊涓嬫媺
+ purchaseType: queryForm.value.purchaseType || '',
+ }))
+
+ // 鍔ㄦ�佹灇涓鹃�夐」
+ const enumOptions = reactive({
+ materialType: [] as Array<{ label: string; value: any }>,
+ purchaseType: [] as Array<{ label: string; value: any }>,
+ isMainBranch: [] as Array<{ label: string; value: any }>,
+ })
+
+ // 鑾峰彇鏋氫妇鏁版嵁
+ const fetchEnumData = async () => {
+ try {
+ // 鑾峰彇鐗╂枡绫诲瀷鏋氫妇
+ const materialTypeData = await getWmsEnumData({
+ EnumName: 'MaterialTypeEnum',
+ })
+ enumOptions.materialType = materialTypeData.map((item) => ({
+ label: item.description,
+ value: item.value,
+ }))
+
+ // 鑾峰彇閲囪喘绫诲瀷鏋氫妇
+ const purchaseTypeData = await getWmsEnumData({
+ EnumName: 'PurchaseTypeEnum',
+ })
+ enumOptions.purchaseType = purchaseTypeData.map((item) => ({
+ label: item.description,
+ value: item.value,
+ }))
+ } catch (error) {
+ console.error('鑾峰彇鏋氫妇鏁版嵁澶辫触:', error)
+ }
+ }
+
+ // 缁勪欢鎸傝浇鏃惰幏鍙栨灇涓炬暟鎹�
+ onMounted(() => {
+ fetchEnumData()
+ })
+
+ // 鏂板鐨勬煡璇㈡柟娉�
+ const handleQuery = async () => {
+ console.log('鏌ヨ鏉′欢:', queryParams.value)
+ // tableRef.value.getTableList()
+ tableRef.value.getList(queryParams.value)
+ }
+
+ // 閲嶇疆鏌ヨ鏉′欢
+ const resetQuery = () => {
+ queryForm.value = {
+ materialCode: '',
+ materialName: '',
+ materialType: '',
+ purchaseType: '',
+ filter: '',
+ }
+ }
+
+ /**
+ * @returns 琛ㄦ牸
+ */
+ const RenderBaseTable = (props: RenderTableType) => {
+ const {
+ url,
+ dataSource,
+ isDrag,
+ isChecked,
+ isHidePagination,
+ params,
+ autoHeight,
+ } = props
+
+ return (
+ <div
+ class={{
+ [styles.wmsMaterialList]: true,
+ }}
+ >
+ <BaseTable
+ ref={tableRef}
+ url={url}
+ sortUrlTpl="/api/v1/hIAWms/wmsMaterial/{id}/adjustsort/{sort}"
+ v-model:dataSource={dataSource.value}
+ columns={columns}
+ contextMenu={contextMenu}
+ params={params}
+ isDrag={isDrag}
+ isChecked={isChecked}
+ autoHeight={autoHeight}
+ onCheck={onCheck}
+ onRowClick={onRowClick}
+ isHidePagination={isHidePagination}
+ pageSize={20}
+ v-slots={{
+ name: ({ row }: any) => {
+ return row?.name ? (
+ <TdButton
+ onClick={() => openDetail(row)}
+ text={<span style="color:#5a84ff">璇︽儏</span>}
+ icon="scale"
+ tip={row?.name}
+ hover
+ >
+ {row?.name}
+ </TdButton>
+ ) : (
+ '-'
+ )
+ },
+ }}
+ ></BaseTable>
+ </div>
+ )
+ }
+
+ return () => {
+ return (
+ <div class={styles.wmsMaterialContent}>
+ {/* 娣诲姞/缂栬緫 */}
+ <WmsMaterialDrawer
+ v-model={dialogConfig.visible}
+ title={dialogConfig.title}
+ row={current.value}
+ sort={sort.value}
+ onConfirm={onConfirmWmsMaterial}
+ />
+
+ {/* 鏂板鐨勬煡璇㈣〃鍗� */}
+ <ElForm
+ inline
+ model={queryForm.value}
+ class={styles.queryForm}
+ label-width="80px"
+ >
+ <ElFormItem label="鍏抽敭瀛�">
+ <ElInput
+ v-model={queryForm.value.filter}
+ placeholder="璇疯緭鍏ュ叧閿瓧鎼滅储"
+ clearable
+ class={styles.formItem}
+ />
+ </ElFormItem>
+ <ElFormItem label="鐗╂枡缂栫爜">
+ <ElInput
+ v-model={queryForm.value.materialCode}
+ placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�"
+ clearable
+ class={styles.formItem}
+ />
+ </ElFormItem>
+ <ElFormItem label="鐗╂枡鍚嶇О">
+ <ElInput
+ v-model={queryForm.value.materialName}
+ placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"
+ clearable
+ class={styles.formItem}
+ />
+ </ElFormItem>
+ <ElFormItem label="鐗╂枡绫诲瀷">
+ <ElSelect
+ v-model={queryForm.value.materialType}
+ placeholder="璇烽�夋嫨鐗╂枡绫诲瀷"
+ clearable
+ loading={enumOptions.materialType.length === 0}
+ class={styles.formItem}
+ >
+ {enumOptions.materialType.map((option) => (
+ <ElOption
+ key={option.value}
+ label={option.label}
+ value={option.value}
+ />
+ ))}
+ </ElSelect>
+ </ElFormItem>
+ <ElFormItem label="閲囪喘绫诲瀷">
+ <ElSelect
+ v-model={queryForm.value.purchaseType}
+ placeholder="璇烽�夋嫨閲囪喘绫诲瀷"
+ clearable
+ loading={enumOptions.purchaseType.length === 0}
+ class={styles.formItem}
+ >
+ {enumOptions.purchaseType.map((option) => (
+ <ElOption
+ key={option.value}
+ label={option.label}
+ value={option.value}
+ />
+ ))}
+ </ElSelect>
+ </ElFormItem>
+ {/* <ElFormItem label="鏃ユ湡鑼冨洿">
+ <ElDatePicker
+ v-model={queryForm.value.dateRange}
+ type="daterange"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ value-format="YYYY-MM-DD"
+ />
+ </ElFormItem> */}
+ <ElFormItem>
+ <IconButton type="primary" icon="search" onClick={handleQuery}>
+ 鏌ヨ
+ </IconButton>
+ <IconButton
+ style="margin-left: 10px;"
+ icon="refresh"
+ onClick={resetQuery}
+ >
+ 閲嶇疆
+ </IconButton>
+ </ElFormItem>
+ </ElForm>
+
+ <div class={styles.headerContent}>
+ <div class={styles.header}>
+ <IconButton
+ v-permission="wmsMaterial-add"
+ icon="add-p"
+ onClick={onAddWmsMaterial}
+ type="primary"
+ >
+ 娣诲姞
+ </IconButton>
+ <el-divider direction="vertical" />
+ <el-upload
+ v-permission="wmsMaterial-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/wmsMaterial/import"
+ >
+ <IconButton icon="in">瀵煎叆</IconButton>
+ </el-upload>
+
+ <IconButton
+ v-permission="wmsMaterial-output"
+ icon="out"
+ onClick={onExport}
+ >
+ 瀵煎嚭
+ </IconButton>
+ </div>
+ {/* <Search
+ placeholder="璇疯緭鍏ュ叧閿瓧"
+ v-model={search.value}
+ onConfirm={onSearch}
+ style={{ marginTop: '-1px' }}
+ /> */}
+ </div>
+
+ <RenderBaseTable
+ url="/api/v1/hIAWms/wmsMaterial/page"
+ dataSource={dataSource}
+ isChecked={true}
+ isDrag={true}
+ />
+ </div>
+ )
+ }
+ },
+})
--
Gitblit v1.9.3