From eec109948cb1911bf3310ef873b256ba6ee0d77c Mon Sep 17 00:00:00 2001 From: zs <zhousong@weben-smart.com> Date: 周四, 08 5月 2025 10:31:33 +0800 Subject: [PATCH] 出入库单据及详情 --- HIAWms/hiawms_web/src/widgets/WmsMaterialContainer/Views/WmsMaterialContainer.tsx | 160 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderDto.cs | 191 + HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsInOutStockOrder导出模板.xlsx | 0 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailCreateOrUpdateDtoBase.cs | 85 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/WmsInOutStockOrder.module.scss | 7 HIAWms/hiawms_web/src/widgets/WmsMaterialContainer/Views/Pages/WmsMaterialContainer/WmsMaterialContainer.tsx | 4 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/WmsInOutStockOrderQueryDrawer.tsx | 381 +++ HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/Service/WmsInOutStockOrderDetailDrawer.ts | 34 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/enum.ts | 15 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/WmsInOutStockOrderDetail.ts | 275 ++ HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/WmsInOutStockOrder/Config.ts | 81 HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockOrderDetailController.cs | 188 + HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/WmsInOutStockOrderDetailQueryDrawer.tsx | 279 ++ HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordDrawer.tsx | 4 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/File.ts | 31 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockOrderAppService.cs | 450 +++ HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/WmsInOutStockOrder.ts | 275 ++ HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/WmsInOutStockOrderQueryDrawer.ts | 44 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailExportModel.cs | 91 HIAWms/hiawms_web/src/config/menu.ts | 28 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/WmsInOutStockOrderDetailDrawer.ts | 44 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/config/WmsInOutStockOrderDetail.json | 3 Weben_CMS专用代码生成器/Code/File/GenerateCodeConfigParamFiles/出入库单据.txt | 12 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrdersImportModel.cs | 33 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.module.scss | 113 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderCreateOrUpdateDtoBase.cs | 115 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrder/IWmsInOutStockOrderRepository.cs | 53 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrderDetail/IWmsInOutStockOrderDetailRepository.cs | 53 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/Service/WmsInOutStockOrderQueryDrawer.ts | 35 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/Service/WmsInOutStockOrderDetail.ts | 30 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailsImportModel.cs | 33 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/WmsInOutStockOrderDrawer.ts | 44 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/config/WmsInOutStockOrder.json | 3 HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockOrderRepository.cs | 113 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/index.ts | 14 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/WmsInOutStockOrderDetail.ts | 41 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/GetWmsInOutStockOrderDetailInput.cs | 221 + HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/File.ts | 31 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockOrderDetailAppService.cs | 426 +++ HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/WmsInOutStockOrderDetail/Config.ts | 55 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/GetWmsInOutStockOrderInput.cs | 279 ++ HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/WmsInOutStockOrderDetailDrawer.tsx | 293 ++ HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderQueryDrawer/WmsInOutStockOrderQueryDrawer.tsx | 71 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/WmsInOutStockOrderDetailQueryDrawer.ts | 44 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/WmsInOutStockOrderDetail.tsx | 80 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/Service/WmsInOutStockOrder.ts | 30 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderDrawer/WmsInOutStockOrderDrawer.tsx | 61 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/index.ts | 14 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailQueryDrawer/WmsInOutStockOrderDetailQueryDrawer.tsx | 71 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailQueryDrawer/WmsInOutStockOrderDetailQueryDrawer.module.scss | 3 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/WmsInOutStockOrder/WmsInOutStockOrder.module.scss | 113 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockOrderDetailAppService.cs | 46 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/WmsInOutStockOrderDetail.module.scss | 7 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailDto.cs | 141 + HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/enum.ts | 15 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/WmsInOutStockOrderDrawer.tsx | 387 +++ HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordQueryDrawer.tsx | 4 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockOrderAppService.cs | 46 HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/Config.ts | 2 HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockOrderController.cs | 188 + HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderExportModel.cs | 127 + HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderDrawer/WmsInOutStockOrderDrawer.module.scss | 3 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/WmsInOutStockOrder/WmsInOutStockOrder.tsx | 349 ++ HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderUpdateDto.cs | 13 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/Service/WmsInOutStockOrderDetailQueryDrawer.ts | 35 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.tsx | 362 ++ HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockOrderDetailRepository.cs | 113 Weben_CMS专用代码生成器/Code/File/GenerateCodeConfigParamFiles/出入库单据详情.txt | 12 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/WmsInOutStockOrder.tsx | 80 HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockOrderAutoMapperProfile.cs | 26 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailDrawer/WmsInOutStockOrderDetailDrawer.tsx | 61 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/type/type.d.ts | 45 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailDrawer/WmsInOutStockOrderDetailDrawer.module.scss | 3 HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockOrderDetailAutoMapperProfile.cs | 26 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/WmsInOutStockOrder.ts | 41 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrder/WmsInOutStockOrder.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailCreateDto.cs | 17 HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsInOutStockOrderDetail导出模板.xlsx | 0 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/type/type.d.ts | 45 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderCreateDto.cs | 17 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailUpdateDto.cs | 13 Weben_CMS专用代码生成器/Code/Templete/Web/Controllers/EntityModeDrawer模板.txt | 22 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/Service/WmsInOutStockOrderDrawer.ts | 34 HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderQueryDrawer/WmsInOutStockOrderQueryDrawer.module.scss | 3 85 files changed, 7,341 insertions(+), 100 deletions(-) diff --git a/HIAWms/hiawms_web/src/config/menu.ts b/HIAWms/hiawms_web/src/config/menu.ts index 7b4d571..d37ebda 100644 --- a/HIAWms/hiawms_web/src/config/menu.ts +++ b/HIAWms/hiawms_web/src/config/menu.ts @@ -35,6 +35,20 @@ "notPage": false }, { + "name": "鍑哄叆搴撳崟鎹鎯�", + "path": "/information-base/WmsInOutStockOrderDetail", + "patchName": "WmsInOutStockOrderDetail", + "icon": "p", + "notPage": false + }, + { + "name": "鍑哄叆搴撳崟鎹�", + "path": "/information-base/WmsInOutStockOrder", + "patchName": "WmsInOutStockOrder", + "icon": "p", + "notPage": false + }, + { "name": "Wms鎵樼洏绠$悊", "path": "/information-base/WmsContainer", "patchName": "WmsContainer", @@ -92,6 +106,20 @@ "icon": "p", "notPage": false }, + "WmsInOutStockOrderDetail": { + "name": "鍑哄叆搴撳崟鎹鎯�", + "path": "/information-base/WmsInOutStockOrderDetail", + "patchName": "WmsInOutStockOrderDetail", + "icon": "p", + "notPage": false + }, + "WmsInOutStockOrder": { + "name": "鍑哄叆搴撳崟鎹�", + "path": "/information-base/WmsInOutStockOrder", + "patchName": "WmsInOutStockOrder", + "icon": "p", + "notPage": false + }, "WmsContainer": { "name": "Wms鎵樼洏绠$悊", "path": "/information-base/WmsContainer", diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/File.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/File.ts new file mode 100644 index 0000000..9162fef --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/File.ts @@ -0,0 +1,31 @@ +import { importFileToService, exportFileToClient } from '@/api/file' +import { ElMessage } from 'element-plus' +import { downloadFile } from '@/utils' +import dayjs from 'dayjs' + +export const useFile = () => { + /** + * 瀵煎叆鏂囦欢 + * @param url + */ + const importFile = async (url: string, file: File) => { + const formData = new FormData() + formData.append('file', file) + await importFileToService(url, formData) + ElMessage('瀵煎叆鎴愬姛') + } + /** + * 瀵煎嚭鏂囦欢 + * @param url + */ + const exportFile = async (url: string, params: any, name: string) => { + const res = await exportFileToClient(url, params) + downloadFile(res, `${name}_${dayjs().format('YYYYMMDDHHMMss')}.xlsx`) + ElMessage.success('瀵煎嚭鎴愬姛') + } + + return { + importFile, + exportFile, + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/WmsInOutStockOrder.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/WmsInOutStockOrder.ts new file mode 100644 index 0000000..17cd8a6 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/WmsInOutStockOrder.ts @@ -0,0 +1,275 @@ +import { ref, onMounted, reactive, Ref, nextTick, computed } from 'vue' +import { injectModel } from '@/libs/Provider/Provider' +import { WmsInOutStockOrder } from '../Models/WmsInOutStockOrder' +import { ElMessage } from 'element-plus' +import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' +import { useFile } from './File' + +interface CurrentType { + row: any + index: number +} +export const useWmsInOutStockOrder = (props: any, ctx?: any) => { + const wmsInOutStockOrder = injectModel<WmsInOutStockOrder>('wmsInOutStockOrder') + const { exportFile } = useFile() + /** + * 澶撮儴閰嶇疆 + */ + const headers = ref({}) + /** + * 鍔ㄦ�佸垪閰嶇疆 + */ + const wmsInOutStockOrderColumns = ref<Record<string, any>>([]) + /** + * 鎼滅储鍊� + */ + const search = ref('') + + /** + * 鎺掑簭 + */ + const sort = ref(0) + /** + * 閫夋嫨椤� + */ + const selection = ref([]) + /** + * 褰撳墠閫変腑鐨勮 + */ + const current = ref<any>(null) + /** + * 鏁版嵁婧� + */ + const dataSource: Ref<any[]> = ref([]) + + /** + * 琛ㄦ牸 + */ + const tableRef = ref() + const dialogConfig = reactive({ + visible: false, + title: '', + isAdd: false, + }) + const dialogConfigForQuery = reactive({ + visible: false, + title: '', + isAdd: false, + }) + + + const dialogSettingConfig = reactive({ + visible: false, + title: '', + }) + + /** + * 鍒嗛〉鏁版嵁 + */ + const paginationParams = ref({}) + + /** + * 鎵撳紑璇︽儏 + * @param row + */ + const openDetail = (row: any) => { + current.value = row + dialogConfig.visible = true + dialogConfig.title = row.name + dialogConfig.isAdd = false + sort.value = row.sort + } + + const contextMenu = [ + { + label: '灞曞紑璇︽儏', + fn: (c: CurrentType) => { + current.value = null + sort.value = c.row.sort + nextTick(() => openDetail(c.row)) + }, + divided: true, + icon: 'o', + }, + // { + // label: '鍚戜笂娣诲姞', + // fn: (c: CurrentType, pageNum: number) => { + // current.value = null + // sort.value = c.index + 1 + (pageNum - 1) * 50 + // dialogConfig.visible = true + // dialogConfig.title = '娣诲姞' + // dialogConfig.isAdd = false + // }, + // divided: true, + // icon: 'up', + // }, + // { + // label: '鍚戜笅娣诲姞', + // fn: (c: CurrentType, pageNum: number) => { + // current.value = null + // sort.value = c.index + 2 + (pageNum - 1) * 50 + // dialogConfig.visible = true + // dialogConfig.title = '娣诲姞' + // dialogConfig.isAdd = false + // }, + // divided: true, + // icon: 'down', + // }, + // { + // label: '鍒涘缓鍓湰', + // fn: async ({ row }: CurrentType) => { + // await wmsInOutStockOrder.cloneData([row.id]) + // ElMessage.success('鍒涘缓鍓湰鎴愬姛') + // tableRef.value?.getList() + // }, + // divided: true, + // icon: 'copy', + // }, + { + label: '鍒犻櫎', + fn: async (c: CurrentType) => { + const names = selection.value.map((item: { orderNo: string }) => item.orderNo) + ConfirmBox( + `鏄惁鍒犻櫎${names.length ? names.join(',') : c.row.orderNo}` + ).then(async () => { + const ids = selection.value.map((item: { id: string }) => item.id) + await wmsInOutStockOrder.deleteWmsInOutStockOrders(ids.length ? ids : [c.row.id]) + ElMessage.success('鍒犻櫎鎴愬姛') + tableRef.value.getList() + }) + }, + icon: 'close', + }, + ] + + const onCheck = (records: any) => { + selection.value = records + } + + const onAddWmsInOutStockOrder = () => { + const params = tableRef.value?.getPaginationParams() + current.value = null + dialogConfig.visible = true + dialogConfig.isAdd = true + dialogConfig.title = '娣诲姞' + sort.value = params.totalCount + 1 + } + + //鐐瑰嚮鎸夐挳銆愰珮绾ф煡璇€�� + const onAdvancedQuery = () => { + const params = tableRef.value?.getPaginationParams() + current.value = null + dialogConfigForQuery.visible = true + dialogConfigForQuery.isAdd = true + dialogConfigForQuery.title = '楂樼骇鏌ヨ' + } + + const onConfirmWmsInOutStockOrder = async () => { + dialogConfig.visible = false + if (dialogConfig.isAdd) { + tableRef.value?.scrollToRow({ + skip: true, + }) + } else { + await tableRef.value?.getList() + } + } + /** + * 琛岀偣鍑绘椂鏇存柊current + */ + const onRowClick = ({ row }: any) => { + if (dialogConfig.visible && current.value) { + current.value = row + } + } + /** + * 瀵煎嚭 + */ + const onExport = (data={}) => { + //const params = tableRef.value?.getParams() + exportFile('/api/v1/HIAWms/wmsInOutStockOrder/export', data, 'wmsInOutStockOrder') + } + + /** + * 鍏抽敭瀛楁悳绱� + */ + const onSearch = () => { + tableRef.value?.getList({ + Filter: search.value, + }) + } + + /** + * 閲嶇疆琛ㄦ牸鏁版嵁 + */ + const reloadList = () => { + tableRef.value?.getList() + } + /** + * 涓婁紶鎴愬姛 + */ + const onSuccess = () => { + tableRef.value?.getList() + ElMessage.success('瀵煎叆鎴愬姛') + } + /** + * 澶辫触 + * @param err + */ + const onError = (err: any) => { + try { + const message = JSON.parse(err.message) + ElMessage.error(message.msg) + } catch (error) { + ElMessage.error('瀵煎叆澶辫触') + } + } + /** + * 涓婁紶閽╁瓙 + */ + const onBeforeUpload = (file: File) => { + const format = ['xlsx', 'xls', 'csv'] + if (!format.includes(file.name.split('.')[1])) { + ElMessage.error('瀵煎叆鏂囦欢鏍煎紡涓嶆纭紝璇峰鍏�.xlsx/.xls涓�.csv鏍煎紡鐨勬枃浠�') + return false + } + return true + } + + onMounted(() => { + headers.value = { + Authorization: `Bearer ${sessionStorage.getItem('Token')}`, + 'X-Project': sessionStorage.getItem('X-Project'), + } + }) + + ctx.expose({ + reloadList, + }) + + return { + dataSource, + contextMenu, + dialogConfig, + dialogConfigForQuery, + dialogSettingConfig, + tableRef, + current, + search, + sort, + wmsInOutStockOrderColumns, + paginationParams, + headers, + onBeforeUpload, + onError, + onSuccess, + openDetail, + onSearch, + onExport, + onRowClick, + onConfirmWmsInOutStockOrder, + onCheck, + onAddWmsInOutStockOrder, + onAdvancedQuery + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/WmsInOutStockOrderDrawer.tsx b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/WmsInOutStockOrderDrawer.tsx new file mode 100644 index 0000000..10e4804 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/WmsInOutStockOrderDrawer.tsx @@ -0,0 +1,387 @@ +import { + ref, + onMounted, + reactive, + computed, + Ref, + watch, + SetupContext, + h, +} from 'vue' +import { injectModel } from '@/libs/Provider/Provider' +import { WmsInOutStockOrderDrawer } from '../Models/WmsInOutStockOrderDrawer' +import { ElMessage } from 'element-plus' +import isEqual from 'lodash/isEqual' +import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' +import { cloneDeep } from 'lodash' + +export const useWmsInOutStockOrderDrawer = (props: any, ctx?: any) => { + const wmsInOutStockOrderDrawer = injectModel<WmsInOutStockOrderDrawer>( + 'wmsInOutStockOrderDrawer' + ) + /** + * 鐢ㄦ潵瀵规瘮鐨勫垵濮嬪寲鏁版嵁 + */ + const initiateData: Ref<Record<string, any>> = ref({}) + const formData = ref<Record<string, any>>({}) + // ref + const formRef = ref() + + const disabled = ref(false) + + const current = computed(() => { + return props.row || null + }) + + const datePicker = (attrs) => { + return ( + <el-date-picker + type="date" + format="YYYY-MM-DD HH:mm:ss" + formatValue="YYYY-MM-DD HH:mm:ss" + {...attrs} + ></el-date-picker> + ) + } + const inputNumber = (attrs) => { + return ( + <el-input-number + min="" + step="1" + precision="0" + {...attrs} + ></el-input-number> + ) + } + + const dateTimePicker = (attrs) => { + return ( + <el-date-picker + type="datetime" + format="YYYY-MM-DD HH:mm:ss" + formatValue="YYYY-MM-DD HH:mm:ss" + {...attrs} + ></el-date-picker> + ) + } + + const visible = computed({ + get() { + return props.modelValue + }, + set(val) { + ctx.emit('update:modelValue', val) + }, + }) + /** + * 娣诲姞鐨刦orm瀛楁 + */ + const formItems = reactive([ + { + label: '鍗曟嵁缂栧彿', + prop: 'orderNo', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ崟鎹紪鍙�', + rules: [{ required: true, message: '鍗曟嵁缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }], + }, + { + label: '鍗曟嵁鐘舵��', + prop: 'orderStatus', + el: 'select', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ崟鎹姸鎬�', + rules: [{ required: true, message: '鍗曟嵁鐘舵�佷笉鑳戒负绌�', trigger: 'blur' }], + }, + { + label: '鐗╂枡鍚嶇О', + prop: 'materialName', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欏悕绉�', + }, + { + label: '鐗╂枡浠跺彿', + prop: 'materialNo', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欎欢鍙�', + rules: [{ required: true, message: '鐗╂枡浠跺彿涓嶈兘涓虹┖', trigger: 'blur' }], + }, + { + label: '鍨嬪彿', + prop: 'materialModel', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ瀷鍙�', + }, + { + label: '鎵规鍙�', + prop: 'materialBatch', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ユ壒娆″彿', + rules: [{ required: true, message: '鎵规鍙蜂笉鑳戒负绌�', trigger: 'blur' }], + }, + { + label: '鍗曟嵁绫诲瀷', + prop: 'orderType', + el: 'select', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ崟鎹被鍨�', + rules: [{ required: true, message: '鍗曟嵁绫诲瀷涓嶈兘涓虹┖', trigger: 'blur' }], + }, + { + label: '鎿嶄綔绫诲瀷锛堟灇涓惧�硷級', + prop: 'stockType', + el: 'select', + //disabled: disabled, + placeholder: '璇疯緭鍏ユ搷浣滅被鍨嬶紙鏋氫妇鍊硷級', + rules: [ + { + required: true, + message: '鎿嶄綔绫诲瀷锛堟灇涓惧�硷級涓嶈兘涓虹┖', + trigger: 'blur', + }, + ], + }, + { + label: '鍗曟嵁鏁伴噺', + prop: 'materialNumber', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏ュ崟鎹暟閲�', + rules: [{ required: true, message: '鍗曟嵁鏁伴噺涓嶈兘涓虹┖', trigger: 'blur' }], + }, + { + label: '涓嬪彂鏁伴噺', + prop: 'distributeNumber', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏ヤ笅鍙戞暟閲�', + rules: [{ required: true, message: '涓嬪彂鏁伴噺涓嶈兘涓虹┖', trigger: 'blur' }], + }, + { + label: '瀹屾垚鏁伴噺', + prop: 'completeNumber', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏ュ畬鎴愭暟閲�', + rules: [{ required: true, message: '瀹屾垚鏁伴噺涓嶈兘涓虹┖', trigger: 'blur' }], + }, + { + label: '浼樺厛绾�', + prop: 'priority', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏ヤ紭鍏堢骇', + rules: [{ required: true, message: '浼樺厛绾т笉鑳戒负绌�', trigger: 'blur' }], + }, + { + label: '鍏宠仈璁″垝缂栧彿', + prop: 'planNo', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ叧鑱旇鍒掔紪鍙�', + }, + { + label: '鎿嶄綔鏃堕棿', + prop: 'operateTime', + el: (props: any, { attrs }: SetupContext) => { + return h(dateTimePicker, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + //disabled: disabled, + placeholder: '璇疯緭鍏ユ搷浣滄椂闂�', + }, + { + label: '澶囨敞', + prop: 'remark', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ娉�', + }, + ]) + /** + * 鏍¢獙鏄惁鏈夋暟鎹彉鍖� + */ + const checkIsEqualObject = () => { + const data = { + formData: formData.value, + } + const check = isEqual(initiateData.value, data) + return check + } + + const onClose = (done: () => void) => { + if (visible.value) { + if (checkIsEqualObject()) { + visible.value = false + done && done() + } else { + ConfirmBox('鏄惁淇濆瓨璁剧疆锛�') + .then(() => { + onConfirm() + }) + .catch(() => { + visible.value = false + done && done() + }) + } + } + } + /** + * 淇濆瓨 + */ + const onConfirm = async () => { + await formRef.value?.validate() + const data = { + orderNo: formData.value.orderNo, + orderStatus: formData.value.orderStatus, + materialName: formData.value.materialName, + materialNo: formData.value.materialNo, + materialModel: formData.value.materialModel, + materialBatch: formData.value.materialBatch, + orderType: formData.value.orderType, + stockType: formData.value.stockType, + materialNumber: formData.value.materialNumber, + distributeNumber: formData.value.distributeNumber, + completeNumber: formData.value.completeNumber, + priority: formData.value.priority, + planNo: formData.value.planNo, + operateTime: formData.value.operateTime, + remark: formData.value.remark, + } + if (!current.value) { + await wmsInOutStockOrderDrawer.addWmsInOutStockOrder(data) + } else { + const id = current.value.id + await wmsInOutStockOrderDrawer.updateWmsInOutStockOrder(id, data) + } + ElMessage.success('淇濆瓨鎴愬姛') + ctx.emit('confirm') + } + + const updateCheckData = () => { + initiateData.value = { + formData: { + ...formData.value, + }, + } + } + 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 commonQueryEnumForFrom = async () => { + const orderStatusEnumEnum = await wmsInOutStockOrderDrawer.getWmsEnumData({ + EnumName: 'OrderStatusEnum', + }) + updateFormItemOptions('orderStatus', orderStatusEnumEnum) + const orderTypeEnumEnum = await wmsInOutStockOrderDrawer.getWmsEnumData({ + EnumName: 'OrderTypeEnum', + }) + updateFormItemOptions('orderType', orderTypeEnumEnum) + const stockTypeEnumEnum = await wmsInOutStockOrderDrawer.getWmsEnumData({ + EnumName: 'StockTypeEnum', + }) + updateFormItemOptions('stockType', stockTypeEnumEnum) + } + commonQueryEnumForFrom() + /** + * 寮圭獥鎵撳紑鑾峰彇璇︽儏 + */ + const onOpen = async () => { + if (current.value) { + const res = await wmsInOutStockOrderDrawer.getWmsInOutStockOrderDetail( + current.value + ) + + formData.value = { + orderNo: res.orderNo, + orderStatus: res.orderStatus, + materialName: res.materialName, + materialNo: res.materialNo, + materialModel: res.materialModel, + materialBatch: res.materialBatch, + orderType: res.orderType, + stockType: res.stockType, + materialNumber: res.materialNumber, + distributeNumber: res.distributeNumber, + completeNumber: res.completeNumber, + priority: res.priority, + planNo: res.planNo, + operateTime: res.operateTime, + remark: res.remark, + id: res.id, + } + disabled.value = true + updateCheckData() + } else { + formData.value = {} + + disabled.value = false + updateCheckData() + } + } + + watch(() => current.value, onOpen) + + return { + formItems, + formData, + visible, + formRef, + onOpen, + onClose, + onConfirm, + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/WmsInOutStockOrderQueryDrawer.tsx b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/WmsInOutStockOrderQueryDrawer.tsx new file mode 100644 index 0000000..8ffb0d0 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Controllers/WmsInOutStockOrderQueryDrawer.tsx @@ -0,0 +1,381 @@ +import { + ref, + onMounted, + reactive, + computed, + Ref, + watch, + SetupContext, + h, +} from 'vue' +import { injectModel } from '@/libs/Provider/Provider' +import { WmsInOutStockOrderDrawer } from '../Models/WmsInOutStockOrderDrawer' +import { ElMessage } from 'element-plus' +import isEqual from 'lodash/isEqual' +import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' +import { cloneDeep } from 'lodash' + +export const useWmsInOutStockOrderQueryDrawer = (props: any, ctx?: any) => { + const wmsInOutStockOrderDrawer = injectModel<WmsInOutStockOrderDrawer>( + 'WmsInOutStockOrderDrawer' + ) + /** + * 鐢ㄦ潵瀵规瘮鐨勫垵濮嬪寲鏁版嵁 + */ + const initiateData: Ref<Record<string, any>> = ref({}) + const formData = ref<Record<string, any>>({}) + // ref + const formRef = ref() + + const disabled = ref(false) + + const current = computed(() => { + return props.row || null + }) + + const inputNumber = (attrs) => { + return ( + <el-input-number + min="1" + step="1" + precision="0" + {...attrs} + ></el-input-number> + ) + } + + const datePickerRange = (attrs) => { + return ( + <el-date-picker + type="daterange" + value-format="YYYY-MM-DD HH:mm:ss" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + {...attrs} + ></el-date-picker> + ) + } + + const dateTimePickerRange = (attrs) => { + return ( + <el-date-picker + type="datetimerange" + value-format="YYYY-MM-DD HH:mm:ss" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + {...attrs} + ></el-date-picker> + ) + } + + const visible = computed({ + get() { + return props.modelValue + }, + set(val) { + ctx.emit('update:modelValue', val) + }, + }) + /** + * 娣诲姞鐨刦orm瀛楁 + */ + const formItems = reactive([ + { + label: '鍗曟嵁缂栧彿', + prop: 'orderNo', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ崟鎹紪鍙�', + }, + { + label: '鍗曟嵁鐘舵��', + prop: 'orderStatus', + el: 'select', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ崟鎹姸鎬�', + }, + { + label: '鐗╂枡鍚嶇О', + prop: 'materialName', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欏悕绉�', + }, + { + label: '鐗╂枡浠跺彿', + prop: 'materialNo', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欎欢鍙�', + }, + { + label: '鍨嬪彿', + prop: 'materialModel', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ瀷鍙�', + }, + { + label: '鎵规鍙�', + prop: 'materialBatch', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ユ壒娆″彿', + }, + { + label: '鍗曟嵁绫诲瀷', + prop: 'orderType', + el: 'select', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ崟鎹被鍨�', + }, + { + label: '鎿嶄綔绫诲瀷', + prop: 'stockType', + el: 'select', + //disabled: disabled, + placeholder: '璇疯緭鍏ユ搷浣滅被鍨�', + }, + { + label: '鍗曟嵁鏁伴噺', + prop: 'materialNumber', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏ュ崟鎹暟閲�', + }, + { + label: '涓嬪彂鏁伴噺', + prop: 'distributeNumber', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏ヤ笅鍙戞暟閲�', + }, + { + label: '瀹屾垚鏁伴噺', + prop: 'completeNumber', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏ュ畬鎴愭暟閲�', + }, + { + label: '浼樺厛绾�', + prop: 'priority', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏ヤ紭鍏堢骇', + }, + { + label: '鍏宠仈璁″垝缂栧彿', + prop: 'planNo', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ叧鑱旇鍒掔紪鍙�', + }, + { + label: '鎿嶄綔鏃堕棿', + prop: 'operateTime', + el: (props: any, { attrs }: SetupContext) => { + return h(dateTimePickerRange, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + //disabled: disabled, + placeholder: '璇疯緭鍏ユ搷浣滄椂闂�', + }, + { + label: '澶囨敞', + prop: 'remark', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ娉�', + }, + { + label: '鏄惁绂佺敤', + prop: 'isDisabled', + el: 'select', + //disabled: disabled, + placeholder: '璇疯緭鍏ユ槸鍚︾鐢�', + options: [ + { label: '鏄�', value: true }, + { label: '鍚�', value: false }, + ], + }, + { + label: '鍒涘缓鏃堕棿', + prop: 'creationTime', + el: (props: any, { attrs }: SetupContext) => { + return h(dateTimePickerRange, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ垱寤烘椂闂�', + }, + ]) + /** + * 鏍¢獙鏄惁鏈夋暟鎹彉鍖� + */ + const checkIsEqualObject = () => { + const data = { + formData: formData.value, + } + const check = isEqual(initiateData.value, data) + return check + } + const commonGetFormData = () => { + const data = { + orderNo: formData.value.orderNo || '', + orderStatus: formData.value.orderStatus || '', + materialName: formData.value.materialName || '', + materialNo: formData.value.materialNo || '', + materialModel: formData.value.materialModel || '', + materialBatch: formData.value.materialBatch || '', + orderType: formData.value.orderType || '', + stockType: formData.value.stockType || '', + materialNumber: formData.value.materialNumber || '', + distributeNumber: formData.value.distributeNumber || '', + completeNumber: formData.value.completeNumber || '', + priority: formData.value.priority || '', + planNo: formData.value.planNo || '', + operateTime: formData.value.operateTime || '', + remark: formData.value.remark || '', + isDisabled: formData.value.isDisabled || '', + creationTime: formData.value.creationTime || '', + } + return data + } + const onClose = (done: () => void) => { + if (visible.value) { + visible.value = false + const data = commonGetFormData() + ctx.emit('close', data) + } + } + /** + * 纭鏌ヨ + */ + const onConfirmQuery = async () => { + const data = commonGetFormData() + ctx.emit('confirmQuery', data) + } + /** + * 閲嶇疆鏌ヨ + */ + const onReset = async () => { + formData.value = {} + formData.value.OrderNo = '' + formData.value.OrderStatus = '' + formData.value.MaterialName = '' + formData.value.MaterialNo = '' + formData.value.MaterialModel = '' + formData.value.MaterialBatch = '' + formData.value.OrderType = '' + formData.value.StockType = '' + formData.value.MaterialNumber = '' + formData.value.DistributeNumber = '' + formData.value.CompleteNumber = '' + formData.value.Priority = '' + formData.value.PlanNo = '' + formData.value.OperateTime = '' + formData.value.Remark = '' + //鍚戠埗缁勪欢鍙戦�佽嚜瀹氫箟浜嬩欢 + ctx.emit('restQuery') + } + + const updateCheckData = () => { + initiateData.value = { + formData: { + ...formData.value, + }, + } + } + 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 commonQueryEnumForFrom = async () => { + const orderStatusEnumEnum = await wmsInOutStockOrderDrawer.getWmsEnumData({ + EnumName: 'OrderStatusEnum', + }) + updateFormItemOptions('orderStatus', orderStatusEnumEnum) + const orderTypeEnumEnum = await wmsInOutStockOrderDrawer.getWmsEnumData({ + EnumName: 'OrderTypeEnum', + }) + updateFormItemOptions('orderType', orderTypeEnumEnum) + const stockTypeEnumEnum = await wmsInOutStockOrderDrawer.getWmsEnumData({ + EnumName: 'StockTypeEnum', + }) + updateFormItemOptions('stockType', stockTypeEnumEnum) + } + commonQueryEnumForFrom() + /** + * 寮圭獥鎵撳紑鑾峰彇璇︽儏 + */ + const onOpen = async () => { + disabled.value = false + updateCheckData() + } + + watch(() => current.value, onOpen) + + return { + formItems, + formData, + visible, + formRef, + onOpen, + onClose, + onConfirmQuery, + onReset, + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/Service/WmsInOutStockOrder.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/Service/WmsInOutStockOrder.ts new file mode 100644 index 0000000..b8d8a45 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/Service/WmsInOutStockOrder.ts @@ -0,0 +1,30 @@ +import { Base } from '@/libs/Base/Base' +const request = Base.request + +/** + * 娣诲姞 + * @returns + */ +export const addWmsInOutStockOrder = (data: any) => { + return request.post('/api/v1/HIAWms/wmsInOutStockOrder', data) +} + +/** + * 鎵归噺鍒犻櫎 + * @returns + */ +export const deleteWmsInOutStockOrders = (ids: string[]) => { + return request({ + data: ids, + url: '/api/v1/HIAWms/wmsInOutStockOrder', + method: 'delete', + }) +} + +/** + * 鍏嬮殕 + * @returns + */ +export const cloneData = (data: any) => { + return request.post('/api/v1/HIAWms/wmsInOutStockOrder/clone', data) +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/Service/WmsInOutStockOrderDrawer.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/Service/WmsInOutStockOrderDrawer.ts new file mode 100644 index 0000000..1045f7f --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/Service/WmsInOutStockOrderDrawer.ts @@ -0,0 +1,34 @@ +import { Base } from '@/libs/Base/Base' +const request = Base.request + +/** + * 娣诲姞 + * @returns + */ +export const addWmsInOutStockOrder = (data: any) => { + return request.post('/api/v1/HIAWms/wmsInOutStockOrder', data) +} + +/** + * 鑾峰彇璇︽儏 + * @returns + */ +export const getWmsInOutStockOrder = (id: string) => { + return request.get(`/api/v1/HIAWms/wmsInOutStockOrder/${id}`) +} + +/** + * 鏇存柊 + * @returns + */ +export const updateWmsInOutStockOrder = (id: string, data: Record<string, any>) => { + return request.put(`/api/v1/HIAWms/wmsInOutStockOrder/${id}`, data) +} + +/** + * 鑾峰彇鏋氫妇 + * @returns + */ +export const getWmsEnumData = (data: any) => { + return request.post('/api/v1/HIAWms/WmsEnum', data) +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/Service/WmsInOutStockOrderQueryDrawer.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/Service/WmsInOutStockOrderQueryDrawer.ts new file mode 100644 index 0000000..b6702db --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/Service/WmsInOutStockOrderQueryDrawer.ts @@ -0,0 +1,35 @@ +import { Base } from '@/libs/Base/Base' +const request = Base.request + +/** + * 娣诲姞 + * @returns + */ +export const addWmsInOutStockOrder = (data: any) => { + return request.post('/api/v1/HIAWms/wmsInOutStockOrder', data) +} + +/** + * 鑾峰彇璇︽儏 + * @returns + */ +export const getWmsInOutStockOrder = (id: string) => { + return request.get(`/api/v1/HIAWms/wmsInOutStockOrder/${id}`) +} + +/** + * 鏇存柊 + * @returns + */ +export const updateWmsInOutStockOrder = (id: string, data: Record<string, any>) => { + return request.put(`/api/v1/HIAWms/wmsInOutStockOrder/${id}`, data) +} + +/** + * 鑾峰彇鏋氫妇 + * @returns + */ +export const getWmsEnumData = (data: any) => { + return request.post('/api/v1/HIAWms/WmsEnum', data) +} + diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/WmsInOutStockOrder.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/WmsInOutStockOrder.ts new file mode 100644 index 0000000..d262b6a --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/WmsInOutStockOrder.ts @@ -0,0 +1,41 @@ +import { Base } from '@/libs/Base/Base' +import { + deleteWmsInOutStockOrders, + addWmsInOutStockOrder, + cloneData, +} from './Service/WmsInOutStockOrder' + +export class WmsInOutStockOrder extends Base<{ [key: string]: any }> { + constructor() { + super({ + data: [], + }) + } + onMounted() {} + /** + * 鍒犻櫎 + * @param id + * @returns + */ + async deleteWmsInOutStockOrders(ids: string[]) { + return deleteWmsInOutStockOrders(ids) + } + + /** + * 娣诲姞鏁版嵁 + * @param data + * @returns + */ + addWmsInOutStockOrder(data: Record<string, any>) { + return addWmsInOutStockOrder(data) + } + + /** + * 鍏嬮殕 + * @param ids + * @returns + */ + cloneData(ids: string[]) { + return cloneData(ids) + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/WmsInOutStockOrderDrawer.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/WmsInOutStockOrderDrawer.ts new file mode 100644 index 0000000..959ebf0 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/WmsInOutStockOrderDrawer.ts @@ -0,0 +1,44 @@ +import { Base } from '@/libs/Base/Base' +import { + addWmsInOutStockOrder, + getWmsInOutStockOrder, + updateWmsInOutStockOrder, + getWmsEnumData, +} from './Service/WmsInOutStockOrderDrawer' +import { useGlobalState } from '@/libs/Store/Store' + +export class WmsInOutStockOrderDrawer extends Base<{ [key: string]: any }> { + constructor() { + super({ + data: [], + wmsInOutStockOrder: {}, + }) + } + + /** + * 娣诲姞 + * @param data + */ + async addWmsInOutStockOrder(data: Record<string, any>) { + return addWmsInOutStockOrder(data) + } + /** + * 鏇存柊 + * @param data + */ + async updateWmsInOutStockOrder(id: string, data: Record<string, any>) { + return updateWmsInOutStockOrder(id, data) + } + + /** + * 鑾峰彇璇︽儏 + */ + async getWmsInOutStockOrderDetail(current: any, id?: string) { + return getWmsInOutStockOrder(id || current?.id) + } + + // 鑾峰彇鏋氫妇鍊� + async getWmsEnumData(data: Record<string, any>) { + return getWmsEnumData(data) + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/WmsInOutStockOrderQueryDrawer.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/WmsInOutStockOrderQueryDrawer.ts new file mode 100644 index 0000000..da5ac0b --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Models/WmsInOutStockOrderQueryDrawer.ts @@ -0,0 +1,44 @@ +import { Base } from '@/libs/Base/Base' +import { + addWmsInOutStockOrder, + getWmsInOutStockOrder, + updateWmsInOutStockOrder, + getWmsEnumData, +} from './Service/WmsInOutStockOrderQueryDrawer' +import { useGlobalState } from '@/libs/Store/Store' + +export class WmsInOutStockOrderQueryDrawer extends Base<{ [key: string]: any }> { + constructor() { + super({ + data: [], + wmsInOutStockOrder: {}, + }) + } + + /** + * 娣诲姞 + * @param data + */ + async addWmsInOutStockOrder(data: Record<string, any>) { + return addWmsInOutStockOrder(data) + } + /** + * 鏇存柊 + * @param data + */ + async updateWmsInOutStockOrder(id: string, data: Record<string, any>) { + return updateWmsInOutStockOrder(id, data) + } + + /** + * 鑾峰彇璇︽儏 + */ + async getWmsInOutStockOrderDetail(current: any, id?: string) { + return getWmsInOutStockOrder(id || current?.id) + } + + // 鑾峰彇鏋氫妇鍊� + async getWmsEnumData(data: Record<string, any>) { + return getWmsEnumData(data) + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderDrawer/WmsInOutStockOrderDrawer.module.scss b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderDrawer/WmsInOutStockOrderDrawer.module.scss new file mode 100644 index 0000000..177adca --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderDrawer/WmsInOutStockOrderDrawer.module.scss @@ -0,0 +1,3 @@ +.drawer { + width: 800px; +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderDrawer/WmsInOutStockOrderDrawer.tsx b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderDrawer/WmsInOutStockOrderDrawer.tsx new file mode 100644 index 0000000..c1f8c4e --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderDrawer/WmsInOutStockOrderDrawer.tsx @@ -0,0 +1,61 @@ +import { SetupContext, defineComponent } from 'vue' +import BaseDrawer from '@/components/BaseDrawer/BaseDrawer' +import styles from './WmsInOutStockOrderDrawer.module.scss' +import { useWmsInOutStockOrderDrawer } from '../../../../Controllers/WmsInOutStockOrderDrawer.tsx' +import DyForm from '@/components/DyForm/DyForm' + +// @ts-ignore +export default defineComponent<{ + [key: string]: any +}>({ + name: '寮圭獥', + props: { + modelValue: { + type: Boolean, + default: false, + }, + title: { + type: String, + default: '', + }, + row: { + type: Object, + }, + sort: { + type: Number, + default: 0, + }, + }, + emits: ['update:modelValue', 'close', 'submit', 'confirm'], + setup(props: Record<string, any>, ctx: SetupContext) { + const { + onClose, + onConfirm, + onOpen, + formRef, + visible, + formItems, + formData, + } = useWmsInOutStockOrderDrawer(props, ctx) + return () => ( + <BaseDrawer + class={styles.drawer} + size="800px" + title={props.title || '娣诲姞'} + v-model={visible.value} + close-on-click-modal={true} + onConfirm={onConfirm} + onOpen={onOpen} + before-close={onClose} + onClose={onClose} + > + <DyForm + ref={formRef} + formData={formData.value} + labelWidth="106px" + formItemProps={formItems} + ></DyForm> + </BaseDrawer> + ) + }, +}) diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderQueryDrawer/WmsInOutStockOrderQueryDrawer.module.scss b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderQueryDrawer/WmsInOutStockOrderQueryDrawer.module.scss new file mode 100644 index 0000000..177adca --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderQueryDrawer/WmsInOutStockOrderQueryDrawer.module.scss @@ -0,0 +1,3 @@ +.drawer { + width: 800px; +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderQueryDrawer/WmsInOutStockOrderQueryDrawer.tsx b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderQueryDrawer/WmsInOutStockOrderQueryDrawer.tsx new file mode 100644 index 0000000..ef5ff4a --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/Dialog/WmsInOutStockOrderQueryDrawer/WmsInOutStockOrderQueryDrawer.tsx @@ -0,0 +1,71 @@ +/* + * 鐗╂枡鍩虹淇℃伅鏌ヨ寮瑰嚭妗� +*/ +import { SetupContext, defineComponent } from 'vue' +import BaseQueryDrawer from '@/components/BaseQueryDrawer/BaseQueryDrawer' +import styles from './WmsInOutStockOrderQueryDrawer.module.scss' +import { useWmsInOutStockOrderQueryDrawer } from '../../../../Controllers/WmsInOutStockOrderQueryDrawer.tsx' +import DyForm from '@/components/DyForm/DyForm' + +// @ts-ignore +export default defineComponent<{ + [key: string]: any +}>({ + name: '寮圭獥', + props: { + //鏋氫妇绫诲瀷瀛楀吀 + enumListDict:{ + type: Array as () => Array<{ key: string; value: object }>, // 瀹氫箟鏁扮粍鍏冪礌绫诲瀷 + default: () => [] // 榛樿鍊� + }, + modelValue: { + type: Boolean, + default: false, + }, + title: { + type: String, + default: '', + }, + row: { + type: Object, + }, + sort: { + type: Number, + default: 0, + }, + }, + emits: ['update:modelValue', 'close', 'submit', 'confirmquery1'], + setup(props: Record<string, any>, ctx: SetupContext) { + const { + onClose, + onConfirmQuery, + onOpen, + onReset, + formRef, + visible, + formItems, + formData, + } = useWmsInOutStockOrderQueryDrawer(props, ctx) + return () => ( + <BaseQueryDrawer + class={styles.drawer} + size="800px" + title={props.title || '楂樼骇鏌ヨ'} + v-model={visible.value} + close-on-click-modal={true} + onReset={onReset} + onConfirmQueryForBase={onConfirmQuery} + onOpen={onOpen} + before-close={onClose} + onClose={onClose} + > + <DyForm + ref={formRef} + formData={formData.value} + labelWidth="106px" + formItemProps={formItems} + ></DyForm> + </BaseQueryDrawer> + ) + }, +}) diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/WmsInOutStockOrder/Config.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/WmsInOutStockOrder/Config.ts new file mode 100644 index 0000000..2b24077 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/WmsInOutStockOrder/Config.ts @@ -0,0 +1,81 @@ +export const columns = [ + { + type: 'seq', + width: 60, + title: '搴忓彿', + }, + { + field: 'orderNo', + title: '鍗曟嵁缂栧彿', + }, + { + field: 'orderStatusDesc', + title: '鍗曟嵁鐘舵��', + }, + { + field: 'materialName', + title: '鐗╂枡鍚嶇О', + }, + { + field: 'materialNo', + title: '鐗╂枡浠跺彿', + }, + { + field: 'materialModel', + title: '鍨嬪彿', + }, + { + field: 'materialBatch', + title: '鎵规鍙�', + }, + { + field: 'orderTypeDesc', + title: '鍗曟嵁绫诲瀷', + }, + { + field: 'stockTypeDesc', + title: '鎿嶄綔绫诲瀷', + }, + { + field: 'materialNumber', + title: '鍗曟嵁鏁伴噺', + }, + { + field: 'distributeNumber', + title: '涓嬪彂鏁伴噺', + }, + { + field: 'completeNumber', + title: '瀹屾垚鏁伴噺', + }, + { + field: 'priority', + title: '浼樺厛绾�', + }, + { + field: 'planNo', + title: '鍏宠仈璁″垝', + }, + { + field: 'operateTime', + title: '鎿嶄綔鏃堕棿', + width: 180, + }, + { + field: 'remark', + title: '澶囨敞', + }, + // { + // field: 'sort', + // title: '鎺掑簭', + // }, + { + field: 'creationTime', + title: '鍒涘缓鏃堕棿', + width: 180, + }, + // { + // field: 'deletionTime', + // title: '', + // }, +] diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/WmsInOutStockOrder/WmsInOutStockOrder.module.scss b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/WmsInOutStockOrder/WmsInOutStockOrder.module.scss new file mode 100644 index 0000000..9de386f --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/WmsInOutStockOrder/WmsInOutStockOrder.module.scss @@ -0,0 +1,113 @@ +.wmsInOutStockOrderContent { + width: 100%; + height: 100%; + + .wmsInOutStockOrderList { + width: 100%; + height: calc(100% - 70px); + } + .headerContent { + display: flex; + justify-content: space-between; + align-items: center; + height: 43px; + } + .header { + margin-bottom: 12px; + display: flex; + justify-content: flex-end; + align-items: center; + } +} + +.tagBox { + width: auto; + min-width: 80px; + height: 24px; + background: #ffffff; + border-radius: 19px 19px 19px 19px; + opacity: 1; + border: 1px dashed #bcc4cc; + width: 50px; + height: 20px; + font-size: 14px; + font-family: PingFang SC, PingFang SC; + font-weight: 400; + color: #5a84ff; + display: flex; + justify-content: center; + align-items: center; + // cursor: pointer; +} + +.group { + display: flex; + justify-content: space-between; + align-items: center; +} + +.groupTable { + width: 100%; +} + +.overBox { + width: 100%; + height: calc(100% - 20px); + overflow: auto; + :global(.cs-collapse-item__header) { + background-color: #f1f1f1; + padding: 0 20px; + height: 35px; + font-size: 16px; + font-family: PingFang SC, PingFang SC; + font-weight: 500; + } + :global(.cs-collapse-item__content) { + padding-bottom: 0px; + } +} +.groupHeader { + width: 100%; + height: 30px; + background: #ccc; +} + +.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%; + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/WmsInOutStockOrder/WmsInOutStockOrder.tsx b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/WmsInOutStockOrder/WmsInOutStockOrder.tsx new file mode 100644 index 0000000..c606d18 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/WmsInOutStockOrder/WmsInOutStockOrder.tsx @@ -0,0 +1,349 @@ +import { computed, defineComponent, onMounted, reactive, ref } from 'vue' +import type { Ref } from 'vue' +import BaseTable from '@/components/Table/Table' +import styles from './WmsInOutStockOrder.module.scss' +import { useWmsInOutStockOrder } from '../../../Controllers/WmsInOutStockOrder' +import IconButton from '@/components/IconButton/IconButton' +import WmsInOutStockOrderDrawer from '../Dialog/WmsInOutStockOrderDrawer/WmsInOutStockOrderDrawer' +import WmsInOutStockOrderQueryDrawer from '../Dialog/WmsInOutStockOrderQueryDrawer/WmsInOutStockOrderQueryDrawer' +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/WmsInOutStockOrder/Models/Service/WmsInOutStockOrderDrawer' +import dayjs from 'dayjs' +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: 'WmsInOutStockOrder', + directives: { + permission: vPermission, + }, + setup(props, ctx) { + const { + dataSource, + contextMenu, + dialogConfig, + dialogConfigForQuery, + tableRef, + current, + search, + sort, + headers, + onError, + onSearch, + onRowClick, + onConfirmWmsInOutStockOrder, + onCheck, + onAddWmsInOutStockOrder, + onAdvancedQuery, + onExport, + openDetail, + onSuccess, + onBeforeUpload, + } = useWmsInOutStockOrder(props, ctx) + + //瀹氫箟楂樼骇鏌ヨ寮曠敤 + const wmsInOutStockOrderQueryDrawerRef = ref(null) + // 鏂板鐨勬煡璇㈡潯浠� + const queryForm = ref({ + searchVal: '', + str_searchFormInputAttrs: [], + }) + //瀹氫箟鏁翠綋妯$硦鏌ヨ鐨勫垪鏁扮粍(娉ㄦ剰锛氬繀椤诲ぇ灏忓啓璺熷悗绔殑瀹炰綋绫诲睘鎬у悕涓�鑷达紝鍚﹀垯浼氬鑷村尮閰嶄笉瀵圭殑闂) + const _searchFormInputAttrs = ref([ + 'OrderNo', + 'MaterialNo', + 'MaterialBatch', + ]) + const searchFormInputAttrs_Placeholder = ref('璇疯緭鍏ュ崟鎹彿/鐗╂枡缂栧彿/鎵规') + + // 鍔ㄦ�佹灇涓鹃�夐」 + const enumOptions = reactive({ + orderStatus: [] as Array<{ label: string; value: any }>, + orderType: [] as Array<{ label: string; value: any }>, + stockType: [] as Array<{ label: string; value: any }>, + }) + + // 鑾峰彇鏋氫妇鏁版嵁 + const fetchEnumData = async () => { + try { + const orderStatusEnumData = await getWmsEnumData({ + EnumName: 'OrderStatusEnum', + }) + enumOptions.orderStatus = orderStatusEnumData.map((item) => ({ + label: item.description, + value: item.value, + })) + const orderTypeEnumData = await getWmsEnumData({ + EnumName: 'OrderTypeEnum', + }) + enumOptions.orderType = orderTypeEnumData.map((item) => ({ + label: item.description, + value: item.value, + })) + const stockTypeEnumData = await getWmsEnumData({ + EnumName: 'StockTypeEnum', + }) + enumOptions.stockType = stockTypeEnumData.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.wmsInOutStockOrderList]: true, + }} + > + <BaseTable + ref={tableRef} + url={url} + sortUrlTpl="/api/v1/HIAWms/wmsInOutStockOrder/{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={{ + operateTime: ({ row }: any) => { + return ( + <div> + {row.operateTime != null + ? dayjs(row.operateTime).format('YYYY-MM-DD HH:mm:ss') + : '-'} + </div> + ) + }, + creationTime: ({ row }: any) => { + return ( + <div> + {row.creationTime != null + ? dayjs(row.creationTime).format('YYYY-MM-DD HH:mm:ss') + : '-'} + </div> + ) + }, + 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.wmsInOutStockOrderContent}> + {/* 娣诲姞/缂栬緫 */} + <WmsInOutStockOrderDrawer + v-model={dialogConfig.visible} + title={dialogConfig.title} + row={current.value} + sort={sort.value} + onConfirm={onConfirmWmsInOutStockOrder} + /> + {/* 楂樼骇鏌ヨ */} + <WmsInOutStockOrderQueryDrawer + ref="wmsInOutStockOrderQueryDrawerRef" + 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="wmsInOutStockOrder-add" + icon="add-p" + onClick={onAddWmsInOutStockOrder} + type="primary" + > + 娣诲姞 + </IconButton> + <el-divider direction="vertical" /> + + <el-divider direction="vertical" /> + <el-upload + v-permission="wmsInOutStockOrder-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/wmsInOutStockOrder/import" + > + <IconButton icon="in">瀵煎叆</IconButton> + </el-upload> + + <IconButton + v-permission="wmsInOutStockOrder-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="wmsInOutStockOrder-add" + icon="search" + onClick={onAdvancedQuery} + type="primary" + > + 楂樼骇鏌ヨ + </IconButton> + </ElFormItem> + </div> + + <RenderBaseTable + url="/api/v1/HIAWms/wmsInOutStockOrder/page" + dataSource={dataSource} + isChecked={true} + isDrag={true} + /> + </div> + ) + } + }, +}) diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/WmsInOutStockOrder.module.scss b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/WmsInOutStockOrder.module.scss new file mode 100644 index 0000000..c315e51 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/WmsInOutStockOrder.module.scss @@ -0,0 +1,7 @@ +.WmsInOutStockOrder { + background-color: #fff; + border-radius: 5px 5px 0 0; + width: 100%; + height: 100%; + border: 1px solid #dbdbdb; +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/WmsInOutStockOrder.tsx b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/WmsInOutStockOrder.tsx new file mode 100644 index 0000000..3e7f297 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/WmsInOutStockOrder.tsx @@ -0,0 +1,80 @@ +import { + Component, + DefineComponent, + defineComponent, + markRaw, + ref, + SetupContext, + onMounted, +} from 'vue' +import styles from './WmsInOutStockOrder.module.scss' +import Tab from '@/components/Tab/Tab' +import { useProvideModels } from '@/libs/Provider/app' +import { usePermission } from '@/libs/Permission/Permission' +import { permissionCodes } from '../enum' +import { ModuleType, TabItem } from '../type/Type' +import { getEntityNames } from '@/hooks/hook' +import TabPane from '@/components/Tab/TabPane' + +const Models: ModuleType = import.meta.glob('./config/*.json', { + eager: true, +}) + +const entityNames = getEntityNames(Models) + +const nameToLabelMap = [{ name: 'WmsInOutStockOrder', label: '鍑哄叆搴撳崟鎹�' }] + +export default defineComponent({ + name: 'WmsInOutStockOrder', + + setup(props, ctx: SetupContext) { + useProvideModels() + usePermission(props, permissionCodes) + + const rf = ref<{ + [key: string]: any + }>({}) + + const tabData = ref<TabItem[]>([]) + + const onTabChange = (v: string) => { + rf.value?.[v]?.reloadList() + } + + const initTableData = async () => { + for (const i in entityNames) { + const name = entityNames[i] + const module = await import(`./Pages/${name}/${name}.tsx`) + const WmsInOutStockOrder = markRaw(module.default) + const foundLabel = + nameToLabelMap.find((item) => item.name === name)?.label || name + tabData.value.push({ + label: foundLabel, + name, + component: WmsInOutStockOrder, + }) + } + } + + initTableData() + + return () => { + return ( + <div class={styles.WmsInOutStockOrder}> + <Tab data={tabData.value} type="list" onTab={onTabChange}> + {tabData.value.map((widgetInfo) => { + const Widget: any = widgetInfo.component + return ( + <TabPane label={widgetInfo.label} name={widgetInfo.name}> + <Widget + ref={(r: any) => (rf.value['WmsInOutStockOrder'] = r)} + ></Widget> + </TabPane> + ) + })} + </Tab> + </div> + ) + } + }, +}) diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/config/WmsInOutStockOrder.json b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/config/WmsInOutStockOrder.json new file mode 100644 index 0000000..288b8fb --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/config/WmsInOutStockOrder.json @@ -0,0 +1,3 @@ +{ + "name": "WmsInOutStockOrder" +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/enum.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/enum.ts new file mode 100644 index 0000000..f270da6 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/enum.ts @@ -0,0 +1,15 @@ +export interface TabType { + label: string + name: string + columns?: any[] + data?: any[] + isFooter: boolean + [key: string]: any +} + +export const permissionCodes = { + 'wmsInOutStockOrder-list': '鍒楄〃-鍒楄〃', + 'wmsInOutStockOrder-add': '鍒楄〃-娣诲姞', + 'wmsInOutStockOrder-import': '鍒楄〃-瀵煎叆', + 'wmsInOutStockOrder-output': '鍒楄〃-杈撳嚭', +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/index.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/index.ts new file mode 100644 index 0000000..d565363 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/index.ts @@ -0,0 +1,14 @@ +import WmsInOutStockOrder from './Views/WmsInOutStockOrder' +import Setting from '@/components/Setting/Setting' +import { provider } from '@/provider/index' +import p from '../../assets/svg/p.svg' + +export default { + is: 'WmsInOutStockOrder', + name: '鍑哄叆搴撳崟鎹�', + category: 'run', + icon: p, + authorizationRequired: false, + canvasView: provider(WmsInOutStockOrder), + settingsView: Setting, +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/type/type.d.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/type/type.d.ts new file mode 100644 index 0000000..c5f3197 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/type/type.d.ts @@ -0,0 +1,45 @@ +import { Component } from 'vue' + +export interface DataItemType { + id?: string + name?: string + code?: string + description?: string + label?: string + value?: string | number +} + +export interface WmsInOutStockOrderBaseType { + id?: string + name?: string + code?: string + value?: number + description?: string + options?: Array<DataItemType> + abilityValue?: number | string + data?: DataItemType + defaultValue?: string | number + flow: string +} + +export interface FlowDefinitionType { + id?: string + name?: string + code?: string + description?: string +} + +export type ModuleType = Record< + string, + { + default: Record<string, string> + name: string + } +> + +export interface TabItem { + name: string + label: string + component: Component + hidden?: boolean +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/File.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/File.ts new file mode 100644 index 0000000..9162fef --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/File.ts @@ -0,0 +1,31 @@ +import { importFileToService, exportFileToClient } from '@/api/file' +import { ElMessage } from 'element-plus' +import { downloadFile } from '@/utils' +import dayjs from 'dayjs' + +export const useFile = () => { + /** + * 瀵煎叆鏂囦欢 + * @param url + */ + const importFile = async (url: string, file: File) => { + const formData = new FormData() + formData.append('file', file) + await importFileToService(url, formData) + ElMessage('瀵煎叆鎴愬姛') + } + /** + * 瀵煎嚭鏂囦欢 + * @param url + */ + const exportFile = async (url: string, params: any, name: string) => { + const res = await exportFileToClient(url, params) + downloadFile(res, `${name}_${dayjs().format('YYYYMMDDHHMMss')}.xlsx`) + ElMessage.success('瀵煎嚭鎴愬姛') + } + + return { + importFile, + exportFile, + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/WmsInOutStockOrderDetail.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/WmsInOutStockOrderDetail.ts new file mode 100644 index 0000000..e2787c4 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/WmsInOutStockOrderDetail.ts @@ -0,0 +1,275 @@ +import { ref, onMounted, reactive, Ref, nextTick, computed } from 'vue' +import { injectModel } from '@/libs/Provider/Provider' +import { WmsInOutStockOrderDetail } from '../Models/WmsInOutStockOrderDetail' +import { ElMessage } from 'element-plus' +import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' +import { useFile } from './File' + +interface CurrentType { + row: any + index: number +} +export const useWmsInOutStockOrderDetail = (props: any, ctx?: any) => { + const wmsInOutStockOrderDetail = injectModel<WmsInOutStockOrderDetail>('wmsInOutStockOrderDetail') + const { exportFile } = useFile() + /** + * 澶撮儴閰嶇疆 + */ + const headers = ref({}) + /** + * 鍔ㄦ�佸垪閰嶇疆 + */ + const wmsInOutStockOrderDetailColumns = ref<Record<string, any>>([]) + /** + * 鎼滅储鍊� + */ + const search = ref('') + + /** + * 鎺掑簭 + */ + const sort = ref(0) + /** + * 閫夋嫨椤� + */ + const selection = ref([]) + /** + * 褰撳墠閫変腑鐨勮 + */ + const current = ref<any>(null) + /** + * 鏁版嵁婧� + */ + const dataSource: Ref<any[]> = ref([]) + + /** + * 琛ㄦ牸 + */ + const tableRef = ref() + const dialogConfig = reactive({ + visible: false, + title: '', + isAdd: false, + }) + const dialogConfigForQuery = reactive({ + visible: false, + title: '', + isAdd: false, + }) + + + const dialogSettingConfig = reactive({ + visible: false, + title: '', + }) + + /** + * 鍒嗛〉鏁版嵁 + */ + const paginationParams = ref({}) + + /** + * 鎵撳紑璇︽儏 + * @param row + */ + const openDetail = (row: any) => { + current.value = row + dialogConfig.visible = true + dialogConfig.title = row.name + dialogConfig.isAdd = false + sort.value = row.sort + } + + const contextMenu = [ + { + label: '灞曞紑璇︽儏', + fn: (c: CurrentType) => { + current.value = null + sort.value = c.row.sort + nextTick(() => openDetail(c.row)) + }, + divided: true, + icon: 'o', + }, + // { + // label: '鍚戜笂娣诲姞', + // fn: (c: CurrentType, pageNum: number) => { + // current.value = null + // sort.value = c.index + 1 + (pageNum - 1) * 50 + // dialogConfig.visible = true + // dialogConfig.title = '娣诲姞' + // dialogConfig.isAdd = false + // }, + // divided: true, + // icon: 'up', + // }, + // { + // label: '鍚戜笅娣诲姞', + // fn: (c: CurrentType, pageNum: number) => { + // current.value = null + // sort.value = c.index + 2 + (pageNum - 1) * 50 + // dialogConfig.visible = true + // dialogConfig.title = '娣诲姞' + // dialogConfig.isAdd = false + // }, + // divided: true, + // icon: 'down', + // }, + // { + // label: '鍒涘缓鍓湰', + // fn: async ({ row }: CurrentType) => { + // await wmsInOutStockOrderDetail.cloneData([row.id]) + // ElMessage.success('鍒涘缓鍓湰鎴愬姛') + // tableRef.value?.getList() + // }, + // divided: true, + // icon: 'copy', + // }, + { + label: '鍒犻櫎', + fn: async (c: CurrentType) => { + const names = selection.value.map((item: { materialId: string }) => item.materialId) + ConfirmBox( + `鏄惁鍒犻櫎${names.length ? names.join(',') : c.row.materialId}` + ).then(async () => { + const ids = selection.value.map((item: { id: string }) => item.id) + await wmsInOutStockOrderDetail.deleteWmsInOutStockOrderDetails(ids.length ? ids : [c.row.id]) + ElMessage.success('鍒犻櫎鎴愬姛') + tableRef.value.getList() + }) + }, + icon: 'close', + }, + ] + + const onCheck = (records: any) => { + selection.value = records + } + + const onAddWmsInOutStockOrderDetail = () => { + const params = tableRef.value?.getPaginationParams() + current.value = null + dialogConfig.visible = true + dialogConfig.isAdd = true + dialogConfig.title = '娣诲姞' + sort.value = params.totalCount + 1 + } + + //鐐瑰嚮鎸夐挳銆愰珮绾ф煡璇€�� + const onAdvancedQuery = () => { + const params = tableRef.value?.getPaginationParams() + current.value = null + dialogConfigForQuery.visible = true + dialogConfigForQuery.isAdd = true + dialogConfigForQuery.title = '楂樼骇鏌ヨ' + } + + const onConfirmWmsInOutStockOrderDetail = async () => { + dialogConfig.visible = false + if (dialogConfig.isAdd) { + tableRef.value?.scrollToRow({ + skip: true, + }) + } else { + await tableRef.value?.getList() + } + } + /** + * 琛岀偣鍑绘椂鏇存柊current + */ + const onRowClick = ({ row }: any) => { + if (dialogConfig.visible && current.value) { + current.value = row + } + } + /** + * 瀵煎嚭 + */ + const onExport = (data={}) => { + //const params = tableRef.value?.getParams() + exportFile('/api/v1/HIAWms/wmsInOutStockOrderDetail/export', data, 'wmsInOutStockOrderDetail') + } + + /** + * 鍏抽敭瀛楁悳绱� + */ + const onSearch = () => { + tableRef.value?.getList({ + Filter: search.value, + }) + } + + /** + * 閲嶇疆琛ㄦ牸鏁版嵁 + */ + const reloadList = () => { + tableRef.value?.getList() + } + /** + * 涓婁紶鎴愬姛 + */ + const onSuccess = () => { + tableRef.value?.getList() + ElMessage.success('瀵煎叆鎴愬姛') + } + /** + * 澶辫触 + * @param err + */ + const onError = (err: any) => { + try { + const message = JSON.parse(err.message) + ElMessage.error(message.msg) + } catch (error) { + ElMessage.error('瀵煎叆澶辫触') + } + } + /** + * 涓婁紶閽╁瓙 + */ + const onBeforeUpload = (file: File) => { + const format = ['xlsx', 'xls', 'csv'] + if (!format.includes(file.name.split('.')[1])) { + ElMessage.error('瀵煎叆鏂囦欢鏍煎紡涓嶆纭紝璇峰鍏�.xlsx/.xls涓�.csv鏍煎紡鐨勬枃浠�') + return false + } + return true + } + + onMounted(() => { + headers.value = { + Authorization: `Bearer ${sessionStorage.getItem('Token')}`, + 'X-Project': sessionStorage.getItem('X-Project'), + } + }) + + ctx.expose({ + reloadList, + }) + + return { + dataSource, + contextMenu, + dialogConfig, + dialogConfigForQuery, + dialogSettingConfig, + tableRef, + current, + search, + sort, + wmsInOutStockOrderDetailColumns, + paginationParams, + headers, + onBeforeUpload, + onError, + onSuccess, + openDetail, + onSearch, + onExport, + onRowClick, + onConfirmWmsInOutStockOrderDetail, + onCheck, + onAddWmsInOutStockOrderDetail, + onAdvancedQuery + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/WmsInOutStockOrderDetailDrawer.tsx b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/WmsInOutStockOrderDetailDrawer.tsx new file mode 100644 index 0000000..e92cb95 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/WmsInOutStockOrderDetailDrawer.tsx @@ -0,0 +1,293 @@ +import { + ref, + onMounted, + reactive, + computed, + Ref, + watch, + SetupContext, + h, +} from 'vue' +import { injectModel } from '@/libs/Provider/Provider' +import { WmsInOutStockOrderDetailDrawer } from '../Models/WmsInOutStockOrderDetailDrawer' +import { ElMessage } from 'element-plus' +import isEqual from 'lodash/isEqual' +import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' +import { cloneDeep } from 'lodash' + +export const useWmsInOutStockOrderDetailDrawer = (props: any, ctx?: any) => { + const wmsInOutStockOrderDetailDrawer = + injectModel<WmsInOutStockOrderDetailDrawer>( + 'wmsInOutStockOrderDetailDrawer' + ) + /** + * 鐢ㄦ潵瀵规瘮鐨勫垵濮嬪寲鏁版嵁 + */ + const initiateData: Ref<Record<string, any>> = ref({}) + const formData = ref<Record<string, any>>({}) + // ref + const formRef = ref() + + const disabled = ref(false) + + const current = computed(() => { + return props.row || null + }) + + const datePicker = (attrs) => { + return ( + <el-date-picker + type="date" + format="YYYY-MM-DD HH:mm:ss" + formatValue="YYYY-MM-DD HH:mm:ss" + {...attrs} + ></el-date-picker> + ) + } + const inputNumber = (attrs) => { + return ( + <el-input-number + min="1" + step="1" + precision="0" + {...attrs} + ></el-input-number> + ) + } + + const dateTimePicker = (attrs) => { + return ( + <el-date-picker + type="datetime" + format="YYYY-MM-DD HH:mm:ss" + formatValue="YYYY-MM-DD HH:mm:ss" + {...attrs} + ></el-date-picker> + ) + } + + const visible = computed({ + get() { + return props.modelValue + }, + set(val) { + ctx.emit('update:modelValue', val) + }, + }) + /** + * 娣诲姞鐨刦orm瀛楁 + */ + const formItems = reactive([ + { + label: '鍗曟嵁缂栧彿', + prop: 'orderNo', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ崟鎹紪鍙�', + rules: [{ required: true, message: '鍗曟嵁缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }], + }, + { + label: '鐗╂枡鍞竴鐮�', + prop: 'materialId', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欏敮涓�鐮�', + rules: [ + { required: true, message: '鐗╂枡鍞竴鐮佷笉鑳戒负绌�', trigger: 'blur' }, + ], + }, + { + label: '鍗曟嵁绫诲瀷', + prop: 'orderType', + el: 'select', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ崟鎹被鍨�', + rules: [ + { + required: true, + message: '鍗曟嵁绫诲瀷涓嶈兘涓虹┖', + trigger: 'blur', + }, + ], + }, + { + label: '鐗╂枡浠跺彿', + prop: 'materialNo', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欎欢鍙�', + rules: [{ required: true, message: '鐗╂枡浠跺彿涓嶈兘涓虹┖', trigger: 'blur' }], + }, + { + label: '鐗╂枡鍚嶇О', + prop: 'materialName', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欏悕绉�', + }, + { + label: '瀹瑰櫒缂栧彿', + prop: 'containerNo', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ鍣ㄧ紪鍙�', + }, + { + label: '鍨嬪彿', + prop: 'materialModel', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ瀷鍙�', + }, + { + label: '鐗╂枡鎵规', + prop: 'materialBatch', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欐壒娆�', + }, + { + label: '澶囨敞', + prop: 'remark', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ娉�', + }, + ]) + /** + * 鏍¢獙鏄惁鏈夋暟鎹彉鍖� + */ + const checkIsEqualObject = () => { + const data = { + formData: formData.value, + } + const check = isEqual(initiateData.value, data) + return check + } + + const onClose = (done: () => void) => { + if (visible.value) { + if (checkIsEqualObject()) { + visible.value = false + done && done() + } else { + ConfirmBox('鏄惁淇濆瓨璁剧疆锛�') + .then(() => { + onConfirm() + }) + .catch(() => { + visible.value = false + done && done() + }) + } + } + } + /** + * 淇濆瓨 + */ + const onConfirm = async () => { + await formRef.value?.validate() + const data = { + orderNo: formData.value.orderNo, + materialId: formData.value.materialId, + orderType: formData.value.orderType, + materialNo: formData.value.materialNo, + materialName: formData.value.materialName, + containerNo: formData.value.containerNo, + materialModel: formData.value.materialModel, + materialBatch: formData.value.materialBatch, + remark: formData.value.remark, + } + if (!current.value) { + await wmsInOutStockOrderDetailDrawer.addWmsInOutStockOrderDetail(data) + } else { + const id = current.value.id + await wmsInOutStockOrderDetailDrawer.updateWmsInOutStockOrderDetail( + id, + data + ) + } + ElMessage.success('淇濆瓨鎴愬姛') + ctx.emit('confirm') + } + + const updateCheckData = () => { + initiateData.value = { + formData: { + ...formData.value, + }, + } + } + 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 commonQueryEnumForFrom = async () => { + const orderTypeEnumEnum = + await wmsInOutStockOrderDetailDrawer.getWmsEnumData({ + EnumName: 'OrderTypeEnum', + }) + updateFormItemOptions('orderType', orderTypeEnumEnum) + } + commonQueryEnumForFrom() + /** + * 寮圭獥鎵撳紑鑾峰彇璇︽儏 + */ + const onOpen = async () => { + if (current.value) { + const res = + await wmsInOutStockOrderDetailDrawer.getWmsInOutStockOrderDetailDetail( + current.value + ) + + formData.value = { + orderNo: res.orderNo, + materialId: res.materialId, + orderType: res.orderType, + materialNo: res.materialNo, + materialName: res.materialName, + containerNo: res.containerNo, + materialModel: res.materialModel, + materialBatch: res.materialBatch, + remark: res.remark, + id: res.id, + } + disabled.value = true + updateCheckData() + } else { + formData.value = {} + + disabled.value = false + updateCheckData() + } + } + + watch(() => current.value, onOpen) + + return { + formItems, + formData, + visible, + formRef, + onOpen, + onClose, + onConfirm, + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/WmsInOutStockOrderDetailQueryDrawer.tsx b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/WmsInOutStockOrderDetailQueryDrawer.tsx new file mode 100644 index 0000000..5031cdd --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Controllers/WmsInOutStockOrderDetailQueryDrawer.tsx @@ -0,0 +1,279 @@ +import { + ref, + onMounted, + reactive, + computed, + Ref, + watch, + SetupContext, + h, +} from 'vue' +import { injectModel } from '@/libs/Provider/Provider' +import { WmsInOutStockOrderDetailDrawer } from '../Models/WmsInOutStockOrderDetailDrawer' +import { ElMessage } from 'element-plus' +import isEqual from 'lodash/isEqual' +import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' +import { cloneDeep } from 'lodash' + +export const useWmsInOutStockOrderDetailQueryDrawer = ( + props: any, + ctx?: any +) => { + const wmsInOutStockOrderDetailDrawer = + injectModel<WmsInOutStockOrderDetailDrawer>( + 'WmsInOutStockOrderDetailDrawer' + ) + /** + * 鐢ㄦ潵瀵规瘮鐨勫垵濮嬪寲鏁版嵁 + */ + const initiateData: Ref<Record<string, any>> = ref({}) + const formData = ref<Record<string, any>>({}) + // ref + const formRef = ref() + + const disabled = ref(false) + + const current = computed(() => { + return props.row || null + }) + + const inputNumber = (attrs) => { + return ( + <el-input-number + min="1" + step="1" + precision="0" + {...attrs} + ></el-input-number> + ) + } + + const datePickerRange = (attrs) => { + return ( + <el-date-picker + type="daterange" + value-format="YYYY-MM-DD HH:mm:ss" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + {...attrs} + ></el-date-picker> + ) + } + + const dateTimePickerRange = (attrs) => { + return ( + <el-date-picker + type="datetimerange" + value-format="YYYY-MM-DD HH:mm:ss" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + {...attrs} + ></el-date-picker> + ) + } + + const visible = computed({ + get() { + return props.modelValue + }, + set(val) { + ctx.emit('update:modelValue', val) + }, + }) + /** + * 娣诲姞鐨刦orm瀛楁 + */ + const formItems = reactive([ + { + label: '鍗曟嵁缂栧彿', + prop: 'orderNo', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ崟鎹紪鍙�', + }, + { + label: '鐗╂枡鍞竴鐮�', + prop: 'materialId', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欏敮涓�鐮�', + }, + { + label: '鍗曟嵁绫诲瀷', + prop: 'orderType', + el: 'select', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ崟鎹被鍨�', + }, + { + label: '鐗╂枡浠跺彿', + prop: 'materialNo', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欎欢鍙�', + }, + { + label: '鐗╂枡鍚嶇О', + prop: 'materialName', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欏悕绉�', + }, + { + label: '瀹瑰櫒缂栧彿', + prop: 'containerNo', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ鍣ㄧ紪鍙�', + }, + { + label: '鍨嬪彿', + prop: 'materialModel', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ瀷鍙�', + }, + { + label: '鐗╂枡鎵规', + prop: 'materialBatch', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欐壒娆�', + }, + { + label: '鍒涘缓鏃堕棿', + prop: 'creationTime', + el: (props: any, { attrs }: SetupContext) => { + return h(dateTimePickerRange, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + //disabled: disabled, + placeholder: '璇疯緭鍏ユ槸鍚︾鐢�', + }, + { + label: '澶囨敞', + prop: 'remark', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ娉�', + }, + ]) + /** + * 鏍¢獙鏄惁鏈夋暟鎹彉鍖� + */ + const checkIsEqualObject = () => { + const data = { + formData: formData.value, + } + const check = isEqual(initiateData.value, data) + return check + } + const commonGetFormData = () => { + const data = { + orderNo: formData.value.orderNo || '', + materialId: formData.value.materialId || '', + orderType: formData.value.orderType || '', + materialNo: formData.value.materialNo || '', + materialName: formData.value.materialName || '', + containerNo: formData.value.containerNo || '', + materialModel: formData.value.materialModel || '', + materialBatch: formData.value.materialBatch || '', + creationTime: formData.value.creationTime || '', + isDisabled: formData.value.isDisabled || '', + remark: formData.value.remark || '', + } + return data + } + const onClose = (done: () => void) => { + if (visible.value) { + visible.value = false + const data = commonGetFormData() + ctx.emit('close', data) + } + } + /** + * 纭鏌ヨ + */ + const onConfirmQuery = async () => { + const data = commonGetFormData() + ctx.emit('confirmQuery', data) + } + /** + * 閲嶇疆鏌ヨ + */ + const onReset = async () => { + formData.value = {} + formData.value.OrderNo = '' + formData.value.MaterialId = '' + formData.value.OrderType = '' + formData.value.MaterialNo = '' + formData.value.MaterialName = '' + formData.value.ContainerNo = '' + formData.value.MaterialModel = '' + formData.value.MaterialBatch = '' + formData.value.Remark = '' + //鍚戠埗缁勪欢鍙戦�佽嚜瀹氫箟浜嬩欢 + ctx.emit('restQuery') + } + + const updateCheckData = () => { + initiateData.value = { + formData: { + ...formData.value, + }, + } + } + 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 commonQueryEnumForFrom = async () => { + const orderTypeEnumEnum = + await wmsInOutStockOrderDetailDrawer.getWmsEnumData({ + EnumName: 'OrderTypeEnum', + }) + updateFormItemOptions('orderType', orderTypeEnumEnum) + } + commonQueryEnumForFrom() + /** + * 寮圭獥鎵撳紑鑾峰彇璇︽儏 + */ + const onOpen = async () => { + disabled.value = false + updateCheckData() + } + + watch(() => current.value, onOpen) + + return { + formItems, + formData, + visible, + formRef, + onOpen, + onClose, + onConfirmQuery, + onReset, + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/Service/WmsInOutStockOrderDetail.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/Service/WmsInOutStockOrderDetail.ts new file mode 100644 index 0000000..65c433b --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/Service/WmsInOutStockOrderDetail.ts @@ -0,0 +1,30 @@ +import { Base } from '@/libs/Base/Base' +const request = Base.request + +/** + * 娣诲姞 + * @returns + */ +export const addWmsInOutStockOrderDetail = (data: any) => { + return request.post('/api/v1/HIAWms/wmsInOutStockOrderDetail', data) +} + +/** + * 鎵归噺鍒犻櫎 + * @returns + */ +export const deleteWmsInOutStockOrderDetails = (ids: string[]) => { + return request({ + data: ids, + url: '/api/v1/HIAWms/wmsInOutStockOrderDetail', + method: 'delete', + }) +} + +/** + * 鍏嬮殕 + * @returns + */ +export const cloneData = (data: any) => { + return request.post('/api/v1/HIAWms/wmsInOutStockOrderDetail/clone', data) +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/Service/WmsInOutStockOrderDetailDrawer.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/Service/WmsInOutStockOrderDetailDrawer.ts new file mode 100644 index 0000000..fd5f155 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/Service/WmsInOutStockOrderDetailDrawer.ts @@ -0,0 +1,34 @@ +import { Base } from '@/libs/Base/Base' +const request = Base.request + +/** + * 娣诲姞 + * @returns + */ +export const addWmsInOutStockOrderDetail = (data: any) => { + return request.post('/api/v1/HIAWms/wmsInOutStockOrderDetail', data) +} + +/** + * 鑾峰彇璇︽儏 + * @returns + */ +export const getWmsInOutStockOrderDetail = (id: string) => { + return request.get(`/api/v1/HIAWms/wmsInOutStockOrderDetail/${id}`) +} + +/** + * 鏇存柊 + * @returns + */ +export const updateWmsInOutStockOrderDetail = (id: string, data: Record<string, any>) => { + return request.put(`/api/v1/HIAWms/wmsInOutStockOrderDetail/${id}`, data) +} + +/** + * 鑾峰彇鏋氫妇 + * @returns + */ +export const getWmsEnumData = (data: any) => { + return request.post('/api/v1/HIAWms/WmsEnum', data) +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/Service/WmsInOutStockOrderDetailQueryDrawer.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/Service/WmsInOutStockOrderDetailQueryDrawer.ts new file mode 100644 index 0000000..9a6aee3 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/Service/WmsInOutStockOrderDetailQueryDrawer.ts @@ -0,0 +1,35 @@ +import { Base } from '@/libs/Base/Base' +const request = Base.request + +/** + * 娣诲姞 + * @returns + */ +export const addWmsInOutStockOrderDetail = (data: any) => { + return request.post('/api/v1/HIAWms/wmsInOutStockOrderDetail', data) +} + +/** + * 鑾峰彇璇︽儏 + * @returns + */ +export const getWmsInOutStockOrderDetail = (id: string) => { + return request.get(`/api/v1/HIAWms/wmsInOutStockOrderDetail/${id}`) +} + +/** + * 鏇存柊 + * @returns + */ +export const updateWmsInOutStockOrderDetail = (id: string, data: Record<string, any>) => { + return request.put(`/api/v1/HIAWms/wmsInOutStockOrderDetail/${id}`, data) +} + +/** + * 鑾峰彇鏋氫妇 + * @returns + */ +export const getWmsEnumData = (data: any) => { + return request.post('/api/v1/HIAWms/WmsEnum', data) +} + diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/WmsInOutStockOrderDetail.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/WmsInOutStockOrderDetail.ts new file mode 100644 index 0000000..f1c2f53 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/WmsInOutStockOrderDetail.ts @@ -0,0 +1,41 @@ +import { Base } from '@/libs/Base/Base' +import { + deleteWmsInOutStockOrderDetails, + addWmsInOutStockOrderDetail, + cloneData, +} from './Service/WmsInOutStockOrderDetail' + +export class WmsInOutStockOrderDetail extends Base<{ [key: string]: any }> { + constructor() { + super({ + data: [], + }) + } + onMounted() {} + /** + * 鍒犻櫎 + * @param id + * @returns + */ + async deleteWmsInOutStockOrderDetails(ids: string[]) { + return deleteWmsInOutStockOrderDetails(ids) + } + + /** + * 娣诲姞鏁版嵁 + * @param data + * @returns + */ + addWmsInOutStockOrderDetail(data: Record<string, any>) { + return addWmsInOutStockOrderDetail(data) + } + + /** + * 鍏嬮殕 + * @param ids + * @returns + */ + cloneData(ids: string[]) { + return cloneData(ids) + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/WmsInOutStockOrderDetailDrawer.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/WmsInOutStockOrderDetailDrawer.ts new file mode 100644 index 0000000..10cff66 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/WmsInOutStockOrderDetailDrawer.ts @@ -0,0 +1,44 @@ +import { Base } from '@/libs/Base/Base' +import { + addWmsInOutStockOrderDetail, + getWmsInOutStockOrderDetail, + updateWmsInOutStockOrderDetail, + getWmsEnumData, +} from './Service/WmsInOutStockOrderDetailDrawer' +import { useGlobalState } from '@/libs/Store/Store' + +export class WmsInOutStockOrderDetailDrawer extends Base<{ [key: string]: any }> { + constructor() { + super({ + data: [], + wmsInOutStockOrderDetail: {}, + }) + } + + /** + * 娣诲姞 + * @param data + */ + async addWmsInOutStockOrderDetail(data: Record<string, any>) { + return addWmsInOutStockOrderDetail(data) + } + /** + * 鏇存柊 + * @param data + */ + async updateWmsInOutStockOrderDetail(id: string, data: Record<string, any>) { + return updateWmsInOutStockOrderDetail(id, data) + } + + /** + * 鑾峰彇璇︽儏 + */ + async getWmsInOutStockOrderDetailDetail(current: any, id?: string) { + return getWmsInOutStockOrderDetail(id || current?.id) + } + + // 鑾峰彇鏋氫妇鍊� + async getWmsEnumData(data: Record<string, any>) { + return getWmsEnumData(data) + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/WmsInOutStockOrderDetailQueryDrawer.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/WmsInOutStockOrderDetailQueryDrawer.ts new file mode 100644 index 0000000..14646cd --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Models/WmsInOutStockOrderDetailQueryDrawer.ts @@ -0,0 +1,44 @@ +import { Base } from '@/libs/Base/Base' +import { + addWmsInOutStockOrderDetail, + getWmsInOutStockOrderDetail, + updateWmsInOutStockOrderDetail, + getWmsEnumData, +} from './Service/WmsInOutStockOrderDetailQueryDrawer' +import { useGlobalState } from '@/libs/Store/Store' + +export class WmsInOutStockOrderDetailQueryDrawer extends Base<{ [key: string]: any }> { + constructor() { + super({ + data: [], + wmsInOutStockOrderDetail: {}, + }) + } + + /** + * 娣诲姞 + * @param data + */ + async addWmsInOutStockOrderDetail(data: Record<string, any>) { + return addWmsInOutStockOrderDetail(data) + } + /** + * 鏇存柊 + * @param data + */ + async updateWmsInOutStockOrderDetail(id: string, data: Record<string, any>) { + return updateWmsInOutStockOrderDetail(id, data) + } + + /** + * 鑾峰彇璇︽儏 + */ + async getWmsInOutStockOrderDetailDetail(current: any, id?: string) { + return getWmsInOutStockOrderDetail(id || current?.id) + } + + // 鑾峰彇鏋氫妇鍊� + async getWmsEnumData(data: Record<string, any>) { + return getWmsEnumData(data) + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailDrawer/WmsInOutStockOrderDetailDrawer.module.scss b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailDrawer/WmsInOutStockOrderDetailDrawer.module.scss new file mode 100644 index 0000000..177adca --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailDrawer/WmsInOutStockOrderDetailDrawer.module.scss @@ -0,0 +1,3 @@ +.drawer { + width: 800px; +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailDrawer/WmsInOutStockOrderDetailDrawer.tsx b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailDrawer/WmsInOutStockOrderDetailDrawer.tsx new file mode 100644 index 0000000..ffbc3d5 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailDrawer/WmsInOutStockOrderDetailDrawer.tsx @@ -0,0 +1,61 @@ +import { SetupContext, defineComponent } from 'vue' +import BaseDrawer from '@/components/BaseDrawer/BaseDrawer' +import styles from './WmsInOutStockOrderDetailDrawer.module.scss' +import { useWmsInOutStockOrderDetailDrawer } from '../../../../Controllers/WmsInOutStockOrderDetailDrawer.tsx' +import DyForm from '@/components/DyForm/DyForm' + +// @ts-ignore +export default defineComponent<{ + [key: string]: any +}>({ + name: '寮圭獥', + props: { + modelValue: { + type: Boolean, + default: false, + }, + title: { + type: String, + default: '', + }, + row: { + type: Object, + }, + sort: { + type: Number, + default: 0, + }, + }, + emits: ['update:modelValue', 'close', 'submit', 'confirm'], + setup(props: Record<string, any>, ctx: SetupContext) { + const { + onClose, + onConfirm, + onOpen, + formRef, + visible, + formItems, + formData, + } = useWmsInOutStockOrderDetailDrawer(props, ctx) + return () => ( + <BaseDrawer + class={styles.drawer} + size="800px" + title={props.title || '娣诲姞'} + v-model={visible.value} + close-on-click-modal={true} + onConfirm={onConfirm} + onOpen={onOpen} + before-close={onClose} + onClose={onClose} + > + <DyForm + ref={formRef} + formData={formData.value} + labelWidth="106px" + formItemProps={formItems} + ></DyForm> + </BaseDrawer> + ) + }, +}) diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailQueryDrawer/WmsInOutStockOrderDetailQueryDrawer.module.scss b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailQueryDrawer/WmsInOutStockOrderDetailQueryDrawer.module.scss new file mode 100644 index 0000000..177adca --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailQueryDrawer/WmsInOutStockOrderDetailQueryDrawer.module.scss @@ -0,0 +1,3 @@ +.drawer { + width: 800px; +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailQueryDrawer/WmsInOutStockOrderDetailQueryDrawer.tsx b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailQueryDrawer/WmsInOutStockOrderDetailQueryDrawer.tsx new file mode 100644 index 0000000..7c2386b --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/Dialog/WmsInOutStockOrderDetailQueryDrawer/WmsInOutStockOrderDetailQueryDrawer.tsx @@ -0,0 +1,71 @@ +/* + * 鐗╂枡鍩虹淇℃伅鏌ヨ寮瑰嚭妗� +*/ +import { SetupContext, defineComponent } from 'vue' +import BaseQueryDrawer from '@/components/BaseQueryDrawer/BaseQueryDrawer' +import styles from './WmsInOutStockOrderDetailQueryDrawer.module.scss' +import { useWmsInOutStockOrderDetailQueryDrawer } from '../../../../Controllers/WmsInOutStockOrderDetailQueryDrawer.tsx' +import DyForm from '@/components/DyForm/DyForm' + +// @ts-ignore +export default defineComponent<{ + [key: string]: any +}>({ + name: '寮圭獥', + props: { + //鏋氫妇绫诲瀷瀛楀吀 + enumListDict:{ + type: Array as () => Array<{ key: string; value: object }>, // 瀹氫箟鏁扮粍鍏冪礌绫诲瀷 + default: () => [] // 榛樿鍊� + }, + modelValue: { + type: Boolean, + default: false, + }, + title: { + type: String, + default: '', + }, + row: { + type: Object, + }, + sort: { + type: Number, + default: 0, + }, + }, + emits: ['update:modelValue', 'close', 'submit', 'confirmquery1'], + setup(props: Record<string, any>, ctx: SetupContext) { + const { + onClose, + onConfirmQuery, + onOpen, + onReset, + formRef, + visible, + formItems, + formData, + } = useWmsInOutStockOrderDetailQueryDrawer(props, ctx) + return () => ( + <BaseQueryDrawer + class={styles.drawer} + size="800px" + title={props.title || '楂樼骇鏌ヨ'} + v-model={visible.value} + close-on-click-modal={true} + onReset={onReset} + onConfirmQueryForBase={onConfirmQuery} + onOpen={onOpen} + before-close={onClose} + onClose={onClose} + > + <DyForm + ref={formRef} + formData={formData.value} + labelWidth="106px" + formItemProps={formItems} + ></DyForm> + </BaseQueryDrawer> + ) + }, +}) diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/WmsInOutStockOrderDetail/Config.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/WmsInOutStockOrderDetail/Config.ts new file mode 100644 index 0000000..86f43fa --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/WmsInOutStockOrderDetail/Config.ts @@ -0,0 +1,55 @@ +export const columns = [ + { + type: 'seq', + width: 60, + title: '搴忓彿', + }, + { + field: 'orderNo', + title: '鍗曟嵁缂栧彿', + }, + { + field: 'materialId', + title: '鐗╂枡鍞竴鐮�', + }, + { + field: 'orderTypeDesc', + title: '鍗曟嵁绫诲瀷', + }, + { + field: 'materialNo', + title: '鐗╂枡浠跺彿', + }, + { + field: 'materialName', + title: '鐗╂枡鍚嶇О', + }, + { + field: 'containerNo', + title: '瀹瑰櫒缂栧彿', + }, + { + field: 'materialModel', + title: '鍨嬪彿', + }, + { + field: 'materialBatch', + title: '鐗╂枡鎵规', + }, + // { + // field: 'creationTime', + // title: '鏄惁绂佺敤', + // }, + // { + // field: 'deletionTime', + // title: '', + // }, + { + field: 'remark', + title: '澶囨敞', + }, + // { + // field: 'sort', + // title: '鎺掑簭', + // }, +] diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.module.scss b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.module.scss new file mode 100644 index 0000000..38a41bd --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.module.scss @@ -0,0 +1,113 @@ +.wmsInOutStockOrderDetailContent { + width: 100%; + height: 100%; + + .wmsInOutStockOrderDetailList { + width: 100%; + height: calc(100% - 70px); + } + .headerContent { + display: flex; + justify-content: space-between; + align-items: center; + height: 43px; + } + .header { + margin-bottom: 12px; + display: flex; + justify-content: flex-end; + align-items: center; + } +} + +.tagBox { + width: auto; + min-width: 80px; + height: 24px; + background: #ffffff; + border-radius: 19px 19px 19px 19px; + opacity: 1; + border: 1px dashed #bcc4cc; + width: 50px; + height: 20px; + font-size: 14px; + font-family: PingFang SC, PingFang SC; + font-weight: 400; + color: #5a84ff; + display: flex; + justify-content: center; + align-items: center; + // cursor: pointer; +} + +.group { + display: flex; + justify-content: space-between; + align-items: center; +} + +.groupTable { + width: 100%; +} + +.overBox { + width: 100%; + height: calc(100% - 20px); + overflow: auto; + :global(.cs-collapse-item__header) { + background-color: #f1f1f1; + padding: 0 20px; + height: 35px; + font-size: 16px; + font-family: PingFang SC, PingFang SC; + font-weight: 500; + } + :global(.cs-collapse-item__content) { + padding-bottom: 0px; + } +} +.groupHeader { + width: 100%; + height: 30px; + background: #ccc; +} + +.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%; + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.tsx b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.tsx new file mode 100644 index 0000000..c464fc7 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.tsx @@ -0,0 +1,362 @@ +import { computed, defineComponent, onMounted, reactive, ref } from 'vue' +import type { Ref } from 'vue' +import BaseTable from '@/components/Table/Table' +import styles from './WmsInOutStockOrderDetail.module.scss' +import { useWmsInOutStockOrderDetail } from '../../../Controllers/WmsInOutStockOrderDetail' +import IconButton from '@/components/IconButton/IconButton' +import WmsInOutStockOrderDetailDrawer from '../Dialog/WmsInOutStockOrderDetailDrawer/WmsInOutStockOrderDetailDrawer' +import WmsInOutStockOrderDetailQueryDrawer from '../Dialog/WmsInOutStockOrderDetailQueryDrawer/WmsInOutStockOrderDetailQueryDrawer' +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/WmsInOutStockOrderDetail/Models/Service/WmsInOutStockOrderDetailDrawer' +import dayjs from 'dayjs' +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: 'WmsInOutStockOrderDetail', + directives: { + permission: vPermission, + }, + setup(props, ctx) { + const { + dataSource, + contextMenu, + dialogConfig, + dialogConfigForQuery, + tableRef, + current, + search, + sort, + headers, + onError, + onSearch, + onRowClick, + onConfirmWmsInOutStockOrderDetail, + onCheck, + onAddWmsInOutStockOrderDetail, + onAdvancedQuery, + onExport, + openDetail, + onSuccess, + onBeforeUpload, + } = useWmsInOutStockOrderDetail(props, ctx) + + //瀹氫箟楂樼骇鏌ヨ寮曠敤 + const wmsInOutStockOrderDetailQueryDrawerRef = ref(null) + // 鏂板鐨勬煡璇㈡潯浠� + const queryForm = ref({ + searchVal: '', + str_searchFormInputAttrs: [], + }) + //瀹氫箟鏁翠綋妯$硦鏌ヨ鐨勫垪鏁扮粍(娉ㄦ剰锛氬繀椤诲ぇ灏忓啓璺熷悗绔殑瀹炰綋绫诲睘鎬у悕涓�鑷达紝鍚﹀垯浼氬鑷村尮閰嶄笉瀵圭殑闂) + const _searchFormInputAttrs = ref(['OrderNo', 'MaterialNo', 'MaterialId']) + const searchFormInputAttrs_Placeholder = ref('璇疯緭鍏ュ崟鎹彿/鐗╂枡缂栧彿/鐗╂枡ID') + + // 鍔ㄦ�佹灇涓鹃�夐」 + const enumOptions = reactive({ + orderType: [] as Array<{ label: string; value: any }>, + }) + + // 鑾峰彇鏋氫妇鏁版嵁 + const fetchEnumData = async () => { + try { + const orderTypeEnumData = await getWmsEnumData({ + EnumName: 'OrderTypeEnum', + }) + enumOptions.orderType = orderTypeEnumData.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.wmsInOutStockOrderDetailList]: true, + }} + > + <BaseTable + ref={tableRef} + url={url} + sortUrlTpl="/api/v1/HIAWms/wmsInOutStockOrderDetail/{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={{ + creationTime: ({ row }: any) => { + return ( + <div> + {row.creationTime != null + ? dayjs(row.creationTime).format('YYYY-MM-DD HH:mm:ss') + : '-'} + </div> + ) + }, + deletionTime: ({ row }: any) => { + return ( + <div> + {row.deletionTime != null + ? dayjs(row.deletionTime).format('YYYY-MM-DD HH:mm:ss') + : '-'} + </div> + ) + }, + isDeleted: ({ row }: any) => { + return ( + <div> + {row.isDeleted != null + ? row.isDeleted + ? '鏄�' + : '鍚�' + : '-'} + </div> + ) + }, + isDisabled: ({ row }: any) => { + return ( + <div> + {row.isDisabled != null + ? row.isDisabled + ? '鏄�' + : '鍚�' + : '-'} + </div> + ) + }, + lastModificationTime: ({ row }: any) => { + return ( + <div> + {row.lastModificationTime != null + ? dayjs(row.lastModificationTime).format( + 'YYYY-MM-DD HH:mm:ss' + ) + : '-'} + </div> + ) + }, + 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.wmsInOutStockOrderDetailContent}> + {/* 娣诲姞/缂栬緫 */} + <WmsInOutStockOrderDetailDrawer + v-model={dialogConfig.visible} + title={dialogConfig.title} + row={current.value} + sort={sort.value} + onConfirm={onConfirmWmsInOutStockOrderDetail} + /> + {/* 楂樼骇鏌ヨ */} + <WmsInOutStockOrderDetailQueryDrawer + ref="wmsInOutStockOrderDetailQueryDrawerRef" + 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="wmsInOutStockOrderDetail-add" + icon="add-p" + onClick={onAddWmsInOutStockOrderDetail} + type="primary" + > + 娣诲姞 + </IconButton> + <el-divider direction="vertical" /> + + <el-divider direction="vertical" /> + <el-upload + v-permission="wmsInOutStockOrderDetail-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/wmsInOutStockOrderDetail/import" + > + <IconButton icon="in">瀵煎叆</IconButton> + </el-upload> + + <IconButton + v-permission="wmsInOutStockOrderDetail-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="wmsInOutStockOrderDetail-add" + icon="search" + onClick={onAdvancedQuery} + type="primary" + > + 楂樼骇鏌ヨ + </IconButton> + </ElFormItem> + </div> + + <RenderBaseTable + url="/api/v1/HIAWms/wmsInOutStockOrderDetail/page" + dataSource={dataSource} + isChecked={true} + isDrag={true} + /> + </div> + ) + } + }, +}) diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/WmsInOutStockOrderDetail.module.scss b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/WmsInOutStockOrderDetail.module.scss new file mode 100644 index 0000000..3464bec --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/WmsInOutStockOrderDetail.module.scss @@ -0,0 +1,7 @@ +.WmsInOutStockOrderDetail { + background-color: #fff; + border-radius: 5px 5px 0 0; + width: 100%; + height: 100%; + border: 1px solid #dbdbdb; +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/WmsInOutStockOrderDetail.tsx b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/WmsInOutStockOrderDetail.tsx new file mode 100644 index 0000000..7695430 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/WmsInOutStockOrderDetail.tsx @@ -0,0 +1,80 @@ +import { + Component, + DefineComponent, + defineComponent, + markRaw, + ref, + SetupContext, + onMounted, +} from 'vue' +import styles from './WmsInOutStockOrderDetail.module.scss' +import Tab from '@/components/Tab/Tab' +import { useProvideModels } from '@/libs/Provider/app' +import { usePermission } from '@/libs/Permission/Permission' +import { permissionCodes } from '../enum' +import { ModuleType, TabItem } from '../type/Type' +import { getEntityNames } from '@/hooks/hook' +import TabPane from '@/components/Tab/TabPane' + +const Models: ModuleType = import.meta.glob('./config/*.json', { + eager: true, +}) + +const entityNames = getEntityNames(Models) + +const nameToLabelMap = [{ name: 'WmsInOutStockOrderDetail', label: '鍑哄叆搴撳崟鎹鎯�' }] + +export default defineComponent({ + name: 'WmsInOutStockOrderDetail', + + setup(props, ctx: SetupContext) { + useProvideModels() + usePermission(props, permissionCodes) + + const rf = ref<{ + [key: string]: any + }>({}) + + const tabData = ref<TabItem[]>([]) + + const onTabChange = (v: string) => { + rf.value?.[v]?.reloadList() + } + + const initTableData = async () => { + for (const i in entityNames) { + const name = entityNames[i] + const module = await import(`./Pages/${name}/${name}.tsx`) + const WmsInOutStockOrderDetail = markRaw(module.default) + const foundLabel = + nameToLabelMap.find((item) => item.name === name)?.label || name + tabData.value.push({ + label: foundLabel, + name, + component: WmsInOutStockOrderDetail, + }) + } + } + + initTableData() + + return () => { + return ( + <div class={styles.WmsInOutStockOrderDetail}> + <Tab data={tabData.value} type="list" onTab={onTabChange}> + {tabData.value.map((widgetInfo) => { + const Widget: any = widgetInfo.component + return ( + <TabPane label={widgetInfo.label} name={widgetInfo.name}> + <Widget + ref={(r: any) => (rf.value['WmsInOutStockOrderDetail'] = r)} + ></Widget> + </TabPane> + ) + })} + </Tab> + </div> + ) + } + }, +}) diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/config/WmsInOutStockOrderDetail.json b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/config/WmsInOutStockOrderDetail.json new file mode 100644 index 0000000..81b0735 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/config/WmsInOutStockOrderDetail.json @@ -0,0 +1,3 @@ +{ + "name": "WmsInOutStockOrderDetail" +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/enum.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/enum.ts new file mode 100644 index 0000000..8983ab2 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/enum.ts @@ -0,0 +1,15 @@ +export interface TabType { + label: string + name: string + columns?: any[] + data?: any[] + isFooter: boolean + [key: string]: any +} + +export const permissionCodes = { + 'wmsInOutStockOrderDetail-list': '鍒楄〃-鍒楄〃', + 'wmsInOutStockOrderDetail-add': '鍒楄〃-娣诲姞', + 'wmsInOutStockOrderDetail-import': '鍒楄〃-瀵煎叆', + 'wmsInOutStockOrderDetail-output': '鍒楄〃-杈撳嚭', +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/index.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/index.ts new file mode 100644 index 0000000..215bc5c --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/index.ts @@ -0,0 +1,14 @@ +import WmsInOutStockOrderDetail from './Views/WmsInOutStockOrderDetail' +import Setting from '@/components/Setting/Setting' +import { provider } from '@/provider/index' +import p from '../../assets/svg/p.svg' + +export default { + is: 'WmsInOutStockOrderDetail', + name: '鍑哄叆搴撳崟鎹鎯�', + category: 'run', + icon: p, + authorizationRequired: false, + canvasView: provider(WmsInOutStockOrderDetail), + settingsView: Setting, +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/type/type.d.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/type/type.d.ts new file mode 100644 index 0000000..002a2e7 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/type/type.d.ts @@ -0,0 +1,45 @@ +import { Component } from 'vue' + +export interface DataItemType { + id?: string + name?: string + code?: string + description?: string + label?: string + value?: string | number +} + +export interface WmsInOutStockOrderDetailBaseType { + id?: string + name?: string + code?: string + value?: number + description?: string + options?: Array<DataItemType> + abilityValue?: number | string + data?: DataItemType + defaultValue?: string | number + flow: string +} + +export interface FlowDefinitionType { + id?: string + name?: string + code?: string + description?: string +} + +export type ModuleType = Record< + string, + { + default: Record<string, string> + name: string + } +> + +export interface TabItem { + name: string + label: string + component: Component + hidden?: boolean +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordDrawer.tsx b/HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordDrawer.tsx index c25a205..5f684e3 100644 --- a/HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordDrawer.tsx +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordDrawer.tsx @@ -140,11 +140,11 @@ placeholder: '璇疯緭鍏ョ洰鏍囧簱浣�', }, { - label: '鏈哄瀷', + label: '鍨嬪彿', prop: 'materialModel', el: 'input', //disabled: disabled, - placeholder: '璇疯緭鍏ユ満鍨�', + placeholder: '璇疯緭鍏ュ瀷鍙�', }, { label: '鎿嶄綔鏃堕棿', diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordQueryDrawer.tsx b/HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordQueryDrawer.tsx index 55bb4ef..a7c29a5 100644 --- a/HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordQueryDrawer.tsx +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordQueryDrawer.tsx @@ -116,11 +116,11 @@ placeholder: '璇疯緭鍏ュ鍣ㄧ紪鍙�', }, { - label: '鏈哄瀷', + label: '鍨嬪彿', prop: 'materialModel', el: 'input', //disabled: disabled, - placeholder: '璇疯緭鍏ユ満鍨�', + placeholder: '璇疯緭鍏ュ瀷鍙�', }, { label: '鎿嶄綔鏃堕棿', diff --git a/HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/Config.ts b/HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/Config.ts index 98c79fe..3e45265 100644 --- a/HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/Config.ts +++ b/HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/Config.ts @@ -42,7 +42,7 @@ }, { field: 'materialModel', - title: '鏈哄瀷', + title: '鍨嬪彿', }, { field: 'remark', diff --git a/HIAWms/hiawms_web/src/widgets/WmsMaterialContainer/Views/Pages/WmsMaterialContainer/WmsMaterialContainer.tsx b/HIAWms/hiawms_web/src/widgets/WmsMaterialContainer/Views/Pages/WmsMaterialContainer/WmsMaterialContainer.tsx index e75418d..46b3313 100644 --- a/HIAWms/hiawms_web/src/widgets/WmsMaterialContainer/Views/Pages/WmsMaterialContainer/WmsMaterialContainer.tsx +++ b/HIAWms/hiawms_web/src/widgets/WmsMaterialContainer/Views/Pages/WmsMaterialContainer/WmsMaterialContainer.tsx @@ -236,7 +236,7 @@ <el-divider direction="vertical" /> <el-divider direction="vertical" /> - <el-upload + {/* <el-upload v-permission="wmsMaterialContainer-import" name="file" accept=".xlsx,.xls,.csv" @@ -256,7 +256,7 @@ onClick={handleExport} > 瀵煎嚭 - </IconButton> + </IconButton> */} </div> <ElFormItem style={{ marginTop: '15px' }}> <ElFormItem label="鍏抽敭瀛�"> diff --git a/HIAWms/hiawms_web/src/widgets/WmsMaterialContainer/Views/WmsMaterialContainer.tsx b/HIAWms/hiawms_web/src/widgets/WmsMaterialContainer/Views/WmsMaterialContainer.tsx index 661855a..a8fbaff 100644 --- a/HIAWms/hiawms_web/src/widgets/WmsMaterialContainer/Views/WmsMaterialContainer.tsx +++ b/HIAWms/hiawms_web/src/widgets/WmsMaterialContainer/Views/WmsMaterialContainer.tsx @@ -1,80 +1,80 @@ -import { - Component, - DefineComponent, - defineComponent, - markRaw, - ref, - SetupContext, - onMounted, -} from 'vue' -import styles from './WmsMaterialContainer.module.scss' -import Tab from '@/components/Tab/Tab' -import { useProvideModels } from '@/libs/Provider/app' -import { usePermission } from '@/libs/Permission/Permission' -import { permissionCodes } from '../enum' -import { ModuleType, TabItem } from '../type/Type' -import { getEntityNames } from '@/hooks/hook' -import TabPane from '@/components/Tab/TabPane' - -const Models: ModuleType = import.meta.glob('./config/*.json', { - eager: true, -}) - -const entityNames = getEntityNames(Models) - -const nameToLabelMap = [{ name: 'WmsMaterialContainer', label: '鐗╂枡瀹瑰櫒鍏崇郴' }] - -export default defineComponent({ - name: 'WmsMaterialContainer', - - setup(props, ctx: SetupContext) { - useProvideModels() - usePermission(props, permissionCodes) - - const rf = ref<{ - [key: string]: any - }>({}) - - const tabData = ref<TabItem[]>([]) - - const onTabChange = (v: string) => { - rf.value?.[v]?.reloadList() - } - - const initTableData = async () => { - for (const i in entityNames) { - const name = entityNames[i] - const module = await import(`./Pages/${name}/${name}.tsx`) - const WmsMaterialContainer = markRaw(module.default) - const foundLabel = - nameToLabelMap.find((item) => item.name === name)?.label || name - tabData.value.push({ - label: foundLabel, - name, - component: WmsMaterialContainer, - }) - } - } - - initTableData() - - return () => { - return ( - <div class={styles.WmsMaterialContainer}> - <Tab data={tabData.value} type="list" onTab={onTabChange}> - {tabData.value.map((widgetInfo) => { - const Widget: any = widgetInfo.component - return ( - <TabPane label={widgetInfo.label} name={widgetInfo.name}> - <Widget - ref={(r: any) => (rf.value['WmsMaterialContainer'] = r)} - ></Widget> - </TabPane> - ) - })} - </Tab> - </div> - ) - } - }, -}) +import { + Component, + DefineComponent, + defineComponent, + markRaw, + ref, + SetupContext, + onMounted, +} from 'vue' +import styles from './WmsMaterialContainer.module.scss' +import Tab from '@/components/Tab/Tab' +import { useProvideModels } from '@/libs/Provider/app' +import { usePermission } from '@/libs/Permission/Permission' +import { permissionCodes } from '../enum' +import { ModuleType, TabItem } from '../type/Type' +import { getEntityNames } from '@/hooks/hook' +import TabPane from '@/components/Tab/TabPane' + +const Models: ModuleType = import.meta.glob('./config/*.json', { + eager: true, +}) + +const entityNames = getEntityNames(Models) + +const nameToLabelMap = [{ name: 'WmsMaterialContainer', label: '鐗╂枡瀹瑰櫒鍏崇郴' }] + +export default defineComponent({ + name: 'WmsMaterialContainer', + + setup(props, ctx: SetupContext) { + useProvideModels() + usePermission(props, permissionCodes) + + const rf = ref<{ + [key: string]: any + }>({}) + + const tabData = ref<TabItem[]>([]) + + const onTabChange = (v: string) => { + rf.value?.[v]?.reloadList() + } + + const initTableData = async () => { + for (const i in entityNames) { + const name = entityNames[i] + const module = await import(`./Pages/${name}/${name}.tsx`) + const WmsMaterialContainer = markRaw(module.default) + const foundLabel = + nameToLabelMap.find((item) => item.name === name)?.label || name + tabData.value.push({ + label: foundLabel, + name, + component: WmsMaterialContainer, + }) + } + } + + initTableData() + + return () => { + return ( + <div class={styles.WmsMaterialContainer}> + <Tab data={tabData.value} type="list" onTab={onTabChange}> + {tabData.value.map((widgetInfo) => { + const Widget: any = widgetInfo.component + return ( + <TabPane label={widgetInfo.label} name={widgetInfo.name}> + <Widget + ref={(r: any) => (rf.value['WmsMaterialContainer'] = r)} + ></Widget> + </TabPane> + ) + })} + </Tab> + </div> + ) + } + }, +}) diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/GetWmsInOutStockOrderInput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/GetWmsInOutStockOrderInput.cs new file mode 100644 index 0000000..7b56035 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/GetWmsInOutStockOrderInput.cs @@ -0,0 +1,279 @@ +using CmsQueryExtensions.Extension; +using Volo.Abp.Application.Dtos; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrder; + +/// <summary> +/// 鍑哄叆搴撳崟鎹煡璇㈠弬鏁� +/// </summary> +public class GetWmsInOutStockOrderInput : ExtensiblePagedAndSortedResultRequestDto +{ + + #region 鍏抽敭瀛楁煡璇� + + /// <summary> + /// 鍏抽敭瀛楁ā绯婃煡璇紙娉ㄦ剰鏄皬鍐欙紒锛� + /// </summary> + public string searchVal { get; set; } + + /// <summary> + /// 閫氱敤鏌ヨ閰嶇疆 (1:妯$硦鏌ヨ , 2:绮惧噯鏌ヨ)锛堟敞鎰忔槸灏忓啓锛侊級 + /// </summary> + public SearchFilterModeEnum searchVal_FilterMode { get; set; } = SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 瀛愭悳绱㈢粍浠朵紶閫掔殑閫氱敤鏌ヨ閰嶇疆鐨勫睘鎬у悕锛堟敞鎰忔槸灏忓啓锛侊級 + /// </summary> + [NoAutoQuery] + public string str_searchFormInputAttrs { get; set; } + /// <summary> + /// 瀛愭悳绱㈢粍浠朵紶閫掔殑閫氱敤鏌ヨ閰嶇疆鐨勫睘鎬у悕锛堟敞鎰忔槸灏忓啓锛侊級 + /// </summary> + public List<string> searchFormInputAttrs + { + get + { + if (!string.IsNullOrEmpty(str_searchFormInputAttrs)) + { + return str_searchFormInputAttrs.Split(',').ToList(); + } + return new List<string>(); + } + } + + #endregion + + /// <summary> + /// 鍗曟嵁缂栧彿 + /// </summary> + public string OrderNo { get; set; } + + /// <summary> + /// 鍗曟嵁缂栧彿-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum OrderNo_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鍗曟嵁鐘舵�� + /// </summary> + public int? OrderStatus { get; set; } + + /// <summary> + /// 鍗曟嵁鐘舵��-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum OrderStatus_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + public string MaterialName { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum MaterialName_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鐗╂枡浠跺彿 + /// </summary> + public string MaterialNo { get; set; } + + /// <summary> + /// 鐗╂枡浠跺彿-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum MaterialNo_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鍨嬪彿 + /// </summary> + public string MaterialModel { get; set; } + + /// <summary> + /// 鍨嬪彿-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum MaterialModel_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鎵规鍙� + /// </summary> + public string MaterialBatch { get; set; } + + /// <summary> + /// 鎵规鍙�-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum MaterialBatch_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鍗曟嵁绫诲瀷 + /// </summary> + public int? OrderType { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum OrderType_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 鎿嶄綔绫诲瀷锛堟灇涓惧�硷級 + /// </summary> + public int? StockType { get; set; } + + /// <summary> + /// 鎿嶄綔绫诲瀷锛堟灇涓惧�硷級-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum StockType_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 鍗曟嵁鏁伴噺 + /// </summary> + public int? MaterialNumber { get; set; } + + /// <summary> + /// 鍗曟嵁鏁伴噺-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum MaterialNumber_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 涓嬪彂鏁伴噺 + /// </summary> + public int? DistributeNumber { get; set; } + + /// <summary> + /// 涓嬪彂鏁伴噺-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum DistributeNumber_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 瀹屾垚鏁伴噺 + /// </summary> + public int? CompleteNumber { get; set; } + + /// <summary> + /// 瀹屾垚鏁伴噺-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum CompleteNumber_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 浼樺厛绾� + /// </summary> + public int? Priority { get; set; } + + /// <summary> + /// 浼樺厛绾�-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum Priority_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 鍏宠仈璁″垝缂栧彿 + /// </summary> + public string PlanNo { get; set; } + + /// <summary> + /// 鍏宠仈璁″垝缂栧彿-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum PlanNo_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鎿嶄綔鏃堕棿 + /// </summary> + //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规�� + [HighSearchRangeAttribute] + public List<string> OperateTime { get; set; } + + + /// <summary> + /// 澶囨敞 + /// </summary> + public string Remark { get; set; } + + /// <summary> + /// 澶囨敞-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum Remark_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鎺掑簭 + /// </summary> + public int? Sort { get; set; } + + /// <summary> + /// 鎺掑簭-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum Sort_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool? IsDisabled { get; set; } + + /// <summary> + /// 鏄惁绂佺敤-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum IsDisabled_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规�� + [HighSearchRangeAttribute] + public List<string> CreationTime { get; set; } + + + /// <summary> + /// + /// </summary> + public string CreatorId { get; set; } + + /// <summary> + /// -鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum CreatorId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// + /// </summary> + //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规�� + [HighSearchRangeAttribute] + public List<string> LastModificationTime { get; set; } + + + /// <summary> + /// + /// </summary> + public string LastModifierId { get; set; } + + /// <summary> + /// -鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum LastModifierId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// + /// </summary> + public bool? IsDeleted { get; set; } + + /// <summary> + /// -鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum IsDeleted_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// + /// </summary> + public string DeleterId { get; set; } + + /// <summary> + /// -鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum DeleterId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// + /// </summary> + //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规�� + [HighSearchRangeAttribute] + public List<string> DeletionTime { get; set; } + + + +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderCreateDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderCreateDto.cs new file mode 100644 index 0000000..067d083 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderCreateDto.cs @@ -0,0 +1,17 @@ +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrder; + +/// <summary> +/// 鍑哄叆搴撳崟鎹垱寤哄弬鏁板璞� +/// </summary> +public class WmsInOutStockOrderCreateDto : WmsInOutStockOrderCreateOrUpdateDtoBase +{ + /// <summary> + /// 鎺掑簭 + /// </summary> + public virtual int? Sort { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool? IsDisabled { get; set; } = false; +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderCreateOrUpdateDtoBase.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderCreateOrUpdateDtoBase.cs new file mode 100644 index 0000000..de0c11c --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderCreateOrUpdateDtoBase.cs @@ -0,0 +1,115 @@ +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +using System; +using Volo.Abp.Application.Dtos; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrder; + +/// <summary> +/// 鍑哄叆搴撳崟鎹垱寤烘垨鏇存柊鍩虹被 +/// </summary> +public abstract class WmsInOutStockOrderCreateOrUpdateDtoBase : ExtensibleEntityDto +{ + /// <summary> + /// 鍗曟嵁缂栧彿 + /// </summary> + public string OrderNo { get; set; } + + /// <summary> + /// 鍗曟嵁鐘舵�� + /// </summary> + public OrderStatusEnum OrderStatus { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + public string? MaterialName { get; set; } + + /// <summary> + /// 鐗╂枡浠跺彿 + /// </summary> + public string MaterialNo { get; set; } + + /// <summary> + /// 鍨嬪彿 + /// </summary> + public string? MaterialModel { get; set; } + + /// <summary> + /// 鎵规鍙� + /// </summary> + public string MaterialBatch { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷 + /// </summary> + public OrderTypeEnum OrderType { get; set; } + + /// <summary> + /// 鎿嶄綔绫诲瀷锛堟灇涓惧�硷級 + /// </summary> + public StockTypeEnum StockType { get; set; } + + /// <summary> + /// 鍗曟嵁鏁伴噺 + /// </summary> + public int MaterialNumber { get; set; } + + /// <summary> + /// 涓嬪彂鏁伴噺 + /// </summary> + public int DistributeNumber { get; set; } + + /// <summary> + /// 瀹屾垚鏁伴噺 + /// </summary> + public int CompleteNumber { get; set; } + + /// <summary> + /// 浼樺厛绾� + /// </summary> + public int Priority { get; set; } + + /// <summary> + /// 鍏宠仈璁″垝缂栧彿 + /// </summary> + public string? PlanNo { get; set; } + + /// <summary> + /// 鎿嶄綔鏃堕棿 + /// </summary> + public DateTime? OperateTime { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + public string? Remark { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + public int Sort { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool? IsDisabled { get; set; } + + /// <summary> + /// + /// </summary> + public string? CreatorId { get; set; } + + /// <summary> + /// + /// </summary> + public string? LastModifierId { get; set; } + + + + /// <summary> + /// Initializes a new instance of the <see cref="WmsInOutStockOrderCreateOrUpdateDtoBase"/> class. + /// </summary> + public WmsInOutStockOrderCreateOrUpdateDtoBase() : base(false) + { + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderDto.cs new file mode 100644 index 0000000..01e07b4 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderDto.cs @@ -0,0 +1,191 @@ +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +using CmsQueryExtensions; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Data; +using Volo.Abp.Domain.Entities; + + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrder; + +/// <summary> +/// 鍑哄叆搴撳崟鎹暟鎹弬鏁板璞� +/// </summary> +public class WmsInOutStockOrderDto: ExtensibleEntityDto<Guid>, IHasConcurrencyStamp +{ + /// <summary> + /// 鍗曟嵁缂栧彿 + /// </summary> + public string OrderNo { get; set; } + + /// <summary> + /// 鍗曟嵁鐘舵�� + /// </summary> + public OrderStatusEnum OrderStatus { get; set; } + + /// <summary> + /// 鍗曟嵁鐘舵�� + /// </summary> + public string OrderStatusDesc + { + get + { + return GetEnumDescriptionUtil.GetEnumDescription(OrderStatus); + } + } + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + public string? MaterialName { get; set; } + + /// <summary> + /// 鐗╂枡浠跺彿 + /// </summary> + public string MaterialNo { get; set; } + + /// <summary> + /// 鍨嬪彿 + /// </summary> + public string? MaterialModel { get; set; } + + /// <summary> + /// 鎵规鍙� + /// </summary> + public string MaterialBatch { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷 + /// </summary> + public OrderTypeEnum OrderType { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷 + /// </summary> + public string OrderTypeDesc + { + get + { + return GetEnumDescriptionUtil.GetEnumDescription(OrderType); + } + } + /// <summary> + /// 鎿嶄綔绫诲瀷锛堟灇涓惧�硷級 + /// </summary> + public StockTypeEnum StockType { get; set; } + + /// <summary> + /// 鎿嶄綔绫诲瀷锛堟灇涓惧�硷級 + /// </summary> + public string StockTypeDesc + { + get + { + return GetEnumDescriptionUtil.GetEnumDescription(StockType); + } + } + /// <summary> + /// 鍗曟嵁鏁伴噺 + /// </summary> + public int MaterialNumber { get; set; } + + /// <summary> + /// 涓嬪彂鏁伴噺 + /// </summary> + public int DistributeNumber { get; set; } + + /// <summary> + /// 瀹屾垚鏁伴噺 + /// </summary> + public int CompleteNumber { get; set; } + + /// <summary> + /// 浼樺厛绾� + /// </summary> + public int Priority { get; set; } + + /// <summary> + /// 鍏宠仈璁″垝缂栧彿 + /// </summary> + public string? PlanNo { get; set; } + + /// <summary> + /// 鎿嶄綔鏃堕棿 + /// </summary> + public DateTime? OperateTime { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + public string? Remark { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + public int Sort { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool? IsDisabled { get; set; } + + /// <summary> + /// + /// </summary> + public ExtraPropertyDictionary? ExtraProperties { get; set; } + + /// <summary> + /// + /// </summary> + public string? ConcurrencyStamp { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + public DateTime CreationTime { get; set; } + + /// <summary> + /// + /// </summary> + public string? CreatorId { get; set; } + + /// <summary> + /// + /// </summary> + public DateTime? LastModificationTime { get; set; } + + /// <summary> + /// + /// </summary> + public string? LastModifierId { get; set; } + + /// <summary> + /// + /// </summary> + public bool IsDeleted { get; set; } + + /// <summary> + /// + /// </summary> + public string? DeleterId { get; set; } + + /// <summary> + /// + /// </summary> + public DateTime? DeletionTime { get; set; } + + + + /// <summary> + /// Gets the export data. + /// </summary> + /// <returns></returns> + public Dictionary<string, object> GetExportData() + { + var exportData = new Dictionary<string, object>(); + foreach (var property in this.GetType().GetProperties()) + { + exportData.Add(property.Name, property.GetValue(this)); + } + + return exportData; + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderExportModel.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderExportModel.cs new file mode 100644 index 0000000..f4dcc3d --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderExportModel.cs @@ -0,0 +1,127 @@ +using MiniExcelLibs.Attributes; +using System.ComponentModel.DataAnnotations; +using System; +using System.ComponentModel; +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrder; + +/// <summary> +/// 鍑哄叆搴撳崟鎹鍑烘ā鍨� +/// </summary> +public class WmsInOutStockOrderExportModel +{ + /// <summary> + /// 鍗曟嵁缂栧彿 + /// </summary> + [ExcelColumn(Name = "鍗曟嵁缂栧彿", Width = 25)] + public string OrderNo { get; set; } + + /// <summary> + /// 鍗曟嵁鐘舵�� + /// </summary> + [ExcelColumn(Name = "鍗曟嵁鐘舵��", Width = 25)] + public OrderStatusEnum OrderStatus { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + [ExcelColumn(Name = "鐗╂枡鍚嶇О", Width = 25)] + public string MaterialName { get; set; } + + /// <summary> + /// 鐗╂枡浠跺彿 + /// </summary> + [ExcelColumn(Name = "鐗╂枡浠跺彿", Width = 25)] + public string MaterialNo { get; set; } + + /// <summary> + /// 鍨嬪彿 + /// </summary> + [ExcelColumn(Name = "鍨嬪彿", Width = 25)] + public string MaterialModel { get; set; } + + /// <summary> + /// 鎵规鍙� + /// </summary> + [ExcelColumn(Name = "鎵规鍙�", Width = 25)] + public string MaterialBatch { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷 + /// </summary> + [ExcelColumn(Name = "鍗曟嵁绫诲瀷", Width = 25)] + public OrderTypeEnum OrderType { get; set; } + + /// <summary> + /// 鎿嶄綔绫诲瀷锛堟灇涓惧�硷級 + /// </summary> + [ExcelColumn(Name = "鎿嶄綔绫诲瀷锛堟灇涓惧�硷級", Width = 25)] + public StockTypeEnum StockType { get; set; } + + /// <summary> + /// 鍗曟嵁鏁伴噺 + /// </summary> + [ExcelColumn(Name = "鍗曟嵁鏁伴噺", Width = 25)] + public int MaterialNumber { get; set; } + + /// <summary> + /// 涓嬪彂鏁伴噺 + /// </summary> + [ExcelColumn(Name = "涓嬪彂鏁伴噺", Width = 25)] + public int DistributeNumber { get; set; } + + /// <summary> + /// 瀹屾垚鏁伴噺 + /// </summary> + [ExcelColumn(Name = "瀹屾垚鏁伴噺", Width = 25)] + public int CompleteNumber { get; set; } + + /// <summary> + /// 浼樺厛绾� + /// </summary> + [ExcelColumn(Name = "浼樺厛绾�", Width = 25)] + public int Priority { get; set; } + + /// <summary> + /// 鍏宠仈璁″垝缂栧彿 + /// </summary> + [ExcelColumn(Name = "鍏宠仈璁″垝缂栧彿", Width = 25)] + public string PlanNo { get; set; } + + /// <summary> + /// 鎿嶄綔鏃堕棿 + /// </summary> + [ExcelColumn(Name = "鎿嶄綔鏃堕棿", Width = 25)] + public DateTime OperateTime { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + [ExcelColumn(Name = "澶囨敞", Width = 25)] + public string Remark { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + [ExcelColumn(Name = "鎺掑簭", Width = 25)] + public int Sort { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + [ExcelColumn(Name = "鏄惁绂佺敤", Width = 25)] + public bool? IsDisabled { get; set; } + + + + public Dictionary<string, object> GetExportData() + { + var exportData = new Dictionary<string, object>(); + foreach (var property in this.GetType().GetProperties()) + { + exportData.Add(property.Name, property.GetValue(this)); + } + + return exportData; + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderUpdateDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderUpdateDto.cs new file mode 100644 index 0000000..b5dc3cf --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrderUpdateDto.cs @@ -0,0 +1,13 @@ +using Volo.Abp.Domain.Entities; +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrder; + +/// <summary> +/// 鍑哄叆搴撳崟鎹洿鏂板弬鏁板璞� +/// </summary> +public class WmsInOutStockOrderUpdateDto : WmsInOutStockOrderCreateOrUpdateDtoBase, IHasConcurrencyStamp +{ + /// <summary> + /// 骞跺彂鎴� + /// </summary> + public string ConcurrencyStamp { get; set; } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrdersImportModel.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrdersImportModel.cs new file mode 100644 index 0000000..bae4c72 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrder/WmsInOutStockOrdersImportModel.cs @@ -0,0 +1,33 @@ + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrder +{ + /// <summary> + /// 鍑哄叆搴撳崟鎹鍏ユā鍨� + /// </summary> + public class WmsInOutStockOrdersImportModel + { + private List<WmsInOutStockOrderImportModel> _WmsInOutStockOrders = new(); + + public List<WmsInOutStockOrderImportModel> WmsInOutStockOrders + { + get => _WmsInOutStockOrders; + set + { + _WmsInOutStockOrders = value; + var rowIndex = 2; + _WmsInOutStockOrders?.ForEach(x => x.RowIndex = rowIndex++); + } + } + + /// <summary> + /// 鍑哄叆搴撳崟鎹鍏ユā鍨� + /// </summary> + public class WmsInOutStockOrderImportModel : WmsInOutStockOrderExportModel + { + /// <summary> + /// 琛屽彿 + /// </summary> + public int RowIndex { get; set; } + } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/GetWmsInOutStockOrderDetailInput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/GetWmsInOutStockOrderDetailInput.cs new file mode 100644 index 0000000..8053222 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/GetWmsInOutStockOrderDetailInput.cs @@ -0,0 +1,221 @@ +using CmsQueryExtensions.Extension; +using Volo.Abp.Application.Dtos; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrderDetail; + +/// <summary> +/// 鍑哄叆搴撳崟鎹鎯呮煡璇㈠弬鏁� +/// </summary> +public class GetWmsInOutStockOrderDetailInput : ExtensiblePagedAndSortedResultRequestDto +{ + + #region 鍏抽敭瀛楁煡璇� + + /// <summary> + /// 鍏抽敭瀛楁ā绯婃煡璇紙娉ㄦ剰鏄皬鍐欙紒锛� + /// </summary> + public string searchVal { get; set; } + + /// <summary> + /// 閫氱敤鏌ヨ閰嶇疆 (1:妯$硦鏌ヨ , 2:绮惧噯鏌ヨ)锛堟敞鎰忔槸灏忓啓锛侊級 + /// </summary> + public SearchFilterModeEnum searchVal_FilterMode { get; set; } = SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 瀛愭悳绱㈢粍浠朵紶閫掔殑閫氱敤鏌ヨ閰嶇疆鐨勫睘鎬у悕锛堟敞鎰忔槸灏忓啓锛侊級 + /// </summary> + [NoAutoQuery] + public string str_searchFormInputAttrs { get; set; } + /// <summary> + /// 瀛愭悳绱㈢粍浠朵紶閫掔殑閫氱敤鏌ヨ閰嶇疆鐨勫睘鎬у悕锛堟敞鎰忔槸灏忓啓锛侊級 + /// </summary> + public List<string> searchFormInputAttrs + { + get + { + if (!string.IsNullOrEmpty(str_searchFormInputAttrs)) + { + return str_searchFormInputAttrs.Split(',').ToList(); + } + return new List<string>(); + } + } + + #endregion + + /// <summary> + /// 鍗曟嵁缂栧彿 + /// </summary> + public string OrderNo { get; set; } + + /// <summary> + /// 鍗曟嵁缂栧彿-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum OrderNo_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鐗╂枡鍞竴鐮� + /// </summary> + public string MaterialId { get; set; } + + /// <summary> + /// 鐗╂枡鍞竴鐮�-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum MaterialId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鍗曟嵁绫诲瀷锛堟灇涓惧�硷級 + /// </summary> + public int? OrderType { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷锛堟灇涓惧�硷級-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum OrderType_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 鐗╂枡浠跺彿 + /// </summary> + public string MaterialNo { get; set; } + + /// <summary> + /// 鐗╂枡浠跺彿-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum MaterialNo_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + public string MaterialName { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum MaterialName_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 瀹瑰櫒缂栧彿 + /// </summary> + public string ContainerNo { get; set; } + + /// <summary> + /// 瀹瑰櫒缂栧彿-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum ContainerNo_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鏈哄瀷 + /// </summary> + public string MaterialModel { get; set; } + + /// <summary> + /// 鏈哄瀷-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum MaterialModel_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鐗╂枡鎵规 + /// </summary> + public int? MaterialBatch { get; set; } + + /// <summary> + /// 鐗╂枡鎵规-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum MaterialBatch_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规�� + [HighSearchRangeAttribute] + public List<string> CreationTime { get; set; } + + + /// <summary> + /// + /// </summary> + public string CreatorId { get; set; } + + /// <summary> + /// -鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum CreatorId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// + /// </summary> + public string DeleterId { get; set; } + + /// <summary> + /// -鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum DeleterId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// + /// </summary> + //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规�� + [HighSearchRangeAttribute] + public List<string> DeletionTime { get; set; } + + + /// <summary> + /// + /// </summary> + public bool? IsDeleted { get; set; } + + /// <summary> + /// -鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum IsDeleted_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool? IsDisabled { get; set; } + + /// <summary> + /// 鏄惁绂佺敤-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum IsDisabled_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// + /// </summary> + //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规�� + [HighSearchRangeAttribute] + public List<string> LastModificationTime { get; set; } + + + /// <summary> + /// + /// </summary> + public string LastModifierId { get; set; } + + /// <summary> + /// -鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum LastModifierId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 澶囨敞 + /// </summary> + public string Remark { get; set; } + + /// <summary> + /// 澶囨敞-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum Remark_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鎺掑簭 + /// </summary> + public int? Sort { get; set; } + + /// <summary> + /// 鎺掑簭-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum Sort_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailCreateDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailCreateDto.cs new file mode 100644 index 0000000..1233b14 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailCreateDto.cs @@ -0,0 +1,17 @@ +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrderDetail; + +/// <summary> +/// 鍑哄叆搴撳崟鎹鎯呭垱寤哄弬鏁板璞� +/// </summary> +public class WmsInOutStockOrderDetailCreateDto : WmsInOutStockOrderDetailCreateOrUpdateDtoBase +{ + /// <summary> + /// 鎺掑簭 + /// </summary> + public virtual int? Sort { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool? IsDisabled { get; set; } = false; +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailCreateOrUpdateDtoBase.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailCreateOrUpdateDtoBase.cs new file mode 100644 index 0000000..fe136c9 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailCreateOrUpdateDtoBase.cs @@ -0,0 +1,85 @@ +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +using System; +using Volo.Abp.Application.Dtos; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrderDetail; + +/// <summary> +/// 鍑哄叆搴撳崟鎹鎯呭垱寤烘垨鏇存柊鍩虹被 +/// </summary> +public abstract class WmsInOutStockOrderDetailCreateOrUpdateDtoBase : ExtensibleEntityDto +{ + /// <summary> + /// 鍗曟嵁缂栧彿 + /// </summary> + public string OrderNo { get; set; } + + /// <summary> + /// 鐗╂枡鍞竴鐮� + /// </summary> + public string MaterialId { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷锛堟灇涓惧�硷級 + /// </summary> + public OrderTypeEnum OrderType { get; set; } + + /// <summary> + /// 鐗╂枡浠跺彿 + /// </summary> + public string MaterialNo { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + public string? MaterialName { get; set; } + + /// <summary> + /// 瀹瑰櫒缂栧彿 + /// </summary> + public string? ContainerNo { get; set; } + + /// <summary> + /// 鏈哄瀷 + /// </summary> + public string? MaterialModel { get; set; } + + /// <summary> + /// 鐗╂枡鎵规 + /// </summary> + public int? MaterialBatch { get; set; } + + /// <summary> + /// + /// </summary> + public string? CreatorId { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool? IsDisabled { get; set; } + + /// <summary> + /// + /// </summary> + public string? LastModifierId { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + public string? Remark { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + public int Sort { get; set; } + + + + /// <summary> + /// Initializes a new instance of the <see cref="WmsInOutStockOrderDetailCreateOrUpdateDtoBase"/> class. + /// </summary> + public WmsInOutStockOrderDetailCreateOrUpdateDtoBase() : base(false) + { + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailDto.cs new file mode 100644 index 0000000..0036c12 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailDto.cs @@ -0,0 +1,141 @@ +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +using CmsQueryExtensions; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Data; +using Volo.Abp.Domain.Entities; + + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrderDetail; + +/// <summary> +/// 鍑哄叆搴撳崟鎹鎯呮暟鎹弬鏁板璞� +/// </summary> +public class WmsInOutStockOrderDetailDto: ExtensibleEntityDto<Guid>, IHasConcurrencyStamp +{ + /// <summary> + /// 鍗曟嵁缂栧彿 + /// </summary> + public string OrderNo { get; set; } + + /// <summary> + /// 鐗╂枡鍞竴鐮� + /// </summary> + public string MaterialId { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷锛堟灇涓惧�硷級 + /// </summary> + public OrderTypeEnum OrderType { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷锛堟灇涓惧�硷級 + /// </summary> + public string OrderTypeDesc + { + get + { + return GetEnumDescriptionUtil.GetEnumDescription(OrderType); + } + } + /// <summary> + /// 鐗╂枡浠跺彿 + /// </summary> + public string MaterialNo { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + public string? MaterialName { get; set; } + + /// <summary> + /// 瀹瑰櫒缂栧彿 + /// </summary> + public string? ContainerNo { get; set; } + + /// <summary> + /// 鏈哄瀷 + /// </summary> + public string? MaterialModel { get; set; } + + /// <summary> + /// 鐗╂枡鎵规 + /// </summary> + public int? MaterialBatch { get; set; } + + /// <summary> + /// + /// </summary> + public string? ConcurrencyStamp { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public DateTime CreationTime { get; set; } + + /// <summary> + /// + /// </summary> + public string? CreatorId { get; set; } + + /// <summary> + /// + /// </summary> + public string? DeleterId { get; set; } + + /// <summary> + /// + /// </summary> + public DateTime? DeletionTime { get; set; } + + /// <summary> + /// + /// </summary> + public ExtraPropertyDictionary? ExtraProperties { get; set; } + + /// <summary> + /// + /// </summary> + public bool IsDeleted { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool? IsDisabled { get; set; } + + /// <summary> + /// + /// </summary> + public DateTime? LastModificationTime { get; set; } + + /// <summary> + /// + /// </summary> + public string? LastModifierId { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + public string? Remark { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + public int Sort { get; set; } + + + + /// <summary> + /// Gets the export data. + /// </summary> + /// <returns></returns> + public Dictionary<string, object> GetExportData() + { + var exportData = new Dictionary<string, object>(); + foreach (var property in this.GetType().GetProperties()) + { + exportData.Add(property.Name, property.GetValue(this)); + } + + return exportData; + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailExportModel.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailExportModel.cs new file mode 100644 index 0000000..9f5fc91 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailExportModel.cs @@ -0,0 +1,91 @@ +using MiniExcelLibs.Attributes; +using System.ComponentModel.DataAnnotations; +using System; +using System.ComponentModel; +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrderDetail; + +/// <summary> +/// 鍑哄叆搴撳崟鎹鎯呭鍑烘ā鍨� +/// </summary> +public class WmsInOutStockOrderDetailExportModel +{ + /// <summary> + /// 鍗曟嵁缂栧彿 + /// </summary> + [ExcelColumn(Name = "鍗曟嵁缂栧彿", Width = 25)] + public string OrderNo { get; set; } + + /// <summary> + /// 鐗╂枡鍞竴鐮� + /// </summary> + [ExcelColumn(Name = "鐗╂枡鍞竴鐮�", Width = 25)] + public string MaterialId { get; set; } + + /// <summary> + /// 鍗曟嵁绫诲瀷锛堟灇涓惧�硷級 + /// </summary> + [ExcelColumn(Name = "鍗曟嵁绫诲瀷锛堟灇涓惧�硷級", Width = 25)] + public OrderTypeEnum OrderType { get; set; } + + /// <summary> + /// 鐗╂枡浠跺彿 + /// </summary> + [ExcelColumn(Name = "鐗╂枡浠跺彿", Width = 25)] + public string MaterialNo { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + [ExcelColumn(Name = "鐗╂枡鍚嶇О", Width = 25)] + public string MaterialName { get; set; } + + /// <summary> + /// 瀹瑰櫒缂栧彿 + /// </summary> + [ExcelColumn(Name = "瀹瑰櫒缂栧彿", Width = 25)] + public string ContainerNo { get; set; } + + /// <summary> + /// 鏈哄瀷 + /// </summary> + [ExcelColumn(Name = "鏈哄瀷", Width = 25)] + public string MaterialModel { get; set; } + + /// <summary> + /// 鐗╂枡鎵规 + /// </summary> + [ExcelColumn(Name = "鐗╂枡鎵规", Width = 25)] + public int? MaterialBatch { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + [ExcelColumn(Name = "鏄惁绂佺敤", Width = 25)] + public bool? IsDisabled { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + [ExcelColumn(Name = "澶囨敞", Width = 25)] + public string Remark { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + [ExcelColumn(Name = "鎺掑簭", Width = 25)] + public int Sort { get; set; } + + + + public Dictionary<string, object> GetExportData() + { + var exportData = new Dictionary<string, object>(); + foreach (var property in this.GetType().GetProperties()) + { + exportData.Add(property.Name, property.GetValue(this)); + } + + return exportData; + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailUpdateDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailUpdateDto.cs new file mode 100644 index 0000000..871e3cd --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailUpdateDto.cs @@ -0,0 +1,13 @@ +using Volo.Abp.Domain.Entities; +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrderDetail; + +/// <summary> +/// 鍑哄叆搴撳崟鎹鎯呮洿鏂板弬鏁板璞� +/// </summary> +public class WmsInOutStockOrderDetailUpdateDto : WmsInOutStockOrderDetailCreateOrUpdateDtoBase, IHasConcurrencyStamp +{ + /// <summary> + /// 骞跺彂鎴� + /// </summary> + public string ConcurrencyStamp { get; set; } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailsImportModel.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailsImportModel.cs new file mode 100644 index 0000000..1bdd9ef --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockOrderDetail/WmsInOutStockOrderDetailsImportModel.cs @@ -0,0 +1,33 @@ + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrderDetail +{ + /// <summary> + /// 鍑哄叆搴撳崟鎹鎯呭鍏ユā鍨� + /// </summary> + public class WmsInOutStockOrderDetailsImportModel + { + private List<WmsInOutStockOrderDetailImportModel> _WmsInOutStockOrderDetails = new(); + + public List<WmsInOutStockOrderDetailImportModel> WmsInOutStockOrderDetails + { + get => _WmsInOutStockOrderDetails; + set + { + _WmsInOutStockOrderDetails = value; + var rowIndex = 2; + _WmsInOutStockOrderDetails?.ForEach(x => x.RowIndex = rowIndex++); + } + } + + /// <summary> + /// 鍑哄叆搴撳崟鎹鎯呭鍏ユā鍨� + /// </summary> + public class WmsInOutStockOrderDetailImportModel : WmsInOutStockOrderDetailExportModel + { + /// <summary> + /// 琛屽彿 + /// </summary> + public int RowIndex { get; set; } + } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockOrderAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockOrderAppService.cs new file mode 100644 index 0000000..30b056b --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockOrderAppService.cs @@ -0,0 +1,46 @@ +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrder; +using Volo.Abp.Application.Services; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Services; + +/// <summary> +/// 鍑哄叆搴撳崟鎹簲鐢ㄦ湇鍔℃帴鍙� +/// </summary> +public interface IWmsInOutStockOrderAppService : ICrudAppService<WmsInOutStockOrderDto, Guid, GetWmsInOutStockOrderInput, WmsInOutStockOrderCreateDto, WmsInOutStockOrderUpdateDto> +{ + /// <summary> + /// 鍏嬮殕鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="ids"></param> + /// <returns></returns> + Task<List<WmsInOutStockOrderDto>> CloneAsync(IEnumerable<Guid> ids); + + /// <summary> + /// 鍒犻櫎鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="ids"></param> + /// <returns></returns> + Task DeleteManyAsync(IEnumerable<Guid> ids); + + /// <summary> + /// 璋冩暣鎺掑簭鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="id"></param> + /// <param name="sort"></param> + /// <returns></returns> + Task AdjustSortAsync(Guid id, int sort); + + /// <summary> + /// 瀵煎叆鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + Task ImportAsync(WmsInOutStockOrdersImportModel input); + + /// <summary> + /// 瀵煎嚭鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsInOutStockOrderInput input); +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockOrderDetailAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockOrderDetailAppService.cs new file mode 100644 index 0000000..af51c62 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockOrderDetailAppService.cs @@ -0,0 +1,46 @@ +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrderDetail; +using Volo.Abp.Application.Services; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Services; + +/// <summary> +/// 鍑哄叆搴撳崟鎹鎯呭簲鐢ㄦ湇鍔℃帴鍙� +/// </summary> +public interface IWmsInOutStockOrderDetailAppService : ICrudAppService<WmsInOutStockOrderDetailDto, Guid, GetWmsInOutStockOrderDetailInput, WmsInOutStockOrderDetailCreateDto, WmsInOutStockOrderDetailUpdateDto> +{ + /// <summary> + /// 鍏嬮殕鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="ids"></param> + /// <returns></returns> + Task<List<WmsInOutStockOrderDetailDto>> CloneAsync(IEnumerable<Guid> ids); + + /// <summary> + /// 鍒犻櫎鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="ids"></param> + /// <returns></returns> + Task DeleteManyAsync(IEnumerable<Guid> ids); + + /// <summary> + /// 璋冩暣鎺掑簭鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="id"></param> + /// <param name="sort"></param> + /// <returns></returns> + Task AdjustSortAsync(Guid id, int sort); + + /// <summary> + /// 瀵煎叆鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + Task ImportAsync(WmsInOutStockOrderDetailsImportModel input); + + /// <summary> + /// 瀵煎嚭鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsInOutStockOrderDetailInput input); +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockOrderAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockOrderAppService.cs new file mode 100644 index 0000000..73ae65e --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockOrderAppService.cs @@ -0,0 +1,450 @@ +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrder; +using CMS.Plugin.HIAWms.Application.Contracts.Services; +using CMS.Plugin.HIAWms.Domain.Shared; +using CmsQueryExtensions; +using CMS.Plugin.HIAWms.Domain.WmsInOutStockOrder; +using CmsQueryExtensions.Extension; +using System.Linq.Expressions; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Data; +using Volo.Abp.ObjectExtending; +using Volo.Abp.ObjectMapping; + +namespace CMS.Plugin.HIAWms.Application.Implements; + +/// <summary> +/// 鍑哄叆搴撳崟鎹簲鐢ㄦ湇鍔� +/// </summary> +public class WmsInOutStockOrderAppService : CMSPluginAppService, IWmsInOutStockOrderAppService +{ + private readonly IWmsInOutStockOrderRepository wmsInOutStockOrderRepository; + + /// <summary> + /// Initializes a new instance of the <see cref="WmsInOutStockOrderAppService"/> class. + /// </summary> + /// <param name="WmsInOutStockOrderRepository">The task job repository.</param> + public WmsInOutStockOrderAppService(IWmsInOutStockOrderRepository _WmsInOutStockOrderRepository) + { + wmsInOutStockOrderRepository = _WmsInOutStockOrderRepository; + } + + /// <summary> + /// 鑾峰彇鎸囧畾鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + public virtual async Task<WmsInOutStockOrderDto> GetAsync(Guid id) + { + return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(await wmsInOutStockOrderRepository.GetAsync(id)); + } + + /// <summary> + /// 鍒嗛〉鑾峰彇鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + public virtual async Task<PagedResultDto<WmsInOutStockOrderDto>> GetListAsync(GetWmsInOutStockOrderInput input) + { + Check.NotNull(input, nameof(input)); + + if (input.Sorting.IsNullOrWhiteSpace()) + { + input.Sorting = nameof(WmsInOutStockOrder.Sort); + } + + #region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + + //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + var whereConditions = DynamicGetQueryParams(input); + + #endregion + + var count = await wmsInOutStockOrderRepository.GetCountAsync(whereConditions); + var list = await wmsInOutStockOrderRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); + + return new PagedResultDto<WmsInOutStockOrderDto>(count, ObjectMapper.Map<List<WmsInOutStockOrder>, List<WmsInOutStockOrderDto>>(list)); + } + + /// <summary> + /// 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + /// </summary> + /// <param name="input">杈撳叆鍙傛暟</param> + /// <returns></returns> + private FunReturnResultModel<Expression<Func<WmsInOutStockOrder, bool>>> DynamicGetQueryParams(GetWmsInOutStockOrderInput input) + { + //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsInOutStockOrder, GetWmsInOutStockOrderInput>(input); + if (!whereConditions.IsSuccess) + { + throw new Exception("鍔ㄦ�佹瀯閫犳煡璇㈡潯浠跺け璐�:" + whereConditions.ErrMsg); + } + + //涔熷彲鍐嶆鑷畾涔夋瀯寤烘煡璇㈡潯浠� + Expression<Func<WmsInOutStockOrder, bool>> extendExpression = a => a.IsDeleted == false; + // 浣跨敤 System.Linq.PredicateBuilder 鐨� And + var pres = (System.Linq.Expressions.Expression<Func<WmsInOutStockOrder, bool>>)(whereConditions.data); + whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression); + + return whereConditions; + } + + /// <summary> + /// 鏂板缓鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + public virtual async Task<WmsInOutStockOrderDto> CreateAsync(WmsInOutStockOrderCreateDto input) + { + await CheckCreateOrUpdateDtoAsync(input); + + var exist = await wmsInOutStockOrderRepository.NameExistAsync(input.OrderNo); + if (exist) + { + throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.OrderNo]); + } + + var maxSort = await wmsInOutStockOrderRepository.GetMaxSortAsync(); + var sort = input.Sort ?? maxSort; + + var insertObj = ObjectMapper.Map<WmsInOutStockOrderCreateDto, WmsInOutStockOrder>(input); + insertObj.Sort = sort; + input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); + + await wmsInOutStockOrderRepository.InsertAsync(insertObj); + + //if (input.Sort.HasValue && insertObj.Sort != maxSort) + //{ + // await AdjustSortAsync(insertObj.Id, insertObj.Sort); + //} + + return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(insertObj); + } + + /// <summary> + /// 鏇存柊鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="id"></param> + /// <param name="input"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + public virtual async Task<WmsInOutStockOrderDto> UpdateAsync(Guid id, WmsInOutStockOrderUpdateDto input) + { + await CheckCreateOrUpdateDtoAsync(input); + + var updateObj = await wmsInOutStockOrderRepository.GetAsync(id); + var exist = await wmsInOutStockOrderRepository.NameExistAsync(input.OrderNo, updateObj.Id); + if (exist) + { + throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.OrderNo]); + } + + updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); + input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); + + updateObj.OrderNo = input.OrderNo; + updateObj.OrderStatus = input.OrderStatus; + updateObj.MaterialName = input.MaterialName; + updateObj.MaterialNo = input.MaterialNo; + updateObj.MaterialModel = input.MaterialModel; + updateObj.MaterialBatch = input.MaterialBatch; + updateObj.OrderType = input.OrderType; + updateObj.StockType = input.StockType; + updateObj.MaterialNumber = input.MaterialNumber; + updateObj.DistributeNumber = input.DistributeNumber; + updateObj.CompleteNumber = input.CompleteNumber; + updateObj.Priority = input.Priority; + updateObj.PlanNo = input.PlanNo; + updateObj.OperateTime = input.OperateTime; + updateObj.Remark = input.Remark; + updateObj.IsDisabled = input.IsDisabled; + + + await wmsInOutStockOrderRepository.UpdateAsync(updateObj); + + return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(updateObj); + } + + /// <summary> + /// 鍏嬮殕鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="ids"></param> + /// <returns></returns> + public async Task<List<WmsInOutStockOrderDto>> CloneAsync(IEnumerable<Guid> ids) + { + //var wmsInOutStockOrders = new List<WmsInOutStockOrder>(); + //if (ids != null) + //{ + // var sort = await wmsInOutStockOrderRepository.GetMaxSortAsync(); + // foreach (var id in ids) + // { + // var WmsInOutStockOrder = await wmsInOutStockOrderRepository.FindAsync(id); + // if (WmsInOutStockOrder != null) + // { + // var name = WmsInOutStockOrder.Name + WmsInOutStockOrderConsts.CloneTag; + // var notExist = false; + // while (!notExist) + // { + // var exist = await wmsInOutStockOrderRepository.NameExistAsync(name); + // if (exist || wmsInOutStockOrders.Any(x => x.Name == name)) + // { + // name += WmsInOutStockOrderConsts.CloneTag; + // continue; + // } + + // notExist = true; + // } + + // //WmsInOutStockOrder = await wmsInOutStockOrderRepository.InsertAsync(WmsInOutStockOrder.Clone(GuidGenerator.Create(), name, sort++)); + // wmsInOutStockOrders.Add(WmsInOutStockOrder); + // } + // } + //} + + //return ObjectMapper.Map<List<WmsInOutStockOrder>, List<WmsInOutStockOrderDto>>(wmsInOutStockOrders); + return new List<WmsInOutStockOrderDto>(); + } + + /// <summary> + /// 鍒犻櫎鍗曚釜鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + public virtual Task DeleteAsync(Guid id) + { + return wmsInOutStockOrderRepository.DeleteAsync(id); + } + + /// <summary> + /// 鍒犻櫎澶氫釜鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="ids"></param> + /// <returns></returns> + public async Task DeleteManyAsync(IEnumerable<Guid> ids) + { + foreach (var id in ids) + { + await DeleteAsync(id); + } + } + + /// <summary> + /// 璋冩暣鎺掑簭鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="id"></param> + /// <param name="sort"></param> + /// <returns></returns> + public virtual async Task AdjustSortAsync(Guid id, int sort) + { + var list = await wmsInOutStockOrderRepository.GetListAsync(null, nameof(WmsInOutStockOrder.Sort)); + if (list != null && list.Any()) + { + var initSort = 1; + list.ForEach(x => x.AdjustSort(initSort++)); + var entity = list.FirstOrDefault(x => x.Id == id); + if (entity != null) + { + if (sort == 1) + { + list.Where(x => x.Id != id).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); + } + else if (entity.Sort > sort) + { + list.Where(x => x.Id != id && x.Sort >= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); + list.Where(x => x.Id != id && x.Sort < sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1)); + } + else if (entity.Sort < sort) + { + list.Where(x => x.Id != id && x.Sort > sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); + list.Where(x => x.Id != id && x.Sort <= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1)); + } + + entity.AdjustSort(sort); + } + } + + await wmsInOutStockOrderRepository.UpdateManyAsync(list); + } + + /// <summary> + /// 瀵煎叆鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + public async Task ImportAsync(WmsInOutStockOrdersImportModel input) + { + Check.NotNull(input, nameof(input)); + + var wmsInOutStockOrderCreateDtos = new List<(int RowIndex, WmsInOutStockOrderCreateDto Item)>(); + var wmsInOutStockOrderUpdateDtos = new List<(int RowIndex, Guid Id, WmsInOutStockOrderUpdateDto Item)>(); + var importItems = input.WmsInOutStockOrders; + + if (importItems != null && importItems.Any()) + { + #region 瀵煎叆鏍¢獙 + + // 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶� + var duplicateWmsInOutStockOrders = importItems.GroupBy(x => x.OrderNo).Where(x => x.Count() > 1).ToList(); + if (duplicateWmsInOutStockOrders?.Any() == true) + { + var duplicateWmsInOutStockOrderMsgs = duplicateWmsInOutStockOrders.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅"); + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWmsInOutStockOrderMsgs)}锛岀粓姝㈠鍏�"; + throw new UserFriendlyException(errorMsg); + } + + #endregion + + foreach (var impItem in importItems) + { + if (impItem.OrderNo.IsNullOrWhiteSpace()) + { + continue; + } + + if (impItem.OrderNo.IsNullOrWhiteSpace()) + { + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊impItem.RowIndex}琛岋細WmsInOutStockOrder鍚嶇О涓嶈兘涓虹┖"; + throw new UserFriendlyException(errorMsg); + } + + var oldWmsInOutStockOrder = await wmsInOutStockOrderRepository.FindByNameAsync(impItem.OrderNo); + if (oldWmsInOutStockOrder != null) + { + var wmsInOutStockOrderUpdateDto = new WmsInOutStockOrderUpdateDto + { + OrderNo = impItem.OrderNo, +OrderStatus = impItem.OrderStatus, +MaterialName = impItem.MaterialName, +MaterialNo = impItem.MaterialNo, +MaterialModel = impItem.MaterialModel, +MaterialBatch = impItem.MaterialBatch, +OrderType = impItem.OrderType, +StockType = impItem.StockType, +MaterialNumber = impItem.MaterialNumber, +DistributeNumber = impItem.DistributeNumber, +CompleteNumber = impItem.CompleteNumber, +Priority = impItem.Priority, +PlanNo = impItem.PlanNo, +OperateTime = impItem.OperateTime, +Remark = impItem.Remark, +IsDisabled = impItem.IsDisabled, + + }; + + wmsInOutStockOrderUpdateDtos.Add((impItem.RowIndex, oldWmsInOutStockOrder.Id, wmsInOutStockOrderUpdateDto)); + } + else + { + var wmsInOutStockOrderCreateDto = new WmsInOutStockOrderCreateDto + { + OrderNo = impItem.OrderNo, +OrderStatus = impItem.OrderStatus, +MaterialName = impItem.MaterialName, +MaterialNo = impItem.MaterialNo, +MaterialModel = impItem.MaterialModel, +MaterialBatch = impItem.MaterialBatch, +OrderType = impItem.OrderType, +StockType = impItem.StockType, +MaterialNumber = impItem.MaterialNumber, +DistributeNumber = impItem.DistributeNumber, +CompleteNumber = impItem.CompleteNumber, +Priority = impItem.Priority, +PlanNo = impItem.PlanNo, +OperateTime = impItem.OperateTime, +Remark = impItem.Remark, +IsDisabled = impItem.IsDisabled, + + }; + + wmsInOutStockOrderCreateDtos.Add((impItem.RowIndex, wmsInOutStockOrderCreateDto)); + } + } + } + + // 鏂板 + foreach (var wmsInOutStockOrderDto in wmsInOutStockOrderCreateDtos) + { + try + { + await CreateAsync(wmsInOutStockOrderDto.Item); + } + catch (Exception e) + { + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsInOutStockOrderDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; + throw new UserFriendlyException(errorMsg); + } + } + + // 鏇存柊 + foreach (var wmsInOutStockOrderDto in wmsInOutStockOrderUpdateDtos) + { + try + { + await UpdateAsync(wmsInOutStockOrderDto.Id, wmsInOutStockOrderDto.Item); + } + catch (Exception e) + { + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsInOutStockOrderDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; + throw new UserFriendlyException(errorMsg); + } + } + } + + /// <summary> + /// 瀵煎嚭鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsInOutStockOrderInput input) + { + Check.NotNull(input, nameof(input)); + + if (input.Sorting.IsNullOrWhiteSpace()) + { + input.Sorting = nameof(WmsInOutStockOrder.Sort); + } + + #region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + + //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + var whereConditions = DynamicGetQueryParams(input); + + #endregion + + + var list = await wmsInOutStockOrderRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); + var result = ObjectMapper.Map<List<WmsInOutStockOrder>, List<WmsInOutStockOrderDto>>(list); + + var sheets = new Dictionary<string, object> + { + ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result), + }; + + var fileName = result.Count > 1 ? "鍑哄叆搴撳崟鎹垪琛�" : result.Count == 1 ? result[0]?.OrderNo : "WmsInOutStockOrder妯$増"; + return (sheets, fileName); + } + + /// <summary> + /// 鏍¢獙鍑哄叆搴撳崟鎹紝褰撴柊寤烘垨鏇存柊鏃� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + protected Task CheckCreateOrUpdateDtoAsync(WmsInOutStockOrderCreateOrUpdateDtoBase input) + { + Check.NotNull(input, nameof(input)); + Check.NotNullOrWhiteSpace(input.OrderNo, "鍗曟嵁缂栧彿", 50); + Check.NotNull(input.OrderStatus, "鍗曟嵁鐘舵��"); + Check.NotNullOrWhiteSpace(input.MaterialNo, "鐗╂枡浠跺彿", 50); + Check.NotNullOrWhiteSpace(input.MaterialBatch, "鎵规鍙�", 50); + Check.NotNull(input.OrderType, "鍗曟嵁绫诲瀷"); + Check.NotNull(input.StockType, "鎿嶄綔绫诲瀷锛堟灇涓惧�硷級"); + Check.NotNull(input.MaterialNumber, "鍗曟嵁鏁伴噺"); + Check.NotNull(input.DistributeNumber, "涓嬪彂鏁伴噺"); + Check.NotNull(input.CompleteNumber, "瀹屾垚鏁伴噺"); + Check.NotNull(input.Priority, "浼樺厛绾�"); + + return Task.CompletedTask; + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockOrderDetailAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockOrderDetailAppService.cs new file mode 100644 index 0000000..4ec146d --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockOrderDetailAppService.cs @@ -0,0 +1,426 @@ +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrderDetail; +using CMS.Plugin.HIAWms.Application.Contracts.Services; +using CMS.Plugin.HIAWms.Domain.Shared; +using CmsQueryExtensions; +using CMS.Plugin.HIAWms.Domain.WmsInOutStockOrderDetail; +using CmsQueryExtensions.Extension; +using System.Linq.Expressions; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Data; +using Volo.Abp.ObjectExtending; +using Volo.Abp.ObjectMapping; + +namespace CMS.Plugin.HIAWms.Application.Implements; + +/// <summary> +/// 鍑哄叆搴撳崟鎹鎯呭簲鐢ㄦ湇鍔� +/// </summary> +public class WmsInOutStockOrderDetailAppService : CMSPluginAppService, IWmsInOutStockOrderDetailAppService +{ + private readonly IWmsInOutStockOrderDetailRepository wmsInOutStockOrderDetailRepository; + + /// <summary> + /// Initializes a new instance of the <see cref="WmsInOutStockOrderDetailAppService"/> class. + /// </summary> + /// <param name="WmsInOutStockOrderDetailRepository">The task job repository.</param> + public WmsInOutStockOrderDetailAppService(IWmsInOutStockOrderDetailRepository _WmsInOutStockOrderDetailRepository) + { + wmsInOutStockOrderDetailRepository = _WmsInOutStockOrderDetailRepository; + } + + /// <summary> + /// 鑾峰彇鎸囧畾鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + public virtual async Task<WmsInOutStockOrderDetailDto> GetAsync(Guid id) + { + return ObjectMapper.Map<WmsInOutStockOrderDetail, WmsInOutStockOrderDetailDto>(await wmsInOutStockOrderDetailRepository.GetAsync(id)); + } + + /// <summary> + /// 鍒嗛〉鑾峰彇鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + public virtual async Task<PagedResultDto<WmsInOutStockOrderDetailDto>> GetListAsync(GetWmsInOutStockOrderDetailInput input) + { + Check.NotNull(input, nameof(input)); + + if (input.Sorting.IsNullOrWhiteSpace()) + { + input.Sorting = nameof(WmsInOutStockOrderDetail.Sort); + } + + #region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + + //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + var whereConditions = DynamicGetQueryParams(input); + + #endregion + + var count = await wmsInOutStockOrderDetailRepository.GetCountAsync(whereConditions); + var list = await wmsInOutStockOrderDetailRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); + + return new PagedResultDto<WmsInOutStockOrderDetailDto>(count, ObjectMapper.Map<List<WmsInOutStockOrderDetail>, List<WmsInOutStockOrderDetailDto>>(list)); + } + + /// <summary> + /// 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + /// </summary> + /// <param name="input">杈撳叆鍙傛暟</param> + /// <returns></returns> + private FunReturnResultModel<Expression<Func<WmsInOutStockOrderDetail, bool>>> DynamicGetQueryParams(GetWmsInOutStockOrderDetailInput input) + { + //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsInOutStockOrderDetail, GetWmsInOutStockOrderDetailInput>(input); + if (!whereConditions.IsSuccess) + { + throw new Exception("鍔ㄦ�佹瀯閫犳煡璇㈡潯浠跺け璐�:" + whereConditions.ErrMsg); + } + + //涔熷彲鍐嶆鑷畾涔夋瀯寤烘煡璇㈡潯浠� + Expression<Func<WmsInOutStockOrderDetail, bool>> extendExpression = a => a.IsDeleted == false; + // 浣跨敤 System.Linq.PredicateBuilder 鐨� And + var pres = (System.Linq.Expressions.Expression<Func<WmsInOutStockOrderDetail, bool>>)(whereConditions.data); + whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression); + + return whereConditions; + } + + /// <summary> + /// 鏂板缓鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + public virtual async Task<WmsInOutStockOrderDetailDto> CreateAsync(WmsInOutStockOrderDetailCreateDto input) + { + await CheckCreateOrUpdateDtoAsync(input); + + var exist = await wmsInOutStockOrderDetailRepository.NameExistAsync(input.MaterialId); + if (exist) + { + throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialId]); + } + + var maxSort = await wmsInOutStockOrderDetailRepository.GetMaxSortAsync(); + var sort = input.Sort ?? maxSort; + + var insertObj = ObjectMapper.Map<WmsInOutStockOrderDetailCreateDto, WmsInOutStockOrderDetail>(input); + insertObj.Sort = sort; + input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); + + await wmsInOutStockOrderDetailRepository.InsertAsync(insertObj); + + //if (input.Sort.HasValue && insertObj.Sort != maxSort) + //{ + // await AdjustSortAsync(insertObj.Id, insertObj.Sort); + //} + + return ObjectMapper.Map<WmsInOutStockOrderDetail, WmsInOutStockOrderDetailDto>(insertObj); + } + + /// <summary> + /// 鏇存柊鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="id"></param> + /// <param name="input"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + public virtual async Task<WmsInOutStockOrderDetailDto> UpdateAsync(Guid id, WmsInOutStockOrderDetailUpdateDto input) + { + await CheckCreateOrUpdateDtoAsync(input); + + var updateObj = await wmsInOutStockOrderDetailRepository.GetAsync(id); + var exist = await wmsInOutStockOrderDetailRepository.NameExistAsync(input.MaterialId, updateObj.Id); + if (exist) + { + throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialId]); + } + + updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); + input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); + + updateObj.OrderNo = input.OrderNo; + updateObj.MaterialId = input.MaterialId; + updateObj.OrderType = input.OrderType; + updateObj.MaterialNo = input.MaterialNo; + updateObj.MaterialName = input.MaterialName; + updateObj.ContainerNo = input.ContainerNo; + updateObj.MaterialModel = input.MaterialModel; + updateObj.MaterialBatch = input.MaterialBatch; + updateObj.IsDisabled = input.IsDisabled; + updateObj.Remark = input.Remark; + + + await wmsInOutStockOrderDetailRepository.UpdateAsync(updateObj); + + return ObjectMapper.Map<WmsInOutStockOrderDetail, WmsInOutStockOrderDetailDto>(updateObj); + } + + /// <summary> + /// 鍏嬮殕鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="ids"></param> + /// <returns></returns> + public async Task<List<WmsInOutStockOrderDetailDto>> CloneAsync(IEnumerable<Guid> ids) + { + //var wmsInOutStockOrderDetails = new List<WmsInOutStockOrderDetail>(); + //if (ids != null) + //{ + // var sort = await wmsInOutStockOrderDetailRepository.GetMaxSortAsync(); + // foreach (var id in ids) + // { + // var WmsInOutStockOrderDetail = await wmsInOutStockOrderDetailRepository.FindAsync(id); + // if (WmsInOutStockOrderDetail != null) + // { + // var name = WmsInOutStockOrderDetail.Name + WmsInOutStockOrderDetailConsts.CloneTag; + // var notExist = false; + // while (!notExist) + // { + // var exist = await wmsInOutStockOrderDetailRepository.NameExistAsync(name); + // if (exist || wmsInOutStockOrderDetails.Any(x => x.Name == name)) + // { + // name += WmsInOutStockOrderDetailConsts.CloneTag; + // continue; + // } + + // notExist = true; + // } + + // //WmsInOutStockOrderDetail = await wmsInOutStockOrderDetailRepository.InsertAsync(WmsInOutStockOrderDetail.Clone(GuidGenerator.Create(), name, sort++)); + // wmsInOutStockOrderDetails.Add(WmsInOutStockOrderDetail); + // } + // } + //} + + //return ObjectMapper.Map<List<WmsInOutStockOrderDetail>, List<WmsInOutStockOrderDetailDto>>(wmsInOutStockOrderDetails); + return new List<WmsInOutStockOrderDetailDto>(); + } + + /// <summary> + /// 鍒犻櫎鍗曚釜鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + public virtual Task DeleteAsync(Guid id) + { + return wmsInOutStockOrderDetailRepository.DeleteAsync(id); + } + + /// <summary> + /// 鍒犻櫎澶氫釜鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="ids"></param> + /// <returns></returns> + public async Task DeleteManyAsync(IEnumerable<Guid> ids) + { + foreach (var id in ids) + { + await DeleteAsync(id); + } + } + + /// <summary> + /// 璋冩暣鎺掑簭鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="id"></param> + /// <param name="sort"></param> + /// <returns></returns> + public virtual async Task AdjustSortAsync(Guid id, int sort) + { + var list = await wmsInOutStockOrderDetailRepository.GetListAsync(null, nameof(WmsInOutStockOrderDetail.Sort)); + if (list != null && list.Any()) + { + var initSort = 1; + list.ForEach(x => x.AdjustSort(initSort++)); + var entity = list.FirstOrDefault(x => x.Id == id); + if (entity != null) + { + if (sort == 1) + { + list.Where(x => x.Id != id).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); + } + else if (entity.Sort > sort) + { + list.Where(x => x.Id != id && x.Sort >= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); + list.Where(x => x.Id != id && x.Sort < sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1)); + } + else if (entity.Sort < sort) + { + list.Where(x => x.Id != id && x.Sort > sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); + list.Where(x => x.Id != id && x.Sort <= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1)); + } + + entity.AdjustSort(sort); + } + } + + await wmsInOutStockOrderDetailRepository.UpdateManyAsync(list); + } + + /// <summary> + /// 瀵煎叆鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + public async Task ImportAsync(WmsInOutStockOrderDetailsImportModel input) + { + Check.NotNull(input, nameof(input)); + + var wmsInOutStockOrderDetailCreateDtos = new List<(int RowIndex, WmsInOutStockOrderDetailCreateDto Item)>(); + var wmsInOutStockOrderDetailUpdateDtos = new List<(int RowIndex, Guid Id, WmsInOutStockOrderDetailUpdateDto Item)>(); + var importItems = input.WmsInOutStockOrderDetails; + + if (importItems != null && importItems.Any()) + { + #region 瀵煎叆鏍¢獙 + + // 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶� + var duplicateWmsInOutStockOrderDetails = importItems.GroupBy(x => x.MaterialId).Where(x => x.Count() > 1).ToList(); + if (duplicateWmsInOutStockOrderDetails?.Any() == true) + { + var duplicateWmsInOutStockOrderDetailMsgs = duplicateWmsInOutStockOrderDetails.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅"); + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWmsInOutStockOrderDetailMsgs)}锛岀粓姝㈠鍏�"; + throw new UserFriendlyException(errorMsg); + } + + #endregion + + foreach (var impItem in importItems) + { + if (impItem.MaterialId.IsNullOrWhiteSpace()) + { + continue; + } + + if (impItem.MaterialId.IsNullOrWhiteSpace()) + { + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊impItem.RowIndex}琛岋細WmsInOutStockOrderDetail鍚嶇О涓嶈兘涓虹┖"; + throw new UserFriendlyException(errorMsg); + } + + var oldWmsInOutStockOrderDetail = await wmsInOutStockOrderDetailRepository.FindByNameAsync(impItem.MaterialId); + if (oldWmsInOutStockOrderDetail != null) + { + var wmsInOutStockOrderDetailUpdateDto = new WmsInOutStockOrderDetailUpdateDto + { + OrderNo = impItem.OrderNo, +MaterialId = impItem.MaterialId, +OrderType = impItem.OrderType, +MaterialNo = impItem.MaterialNo, +MaterialName = impItem.MaterialName, +ContainerNo = impItem.ContainerNo, +MaterialModel = impItem.MaterialModel, +MaterialBatch = impItem.MaterialBatch, +IsDisabled = impItem.IsDisabled, +Remark = impItem.Remark, + + }; + + wmsInOutStockOrderDetailUpdateDtos.Add((impItem.RowIndex, oldWmsInOutStockOrderDetail.Id, wmsInOutStockOrderDetailUpdateDto)); + } + else + { + var wmsInOutStockOrderDetailCreateDto = new WmsInOutStockOrderDetailCreateDto + { + OrderNo = impItem.OrderNo, +MaterialId = impItem.MaterialId, +OrderType = impItem.OrderType, +MaterialNo = impItem.MaterialNo, +MaterialName = impItem.MaterialName, +ContainerNo = impItem.ContainerNo, +MaterialModel = impItem.MaterialModel, +MaterialBatch = impItem.MaterialBatch, +IsDisabled = impItem.IsDisabled, +Remark = impItem.Remark, + + }; + + wmsInOutStockOrderDetailCreateDtos.Add((impItem.RowIndex, wmsInOutStockOrderDetailCreateDto)); + } + } + } + + // 鏂板 + foreach (var wmsInOutStockOrderDetailDto in wmsInOutStockOrderDetailCreateDtos) + { + try + { + await CreateAsync(wmsInOutStockOrderDetailDto.Item); + } + catch (Exception e) + { + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsInOutStockOrderDetailDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; + throw new UserFriendlyException(errorMsg); + } + } + + // 鏇存柊 + foreach (var wmsInOutStockOrderDetailDto in wmsInOutStockOrderDetailUpdateDtos) + { + try + { + await UpdateAsync(wmsInOutStockOrderDetailDto.Id, wmsInOutStockOrderDetailDto.Item); + } + catch (Exception e) + { + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsInOutStockOrderDetailDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; + throw new UserFriendlyException(errorMsg); + } + } + } + + /// <summary> + /// 瀵煎嚭鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsInOutStockOrderDetailInput input) + { + Check.NotNull(input, nameof(input)); + + if (input.Sorting.IsNullOrWhiteSpace()) + { + input.Sorting = nameof(WmsInOutStockOrderDetail.Sort); + } + + #region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + + //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + var whereConditions = DynamicGetQueryParams(input); + + #endregion + + + var list = await wmsInOutStockOrderDetailRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); + var result = ObjectMapper.Map<List<WmsInOutStockOrderDetail>, List<WmsInOutStockOrderDetailDto>>(list); + + var sheets = new Dictionary<string, object> + { + ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result), + }; + + var fileName = result.Count > 1 ? "鍑哄叆搴撳崟鎹鎯呭垪琛�" : result.Count == 1 ? result[0]?.MaterialId : "WmsInOutStockOrderDetail妯$増"; + return (sheets, fileName); + } + + /// <summary> + /// 鏍¢獙鍑哄叆搴撳崟鎹鎯咃紝褰撴柊寤烘垨鏇存柊鏃� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + protected Task CheckCreateOrUpdateDtoAsync(WmsInOutStockOrderDetailCreateOrUpdateDtoBase input) + { + Check.NotNull(input, nameof(input)); + Check.NotNullOrWhiteSpace(input.OrderNo, "鍗曟嵁缂栧彿", 50); + Check.NotNullOrWhiteSpace(input.MaterialId, "鐗╂枡鍞竴鐮�", 64); + Check.NotNull(input.OrderType, "鍗曟嵁绫诲瀷锛堟灇涓惧�硷級"); + Check.NotNullOrWhiteSpace(input.MaterialNo, "鐗╂枡浠跺彿", 50); + + return Task.CompletedTask; + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockOrderAutoMapperProfile.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockOrderAutoMapperProfile.cs new file mode 100644 index 0000000..b403449 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockOrderAutoMapperProfile.cs @@ -0,0 +1,26 @@ +using AutoMapper; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrder; +using CMS.Plugin.HIAWms.Domain.WmsInOutStockOrder; +using Volo.Abp.ObjectExtending; + +namespace CMS.Plugin.HIAWms.Application.MapperProfiles; + +/// <summary> +/// 鍑哄叆搴撳崟鎹瓵utoMapper閰嶇疆 +/// </summary> +/// <seealso cref="AutoMapper.Profile" /> +public class WmsInOutStockOrderAutoMapperProfile : Profile +{ + /// <summary> + /// Initializes a new instance of the <see cref="WmsInOutStockOrderAutoMapperProfile"/> class. + /// </summary> + public WmsInOutStockOrderAutoMapperProfile() + { + /* You can configure your AutoMapper mapping configuration here. + * Alternatively, you can split your mapping configurations + * into multiple profile classes for a better organization. */ + CreateMap<WmsInOutStockOrder, WmsInOutStockOrderDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); + CreateMap<WmsInOutStockOrderCreateDto, WmsInOutStockOrder>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); + CreateMap<GetWmsInOutStockOrderInput, WmsInOutStockOrder>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockOrderDetailAutoMapperProfile.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockOrderDetailAutoMapperProfile.cs new file mode 100644 index 0000000..034c7fa --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockOrderDetailAutoMapperProfile.cs @@ -0,0 +1,26 @@ +using AutoMapper; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrderDetail; +using CMS.Plugin.HIAWms.Domain.WmsInOutStockOrderDetail; +using Volo.Abp.ObjectExtending; + +namespace CMS.Plugin.HIAWms.Application.MapperProfiles; + +/// <summary> +/// 鍑哄叆搴撳崟鎹鎯匒utoMapper閰嶇疆 +/// </summary> +/// <seealso cref="AutoMapper.Profile" /> +public class WmsInOutStockOrderDetailAutoMapperProfile : Profile +{ + /// <summary> + /// Initializes a new instance of the <see cref="WmsInOutStockOrderDetailAutoMapperProfile"/> class. + /// </summary> + public WmsInOutStockOrderDetailAutoMapperProfile() + { + /* You can configure your AutoMapper mapping configuration here. + * Alternatively, you can split your mapping configurations + * into multiple profile classes for a better organization. */ + CreateMap<WmsInOutStockOrderDetail, WmsInOutStockOrderDetailDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); + CreateMap<WmsInOutStockOrderDetailCreateDto, WmsInOutStockOrderDetail>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); + CreateMap<GetWmsInOutStockOrderDetailInput, WmsInOutStockOrderDetail>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrder/IWmsInOutStockOrderRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrder/IWmsInOutStockOrderRepository.cs new file mode 100644 index 0000000..22f5cc3 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrder/IWmsInOutStockOrderRepository.cs @@ -0,0 +1,53 @@ +using CmsQueryExtensions.Extension; +using System.Linq.Expressions; +using Volo.Abp.Domain.Repositories; + +namespace CMS.Plugin.HIAWms.Domain.WmsInOutStockOrder; + +/// <summary> +/// 鍑哄叆搴撳崟鎹粨鍌� +/// </summary> +public interface IWmsInOutStockOrderRepository : IBasicRepository<WmsInOutStockOrder, Guid> +{ + /// <summary> + /// 鎸夌収鍚嶇О鏌ユ壘鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="name"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<WmsInOutStockOrder> FindByNameAsync(string name, CancellationToken cancellationToken = default); + + /// <summary> + /// 楠岃瘉鍚嶇О鏄惁瀛樺湪鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="name"></param> + /// <param name="id"></param> + /// <returns></returns> + Task<bool> NameExistAsync(string name, Guid? id = null); + + /// <summary> + /// 鑾峰彇鏈�澶ф帓搴忓嚭鍏ュ簱鍗曟嵁 + /// </summary> + /// <returns></returns> + Task<int> GetMaxSortAsync(); + + /// <summary> + /// 鑾峰彇鍒嗛〉鍒楄〃鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="sorting"></param> + /// <param name="maxResultCount"></param> + /// <param name="skipCount"></param> + /// <param name="includeDetails"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<List<WmsInOutStockOrder>> GetListAsync(FunReturnResultModel<Expression<Func<WmsInOutStockOrder, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default); + + /// <summary> + /// 鑾峰彇鎬绘暟鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WmsInOutStockOrder, bool>>> whereConditions, CancellationToken cancellationToken = default); +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrder/WmsInOutStockOrder.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrder/WmsInOutStockOrder.cs index 9dc46f9..d6f9e37 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrder/WmsInOutStockOrder.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrder/WmsInOutStockOrder.cs @@ -99,7 +99,7 @@ /// <summary> /// 鏄惁绂佺敤 /// </summary> - public virtual bool? IsDisabled { get; protected set; } + public virtual bool? IsDisabled { get; set; } /// <summary> /// Adjusts the sort. diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrderDetail/IWmsInOutStockOrderDetailRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrderDetail/IWmsInOutStockOrderDetailRepository.cs new file mode 100644 index 0000000..f064081 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrderDetail/IWmsInOutStockOrderDetailRepository.cs @@ -0,0 +1,53 @@ +using CmsQueryExtensions.Extension; +using System.Linq.Expressions; +using Volo.Abp.Domain.Repositories; + +namespace CMS.Plugin.HIAWms.Domain.WmsInOutStockOrderDetail; + +/// <summary> +/// 鍑哄叆搴撳崟鎹鎯呬粨鍌� +/// </summary> +public interface IWmsInOutStockOrderDetailRepository : IBasicRepository<WmsInOutStockOrderDetail, Guid> +{ + /// <summary> + /// 鎸夌収鍚嶇О鏌ユ壘鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="name"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<WmsInOutStockOrderDetail> FindByNameAsync(string name, CancellationToken cancellationToken = default); + + /// <summary> + /// 楠岃瘉鍚嶇О鏄惁瀛樺湪鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="name"></param> + /// <param name="id"></param> + /// <returns></returns> + Task<bool> NameExistAsync(string name, Guid? id = null); + + /// <summary> + /// 鑾峰彇鏈�澶ф帓搴忓嚭鍏ュ簱鍗曟嵁璇︽儏 + /// </summary> + /// <returns></returns> + Task<int> GetMaxSortAsync(); + + /// <summary> + /// 鑾峰彇鍒嗛〉鍒楄〃鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="sorting"></param> + /// <param name="maxResultCount"></param> + /// <param name="skipCount"></param> + /// <param name="includeDetails"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<List<WmsInOutStockOrderDetail>> GetListAsync(FunReturnResultModel<Expression<Func<WmsInOutStockOrderDetail, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default); + + /// <summary> + /// 鑾峰彇鎬绘暟鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WmsInOutStockOrderDetail, bool>>> whereConditions, CancellationToken cancellationToken = default); +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.cs index e27314c..5b0dbda 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.cs @@ -68,7 +68,7 @@ /// <summary> /// 鏄惁绂佺敤 /// </summary> - public virtual bool? IsDisabled { get; protected set; } + public virtual bool? IsDisabled { get; set; } /// <summary> /// Adjusts the sort. diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockOrderDetailRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockOrderDetailRepository.cs new file mode 100644 index 0000000..c997b24 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockOrderDetailRepository.cs @@ -0,0 +1,113 @@ +using CMS.Plugin.HIAWms.Domain.WmsInOutStockOrderDetail; +using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions; +using CmsQueryExtensions.Extension; +using Microsoft.EntityFrameworkCore; +using System.Linq.Dynamic.Core; +using System.Linq.Expressions; +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + + +namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Repositories; + +/// <summary> +/// 鍑哄叆搴撳崟鎹鎯呬粨鍌ㄥ疄鐜� +/// </summary> +public class EfCoreWmsInOutStockOrderDetailRepository : EfCoreRepository<ICMSPluginDbContext, WmsInOutStockOrderDetail, Guid>, IWmsInOutStockOrderDetailRepository +{ + /// <summary> + /// Initializes a new instance of the <see cref="EfCoreWmsInOutStockOrderDetailRepository"/> class. + /// </summary> + /// <param name="dbContextProvider">The database context provider.</param> + public EfCoreWmsInOutStockOrderDetailRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider) + : base(dbContextProvider) + { + } + + /// <summary> + /// 鎸夌収鍚嶇О鏌ユ壘鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="name"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public virtual async Task<WmsInOutStockOrderDetail> FindByNameAsync(string name, CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .IncludeDetails() + .Where(x => !x.IsDeleted) + .OrderByDescending(x=>x.CreationTime) + .FirstOrDefaultAsync(t => t.MaterialId == name, GetCancellationToken(cancellationToken)); + } + + /// <summary> + /// 楠岃瘉鍚嶇О鏄惁瀛樺湪鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="name">鏍¢獙鍊�</param> + /// <param name="id"></param> + /// <returns></returns> + public async Task<bool> NameExistAsync(string name, Guid? id = null) + { + return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.MaterialId == name); + } + + /// <summary> + /// 鑾峰彇鏈�澶ф帓搴忓嚭鍏ュ簱鍗曟嵁璇︽儏 + /// </summary> + /// <returns></returns> + public async Task<int> GetMaxSortAsync() + { + var hasAny = await (await GetQueryableAsync()) + .Where(x => !x.IsDeleted).AnyAsync(); + if (!hasAny) + { + return 1; + } + + var sort = await (await GetQueryableAsync()) + .Where(x => !x.IsDeleted).MaxAsync(x => x.Sort); + return sort + 1; + } + + /// <summary> + /// 鑾峰彇鍒嗛〉鍒楄〃鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="sorting"></param> + /// <param name="maxResultCount"></param> + /// <param name="skipCount"></param> + /// <param name="includeDetails"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<List<WmsInOutStockOrderDetail>> GetListAsync(FunReturnResultModel<Expression<Func<WmsInOutStockOrderDetail, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .IncludeDetails(includeDetails) + .WhereIf(whereConditions != null, whereConditions.data) + .Where(x => !x.IsDeleted) + .OrderByDescending(x=>x.CreationTime) + .PageBy(skipCount, maxResultCount) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + + /// <summary> + /// 鑾峰彇鎬绘暟鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WmsInOutStockOrderDetail, bool>>> whereConditions, CancellationToken cancellationToken = default) + { + return await (await GetQueryableAsync()) + .WhereIf(whereConditions != null, whereConditions.data) + .Where(x => !x.IsDeleted) + .CountAsync(cancellationToken: GetCancellationToken(cancellationToken)); + } + + + /// <inheritdoc /> + public override async Task<IQueryable<WmsInOutStockOrderDetail>> WithDetailsAsync() + { + return (await GetQueryableAsync()) + .Where(x => !x.IsDeleted).IncludeDetails(); + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockOrderRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockOrderRepository.cs new file mode 100644 index 0000000..30f58f9 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockOrderRepository.cs @@ -0,0 +1,113 @@ +using CMS.Plugin.HIAWms.Domain.WmsInOutStockOrder; +using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions; +using CmsQueryExtensions.Extension; +using Microsoft.EntityFrameworkCore; +using System.Linq.Dynamic.Core; +using System.Linq.Expressions; +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + + +namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Repositories; + +/// <summary> +/// 鍑哄叆搴撳崟鎹粨鍌ㄥ疄鐜� +/// </summary> +public class EfCoreWmsInOutStockOrderRepository : EfCoreRepository<ICMSPluginDbContext, WmsInOutStockOrder, Guid>, IWmsInOutStockOrderRepository +{ + /// <summary> + /// Initializes a new instance of the <see cref="EfCoreWmsInOutStockOrderRepository"/> class. + /// </summary> + /// <param name="dbContextProvider">The database context provider.</param> + public EfCoreWmsInOutStockOrderRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider) + : base(dbContextProvider) + { + } + + /// <summary> + /// 鎸夌収鍚嶇О鏌ユ壘鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="name"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public virtual async Task<WmsInOutStockOrder> FindByNameAsync(string name, CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .IncludeDetails() + .Where(x => !x.IsDeleted) + .OrderByDescending(x=>x.CreationTime) + .FirstOrDefaultAsync(t => t.OrderNo == name, GetCancellationToken(cancellationToken)); + } + + /// <summary> + /// 楠岃瘉鍚嶇О鏄惁瀛樺湪鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="name">鏍¢獙鍊�</param> + /// <param name="id"></param> + /// <returns></returns> + public async Task<bool> NameExistAsync(string name, Guid? id = null) + { + return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.OrderNo == name); + } + + /// <summary> + /// 鑾峰彇鏈�澶ф帓搴忓嚭鍏ュ簱鍗曟嵁 + /// </summary> + /// <returns></returns> + public async Task<int> GetMaxSortAsync() + { + var hasAny = await (await GetQueryableAsync()) + .Where(x => !x.IsDeleted).AnyAsync(); + if (!hasAny) + { + return 1; + } + + var sort = await (await GetQueryableAsync()) + .Where(x => !x.IsDeleted).MaxAsync(x => x.Sort); + return sort + 1; + } + + /// <summary> + /// 鑾峰彇鍒嗛〉鍒楄〃鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="sorting"></param> + /// <param name="maxResultCount"></param> + /// <param name="skipCount"></param> + /// <param name="includeDetails"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<List<WmsInOutStockOrder>> GetListAsync(FunReturnResultModel<Expression<Func<WmsInOutStockOrder, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .IncludeDetails(includeDetails) + .WhereIf(whereConditions != null, whereConditions.data) + .Where(x => !x.IsDeleted) + .OrderByDescending(x=>x.CreationTime) + .PageBy(skipCount, maxResultCount) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + + /// <summary> + /// 鑾峰彇鎬绘暟鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WmsInOutStockOrder, bool>>> whereConditions, CancellationToken cancellationToken = default) + { + return await (await GetQueryableAsync()) + .WhereIf(whereConditions != null, whereConditions.data) + .Where(x => !x.IsDeleted) + .CountAsync(cancellationToken: GetCancellationToken(cancellationToken)); + } + + + /// <inheritdoc /> + public override async Task<IQueryable<WmsInOutStockOrder>> WithDetailsAsync() + { + return (await GetQueryableAsync()) + .Where(x => !x.IsDeleted).IncludeDetails(); + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockOrderController.cs b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockOrderController.cs new file mode 100644 index 0000000..97d4d8b --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockOrderController.cs @@ -0,0 +1,188 @@ +using Ao.Lang; +using CMS.Extensions.Abp.AspNetCore.Mvc.Filters; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrder; +using CMS.Plugin.HIAWms.Application.Contracts.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using MiniExcelLibs; +using System.Reflection; +using Volo.Abp; +using Volo.Abp.Application.Dtos; + +namespace CMS.Plugin.HIAWms.Controller +{ + /// <summary> + /// 鍑哄叆搴撳崟鎹湇鍔� + /// </summary> + [ApiController] + [TypeFilter(typeof(CMSLanguageFilter))] + [TypeFilter(typeof(CMSUowActionFilter))] + [TypeFilter(typeof(CMSAuditActionFilter))] + [TypeFilter(typeof(CMSExceptionFilter))] + [Route("api/v{version:apiVersion}/HIAWms/[controller]")] + public class WmsInOutStockOrderController : ControllerBase + { + private readonly IWmsInOutStockOrderAppService _wmsInOutStockOrderAppService; + + /// <summary> + /// Initializes a new instance of the <see cref="WmsInOutStockOrderController"/> class. + /// </summary> + /// <param name="wmsInOutStockOrderAppService">The wmsInOutStockOrder application service.</param> + public WmsInOutStockOrderController(IWmsInOutStockOrderAppService wmsInOutStockOrderAppService) + { + _wmsInOutStockOrderAppService = wmsInOutStockOrderAppService; + } + + /// <summary> + /// 鑾峰彇鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + [HttpGet] + [Route("{id}")] + public virtual Task<WmsInOutStockOrderDto> GetAsync(Guid id) + { + return _wmsInOutStockOrderAppService.GetAsync(id); + } + + /// <summary> + /// 鍒嗛〉鑾峰彇鍑哄叆搴撳崟鎹殑鍒楄〃. + /// </summary> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + [HttpGet] + [Route("Page")] + public virtual Task<PagedResultDto<WmsInOutStockOrderDto>> GetListAsync([FromQuery] GetWmsInOutStockOrderInput input) + { + return _wmsInOutStockOrderAppService.GetListAsync(input); + } + + /// <summary> + /// 鍒涘缓鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + //[Authorize] + [HttpPost] + public virtual Task<WmsInOutStockOrderDto> CreateAsync(WmsInOutStockOrderCreateDto input) + { + return _wmsInOutStockOrderAppService.CreateAsync(input); + } + + /// <summary> + /// 鏇存柊鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + //[Authorize] + [HttpPut] + [Route("{id}")] + public virtual Task<WmsInOutStockOrderDto> UpdateAsync(Guid id, WmsInOutStockOrderUpdateDto input) + { + return _wmsInOutStockOrderAppService.UpdateAsync(id, input); + } + + /// <summary> + /// 鍏嬮殕鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="ids">Id闆嗗悎.</param> + /// <returns></returns> + //[Authorize] + [HttpPost] + [Route("Clone")] + public virtual Task<List<WmsInOutStockOrderDto>> CloneAsync([FromBody] IEnumerable<Guid> ids) + { + return _wmsInOutStockOrderAppService.CloneAsync(ids); + } + + /// <summary> + /// 鍒犻櫎鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + //[Authorize] + [HttpDelete] + [Route("{id}")] + public virtual Task DeleteAsync(Guid id) + { + return _wmsInOutStockOrderAppService.DeleteAsync(id); + } + + /// <summary> + /// 鎵归噺鍒犻櫎鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="ids">The ids.</param> + /// <returns></returns> + //[Authorize] + [HttpDelete] + public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids) + { + return _wmsInOutStockOrderAppService.DeleteManyAsync(ids); + } + + /// <summary> + /// 璋冩暣鎺掑簭鍑哄叆搴撳崟鎹� + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + [HttpPut] + [Route("{id}/AdjustSort/{sort}")] + public virtual Task AdjustSortAsync(Guid id, int sort) + { + return _wmsInOutStockOrderAppService.AdjustSortAsync(id, sort); + } + + /// <summary> + /// 瀵煎叆鍑哄叆搴撳崟鎹� + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + [Route("Import")] + public virtual async Task<IActionResult> ImportAsync(IFormFile file) + { + using var stream = new MemoryStream(); + await file.CopyToAsync(stream); + stream.Seek(0L, SeekOrigin.Begin); + + var sheetNames = stream.GetSheetNames(); + var wmsInOutStockOrderRows = sheetNames.Contains("閰嶇疆") ? MiniExcel.Query<WmsInOutStockOrdersImportModel.WmsInOutStockOrderImportModel>(stream, sheetName: "閰嶇疆").ToList() : new(); + + if (!wmsInOutStockOrderRows.Any()) + { + throw new UserFriendlyException("璇锋鏌ュ鍏ョ殑琛ㄦ牸"); + } + + await _wmsInOutStockOrderAppService.ImportAsync(new WmsInOutStockOrdersImportModel + { + WmsInOutStockOrders = wmsInOutStockOrderRows, + }); + + return Ok(); + } + + /// <summary> + /// 瀵煎嚭鍑哄叆搴撳崟鎹� + /// </summary> + /// <returns></returns> + [HttpGet] + [Route("Export")] + public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsInOutStockOrderInput input) + { + input.MaxResultCount = int.MaxValue; + var exportData = await _wmsInOutStockOrderAppService.ExportAsync(input); + var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WmsInOutStockOrder瀵煎嚭妯℃澘.xlsx"); + if (!System.IO.File.Exists(templatePath)) + { + templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WmsInOutStockOrder瀵煎嚭妯℃澘.xlsx"); + } + + var memoryStream = new MemoryStream(); + await memoryStream.SaveAsByTemplateAsync(templatePath, exportData.Sheets); + memoryStream.Seek(0L, SeekOrigin.Begin); + return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = $"{exportData.FileName}_{DateTime.Now:yyyyMMddhhmmss}.xlsx" }; + } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockOrderDetailController.cs b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockOrderDetailController.cs new file mode 100644 index 0000000..b6ca845 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockOrderDetailController.cs @@ -0,0 +1,188 @@ +using Ao.Lang; +using CMS.Extensions.Abp.AspNetCore.Mvc.Filters; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrderDetail; +using CMS.Plugin.HIAWms.Application.Contracts.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using MiniExcelLibs; +using System.Reflection; +using Volo.Abp; +using Volo.Abp.Application.Dtos; + +namespace CMS.Plugin.HIAWms.Controller +{ + /// <summary> + /// 鍑哄叆搴撳崟鎹鎯呮湇鍔� + /// </summary> + [ApiController] + [TypeFilter(typeof(CMSLanguageFilter))] + [TypeFilter(typeof(CMSUowActionFilter))] + [TypeFilter(typeof(CMSAuditActionFilter))] + [TypeFilter(typeof(CMSExceptionFilter))] + [Route("api/v{version:apiVersion}/HIAWms/[controller]")] + public class WmsInOutStockOrderDetailController : ControllerBase + { + private readonly IWmsInOutStockOrderDetailAppService _wmsInOutStockOrderDetailAppService; + + /// <summary> + /// Initializes a new instance of the <see cref="WmsInOutStockOrderDetailController"/> class. + /// </summary> + /// <param name="wmsInOutStockOrderDetailAppService">The wmsInOutStockOrderDetail application service.</param> + public WmsInOutStockOrderDetailController(IWmsInOutStockOrderDetailAppService wmsInOutStockOrderDetailAppService) + { + _wmsInOutStockOrderDetailAppService = wmsInOutStockOrderDetailAppService; + } + + /// <summary> + /// 鑾峰彇鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + [HttpGet] + [Route("{id}")] + public virtual Task<WmsInOutStockOrderDetailDto> GetAsync(Guid id) + { + return _wmsInOutStockOrderDetailAppService.GetAsync(id); + } + + /// <summary> + /// 鍒嗛〉鑾峰彇鍑哄叆搴撳崟鎹鎯呯殑鍒楄〃. + /// </summary> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + [HttpGet] + [Route("Page")] + public virtual Task<PagedResultDto<WmsInOutStockOrderDetailDto>> GetListAsync([FromQuery] GetWmsInOutStockOrderDetailInput input) + { + return _wmsInOutStockOrderDetailAppService.GetListAsync(input); + } + + /// <summary> + /// 鍒涘缓鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + //[Authorize] + [HttpPost] + public virtual Task<WmsInOutStockOrderDetailDto> CreateAsync(WmsInOutStockOrderDetailCreateDto input) + { + return _wmsInOutStockOrderDetailAppService.CreateAsync(input); + } + + /// <summary> + /// 鏇存柊鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + //[Authorize] + [HttpPut] + [Route("{id}")] + public virtual Task<WmsInOutStockOrderDetailDto> UpdateAsync(Guid id, WmsInOutStockOrderDetailUpdateDto input) + { + return _wmsInOutStockOrderDetailAppService.UpdateAsync(id, input); + } + + /// <summary> + /// 鍏嬮殕鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="ids">Id闆嗗悎.</param> + /// <returns></returns> + //[Authorize] + [HttpPost] + [Route("Clone")] + public virtual Task<List<WmsInOutStockOrderDetailDto>> CloneAsync([FromBody] IEnumerable<Guid> ids) + { + return _wmsInOutStockOrderDetailAppService.CloneAsync(ids); + } + + /// <summary> + /// 鍒犻櫎鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + //[Authorize] + [HttpDelete] + [Route("{id}")] + public virtual Task DeleteAsync(Guid id) + { + return _wmsInOutStockOrderDetailAppService.DeleteAsync(id); + } + + /// <summary> + /// 鎵归噺鍒犻櫎鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="ids">The ids.</param> + /// <returns></returns> + //[Authorize] + [HttpDelete] + public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids) + { + return _wmsInOutStockOrderDetailAppService.DeleteManyAsync(ids); + } + + /// <summary> + /// 璋冩暣鎺掑簭鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + [HttpPut] + [Route("{id}/AdjustSort/{sort}")] + public virtual Task AdjustSortAsync(Guid id, int sort) + { + return _wmsInOutStockOrderDetailAppService.AdjustSortAsync(id, sort); + } + + /// <summary> + /// 瀵煎叆鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + [Route("Import")] + public virtual async Task<IActionResult> ImportAsync(IFormFile file) + { + using var stream = new MemoryStream(); + await file.CopyToAsync(stream); + stream.Seek(0L, SeekOrigin.Begin); + + var sheetNames = stream.GetSheetNames(); + var wmsInOutStockOrderDetailRows = sheetNames.Contains("閰嶇疆") ? MiniExcel.Query<WmsInOutStockOrderDetailsImportModel.WmsInOutStockOrderDetailImportModel>(stream, sheetName: "閰嶇疆").ToList() : new(); + + if (!wmsInOutStockOrderDetailRows.Any()) + { + throw new UserFriendlyException("璇锋鏌ュ鍏ョ殑琛ㄦ牸"); + } + + await _wmsInOutStockOrderDetailAppService.ImportAsync(new WmsInOutStockOrderDetailsImportModel + { + WmsInOutStockOrderDetails = wmsInOutStockOrderDetailRows, + }); + + return Ok(); + } + + /// <summary> + /// 瀵煎嚭鍑哄叆搴撳崟鎹鎯� + /// </summary> + /// <returns></returns> + [HttpGet] + [Route("Export")] + public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsInOutStockOrderDetailInput input) + { + input.MaxResultCount = int.MaxValue; + var exportData = await _wmsInOutStockOrderDetailAppService.ExportAsync(input); + var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WmsInOutStockOrderDetail瀵煎嚭妯℃澘.xlsx"); + if (!System.IO.File.Exists(templatePath)) + { + templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WmsInOutStockOrderDetail瀵煎嚭妯℃澘.xlsx"); + } + + var memoryStream = new MemoryStream(); + await memoryStream.SaveAsByTemplateAsync(templatePath, exportData.Sheets); + memoryStream.Seek(0L, SeekOrigin.Begin); + return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = $"{exportData.FileName}_{DateTime.Now:yyyyMMddhhmmss}.xlsx" }; + } + } +} diff --git "a/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsInOutStockOrderDetail\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" "b/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsInOutStockOrderDetail\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" new file mode 100644 index 0000000..375c4a8 --- /dev/null +++ "b/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsInOutStockOrderDetail\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" Binary files differ diff --git "a/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsInOutStockOrder\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" "b/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsInOutStockOrder\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" new file mode 100644 index 0000000..7177355 --- /dev/null +++ "b/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsInOutStockOrder\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" Binary files differ 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/Code/File/GenerateCodeConfigParamFiles/\345\207\272\345\205\245\345\272\223\345\215\225\346\215\256.txt" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/File/GenerateCodeConfigParamFiles/\345\207\272\345\205\245\345\272\223\345\215\225\346\215\256.txt" new file mode 100644 index 0000000..daec1d0 --- /dev/null +++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/File/GenerateCodeConfigParamFiles/\345\207\272\345\205\245\345\272\223\345\215\225\346\215\256.txt" @@ -0,0 +1,12 @@ +[琛ㄥ悕]:scms_wmsinoutstockorder +[瀹炰綋绫诲悕]:WmsInOutStockOrder +[瀹炰綋绫诲璞″悕]:wmsInOutStockOrder +[椤甸潰鑿滃崟鍚峕:鍑哄叆搴撳崟鎹� +[椤甸潰鑿滃崟瀵硅薄缂╁啓]:wmsInOutStockOrder +[琛ㄧ殑涓枃娉ㄨВ]:鍑哄叆搴撳崟鎹� +[閲嶅鎬ф牎楠屽瓧娈礭:OrderNo +[鍒犻櫎鎻愮ず瀛楁]:OrderNo +[妯$硦鏌ヨ瀛楁]:'OrderNo', 'MaterialNo', 'MaterialBatch' +[妯$硦鏌ヨ瀛楁鍚峕:璇疯緭鍏ュ崟鎹彿/鐗╂枡缂栧彿/鎵规 +[椤圭洰鍛藉悕绌洪棿]:HIAWms +[鏋氫妇绫诲瀷瀛楁闆嗗悎]:OrderStatus|OrderStatusEnum|OrderStatusDesc,OrderType|OrderTypeEnum|OrderTypeDesc,StockType|StockTypeEnum|StockTypeDesc \ No newline at end of file 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/Code/File/GenerateCodeConfigParamFiles/\345\207\272\345\205\245\345\272\223\345\215\225\346\215\256\350\257\246\346\203\205.txt" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/File/GenerateCodeConfigParamFiles/\345\207\272\345\205\245\345\272\223\345\215\225\346\215\256\350\257\246\346\203\205.txt" new file mode 100644 index 0000000..86c02c3 --- /dev/null +++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/File/GenerateCodeConfigParamFiles/\345\207\272\345\205\245\345\272\223\345\215\225\346\215\256\350\257\246\346\203\205.txt" @@ -0,0 +1,12 @@ +[琛ㄥ悕]:scms_wmsinoutstockorderdetail +[瀹炰綋绫诲悕]:WmsInOutStockOrderDetail +[瀹炰綋绫诲璞″悕]:wmsInOutStockOrderDetail +[椤甸潰鑿滃崟鍚峕:鍑哄叆搴撳崟鎹鎯� +[椤甸潰鑿滃崟瀵硅薄缂╁啓]:wmsInOutStockOrderDetail +[琛ㄧ殑涓枃娉ㄨВ]:鍑哄叆搴撳崟鎹鎯� +[閲嶅鎬ф牎楠屽瓧娈礭:MaterialId +[鍒犻櫎鎻愮ず瀛楁]:MaterialId +[妯$硦鏌ヨ瀛楁]:'OrderNo', 'MaterialNo', 'MaterialId' +[妯$硦鏌ヨ瀛楁鍚峕:璇疯緭鍏ュ崟鎹彿/鐗╂枡缂栧彿/鐗╂枡ID +[椤圭洰鍛藉悕绌洪棿]:HIAWms +[鏋氫妇绫诲瀷瀛楁闆嗗悎]:OrderType|OrderTypeEnum|OrderTypeDesc \ No newline at end of file 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/Code/Templete/Web/Controllers/EntityModeDrawer\346\250\241\346\235\277.txt" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Controllers/EntityModeDrawer\346\250\241\346\235\277.txt" index 0b25103..3ba8a5b 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/Code/Templete/Web/Controllers/EntityModeDrawer\346\250\241\346\235\277.txt" +++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Controllers/EntityModeDrawer\346\250\241\346\235\277.txt" @@ -31,7 +31,7 @@ return props.row || null }) - + const datePicker = (attrs) => { return ( <el-date-picker @@ -42,6 +42,16 @@ ></el-date-picker> ) } + const inputNumber = (attrs) => { + return ( + <el-input-number + min="1" + step="1" + precision="0" + {...attrs} + ></el-input-number> + ) + } const dateTimePicker = (attrs) => { return ( @@ -49,16 +59,6 @@ type="datetime" format="YYYY-MM-DD HH:mm:ss" formatValue="YYYY-MM-DD HH:mm:ss" - {...attrs} - ></el-date-picker> - ) - } - - const dateTimePicker = (attrs) => { - return ( - <el-date-picker - type="datetime" - format="YYYY-MM-DD HH:mm:ss" {...attrs} ></el-date-picker> ) -- Gitblit v1.9.3