<template>
|
<view class="account-detail">
|
<PageHeader :title="pageTitle" @back="goBack" />
|
<up-form :model="form" label-width="110">
|
<up-form-item label="检查点" required>
|
<up-input v-model="form.checkPoint" placeholder="请输入" clearable />
|
</up-form-item>
|
<up-form-item label="检查结果" required>
|
<up-input :model-value="form.checkResult" placeholder="请选择" readonly @click="showResultSheet = true" />
|
<template #right>
|
<up-icon name="arrow-right" @click="showResultSheet = true"></up-icon>
|
</template>
|
</up-form-item>
|
<up-form-item label="检查内容" required>
|
<up-textarea v-model="form.checkContent" placeholder="请输入" auto-height />
|
</up-form-item>
|
<up-form-item label="检查说明">
|
<up-textarea v-model="form.checkDesc" placeholder="请输入" auto-height />
|
</up-form-item>
|
<up-form-item label="检查时间">
|
<up-input :model-value="form.checkTime" placeholder="请选择" readonly @click="showTimePicker = true" />
|
<template #right>
|
<up-icon name="arrow-right" @click="showTimePicker = true"></up-icon>
|
</template>
|
</up-form-item>
|
</up-form>
|
|
<FooterButtons :loading="loading" confirmText="保存" @cancel="goBack" @confirm="handleSubmit" />
|
|
<up-action-sheet
|
:show="showResultSheet"
|
title="选择检查结果"
|
:actions="resultActions"
|
@select="onSelectResult"
|
@close="showResultSheet = false"
|
/>
|
|
<up-datetime-picker
|
:show="showTimePicker"
|
mode="datetime"
|
:value="checkTimeValue"
|
@confirm="onTimeConfirm"
|
@cancel="showTimePicker = false"
|
/>
|
</view>
|
</template>
|
|
<script setup>
|
import { computed, ref } from "vue";
|
import { onLoad } from "@dcloudio/uni-app";
|
import dayjs from "dayjs";
|
import PageHeader from "@/components/PageHeader.vue";
|
import FooterButtons from "@/components/FooterButtons.vue";
|
import { addInspectionRecord, updateInspectionRecord } from "@/api/safeProduction/lineInspection";
|
|
const loading = ref(false);
|
const inspectionId = ref(null);
|
|
const form = ref({
|
id: null,
|
inspectionId: null,
|
checkPoint: "",
|
checkContent: "",
|
checkResult: "正常",
|
checkDesc: "",
|
checkTime: "",
|
});
|
|
const showResultSheet = ref(false);
|
const showTimePicker = ref(false);
|
|
const resultActions = [
|
{ name: "正常", value: "正常" },
|
{ name: "异常", value: "异常" },
|
];
|
|
const pageTitle = computed(() => (form.value.id ? "编辑巡检记录" : "新增巡检记录"));
|
|
const checkTimeValue = computed(() => {
|
if (!form.value.checkTime) return Date.now();
|
const ts = dayjs(form.value.checkTime).valueOf();
|
return Number.isFinite(ts) ? ts : Date.now();
|
});
|
|
const goBack = () => {
|
uni.navigateBack();
|
};
|
|
const onSelectResult = action => {
|
form.value.checkResult = action.value;
|
showResultSheet.value = false;
|
};
|
|
const onTimeConfirm = e => {
|
const ts = e?.value;
|
form.value.checkTime = dayjs(ts).format("YYYY-MM-DD HH:mm:ss");
|
showTimePicker.value = false;
|
};
|
|
const handleSubmit = () => {
|
const checkPoint = String(form.value.checkPoint || "").trim();
|
if (!checkPoint) {
|
uni.showToast({ title: "请输入检查点", icon: "none" });
|
return;
|
}
|
const checkContent = String(form.value.checkContent || "").trim();
|
if (!checkContent) {
|
uni.showToast({ title: "请输入检查内容", icon: "none" });
|
return;
|
}
|
const checkResult = String(form.value.checkResult || "").trim();
|
if (!checkResult) {
|
uni.showToast({ title: "请选择检查结果", icon: "none" });
|
return;
|
}
|
|
const payload = {
|
...form.value,
|
inspectionId: inspectionId.value,
|
checkPoint,
|
checkContent,
|
checkResult,
|
checkDesc: String(form.value.checkDesc || "").trim(),
|
checkTime: form.value.checkTime || "",
|
};
|
|
loading.value = true;
|
const api = payload.id ? updateInspectionRecord : addInspectionRecord;
|
api(payload)
|
.then(() => {
|
uni.showToast({ title: "保存成功", icon: "success" });
|
uni.$emit("lineInspection:recordsRefresh");
|
goBack();
|
})
|
.catch(() => {
|
uni.showToast({ title: "保存失败", icon: "none" });
|
})
|
.finally(() => {
|
loading.value = false;
|
});
|
};
|
|
onLoad(options => {
|
if (options?.data) {
|
try {
|
const obj = JSON.parse(decodeURIComponent(options.data));
|
inspectionId.value = obj.inspectionId;
|
if (obj?.row) {
|
form.value = { ...form.value, ...(obj.row || {}) };
|
}
|
} catch (e) {}
|
}
|
if (!form.value.checkTime) form.value.checkTime = dayjs(Date.now()).format("YYYY-MM-DD HH:mm:ss");
|
});
|
</script>
|
|
<style scoped lang="scss">
|
@import "@/static/scss/form-common.scss";
|
</style>
|