| | |
| | | import { |
| | | ref, |
| | | onMounted, |
| | | reactive, |
| | | computed, |
| | | Ref, |
| | | watch, |
| | | SetupContext, |
| | | h, |
| | | } from 'vue' |
| | | import { injectModel } from '@/libs/Provider/Provider' |
| | | import { WmsInOutStockRecordDrawer } from '../Models/WmsInOutStockRecordDrawer' |
| | | import { ElMessage } from 'element-plus' |
| | | import isEqual from 'lodash/isEqual' |
| | | import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' |
| | | import { cloneDeep } from 'lodash' |
| | | |
| | | export const useWmsInOutStockRecordQueryDrawer = (props: any, ctx?: any) => { |
| | | const wmsInOutStockRecordDrawer = injectModel<WmsInOutStockRecordDrawer>( |
| | | 'WmsInOutStockRecordDrawer' |
| | | ) |
| | | /** |
| | | * 用来对比的初始化数据 |
| | | */ |
| | | 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 visible = computed({ |
| | | get() { |
| | | return props.modelValue |
| | | }, |
| | | set(val) { |
| | | ctx.emit('update:modelValue', val) |
| | | }, |
| | | }) |
| | | /** |
| | | * 添加的form字段 |
| | | */ |
| | | const formItems = reactive([ |
| | | { |
| | | label: '单据编号', |
| | | prop: 'orderNo', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入单据编号', |
| | | }, |
| | | { |
| | | label: '物料名称', |
| | | prop: 'materialName', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入物料名称', |
| | | }, |
| | | { |
| | | label: '物料件号', |
| | | prop: 'materialNo', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入物料件号', |
| | | }, |
| | | { |
| | | label: '操作类型', |
| | | prop: 'stockType', |
| | | el: 'select', |
| | | //disabled: disabled, |
| | | placeholder: '请输入操作类型', |
| | | }, |
| | | { |
| | | label: '容器编号', |
| | | prop: 'containerNo', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入容器编号', |
| | | }, |
| | | { |
| | | label: '机型', |
| | | prop: 'materialModel', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入机型', |
| | | }, |
| | | { |
| | | label: '操作时间', |
| | | prop: 'operateTime', |
| | | type: 'datetimerange', |
| | | el: 'date-picker', |
| | | //disabled: disabled, |
| | | placeholder: '请输入操作时间', |
| | | }, |
| | | { |
| | | label: '备注', |
| | | prop: 'remark', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入备注', |
| | | }, |
| | | { |
| | | label: '物料ID', |
| | | prop: 'materialId', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入物料ID', |
| | | }, |
| | | { |
| | | label: '任务号', |
| | | prop: 'taskNo', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入任务号', |
| | | }, |
| | | { |
| | | label: '起始库位', |
| | | prop: 'sourcePlace', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入起始库位', |
| | | }, |
| | | { |
| | | label: '目标库位', |
| | | prop: 'toPlace', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入目标库位', |
| | | }, |
| | | ]) |
| | | /** |
| | | * 校验是否有数据变化 |
| | | */ |
| | | const checkIsEqualObject = () => { |
| | | const data = { |
| | | formData: formData.value, |
| | | } |
| | | const check = isEqual(initiateData.value, data) |
| | | return check |
| | | } |
| | | const commonGetFormData = () => { |
| | | const data = { |
| | | OrderNo: formData.value.OrderNo, |
| | | MaterialName: formData.value.MaterialName, |
| | | MaterialNo: formData.value.MaterialNo, |
| | | StockType: formData.value.StockType, |
| | | ContainerNo: formData.value.ContainerNo, |
| | | MaterialModel: formData.value.MaterialModel, |
| | | OperateTime: formData.value.OperateTime, |
| | | Remark: formData.value.Remark, |
| | | MaterialId: formData.value.MaterialId, |
| | | TaskNo: formData.value.TaskNo, |
| | | SourcePlace: formData.value.SourcePlace, |
| | | ToPlace: formData.value.ToPlace, |
| | | materialCode: formData.value.materialCode, |
| | | materialName: formData.value.materialName, |
| | | purchaseType: formData.value.purchaseType, |
| | | materialType: formData.value.materialType, |
| | | primaryUnit: formData.value.primaryUnit, |
| | | standard: formData.value.standard, |
| | | outerDiameter: formData.value.outerDiameter, |
| | | wallThickness: formData.value.wallThickness, |
| | | materialQuality: formData.value.materialQuality, |
| | | length: formData.value.length, |
| | | isMainBranch: formData.value.isMainBranch, |
| | | factory: formData.value.factory, |
| | | certification: formData.value.certification, |
| | | remark: formData.value.remark, |
| | | } |
| | | return data |
| | | } |
| | | const onClose = (done: () => void) => { |
| | | if (visible.value) { |
| | | visible.value = false |
| | | const data = commonGetFormData() |
| | | ctx.emit('close', data) |
| | | } |
| | | } |
| | | /** |
| | | * 确认查询 |
| | | */ |
| | | const onConfirmQuery = async () => { |
| | | const data = commonGetFormData() |
| | | ctx.emit('confirmQuery', data) |
| | | } |
| | | /** |
| | | * 重置查询 |
| | | */ |
| | | const onReset = async () => { |
| | | formData.value = {} |
| | | formData.value.OrderNo = '' |
| | | formData.value.MaterialName = '' |
| | | formData.value.MaterialNo = '' |
| | | formData.value.StockType = '' |
| | | formData.value.ContainerNo = '' |
| | | formData.value.MaterialModel = '' |
| | | formData.value.OperateTime = '' |
| | | formData.value.Remark = '' |
| | | formData.value.MaterialId = '' |
| | | formData.value.TaskNo = '' |
| | | formData.value.SourcePlace = '' |
| | | formData.value.ToPlace = '' |
| | | formData.value.materialCode = '' |
| | | formData.value.materialName = '' |
| | | formData.value.purchaseType = '' |
| | | formData.value.materialType = '' |
| | | formData.value.primaryUnit = '' |
| | | formData.value.standard = '' |
| | | formData.value.outerDiameter = '' |
| | | formData.value.wallThickness = '' |
| | | formData.value.materialQuality = '' |
| | | formData.value.length = '' |
| | | formData.value.isMainBranch = '' |
| | | formData.value.factory = '' |
| | | formData.value.certification = '' |
| | | 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 stockTypeEnumEnum = await wmsInOutStockRecordDrawer.getWmsEnumData({ |
| | | EnumName: 'StockTypeEnum', |
| | | }) |
| | | updateFormItemOptions('stockType', stockTypeEnumEnum) |
| | | } |
| | | commonQueryEnumForFrom() |
| | | /** |
| | | * 弹窗打开获取详情 |
| | | */ |
| | | const onOpen = async () => { |
| | | disabled.value = false |
| | | updateCheckData() |
| | | } |
| | | |
| | | watch(() => current.value, onOpen) |
| | | |
| | | return { |
| | | formItems, |
| | | formData, |
| | | visible, |
| | | formRef, |
| | | onOpen, |
| | | onClose, |
| | | onConfirmQuery, |
| | | onReset, |
| | | } |
| | | } |
| | | import { |
| | | ref, |
| | | onMounted, |
| | | reactive, |
| | | computed, |
| | | Ref, |
| | | watch, |
| | | SetupContext, |
| | | h, |
| | | } from 'vue' |
| | | import { injectModel } from '@/libs/Provider/Provider' |
| | | import { WmsInOutStockRecordDrawer } from '../Models/WmsInOutStockRecordDrawer' |
| | | import { ElMessage } from 'element-plus' |
| | | import isEqual from 'lodash/isEqual' |
| | | import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' |
| | | import { cloneDeep } from 'lodash' |
| | | |
| | | export const useWmsInOutStockRecordQueryDrawer = (props: any, ctx?: any) => { |
| | | const wmsInOutStockRecordDrawer = injectModel<WmsInOutStockRecordDrawer>('WmsInOutStockRecordDrawer') |
| | | /** |
| | | * 用来对比的初始化数据 |
| | | */ |
| | | 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: 'orderNo', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入单据编号', |
| | | }, |
| | | { |
| | | label: '物料名称', |
| | | prop: 'materialName', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入物料名称', |
| | | }, |
| | | { |
| | | label: '物料件号', |
| | | prop: 'materialNo', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入物料件号', |
| | | }, |
| | | { |
| | | label: '操作类型', |
| | | prop: 'stockType', |
| | | el: 'select', |
| | | //disabled: disabled, |
| | | placeholder: '请输入操作类型', |
| | | }, |
| | | { |
| | | label: '容器编号', |
| | | prop: 'containerNo', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入容器编号', |
| | | }, |
| | | { |
| | | label: '机型', |
| | | prop: 'materialModel', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入机型', |
| | | }, |
| | | { |
| | | label: '操作时间', |
| | | prop: 'operateTime', |
| | | el: (props: any, { attrs }: SetupContext) => { |
| | | return h(dateTimePickerRange, { |
| | | ...props, |
| | | clearable: true, |
| | | ...attrs, |
| | | }) |
| | | }, |
| | | width: '100%', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入操作时间', |
| | | }, |
| | | { |
| | | label: '备注', |
| | | prop: 'remark', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入备注', |
| | | }, |
| | | { |
| | | label: '物料ID', |
| | | prop: 'materialId', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入物料ID', |
| | | }, |
| | | { |
| | | label: '任务号', |
| | | prop: 'taskNo', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入任务号', |
| | | }, |
| | | { |
| | | label: '起始库位', |
| | | prop: 'sourcePlace', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入起始库位', |
| | | }, |
| | | { |
| | | label: '目标库位', |
| | | prop: 'toPlace', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入目标库位', |
| | | }, |
| | | { |
| | | label: '是否禁用', |
| | | prop: 'isDisabled', |
| | | el: 'select', |
| | | //disabled: disabled, |
| | | placeholder: '请输入是否禁用', |
| | | options: [{label: '是',value: 'true'}, {label: '否',value: 'false'}] |
| | | }, |
| | | { |
| | | label: '', |
| | | prop: 'creationTime', |
| | | el: (props: any, { attrs }: SetupContext) => { |
| | | return h(dateTimePickerRange, { |
| | | ...props, |
| | | clearable: true, |
| | | ...attrs, |
| | | }) |
| | | }, |
| | | width: '100%', |
| | | el: 'input', |
| | | //disabled: disabled, |
| | | placeholder: '请输入', |
| | | }, |
| | | ]) |
| | | /** |
| | | * 校验是否有数据变化 |
| | | */ |
| | | const checkIsEqualObject = () => { |
| | | const data = { |
| | | formData: formData.value, |
| | | } |
| | | const check = isEqual(initiateData.value, data) |
| | | return check |
| | | } |
| | | const commonGetFormData=()=>{ |
| | | const data = { |
| | | orderNo: formData.value.orderNo || '', |
| | | materialName: formData.value.materialName || '', |
| | | materialNo: formData.value.materialNo || '', |
| | | stockType: formData.value.stockType || '', |
| | | containerNo: formData.value.containerNo || '', |
| | | materialModel: formData.value.materialModel || '', |
| | | operateTime: formData.value.operateTime || '', |
| | | remark: formData.value.remark || '', |
| | | materialId: formData.value.materialId || '', |
| | | taskNo: formData.value.taskNo || '', |
| | | sourcePlace: formData.value.sourcePlace || '', |
| | | toPlace: formData.value.toPlace || '', |
| | | isDisabled: formData.value.isDisabled || '', |
| | | creationTime: formData.value.creationTime || '', |
| | | } |
| | | return data; |
| | | } |
| | | const onClose = (done: () => void) => { |
| | | if (visible.value) { |
| | | visible.value = false |
| | | const data =commonGetFormData(); |
| | | ctx.emit('close', data) |
| | | } |
| | | } |
| | | /** |
| | | * 确认查询 |
| | | */ |
| | | const onConfirmQuery = async () => { |
| | | const data =commonGetFormData(); |
| | | ctx.emit('confirmQuery', data) |
| | | } |
| | | /** |
| | | * 重置查询 |
| | | */ |
| | | const onReset = async () => { |
| | | formData.value = {} |
| | | formData.value.OrderNo = '' |
| | | formData.value.MaterialName = '' |
| | | formData.value.MaterialNo = '' |
| | | formData.value.StockType = '' |
| | | formData.value.ContainerNo = '' |
| | | formData.value.MaterialModel = '' |
| | | formData.value.OperateTime = '' |
| | | formData.value.Remark = '' |
| | | formData.value.MaterialId = '' |
| | | formData.value.TaskNo = '' |
| | | formData.value.SourcePlace = '' |
| | | formData.value.ToPlace = '' |
| | | //向父组件发送自定义事件 |
| | | 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 stockTypeEnumEnum = await wmsInOutStockRecordDrawer.getWmsEnumData({ |
| | | EnumName: 'StockTypeEnum', |
| | | }) |
| | | updateFormItemOptions('stockType', stockTypeEnumEnum) |
| | | |
| | | } |
| | | commonQueryEnumForFrom() |
| | | /** |
| | | * 弹窗打开获取详情 |
| | | */ |
| | | const onOpen = async () => { |
| | | disabled.value = false |
| | | updateCheckData() |
| | | } |
| | | |
| | | watch(() => current.value, onOpen) |
| | | |
| | | return { |
| | | formItems, |
| | | formData, |
| | | visible, |
| | | formRef, |
| | | onOpen, |
| | | onClose, |
| | | onConfirmQuery, |
| | | onReset, |
| | | } |
| | | } |