feat(mes): 新增班组排班记录生成逻辑及相关字段校验

实现班组排班记录的生成逻辑,增加了班组类型和用户存在性校验,优化了排班记录的批量写入方式。同时,新增了相关错误码以处理班组和班次数量不足的情况。
pull/871/MERGE
YunaiV 2026-04-01 19:12:53 +08:00
parent c68d64a585
commit 8de07f5337
3 changed files with 27 additions and 8 deletions

View File

@ -1,4 +1,3 @@
<!-- TODO @芋艿暂未 review -->
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible" width="960px">
<el-form
@ -11,12 +10,16 @@
<el-row>
<el-col :span="8">
<el-form-item label="班组编码" prop="code">
<el-input v-model="formData.code" placeholder="请输入班组编码" />
<el-input v-model="formData.code" placeholder="请输入班组编码" :maxlength="64">
<template #append>
<el-button @click="generateCode"></el-button>
</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="班组名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入班组名称" />
<el-input v-model="formData.name" placeholder="请输入班组名称" :maxlength="100" />
</el-form-item>
</el-col>
<el-col :span="8">
@ -35,7 +38,7 @@
<el-row>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" />
<el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" :maxlength="250" />
</el-form-item>
</el-col>
</el-row>
@ -56,6 +59,8 @@
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { CalTeamApi, CalTeamVO } from '@/api/mes/cal/team'
import { AutoCodeRecordApi } from '@/api/mes/md/autocode/record'
import { MesAutoCodeRuleCode } from '@/views/mes/utils/constants'
import CalTeamMemberList from './CalTeamMemberList.vue'
defineOptions({ name: 'CalTeamForm' })
@ -76,11 +81,23 @@ const formData = ref({
remark: undefined
})
const formRules = reactive({
code: [{ required: true, message: '班组编码不能为空', trigger: 'blur' }],
name: [{ required: true, message: '班组名称不能为空', trigger: 'blur' }]
code: [
{ required: true, message: '班组编码不能为空', trigger: 'blur' },
{ max: 64, message: '班组编码不能超过 64 个字符', trigger: 'blur' }
],
name: [
{ required: true, message: '班组名称不能为空', trigger: 'blur' },
{ max: 100, message: '班组名称不能超过 100 个字符', trigger: 'blur' }
],
calendarType: [{ required: true, message: '班组类型不能为空', trigger: 'change' }]
})
const formRef = ref()
/** 生成班组编码 */
const generateCode = async () => {
formData.value.code = await AutoCodeRecordApi.generateAutoCode(MesAutoCodeRuleCode.CAL_TEAM_CODE)
}
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true

View File

@ -1,4 +1,3 @@
<!-- TODO @芋艿暂未 review -->
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
@ -27,6 +26,7 @@
class="!w-240px"
/>
</el-form-item>
<!-- TODO @AI查询下mysql 对应的数据字典然后对齐 -->
<el-form-item label="班组类型" prop="calendarType">
<el-select
v-model="queryParams.calendarType"
@ -69,6 +69,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<!-- TODO @AI详情点击后查看看看别的模块isDetai 哪个 -->
<el-table-column label="班组编码" align="center" prop="code" min-width="120" />
<el-table-column label="班组名称" align="center" prop="name" min-width="150" />
<el-table-column label="班组类型" align="center" prop="calendarType" min-width="100">

View File

@ -444,7 +444,8 @@ export const MesAutoCodeRuleCode = {
WM_STOCK_TAKING_PLAN_CODE: 'WM_STOCK_TAKING_PLAN_CODE', // 盘点方案编码
WM_STOCK_TAKING_CODE: 'WM_STOCK_TAKING_CODE', // 盘点任务编码
TRANSFER_CODE: 'TRANSFER_CODE', // 转移调拨单编码
WM_OUTSOURCE_ISSUE_CODE: 'WM_OUTSOURCE_ISSUE_CODE' // 外协发料单编码
WM_OUTSOURCE_ISSUE_CODE: 'WM_OUTSOURCE_ISSUE_CODE', // 外协发料单编码
CAL_TEAM_CODE: 'CAL_TEAM_CODE' // 班组编码
} as const
/** 获取物料/产品标识的标签 */