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