feat(mes): 新增工具类型编码及相关校验逻辑

添加工具类型编码字段,并重构工具类型的保存和更新逻辑,简化数据校验过程。更新表单组件以支持新功能,优化用户体验。
pull/871/MERGE
YunaiV 2026-03-29 09:30:47 +08:00
parent 53bfa9be57
commit 5e57cafb22
3 changed files with 46 additions and 14 deletions

View File

@ -7,6 +7,7 @@
:rules="formRules"
label-width="120px"
v-loading="formLoading"
:disabled="isDetail"
>
<el-form-item label="类型编码" prop="code">
<el-input v-model="formData.code" placeholder="请输入类型编码">
@ -31,7 +32,7 @@
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="保养维护类型" prop="maintenType">
<el-form-item v-if="formData.codeFlag" label="保养维护类型" prop="maintenType">
<el-select
v-model="formData.maintenType"
placeholder="请选择保养维护类型"
@ -49,7 +50,7 @@
<el-form-item
label="保养周期(天)"
prop="maintenPeriod"
v-if="formData.maintenType === MesMaintenTypeEnum.REGULAR"
v-if="formData.codeFlag && formData.maintenType === MesMaintenTypeEnum.REGULAR"
>
<el-input-number
v-model="formData.maintenPeriod"
@ -61,7 +62,7 @@
<el-form-item
label="保养周期(次)"
prop="maintenPeriod"
v-if="formData.maintenType === MesMaintenTypeEnum.USAGE"
v-if="formData.codeFlag && formData.maintenType === MesMaintenTypeEnum.USAGE"
>
<el-input-number
v-model="formData.maintenPeriod"
@ -75,7 +76,9 @@
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button v-if="!isDetail" @click="submitForm" type="primary" :disabled="formLoading">
</el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
@ -83,8 +86,8 @@
<script setup lang="ts">
import { getBoolDictOptions, getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { TmToolTypeApi, TmToolTypeVO } from '@/api/mes/tm/tool/type'
import { MesMaintenTypeEnum } from '@/views/mes/utils/constants'
import { generateRandomStr } from '@/utils'
import { MesAutoCodeRuleCode, MesMaintenTypeEnum } from '@/views/mes/utils/constants'
import { AutoCodeRecordApi } from '@/api/mes/md/autocode/record'
defineOptions({ name: 'ToolTypeForm' })
@ -92,9 +95,17 @@ const { t } = useI18n() // 国际化
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const dialogTitle = computed(() => {
const titles: Record<string, string> = {
create: '新增工具类型',
update: '修改工具类型',
detail: '查看工具类型'
}
return titles[formType.value] || formType.value
})
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formType = ref('') // create - update - detail -
const isDetail = computed(() => formType.value === 'detail') //
const formData = ref({
id: undefined,
code: undefined,
@ -112,15 +123,24 @@ const formRules = reactive({
const formRef = ref() // Ref
/** 生成类型编码 */
const generateCode = () => {
// TODO @
formData.value.code = 'TT' + generateRandomStr(12)
const generateCode = async () => {
formData.value.code = await AutoCodeRecordApi.generateAutoCode(MesAutoCodeRuleCode.TM_TOOL_TYPE_CODE)
}
/** 监听 codeFlag 变化,清空保养相关字段 */
watch(
() => formData.value.codeFlag,
(val) => {
if (!val) {
formData.value.maintenType = undefined
formData.value.maintenPeriod = undefined
}
}
)
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
//

View File

@ -69,7 +69,13 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="类型编码" align="center" prop="code" width="120" />
<el-table-column label="类型编码" align="center" prop="code" width="120">
<template #default="scope">
<el-link type="primary" @click="openForm('detail', scope.row.id)">
{{ scope.row.code }}
</el-link>
</template>
</el-table-column>
<el-table-column label="类型名称" align="center" prop="name" min-width="150" />
<el-table-column label="是否编码管理" align="center" prop="codeFlag" width="120">
<template #default="scope">
@ -78,7 +84,12 @@
</el-table-column>
<el-table-column label="保养维护类型" align="center" prop="maintenType" width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.MES_TM_MAINTEN_TYPE" :value="scope.row.maintenType" />
<dict-tag
v-if="scope.row.codeFlag"
:type="DICT_TYPE.MES_TM_MAINTEN_TYPE"
:value="scope.row.maintenType"
/>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="保养周期" align="center" prop="maintenPeriod" width="100">

View File

@ -417,6 +417,7 @@ export const MesAutoCodeRuleCode = {
MD_VENDOR_CODE: 'MD_VENDOR_CODE', // 供应商编码
MD_CLIENT_CODE: 'MD_CLIENT_CODE', // 客户编码
MD_WORKSTATION_CODE: 'MD_WORKSTATION_CODE', // 工作站编码
TM_TOOL_TYPE_CODE: 'TM_TOOL_TYPE_CODE', // 工具类型编码
WM_SN_CODE: 'WM_SN_CODE', // SN 码
WM_PACKAGE_CODE: 'WM_PACKAGE_CODE', // 装箱单编码
WM_BATCH_CODE: 'WM_BATCH_CODE', // 批次编码