| | |
| | | > |
| | | <el-form ref="formRef" :model="form" :rules="rules" label-width="90px"> |
| | | <el-form-item label="维修人" prop="maintenanceName"> |
| | | <el-input v-model="form.maintenanceName" disabled placeholder="报修时指定的维修人" /> |
| | | <el-input |
| | | v-model="form.maintenanceName" |
| | | :placeholder="isEditableMaintenanceName ? '请输入维修人姓名' : '报修时指定的维修人'" |
| | | :disabled="!isEditableMaintenanceName" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="维修结果" prop="maintenanceResult"> |
| | | <el-input v-model="form.maintenanceResult" placeholder="请输入维修结果" /> |
| | | <el-input |
| | | v-model="form.maintenanceResult" |
| | | type="textarea" |
| | | :autosize="{ minRows: 2, maxRows: 6 }" |
| | | placeholder="请输入维修结果" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="维修状态" prop="status"> |
| | | <el-select v-model="form.status" style="width: 100%"> |
| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { computed } from "vue"; |
| | | import FormDialog from "@/components/Dialog/FormDialog.vue"; |
| | | import { addMaintain, uploadRepairFile } from "@/api/equipmentManagement/repair"; |
| | | import { REPAIR_FILE_TYPE_MAINTAIN } from "@/api/equipmentManagement/repairFileType.js"; |
| | | import useFormData from "@/hooks/useFormData"; |
| | | import useUserStore from "@/store/modules/user"; |
| | | import { userListNoPage } from "@/api/system/user.js"; |
| | | import dayjs from "dayjs"; |
| | | import { ElMessage } from "element-plus"; |
| | | import { UploadFilled } from "@element-plus/icons-vue"; |
| | |
| | | const ATTACH_MAX_MB = 50; |
| | | |
| | | const userStore = useUserStore(); |
| | | const systemUserNames = ref([]); |
| | | |
| | | const isSystemUser = (name) => { |
| | | return systemUserNames.value.includes(name); |
| | | }; |
| | | |
| | | // 维修人是否可编辑:外部人员时可以编辑修改 |
| | | const isEditableMaintenanceName = computed(() => { |
| | | const name = form.maintenanceName; |
| | | if (!name) return false; |
| | | return !isSystemUser(name); |
| | | }); |
| | | |
| | | const loadSystemUsers = async () => { |
| | | const res = await userListNoPage(); |
| | | systemUserNames.value = (res?.data || []).map((u) => u.nickName); |
| | | }; |
| | | |
| | | const rules = { |
| | | maintenanceName: [{ required: true, message: "请选择维修人", trigger: "change" }], |
| | |
| | | const sendForm = async () => { |
| | | const valid = await formRef.value?.validate().catch(() => false); |
| | | if (!valid) return; |
| | | if (form.maintenanceName !== userStore.nickName) { |
| | | const maintenanceName = form.maintenanceName; |
| | | // 如果维修人是系统用户且非当前用户,禁止提交 |
| | | if (isSystemUser(maintenanceName) && maintenanceName !== userStore.nickName) { |
| | | ElMessage.warning("仅指定的维修人可进行维修"); |
| | | return; |
| | | } |
| | |
| | | clearAttachmentQueue(); |
| | | visible.value = true; |
| | | await nextTick(); |
| | | await loadSystemUsers(); |
| | | setForm(row); |
| | | if (row?.maintenanceName && row.maintenanceName !== userStore.nickName) { |
| | | const maintenanceName = row?.maintenanceName; |
| | | // 如果维修人是系统用户且非当前用户,禁止操作 |
| | | if (isSystemUser(maintenanceName) && maintenanceName !== userStore.nickName) { |
| | | ElMessage.warning("仅指定的维修人可进行维修"); |
| | | visible.value = false; |
| | | } |