yyb
8 天以前 9e2801168d0caf2691b1189697d76dce86d78ebf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<template>
  <FormDialog
    v-model="visible"
    :title="'设备保养'"
    width="640px"
    @confirm="sendForm"
    @cancel="handleCancel"
    @close="handleClose"
  >
    <el-form :model="form" label-width="100px">
      <el-form-item label="实际保养人">
        <el-input
          :model-value="currentUserName"
          disabled
          placeholder="当前登录用户"
        ></el-input>
      </el-form-item>
      <el-form-item label="实际保养日期">
        <el-date-picker
          v-model="form.maintenanceActuallyTime"
          placeholder="请选择实际保养日期"
          format="YYYY-MM-DD HH:mm:ss"
          value-format="YYYY-MM-DD HH:mm:ss"
          type="datetime"
          clearable
          style="width: 100%"
        />
      </el-form-item>
      <el-form-item label="保养状态">
        <el-select v-model="form.status">
          <el-option label="待保养" :value="0"></el-option>
          <el-option label="完结" :value="1"></el-option>
          <el-option label="失败" :value="2"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="保养结果">
        <el-input
          v-model="form.maintenanceResult"
          type="textarea"
          :rows="6"
          placeholder="请输入保养结果"
          maxlength="2000"
          show-word-limit
          resize="vertical"
        />
      </el-form-item>
    </el-form>
  </FormDialog>
</template>
 
<script setup>
import { computed } from "vue";
import FormDialog from "@/components/Dialog/FormDialog.vue";
import { addMaintenance } from "@/api/equipmentManagement/upkeep";
import useFormData from "@/hooks/useFormData";
import dayjs from "dayjs";
import useUserStore from "@/store/modules/user";
import { ElMessage } from "element-plus";
 
defineOptions({
  name: "保养模态框",
});
 
const emits = defineEmits(["ok"]);
 
// 保存计划保养记录的id
const planId = ref();
const visible = ref(false);
const loading = ref(false);
const userStore = useUserStore();
 
const currentUserName = computed(() => userStore.nickName || userStore.name || "");
 
const { form, resetForm } = useFormData({
  maintenanceActuallyName: undefined, // 实际保养人
  maintenanceActuallyTime: undefined, // 实际保养日期
  maintenanceResult: undefined, // 保养结果
  status: 0, // 保养状态
});
 
const setForm = (data) => {
  // 实际保养人自动填充当前登录人,不可编辑
  form.maintenanceActuallyName = userStore.nickName || userStore.name || "";
  form.maintenanceActuallyTime =
    data.maintenanceActuallyTime
      ? dayjs(data.maintenanceActuallyTime).format("YYYY-MM-DD HH:mm:ss")
      : dayjs().format("YYYY-MM-DD HH:mm:ss");
  form.maintenanceResult = data.maintenanceResult;
  form.status = 1; // 默认状态为完结
};
 
/**
 * @desc 保存保养
 */
const sendForm = async () => {
  loading.value = true;
  try {
    // 确保实际保养人是当前登录人
    const payload = {
      ...form,
      maintenanceActuallyName: userStore.nickName || userStore.name || "",
    };
    const { code } = await addMaintenance({ id: planId.value, ...payload });
    if (code == 200) {
      ElMessage.success("保养成功");
      emits("ok");
      resetForm();
      visible.value = false;
    }
  } finally {
    loading.value = false;
  }
};
 
const handleCancel = () => {
  resetForm();
  visible.value = false;
};
 
const handleClose = () => {
  resetForm();
  visible.value = false;
};
 
const open = async (id, row) => {
  planId.value = id; // 保存计划保养记录的id
  visible.value = true;
  await nextTick();
  setForm(row);
};
 
defineExpose({
  open,
});
</script>
 
<style lang="scss" scoped></style>