From 79edcd87697f5cce97e461443fac1e4e655f6dae Mon Sep 17 00:00:00 2001 From: zs <zhousong@weben-smart.com> Date: 周一, 19 5月 2025 16:53:16 +0800 Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo --- HIAWms/hiawms_web/src/widgets/WmsStoreInfo/Controllers/WmsPlaceQueryDrawer.tsx | 549 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 549 insertions(+), 0 deletions(-) diff --git a/HIAWms/hiawms_web/src/widgets/WmsStoreInfo/Controllers/WmsPlaceQueryDrawer.tsx b/HIAWms/hiawms_web/src/widgets/WmsStoreInfo/Controllers/WmsPlaceQueryDrawer.tsx new file mode 100644 index 0000000..e7b708e --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsStoreInfo/Controllers/WmsPlaceQueryDrawer.tsx @@ -0,0 +1,549 @@ +import { + ref, + onMounted, + reactive, + computed, + Ref, + watch, + SetupContext, + h, +} from 'vue' +import { injectModel } from '@/libs/Provider/Provider' +import { WmsPlaceDrawer } from '../Models/WmsPlaceDrawer' +import { ElMessage } from 'element-plus' +import isEqual from 'lodash/isEqual' +import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' +import { cloneDeep } from 'lodash' +// 寮曞叆鍏叡閫夐」閰嶇疆 +import { + FILTER_MODE_OPTIONS_STRING, + FILTER_MODE_OPTIONS_NUM, + FILTER_MODE_OPTIONS_BOOL, +} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions' +import { BOOLEAN_OPTIONS } from '@/utils/commonOptionConstants' +import { getAreaAreaDataList } from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer' + +export const useWmsPlaceQueryDrawer = (props: any, ctx?: any) => { + const wmsPlaceDrawer = injectModel<WmsPlaceDrawer>('WmsPlaceDrawer') + /** + * 鐢ㄦ潵瀵规瘮鐨勫垵濮嬪寲鏁版嵁 + */ + const initiateData: Ref<Record<string, any>> = ref({}) + const formData = ref<Record<string, any>>({}) + // ref + const formRef = ref() + + const disabled = ref(false) + const areas = ref([]) + + 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: 'placeNo', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ簱浣嶇紪鍙�', + highSelectAttrs: { + prop: 'placeNo_FilterMode', + el: 'select', + placeholder: '璇烽�夋嫨', + options: FILTER_MODE_OPTIONS_STRING, + }, + }, + { + label: '璐т綅绫诲瀷', + prop: 'storageTypeNo', + el: 'select', + clearable: true, + option: [], + //disabled: disabled, + placeholder: '璇疯緭鍏ヨ揣浣嶇被鍨�', + highSelectAttrs: { + prop: 'storageTypeNo_FilterMode', + el: 'select', + placeholder: '璇烽�夋嫨', + options: FILTER_MODE_OPTIONS_BOOL, + }, + }, + { + label: '璐т綅鐘舵��', + prop: 'placeStatus', + el: 'select', + clearable: true, + option: [], + //disabled: disabled, + placeholder: '璇疯緭鍏ヨ揣浣嶇姸鎬�', + highSelectAttrs: { + prop: 'placeStatus_FilterMode', + el: 'select', + placeholder: '璇烽�夋嫨', + options: FILTER_MODE_OPTIONS_BOOL, + }, + }, + { + label: '鎵�鍦ㄥ簱鍖�', + prop: 'areaCode', + el: 'select', + //disabled: disabled, + placeholder: '璇疯緭鍏ユ墍鍦ㄥ簱鍖�', + highSelectAttrs: { + prop: 'areaCode_FilterMode', + el: 'select', + placeholder: '璇烽�夋嫨', + options: FILTER_MODE_OPTIONS_STRING, + }, + }, + { + label: '宸烽亾', + prop: 'aisle', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏�', + highSelectAttrs: { + prop: 'aisle_FilterMode', + el: 'select', + placeholder: '璇烽�夋嫨', + options: FILTER_MODE_OPTIONS_NUM, + }, + }, + { + label: '鎺�', + prop: 'rowNo', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏ユ帓', + highSelectAttrs: { + prop: 'rowNo_FilterMode', + el: 'select', + placeholder: '璇烽�夋嫨', + options: FILTER_MODE_OPTIONS_NUM, + }, + }, + { + label: '鍒�', + prop: 'columnNo', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏ュ垪', + highSelectAttrs: { + prop: 'columnNo_FilterMode', + el: 'select', + placeholder: '璇烽�夋嫨', + options: FILTER_MODE_OPTIONS_NUM, + }, + }, + { + label: '灞�', + prop: 'layerNo', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏ュ眰', + highSelectAttrs: { + prop: 'layerNo_FilterMode', + el: 'select', + placeholder: '璇烽�夋嫨', + options: FILTER_MODE_OPTIONS_NUM, + }, + }, + { + label: '鏄惁閿佸畾', + prop: 'islock', + el: 'select', + clearable: true, + option: [], + //disabled: disabled, + placeholder: '璇疯緭鍏ユ槸鍚﹂攣瀹�', + highSelectAttrs: { + prop: 'islock_FilterMode', + el: 'select', + placeholder: '璇烽�夋嫨', + options: FILTER_MODE_OPTIONS_BOOL, + }, + }, + { + label: '鏄惁绌烘墭', + prop: 'emptyContainer', + el: 'select', + clearable: true, + option: [], + //disabled: disabled, + placeholder: '璇疯緭鍏ユ槸鍚︾┖鎵�', + highSelectAttrs: { + prop: 'emptyContainer_FilterMode', + el: 'select', + placeholder: '璇烽�夋嫨', + options: FILTER_MODE_OPTIONS_BOOL, + }, + }, + { + label: '鏈�澶у簱瀛橀噺', + prop: 'maxStockNumber', + el: (props: any, { attrs }: SetupContext) => { + return h(inputNumber, { + ...props, + clearable: true, + ...attrs, + }) + }, + width: '100%', + step: 1, + precision: 0, + //disabled: disabled, + placeholder: '璇疯緭鍏ユ渶澶у簱瀛橀噺', + highSelectAttrs: { + prop: 'maxStockNumber_FilterMode', + el: 'select', + placeholder: '璇烽�夋嫨', + options: FILTER_MODE_OPTIONS_NUM, + }, + }, + // { + // label: '鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��', + // prop: 'redundantField1', + // el: 'input', + // //disabled: disabled, + // placeholder: '璇疯緭鍏ュ啑浣欏瓧娈�1 - 棰勭暀鎵╁睍鐢ㄩ��', + // highSelectAttrs: { + // prop: 'redundantField1_FilterMode', + // el: 'select', + // placeholder: '璇烽�夋嫨', + // options: FILTER_MODE_OPTIONS_STRING, + // }, + // }, + { + label: '澶囨敞', + prop: 'remark', + el: 'input', + //disabled: disabled, + placeholder: '璇疯緭鍏ュ娉�', + highSelectAttrs: { + prop: 'remark_FilterMode', + el: 'select', + placeholder: '璇烽�夋嫨', + options: FILTER_MODE_OPTIONS_STRING, + }, + }, + // { + // label: '鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��', + // prop: 'redundantField2', + // el: 'input', + // //disabled: disabled, + // placeholder: '璇疯緭鍏ュ啑浣欏瓧娈�2 - 棰勭暀鎵╁睍鐢ㄩ��', + // highSelectAttrs: { + // prop: 'redundantField2_FilterMode', + // el: 'select', + // placeholder: '璇烽�夋嫨', + // options: FILTER_MODE_OPTIONS_STRING, + // }, + // }, + // { + // label: '鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��', + // prop: 'redundantField3', + // el: 'input', + // //disabled: disabled, + // placeholder: '璇疯緭鍏ュ啑浣欏瓧娈�3 - 棰勭暀鎵╁睍鐢ㄩ��', + // highSelectAttrs: { + // prop: 'redundantField3_FilterMode', + // el: 'select', + // placeholder: '璇烽�夋嫨', + // options: FILTER_MODE_OPTIONS_STRING, + // }, + // }, + // { + // label: '', + // prop: 'creationTime', + // el: (props: any, { attrs }: SetupContext) => { + // return h(dateTimePickerRange, { + // ...props, + // clearable: true, + // ...attrs, + // }) + // }, + // width: '100%', + // //disabled: disabled, + // placeholder: '璇疯緭鍏�', + // isDateControl: true, // 鏄惧紡鏍囪涓烘棩鏈熸帶浠� + // }, + // { + // label: '', + // prop: 'lastModificationTime', + // el: (props: any, { attrs }: SetupContext) => { + // return h(dateTimePickerRange, { + // ...props, + // clearable: true, + // ...attrs, + // }) + // }, + // width: '100%', + // //disabled: disabled, + // placeholder: '璇疯緭鍏�', + // isDateControl: true, // 鏄惧紡鏍囪涓烘棩鏈熸帶浠� + // }, + ]) + /** + * 鏍¢獙鏄惁鏈夋暟鎹彉鍖� + */ + const checkIsEqualObject = () => { + const data = { + formData: formData.value, + } + const check = isEqual(initiateData.value, data) + return check + } + const commonGetFormData = () => { + const data = { + placeNo: formData.value.placeNo || '', + placeNo_FilterMode: formData.value.placeNo_FilterMode || '', + storageTypeNo: formData.value.storageTypeNo || '', + storageTypeNo_FilterMode: formData.value.storageTypeNo_FilterMode || '', + placeStatus: formData.value.placeStatus || '', + placeStatus_FilterMode: formData.value.placeStatus_FilterMode || '', + areaCode: formData.value.areaCode || '', + areaCode_FilterMode: formData.value.areaCode_FilterMode || '', + aisle: formData.value.aisle || '', + aisle_FilterMode: formData.value.aisle_FilterMode || '', + rowNo: formData.value.rowNo || '', + rowNo_FilterMode: formData.value.rowNo_FilterMode || '', + columnNo: formData.value.columnNo || '', + columnNo_FilterMode: formData.value.columnNo_FilterMode || '', + layerNo: formData.value.layerNo || '', + layerNo_FilterMode: formData.value.layerNo_FilterMode || '', + islock: formData.value.islock || '', + islock_FilterMode: formData.value.islock_FilterMode || '', + emptyContainer: formData.value.emptyContainer || '', + emptyContainer_FilterMode: formData.value.emptyContainer_FilterMode || '', + maxStockNumber: formData.value.maxStockNumber || '', + maxStockNumber_FilterMode: formData.value.maxStockNumber_FilterMode || '', + redundantField1: formData.value.redundantField1 || '', + redundantField1_FilterMode: + formData.value.redundantField1_FilterMode || '', + remark: formData.value.remark || '', + remark_FilterMode: formData.value.remark_FilterMode || '', + redundantField2: formData.value.redundantField2 || '', + redundantField2_FilterMode: + formData.value.redundantField2_FilterMode || '', + redundantField3: formData.value.redundantField3 || '', + redundantField3_FilterMode: + formData.value.redundantField3_FilterMode || '', + creationTime: formData.value.creationTime || '', + lastModificationTime: formData.value.lastModificationTime || '', + } + 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) + } + /** + * 閲嶇疆鍏叡select鏌ヨ + */ + const onResetForHighSelect = async () => { + formData.value.placeNo_FilterMode = 1 + formData.value.storageTypeNo_FilterMode = 2 + formData.value.placeStatus_FilterMode = 2 + formData.value.areaCode_FilterMode = 1 + formData.value.aisle_FilterMode = 2 + formData.value.rowNo_FilterMode = 2 + formData.value.columnNo_FilterMode = 2 + formData.value.layerNo_FilterMode = 2 + formData.value.islock_FilterMode = 2 + formData.value.emptyContainer_FilterMode = 2 + formData.value.maxStockNumber_FilterMode = 2 + formData.value.redundantField1_FilterMode = 1 + formData.value.remark_FilterMode = 1 + formData.value.redundantField2_FilterMode = 1 + formData.value.redundantField3_FilterMode = 1 + } + /** + * 閲嶇疆鏌ヨ + */ + const onReset = async () => { + formData.value = {} + onResetForHighSelect() //閲嶇疆鍏叡select鏌ヨ + formData.value.placeNo = '' + formData.value.storageTypeNo = '' + formData.value.placeStatus = '' + formData.value.areaCode = '' + formData.value.aisle = '' + formData.value.rowNo = '' + formData.value.columnNo = '' + formData.value.layerNo = '' + formData.value.islock = '' + formData.value.emptyContainer = '' + formData.value.maxStockNumber = '' + formData.value.redundantField1 = '' + formData.value.remark = '' + formData.value.redundantField2 = '' + formData.value.redundantField3 = '' + formData.value.creationTime = '' + formData.value.lastModificationTime = '' + //鍚戠埗缁勪欢鍙戦�佽嚜瀹氫箟浜嬩欢 + 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 updateFormAreaOptions = (propName: string, enumData: any[]) => { + const item = formItems.find((item) => item.prop === propName) + if (item && enumData) { + item.options = enumData.map((item) => ({ + label: item.areaName, + value: item.areaNo, + })) + } + } + /** + * 閫氱敤鏌ヨ鏋氫妇 + */ + const commonQueryEnumForFrom = async () => { + const placeTypeEnumEnum = await wmsPlaceDrawer.getWmsEnumData({ + EnumName: 'PlaceTypeEnum', + }) + updateFormItemOptions('storageTypeNo', placeTypeEnumEnum) + const placeStatusEnumEnum = await wmsPlaceDrawer.getWmsEnumData({ + EnumName: 'PlaceStatusEnum', + }) + updateFormItemOptions('placeStatus', placeStatusEnumEnum) + const yesNoEnumEnum = await wmsPlaceDrawer.getWmsEnumData({ + EnumName: 'YesNoEnum', + }) + updateFormItemOptions('islock', yesNoEnumEnum) + updateFormItemOptions('emptyContainer', yesNoEnumEnum) + const areaList = await getAreaAreaDataList() + areas.value = areaList + updateFormAreaOptions('areaCode', areaList) + } + commonQueryEnumForFrom() + onResetForHighSelect() //閲嶇疆鍏叡select鏌ヨ + /** + * 寮圭獥鎵撳紑鑾峰彇璇︽儏 + */ + const onOpen = async () => { + disabled.value = false + updateCheckData() + } + + watch(() => current.value, onOpen) + + return { + formItems, + formData, + visible, + formRef, + onOpen, + onClose, + onConfirmQuery, + onReset, + } +} -- Gitblit v1.9.3