zs
2025-05-13 e8d564377d20526c643f00132ccc3466360f9c5b
详情页面
已添加11个文件
已修改14个文件
2210 ■■■■ 文件已修改
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Controllers/WmsMaterialStock.ts 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Controllers/WmsMaterialStockDetailQueryDrawer.tsx 445 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Controllers/WmsMaterialStockQueryDrawer.tsx 457 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Models/Service/WmsMaterialStockDetailQueryDrawer.ts 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Models/Service/WmsMaterialStockDrawer.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Models/Service/WmsMaterialStockQueryDrawer.ts 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Models/WmsMaterialStockDetailQueryDrawer.ts 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Models/WmsMaterialStockDrawer.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Models/WmsMaterialStockQueryDrawer.tsx 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockDetailQuery/WmsMaterialStockDetailQueryDrawer.module.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockDetailQuery/WmsMaterialStockDetailQueryDrawer.tsx 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockQuery/WmsMaterialStockQueryDrawer.module.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockQuery/WmsMaterialStockQueryDrawer.tsx 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/Config.ts 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.module.scss 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.tsx 508 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/Config.ts 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.module.scss 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.tsx 347 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/enum.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsStoreInfo/Models/WmsAreaDrawer.ts 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/GetWmsMaterialStocksInput.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialStockController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/File/GenerateCodeConfigParamFiles/库存详情.txt 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/MainForm.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Controllers/WmsMaterialStock.ts
@@ -52,6 +52,12 @@
    isAdd: false,
  })
  const dialogConfigForQuery = reactive({
    visible: false,
    title: '',
    isAdd: false,
  })
  const dialogSettingConfig = reactive({
    visible: false,
    title: '',
@@ -72,6 +78,15 @@
    dialogConfig.title = row.name
    dialogConfig.isAdd = false
    sort.value = row.sort
  }
  //点击按钮【高级查询】
  const onAdvancedQuery = () => {
    const params = tableRef.value?.getPaginationParams()
    current.value = null
    dialogConfigForQuery.visible = true
    dialogConfigForQuery.isAdd = true
    dialogConfigForQuery.title = '高级查询'
  }
  const contextMenu = [
@@ -174,13 +189,15 @@
  /**
   * å¯¼å‡º
   */
  const onExport = () => {
    const params = tableRef.value?.getParams()
    exportFile(
      '/api/v1/HIAWms/wmsMaterialStock/export',
      params,
      'wmsMaterialStock'
    )
  const onExport = (data = {}) => {
    // const params = tableRef.value?.getParams()
    // exportFile(
    //   '/api/v1/HIAWms/wmsMaterialStock/export',
    //   params,
    //   'wmsMaterialStock'
    exportFile('/api/v1/HIAWms/wmsMaterialStock/export', data, 'HIAWms')
    // )
  }
  /**
@@ -251,6 +268,7 @@
    sort,
    wmsMaterialStockColumns,
    paginationParams,
    dialogConfigForQuery,
    headers,
    onBeforeUpload,
    onError,
@@ -262,5 +280,6 @@
    onConfirmWmsMaterialStock,
    onCheck,
    onAddWmsMaterialStock,
    onAdvancedQuery,
  }
}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Controllers/WmsMaterialStockDetailQueryDrawer.tsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,445 @@
import {
  ref,
  onMounted,
  reactive,
  computed,
  Ref,
  watch,
  SetupContext,
  h,
} from 'vue'
import { injectModel } from '@/libs/Provider/Provider'
import { WmsMaterialStockDrawer } from '../Models/WmsMaterialStockDrawer'
import { ElMessage } from 'element-plus'
import isEqual from 'lodash/isEqual'
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox'
import { cloneDeep } from 'lodash'
export const useWmsMaterialStockDetalQueryDrawer = (props: any, ctx?: any) => {
  const wmsMaterialStockDetailDrawer = injectModel<WmsMaterialStockDrawer>(
    'WmsMaterialStockDrawer'
  )
  /**
   * ç”¨æ¥å¯¹æ¯”的初始化数据
   */
  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)
    },
  })
  /**
   * é«˜çº§æŸ¥è¯¢çš„form字段
   */
  const formItems = reactive([
    // {
    //   label: '物料ID',
    //   prop: 'materialId',
    //   el: 'input',
    //   //disabled: disabled,
    //   placeholder: '请输入物料ID',
    // },
    {
      label: '物料名称',
      prop: 'materialName',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入物料名称',
    },
    // {
    //   label: '容器编号',
    //   prop: 'containerNo',
    //   el: 'input',
    //   //disabled: disabled,
    //   placeholder: '请输入容器编号',
    // },
    // {
    //   label: '容器状态',
    //   prop: 'containerStatus',
    //   el: 'select',
    //   clearable: true,
    //   option: [],
    //   //disabled: disabled,
    //   placeholder: '请输入容器状态',
    // },
    // {
    //   label: '容器类型',
    //   prop: 'containerType',
    //   el: 'select',
    //   clearable: true,
    //   option: [],
    //   //disabled: disabled,
    //   placeholder: '请输入容器类型',
    // },
    {
      label: '物料编号',
      prop: 'materialNo',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入物料编号',
    },
    {
      label: '库存数量',
      prop: 'stockNumber',
      el: (props: any, { attrs }: SetupContext) => {
        return h(inputNumber, {
          ...props,
          clearable: true,
          ...attrs,
        })
      },
      width: '100%',
      step: 1,
      precision: 0,
      //disabled: disabled,
      placeholder: '请输入库存数量',
    },
    {
      label: '物料批次',
      prop: 'materialBatch',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入物料批次',
    },
    // {
    //   label: '供应商编号',
    //   prop: 'supplierCode',
    //   el: 'input',
    //   //disabled: disabled,
    //   placeholder: '请输入供应商编号',
    // },
    {
      label: '型号',
      prop: 'materialModel',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入型号',
    },
    {
      label: '库位编号',
      prop: 'placeNo',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入库位编号',
    },
    {
      label: '库位状态;',
      prop: 'placeStatus',
      el: 'select',
      clearable: true,
      option: [],
      //disabled: disabled,
      placeholder: '请输入库位状态;',
    },
    {
      label: '库位类型',
      prop: 'storageTypeNo',
      el: 'select',
      clearable: false,
      option: [],
      //disabled: disabled,
      placeholder: '请输入库位类型',
    },
    {
      label: '区域编号',
      prop: 'areaCode',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入区域编号',
    },
    // {
    //   label: '库区名称',
    //   prop: 'areaName',
    //   el: 'input',
    //   //disabled: disabled,
    //   placeholder: '请输入库区名称',
    // },
    // {
    //   label: '检验状态(1:未检验,2:检验通过,3:检验不通过)',
    //   prop: 'checkStatus',
    //   el: 'select',
    //   clearable: true,
    //   option: [],
    //   //disabled: disabled,
    //   placeholder: '请输入检验状态(1:未检验,2:检验通过,3:检验不通过)',
    // },
    {
      label: '是否锁定',
      prop: 'isLock',
      el: 'select',
      clearable: true,
      option: [],
      //disabled: disabled,
      placeholder: '请输入是否锁定',
    },
    // {
    //   label: '是否空托(2:否,1:是)',
    //   prop: 'emptyContainer',
    //   el: 'select',
    //   clearable: true,
    //   option: [],
    //   //disabled: disabled,
    //   placeholder: '请输入是否空托(2:否,1:是)',
    // },
    {
      label: '入库时间',
      prop: 'inStockTime',
      el: (props: any, { attrs }: SetupContext) => {
        return h(dateTimePickerRange, {
          ...props,
          clearable: true,
          ...attrs,
        })
      },
      width: '100%',
      //disabled: disabled,
      placeholder: '请输入入库时间',
    },
    // {
    //   label: '冗余字段1 - é¢„留扩展用途',
    //   prop: 'redundantField1',
    //   el: 'input',
    //   //disabled: disabled,
    //   placeholder: '请输入冗余字段1 - é¢„留扩展用途',
    // },
    // {
    //   label: '冗余字段2 - é¢„留扩展用途',
    //   prop: 'redundantField2',
    //   el: 'input',
    //   //disabled: disabled,
    //   placeholder: '请输入冗余字段2 - é¢„留扩展用途',
    // },
    {
      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 = {
      materialId: formData.value.materialId || '',
      materialName: formData.value.materialName || '',
      containerNo: formData.value.containerNo || '',
      containerStatus: formData.value.containerStatus || '',
      containerType: formData.value.containerType || '',
      materialNo: formData.value.materialNo || '',
      stockNumber: formData.value.stockNumber || '',
      materialBatch: formData.value.materialBatch || '',
      supplierCode: formData.value.supplierCode || '',
      materialModel: formData.value.materialModel || '',
      placeNo: formData.value.placeNo || '',
      placeStatus: formData.value.placeStatus || '',
      storageTypeNo: formData.value.storageTypeNo || 1,
      areaCode: formData.value.areaCode || '',
      areaName: formData.value.areaName || '',
      checkStatus: formData.value.checkStatus || '',
      isLock: formData.value.isLock || '',
      emptyContainer: formData.value.emptyContainer || '',
      inStockTime: formData.value.inStockTime || '',
      remark: formData.value.remark || '',
      redundantField1: formData.value.redundantField1 || '',
      redundantField2: formData.value.redundantField2 || '',
      redundantField3: formData.value.redundantField3 || '',
      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)
  }
  /**
   * é‡ç½®æŸ¥è¯¢
   */
  const onReset = async () => {
    formData.value = {}
    formData.value.materialId = ''
    formData.value.materialName = ''
    formData.value.containerNo = ''
    formData.value.containerStatus = ''
    formData.value.containerType = ''
    formData.value.materialNo = ''
    formData.value.stockNumber = ''
    formData.value.materialBatch = ''
    formData.value.supplierCode = ''
    formData.value.materialModel = ''
    formData.value.placeNo = ''
    formData.value.placeStatus = ''
    formData.value.storageTypeNo = 1
    formData.value.areaCode = ''
    formData.value.areaName = ''
    formData.value.checkStatus = ''
    formData.value.isLock = ''
    formData.value.emptyContainer = ''
    formData.value.inStockTime = ''
    formData.value.remark = ''
    formData.value.redundantField1 = ''
    formData.value.redundantField2 = ''
    formData.value.redundantField3 = ''
    formData.value.deletionTime = ''
    //向父组件发送自定义事件
    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 containerStatusEnumEnum =
      await wmsMaterialStockDetailDrawer.getWmsEnumData({
        EnumName: 'ContainerStatusEnum',
      })
    updateFormItemOptions('containerStatus', containerStatusEnumEnum)
    const containerTypeEnumEnum =
      await wmsMaterialStockDetailDrawer.getWmsEnumData({
        EnumName: 'ContainerTypeEnum',
      })
    updateFormItemOptions('containerType', containerTypeEnumEnum)
    const placeStatusEnumEnum =
      await wmsMaterialStockDetailDrawer.getWmsEnumData({
        EnumName: 'PlaceStatusEnum',
      })
    updateFormItemOptions('placeStatus', placeStatusEnumEnum)
    const placeTypeEnumEnum = await wmsMaterialStockDetailDrawer.getWmsEnumData(
      {
        EnumName: 'PlaceTypeEnum',
      }
    )
    updateFormItemOptions('storageTypeNo', placeTypeEnumEnum)
    const materialCheckStatusEnumEnum =
      await wmsMaterialStockDetailDrawer.getWmsEnumData({
        EnumName: 'MaterialCheckStatusEnum',
      })
    updateFormItemOptions('checkStatus', materialCheckStatusEnumEnum)
    const yesNoEnumEnum = await wmsMaterialStockDetailDrawer.getWmsEnumData({
      EnumName: 'YesNoEnum',
    })
    updateFormItemOptions('isLock', yesNoEnumEnum)
    const yesNoEnumEnum2 = await wmsMaterialStockDetailDrawer.getWmsEnumData({
      EnumName: 'YesNoEnum',
    })
    updateFormItemOptions('emptyContainer', yesNoEnumEnum2)
  }
  commonQueryEnumForFrom()
  /**
   * å¼¹çª—打开获取详情
   */
  const onOpen = async () => {
    disabled.value = false
    updateCheckData()
  }
  watch(() => current.value, onOpen)
  return {
    formItems,
    formData,
    visible,
    formRef,
    onOpen,
    onClose,
    onConfirmQuery,
    onReset,
  }
}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Controllers/WmsMaterialStockQueryDrawer.tsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,457 @@
import {
  ref,
  onMounted,
  reactive,
  computed,
  Ref,
  watch,
  SetupContext,
  h,
} from 'vue'
import { injectModel } from '@/libs/Provider/Provider'
import { WmsMaterialStockDrawer } from '../Models/WmsMaterialStockDrawer'
import { ElMessage } from 'element-plus'
import isEqual from 'lodash/isEqual'
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox'
import { cloneDeep } from 'lodash'
export const useWmsMaterialStockQueryDrawer = (props: any, ctx?: any) => {
  const wmsMaterialStockDrawer = injectModel<WmsMaterialStockDrawer>(
    'WmsMaterialStockDrawer'
  )
  /**
   * ç”¨æ¥å¯¹æ¯”的初始化数据
   */
  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)
    },
  })
  /**
   * é«˜çº§æŸ¥è¯¢çš„form字段
   */
  const formItems = reactive([
    {
      label: '物料名称',
      prop: 'materialName',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入物料名称',
    },
    // {
    //   label: '容器编号',
    //   prop: 'containerNo',
    //   el: 'input',
    //   //disabled: disabled,
    //   placeholder: '请输入容器编号',
    // },
    // {
    //   label: '容器状态',
    //   prop: 'containerStatus',
    //   el: 'select',
    //   clearable: true,
    //   option: [],
    //   //disabled: disabled,
    //   placeholder: '请输入容器状态',
    // },
    // {
    //   label: '容器类型',
    //   prop: 'containerType',
    //   el: 'select',
    //   clearable: true,
    //   option: [],
    //   //disabled: disabled,
    //   placeholder: '请输入容器类型',
    // },
    {
      label: '物料编号',
      prop: 'materialNo',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入物料编号',
    },
    // {
    //   label: '库存数量',
    //   prop: 'stockNumber',
    //   el: (props: any, { attrs }: SetupContext) => {
    //     return h(inputNumber, {
    //       ...props,
    //       clearable: true,
    //       ...attrs,
    //     })
    //   },
    //   width: '100%',
    //   step: 1,
    //   precision: 0,
    //   //disabled: disabled,
    //   placeholder: '请输入库存数量',
    // },
    {
      label: '物料批次',
      prop: 'materialBatch',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入物料批次',
    },
    // {
    //   label: '供应商编号',
    //   prop: 'supplierCode',
    //   el: 'input',
    //   //disabled: disabled,
    //   placeholder: '请输入供应商编号',
    // },
    {
      label: '型号',
      prop: 'materialModel',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入型号',
    },
    {
      label: '库位编号',
      prop: 'placeNo',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入库位编号',
    },
    {
      label: '库位状态;',
      prop: 'placeStatus',
      el: 'select',
      clearable: true,
      option: [],
      //disabled: disabled,
      placeholder: '请输入库位状态;',
    },
    {
      label: '库位类型',
      prop: 'storageTypeNo',
      el: 'select',
      clearable: true,
      option: [],
      //disabled: disabled,
      placeholder: '请输入库位类型',
    },
    {
      label: '区域编号',
      prop: 'areaCode',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入区域编号',
    },
    // {
    //   label: '库区名称',
    //   prop: 'areaName',
    //   el: 'input',
    //   //disabled: disabled,
    //   placeholder: '请输入库区名称',
    // },
    // {
    //   label: '检验状态(1:未检验,2:检验通过,3:检验不通过)',
    //   prop: 'checkStatus',
    //   el: 'select',
    //   clearable: true,
    //   option: [],
    //   //disabled: disabled,
    //   placeholder: '请输入检验状态(1:未检验,2:检验通过,3:检验不通过)',
    // },
    {
      label: '是否锁定',
      prop: 'isLock',
      el: 'select',
      clearable: true,
      option: [],
      //disabled: disabled,
      placeholder: '请输入是否锁定',
    },
    // {
    //   label: '是否空托(2:否,1:是)',
    //   prop: 'emptyContainer',
    //   el: 'select',
    //   clearable: true,
    //   option: [],
    //   //disabled: disabled,
    //   placeholder: '请输入是否空托(2:否,1:是)',
    // },
    {
      label: '入库时间',
      prop: 'inStockTime',
      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: '冗余字段1 - é¢„留扩展用途',
    //   prop: 'redundantField1',
    //   el: 'input',
    //   //disabled: disabled,
    //   placeholder: '请输入冗余字段1 - é¢„留扩展用途',
    // },
    // {
    //   label: '冗余字段2 - é¢„留扩展用途',
    //   prop: 'redundantField2',
    //   el: 'input',
    //   //disabled: disabled,
    //   placeholder: '请输入冗余字段2 - é¢„留扩展用途',
    // },
    // {
    //   label: '冗余字段3 - é¢„留扩展用途',
    //   prop: 'redundantField3',
    //   el: 'input',
    //   //disabled: disabled,
    //   placeholder: '请输入冗余字段3 - é¢„留扩展用途',
    // },
    // {
    //   label: '创建时间',
    //   prop: 'creationTime',
    //   el: (props: any, { attrs }: SetupContext) => {
    //     return h(dateTimePickerRange, {
    //       ...props,
    //       clearable: true,
    //       ...attrs,
    //     })
    //   },
    //   width: '100%',
    //   //disabled: disabled,
    //   placeholder: '请输入',
    // },
    // {
    //   label: '',
    //   prop: 'lastModificationTime',
    //   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 = {
      materialId: formData.value.materialId || '',
      materialName: formData.value.materialName || '',
      containerNo: formData.value.containerNo || '',
      containerStatus: formData.value.containerStatus || '',
      containerType: formData.value.containerType || '',
      materialNo: formData.value.materialNo || '',
      stockNumber: formData.value.stockNumber || '',
      materialBatch: formData.value.materialBatch || '',
      supplierCode: formData.value.supplierCode || '',
      materialModel: formData.value.materialModel || '',
      placeNo: formData.value.placeNo || '',
      placeStatus: formData.value.placeStatus || '',
      storageTypeNo: formData.value.storageTypeNo || 1,
      areaCode: formData.value.areaCode || '',
      areaName: formData.value.areaName || '',
      checkStatus: formData.value.checkStatus || '',
      isLock: formData.value.isLock || '',
      emptyContainer: formData.value.emptyContainer || '',
      inStockTime: formData.value.inStockTime || '',
      remark: formData.value.remark || '',
      redundantField1: formData.value.redundantField1 || '',
      redundantField2: formData.value.redundantField2 || '',
      redundantField3: formData.value.redundantField3 || '',
      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)
  }
  /**
   * é‡ç½®æŸ¥è¯¢
   */
  const onReset = async () => {
    formData.value = {}
    formData.value.materialId = ''
    formData.value.materialName = ''
    formData.value.containerNo = ''
    formData.value.containerStatus = ''
    formData.value.containerType = ''
    formData.value.materialNo = ''
    formData.value.stockNumber = ''
    formData.value.materialBatch = ''
    formData.value.supplierCode = ''
    formData.value.materialModel = ''
    formData.value.placeNo = ''
    formData.value.placeStatus = ''
    formData.value.storageTypeNo = ''
    formData.value.areaCode = ''
    formData.value.areaName = ''
    formData.value.checkStatus = ''
    formData.value.isLock = ''
    formData.value.emptyContainer = ''
    formData.value.inStockTime = ''
    formData.value.remark = ''
    formData.value.redundantField1 = ''
    formData.value.redundantField2 = ''
    formData.value.redundantField3 = ''
    formData.value.deletionTime = ''
    //向父组件发送自定义事件
    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 containerStatusEnumEnum = await wmsMaterialStockDrawer.getWmsEnumData(
      {
        EnumName: 'ContainerStatusEnum',
      }
    )
    updateFormItemOptions('containerStatus', containerStatusEnumEnum)
    const containerTypeEnumEnum = await wmsMaterialStockDrawer.getWmsEnumData({
      EnumName: 'ContainerTypeEnum',
    })
    updateFormItemOptions('containerType', containerTypeEnumEnum)
    const placeStatusEnumEnum = await wmsMaterialStockDrawer.getWmsEnumData({
      EnumName: 'PlaceStatusEnum',
    })
    updateFormItemOptions('placeStatus', placeStatusEnumEnum)
    const placeTypeEnumEnum = await wmsMaterialStockDrawer.getWmsEnumData({
      EnumName: 'PlaceTypeEnum',
    })
    updateFormItemOptions('storageTypeNo', placeTypeEnumEnum)
    const materialCheckStatusEnumEnum =
      await wmsMaterialStockDrawer.getWmsEnumData({
        EnumName: 'MaterialCheckStatusEnum',
      })
    updateFormItemOptions('checkStatus', materialCheckStatusEnumEnum)
    const yesNoEnumEnum = await wmsMaterialStockDrawer.getWmsEnumData({
      EnumName: 'YesNoEnum',
    })
    updateFormItemOptions('isLock', yesNoEnumEnum)
    const yesNoEnumEnum2 = await wmsMaterialStockDrawer.getWmsEnumData({
      EnumName: 'YesNoEnum',
    })
    updateFormItemOptions('emptyContainer', yesNoEnumEnum2)
  }
  commonQueryEnumForFrom()
  formData.value.storageTypeNo = 1
  /**
   * å¼¹çª—打开获取详情
   */
  const onOpen = async () => {
    disabled.value = false
    updateCheckData()
  }
  watch(() => current.value, onOpen)
  return {
    formItems,
    formData,
    visible,
    formRef,
    onOpen,
    onClose,
    onConfirmQuery,
    onReset,
  }
}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Models/Service/WmsMaterialStockDetailQueryDrawer.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
import { Base } from '@/libs/Base/Base'
const request = Base.request
/**
 * æ·»åŠ 
 * @returns
 */
export const addWmsMaterialStock = (data: any) => {
  return request.post('/api/v1/HIAWms/wmsMaterialStockDetail', data)
}
/**
 * èŽ·å–è¯¦æƒ…
 * @returns
 */
export const getWmsMaterialStock = (id: string) => {
  return request.get(`/api/v1/HIAWms/wmsMaterialStockDetail/${id}`)
}
/**
 * æ›´æ–°
 * @returns
 */
export const updateWmsMaterialStock = (id: string, data: Record<string, any>) => {
  return request.put(`/api/v1/HIAWms/wmsMaterialStockDetail/${id}`, data)
}
/**
 * èŽ·å–æžšä¸¾
 * @returns
 */
export const getWmsEnumData = (data: any) => {
  return request.post('/api/v1/WareCmsUtilityApi/WmsEnum', data)
}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Models/Service/WmsMaterialStockDrawer.ts
@@ -27,3 +27,7 @@
) => {
  return request.put(`/api/v1/HIAWms/wmsMaterialStock/${id}`, data)
}
export const getWmsEnumData = (data: Record<string, any>) => {
  return request.post('/api/v1/HIAWms/WmsEnum', data)
}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Models/Service/WmsMaterialStockQueryDrawer.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
import { Base } from '@/libs/Base/Base'
const request = Base.request
/**
 * æ·»åŠ 
 * @returns
 */
export const addWmsMaterialStock = (data: any) => {
  return request.post('/api/v1/HIAWms/wmsMaterialStockDetail', data)
}
/**
 * èŽ·å–è¯¦æƒ…
 * @returns
 */
export const getWmsMaterialStock = (id: string) => {
  return request.get(`/api/v1/HIAWms/wmsMaterialStockDetail/${id}`)
}
/**
 * æ›´æ–°
 * @returns
 */
export const updateWmsMaterialStock = (id: string, data: Record<string, any>) => {
  return request.put(`/api/v1/HIAWms/wmsMaterialStockDetail/${id}`, data)
}
/**
 * èŽ·å–æžšä¸¾
 * @returns
 */
export const getWmsEnumData = (data: any) => {
  return request.post('/api/v1/WareCmsUtilityApi/WmsEnum', data)
}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Models/WmsMaterialStockDetailQueryDrawer.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import { Base } from '@/libs/Base/Base'
import {
  addWmsMaterialStock,
  getWmsMaterialStock,
  updateWmsMaterialStock,
  getWmsEnumData,
} from './Service/WmsMaterialStockDetailQueryDrawer'
import { useGlobalState } from '@/libs/Store/Store'
export class WmsMaterialStockQueryDrawer extends Base<{ [key: string]: any }> {
  constructor() {
    super({
      data: [],
      wmsMaterialStockDetail: {},
    })
  }
  /**
   * æ·»åŠ 
   * @param data
   */
  async addWmsMaterialStock(data: Record<string, any>) {
    return addWmsMaterialStock(data)
  }
  /**
   * æ›´æ–°
   * @param data
   */
  async updateWmsMaterialStock(id: string, data: Record<string, any>) {
    return updateWmsMaterialStock(id, data)
  }
  /**
   * èŽ·å–è¯¦æƒ…
   */
  async getWmsMaterialStockDetail(current: any, id?: string) {
    return getWmsMaterialStock(id || current?.id)
  }
  //  èŽ·å–æžšä¸¾å€¼
  async getWmsEnumData(data: Record<string, any>) {
    return getWmsEnumData(data)
  }
}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Models/WmsMaterialStockDrawer.ts
@@ -3,6 +3,7 @@
  addWmsMaterialStock,
  getWmsMaterialStock,
  updateWmsMaterialStock,
  getWmsEnumData,
} from './Service/WmsMaterialStockDrawer'
import { useGlobalState } from '@/libs/Store/Store'
@@ -35,4 +36,9 @@
  async getWmsMaterialStockDetail(current: any, materialNo?: string) {
    return getWmsMaterialStock(current?.materialNo)
  }
  //  èŽ·å–æžšä¸¾å€¼
  async getWmsEnumData(data: Record<string, any>) {
    return getWmsEnumData(data)
  }
}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Models/WmsMaterialStockQueryDrawer.tsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import { Base } from '@/libs/Base/Base'
import {
  addWmsMaterialStock,
  getWmsMaterialStock,
  updateWmsMaterialStock,
  getWmsEnumData,
} from './Service/WmsMaterialStockDetailQueryDrawer'
import { useGlobalState } from '@/libs/Store/Store'
export class WmsMaterialStockQueryDrawer extends Base<{ [key: string]: any }> {
  constructor() {
    super({
      data: [],
      wmsMaterialStockDetail: {},
    })
  }
  /**
   * æ·»åŠ 
   * @param data
   */
  async addWmsMaterialStock(data: Record<string, any>) {
    return addWmsMaterialStock(data)
  }
  /**
   * æ›´æ–°
   * @param data
   */
  async updateWmsMaterialStock(id: string, data: Record<string, any>) {
    return updateWmsMaterialStock(id, data)
  }
  /**
   * èŽ·å–è¯¦æƒ…
   */
  async getWmsMaterialStockDetail(current: any, id?: string) {
    return getWmsMaterialStock(id || current?.id)
  }
  //  èŽ·å–æžšä¸¾å€¼
  async getWmsEnumData(data: Record<string, any>) {
    return getWmsEnumData(data)
  }
}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockDetailQuery/WmsMaterialStockDetailQueryDrawer.module.scss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
.drawer {
  width: 800px;
}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockDetailQuery/WmsMaterialStockDetailQueryDrawer.tsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
/*
 * ç‰©æ–™åŸºç¡€ä¿¡æ¯æŸ¥è¯¢å¼¹å‡ºæ¡†
 */
import { SetupContext, defineComponent } from 'vue'
import BaseQueryDrawer from '@/components/BaseQueryDrawer/BaseQueryDrawer'
import styles from './WmsMaterialStockDetailQueryDrawer.module.scss'
import { useWmsMaterialStockDetalQueryDrawer } from '../../../../Controllers/WmsMaterialStockDetailQueryDrawer.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,
    } = useWmsMaterialStockDetalQueryDrawer(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>
    )
  },
})
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockQuery/WmsMaterialStockQueryDrawer.module.scss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
.drawer {
  width: 800px;
}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/Dialog/WmsMaterialStockQuery/WmsMaterialStockQueryDrawer.tsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
/*
 * ç‰©æ–™åŸºç¡€ä¿¡æ¯æŸ¥è¯¢å¼¹å‡ºæ¡†
 */
import { SetupContext, defineComponent } from 'vue'
import BaseQueryDrawer from '@/components/BaseQueryDrawer/BaseQueryDrawer'
import styles from './WmsMaterialStockQueryDrawer.module.scss'
import { useWmsMaterialStockQueryDrawer } from '../../../../Controllers/WmsMaterialStockQueryDrawer.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,
    } = useWmsMaterialStockQueryDrawer(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>
    )
  },
})
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/Config.ts
@@ -20,18 +20,18 @@
    field: 'placeStatusDesc',
    title: '库位状态',
  },
  {
    field: 'containerNo',
    title: '容器编号',
  },
  // {
  //   field: 'containerNo',
  //   title: '容器编号',
  // },
  {
    field: 'stockNumber',
    title: '库存数量',
  },
  {
    field: 'materialBatch',
    title: '物料批次',
  },
  // {
  //   field: 'materialBatch',
  //   title: '物料批次',
  // },
  {
    field: 'materialModel',
    title: '型号',
@@ -40,15 +40,15 @@
    field: 'areaName',
    title: '所属库区',
  },
  {
    field: 'checkStatusDesc',
    title: '检验状态',
  },
  {
    field: 'inStockTime',
    title: '入库时间',
    width: 180,
  },
  // {
  //   field: 'checkStatusDesc',
  //   title: '检验状态',
  // },
  // {
  //   field: 'inStockTime',
  //   title: '入库时间',
  //   width: 180,
  // },
  {
    field: 'isLockDesc',
    title: '锁定状态',
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.module.scss
@@ -1,8 +1,8 @@
.wmsMaterialStockContent {
.wmsMaterialStockDetailContent {
  width: 100%;
  height: 80%;
  height: 100%;
  .wmsMaterialStockList {
  .wmsMaterialStockDetailList {
    width: 100%;
    height: calc(100% - 70px);
  }
@@ -15,7 +15,7 @@
  .header {
    margin-bottom: 12px;
    display: flex;
    justify-content: flex-start;
    justify-content: flex-end;
    align-items: center;
  }
}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.tsx
@@ -5,20 +5,22 @@
import { useWmsMaterialStock } from '../../../Controllers/WmsMaterialStock'
import IconButton from '@/components/IconButton/IconButton'
import WmsMaterialStockDrawer from '../Dialog/WmsMaterialStockDrawer/WmsMaterialStockDrawer'
import WmsMaterialStockQueryDrawer from '../Dialog/WmsMaterialStockQuery/WmsMaterialStockQueryDrawer'
import Search from '@/components/Search/Search'
import { columns } from './Config'
import TdButton from '@/components/TdButton/TdButton'
import { vPermission } from '@/libs/Permission/Permission'
import dayjs from 'dayjs'
import { getWmsEnumData } from '@/widgets/WmsTask/Models/Service/WmsTaskDrawer'
import {
  ElInput,
  ElSelect,
  ElOption,
  ElDatePicker,
  ElForm,
  ElFormItem,
  ElInput,
  ElOption,
  ElSelect,
} from 'element-plus'
import { getWmsEnumData } from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer'
import { injectModel } from '@/libs/Provider/Provider'
interface RenderTableType {
  url?: string
@@ -40,6 +42,7 @@
      dataSource,
      contextMenu,
      dialogConfig,
      dialogConfigForQuery,
      tableRef,
      current,
      search,
@@ -51,91 +54,82 @@
      onConfirmWmsMaterialStock,
      onCheck,
      onAddWmsMaterialStock,
      onAdvancedQuery,
      onExport,
      openDetail,
      onSuccess,
      onBeforeUpload,
    } = useWmsMaterialStock(props, ctx)
    //定义高级查询引用
    const wmsMaterialStockDetailQueryDrawerRef = ref(null)
    // æ–°å¢žçš„æŸ¥è¯¢æ¡ä»¶
    const queryForm = ref({
      containerNo: '',
      materialNo: '',
      materialName: '',
      containerType: '',
      containerStatus: '',
      searchVal: '',
      storageTypeNo: 1,
      placeStatus: '',
      placeNo: '',
      isLock: '',
      emptyContainer: '',
      dateRange: [],
      filter: '',
      str_searchFormInputAttrs: [],
    })
    const queryParams = computed(() => ({
      ...queryForm.value,
      containerType: queryForm.value.containerType || '', // å¤„理下拉
      containerStatus: queryForm.value.containerStatus || '',
      storageTypeNo: queryForm.value.storageTypeNo || 1, // å¤„理下拉
      placeStatus: queryForm.value.placeStatus || '',
      islock: queryForm.value.isLock || '',
      emptyContainer: queryForm.value.emptyContainer || '',
      startTime: queryForm.value.dateRange[0] || '',
      endTime: queryForm.value.dateRange[1] || '',
    }))
    //定义整体模糊查询的列数组(注意:必须大小写跟后端的实体类属性名一致,否则会导致匹配不对的问题)
    const _searchFormInputAttrs = ref(['OrderNo', 'MaterialNo', 'MaterialId'])
    const searchFormInputAttrs_Placeholder = ref('请输入单据号/物料编号/物料ID')
    // åŠ¨æ€æžšä¸¾é€‰é¡¹
    const enumOptions = reactive({
      containerType: [] as Array<{ label: string; value: any }>,
      containerStatus: [] as Array<{ label: string; value: any }>,
      storageTypeNo: [] as Array<{ label: string; value: any }>,
      containerType: [] as Array<{ label: string; value: any }>,
      placeStatus: [] as Array<{ label: string; value: any }>,
      yesOrNo: [] as Array<{ label: string; value: any }>,
      storageTypeNo: [] as Array<{ label: string; value: any }>,
      checkStatus: [] as Array<{ label: string; value: any }>,
      isLock: [] as Array<{ label: string; value: any }>,
      emptyContainer: [] as Array<{ label: string; value: any }>,
    })
    // èŽ·å–æžšä¸¾æ•°æ®
    const fetchEnumData = async () => {
      try {
        // èŽ·å–ç‰©æ–™ç±»åž‹æžšä¸¾
        const containerTypeData = await getWmsEnumData({
          EnumName: 'ContainerTypeEnum',
        })
        enumOptions.containerType = containerTypeData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        // èŽ·å–ç‰©æ–™ç±»åž‹æžšä¸¾
        const storageTypeNoData = await getWmsEnumData({
          EnumName: 'PlaceTypeEnum',
        })
        enumOptions.storageTypeNo = storageTypeNoData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        // èŽ·å–é‡‡è´­ç±»åž‹æžšä¸¾
        const placeStatusData = await getWmsEnumData({
          EnumName: 'PlaceStatusEnum',
        })
        enumOptions.placeStatus = placeStatusData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        // èŽ·å–é‡‡è´­ç±»åž‹æžšä¸¾
        const containerStatusData = await getWmsEnumData({
        const containerStatusEnumData = await getWmsEnumData({
          EnumName: 'ContainerStatusEnum',
        })
        enumOptions.containerStatus = containerStatusData.map((item) => ({
        enumOptions.containerStatus = containerStatusEnumData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        const yesNoData = await getWmsEnumData({
        const containerTypeEnumData = await getWmsEnumData({
          EnumName: 'ContainerTypeEnum',
        })
        enumOptions.containerType = containerTypeEnumData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        const placeStatusEnumData = await getWmsEnumData({
          EnumName: 'PlaceStatusEnum',
        })
        enumOptions.placeStatus = placeStatusEnumData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        const placeTypeEnumData = await getWmsEnumData({
          EnumName: 'PlaceTypeEnum',
        })
        enumOptions.storageTypeNo = placeTypeEnumData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        const materialCheckStatusEnumData = await getWmsEnumData({
          EnumName: 'MaterialCheckStatusEnum',
        })
        enumOptions.checkStatus = materialCheckStatusEnumData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        const yesNoEnumData = await getWmsEnumData({
          EnumName: 'YesNoEnum',
        })
        enumOptions.yesOrNo = yesNoData.map((item) => ({
        enumOptions.isLock = yesNoEnumData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        enumOptions.emptyContainer = yesNoEnumData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
@@ -147,33 +141,72 @@
    // ç»„件挂载时获取枚举数据
    onMounted(() => {
      fetchEnumData()
      handleQuery()
      tableRef.value = {
        dataSource: [],
      }
      handleQueryForMain()
    })
    // æ–°å¢žçš„æŸ¥è¯¢æ–¹æ³•
    const handleQuery = async () => {
      console.log('查询条件:', queryParams.value)
      // tableRef.value.getTableList()
      tableRef.value.getList(queryParams.value)
    // å®šä¹‰å“åº”式查询数据
    const _curHighQueryData = ref({
      searchVal: '',
      str_searchFormInputAttrs: [],
    })
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(主页面中的按钮【查询】)
    const handleQueryForMain = async () => {
      _curHighQueryData.value.searchVal = queryForm.value.searchVal
      _curHighQueryData.value.str_searchFormInputAttrs =
        _searchFormInputAttrs.value
      if (!_curHighQueryData.value?.storageTypeNo) {
        _curHighQueryData.value.storageTypeNo = 1
      }
      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
    }
    // é‡ç½®æŸ¥è¯¢æ¡ä»¶
    const resetQuery = () => {
      queryForm.value = {
        containerNo: '',
        materialNo: '',
        materialName: '',
        containerType: '',
        containerStatus: '',
        storageTypeNo: 1,
        placeStatus: '',
        placeNo: '',
        isLock: '',
        emptyContainer: '',
        dateRange: [],
        filter: '',
      }
    }
    /**
     * @returns è¡¨æ ¼
     */
@@ -187,20 +220,17 @@
        params,
        autoHeight,
      } = props
      props.params = {
        ...queryParams.value,
        ...params,
      }
      return (
        <div
          class={{
            [styles.wmsMaterialStockList]: true,
            [styles.wmsMaterialStockDetailList]: true,
          }}
        >
          <BaseTable
            ref={tableRef}
            url={url}
            sortUrlTpl="/api/v1/HIAWms/wmsMaterialStock/{id}/adjustsort/{sort}"
            sortUrlTpl="/api/v1/HIAWms/wmsMaterialStockDetail/{id}/adjustsort/{sort}"
            v-model:dataSource={dataSource.value}
            columns={columns}
            contextMenu={contextMenu}
@@ -218,6 +248,57 @@
                  <div>
                    {row.inStockTime != null
                      ? dayjs(row.inStockTime).format('YYYY-MM-DD HH:mm:ss')
                      : '-'}
                  </div>
                )
              },
              isDisabled: ({ row }: any) => {
                return (
                  <div>
                    {row.isDisabled != null
                      ? row.isDisabled
                        ? '是'
                        : '否'
                      : '-'}
                  </div>
                )
              },
              creationTime: ({ row }: any) => {
                return (
                  <div>
                    {row.creationTime != null
                      ? dayjs(row.creationTime).format('YYYY-MM-DD HH:mm:ss')
                      : '-'}
                  </div>
                )
              },
              lastModificationTime: ({ row }: any) => {
                return (
                  <div>
                    {row.lastModificationTime != null
                      ? dayjs(row.lastModificationTime).format(
                          'YYYY-MM-DD HH:mm:ss'
                        )
                      : '-'}
                  </div>
                )
              },
              isDeleted: ({ row }: any) => {
                return (
                  <div>
                    {row.isDeleted != null
                      ? row.isDeleted
                        ? '是'
                        : '否'
                      : '-'}
                  </div>
                )
              },
              deletionTime: ({ row }: any) => {
                return (
                  <div>
                    {row.deletionTime != null
                      ? dayjs(row.deletionTime).format('YYYY-MM-DD HH:mm:ss')
                      : '-'}
                  </div>
                )
@@ -242,9 +323,10 @@
        </div>
      )
    }
    return () => {
      return (
        <div class={styles.wmsMaterialStockContent}>
        <div class={styles.wmsMaterialStockDetailContent}>
          {/* æ·»åŠ /编辑 */}
          <WmsMaterialStockDrawer
            v-model={dialogConfig.visible}
@@ -253,183 +335,22 @@
            sort={sort.value}
            onConfirm={onConfirmWmsMaterialStock}
          />
          {/* æ–°å¢žçš„æŸ¥è¯¢è¡¨å• */}
          <ElForm
            inline
            model={queryForm.value}
            class={styles.queryForm}
            label-width="80px"
          >
            <ElFormItem label="关键字">
              <ElInput
                v-model={queryForm.value.filter}
                placeholder="请输入关键字搜索"
                clearable
                class={styles.formItem}
          {/* é«˜çº§æŸ¥è¯¢ */}
          <WmsMaterialStockQueryDrawer
            ref="wmsMaterialStockDetailQueryDrawerRef"
            v-model={dialogConfigForQuery.visible}
            title={dialogConfigForQuery.title}
            row={current.value}
            sort={sort.value}
            onConfirmQuery={handleQuery}
            onRestQuery={resetQuery}
            onClose={closeQuery}
              />
            </ElFormItem>
            <ElFormItem label="物料编码">
              <ElInput
                v-model={queryForm.value.materialNo}
                placeholder="请输入物料编码"
                clearable
                class={styles.formItem}
              />
            </ElFormItem>
            <ElFormItem label="物料名称">
              <ElInput
                v-model={queryForm.value.materialName}
                placeholder="请输入物料名称"
                clearable
                class={styles.formItem}
              />
            </ElFormItem>
            <ElFormItem label="托盘编码">
              <ElInput
                v-model={queryForm.value.containerNo}
                placeholder="请输入托盘编码"
                clearable
                class={styles.formItem}
              />
            </ElFormItem>
            <ElFormItem label="托盘类型">
              <ElSelect
                v-model={queryForm.value.containerType}
                placeholder="请选择托盘类型"
                clearable
                loading={enumOptions.containerType.length === 0}
                class={styles.formItem}
              >
                {enumOptions.containerType.map((option) => (
                  <ElOption
                    key={option.value}
                    label={option.label}
                    value={option.value}
                  />
                ))}
              </ElSelect>
            </ElFormItem>
            <ElFormItem label="托盘状态">
              <ElSelect
                v-model={queryForm.value.containerStatus}
                placeholder="请选择托盘状态"
                clearable
                loading={enumOptions.containerStatus.length === 0}
                class={styles.formItem}
              >
                {enumOptions.containerStatus.map((option) => (
                  <ElOption
                    key={option.value}
                    label={option.label}
                    value={option.value}
                  />
                ))}
              </ElSelect>
            </ElFormItem>
            <ElFormItem label="库位编号">
              <ElInput
                v-model={queryForm.value.placeNo}
                placeholder="请输入库位编号"
                clearable
                class={styles.formItem}
              />
            </ElFormItem>
            <ElFormItem label="库位类型">
              <ElSelect
                v-model={queryForm.value.storageTypeNo}
                placeholder="请选择托盘类型"
                loading={enumOptions.storageTypeNo.length === 0}
                class={styles.formItem}
              >
                {enumOptions.storageTypeNo.map((option) => (
                  <ElOption
                    key={option.value}
                    label={option.label}
                    value={option.value}
                  />
                ))}
              </ElSelect>
            </ElFormItem>
            <ElFormItem label="库位状态">
              <ElSelect
                v-model={queryForm.value.placeStatus}
                placeholder="请选择托盘状态"
                clearable
                loading={enumOptions.placeStatus.length === 0}
                class={styles.formItem}
              >
                {enumOptions.placeStatus.map((option) => (
                  <ElOption
                    key={option.value}
                    label={option.label}
                    value={option.value}
                  />
                ))}
              </ElSelect>
            </ElFormItem>
            <ElFormItem label="是否锁定">
              <ElSelect
                v-model={queryForm.value.isLock}
                placeholder="请选择是否锁定"
                clearable
                loading={enumOptions.yesOrNo.length === 0}
                class={styles.formItem}
              >
                {enumOptions.yesOrNo.map((option) => (
                  <ElOption
                    key={option.value}
                    label={option.label}
                    value={option.value}
                  />
                ))}
              </ElSelect>
            </ElFormItem>
            <ElFormItem label="是否空托">
              <ElSelect
                v-model={queryForm.value.emptyContainer}
                placeholder="请选择是否空托"
                clearable
                loading={enumOptions.yesOrNo.length === 0}
                class={styles.formItem}
              >
                {enumOptions.yesOrNo.map((option) => (
                  <ElOption
                    key={option.value}
                    label={option.label}
                    value={option.value}
                  />
                ))}
              </ElSelect>
            </ElFormItem>
            <ElFormItem label="日期范围">
              <ElDatePicker
                v-model={queryForm.value.dateRange}
                type="datetimerange"
                range-separator="至"
                show-now="true"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                format="YYYY-MM-DD HH:mm:ss"
                valueFormat="YYYY-MM-DD HH:mm:ss"
              />
            </ElFormItem>
            <ElFormItem>
              <IconButton type="primary" icon="search" onClick={handleQuery}>
                æŸ¥è¯¢
              </IconButton>
              <IconButton
                style="margin-left: 10px;"
                icon="refresh"
                onClick={resetQuery}
              >
                é‡ç½®
              </IconButton>
            </ElFormItem>
          </ElForm>
          <div class={styles.headerContent}>
            <div class={styles.header}>
              <IconButton
                v-permission="wmsMaterialStock-add"
                v-permission="wmsMaterialStockDetail-add"
                icon="add-p"
                onClick={onAddWmsMaterialStock}
                type="primary"
@@ -437,8 +358,9 @@
                æ·»åŠ 
              </IconButton>
              <el-divider direction="vertical" />
              <el-upload
                v-permission="wmsMaterialStock-import"
              {/* <el-upload
                v-permission="wmsMaterialStockDetail-import"
                name="file"
                accept=".xlsx,.xls,.csv"
                show-file-list={false}
@@ -446,28 +368,58 @@
                onSuccess={onSuccess}
                before-upload={onBeforeUpload}
                headers={headers.value}
                action="/api/v1/HIAWms/wmsMaterialStock/import"
                action="/api/v1/HIAWms/wmsMaterialStockDetail/import"
              >
                <IconButton icon="in">导入</IconButton>
              </el-upload>
              </el-upload> */}
              <IconButton
                v-permission="wmsMaterialStock-output"
                v-permission="wmsMaterialStockDetail-output"
                icon="out"
                onClick={onExport}
                onClick={handleExport}
              >
                å¯¼å‡º
              </IconButton>
            </div>
            {/* <Search
              placeholder="请输入关键字"
              v-model={search.value}
              onConfirm={onSearch}
              style={{ marginTop: '-1px' }}
            /> */}
            <ElFormItem style={{ marginTop: '15px' }}>
              <ElFormItem label="关键字">
                <el-tooltip
                  class="box-item"
                  effect="dark"
                  content={searchFormInputAttrs_Placeholder.value}
                  placement="top-start"
                >
                  <ElInput
                    v-model={queryForm.value.searchVal}
                    placeholder={searchFormInputAttrs_Placeholder.value}
                    clearable
                    class={styles.formItem}
                  />
                </el-tooltip>
              </ElFormItem>
              <IconButton
                type="primary"
                icon="search"
                onClick={handleQueryForMain}
              >
                æŸ¥è¯¢
              </IconButton>
              {/* <IconButton style="" icon="refresh" onClick={resetQuery}>
                é‡ç½®
              </IconButton> */}
              <IconButton
                v-permission="wmsMaterialStock-add"
                icon="search"
                onClick={onAdvancedQuery}
                type="primary"
              >
                é«˜çº§æŸ¥è¯¢
              </IconButton>
            </ElFormItem>
          </div>
          <RenderBaseTable
            url="/api/v1/HIAWms/wmsMaterialStock"
            url="/api/v1/HIAWms/wmsmaterialstock/"
            dataSource={dataSource}
            isChecked={true}
            isDrag={true}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/Config.ts
@@ -20,10 +20,10 @@
    field: 'placeStatusDesc',
    title: '库位状态',
  },
  {
    field: 'containerNo',
    title: '容器编号',
  },
  // {
  //   field: 'containerNo',
  //   title: '容器编号',
  // },
  {
    field: 'stockNumber',
    title: '库存数量',
@@ -40,10 +40,10 @@
    field: 'areaName',
    title: '所属库区',
  },
  {
    field: 'checkStatusDesc',
    title: '检验状态',
  },
  // {
  //   field: 'checkStatusDesc',
  //   title: '检验状态',
  // },
  {
    field: 'inStockTime',
    title: '入库时间',
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.module.scss
@@ -1,8 +1,8 @@
.wmsMaterialStockContent {
.wmsMaterialStockDetailContent {
  width: 100%;
  height: 80%;
  height: 100%;
  .wmsMaterialStockList {
  .wmsMaterialStockDetailList {
    width: 100%;
    height: calc(100% - 70px);
  }
@@ -15,7 +15,7 @@
  .header {
    margin-bottom: 12px;
    display: flex;
    justify-content: flex-start;
    justify-content: flex-end;
    align-items: center;
  }
}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.tsx
@@ -4,21 +4,22 @@
import styles from './WmsMaterialStockDetail.module.scss'
import { useWmsMaterialStock } from '../../../Controllers/WmsMaterialStock'
import IconButton from '@/components/IconButton/IconButton'
import WmsMaterialStockDrawer from '../Dialog/WmsMaterialStockDrawer/WmsMaterialStockDrawer'
import WmsMaterialStockDetailQueryDrawer from '../Dialog/WmsMaterialStockDetailQuery/WmsMaterialStockDetailQueryDrawer'
import Search from '@/components/Search/Search'
import { columns } from './Config'
import TdButton from '@/components/TdButton/TdButton'
import { vPermission } from '@/libs/Permission/Permission'
import dayjs from 'dayjs'
import { getWmsEnumData } from '@/widgets/WmsMaterialStock/Models/Service/WmsMaterialStockDrawer'
import {
  ElInput,
  ElSelect,
  ElOption,
  ElDatePicker,
  ElForm,
  ElFormItem,
  ElInput,
  ElOption,
  ElSelect,
} from 'element-plus'
import { getWmsEnumData } from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer'
import { injectModel } from '@/libs/Provider/Provider'
interface RenderTableType {
  url?: string
@@ -31,7 +32,7 @@
}
export default defineComponent({
  name: 'WmsMaterialStock',
  name: 'WmsMaterialStockDetail',
  directives: {
    permission: vPermission,
  },
@@ -40,6 +41,7 @@
      dataSource,
      contextMenu,
      dialogConfig,
      dialogConfigForQuery,
      tableRef,
      current,
      search,
@@ -51,91 +53,81 @@
      onConfirmWmsMaterialStock,
      onCheck,
      onAddWmsMaterialStock,
      onAdvancedQuery,
      onExport,
      openDetail,
      onSuccess,
      onBeforeUpload,
    } = useWmsMaterialStock(props, ctx)
    //定义高级查询引用
    const wmsMaterialStockDetailQueryDrawerRef = ref(null)
    // æ–°å¢žçš„æŸ¥è¯¢æ¡ä»¶
    const queryForm = ref({
      containerNo: '',
      materialNo: '',
      materialName: '',
      containerType: '',
      containerStatus: '',
      storageTypeNo: 1,
      placeStatus: '',
      placeNo: '',
      isLock: '',
      emptyContainer: '',
      dateRange: [],
      filter: '',
      searchVal: '',
      str_searchFormInputAttrs: [],
    })
    const queryParams = computed(() => ({
      ...queryForm.value,
      containerType: queryForm.value.containerType || '', // å¤„理下拉
      containerStatus: queryForm.value.containerStatus || '',
      storageTypeNo: queryForm.value.storageTypeNo || 1, // å¤„理下拉
      placeStatus: queryForm.value.placeStatus || '',
      islock: queryForm.value.isLock || '',
      emptyContainer: queryForm.value.emptyContainer || '',
      startTime: queryForm.value.dateRange[0] || '',
      endTime: queryForm.value.dateRange[1] || '',
    }))
    //定义整体模糊查询的列数组(注意:必须大小写跟后端的实体类属性名一致,否则会导致匹配不对的问题)
    const _searchFormInputAttrs = ref(['OrderNo', 'MaterialNo', 'MaterialId'])
    const searchFormInputAttrs_Placeholder = ref('请输入单据号/物料编号/物料ID')
    // åŠ¨æ€æžšä¸¾é€‰é¡¹
    const enumOptions = reactive({
      containerType: [] as Array<{ label: string; value: any }>,
      containerStatus: [] as Array<{ label: string; value: any }>,
      storageTypeNo: [] as Array<{ label: string; value: any }>,
      containerType: [] as Array<{ label: string; value: any }>,
      placeStatus: [] as Array<{ label: string; value: any }>,
      yesOrNo: [] as Array<{ label: string; value: any }>,
      storageTypeNo: [] as Array<{ label: string; value: any }>,
      checkStatus: [] as Array<{ label: string; value: any }>,
      isLock: [] as Array<{ label: string; value: any }>,
      emptyContainer: [] as Array<{ label: string; value: any }>,
    })
    // èŽ·å–æžšä¸¾æ•°æ®
    const fetchEnumData = async () => {
      try {
        // èŽ·å–ç‰©æ–™ç±»åž‹æžšä¸¾
        const containerTypeData = await getWmsEnumData({
          EnumName: 'ContainerTypeEnum',
        })
        enumOptions.containerType = containerTypeData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        // èŽ·å–ç‰©æ–™ç±»åž‹æžšä¸¾
        const storageTypeNoData = await getWmsEnumData({
          EnumName: 'PlaceTypeEnum',
        })
        enumOptions.storageTypeNo = storageTypeNoData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        // èŽ·å–é‡‡è´­ç±»åž‹æžšä¸¾
        const placeStatusData = await getWmsEnumData({
          EnumName: 'PlaceStatusEnum',
        })
        enumOptions.placeStatus = placeStatusData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        // èŽ·å–é‡‡è´­ç±»åž‹æžšä¸¾
        const containerStatusData = await getWmsEnumData({
        const containerStatusEnumData = await getWmsEnumData({
          EnumName: 'ContainerStatusEnum',
        })
        enumOptions.containerStatus = containerStatusData.map((item) => ({
        enumOptions.containerStatus = containerStatusEnumData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        const yesNoData = await getWmsEnumData({
        const containerTypeEnumData = await getWmsEnumData({
          EnumName: 'ContainerTypeEnum',
        })
        enumOptions.containerType = containerTypeEnumData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        const placeStatusEnumData = await getWmsEnumData({
          EnumName: 'PlaceStatusEnum',
        })
        enumOptions.placeStatus = placeStatusEnumData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        const placeTypeEnumData = await getWmsEnumData({
          EnumName: 'PlaceTypeEnum',
        })
        enumOptions.storageTypeNo = placeTypeEnumData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        const materialCheckStatusEnumData = await getWmsEnumData({
          EnumName: 'MaterialCheckStatusEnum',
        })
        enumOptions.checkStatus = materialCheckStatusEnumData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        const yesNoEnumData = await getWmsEnumData({
          EnumName: 'YesNoEnum',
        })
        enumOptions.yesOrNo = yesNoData.map((item) => ({
        enumOptions.isLock = yesNoEnumData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
        enumOptions.emptyContainer = yesNoEnumData.map((item) => ({
          label: item.description,
          value: item.value,
        }))
@@ -147,33 +139,65 @@
    // ç»„件挂载时获取枚举数据
    onMounted(() => {
      fetchEnumData()
      handleQuery()
      handleQueryForMain()
    })
    // æ–°å¢žçš„æŸ¥è¯¢æ–¹æ³•
    const handleQuery = async () => {
      console.log('查询条件:', queryParams.value)
      // tableRef.value.getTableList()
      tableRef.value.getList(queryParams.value)
    // å®šä¹‰å“åº”式查询数据
    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
    }
    // é‡ç½®æŸ¥è¯¢æ¡ä»¶
    const resetQuery = () => {
      queryForm.value = {
        containerNo: '',
        materialNo: '',
        materialName: '',
        containerType: '',
        containerStatus: '',
        storageTypeNo: 1,
        placeStatus: '',
        placeNo: '',
        isLock: '',
        emptyContainer: '',
        dateRange: [],
        filter: '',
      }
    }
    /**
     * @returns è¡¨æ ¼
     */
@@ -187,20 +211,17 @@
        params,
        autoHeight,
      } = props
      props.params = {
        ...queryParams.value,
        ...params,
      }
      return (
        <div
          class={{
            [styles.wmsMaterialStockList]: true,
            [styles.wmsMaterialStockDetailList]: true,
          }}
        >
          <BaseTable
            ref={tableRef}
            url={url}
            sortUrlTpl="/api/v1/HIAWms/wmsMaterialStock/{id}/adjustsort/{sort}"
            sortUrlTpl="/api/v1/HIAWms/wmsMaterialStockDetail/{id}/adjustsort/{sort}"
            v-model:dataSource={dataSource.value}
            columns={columns}
            contextMenu={contextMenu}
@@ -218,6 +239,57 @@
                  <div>
                    {row.inStockTime != null
                      ? dayjs(row.inStockTime).format('YYYY-MM-DD HH:mm:ss')
                      : '-'}
                  </div>
                )
              },
              isDisabled: ({ row }: any) => {
                return (
                  <div>
                    {row.isDisabled != null
                      ? row.isDisabled
                        ? '是'
                        : '否'
                      : '-'}
                  </div>
                )
              },
              creationTime: ({ row }: any) => {
                return (
                  <div>
                    {row.creationTime != null
                      ? dayjs(row.creationTime).format('YYYY-MM-DD HH:mm:ss')
                      : '-'}
                  </div>
                )
              },
              lastModificationTime: ({ row }: any) => {
                return (
                  <div>
                    {row.lastModificationTime != null
                      ? dayjs(row.lastModificationTime).format(
                          'YYYY-MM-DD HH:mm:ss'
                        )
                      : '-'}
                  </div>
                )
              },
              isDeleted: ({ row }: any) => {
                return (
                  <div>
                    {row.isDeleted != null
                      ? row.isDeleted
                        ? '是'
                        : '否'
                      : '-'}
                  </div>
                )
              },
              deletionTime: ({ row }: any) => {
                return (
                  <div>
                    {row.deletionTime != null
                      ? dayjs(row.deletionTime).format('YYYY-MM-DD HH:mm:ss')
                      : '-'}
                  </div>
                )
@@ -242,20 +314,13 @@
        </div>
      )
    }
    return () => {
      return (
        <div class={styles.wmsMaterialStockContent}>
          {/* æ·»åŠ /编辑 */}
          <WmsMaterialStockDrawer
            v-model={dialogConfig.visible}
            title={dialogConfig.title}
            row={current.value}
            sort={sort.value}
            onConfirm={onConfirmWmsMaterialStock}
          />
        <div class={styles.wmsMaterialStockDetailContent}>
          {/* é«˜çº§æŸ¥è¯¢ */}
          {/* <WmsMaterialStockDetailDrawer
            ref="wmsTaskQueryDrawerRef"
          <WmsMaterialStockDetailQueryDrawer
            ref="wmsMaterialStockDetailQueryDrawerRef"
            v-model={dialogConfigForQuery.visible}
            title={dialogConfigForQuery.title}
            row={current.value}
@@ -263,49 +328,57 @@
            onConfirmQuery={handleQuery}
            onRestQuery={resetQuery}
            onClose={closeQuery}
          /> */}
          />
          <div class={styles.headerContent}>
            <div class={styles.header}>
              <IconButton
                v-permission="wmsMaterialStock-add"
                icon="add-p"
                onClick={onAddWmsMaterialStock}
                type="primary"
              >
                æ·»åŠ 
              </IconButton>
              <el-divider direction="vertical" />
              <el-upload
                v-permission="wmsMaterialStock-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/wmsMaterialStock/import"
              >
                <IconButton icon="in">导入</IconButton>
              </el-upload>
              <IconButton
                v-permission="wmsMaterialStock-output"
                v-permission="wmsMaterialStockDetail-output"
                icon="out"
                onClick={onExport}
              >
                å¯¼å‡º
              </IconButton>
            </div>
            {/* <Search
              placeholder="请输入关键字"
              v-model={search.value}
              onConfirm={onSearch}
              style={{ marginTop: '-1px' }}
            /> */}
            <ElFormItem style={{ marginTop: '15px' }}>
              <ElFormItem label="关键字">
                <el-tooltip
                  class="box-item"
                  effect="dark"
                  content={searchFormInputAttrs_Placeholder.value}
                  placement="top-start"
                >
                  <ElInput
                    v-model={queryForm.value.searchVal}
                    placeholder={searchFormInputAttrs_Placeholder.value}
                    clearable
                    class={styles.formItem}
                  />
                </el-tooltip>
              </ElFormItem>
              <IconButton
                type="primary"
                icon="search"
                onClick={handleQueryForMain}
              >
                æŸ¥è¯¢
              </IconButton>
              {/* <IconButton style="" icon="refresh" onClick={resetQuery}>
                é‡ç½®
              </IconButton> */}
              <IconButton
                v-permission="wmsMaterialStockDetail-hightQuery"
                icon="search"
                onClick={onAdvancedQuery}
                type="primary"
              >
                é«˜çº§æŸ¥è¯¢
              </IconButton>
            </ElFormItem>
          </div>
          <RenderBaseTable
            url="/api/v1/HIAWms/wmsMaterialStock"
            url="/api/v1/HIAWms/wmsMaterialStock/StockDetail"
            dataSource={dataSource}
            isChecked={true}
            isDrag={true}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/enum.ts
@@ -12,4 +12,8 @@
  'wmsMaterialStock-add': '列表-添加',
  'wmsMaterialStock-import': '列表-导入',
  'wmsMaterialStock-output': '列表-输出',
  'wmsMaterialStockDetail-hightQuery': '列表-高级查询',
  'wmsMaterialStockDetail-query': '列表-查询',
  'wmsMaterialStockDetail-output': '列表-导出',
}
HIAWms/hiawms_web/src/widgets/WmsStoreInfo/Models/WmsAreaDrawer.ts
@@ -1,9 +1,5 @@
import { Base } from '@/libs/Base/Base'
import {
  addWmsArea,
  getWmsArea,
  updateWmsArea,
} from './Service/WmsAreaDrawer'
import { addWmsArea, getWmsArea, updateWmsArea } from './Service/WmsAreaDrawer'
import { useGlobalState } from '@/libs/Store/Store'
export class WmsAreaDrawer extends Base<{ [key: string]: any }> {
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/GetWmsMaterialStocksInput.cs
@@ -90,7 +90,7 @@
    /// <summary>
    /// åº“位类型编号
    /// </summary>
    public PlaceTypeEnum? StorageTypeNo { get; set; }
    public PlaceTypeEnum? StorageTypeNo { get; set; } = PlaceTypeEnum.YUANLIAOKUWEI;
    /// <summary>
    /// åŒºåŸŸç¼–号
HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialStockController.cs
@@ -64,7 +64,7 @@
        /// <returns></returns>
        [HttpGet]
        [Route("StockDetail")]
        public async Task<PagedResultDto<WmsMaterialStockDto>> GetStockDetailAsync(GetWmsMaterialStocksInput input)
        public async Task<PagedResultDto<WmsMaterialStockDto>> GetStockDetailAsync([FromQuery]GetWmsMaterialStocksInput input)
        {
            return await _wmsmaterialstockAppService.GetStockDetailAsync(input);
        }
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/File/GenerateCodeConfigParamFiles/¿â´æÏêÇé.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
[表名]:scms_wmsmaterialstocks
[实体类名]:WmsMaterialStock
[实体类对象名]:WmsMaterialStock
[页面菜单名]:库存详情
[页面菜单对象缩写]:wmsMaterialStockDetail
[表的中文注解]:出入库单据详情
[重复性校验字段]:MaterialId
[删除提示字段]:MaterialId
[模糊查询字段]:'OrderNo', 'MaterialNo', 'MaterialId'
[模糊查询字段名]:请输入单据号/物料编号/物料ID
[项目命名空间]:HIAWms
[枚举类型字段集合]:ContainerStatus,ContainerStatusEnum&ContainerType,ContainerTypeEnum&PlaceStatus,PlaceStatusEnum&StorageTypeNo,PlaceTypeEnum&CheckStatus,MaterialCheckStatusEnum&IsLock,YesNoEnum&EmptyContainer,YesNoEnum
[前端根文件夹名称]:web
[排序]:CreationTime
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/MainForm.cs
@@ -215,11 +215,11 @@
                    return;
                }
                //增加校验
                if (columnList.Where(x => x.ColumnName.ToUpper() == SystemCommonVar.c_creator.ToUpper()).Count() == 0)
                {
                    MessageBox.Show($"表中没有字段{SystemCommonVar.c_creator}!");
                    return;
                }
                //if (columnList.Where(x => x.ColumnName.ToUpper() == SystemCommonVar.c_creator.ToUpper()).Count() == 0)
                //{
                //    MessageBox.Show($"表中没有字段{SystemCommonVar.c_creator}!");
                //    return;
                //}