From 98749f73549cbbb1eb1db0916f3f2073e006384e Mon Sep 17 00:00:00 2001 From: zs <zhousong@weben-smart.com> Date: 周三, 30 4月 2025 19:47:32 +0800 Subject: [PATCH] 托盘管理 --- HIAWms/web/src/widgets/WmsContainer/Models/Service/WmsContainerDrawer.ts | 8 + HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/Config.ts | 20 +- HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs | 13 + HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.tsx | 140 +++++++++++++++- HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs | 16 ++ HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs | 32 +++ HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.tsx | 153 +++++++++++++++++++ HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs | 1 HIAWms/web/src/widgets/WmsContainer/Views/Pages/Dialog/WmsContainerDrawer/WmsContainerDrawer.tsx | 2 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs | 22 ++ HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.module.scss | 39 ++++ 12 files changed, 411 insertions(+), 39 deletions(-) diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs index f7ae976..0380c5e 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs @@ -1,3 +1,4 @@ +using CMS.Plugin.HIAWms.Domain.Shared.Enums; using Volo.Abp.Application.Dtos; namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers; @@ -16,4 +17,19 @@ /// Gets or sets the name. /// </summary> public string Name { get; set; } + + /// <summary> + /// 鎵樼洏缂栧彿 + /// </summary> + public string ContainerNo { get; set; } + + /// <summary> + /// 鎵樼洏绫诲瀷 + /// </summary> + public ContainerTypeEnum ContainerType { get; set; } + + /// <summary> + /// 鎵樼洏鐘舵�� + /// </summary> + public ContainerStatusEnum ContainerStatus { get; set; } } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs index 2268c18..38c5b68 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs @@ -21,11 +21,33 @@ public ContainerTypeEnum ContainerType { get; set; } /// <summary> + /// 鎵樼洏绫诲瀷 + /// </summary> + public string ContainerTypeDesc + { + get + { + return GetEnumDescriptionUtil.GetEnumDescription(ContainerType); + } + } + + /// <summary> /// 鎵樼洏鐘舵�� /// </summary> public ContainerStatusEnum ContainerStatus { get; set; } /// <summary> + /// 鎵樼洏鐘舵�� + /// </summary> + public string ContainerStatusDesc + { + get + { + return GetEnumDescriptionUtil.GetEnumDescription(ContainerStatus); + } + } + + /// <summary> /// 闀垮害 /// </summary> public decimal? SpecLength { get; set; } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs index 7328599..eba8903 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs @@ -7,6 +7,7 @@ using Volo.Abp.Application.Dtos; using Volo.Abp.Data; using Volo.Abp.ObjectExtending; +using CMS.Plugin.HIAWms.Domain.Shared.Util; namespace CMS.Plugin.HIAWms.Application.Implements; @@ -41,8 +42,9 @@ } var specification = new WmsContainerSpecification(input.Name); - var count = await _wmscontainerRepository.GetCountAsync(input.Filter, specification); - var list = await _wmscontainerRepository.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification); + var container = ObjectMapper.Map < GetWmsContainersInput, WmsContainer>(input); + var count = await _wmscontainerRepository.GetCountAsync(container,input.Filter, specification); + var list = await _wmscontainerRepository.GetListAsync(container,input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification); return new PagedResultDto<WmsContainerDto>(count, ObjectMapper.Map<List<WmsContainer>, List<WmsContainerDto>>(list)); } @@ -158,7 +160,7 @@ /// <inheritdoc /> public virtual async Task AdjustSortAsync(Guid id, int sort) { - var list = await _wmscontainerRepository.GetListAsync(nameof(WmsContainer.Sort)); + var list = await _wmscontainerRepository.GetListAsync(null,nameof(WmsContainer.Sort)); if (list != null && list.Any()) { var initSort = 1; @@ -307,12 +309,13 @@ } var specification = new WmsContainerSpecification(input.Name); - var list = await _wmscontainerRepository.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification, includeDetails: true); + var container = ObjectMapper.Map<GetWmsContainersInput, WmsContainer>(input); + var list = await _wmscontainerRepository.GetListAsync(container,input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification, includeDetails: true); var result = ObjectMapper.Map<List<WmsContainer>, List<WmsContainerDto>>(list); var sheets = new Dictionary<string, object> { - ["閰嶇疆"] = result.Select(x => x.GetExportData()).ToList(), + ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result), }; var fileName = result.Count > 1 ? "WmsContainer鍒楄〃" : result.Count == 1 ? result.First()?.ContainerNo : "WmsContainer妯$増"; diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs index 9cf32b5..672037e 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs @@ -21,5 +21,6 @@ * into multiple profile classes for a better organization. */ CreateMap<WmsContainer, WmsContainerDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); CreateMap<WmsContainerCreateDto, WmsContainer>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); + CreateMap<GetWmsContainersInput, WmsContainer>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); } } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs index 56c006e..50b4374 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs @@ -41,7 +41,7 @@ /// <param name="includeDetails">if set to <c>true</c> [include details].</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns></returns> - Task<List<WmsContainer>> GetListAsync(string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsContainer> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default); + Task<List<WmsContainer>> GetListAsync(WmsContainer? container, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsContainer> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default); /// <summary> /// Gets the count asynchronous. @@ -50,5 +50,5 @@ /// <param name="specification">The specification.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns></returns> - Task<long> GetCountAsync(string filter = null, Specification<WmsContainer> specification = null, CancellationToken cancellationToken = default); + Task<long> GetCountAsync(WmsContainer? container, string filter = null, Specification<WmsContainer> specification = null, CancellationToken cancellationToken = default); } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs index dc4e77a..f42bc56 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs @@ -50,8 +50,19 @@ return sort + 1; } - /// <inheritdoc /> - public async Task<List<WmsContainer>> GetListAsync(string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsContainer> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default) + /// <summary> + /// 查询列表 + /// </summary> + /// <param name="container"></param> + /// <param name="sorting"></param> + /// <param name="maxResultCount"></param> + /// <param name="skipCount"></param> + /// <param name="filter"></param> + /// <param name="specification"></param> + /// <param name="includeDetails"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<List<WmsContainer>> GetListAsync(WmsContainer? container,string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsContainer> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default) { specification ??= new WmsContainerSpecification(); return await (await GetDbSetAsync()) @@ -59,18 +70,31 @@ .Where(specification.ToExpression()) .Where(x => !x.IsDeleted) .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.ContainerNo.Contains(filter)) + .WhereIf(!string.IsNullOrEmpty(container.ContainerNo),u=>u.ContainerNo.Contains(container.ContainerNo)) + .WhereIf(container.ContainerStatus>0, u=>u.ContainerStatus == u.ContainerStatus) + .WhereIf(container.ContainerType>0, u=>u.ContainerType == u.ContainerType) .OrderBy(sorting.IsNullOrEmpty() ? nameof(WmsContainer.Sort) : sorting) .PageBy(skipCount, maxResultCount) .ToListAsync(GetCancellationToken(cancellationToken)); } - /// <inheritdoc /> - public async Task<long> GetCountAsync(string filter = null, Specification<WmsContainer> specification = null, CancellationToken cancellationToken = default) + /// <summary> + /// 查询数量 + /// </summary> + /// <param name="container"></param> + /// <param name="filter"></param> + /// <param name="specification"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<long> GetCountAsync(WmsContainer? container, string filter = null, Specification<WmsContainer> specification = null, CancellationToken cancellationToken = default) { specification ??= new WmsContainerSpecification(); return await (await GetQueryableAsync()) .Where(specification.ToExpression()) .Where(x => !x.IsDeleted) + .WhereIf(!string.IsNullOrEmpty(container.ContainerNo), u => u.ContainerNo.Contains(container.ContainerNo)) + .WhereIf(container.ContainerStatus > 0, u => u.ContainerStatus == u.ContainerStatus) + .WhereIf(container.ContainerType > 0, u => u.ContainerType == u.ContainerType) .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.ContainerNo.Contains(filter)) .CountAsync(cancellationToken: GetCancellationToken(cancellationToken)); } diff --git a/HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.ts b/HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.tsx similarity index 62% rename from HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.ts rename to HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.tsx index 54066ec..f7f5228 100644 --- a/HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.ts +++ b/HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.tsx @@ -1,10 +1,20 @@ -import { ref, onMounted, reactive, computed, Ref, watch } from 'vue' +import { + ref, + onMounted, + reactive, + computed, + Ref, + watch, + SetupContext, + h, +} from 'vue' import { injectModel } from '@/libs/Provider/Provider' import { WmsContainerDrawer } from '../Models/WmsContainerDrawer' import { ElMessage } from 'element-plus' import isEqual from 'lodash/isEqual' import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' import { cloneDeep } from 'lodash' +import { getWmsEnumData } from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer' export const useWmsContainerDrawer = (props: any, ctx?: any) => { const wmsContainerDrawer = @@ -16,6 +26,18 @@ const formData = ref<Record<string, any>>({}) // ref const formRef = ref() + const disabled = ref(false) + + const inputNumber = (attrs) => { + return ( + <el-input-number + min="1" + step="1" + precision="0" + {...attrs} + ></el-input-number> + ) + } const current = computed(() => { return props.row || null @@ -44,11 +66,7 @@ prop: 'containerType', el: 'select', placeholder: '璇烽�夋嫨鎵樼洏绫诲瀷', - options: [ - { label: '绫诲瀷1', value: 0 }, - { label: '绫诲瀷2', value: 1 }, - // 娣诲姞鎵�鏈夋灇涓惧�� - ], + options: [], rules: [{ required: true, message: '璇烽�夋嫨鎵樼洏绫诲瀷', trigger: 'change' }], }, { @@ -56,17 +74,20 @@ prop: 'containerStatus', el: 'select', placeholder: '璇烽�夋嫨鎵樼洏鐘舵��', - options: [ - { label: '鐘舵��1', value: 0 }, - { label: '鐘舵��2', value: 1 }, - // 娣诲姞鎵�鏈夋灇涓惧�� - ], + options: [], rules: [{ required: true, message: '璇烽�夋嫨鎵樼洏鐘舵��', trigger: 'change' }], }, { label: '闀垮害(mm)', prop: 'specLength', - el: 'input', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', placeholder: '璇疯緭鍏ラ暱搴�', step: 0.01, precision: 2, @@ -74,7 +95,14 @@ { label: '瀹藉害(mm)', prop: 'specWidth', - el: 'input', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', placeholder: '璇疯緭鍏ュ搴�', step: 0.01, precision: 2, @@ -82,15 +110,74 @@ { label: '楂樺害(mm)', prop: 'specHeight', - el: 'input', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', placeholder: '璇疯緭鍏ラ珮搴�', step: 0.01, precision: 2, }, { + label: '闄愰暱(mm)', + prop: 'limitLength', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + placeholder: '璇疯緭鍏ヨ浇閲嶄笂闄�', + step: 0.1, + precision: 2, + }, + { + label: '闄愬(mm)', + prop: 'limitWidth', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + placeholder: '璇疯緭鍏ヨ浇閲嶄笂闄�', + step: 0.1, + precision: 2, + }, + { + label: '闄愰珮(mm)', + prop: 'limitHeight', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + placeholder: '璇疯緭鍏ヨ浇閲嶄笂闄�', + step: 0.1, + precision: 2, + }, + { label: '杞介噸涓婇檺(kg)', prop: 'maxWeight', - el: 'input', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', placeholder: '璇疯緭鍏ヨ浇閲嶄笂闄�', step: 0.1, precision: 2, @@ -168,10 +255,31 @@ }, } } + + const updateFormItemOptions = (propName: string, enumData: any[]) => { + const item = formItems.find((item) => item.prop === propName) + if (item && enumData) { + item.options = enumData.map((item) => ({ + label: item.description, + value: item.value, + })) + } + } + /** * 寮圭獥鎵撳紑鑾峰彇璇︽儏 */ const onOpen = async () => { + const containerTypeEnum = await getWmsEnumData({ + EnumName: 'ContainerTypeEnum', + }) + updateFormItemOptions('containerType', containerTypeEnum) + + const containerStatusEnum = await getWmsEnumData({ + EnumName: 'ContainerStatusEnum', + }) + updateFormItemOptions('containerStatus', containerStatusEnum) + if (current.value) { const res = await wmsContainerDrawer.getWmsContainerDetail(current.value) @@ -190,8 +298,10 @@ id: res.id, } updateCheckData() + disabled.value = true } else { formData.value = {} + disabled.value = false updateCheckData() } } diff --git a/HIAWms/web/src/widgets/WmsContainer/Models/Service/WmsContainerDrawer.ts b/HIAWms/web/src/widgets/WmsContainer/Models/Service/WmsContainerDrawer.ts index 6fbadfb..af31ea3 100644 --- a/HIAWms/web/src/widgets/WmsContainer/Models/Service/WmsContainerDrawer.ts +++ b/HIAWms/web/src/widgets/WmsContainer/Models/Service/WmsContainerDrawer.ts @@ -24,3 +24,11 @@ export const updateWmsContainer = (id: string, data: Record<string, any>) => { return request.put(`/api/v1/HIAWms/wmsContainer/${id}`, data) } + +/** + * 鑾峰彇鏋氫妇 + * @returns + */ +export const getWmsEnumData = (data: any) => { + return request.post('/api/v1/hIAWms/WmsEnum', data) +} diff --git a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/Dialog/WmsContainerDrawer/WmsContainerDrawer.tsx b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/Dialog/WmsContainerDrawer/WmsContainerDrawer.tsx index a808dc9..007ea00 100644 --- a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/Dialog/WmsContainerDrawer/WmsContainerDrawer.tsx +++ b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/Dialog/WmsContainerDrawer/WmsContainerDrawer.tsx @@ -1,7 +1,7 @@ import { SetupContext, defineComponent } from 'vue' import BaseDrawer from '@/components/BaseDrawer/BaseDrawer' import styles from './WmsContainerDrawer.module.scss' -import { useWmsContainerDrawer } from '../../../../Controllers/WmsContainerDrawer' +import { useWmsContainerDrawer } from '../../../../Controllers/WmsContainerDrawer.tsx' import DyForm from '@/components/DyForm/DyForm' // @ts-ignore diff --git a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/Config.ts b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/Config.ts index e533c6f..0689813 100644 --- a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/Config.ts +++ b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/Config.ts @@ -9,11 +9,11 @@ title: '鎵樼洏缂栧彿', }, { - field: 'containerType', + field: 'containerTypeDesc', title: '鎵樼洏绫诲瀷', }, { - field: 'containerStatus', + field: 'containerStatusDesc', title: '鎵樼洏鐘舵��', }, { @@ -44,14 +44,14 @@ field: 'maxWeight', title: '杞介噸涓婇檺', }, - { - field: 'exceptionNumber', - title: '寮傚父鏁伴噺', - }, - { - field: 'materialNumber', - title: '鐗╂枡鏁伴噺', - }, + // { + // field: 'exceptionNumber', + // title: '寮傚父鏁伴噺', + // }, + // { + // field: 'materialNumber', + // title: '鐗╂枡鏁伴噺', + // }, { field: 'remark', title: '澶囨敞', diff --git a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.module.scss b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.module.scss index 7bc2c27..a3049f6 100644 --- a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.module.scss +++ b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.module.scss @@ -1,6 +1,6 @@ .wmsContainerContent { width: 100%; - height: 100%; + height: 90%; .wmsContainerList { width: 100%; @@ -75,3 +75,40 @@ .hideBlock { display: none; } + +.queryForm { + padding: 10px; + background: #f5f7fa; + margin-bottom: 0px; + border-radius: 4px; + + .el-form-item { + margin-right: 20px; + margin-bottom: 0; + + // 缁熶竴杈撳叆妗嗗拰閫夋嫨妗嗙殑瀹藉害 + .el-input, .el-select { + width: 200px; // 璁剧疆缁熶竴鐨勫搴� + } + + // 閫夋嫨妗嗗唴閮ㄨ緭鍏ユ鏍峰紡 + .el-select .el-input__wrapper { + height: 32px; // 涓庤緭鍏ユ楂樺害涓�鑷� + padding: 1px 11px; // 涓庤緭鍏ユ鍐呰竟璺濅竴鑷� + } + + // 鏃ユ湡閫夋嫨鍣ㄥ搴� + .el-date-editor { + width: 220px; + } + } +} + +// 濡傛灉闇�瑕佹洿绮剧‘鐨勬帶鍒讹紝鍙互鍗曠嫭璁剧疆 +.formItem { + width: 200px; + + &.el-input, &.el-select { + width: 100%; + } +} \ No newline at end of file diff --git a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.tsx b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.tsx index 3ae58c2..62624bf 100644 --- a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.tsx +++ b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.tsx @@ -1,4 +1,4 @@ -import { defineComponent } from 'vue' +import { computed, defineComponent, onMounted, reactive, ref } from 'vue' import type { Ref } from 'vue' import BaseTable from '@/components/Table/Table' import styles from './WmsContainer.module.scss' @@ -9,6 +9,8 @@ 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 { ElForm, ElFormItem, ElInput, ElOption, ElSelect } from 'element-plus' interface RenderTableType { url?: string @@ -46,6 +48,73 @@ onSuccess, onBeforeUpload, } = useWmsContainer(props, ctx) + + // 鏂板鐨勬煡璇㈡潯浠� + const queryForm = ref({ + containerNo: '', + containerType: '', + containerStatus: '', + filter: '', + }) + + const queryParams = computed(() => ({ + ...queryForm.value, + containerType: queryForm.value.containerType || '', // 澶勭悊涓嬫媺 + containerStatus: queryForm.value.containerStatus || '', + })) + + // 鍔ㄦ�佹灇涓鹃�夐」 + const enumOptions = reactive({ + containerType: [] as Array<{ label: string; value: any }>, + containerStatus: [] 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 containerStatusData = await getWmsEnumData({ + EnumName: 'ContainerStatusEnum', + }) + enumOptions.containerStatus = containerStatusData.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 = { + containerNo: '', + containerType: '', + containerStatus: '', + filter: '', + } + } /** * @returns 琛ㄦ牸 @@ -114,6 +183,88 @@ sort={sort.value} onConfirm={onConfirmWmsContainer} /> + + {/* 鏂板鐨勬煡璇㈣〃鍗� */} + <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.containerNo} + placeholder="璇疯緭鍏ユ墭鐩樼紪鐮�" + clearable + class={styles.formItem} + /> + </ElFormItem> + <ElFormItem label="鐗╂枡绫诲瀷"> + <ElSelect + v-model={queryForm.value.containerType} + placeholder="璇烽�夋嫨鎵樼洏绫诲瀷" + clearable + loading={enumOptions.containerType.length === 0} + class={styles.formItem} + > + {enumOptions.containerType.map((option) => ( + <ElOption + key={option.value} + label={option.label} + value={option.value} + /> + ))} + </ElSelect> + </ElFormItem> + <ElFormItem label="鎵樼洏鐘舵��"> + <ElSelect + v-model={queryForm.value.containerStatus} + placeholder="璇烽�夋嫨鎵樼洏鐘舵��" + clearable + loading={enumOptions.containerStatus.length === 0} + class={styles.formItem} + > + {enumOptions.containerStatus.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 -- Gitblit v1.9.3