gongchunyi
10 天以前 b88332e0a2686e68023e26438af97f79247b1ddd
src/views/equipmentManagement/upkeep/Form/formDia.vue
@@ -35,8 +35,17 @@
         <el-row>
            <el-col :span="12">
               <el-form-item label="录入人" prop="inspector">
                  <el-input
                     :model-value="registrantDisplayName"
                     disabled
                     placeholder="当前登录用户"
                  />
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="保养人" prop="maintenancePerson">
                  <el-select
                     v-model="form.inspector"
                     v-model="form.maintenancePerson"
                     filterable
                     default-first-option
                     :reserve-keyword="false"
@@ -47,11 +56,13 @@
                        v-for="item in userList"
                        :label="item.nickName"
                        :value="item.userId"
                        :key="item.userId"
                        :key="'mp-' + item.userId"
                     />
                  </el-select>
               </el-form-item>
            </el-col>
         </el-row>
         <el-row>
            <el-col :span="12">
               <el-form-item label="登记时间" prop="registrationDate">
                  <el-date-picker
@@ -123,7 +134,19 @@
            </el-col>
         </el-row>
         <el-row>
            <el-col :span="12">
            <el-col :span="24">
               <el-form-item label="保养项目" prop="maintenanceItems">
                  <el-input
                     v-model="form.maintenanceItems"
                     type="textarea"
                     :rows="3"
                     placeholder="请输入保养项目"
                  />
               </el-form-item>
            </el-col>
         </el-row>
         <el-row>
            <el-col :span="24">
               <el-form-item label="备注" prop="remarks">
                  <el-input v-model="form.remarks" placeholder="请输入备注" type="textarea" />
               </el-form-item>
@@ -135,7 +158,7 @@
<script setup>
import FormDialog from "@/components/Dialog/FormDialog.vue";
import { reactive, ref, getCurrentInstance, toRefs } from "vue";
import { reactive, ref, computed, getCurrentInstance, toRefs } from "vue";
import {userListNoPageByTenantId} from "@/api/system/user.js";
import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
import { deviceMaintenanceTaskAdd, deviceMaintenanceTaskEdit } from "@/api/equipmentManagement/upkeep";
@@ -152,8 +175,10 @@
   form: {
      taskId: undefined,
      taskName: undefined,
      // 录入人:单选一个用户 id
      // 录入人、保养人:用户 id
      inspector: undefined,
      maintenancePerson: undefined,
      maintenanceItems: '',
      remarks: '',
      frequencyType: '',
      frequencyDetail: '',
@@ -165,6 +190,8 @@
   rules: {
      taskId: [{ required: true, message: "请选择设备", trigger: "change" },],
      inspector: [{ required: true, message: "请选择录入人", trigger: "blur" },],
      maintenancePerson: [{ required: true, message: "请选择保养人", trigger: "change" }],
      maintenanceItems: [{ required: true, message: "请输入保养项目", trigger: "blur" }],
      registrationDate: [{ required: true, message: "请选择登记时间", trigger: "change" }],
      frequencyDetail: [{
         validator: (rule, value, callback) => {
@@ -192,6 +219,16 @@
})
const { form, rules } = toRefs(data)
const userList = ref([])
const registrantDisplayName = computed(
   () => userStore.nickName || userStore.name || "当前登录用户"
)
const syncRegistrantFromLogin = () => {
   if (userStore.id != null && userStore.id !== "") {
      form.value.inspector = userStore.id
   }
}
const loadDeviceName = async () => {
   const { data } = await getDeviceLedger();
@@ -226,21 +263,17 @@
   
   if (type === 'edit' && row) {
      form.value = { ...row }
      // 编辑时用接口返回的 registrantId 回显录入人
      if (row.registrantId) {
         form.value.inspector = row.registrantId
      if (row.maintenancePersonId) {
         form.value.maintenancePerson = row.maintenancePersonId
      }
      // 如果有设备ID,自动设置设备信息
      if (form.value.taskId) {
         setDeviceModel(form.value.taskId);
      }
   } else if (type === 'add') {
      // 新增时设置登记日期为当天
      form.value.registrationDate = getCurrentDate();
      // 新增时设置录入人为当前登录账户
      form.value.inspector = userStore.id;
      form.value.maintenancePerson = userStore.id;
   }
   syncRegistrantFromLogin()
}
// 关闭对话框
@@ -260,7 +293,8 @@
      taskId: undefined,
      taskName: undefined,
      inspector: undefined,
      inspector: undefined,
      maintenancePerson: undefined,
      maintenanceItems: '',
      remarks: '',
      frequencyType: '',
      frequencyDetail: '',
@@ -273,19 +307,21 @@
// 提交表单
const submitForm = () => {
   syncRegistrantFromLogin()
   proxy.$refs["formRef"].validate(async valid => {
      if (valid) {
         try {
            const payload = { ...form.value }
            // 不再向后端传保养人字段,仅使用接口要求的 registrant / registrantId
            // 根据选择的"录入人"设置 registrant / registrantId
            if (payload.inspector) {
               const selectedUser = userList.value.find(
                  (u) => String(u.userId) === String(payload.inspector)
            payload.registrantId = userStore.id
            payload.registrant = userStore.nickName || userStore.name
            const maintenancePersonUserId = form.value.maintenancePerson
            if (maintenancePersonUserId) {
               const maintainer = userList.value.find(
                  (u) => String(u.userId) === String(maintenancePersonUserId)
               )
               if (selectedUser) {
                  payload.registrantId = selectedUser.userId
                  payload.registrant = selectedUser.nickName
               if (maintainer) {
                  payload.maintenancePersonId = maintainer.userId
                  payload.maintenancePerson = maintainer.nickName
               }
            }
            delete payload.inspector