huminmin
3 天以前 f7bd6321d824a92da49b1b35aa729a29502f19bc
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
138
139
140
141
142
143
144
145
146
147
148
149
150
<template>
  <FormDialog
    v-model="visible"
    :title="'设备保养'"
    width="500px"
    @confirm="sendForm"
    @cancel="handleCancel"
    @close="handleClose"
  >
    <el-form :model="form" label-width="100px">
      <el-form-item label="实际保养人">
        <el-input
          v-model="form.maintenanceActuallyName"
          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"
          placeholder="请输入保养结果"
          type="text" />
      </el-form-item>
      <el-form-item label="设备备件">
        <el-select v-model="form.sparePartsIds" :loading="loadingSparePartOptions" placeholder="请选择设备备件" multiple filterable>
          <el-option
              v-for="item in sparePartOptions"
              :key="item.id"
              :label="item.name"
              :value="item.id"
          />
        </el-select>
      </el-form-item>
    </el-form>
  </FormDialog>
</template>
 
<script setup>
import FormDialog from "@/components/Dialog/FormDialog.vue";
import { addMaintenance } from "@/api/equipmentManagement/upkeep";
import {getSparePartsOptions} from "@/api/equipmentManagement/spareParts.js";
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 { form, resetForm } = useFormData({
  maintenanceActuallyName: undefined, // 实际保养人
  maintenanceActuallyTime: undefined, // 实际保养日期
  maintenanceResult: undefined, // 保养结果
  status: 0, // 保养状态
  sparePartsIds: undefined,
});
const sparePartOptions = ref([])
const loadingSparePartOptions = ref(true)
 
const setForm = (data) => {
  form.maintenanceActuallyName =
    data.maintenanceActuallyName ?? userStore.nickName;
  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; // 默认状态为完结
  form.sparePartsIds = data.sparePartsIds;
};
 
const fetchSparePartOptions = (deviceLedgerId) => {
  loadingSparePartOptions.value = true;
  getSparePartsOptions({ deviceLedgerId: deviceLedgerId }).then((res) => {
    if (res.code == 200) {
      sparePartOptions.value = res.data || [];
    }
  }).finally(() => {
    loadingSparePartOptions.value = false;
  })
}
 
/**
 * @desc 保存保养
 */
const sendForm = async () => {
  loading.value = true;
  try {
    const { code } = await addMaintenance({ id: planId.value, ...form });
    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);
  fetchSparePartOptions(row.deviceLedgerId)
};
 
defineExpose({
  open,
});
</script>
 
<style lang="scss" scoped></style>