|
|
|
@ -25,12 +25,15 @@
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
|
|
<el-col :span="12">
|
|
|
|
<el-form-item label="回访人" prop="callPerson">
|
|
|
|
<el-form-item label="回访人" prop="callPersonId">
|
|
|
|
<el-input v-model="form.callPerson" placeholder="请输入" maxlength="50" />
|
|
|
|
<!-- <el-input v-model="form.callPerson" placeholder="请输入" maxlength="50" /> -->
|
|
|
|
|
|
|
|
<el-select v-model="form.callPersonId" :placeholder="'选择回访人'" filterable clearable>
|
|
|
|
|
|
|
|
<el-option v-for="item in managerOptions" :key="item.id" :label="`${item.name}`" :value="item.id" />
|
|
|
|
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-row>
|
|
|
|
<el-form-item label="回访内容" prop="content">
|
|
|
|
<el-form-item label="回访情况" prop="content">
|
|
|
|
<el-input v-model="form.content" type="textarea" :rows="4" placeholder="请输入回访情况" />
|
|
|
|
<el-input v-model="form.content" type="textarea" :rows="4" placeholder="请输入回访情况" />
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
|
|
|
</el-form>
|
|
|
|
@ -48,8 +51,10 @@
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
|
|
<el-col :span="12">
|
|
|
|
<el-form-item label="巡检人" prop="inspectionPerson">
|
|
|
|
<el-form-item label="巡检人" prop="inspectionPersonId">
|
|
|
|
<el-input v-model="form.inspectionPerson" placeholder="请输入" maxlength="50" />
|
|
|
|
<el-select v-model="form.inspectionPersonId" :placeholder="'选择巡检人'" filterable clearable>
|
|
|
|
|
|
|
|
<el-option v-for="item in managerOptions" :key="item.id" :label="`${item.name}`" :value="item.id" />
|
|
|
|
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-row>
|
|
|
|
@ -104,8 +109,10 @@
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
|
|
<el-col :span="12">
|
|
|
|
<el-form-item label="培训人员" prop="trainer">
|
|
|
|
<el-form-item label="培训人员" prop="trainerId">
|
|
|
|
<el-input v-model="form.trainer" placeholder="请输入培训人员名称" maxlength="50" />
|
|
|
|
<el-select v-model="form.trainerId" :placeholder="'选择培训人员'" filterable clearable>
|
|
|
|
|
|
|
|
<el-option v-for="item in managerOptions" :key="item.id" :label="`${item.name}`" :value="item.id" />
|
|
|
|
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-row>
|
|
|
|
@ -162,11 +169,11 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="history-body">
|
|
|
|
<div class="history-body">
|
|
|
|
<template v-if="type === 'call'">
|
|
|
|
<template v-if="type === 'call'">
|
|
|
|
<div class="row"><span class="lbl">回访人:</span>{{ item.callPerson }}</div>
|
|
|
|
<div class="row"><span class="lbl">回访人:</span>{{ item.callPersonName }}</div>
|
|
|
|
<div class="row"><span class="lbl">回访情况:</span>{{ item.content || "—" }}</div>
|
|
|
|
<div class="row"><span class="lbl">回访情况:</span>{{ item.content || "—" }}</div>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template v-else-if="type === 'inspection'">
|
|
|
|
<template v-else-if="type === 'inspection'">
|
|
|
|
<div class="row"><span class="lbl">巡检人:</span>{{ item.inspectionPerson }}</div>
|
|
|
|
<div class="row"><span class="lbl">巡检人:</span>{{ item.inspectionPersonName }}</div>
|
|
|
|
<div class="row"><span class="lbl">巡检情况:</span>{{ item.content || "—" }}</div>
|
|
|
|
<div class="row"><span class="lbl">巡检情况:</span>{{ item.content || "—" }}</div>
|
|
|
|
<div class="row" v-if="getInspectionFilePath(item)">
|
|
|
|
<div class="row" v-if="getInspectionFilePath(item)">
|
|
|
|
<span class="lbl">巡检报告:</span>
|
|
|
|
<span class="lbl">巡检报告:</span>
|
|
|
|
@ -179,7 +186,19 @@
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template v-else-if="type === 'training'">
|
|
|
|
<template v-else-if="type === 'training'">
|
|
|
|
<div class="row"><span class="lbl">培训主题:</span>{{ item.topic }}</div>
|
|
|
|
<div class="row"><span class="lbl">培训主题:</span>{{ item.topic }}</div>
|
|
|
|
|
|
|
|
<el-row :gutter="16">
|
|
|
|
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="row"><span class="lbl">参与人员:</span>{{ item.participants || "—" }}人</div>
|
|
|
|
<div class="row"><span class="lbl">参与人员:</span>{{ item.participants || "—" }}人</div>
|
|
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
|
|
|
<div class="row"><span class="lbl">培训人员:</span>{{ item.trainerName || "—" }}</div>
|
|
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
|
|
|
<div class="row"><span class="lbl">培训日期:</span>{{ dayjs(item.trainingDate).format('YYYY-MM-DD') ||
|
|
|
|
|
|
|
|
"—"
|
|
|
|
|
|
|
|
}}</div>
|
|
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
</el-row>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template v-else-if="type === 'gift'">
|
|
|
|
<template v-else-if="type === 'gift'">
|
|
|
|
<div class="row"><span class="lbl">纪念品名称:</span>{{ item.name }}</div>
|
|
|
|
<div class="row"><span class="lbl">纪念品名称:</span>{{ item.name }}</div>
|
|
|
|
@ -224,6 +243,8 @@ const props = defineProps({
|
|
|
|
type: { type: String, default: "call" },
|
|
|
|
type: { type: String, default: "call" },
|
|
|
|
hospitalId: { type: [String, Number], default: "" },
|
|
|
|
hospitalId: { type: [String, Number], default: "" },
|
|
|
|
hospitalName: { type: String, default: "" },
|
|
|
|
hospitalName: { type: String, default: "" },
|
|
|
|
|
|
|
|
managerLoaded: { type: Boolean, default: false },
|
|
|
|
|
|
|
|
managerOptions: { type: Array, default: () => [] },
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
const emit = defineEmits(["update:modelValue", "saved"]);
|
|
|
|
const emit = defineEmits(["update:modelValue", "saved"]);
|
|
|
|
@ -288,17 +309,17 @@ const typeLabel = computed(() => title.value.replace("记录", ""));
|
|
|
|
|
|
|
|
|
|
|
|
const defaultForm = () => {
|
|
|
|
const defaultForm = () => {
|
|
|
|
if (props.type === "call") {
|
|
|
|
if (props.type === "call") {
|
|
|
|
return { callTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), callPerson: "", content: "" };
|
|
|
|
return { callTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), callPersonId: "", content: "" };
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (props.type === "inspection") {
|
|
|
|
if (props.type === "inspection") {
|
|
|
|
return { inspectionTime: dayjs().format("YYYY-MM-DD"), inspectionPerson: "", content: "" };
|
|
|
|
return { inspectionTime: dayjs().format("YYYY-MM-DD"), inspectionPersonId: "", content: "" };
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (props.type === "training") {
|
|
|
|
if (props.type === "training") {
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
trainingDate: dayjs().format("YYYY-MM-DD"),
|
|
|
|
trainingDate: dayjs().format("YYYY-MM-DD"),
|
|
|
|
participants: "",
|
|
|
|
participants: "",
|
|
|
|
trainingMethod: "线上",
|
|
|
|
trainingMethod: "线上",
|
|
|
|
trainer: "",
|
|
|
|
trainerId: "",
|
|
|
|
topic: "",
|
|
|
|
topic: "",
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -312,7 +333,7 @@ const buildRules = () => {
|
|
|
|
if (props.type === "call") {
|
|
|
|
if (props.type === "call") {
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
callTime: [{ required: true, message: "请选择回访时间" }],
|
|
|
|
callTime: [{ required: true, message: "请选择回访时间" }],
|
|
|
|
callPerson: [{ required: true, message: "请输入回访人" }],
|
|
|
|
callPersonId: [{ required: true, message: "请选择回访人" }],
|
|
|
|
content: [{ required: true, message: "请输入回访内容" }],
|
|
|
|
content: [{ required: true, message: "请输入回访内容" }],
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -321,7 +342,7 @@ const buildRules = () => {
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
inspectionTime: [{ required: true, message: "请选择巡检时间" }],
|
|
|
|
inspectionTime: [{ required: true, message: "请选择巡检时间" }],
|
|
|
|
inspectionPerson: [{ required: true, message: "请输入巡检人" }],
|
|
|
|
inspectionPersonId: [{ required: true, message: "请选择巡检人" }],
|
|
|
|
content: [{ required: true, message: "请输入巡检内容" }],
|
|
|
|
content: [{ required: true, message: "请输入巡检内容" }],
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -329,7 +350,7 @@ const buildRules = () => {
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
trainingDate: [{ required: true, message: "请选择培训日期" }],
|
|
|
|
trainingDate: [{ required: true, message: "请选择培训日期" }],
|
|
|
|
participants: [{ required: true, message: "请输入参与人数" }],
|
|
|
|
participants: [{ required: true, message: "请输入参与人数" }],
|
|
|
|
trainer: [{ required: true, message: "请输入培训人员" }],
|
|
|
|
trainerId: [{ required: true, message: "请选择培训人员" }],
|
|
|
|
topic: [{ required: true, message: "请输入培训主题" }],
|
|
|
|
topic: [{ required: true, message: "请输入培训主题" }],
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -389,7 +410,7 @@ const formatTime = (item) => {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (props.type === "training") {
|
|
|
|
if (props.type === "training") {
|
|
|
|
const t = item.trainingDate;
|
|
|
|
const t = item.createdAt;
|
|
|
|
return (dayjs(t).isValid() ? dayjs(t).format("YYYY-MM-DD HH:mm") : "—");
|
|
|
|
return (dayjs(t).isValid() ? dayjs(t).format("YYYY-MM-DD HH:mm") : "—");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -558,7 +579,8 @@ const viewReport = async (filePath) => {
|
|
|
|
color: #1D2129 !important;
|
|
|
|
color: #1D2129 !important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.el-input__wrapper {
|
|
|
|
.el-input__wrapper,
|
|
|
|
|
|
|
|
.el-select__wrapper {
|
|
|
|
min-height: 48px;
|
|
|
|
min-height: 48px;
|
|
|
|
border-radius: 8px 8px 8px 8px;
|
|
|
|
border-radius: 8px 8px 8px 8px;
|
|
|
|
border: 1px solid #E0E0E0;
|
|
|
|
border: 1px solid #E0E0E0;
|
|
|
|
|