diff --git a/src/api/mes/baseStationInfo/types.ts b/src/api/mes/baseStationInfo/types.ts index 2a0ffe5..50c24d6 100644 --- a/src/api/mes/baseStationInfo/types.ts +++ b/src/api/mes/baseStationInfo/types.ts @@ -141,6 +141,7 @@ export interface BaseStationInfoForm extends BaseEntity { productionTimeHours?: number; productionTimeMinutes?: number; + prodBaseStationMaterialtypeList?: []; } export interface BaseStationInfoQuery extends PageQuery { diff --git a/src/views/mes/baseStationInfo/index.vue b/src/views/mes/baseStationInfo/index.vue index 6e442d4..ab9614f 100644 --- a/src/views/mes/baseStationInfo/index.vue +++ b/src/views/mes/baseStationInfo/index.vue @@ -6,7 +6,8 @@ - + @@ -14,22 +15,24 @@ - + - + @@ -81,8 +84,8 @@ - - - + @@ -145,34 +151,34 @@ - + - + - +  天  - +  小时  - +  分钟  @@ -202,6 +208,69 @@ + + + + + + + + + + + + + + + + + 工位关联物料类型信息 + + + 添加 + + + 删除 + + + + + + + + + + + + + + + @@ -216,6 +285,7 @@ import { import { BaseStationInfoVO, BaseStationInfoQuery, BaseStationInfoForm } from '@/api/mes/baseStationInfo/types'; import { getProcessInfoList } from '@/api/mes/baseProcessInfo'; import { getProdBaseMachineInfoList } from '@/api/mes/prodBaseMachineInfo'; +import { getBaseMaterialTypeList } from '@/api/mes/baseMaterialType'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { station_type, active_flag } = toRefs(proxy?.useDict('station_type', 'active_flag')); @@ -239,6 +309,17 @@ const dialog = reactive({ title: '' }); +const relationOpen = ref(false); +const prodBaseStationMaterialtypeList = ref([]); +const chekedStationMaterialList = ref([]); + +/** 查询物料类型下拉树结构 */ +const materialTypeList = ref([]); +const getMaterialTypeListSelect = async () => { + let res = await getBaseMaterialTypeList(null); + materialTypeList.value = res.data; +}; + /** 查询工位下拉树结构 */ const getProcessInfoListSelect = async () => { let res = await getProcessInfoList(null); @@ -287,6 +368,7 @@ const initFormData: BaseStationInfoForm = { productionTimeDays: 0, productionTimeHours: 0, productionTimeMinutes: 0, + prodBaseStationMaterialtypeList: [] }; const data = reactive>({ form: { ...initFormData }, @@ -319,7 +401,7 @@ const data = reactive>({ ], activeFlag: [ { required: true, message: '激活标识不能为空', trigger: 'change' } - ], + ] } }); @@ -390,12 +472,15 @@ const submitForm = () => { buttonLoading.value = true; convertToSeconds(); if (form.value.stationId) { + form.value.prodBaseStationMaterialtypeList = prodBaseStationMaterialtypeList; await updateBaseStationInfo(form.value).finally(() => buttonLoading.value = false); } else { await addBaseStationInfo(form.value).finally(() => buttonLoading.value = false); } proxy?.$modal.msgSuccess('操作成功'); dialog.visible = false; + relationOpen.value = false; + prodBaseStationMaterialtypeList.value = []; await getList(); } }); @@ -407,7 +492,7 @@ const convertToSeconds = () => { const hoursInSeconds = form.value.productionTimeHours * 60 * 60; const minutesInSeconds = form.value.productionTimeMinutes * 60; form.value.productionTime = daysInSeconds + hoursInSeconds + minutesInSeconds; -} +}; /** 秒转换为天小时分钟 */ const convertToTime = () => { @@ -419,7 +504,7 @@ const convertToTime = () => { form.value.productionTimeDays = days; form.value.productionTimeHours = hours; form.value.productionTimeMinutes = minutes; -} +}; /** 删除按钮操作 */ const handleDelete = async (row?: BaseStationInfoVO) => { @@ -437,9 +522,67 @@ const handleExport = () => { }, `baseStationInfo_${new Date().getTime()}.xlsx`); }; +/** 关联物料类型按钮操作 */ +const handleRelatedMaterial = async (row?: BaseStationInfoVO) => { + reset(); + const _stationId = row?.stationId || ids.value[0]; + const res = await getBaseStationInfo(_stationId); + Object.assign(form.value, res.data); + prodBaseStationMaterialtypeList.value = []; + chekedStationMaterialList.value = []; + prodBaseStationMaterialtypeList.value = form.value.prodBaseStationMaterialtypeList?.map((item, index) => ({ + ...item, + index: index + 1 + })) || []; + relationOpen.value = true; + dialog.title = '工位关联物料类型信息'; +}; + +const rowBaseStationMaterialIndex = ({ row, rowIndex }: { row: any; rowIndex: number }): string => { + if (row.someCondition) { + return 'custom-class'; + } + return ''; +}; + +// 添加关联物料类型 +const handleAddRelation = () => { + return prodBaseStationMaterialtypeList.value.push({ + stationId: form.value.stationId, + activeFlag: '1', + index: prodBaseStationMaterialtypeList.value.length + 1 + }); +}; + +// 删除关联物料类型 +const handleDeleteStationMaterial = () => { + if (chekedStationMaterialList.value.length === 0) { + proxy?.$modal.msgError('请先选择要删除的工位关联物料类型数据'); + } else { + prodBaseStationMaterialtypeList.value = prodBaseStationMaterialtypeList.value + .filter(item => !chekedStationMaterialList.value.includes(item.index)) + .map((item, index) => ({ + ...item, + index: index + 1 + })); + } +}; + +// 选中关联物料类型 +const handleStationMaterialSelectionChange = (selection) => { + chekedStationMaterialList.value = selection.map(item => item.index); +}; + +const cancelRelation = () => { + reset(); + relationOpen.value = false; + prodBaseStationMaterialtypeList.value = []; +}; + onMounted(() => { getProcessInfoListSelect(); getProdBaseMachineInfoListSelect(); + getMaterialTypeListSelect(); getList(); });