This commit is contained in:
wzt 2026-08-05 09:50:48 +08:00
parent 2a982f12d0
commit b6ede42e5d

View File

@ -59,31 +59,31 @@
</n-card> </n-card>
<!-- 新增/编辑弹窗 --> <!-- 新增/编辑弹窗 -->
<n-modal v-model:show="modalVisible" preset="card" :title="modalTitle" style="width: 600px"> <n-modal v-model:show="modalVisible" preset="card" :title="modalTitle" style="width: 560px">
<n-form ref="formRef" :model="formData" :rules="formRules" label-placement="left" label-width="100px"> <n-form ref="formRef" :model="formData" :rules="formRules" label-placement="left" label-width="100px">
<n-form-item label="设备ID关联mes_equipment设备表主键" path="equipmentId"> <n-form-item label="设备ID" path="equipmentId">
<n-input v-model:value="formData.equipmentId" placeholder="请输入设备ID关联mes_equipment设备表主键" /> <n-input v-model:value="formData.equipmentId" placeholder="请输入设备ID" />
</n-form-item> </n-form-item>
<n-form-item label="记录类型maintain=保养repair=维修" path="recordType"> <n-form-item label="记录类型" path="recordType">
<n-select v-model:value="formData.recordType" placeholder="请选择记录类型maintain=保养repair=维修" :options="[]" /> <n-select v-model:value="formData.recordType" placeholder="请选择记录类型" :options="recordTypeOptions" />
</n-form-item> </n-form-item>
<n-form-item label="故障现象/保养项目详情" path="itemContent"> <n-form-item label="故障现象" path="itemContent">
<n-input v-model:value="formData.itemContent" type="textarea" placeholder="请输入故障现象/保养项目详情" /> <n-input v-model:value="formData.itemContent" type="textarea" placeholder="请输入故障现象/保养项目" :autosize="{ minRows: 2, maxRows: 4 }" />
</n-form-item> </n-form-item>
<n-form-item label="维修处理措施/保养执行内容" path="handleContent"> <n-form-item label="处理措施" path="handleContent">
<n-input v-model:value="formData.handleContent" type="textarea" placeholder="请输入维修处理措施/保养执行内容" /> <n-input v-model:value="formData.handleContent" type="textarea" placeholder="请输入维修处理措施/保养执行内容" :autosize="{ minRows: 2, maxRows: 4 }" />
</n-form-item> </n-form-item>
<n-form-item label="执行人ID关联sys_user系统用户表主键" path="executorId"> <n-form-item label="执行人" path="executorId">
<n-input v-model:value="formData.executorId" placeholder="请输入执行人ID关联sys_user系统用户表主键" /> <n-input v-model:value="formData.executorId" placeholder="请输入执行人ID" />
</n-form-item> </n-form-item>
<n-form-item label="维保作业开始时间" path="startTime"> <n-form-item label="开始时间" path="startTime">
<n-date-picker v-model:value="formData.startTime" type="datetime" clearable style="width: 100%" /> <n-date-picker v-model:value="formData.startTime" type="datetime" placeholder="请选择开始时间" clearable style="width: 100%" />
</n-form-item> </n-form-item>
<n-form-item label="维保作业结束时间,待处理单据为空" path="endTime"> <n-form-item label="结束时间" path="endTime">
<n-date-picker v-model:value="formData.endTime" type="datetime" clearable style="width: 100%" /> <n-date-picker v-model:value="formData.endTime" type="datetime" placeholder="请选择结束时间" clearable style="width: 100%" />
</n-form-item> </n-form-item>
<n-form-item label="单据状态pending=待处理finished=已完成" path="recordStatus"> <n-form-item label="单据状态" path="recordStatus">
<n-select v-model:value="formData.recordStatus" placeholder="请选择单据状态pending=待处理finished=已完成" :options="recordStatusOptions" /> <n-select v-model:value="formData.recordStatus" placeholder="请选择单据状态" :options="recordStatusOptions" />
</n-form-item> </n-form-item>
</n-form> </n-form>
<template #footer> <template #footer>
@ -132,7 +132,6 @@ import { ref, reactive, h, onMounted } from 'vue'
import { NButton, NSpace, NIcon, NUpload, useMessage, useDialog, type DataTableColumns, type UploadCustomRequestOptions } from 'naive-ui' import { NButton, NSpace, NIcon, NUpload, useMessage, useDialog, type DataTableColumns, type UploadCustomRequestOptions } from 'naive-ui'
import { SearchOutline, RefreshOutline, AddOutline, TrashOutline, CreateOutline, CloudUploadOutline, DownloadOutline } from '@vicons/ionicons5' import { SearchOutline, RefreshOutline, AddOutline, TrashOutline, CreateOutline, CloudUploadOutline, DownloadOutline } from '@vicons/ionicons5'
import { maintenanceRecordApi, type MaintenanceRecord } from '@/api/maintenanceRecord' import { maintenanceRecordApi, type MaintenanceRecord } from '@/api/maintenanceRecord'
import { dictDataApi } from '@/api/org'
const message = useMessage() const message = useMessage()
const dialog = useDialog() const dialog = useDialog()
@ -171,8 +170,15 @@ const defaultFormData: MaintenanceRecord = {
} }
const formData = reactive<MaintenanceRecord>({ ...defaultFormData }) const formData = reactive<MaintenanceRecord>({ ...defaultFormData })
// //使 //
const recordStatusOptions = ref<{ label: string; value: any }[]>([]) const recordTypeOptions = ref<{ label: string; value: any }[]>([
{ label: '保养', value: 'maintain' },
{ label: '维修', value: 'repair' }
])
const recordStatusOptions = ref<{ label: string; value: any }[]>([
{ label: '待处理', value: 'pending' },
{ label: '已完成', value: 'finished' }
])
// //
const formRules = { const formRules = {
@ -185,23 +191,27 @@ const formRules = {
// //
const columns: DataTableColumns<MaintenanceRecord> = [ const columns: DataTableColumns<MaintenanceRecord> = [
{ type: 'selection' }, { type: 'selection' },
{ title: '维保记录编号', key: 'recordId' }, { title: '维保记录编号', key: 'recordId', width: 160 },
{ title: '设备ID', key: 'equipmentId' }, { title: '设备ID', key: 'equipmentId', width: 100 },
{ title: '记录类型', key: 'recordType' }, { title: '记录类型', key: 'recordType', width: 100,
{ title: '故障现象/保养项目', key: 'itemContent' }, render(row) {
{ title: '维修处理措施/保养执行内容', key: 'handleContent' }, const opt = recordTypeOptions.value.find(o => o.value === row.recordType)
{ title: '执行人ID', key: 'executorId' }, return opt ? opt.label : (row.recordType ?? '-')
{ title: '维保作业开始时间', key: 'startTime' }, }
{ title: '维保作业结束时间', key: 'endTime' }, },
{ title: '单据状态', key: 'recordStatus', { title: '故障现象/保养项目', key: 'itemContent', ellipsis: { tooltip: true } },
{ title: '维修处理措施/保养执行内容', key: 'handleContent', ellipsis: { tooltip: true } },
{ title: '执行人ID', key: 'executorId', width: 100 },
{ title: '维保作业开始时间', key: 'startTime', width: 170 },
{ title: '维保作业结束时间', key: 'endTime', width: 170 },
{ title: '单据状态', key: 'recordStatus', width: 100,
render(row) { render(row) {
const val = row.recordStatus const val = row.recordStatus
const opt = recordStatusOptions.value.find(o => o.value === val || String(o.value) === String(val)) const opt = recordStatusOptions.value.find(o => o.value === val || String(o.value) === String(val))
return opt ? opt.label : (val ?? '-') return opt ? opt.label : (val ?? '-')
} }
}, },
{ title: '单据创建时间', key: 'createTime', width: 180 }, { title: '单据创建时间', key: 'createTime', width: 170 },
{ title: '单据最后更新时间', key: 'updateTime', width: 180 },
{ {
title: '操作', title: '操作',
key: 'actions', key: 'actions',
@ -416,17 +426,8 @@ async function handleImportUpload({ file }: UploadCustomRequestOptions) {
} }
} }
//
async function loadDictOptions() {
try {
const data = await dictDataApi.listByType('sys_status')
recordStatusOptions.value = data.map(d => ({ label: d.dictLabel, value: d.dictValue }))
} catch {}
}
onMounted(() => { onMounted(() => {
loadData() loadData()
loadDictOptions()
}) })
</script> </script>