✨ feat(mes): 新增工具类型编码及相关校验逻辑
添加工具类型编码字段,并重构工具类型的保存和更新逻辑,简化数据校验过程。更新表单组件以支持新功能,优化用户体验。pull/871/MERGE
parent
53bfa9be57
commit
5e57cafb22
|
|
@ -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) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
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()
|
||||
// 修改时,设置数据
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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', // 批次编码
|
||||
|
|
|
|||
Loading…
Reference in New Issue