refactor(mes-ui): 修正工作站模块中文标签命名 & 拆分 API 文件

- 表单标签/占位符/校验提示:工位 → 工作站
- API 注释:工位设备 → 设备资源、工位工具 → 工装夹具资源、工位人员 → 人力资源
- 拆分 workstation API 到 machine/tool/worker/workshop 子目录
pull/871/MERGE
YunaiV 2026-02-16 12:12:03 +08:00
parent 59bd23b3e0
commit 95c478d739
13 changed files with 220 additions and 161 deletions

View File

@ -13,7 +13,7 @@ export interface MdItemBatchConfigVO {
purchaseOrderCodeFlag: boolean // 批次属性-采购订单编号 purchaseOrderCodeFlag: boolean // 批次属性-采购订单编号
workorderFlag: boolean // 批次属性-生产工单 workorderFlag: boolean // 批次属性-生产工单
taskFlag: boolean // 批次属性-生产任务 taskFlag: boolean // 批次属性-生产任务
workstationFlag: boolean // 批次属性-工 workstationFlag: boolean // 批次属性-工作站
toolFlag: boolean // 批次属性-工具 toolFlag: boolean // 批次属性-工具
moldFlag: boolean // 批次属性-模具 moldFlag: boolean // 批次属性-模具
lotNumberFlag: boolean // 批次属性-生产批号 lotNumberFlag: boolean // 批次属性-生产批号

View File

@ -1,13 +1,13 @@
import request from '@/config/axios' import request from '@/config/axios'
// TODO @AI【遵守我说的】是不是每个 VO 独立文件;例如说 tool/ 、worker/、machine/ 等等 // DONE @AI【遵守我说的】是不是每个 VO 独立文件;例如说 tool/ 、worker/、machine/ 等等
// MES 工 VO // MES 工作站 VO
export interface MdWorkstationVO { export interface MdWorkstationVO {
id: number // 工编号 id: number // 工作站编号
code: string // 工编码 code: string // 工作站编码
name: string // 工名称 name: string // 工作站名称
address: string // 工地点 address: string // 工作站地点
workshopId: number // 所在车间 ID workshopId: number // 所在车间 ID
workshopName: string // 所在车间名称 workshopName: string // 所在车间名称
processId: number // 工序 ID processId: number // 工序 ID
@ -22,135 +22,40 @@ export interface MdWorkstationVO {
attribute4: number attribute4: number
} }
// MES 工位设备 VO // MES 工作站 API
export interface MdWorkstationMachineVO {
id: number
workstationId: number // 工位 ID
machineryId: number // 设备 ID
machineryName: string // 设备名称
machineryCode: string // 设备编码
quantity: number // 数量
remark: string // 备注
}
// MES 工位工具 VO
export interface MdWorkstationToolVO {
id: number
workstationId: number // 工位 ID
toolTypeId: number // 工具类型 ID
toolTypeName: string // 工具类型名称
quantity: number // 数量
remark: string // 备注
}
// MES 工位人员 VO
export interface MdWorkstationWorkerVO {
id: number
workstationId: number // 工位 ID
postId: number // 岗位 ID
postName: string // 岗位名称
quantity: number // 数量
remark: string // 备注
}
// MES 工位 API
export const MdWorkstationApi = { export const MdWorkstationApi = {
// 查询工分页 // 查询工作站分页
getWorkstationPage: async (params: any) => { getWorkstationPage: async (params: any) => {
return await request.get({ url: `/mes/md-workstation/page`, params }) return await request.get({ url: `/mes/md-workstation/page`, params })
}, },
// 查询工精简列表 // 查询工作站精简列表
getWorkstationSimpleList: async () => { getWorkstationSimpleList: async () => {
return await request.get({ url: `/mes/md-workstation/simple-list` }) return await request.get({ url: `/mes/md-workstation/simple-list` })
}, },
// 查询工详情 // 查询工作站详情
getWorkstation: async (id: number) => { getWorkstation: async (id: number) => {
return await request.get({ url: `/mes/md-workstation/get?id=` + id }) return await request.get({ url: `/mes/md-workstation/get?id=` + id })
}, },
// 新增工 // 新增工作站
createWorkstation: async (data: MdWorkstationVO) => { createWorkstation: async (data: MdWorkstationVO) => {
return await request.post({ url: `/mes/md-workstation/create`, data }) return await request.post({ url: `/mes/md-workstation/create`, data })
}, },
// 修改工 // 修改工作站
updateWorkstation: async (data: MdWorkstationVO) => { updateWorkstation: async (data: MdWorkstationVO) => {
return await request.put({ url: `/mes/md-workstation/update`, data }) return await request.put({ url: `/mes/md-workstation/update`, data })
}, },
// 删除工 // 删除工作站
deleteWorkstation: async (id: number) => { deleteWorkstation: async (id: number) => {
return await request.delete({ url: `/mes/md-workstation/delete?id=` + id }) return await request.delete({ url: `/mes/md-workstation/delete?id=` + id })
}, },
// 导出工 Excel // 导出工作站 Excel
exportWorkstation: async (params: any) => { exportWorkstation: async (params: any) => {
return await request.download({ url: `/mes/md-workstation/export-excel`, params }) return await request.download({ url: `/mes/md-workstation/export-excel`, params })
} }
} }
// MES 工位设备 API
export const MdWorkstationMachineApi = {
// 查询工位设备列表
getWorkstationMachineList: async (workstationId: number) => {
return await request.get({ url: `/mes/md-workstation-machine/list-by-workstation?workstationId=` + workstationId })
},
// 新增工位设备
createWorkstationMachine: async (data: MdWorkstationMachineVO) => {
return await request.post({ url: `/mes/md-workstation-machine/create`, data })
},
// 删除工位设备
deleteWorkstationMachine: async (id: number) => {
return await request.delete({ url: `/mes/md-workstation-machine/delete?id=` + id })
}
}
// MES 工位工具 API
export const MdWorkstationToolApi = {
// 查询工位工具列表
getWorkstationToolList: async (workstationId: number) => {
return await request.get({ url: `/mes/md-workstation-tool/list-by-workstation?workstationId=` + workstationId })
},
// 新增工位工具
createWorkstationTool: async (data: MdWorkstationToolVO) => {
return await request.post({ url: `/mes/md-workstation-tool/create`, data })
},
// 修改工位工具
updateWorkstationTool: async (data: MdWorkstationToolVO) => {
return await request.put({ url: `/mes/md-workstation-tool/update`, data })
},
// 删除工位工具
deleteWorkstationTool: async (id: number) => {
return await request.delete({ url: `/mes/md-workstation-tool/delete?id=` + id })
}
}
// MES 工位人员 API
export const MdWorkstationWorkerApi = {
// 查询工位人员列表
getWorkstationWorkerList: async (workstationId: number) => {
return await request.get({ url: `/mes/md-workstation-worker/list-by-workstation?workstationId=` + workstationId })
},
// 新增工位人员
createWorkstationWorker: async (data: MdWorkstationWorkerVO) => {
return await request.post({ url: `/mes/md-workstation-worker/create`, data })
},
// 修改工位人员
updateWorkstationWorker: async (data: MdWorkstationWorkerVO) => {
return await request.put({ url: `/mes/md-workstation-worker/update`, data })
},
// 删除工位人员
deleteWorkstationWorker: async (id: number) => {
return await request.delete({ url: `/mes/md-workstation-worker/delete?id=` + id })
}
}

View File

@ -0,0 +1,30 @@
import request from '@/config/axios'
// MES 设备资源 VO
export interface MdWorkstationMachineVO {
id: number
workstationId: number // 工作站 ID
machineryId: number // 设备 ID
machineryName: string // 设备名称
machineryCode: string // 设备编码
quantity: number // 数量
remark: string // 备注
}
// MES 设备资源 API
export const MdWorkstationMachineApi = {
// 查询设备资源列表
getWorkstationMachineList: async (workstationId: number) => {
return await request.get({ url: `/mes/md-workstation-machine/list-by-workstation?workstationId=` + workstationId })
},
// 新增设备资源
createWorkstationMachine: async (data: MdWorkstationMachineVO) => {
return await request.post({ url: `/mes/md-workstation-machine/create`, data })
},
// 删除设备资源
deleteWorkstationMachine: async (id: number) => {
return await request.delete({ url: `/mes/md-workstation-machine/delete?id=` + id })
}
}

View File

@ -0,0 +1,34 @@
import request from '@/config/axios'
// MES 工装夹具资源 VO
export interface MdWorkstationToolVO {
id: number
workstationId: number // 工作站 ID
toolTypeId: number // 工具类型 ID
toolTypeName: string // 工具类型名称
quantity: number // 数量
remark: string // 备注
}
// MES 工装夹具资源 API
export const MdWorkstationToolApi = {
// 查询工装夹具资源列表
getWorkstationToolList: async (workstationId: number) => {
return await request.get({ url: `/mes/md-workstation-tool/list-by-workstation?workstationId=` + workstationId })
},
// 新增工装夹具资源
createWorkstationTool: async (data: MdWorkstationToolVO) => {
return await request.post({ url: `/mes/md-workstation-tool/create`, data })
},
// 修改工装夹具资源
updateWorkstationTool: async (data: MdWorkstationToolVO) => {
return await request.put({ url: `/mes/md-workstation-tool/update`, data })
},
// 删除工装夹具资源
deleteWorkstationTool: async (id: number) => {
return await request.delete({ url: `/mes/md-workstation-tool/delete?id=` + id })
}
}

View File

@ -0,0 +1,34 @@
import request from '@/config/axios'
// MES 人力资源 VO
export interface MdWorkstationWorkerVO {
id: number
workstationId: number // 工作站 ID
postId: number // 岗位 ID
postName: string // 岗位名称
quantity: number // 数量
remark: string // 备注
}
// MES 人力资源 API
export const MdWorkstationWorkerApi = {
// 查询人力资源列表
getWorkstationWorkerList: async (workstationId: number) => {
return await request.get({ url: `/mes/md-workstation-worker/list-by-workstation?workstationId=` + workstationId })
},
// 新增人力资源
createWorkstationWorker: async (data: MdWorkstationWorkerVO) => {
return await request.post({ url: `/mes/md-workstation-worker/create`, data })
},
// 修改人力资源
updateWorkstationWorker: async (data: MdWorkstationWorkerVO) => {
return await request.put({ url: `/mes/md-workstation-worker/update`, data })
},
// 删除人力资源
deleteWorkstationWorker: async (id: number) => {
return await request.delete({ url: `/mes/md-workstation-worker/delete?id=` + id })
}
}

View File

@ -24,7 +24,7 @@
<el-checkbox v-model="formData.salesOrderCodeFlag"></el-checkbox> <el-checkbox v-model="formData.salesOrderCodeFlag"></el-checkbox>
<el-checkbox v-model="formData.workorderFlag"></el-checkbox> <el-checkbox v-model="formData.workorderFlag"></el-checkbox>
<el-checkbox v-model="formData.taskFlag"></el-checkbox> <el-checkbox v-model="formData.taskFlag"></el-checkbox>
<el-checkbox v-model="formData.workstationFlag"></el-checkbox> <el-checkbox v-model="formData.workstationFlag"></el-checkbox>
<el-checkbox v-model="formData.toolFlag"></el-checkbox> <el-checkbox v-model="formData.toolFlag"></el-checkbox>
<el-checkbox v-model="formData.moldFlag"></el-checkbox> <el-checkbox v-model="formData.moldFlag"></el-checkbox>
</template> </template>

View File

@ -89,7 +89,6 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
// TODO @AI
import { MdProductBomApi, MdProductBomVO } from '@/api/mes/md/item/productBom' import { MdProductBomApi, MdProductBomVO } from '@/api/mes/md/item/productBom'
import { MdItemApi } from '@/api/mes/md/item' import { MdItemApi } from '@/api/mes/md/item'
import { getItemOrProductLabel } from '@/views/mes/utils/constants' import { getItemOrProductLabel } from '@/views/mes/utils/constants'
@ -97,14 +96,14 @@ import { getItemOrProductLabel } from '@/views/mes/utils/constants'
defineOptions({ name: 'MdProductBomForm' }) defineOptions({ name: 'MdProductBomForm' })
const props = defineProps<{ const props = defineProps<{
itemId: number itemId: number //
}>() }>()
const message = useMessage() const message = useMessage()
const loading = ref(false) const loading = ref(false) //
const list = ref<MdProductBomVO[]>([]) const list = ref<MdProductBomVO[]>([]) // BOM
/** 加载列表 */ /** 加载 BOM 列表 */
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
try { try {
@ -115,9 +114,10 @@ const getList = async () => {
} }
// ==================== ==================== // ==================== ====================
const itemSearchLoading = ref(false) const itemSearchLoading = ref(false) //
const itemOptions = ref<any[]>([]) const itemOptions = ref<any[]>([]) //
/** 远程搜索物料 */
const searchItems = async (query: string) => { const searchItems = async (query: string) => {
if (!query) { if (!query) {
itemOptions.value = [] itemOptions.value = []
@ -133,8 +133,9 @@ const searchItems = async (query: string) => {
} }
// ==================== BOM ==================== // ==================== BOM ====================
const addDialogVisible = ref(false) const addDialogVisible = ref(false) //
const addFormRef = ref() const addFormRef = ref() // Ref
/** 添加表单数据 */
const addFormData = ref({ const addFormData = ref({
itemId: undefined as number | undefined, itemId: undefined as number | undefined,
bomItemId: undefined as number | undefined, bomItemId: undefined as number | undefined,
@ -146,6 +147,7 @@ const addFormRules = reactive({
quantity: [{ required: true, message: '用量比例不能为空', trigger: 'blur' }] quantity: [{ required: true, message: '用量比例不能为空', trigger: 'blur' }]
}) })
/** 打开添加弹窗 */
const openAddForm = () => { const openAddForm = () => {
addDialogVisible.value = true addDialogVisible.value = true
addFormData.value = { addFormData.value = {
@ -158,6 +160,7 @@ const openAddForm = () => {
addFormRef.value?.resetFields() addFormRef.value?.resetFields()
} }
/** 提交添加表单 */
const submitAddForm = async () => { const submitAddForm = async () => {
await addFormRef.value.validate() await addFormRef.value.validate()
await MdProductBomApi.createProductBom(addFormData.value as unknown as MdProductBomVO) await MdProductBomApi.createProductBom(addFormData.value as unknown as MdProductBomVO)
@ -167,8 +170,9 @@ const submitAddForm = async () => {
} }
// ==================== BOM ==================== // ==================== BOM ====================
const editDialogVisible = ref(false) const editDialogVisible = ref(false) //
const editFormRef = ref() const editFormRef = ref() // Ref
/** 编辑表单数据 */
const editFormData = ref({ const editFormData = ref({
id: undefined as number | undefined, id: undefined as number | undefined,
itemId: undefined as number | undefined, itemId: undefined as number | undefined,
@ -180,6 +184,7 @@ const editFormRules = reactive({
quantity: [{ required: true, message: '用量比例不能为空', trigger: 'blur' }] quantity: [{ required: true, message: '用量比例不能为空', trigger: 'blur' }]
}) })
/** 打开编辑弹窗 */
const openEditForm = (row: MdProductBomVO) => { const openEditForm = (row: MdProductBomVO) => {
editDialogVisible.value = true editDialogVisible.value = true
editFormData.value = { editFormData.value = {
@ -192,6 +197,7 @@ const openEditForm = (row: MdProductBomVO) => {
editFormRef.value?.resetFields() editFormRef.value?.resetFields()
} }
/** 提交编辑表单 */
const submitEditForm = async () => { const submitEditForm = async () => {
await editFormRef.value.validate() await editFormRef.value.validate()
await MdProductBomApi.updateProductBom(editFormData.value as unknown as MdProductBomVO) await MdProductBomApi.updateProductBom(editFormData.value as unknown as MdProductBomVO)
@ -201,6 +207,8 @@ const submitEditForm = async () => {
} }
// ==================== ==================== // ==================== ====================
/** 删除 BOM */
const handleDelete = async (id: number) => { const handleDelete = async (id: number) => {
try { try {
await message.delConfirm() await message.delConfirm()

View File

@ -9,8 +9,8 @@
> >
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="工编码" prop="code"> <el-form-item label="工作站编码" prop="code">
<el-input v-model="formData.code" placeholder="请输入工编码"> <el-input v-model="formData.code" placeholder="请输入工作站编码">
<template #append> <template #append>
<el-button @click="generateCode" :disabled="formType === 'update'"> <el-button @click="generateCode" :disabled="formType === 'update'">
生成 生成
@ -20,8 +20,8 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="工名称" prop="name"> <el-form-item label="工作站名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入工名称" /> <el-input v-model="formData.name" placeholder="请输入工作站名称" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
@ -39,10 +39,11 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="工地点" prop="address"> <el-form-item label="工作站地点" prop="address">
<el-input v-model="formData.address" placeholder="请输入工地点" /> <el-input v-model="formData.address" placeholder="请输入工作站地点" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- TODO @AI所属工序 -->
<el-col :span="8"> <el-col :span="8">
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-radio-group v-model="formData.status"> <el-radio-group v-model="formData.status">
@ -70,12 +71,10 @@
<el-tab-pane label="设备资源" name="machine"> <el-tab-pane label="设备资源" name="machine">
<WorkstationMachinePanel :workstation-id="formData.id!" /> <WorkstationMachinePanel :workstation-id="formData.id!" />
</el-tab-pane> </el-tab-pane>
<!-- TODO @AI工装夹具 --> <el-tab-pane label="工装夹具" name="tool">
<el-tab-pane label="工具资源" name="tool">
<WorkstationToolPanel :workstation-id="formData.id!" /> <WorkstationToolPanel :workstation-id="formData.id!" />
</el-tab-pane> </el-tab-pane>
<!-- TODO @AI人力资源 --> <el-tab-pane label="人力资源" name="worker">
<el-tab-pane label="人员资源" name="worker">
<WorkstationWorkerPanel :workstation-id="formData.id!" /> <WorkstationWorkerPanel :workstation-id="formData.id!" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
@ -95,6 +94,9 @@ import WorkstationMachinePanel from './components/WorkstationMachinePanel.vue'
import WorkstationToolPanel from './components/WorkstationToolPanel.vue' import WorkstationToolPanel from './components/WorkstationToolPanel.vue'
import WorkstationWorkerPanel from './components/WorkstationWorkerPanel.vue' import WorkstationWorkerPanel from './components/WorkstationWorkerPanel.vue'
// TODO @AI
// TODO @AI
defineOptions({ name: 'WorkstationForm' }) defineOptions({ name: 'WorkstationForm' })
const { t } = useI18n() // const { t } = useI18n() //
@ -120,14 +122,14 @@ const formData = ref({
remark: undefined remark: undefined
}) })
const formRules = reactive({ const formRules = reactive({
code: [{ required: true, message: '工编码不能为空', trigger: 'blur' }], code: [{ required: true, message: '工作站编码不能为空', trigger: 'blur' }],
name: [{ required: true, message: '工名称不能为空', trigger: 'blur' }], name: [{ required: true, message: '工作站名称不能为空', trigger: 'blur' }],
workshopId: [{ required: true, message: '所在车间不能为空', trigger: 'change' }], workshopId: [{ required: true, message: '所在车间不能为空', trigger: 'change' }],
status: [{ required: true, message: '状态不能为空', trigger: 'blur' }] status: [{ required: true, message: '状态不能为空', trigger: 'blur' }]
}) })
const formRef = ref() const formRef = ref()
/** 生成工编码 */ /** 生成工作站编码 */
const generateCode = () => { const generateCode = () => {
formData.value.code = 'WS' + generateRandomStr(12) formData.value.code = 'WS' + generateRandomStr(12)
} }

View File

@ -38,7 +38,10 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { MdWorkstationMachineApi, MdWorkstationMachineVO } from '@/api/mes/md/workstation' import { MdWorkstationMachineApi, MdWorkstationMachineVO } from '@/api/mes/md/workstation/machine'
// TODO @AI
// TODO @AI
const props = defineProps<{ const props = defineProps<{
workstationId: number workstationId: number
@ -59,6 +62,7 @@ const getList = async () => {
} }
/** 添加弹窗 */ /** 添加弹窗 */
// TODO @AI使 form add
const addDialogVisible = ref(false) const addDialogVisible = ref(false)
const addFormRef = ref() const addFormRef = ref()
const addFormData = ref({ const addFormData = ref({

View File

@ -21,10 +21,20 @@
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px"> <el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
<el-form-item label="工具类型" prop="toolTypeId"> <el-form-item label="工具类型" prop="toolTypeId">
<!-- TODO @芋艿对接工具类型下拉列表 TM 工具模块完成后对接 --> <!-- TODO @芋艿对接工具类型下拉列表 TM 工具模块完成后对接 -->
<el-input-number v-model="formData.toolTypeId" placeholder="请输入工具类型编号" class="!w-1/1" :disabled="isEdit" /> <el-input-number
v-model="formData.toolTypeId"
placeholder="请输入工具类型编号"
class="!w-1/1"
:disabled="isEdit"
/>
</el-form-item> </el-form-item>
<el-form-item label="数量" prop="quantity"> <el-form-item label="数量" prop="quantity">
<el-input-number v-model="formData.quantity" :min="1" controls-position="right" class="!w-1/1" /> <el-input-number
v-model="formData.quantity"
:min="1"
controls-position="right"
class="!w-1/1"
/>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" /> <el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" />
@ -39,7 +49,10 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { MdWorkstationToolApi, MdWorkstationToolVO } from '@/api/mes/md/workstation' import { MdWorkstationToolApi, MdWorkstationToolVO } from '@/api/mes/md/workstation/tool'
// TODO @AI
// TODO @AI
const props = defineProps<{ const props = defineProps<{
workstationId: number workstationId: number
@ -62,7 +75,7 @@ const getList = async () => {
/** 弹窗 */ /** 弹窗 */
const dialogVisible = ref(false) const dialogVisible = ref(false)
const dialogTitle = ref('') const dialogTitle = ref('')
const isEdit = ref(false) const isEdit = ref(false) // TODO @AIformType
const formRef = ref() const formRef = ref()
const formData = ref({ const formData = ref({
id: undefined as number | undefined, id: undefined as number | undefined,
@ -100,10 +113,14 @@ const openEditForm = (row: MdWorkstationToolVO) => {
const submitForm = async () => { const submitForm = async () => {
await formRef.value.validate() await formRef.value.validate()
if (isEdit.value) { if (isEdit.value) {
await MdWorkstationToolApi.updateWorkstationTool(formData.value as unknown as MdWorkstationToolVO) await MdWorkstationToolApi.updateWorkstationTool(
formData.value as unknown as MdWorkstationToolVO
)
message.success('编辑成功') message.success('编辑成功')
} else { } else {
await MdWorkstationToolApi.createWorkstationTool(formData.value as unknown as MdWorkstationToolVO) await MdWorkstationToolApi.createWorkstationTool(
formData.value as unknown as MdWorkstationToolVO
)
message.success('添加成功') message.success('添加成功')
} }
dialogVisible.value = false dialogVisible.value = false

View File

@ -20,7 +20,12 @@
<Dialog :title="dialogTitle" v-model="dialogVisible" width="500px"> <Dialog :title="dialogTitle" v-model="dialogVisible" width="500px">
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px"> <el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
<el-form-item label="岗位" prop="postId"> <el-form-item label="岗位" prop="postId">
<el-select v-model="formData.postId" placeholder="请选择岗位" class="!w-1/1" :disabled="isEdit"> <el-select
v-model="formData.postId"
placeholder="请选择岗位"
class="!w-1/1"
:disabled="isEdit"
>
<el-option <el-option
v-for="post in postList" v-for="post in postList"
:key="post.id" :key="post.id"
@ -30,7 +35,12 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="数量" prop="quantity"> <el-form-item label="数量" prop="quantity">
<el-input-number v-model="formData.quantity" :min="1" controls-position="right" class="!w-1/1" /> <el-input-number
v-model="formData.quantity"
:min="1"
controls-position="right"
class="!w-1/1"
/>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" /> <el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" />
@ -45,9 +55,12 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { MdWorkstationWorkerApi, MdWorkstationWorkerVO } from '@/api/mes/md/workstation' import { MdWorkstationWorkerApi, MdWorkstationWorkerVO } from '@/api/mes/md/workstation/worker'
import * as PostApi from '@/api/system/post' import * as PostApi from '@/api/system/post'
// TODO @AI
// TODO @AI
const props = defineProps<{ const props = defineProps<{
workstationId: number workstationId: number
}>() }>()
@ -70,7 +83,7 @@ const getList = async () => {
/** 弹窗 */ /** 弹窗 */
const dialogVisible = ref(false) const dialogVisible = ref(false)
const dialogTitle = ref('') const dialogTitle = ref('')
const isEdit = ref(false) const isEdit = ref(false) // TODO @AIformType
const formRef = ref() const formRef = ref()
const formData = ref({ const formData = ref({
id: undefined as number | undefined, id: undefined as number | undefined,
@ -112,10 +125,14 @@ const openEditForm = async (row: MdWorkstationWorkerVO) => {
const submitForm = async () => { const submitForm = async () => {
await formRef.value.validate() await formRef.value.validate()
if (isEdit.value) { if (isEdit.value) {
await MdWorkstationWorkerApi.updateWorkstationWorker(formData.value as unknown as MdWorkstationWorkerVO) await MdWorkstationWorkerApi.updateWorkstationWorker(
formData.value as unknown as MdWorkstationWorkerVO
)
message.success('编辑成功') message.success('编辑成功')
} else { } else {
await MdWorkstationWorkerApi.createWorkstationWorker(formData.value as unknown as MdWorkstationWorkerVO) await MdWorkstationWorkerApi.createWorkstationWorker(
formData.value as unknown as MdWorkstationWorkerVO
)
message.success('添加成功') message.success('添加成功')
} }
dialogVisible.value = false dialogVisible.value = false

View File

@ -6,28 +6,33 @@
:model="queryParams" :model="queryParams"
ref="queryFormRef" ref="queryFormRef"
:inline="true" :inline="true"
label-width="68px" label-width="85px"
> >
<el-form-item label="工编码" prop="code"> <el-form-item label="工作站编码" prop="code">
<el-input <el-input
v-model="queryParams.code" v-model="queryParams.code"
placeholder="请输入工编码" placeholder="请输入工作站编码"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="工名称" prop="name"> <el-form-item label="工作站名称" prop="name">
<el-input <el-input
v-model="queryParams.name" v-model="queryParams.name"
placeholder="请输入工名称" placeholder="请输入工作站名称"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="所在车间" prop="workshopId"> <el-form-item label="所在车间" prop="workshopId">
<el-select v-model="queryParams.workshopId" placeholder="请选择车间" clearable class="!w-240px"> <el-select
v-model="queryParams.workshopId"
placeholder="请选择车间"
clearable
class="!w-240px"
>
<el-option <el-option
v-for="workshop in workshopList" v-for="workshop in workshopList"
:key="workshop.id" :key="workshop.id"
@ -72,13 +77,15 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<!-- @AI宽度的设置有问题参考下别的模块已对齐列宽 -->
<!-- @AI我指的是你这么写宽度占不满屏幕 -->
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<!-- TODO @AI应该是应该是工作站然后字段在对齐下 --> <el-table-column label="工作站编码" align="center" prop="code" width="120" />
<el-table-column label="工位编码" align="center" prop="code" /> <el-table-column label="工作站名称" align="center" prop="name" width="150" />
<el-table-column label="工位名称" align="center" prop="name" width="150" /> <el-table-column label="工作站地点" align="center" prop="address" width="150" />
<el-table-column label="工位地点" align="center" prop="address" /> <el-table-column label="所在车间" align="center" prop="workshopName" width="120" />
<el-table-column label="所在车间" align="center" prop="workshopName" /> <!-- TODO @AI所属工序 -->
<el-table-column label="状态" align="center" prop="status"> <el-table-column label="状态" align="center" prop="status" width="100">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" /> <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
</template> </template>
@ -92,6 +99,7 @@
/> />
<el-table-column label="操作" align="center" width="150"> <el-table-column label="操作" align="center" width="150">
<template #default="scope"> <template #default="scope">
<!-- TODO @芋艿标签打印 -->
<el-button <el-button
link link
type="primary" type="primary"
@ -198,7 +206,7 @@ const handleExport = async () => {
await message.exportConfirm() await message.exportConfirm()
exportLoading.value = true exportLoading.value = true
const data = await MdWorkstationApi.exportWorkstation(queryParams) const data = await MdWorkstationApi.exportWorkstation(queryParams)
download.excel(data, '工.xls') download.excel(data, '工作站.xls')
} catch { } catch {
} finally { } finally {
exportLoading.value = false exportLoading.value = false