| | |
| | | import { |
| | | ref, |
| | | onMounted, |
| | | reactive, |
| | | computed, |
| | | Ref, |
| | | watch, |
| | | SetupContext, |
| | | h, |
| | | } from 'vue' |
| | | import { injectModel } from '@/libs/Provider/Provider' |
| | | import { CallMaterialOrderDrawer } from '../Models/CallMaterialOrderDrawer' |
| | | import { ElMessage } from 'element-plus' |
| | | import isEqual from 'lodash/isEqual' |
| | | import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' |
| | | import { cloneDeep } from 'lodash' |
| | | |
| | | export const useCallMaterialOrderQueryDrawer = (props: any, ctx?: any) => { |
| | | const callMaterialOrderDrawer = injectModel<CallMaterialOrderDrawer>('CallMaterialOrderDrawer') |
| | | /** |
| | | * 用来对比的初始化数据 |
| | | */ |
| | | 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: 'dataIdentifier', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入原料标识', |
| | | }, |
| | | { |
| | | label: '原料型号', |
| | | prop: 'materialMode', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入原料型号', |
| | | }, |
| | | { |
| | | label: '叫料状态', |
| | | prop: 'callMaterialStatus', |
| | | el: 'select', |
| | | clearable:true, |
| | | option: [], |
| | | //disabled: disabled, |
| | | placeholder: '请输入叫料状态', |
| | | }, |
| | | { |
| | | label: '叫料数量', |
| | | prop: 'quantity', |
| | | el: (props: any, { attrs }: SetupContext) => { |
| | | return h(inputNumber, { |
| | | ...props, |
| | | clearable: true, |
| | | ...attrs, |
| | | }) |
| | | }, |
| | | width: '100%', |
| | | step: 1, |
| | | precision: 0, |
| | | //disabled: disabled, |
| | | placeholder: '请输入叫料数量', |
| | | }, |
| | | { |
| | | label: 'WMS返回结果', |
| | | prop: 'wmsRetResult', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入WMS返回结果', |
| | | }, |
| | | { |
| | | label: 'WMS任务号', |
| | | prop: 'wmsTaskNo', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入WMS任务号', |
| | | }, |
| | | { |
| | | 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: '请输入修改时间', |
| | | }, |
| | | { |
| | | label: '创建人', |
| | | prop: 'creatorName', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入创建人', |
| | | }, |
| | | { |
| | | label: '修改人', |
| | | prop: 'lastModifierName', |
| | | el: 'input', |
| | | //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 = { |
| | | dataIdentifier: formData.value.dataIdentifier || '', |
| | | materialMode: formData.value.materialMode || '', |
| | | callMaterialStatus: formData.value.callMaterialStatus || '', |
| | | quantity: formData.value.quantity || '', |
| | | wmsRetResult: formData.value.wmsRetResult || '', |
| | | wmsTaskNo: formData.value.wmsTaskNo || '', |
| | | creationTime: formData.value.creationTime || '', |
| | | lastModificationTime: formData.value.lastModificationTime || '', |
| | | creatorName: formData.value.creatorName || '', |
| | | lastModifierName: formData.value.lastModifierName || '', |
| | | remark: formData.value.remark || '', |
| | | } |
| | | return data; |
| | | } |
| | | const onClose = (done: () => void) => { |
| | | if (visible.value) { |
| | | visible.value = false |
| | | const data =commonGetFormData(); |
| | | ctx.emit('close', data) |
| | | } |
| | | } |
| | | /** |
| | | * 确认查询 |
| | | */ |
| | | const onConfirmQuery = async () => { |
| | | const data =commonGetFormData(); |
| | | ctx.emit('confirmQuery', data) |
| | | } |
| | | /** |
| | | * 重置查询 |
| | | */ |
| | | const onReset = async () => { |
| | | formData.value = {} |
| | | formData.value.dataIdentifier = '' |
| | | formData.value.materialMode = '' |
| | | formData.value.callMaterialStatus = '' |
| | | formData.value.quantity = '' |
| | | formData.value.wmsRetResult = '' |
| | | formData.value.wmsTaskNo = '' |
| | | formData.value.deletionTime = '' |
| | | formData.value.operationRemark = '' |
| | | formData.value.deleteRemark = '' |
| | | formData.value.remark = '' |
| | | formData.value.extraField1 = '' |
| | | formData.value.extraField2 = '' |
| | | formData.value.extraField3 = '' |
| | | //向父组件发送自定义事件 |
| | | 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 callMaterialStatusEnumEnum = await callMaterialOrderDrawer.getWmsEnumData({ |
| | | EnumName: 'CallMaterialStatusEnum', |
| | | }) |
| | | updateFormItemOptions('callMaterialStatus', callMaterialStatusEnumEnum) |
| | | |
| | | } |
| | | commonQueryEnumForFrom() |
| | | /** |
| | | * 弹窗打开获取详情 |
| | | */ |
| | | const onOpen = async () => { |
| | | disabled.value = false |
| | | updateCheckData() |
| | | } |
| | | |
| | | watch(() => current.value, onOpen) |
| | | |
| | | return { |
| | | formItems, |
| | | formData, |
| | | visible, |
| | | formRef, |
| | | onOpen, |
| | | onClose, |
| | | onConfirmQuery, |
| | | onReset, |
| | | } |
| | | } |
| | | import { |
| | | ref, |
| | | onMounted, |
| | | reactive, |
| | | computed, |
| | | Ref, |
| | | watch, |
| | | SetupContext, |
| | | h, |
| | | } from 'vue' |
| | | import { injectModel } from '@/libs/Provider/Provider' |
| | | import { CallMaterialOrderDrawer } from '../Models/CallMaterialOrderDrawer' |
| | | 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' |
| | | |
| | | export const useCallMaterialOrderQueryDrawer = (props: any, ctx?: any) => { |
| | | const callMaterialOrderDrawer = injectModel<CallMaterialOrderDrawer>( |
| | | 'CallMaterialOrderDrawer' |
| | | ) |
| | | /** |
| | | * 用来对比的初始化数据 |
| | | */ |
| | | 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: 'dataIdentifier', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入原料标识', |
| | | highSelectAttrs: { |
| | | prop: 'dataIdentifier_FilterMode', |
| | | el: 'select', |
| | | placeholder: '请选择', |
| | | options: FILTER_MODE_OPTIONS_STRING, |
| | | }, |
| | | }, |
| | | { |
| | | label: '原料型号', |
| | | prop: 'materialMode', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入原料型号', |
| | | highSelectAttrs: { |
| | | prop: 'materialMode_FilterMode', |
| | | el: 'select', |
| | | placeholder: '请选择', |
| | | options: FILTER_MODE_OPTIONS_STRING, |
| | | }, |
| | | }, |
| | | { |
| | | label: '原料批次', |
| | | prop: 'materialBatch', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入原料批次', |
| | | highSelectAttrs: { |
| | | prop: 'materialBatch_FilterMode', |
| | | el: 'select', |
| | | placeholder: '请选择', |
| | | options: FILTER_MODE_OPTIONS_STRING, |
| | | }, |
| | | }, |
| | | { |
| | | label: '叫料状态', |
| | | prop: 'callMaterialStatus', |
| | | el: 'select', |
| | | clearable: true, |
| | | option: [], |
| | | //disabled: disabled, |
| | | placeholder: '请输入叫料状态', |
| | | highSelectAttrs: { |
| | | prop: 'callMaterialStatus_FilterMode', |
| | | el: 'select', |
| | | placeholder: '请选择', |
| | | options: FILTER_MODE_OPTIONS_BOOL, |
| | | }, |
| | | }, |
| | | { |
| | | label: '叫料数量', |
| | | prop: 'quantity', |
| | | el: (props: any, { attrs }: SetupContext) => { |
| | | return h(inputNumber, { |
| | | ...props, |
| | | clearable: true, |
| | | ...attrs, |
| | | }) |
| | | }, |
| | | width: '100%', |
| | | step: 1, |
| | | precision: 0, |
| | | //disabled: disabled, |
| | | placeholder: '请输入叫料数量', |
| | | highSelectAttrs: { |
| | | prop: 'quantity_FilterMode', |
| | | el: 'select', |
| | | placeholder: '请选择', |
| | | options: FILTER_MODE_OPTIONS_NUM, |
| | | }, |
| | | }, |
| | | { |
| | | label: 'WMS返回结果', |
| | | prop: 'wmsRetResult', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入WMS返回结果', |
| | | highSelectAttrs: { |
| | | prop: 'wmsRetResult_FilterMode', |
| | | el: 'select', |
| | | placeholder: '请选择', |
| | | options: FILTER_MODE_OPTIONS_STRING, |
| | | }, |
| | | }, |
| | | { |
| | | label: 'WMS任务号', |
| | | prop: 'wmsTaskNo', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入WMS任务号', |
| | | highSelectAttrs: { |
| | | prop: 'wmsTaskNo_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, // 显式标记为日期控件 |
| | | }, |
| | | { |
| | | label: '创建人', |
| | | prop: 'creatorName', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入创建人', |
| | | highSelectAttrs: { |
| | | prop: 'creatorName_FilterMode', |
| | | el: 'select', |
| | | placeholder: '请选择', |
| | | options: FILTER_MODE_OPTIONS_STRING, |
| | | }, |
| | | }, |
| | | { |
| | | label: '修改人', |
| | | prop: 'lastModifierName', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入修改人', |
| | | highSelectAttrs: { |
| | | prop: 'lastModifierName_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, |
| | | }, |
| | | }, |
| | | ]) |
| | | /** |
| | | * 校验是否有数据变化 |
| | | */ |
| | | const checkIsEqualObject = () => { |
| | | const data = { |
| | | formData: formData.value, |
| | | } |
| | | const check = isEqual(initiateData.value, data) |
| | | return check |
| | | } |
| | | const commonGetFormData = () => { |
| | | const data = { |
| | | dataIdentifier: formData.value.dataIdentifier || '', |
| | | dataIdentifier_FilterMode: formData.value.dataIdentifier_FilterMode || '', |
| | | materialMode: formData.value.materialMode || '', |
| | | materialMode_FilterMode: formData.value.materialMode_FilterMode || '', |
| | | materialBatch: formData.value.materialBatch || '', |
| | | materialBatch_FilterMode: formData.value.materialBatch_FilterMode || '', |
| | | callMaterialStatus: formData.value.callMaterialStatus || '', |
| | | callMaterialStatus_FilterMode: |
| | | formData.value.callMaterialStatus_FilterMode || '', |
| | | quantity: formData.value.quantity || '', |
| | | quantity_FilterMode: formData.value.quantity_FilterMode || '', |
| | | wmsRetResult: formData.value.wmsRetResult || '', |
| | | wmsRetResult_FilterMode: formData.value.wmsRetResult_FilterMode || '', |
| | | wmsTaskNo: formData.value.wmsTaskNo || '', |
| | | wmsTaskNo_FilterMode: formData.value.wmsTaskNo_FilterMode || '', |
| | | creationTime: formData.value.creationTime || '', |
| | | lastModificationTime: formData.value.lastModificationTime || '', |
| | | creatorName: formData.value.creatorName || '', |
| | | creatorName_FilterMode: formData.value.creatorName_FilterMode || '', |
| | | lastModifierName: formData.value.lastModifierName || '', |
| | | lastModifierName_FilterMode: |
| | | formData.value.lastModifierName_FilterMode || '', |
| | | remark: formData.value.remark || '', |
| | | remark_FilterMode: formData.value.remark_FilterMode || '', |
| | | } |
| | | 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.dataIdentifier_FilterMode = 1 |
| | | formData.value.materialMode_FilterMode = 1 |
| | | formData.value.materialBatch_FilterMode = 1 |
| | | formData.value.callMaterialStatus_FilterMode = 2 |
| | | formData.value.quantity_FilterMode = 2 |
| | | formData.value.wmsRetResult_FilterMode = 1 |
| | | formData.value.wmsTaskNo_FilterMode = 1 |
| | | formData.value.creatorName_FilterMode = 1 |
| | | formData.value.lastModifierName_FilterMode = 1 |
| | | formData.value.remark_FilterMode = 1 |
| | | } |
| | | /** |
| | | * 重置查询 |
| | | */ |
| | | const onReset = async () => { |
| | | formData.value = {} |
| | | onResetForHighSelect() //重置公共select查询 |
| | | formData.value.dataIdentifier = '' |
| | | formData.value.materialMode = '' |
| | | formData.value.materialBatch = '' |
| | | formData.value.callMaterialStatus = '' |
| | | formData.value.quantity = '' |
| | | formData.value.wmsRetResult = '' |
| | | formData.value.wmsTaskNo = '' |
| | | formData.value.creationTime = '' |
| | | formData.value.lastModificationTime = '' |
| | | formData.value.creatorName = '' |
| | | formData.value.lastModifierName = '' |
| | | formData.value.remark = '' |
| | | //向父组件发送自定义事件 |
| | | ctx.emit('restQuery') |
| | | } |
| | | |
| | | const updateCheckData = () => { |
| | | initiateData.value = { |
| | | formData: { |
| | | ...formData.value, |
| | | }, |
| | | } |
| | | } |
| | | const updateFormItemOptions = (propName: string, enumData: any[]) => { |
| | | const item = formItems.find((item) => item.prop === propName) |
| | | if (item && enumData) { |
| | | item.options = enumData.map((item) => ({ |
| | | label: item.description, |
| | | value: item.value, |
| | | })) |
| | | } |
| | | } |
| | | /** |
| | | * 通用查询枚举 |
| | | */ |
| | | const commonQueryEnumForFrom = async () => { |
| | | const callMaterialStatusEnumEnum = |
| | | await callMaterialOrderDrawer.getWmsEnumData({ |
| | | EnumName: 'CallMaterialStatusEnum', |
| | | }) |
| | | updateFormItemOptions('callMaterialStatus', callMaterialStatusEnumEnum) |
| | | } |
| | | commonQueryEnumForFrom() |
| | | onResetForHighSelect() //重置公共select查询 |
| | | /** |
| | | * 弹窗打开获取详情 |
| | | */ |
| | | const onOpen = async () => { |
| | | disabled.value = false |
| | | updateCheckData() |
| | | } |
| | | |
| | | watch(() => current.value, onOpen) |
| | | |
| | | return { |
| | | formItems, |
| | | formData, |
| | | visible, |
| | | formRef, |
| | | onOpen, |
| | | onClose, |
| | | onConfirmQuery, |
| | | onReset, |
| | | } |
| | | } |