From 9cc9187d1d56332ab06620ae5bce8a9d0d2045bd Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周四, 08 5月 2025 09:32:41 +0800
Subject: [PATCH] 增加 公共工具api
---
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx | 686 +++++++++++++++++++++++++++------------------------------
1 files changed, 324 insertions(+), 362 deletions(-)
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx"
index 455d508..688d922 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx"
@@ -1,362 +1,324 @@
-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 WmsMaterialQueryDrawer from '../Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer'
-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,
- dialogConfigForQuery,
- tableRef,
- current,
- search,
- sort,
- headers,
- onError,
- onSearch,
- onRowClick,
- onConfirmWmsMaterial,
- onCheck,
- onAddWmsMaterial,
- onAdvancedQuery,
- 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}
- />
- {/* 楂樼骇鏌ヨ */}
- <WmsMaterialQueryDrawer
- v-model={dialogConfigForQuery.visible}
- title={dialogConfigForQuery.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" />
- <IconButton
- v-permission="wmsMaterial-add"
- icon="add-p"
- onClick={onAdvancedQuery}
- 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>
- )
- }
- },
-})
+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 WmsMaterialQueryDrawer from '../Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer'
+import Search from '@/components/Search/Search'
+import { columns } from './Config'
+import TdButton from '@/components/TdButton/TdButton'
+import { vPermission } from '@/libs/Permission/Permission'
+import {
+ getWmsEnumData
+} 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,
+ dialogConfigForQuery,
+ tableRef,
+ current,
+ search,
+ sort,
+ headers,
+ onError,
+ onSearch,
+ onRowClick,
+ onConfirmWmsMaterial,
+ onCheck,
+ onAddWmsMaterial,
+ onAdvancedQuery,
+ onExport,
+ openDetail,
+ onSuccess,
+ onBeforeUpload,
+ } = useWmsMaterial(props, ctx)
+
+ //瀹氫箟楂樼骇鏌ヨ寮曠敤
+ const wmsMaterialQueryDrawerRef=ref(null);
+ // 鏂板鐨勬煡璇㈡潯浠�
+ const queryForm = ref({
+ searchVal: '',
+ str_searchFormInputAttrs:[]
+ })
+ //瀹氫箟鏁翠綋妯$硦鏌ヨ鐨勫垪鏁扮粍(娉ㄦ剰锛氬繀椤诲ぇ灏忓啓璺熷悗绔殑瀹炰綋绫诲睘鎬у悕涓�鑷达紝鍚﹀垯浼氬鑷村尮閰嶄笉瀵圭殑闂)
+ const _searchFormInputAttrs = ref([
+ 'MaterialCode', 'MaterialName', 'Remark'
+ ]);
+ const searchFormInputAttrs_Placeholder = ref('璇疯緭鍏ョ墿鏂欑紪鐮�/鐗╂枡鍚嶇О/澶囨敞');
+
+
+ // 鍔ㄦ�佹灇涓鹃�夐」
+ const enumOptions = reactive({
+ purchaseType: [] as Array<{label: string; value: any }>,
+materialType: [] as Array<{label: string; value: any }>,
+isMainBranch: [] as Array<{label: string; value: any }>,
+ })
+
+ // 鑾峰彇鏋氫妇鏁版嵁
+ const fetchEnumData = async () => {
+ try {
+ const purchaseTypeEnumData = await getWmsEnumData({
+ EnumName: 'PurchaseTypeEnum',
+})
+enumOptions.purchaseType = purchaseTypeEnumData.map((item) => ({
+ label: item.description,
+ value: item.value,
+}))
+const materialTypeEnumData = await getWmsEnumData({
+ EnumName: 'MaterialTypeEnum',
+})
+enumOptions.materialType = materialTypeEnumData.map((item) => ({
+ label: item.description,
+ value: item.value,
+}))
+const yesNoEnumData = await getWmsEnumData({
+ EnumName: 'YesNoEnum',
+})
+enumOptions.isMainBranch = yesNoEnumData.map((item) => ({
+ label: item.description,
+ value: item.value,
+}))
+
+ } catch (error) {
+ console.error('鑾峰彇鏋氫妇鏁版嵁澶辫触:', error)
+ }
+ }
+
+ // 缁勪欢鎸傝浇鏃惰幏鍙栨灇涓炬暟鎹�
+ onMounted(() => {
+ fetchEnumData()
+ })
+
+ // 瀹氫箟鍝嶅簲寮忔煡璇㈡暟鎹�
+ 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;
+ }
+
+
+ /**
+ * @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}
+ />
+ {/* 楂樼骇鏌ヨ */}
+ <WmsMaterialQueryDrawer
+ ref="wmsMaterialQueryDrawerRef"
+ v-model={dialogConfigForQuery.visible}
+ title={dialogConfigForQuery.title}
+ row={current.value}
+ sort={sort.value}
+ onConfirmQuery={handleQuery}
+ onRestQuery={resetQuery}
+ onClose={closeQuery}
+ />
+
+ <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-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={handleExport}
+ >
+ 瀵煎嚭
+ </IconButton>
+ </div>
+ <ElFormItem style={{ marginTop: '15px' }}>
+ <ElFormItem label="鍏抽敭瀛�">
+ <ElInput
+ v-model={queryForm.value.searchVal}
+ placeholder={searchFormInputAttrs_Placeholder.value}
+ clearable
+ class={styles.formItem}
+ />
+ </ElFormItem>
+ <IconButton type="primary" icon="search" onClick={handleQueryForMain}>
+ 鏌ヨ
+ </IconButton>
+ {/* <IconButton style="" icon="refresh" onClick={resetQuery}>
+ 閲嶇疆
+ </IconButton> */}
+ <IconButton
+ v-permission="wmsMaterial-add"
+ icon="search"
+ onClick={onAdvancedQuery}
+ type="primary"
+ >
+ 楂樼骇鏌ヨ
+ </IconButton>
+ </ElFormItem>
+ </div>
+
+ <RenderBaseTable
+ url="/api/v1/HIAWms/wmsMaterial/page"
+ dataSource={dataSource}
+ isChecked={true}
+ isDrag={true}
+ />
+ </div>
+ )
+ }
+ },
+})
--
Gitblit v1.9.3