feat(mes): 重构安灯相关组件,优化导入路径,增加注释以提升可读性

pull/871/MERGE
YunaiV 2026-02-21 08:46:51 +08:00
parent a0ac62e0fa
commit b505744d0c
6 changed files with 85 additions and 75 deletions

View File

@ -0,0 +1,45 @@
import request from '@/config/axios'
// MES 安灯配置 VO
export interface ProAndonConfigVO {
id: number // 编号
reason: string // 呼叫原因
level: number // 级别
handlerRoleId: number // 处置人角色编号
handlerUserId: number // 处置人编号
handlerUserNickname: string // 处置人昵称
remark: string // 备注
}
// MES 安灯配置 API
export const ProAndonConfigApi = {
// 查询安灯配置分页
getAndonConfigPage: async (params: any) => {
return await request.get({ url: `/mes/pro/andon-config/page`, params })
},
// 查询安灯配置列表
getAndonConfigList: async () => {
return await request.get({ url: `/mes/pro/andon-config/list` })
},
// 查询安灯配置详情
getAndonConfig: async (id: number) => {
return await request.get({ url: `/mes/pro/andon-config/get?id=` + id })
},
// 新增安灯配置
createAndonConfig: async (data: ProAndonConfigVO) => {
return await request.post({ url: `/mes/pro/andon-config/create`, data })
},
// 修改安灯配置
updateAndonConfig: async (data: ProAndonConfigVO) => {
return await request.put({ url: `/mes/pro/andon-config/update`, data })
},
// 删除安灯配置
deleteAndonConfig: async (id: number) => {
return await request.delete({ url: `/mes/pro/andon-config/delete?id=` + id })
}
}

View File

@ -1,18 +1,5 @@
import request from '@/config/axios'
// TODO @AI拆分成 andon/config/index.ts 和 andon/record/index.ts 两个文件
// MES 安灯配置 VO
export interface ProAndonConfigVO {
id: number // 编号
reason: string // 呼叫原因
level: number // 级别
handlerRoleId: number // 处置人角色编号
handlerUserId: number // 处置人编号
handlerUserNickname: string // 处置人昵称
remark: string // 备注
}
// MES 安灯记录 VO
export interface ProAndonRecordVO {
id: number // 编号
@ -35,39 +22,6 @@ export interface ProAndonRecordVO {
createTime: Date // 发起时间
}
// MES 安灯配置 API
export const ProAndonConfigApi = {
// 查询安灯配置分页
getAndonConfigPage: async (params: any) => {
return await request.get({ url: `/mes/pro/andon-config/page`, params })
},
// 查询安灯配置列表
getAndonConfigList: async () => {
return await request.get({ url: `/mes/pro/andon-config/list` })
},
// 查询安灯配置详情
getAndonConfig: async (id: number) => {
return await request.get({ url: `/mes/pro/andon-config/get?id=` + id })
},
// 新增安灯配置
createAndonConfig: async (data: ProAndonConfigVO) => {
return await request.post({ url: `/mes/pro/andon-config/create`, data })
},
// 修改安灯配置
updateAndonConfig: async (data: ProAndonConfigVO) => {
return await request.put({ url: `/mes/pro/andon-config/update`, data })
},
// 删除安灯配置
deleteAndonConfig: async (id: number) => {
return await request.delete({ url: `/mes/pro/andon-config/delete?id=` + id })
}
}
// MES 安灯记录 API
export const ProAndonRecordApi = {
// 查询安灯记录分页

View File

@ -39,6 +39,7 @@
</el-table-column>
<el-table-column label="处置人" align="center" width="150">
<template #default="scope">
<!-- TODO @AIuser-select -->
<el-input
v-if="scope.row.editing"
v-model="scope.row.handlerUserId"
@ -91,9 +92,11 @@
</template>
<script setup lang="ts">
import { ProAndonConfigApi, ProAndonConfigVO } from '@/api/mes/pro/andon'
import { ProAndonConfigApi, ProAndonConfigVO } from '@/api/mes/pro/andon/config'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
// TODO @AI
defineOptions({ name: 'AndonConfigDialog' })
const message = useMessage()
@ -126,7 +129,7 @@ const handleAdd = () => {
list.value.unshift({
id: undefined,
reason: '',
level: 3,
level: 3, // TODO @AI使
handlerRoleId: undefined,
handlerUserId: undefined,
remark: '',
@ -152,6 +155,7 @@ const handleSave = async (row: any) => {
return
}
try {
// TODO @AI使 row
const data = {
id: row.id,
reason: row.reason,

View File

@ -22,6 +22,7 @@
<dict-tag :type="DICT_TYPE.MES_PRO_ANDON_LEVEL" :value="recordInfo.level" />
</el-form-item>
<!-- 可编辑字段 -->
<!-- TODO @AIunocss 简化 style -->
<el-form-item label="处置时间" prop="handleTime">
<el-date-picker
v-model="formData.handleTime"
@ -31,6 +32,7 @@
style="width: 100%"
/>
</el-form-item>
<!-- TODO @AI可选user-select只是默认当前人 -->
<el-form-item label="处置人" prop="handlerUserId">
<el-input :model-value="handlerNickname" disabled placeholder="当前用户" />
</el-form-item>
@ -46,7 +48,7 @@
</template>
<script setup lang="ts">
import { ProAndonRecordApi } from '@/api/mes/pro/andon'
import { ProAndonRecordApi } from '@/api/mes/pro/andon/record'
import { DICT_TYPE } from '@/utils/dict'
import { useUserStoreWithOut } from '@/store/modules/user'
import { formatDate } from '@/utils/formatTime'
@ -70,6 +72,7 @@ const formRef = ref()
const open = async (id: number) => {
dialogVisible.value = true
formLoading.value = true
// TODO @AI reset
try {
//
recordInfo.value = await ProAndonRecordApi.getAndonRecord(id)
@ -77,6 +80,7 @@ const open = async (id: number) => {
const userStore = useUserStoreWithOut()
formData.value = {
id: id,
// TODO @AI format
handleTime: formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss'),
handlerUserId: userStore.getUser?.id,
remark: undefined

View File

@ -1,4 +1,5 @@
<!-- 安灯呼叫记录 新增/详情弹窗 -->
<!-- TODO @芋艿需要提供这样的新增么 -->
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible" width="600px">
<el-form
@ -13,6 +14,7 @@
<MdWorkstationSelect v-model="formData.workstationId" placeholder="请选择工作站" />
</el-form-item>
<el-form-item label="发起人" prop="userId">
<!-- TODO @AI可以选择只是默认当前用户可以在 user-select 组件里封装下 -->
<el-input v-model="formData.userNickname" disabled placeholder="当前用户" />
</el-form-item>
<el-form-item label="生产工单" prop="workOrderId">
@ -22,6 +24,8 @@
<el-input v-model="formData.processId" placeholder="请输入工序编号(可选)" type="number" />
</el-form-item>
<el-form-item label="呼叫原因" prop="reason">
<!-- TODO @AIunocss 简化 style -->
<!-- TODO @AI是不是做成 select 组件另外后端的 reason 存储是不是增加存储 id -->
<el-select
v-model="selectedConfigId"
placeholder="请选择呼叫原因"
@ -38,6 +42,7 @@
</el-select>
</el-form-item>
<el-form-item label="级别" prop="level">
<!-- TODO @AI字典展示不出来 -->
<dict-tag :type="DICT_TYPE.MES_PRO_ANDON_LEVEL" :value="formData.level" />
</el-form-item>
<el-form-item label="备注" prop="remark">
@ -64,11 +69,14 @@
</template>
<script setup lang="ts">
import { ProAndonRecordApi, ProAndonConfigApi, ProAndonConfigVO } from '@/api/mes/pro/andon'
import { ProAndonRecordApi } from '@/api/mes/pro/andon/record'
import { ProAndonConfigApi, ProAndonConfigVO } from '@/api/mes/pro/andon/config'
import { DICT_TYPE } from '@/utils/dict'
import MdWorkstationSelect from '@/views/mes/md/workstation/components/MdWorkstationSelect.vue'
import { useUserStoreWithOut } from '@/store/modules/user'
// TODO @AI Form.vue
defineOptions({ name: 'AndonRecordForm' })
const { t } = useI18n()
@ -86,7 +94,7 @@ const formRules = reactive({
})
const formRef = ref()
const configList = ref<ProAndonConfigVO[]>([])
const selectedConfigId = ref<number>()
const selectedConfigId = ref<number>() // TODO @AI formData
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
@ -107,6 +115,7 @@ const open = async (type: string, id?: number) => {
try {
formData.value = await ProAndonRecordApi.getAndonRecord(id!)
//
// TODO @AI
const config = configList.value.find((c) => c.reason === formData.value.reason)
if (config) {
selectedConfigId.value = config.id

View File

@ -16,28 +16,13 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="级别" prop="level">
<el-select
v-model="queryParams.level"
placeholder="请选择级别"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.MES_PRO_ANDON_LEVEL)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择状态"
clearable
class="!w-240px"
>
<!-- TODO @AI发起人 select -->
<!-- TODO @AI生产工单 select -->
<!-- TODO @AI工序 select -->
<!-- TODO @AI工序名称 select -->
<!-- TODO @AI处置人 select -->
<el-form-item label="处理状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.MES_PRO_ANDON_STATUS)"
:key="dict.value"
@ -94,6 +79,8 @@
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="工作站编码" align="center" prop="workstationCode" width="120" />
<el-table-column label="工作站名称" align="center" prop="workstationName" min-width="120" />
<!-- TODO @AI工单编码 -->
<!-- TODO @AI工序 -->
<el-table-column label="发起人" align="center" prop="userNickname" width="100" />
<el-table-column
label="发起时间"
@ -102,6 +89,13 @@
:formatter="dateFormatter"
width="180"
/>
<!-- TODO @AI发起时间 -->
<!-- TODO @AI呼叫原因 -->
<!-- TODO @AI级别 -->
<!-- TODO @AI处理时间 -->
<!-- TODO @AI处理人 -->
<!-- TODO @AI处置状态 -->
<!-- TODO @AI操作 -->
<el-table-column label="工单编码" align="center" prop="workOrderCode" width="140" />
<el-table-column label="工序名称" align="center" prop="processName" width="120" />
<el-table-column label="呼叫原因" align="center" prop="reason" min-width="150" />
@ -173,10 +167,10 @@
<script setup lang="ts">
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { ProAndonRecordApi, ProAndonRecordVO } from '@/api/mes/pro/andon'
import { ProAndonRecordApi, ProAndonRecordVO } from '@/api/mes/pro/andon/record'
import AndonRecordForm from './AndonRecordForm.vue'
import AndonHandleForm from './AndonHandleForm.vue'
import AndonConfigDialog from './AndonConfigDialog.vue'
import AndonConfigDialog from '../config/AndonConfigForm.vue'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { MesProAndonStatusEnum } from '@/views/mes/utils/constants'
import MdWorkstationSelect from '@/views/mes/md/workstation/components/MdWorkstationSelect.vue'