<template>
|
<FormDialog
|
v-model="visible"
|
:title="id ? '编辑设备保养计划' : '新增设备保养计划'"
|
width="500px"
|
@confirm="sendForm"
|
@cancel="handleCancel"
|
@close="handleClose"
|
>
|
<el-form :model="form" label-width="100px">
|
<el-form-item label="设备名称">
|
<el-select
|
v-model="form.deviceIds"
|
multiple
|
@change="setDeviceModel"
|
placeholder="请选择设备"
|
filterable
|
default-first-option
|
:reserve-keyword="false"
|
>
|
<el-option
|
v-for="(item, index) in deviceOptions"
|
:key="index"
|
:label="item.deviceName"
|
:value="item.id"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="规格型号">
|
<el-input
|
v-model="form.deviceModel"
|
placeholder="请输入规格型号"
|
disabled
|
/>
|
</el-form-item>
|
<el-form-item label="录入人">
|
<el-select
|
v-model="form.createUser"
|
placeholder="请选择"
|
filterable
|
default-first-option
|
:reserve-keyword="false"
|
clearable
|
>
|
<el-option
|
v-for="item in userList"
|
:key="item.userId"
|
:label="item.nickName"
|
:value="item.userId"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item v-if="id" 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-date-picker
|
style="width: 100%"
|
v-model="form.maintenancePlanTime"
|
format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
type="date"
|
placeholder="请选择计划保养日期日期"
|
clearable
|
/>
|
</el-form-item>
|
<el-form-item label="保养项目">
|
<el-input
|
style="width: 100%"
|
v-model="form.maintenanceItem"
|
placeholder="请输入保养项目"
|
clearable
|
/>
|
</el-form-item>
|
</el-form>
|
</FormDialog>
|
</template>
|
|
<script setup>
|
import FormDialog from "@/components/Dialog/FormDialog.vue";
|
import {
|
addUpkeep,
|
batchAddUpkeep,
|
editUpkeep,
|
getUpkeepById,
|
} from "@/api/equipmentManagement/upkeep";
|
import { ElMessage } from "element-plus";
|
import useFormData from "@/hooks/useFormData";
|
import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
|
import { onMounted } from "vue";
|
import dayjs from "dayjs";
|
import { userListNoPage } from "@/api/system/user.js";
|
|
defineOptions({
|
name: "设备保养新增计划",
|
});
|
|
const emits = defineEmits(["ok"]);
|
|
const id = ref();
|
const visible = ref(false);
|
const loading = ref(false);
|
|
const deviceOptions = ref([]);
|
const loadDeviceName = async () => {
|
const { data } = await getDeviceLedger();
|
deviceOptions.value = data;
|
};
|
|
const { form, resetForm } = useFormData({
|
deviceIds: [], // 设备Id列表(批量多选)
|
deviceName: undefined, // 设备名称
|
deviceModel: undefined, // 规格型号
|
maintenancePlanTime: undefined, // 计划保养日期
|
createUser: undefined, // 录入人
|
maintenanceItem: undefined, // 保养项目
|
status: 0, //保修状态
|
});
|
|
const setDeviceModel = () => {
|
const selected = deviceOptions.value.filter((item) =>
|
form.deviceIds.includes(item.id)
|
);
|
form.deviceModel = selected.map((item) => item.deviceModel).join('、');
|
};
|
|
/**
|
* @desc 设置表单内容
|
* @param data 设备信息
|
*/
|
const setForm = (data) => {
|
form.deviceIds = [data.deviceLedgerId];
|
form.deviceName = data.deviceName;
|
form.deviceModel = data.deviceModel;
|
form.createUser = Number(data.createUser);
|
form.status = data.status;
|
form.maintenancePlanTime = dayjs(data.maintenancePlanTime).format(
|
"YYYY-MM-DD HH:mm:ss"
|
);
|
form.maintenanceItem = data.maintenanceItem;
|
};
|
|
// 用户列表
|
const userList = ref([]);
|
|
onMounted(() => {
|
loadDeviceName();
|
userListNoPage().then((res) => {
|
userList.value = res.data;
|
});
|
});
|
|
const openEdit = async (editId) => {
|
const { data } = await getUpkeepById(editId);
|
id.value = editId;
|
visible.value = true;
|
await nextTick();
|
setForm(data);
|
};
|
|
const sendForm = async () => {
|
loading.value = true;
|
try {
|
const common = {
|
maintenancePlanTime: form.maintenancePlanTime,
|
createUser: form.createUser,
|
maintenanceItem: form.maintenanceItem,
|
};
|
let code;
|
if (id.value) {
|
// 编辑计划(单设备)
|
const res = await editUpkeep({
|
id: unref(id),
|
deviceLedgerId: form.deviceIds[0],
|
...common,
|
status: form.status,
|
});
|
code = res.code;
|
} else if (form.deviceIds.length > 1) {
|
// 批量新增:多台设备共用保养项目
|
const res = await batchAddUpkeep({
|
deviceIds: form.deviceIds,
|
...common,
|
});
|
code = res.code;
|
} else {
|
// 单设备新增
|
const res = await addUpkeep({
|
deviceLedgerId: form.deviceIds[0],
|
...common,
|
});
|
code = res.code;
|
}
|
if (code == 200) {
|
ElMessage.success(`${id.value ? "编辑" : "新增"}计划成功`);
|
visible.value = false;
|
emits("ok");
|
}
|
} finally {
|
loading.value = false;
|
}
|
};
|
|
const handleCancel = () => {
|
resetForm();
|
visible.value = false;
|
};
|
|
const handleClose = () => {
|
resetForm();
|
visible.value = false;
|
};
|
|
const openModal = () => {
|
id.value = undefined;
|
visible.value = true;
|
};
|
|
defineExpose({
|
openModal,
|
openEdit,
|
});
|
</script>
|
|
<style lang="scss" scoped></style>
|