系统设置-默认存储到localStorage

main
ysn 3 weeks ago
parent ee7e4742d1
commit 2b2f02be72
  1. 62
      src/layout/components/SystemSettingDialog.vue
  2. 2
      src/views/cases/components/UltrasoundReportPrint.vue
  3. 550
      src/views/cases/detail.vue
  4. 18
      src/views/cases/index.vue

@ -112,6 +112,8 @@
<script>
import ESignatureDialog from "./ESignatureDialog";
//
const SYSTEM_SETTINGS_KEY = "systemSettings";
export default {
name: "SystemSettingDialog",
components: {
@ -123,6 +125,13 @@ export default {
this.activeTab = "basic";
}
},
//
basicForm: {
deep: true,
handler() {
this.saveSettings();
},
},
//
audioForm: {
deep: true,
@ -139,6 +148,7 @@ export default {
duration: 5000,
});
}
this.saveSettings();
},
},
//
@ -146,8 +156,13 @@ export default {
if (oldVal !== undefined && newVal !== oldVal) {
this.$message.success('设置成功');
}
this.saveSettings();
},
},
created() {
//
this.loadSettings();
},
data() {
return {
visible: false,
@ -183,6 +198,41 @@ export default {
},
handleSignatureSubmit(signatureData) {
this.otherForm.signature = signatureData;
this.saveSettings();
},
//
loadSettings() {
try {
const savedSettings = localStorage.getItem(SYSTEM_SETTINGS_KEY);
if (savedSettings) {
const settings = JSON.parse(savedSettings);
//
if (settings.basicForm) {
this.basicForm = { ...this.basicForm, ...settings.basicForm };
}
if (settings.audioForm) {
this.audioForm = { ...this.audioForm, ...settings.audioForm };
}
if (settings.otherForm) {
this.otherForm = { ...this.otherForm, ...settings.otherForm };
}
}
} catch (e) {
console.error("加载系统设置失败:", e);
}
},
//
saveSettings() {
try {
const settings = {
basicForm: { ...this.basicForm },
audioForm: { ...this.audioForm },
otherForm: { ...this.otherForm },
};
localStorage.setItem(SYSTEM_SETTINGS_KEY, JSON.stringify(settings));
} catch (e) {
console.error("保存系统设置失败:", e);
}
},
//
clearCache() {
@ -191,8 +241,14 @@ export default {
cancelButtonText: "取消",
type: "warning",
}).then(() => {
// localStorage
// localStorage.clear();
// localStorage
const systemSettings = localStorage.getItem(SYSTEM_SETTINGS_KEY);
// localStorage
localStorage.clear();
//
if (systemSettings) {
localStorage.setItem(SYSTEM_SETTINGS_KEY, systemSettings);
}
this.$message.success('缓存清除成功');
}).catch(() => {
//
@ -220,6 +276,8 @@ export default {
this.otherForm = {
skipEvaluation: false,
};
//
localStorage.removeItem(SYSTEM_SETTINGS_KEY);
this.$message.success("重置成功");
});
},

@ -115,7 +115,7 @@
<b>青岛海信医疗设备股份有限公司</b>
</td>
<td valign="bottom" style="font-size: 12pt">
<b>诊断医师:</b> {{ $store.state.user.nickName || "未知" }}
<b>诊断医师:</b> {{ $store.state.user.userInfo.nickName || "未知" }}
</td>
<td valign="bottom" style="font-size: 12pt">
<b>检查日期:</b> {{ formatDate(new Date()) }}

@ -5,27 +5,37 @@
<el-col :span="3">
<el-card class="left-card">
<div slot="header" class="card-header">
<span>影像文件</span>
<span>超声影像</span>
<el-button
type="text"
icon="el-icon-plus"
@click="handleOpenFile"
:disabled="caseStatus === 'submitted'"
v-if="form.status == 1 || form.status == 5"
>
新增
</el-button>
</div>
<el-table
:data="imgList"
:data="form.attachment"
:show-header="false"
height="calc(100vh - 235px)"
>
<el-table-column align="center">
<template slot-scope="scope">
<el-image
:src="scope.row.url"
:src="
$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS +
scope.row.bucket_compress +
'/' +
scope.row.object_compress
"
fit="cover"
:preview-src-list="[scope.row.url]"
:preview-src-list="[
$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS +
scope.row.bucket_compress +
'/' +
scope.row.object_compress,
]"
style="width: 100px; height: 80px"
/>
<div class="img-status">上传完成</div>
@ -33,7 +43,7 @@
type="text"
icon="el-icon-delete"
@click="handleDeleteImg(scope.row)"
:disabled="caseStatus === 'submitted'"
v-if="form.status == 1 || form.status == 5"
>
删除
</el-button>
@ -56,13 +66,23 @@
<div slot="header" class="card-header">
<span class="status-text">
病例状态
{{ statusList.find((i) => i.value == form.status).label || "-" }}
{{
form.status
? statusList.find((i) => i.value == form.status).label || ""
: ""
}}
</span>
<div class="btn-group">
<el-button
type="text"
icon="el-icon-check"
@click="handleSave"
@click="
handleSave(
'您确定暂存病例吗,暂存会保存您当前的内容修改',
{ ...form, submit_type: 0 },
'暂存成功'
)
"
v-if="form.status == 1 || form.status == 5"
>
暂存
@ -70,7 +90,13 @@
<el-button
type="text"
icon="el-icon-check"
@click="handleSubmit"
@click="
handleSave(
'您确定提交病例吗,提交成功之后不可再编辑',
{ ...form, submit_type: 1 },
'提交成功'
)
"
v-if="form.status == 1 || form.status == 5"
>
提交
@ -94,18 +120,30 @@
<el-form
ref="form"
:model="form"
label-width="70px"
label-width="90px"
class="report-form"
>
<el-row :gutter="20">
<el-col :span="21" style="text-align: center">
<el-form-item> 远程超声检查报告 </el-form-item>
<el-row :gutter="20" style="border-bottom: 2px solid #44931e">
<el-col :span="20">
<div
style="
text-align: center;
vertical-align: middle;
color: #606266;
box-sizing: border-box;
font-weight: 700;
"
>
远程超声检查报告
</div>
</el-col>
<el-col :span="3">
<el-col :span="4">
<el-form-item label="检查号">
{{ form.id }}
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="患者姓名" prop="patient_name">
{{ form.patient_name }}
@ -114,8 +152,10 @@
<el-col :span="3">
<el-form-item label="性别" prop="patient_sex">
{{
patientSexList.find((i) => i.value == form.patient_sex)
.label || "-"
form.patient_sex
? patientSexList.find((i) => i.value == form.patient_sex)
.label || ""
: ""
}}
</el-form-item>
</el-col>
@ -127,9 +167,11 @@
>
{{ form.patient_age }}
{{
patientAgeTypeList.find(
form.patient_age_type
? patientAgeTypeList.find(
(i) => i.value == form.patient_age_type
).label || "-"
).label || ""
: ""
}}
</el-form-item>
</el-col>
@ -168,23 +210,50 @@
{{ form.equipments.map((i) => i.name).join("|") }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-col :span="24" style="border-bottom: 2px solid #44931e">
<el-form-item label="检查部位" prop="positions">
{{
(form.positions.length
form.positions.length
? form.positions
.map((item) => item.level2.name)
.join("|") + "|"
: "") + form.position_text
.join("|") +
(form.position_text ? "|" + form.position_text : "")
: form.position_text
}}
</el-form-item>
</el-col>
<el-col :span="24">
<el-col
:span="6"
v-for="(item, idx) in form.attachment"
:key="idx"
v-show="item.showInDoc == 1"
style="margin-top: 10px"
>
<el-form-item>
<el-image
:src="
$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS +
item.bucket_compress +
'/' +
item.object_compress
"
fit="cover"
:preview-src-list="[
$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS +
item.bucket_compress +
'/' +
item.object_compress,
]"
style="width: 100px; height: 80px"
/>
</el-form-item>
</el-col>
<el-col :span="24" style="">
<el-form-item label="超声所见">
<el-input
v-model="form.text_comment"
type="textarea"
:rows="8"
:rows="9"
:disabled="form.status != 1 && form.status != 5"
/>
</el-form-item>
@ -194,7 +263,7 @@
<el-input
v-model="form.text_conclusion"
type="textarea"
:rows="6"
:rows="4"
:disabled="form.status != 1 && form.status != 5"
/>
</el-form-item>
@ -212,7 +281,7 @@
<el-input
v-model="item.user_comment"
type="textarea"
:rows="4"
:rows="3"
:disabled="form.status != 1 && form.status != 5"
/>
<div class="expert-btns">
@ -227,6 +296,7 @@
type="text"
icon="el-icon-check"
:disabled="form.status != 1 && form.status != 5"
v-if="item.confirm == 0"
>
一键同意
</el-button>
@ -286,7 +356,6 @@
</el-form>
</el-card>
</el-col>
<!-- 右侧部位模板 + 片语 -->
<el-col :span="4">
<el-card class="right-card">
@ -297,23 +366,31 @@
type="text"
icon="el-icon-plus"
@click="openTemplateDialog({})"
v-if="form.status == 1 || form.status == 5"
:disabled="form.status != 1 && form.status != 5"
>
新增
</el-button>
<el-button
type="text"
icon="el-icon-delete"
@click="deleteTemplate"
v-if="form.status == 1 || form.status == 5"
@click="deleteTemplate(templateForm)"
:disabled="
form.status != 1 &&
form.status != 5 &&
templateForm.id != undefined
"
>
删除
</el-button>
<el-button
type="text"
icon="el-icon-edit"
@click="openTemplateDialog(form)"
v-if="form.status == 1 || form.status == 5"
@click="openTemplateDialog(templateForm)"
:disabled="
form.status != 1 &&
form.status != 5 &&
templateForm.id != undefined
"
>
编辑
</el-button>
@ -328,6 +405,7 @@
v-model="templateForm.id"
style="width: 100%"
@change="changeTemplate"
:disabled="form.status != 1 && form.status != 5"
>
<el-option
v-for="item in templateList"
@ -337,53 +415,57 @@
/>
</el-select>
</el-form-item>
<el-form-item label="超声所见">
<el-input
v-model="templateForm.comment"
type="textarea"
readonly
:rows="6"
:rows="13"
placeholder="请输入超声所见"
/>
<el-button
v-if="form.status == 1 || form.status == 5"
type="text"
icon="el-icon-check"
@click="handleComment"
style="float: right; margin-top: 6px"
style="float: right"
:disabled="form.status != 1 && form.status != 5"
>
应用
</el-button>
</el-form-item>
<el-form-item label="结论" style="margin-top: 20px">
<el-form-item label="检查结论">
<el-input
v-model="templateForm.conclusion"
type="textarea"
readonly
:rows="6"
:rows="4"
placeholder="请输入检查结论"
/>
<el-button
type="text"
icon="el-icon-check"
@click="handleCnclusion"
style="float: right; margin-top: 6px"
v-if="form.status == 1 || form.status == 5"
style="float: right"
:disabled="form.status != 1 && form.status != 5"
>
应用
</el-button>
</el-form-item>
</el-form>
</el-tab-pane>
<!-- 片语功能改造 -->
<el-tab-pane label="片语" name="phrase">
<div class="phrase-buttons">
<el-button
type="text"
icon="el-icon-plus"
@click="openPhraseDialog({})"
v-if="form.status == 1 || form.status == 5"
@click="
handleAddPhrase({
id: 0,
phrase: '',
})
"
:disabled="form.status != 1 && form.status != 5"
>
新增
</el-button>
@ -392,25 +474,37 @@
:data="phraseList"
style="width: 100%"
:show-header="false"
height="calc(100vh - 265px)"
height="calc(100vh - 262px)"
>
<el-table-column prop="phrase" label="内容" />
<el-table-column label="操作" width="80">
<el-table-column
prop="phrase"
label="内容"
show-overflow-tooltip
/>
<el-table-column label="操作" width="50">
<template slot-scope="scope">
<el-button
type="text"
icon="el-icon-edit"
@click="openPhraseDialog(scope.row)"
v-if="form.status == 1 || form.status == 5"
>
</el-button>
<el-button
type="text"
icon="el-icon-delete"
@click="deletePhrase(scope.row)"
v-if="form.status == 1 || form.status == 5"
<el-dropdown
:disabled="form.status != 1 && form.status != 5"
@command="
(command) => handlePhraseCommand(command, scope.row)
"
>
</el-button>
<el-button type="text" icon="el-icon-more" />
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="edit">
修改
</el-dropdown-item>
<el-dropdown-item command="delete">
删除
</el-dropdown-item>
<el-dropdown-item command="apply">
应用超声所见
</el-dropdown-item>
<el-dropdown-item command="applyConclusion">
应用检查结论
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
@ -423,78 +517,97 @@
<!-- 模板弹窗新增 + 编辑 共用 -->
<el-dialog
:title="dialogTitle"
:visible.sync="templateDialogVisible"
:visible.sync="templateDialogOpen"
width="33%"
>
<el-form :model="newTemplateForm" label-width="60px">
<el-form-item label="部位">
<el-select v-model="newTemplateForm.type" style="width: 100%">
<el-option label="肝脏-腹部" value="abdomen-liver" />
<el-option label="心脏" value="heart" />
<el-option label="肾脏" value="kidney" />
<el-option label="妇科" value="gynecology" />
<el-form
:model="newTemplateForm"
:rules="templateFormRules"
ref="templateFormRef"
label-width="80px"
>
<el-form-item label="检查部位" prop="part_id">
<el-select
v-model="newTemplateForm.part_id"
style="width: 100%"
placeholder="请选择检查部位"
filterable
clearable
pop
>
<el-option-group v-for="group in partIdList" :key="group.id">
<el-option
v-for="item in group.child"
:key="item.id"
:label="item.name"
:value="item.id"
>
<span style="float: left">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">
{{ group.name }}
</span>
</el-option>
</el-option-group>
</el-select>
</el-form-item>
<el-form-item label="标题">
<el-form-item label="标题" prop="name">
<el-input
v-model="newTemplateForm.title"
v-model="newTemplateForm.name"
placeholder="请输入模板标题"
/>
</el-form-item>
<el-form-item label="所见">
<el-form-item label="超声所见">
<el-input
type="textarea"
:rows="6"
v-model="newTemplateForm.text_comment"
placeholder="请输入超声所见内容"
v-model="newTemplateForm.comment"
placeholder="请输入超声所见"
/>
</el-form-item>
<el-form-item label="结论">
<el-form-item label="检查结论">
<el-input
type="textarea"
:rows="6"
v-model="newTemplateForm.conclusion"
placeholder="请输入检查结论内容"
placeholder="请输入检查结论"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="templateDialogVisible = false">取消</el-button>
<el-button type="primary" @click="saveTemplate">确认保存</el-button>
<el-button type="primary" @click="saveTemplate"> </el-button>
<el-button @click="templateDialogOpen = false"> </el-button>
</div>
</el-dialog>
<!-- 片语弹窗创建 + 更新 共用 -->
<el-dialog
:title="phraseDialogTitle"
:visible.sync="phraseDialogVisible"
width="33%"
<el-dialog :title="phraseTitle" :visible.sync="phraseOpen" width="33%">
<el-form
ref="phraseFormRef"
:model="phraseForm"
:rules="phraseRules"
label-width="60px"
>
<el-form :model="newPhraseForm" label-width="60px">
<el-form-item label="内容">
<el-form-item label="内容" prop="phrase">
<el-input
type="textarea"
:rows="10"
v-model="newPhraseForm.phrase"
v-model="phraseForm.phrase"
placeholder="请输入片语内容"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="phraseDialogVisible = false">取消</el-button>
<el-button type="primary" @click="savePhrase">
{{ phraseType === "add" ? "创建" : "更新" }}
</el-button>
<el-button type="primary" @click="submitPhraseForm"> </el-button>
<el-button @click="phraseOpen = false"> </el-button>
</div>
</el-dialog>
<!-- 引入打印弹窗组件 -->
<UltrasoundReportPrint
<!-- <UltrasoundReportPrint
:visible.sync="printDialogVisible"
:form="form"
:img-list="imgList"
:gender-list="genderList"
:age-unit-list="ageUnitList"
/>
:img-list="form.attachment"
:gender-list="patientSexList"
:age-unit-list="patientAgeTypeList"
/> -->
<!-- 分享弹窗 - 选择联系人 -->
<CreateGroupDialog
@ -523,10 +636,11 @@ import {
postReportTplEdit,
postReportTplDelete,
postReportTplCount,
postReportPhraseList,
postReportPhrase,
postReportPhraseEdit,
postReportPhraseDelete,
postReportPhraseCount,
postReportTemplateTree,
} from "@/api/cases/index.js";
//
import UltrasoundReportPrint from "./components/UltrasoundReportPrint.vue";
@ -539,13 +653,6 @@ export default {
},
data() {
return {
//
imgList: [
{
id: Date.now(),
url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
},
],
//
printDialogVisible: false,
// ================== ==================
@ -565,7 +672,7 @@ export default {
//
equipmentsList: [],
//
templatesList: [],
partIdList: [],
//
examRoomsList: [],
//
@ -582,7 +689,7 @@ export default {
// ====================== ======================
dialogTitle: "模板创建",
templateDialogVisible: false,
templateDialogOpen: false,
templateList: [],
templateForm: {},
newTemplateForm: {
@ -592,23 +699,30 @@ export default {
text_comment: "",
conclusion: "",
},
templateFormRules: {
part_id: [
{ required: true, message: "请选择检查部位", trigger: "change" },
],
name: [{ required: true, message: "请输入模板标题", trigger: "blur" }],
},
// ====================== ======================
phraseDialogTitle: "片语创建",
phraseDialogVisible: false,
phraseTitle: "新增片语",
phraseOpen: false,
phraseList: [],
newPhraseForm: {
id: null,
phraseForm: {
id: 0,
phrase: "",
},
phraseRules: {
phrase: [
{ required: true, message: "请输入片语内容", trigger: "blur" },
],
},
};
},
created() {
const id = this.$route.params && this.$route.params.id;
this.getReportInfo(id);
this.getReviewers();
this.loadTemplateList();
this.loadPhraseList();
},
methods: {
//
@ -620,13 +734,15 @@ export default {
for (let file of files) {
if (!file.type.startsWith("image/")) continue;
const url = URL.createObjectURL(file);
this.imgList.push({ id: Date.now(), url });
this.form.attachment.push({ id: Date.now(), url });
}
e.target.value = "";
},
handleDeleteImg(row) {
this.$confirm("确定删除该影像?").then(() => {
this.imgList = this.imgList.filter((i) => i.id !== row.id);
this.form.attachment = this.form.attachment.filter(
(i) => i.id !== row.id
);
this.$message.success("删除成功");
});
},
@ -638,6 +754,9 @@ export default {
}).then((res) => {
if (res.code === 200) {
this.form = res.data;
this.getReviewers();
this.loadTemplateList();
this.loadPhraseList();
}
});
}
@ -650,14 +769,27 @@ export default {
}
});
},
//
handleSave(title, form, msg) {
this.$modal
.confirm(title)
.then(function () {
form.exam_rooms = form.exam_rooms.map((item) => item.id);
form.report_id = form.id;
return postReportEdit(form);
})
.then(() => {
this.handleClose();
this.$modal.msgSuccess(msg);
})
.catch(() => {});
},
//
handlePrint() {
this.printDialogVisible = true; //
},
handleClose() {
this.$confirm("未保存内容将丢失,确定退出?").then(() => {
this.$router.back();
});
},
handleShare() {
this.shareItem = {
@ -675,19 +807,24 @@ export default {
console.log("分享病例:", this.shareItem, "给:", shareTarget);
}
this.shareDialogVisible = false;
ss;
this.shareItem = null;
},
//
async loadTemplateList() {
try {
if (this.form.positions.length !== 0) {
const response = await postReportTplList({
keyword: "",
part_ids: this.form.positions.map((item) => item.level2.id),
part_ids: this.form.positions.map(
(item) => item.level2.template_id
),
});
this.templateList = response.data || [];
if (this.templateList.length > 0) {
this.templateForm = { ...this.templateList[0] };
} else {
this.templateForm = {};
}
}
} catch (error) {
console.error("加载模板列表失败:", error);
@ -705,61 +842,56 @@ export default {
},
// -/
openTemplateDialog(form) {
this.newTemplateForm = { ...form };
this.templateDialogVisible = true;
this.newTemplateForm = { ...form, tpl_id: form.id };
this.templateDialogOpen = true;
this.loadTemplateTree();
},
//
loadTemplateTree() {
postReportTemplateTree({
owner_id: 0,
})
.then((response) => {
if (response.code === 200 && response.data) {
this.partIdList = response.data;
}
})
.catch((error) => {
console.error("加载检查部位模板树失败:", error);
});
},
// -
async saveTemplate() {
if (!this.newTemplateForm.title) {
this.$message.warning("请输入模板标题");
return;
}
try {
if (this.newTemplateForm.id === null) {
//
const response = await postReportTplCreate(this.newTemplateForm);
const newTemplate = response.data;
this.templateList.unshift(newTemplate);
this.templateForm = { ...newTemplate };
this.$message.success("创建成功");
this.$refs["templateFormRef"].validate((valid) => {
if (valid) {
if (this.newTemplateForm.id != undefined) {
postReportTplEdit(this.newTemplateForm).then(() => {
this.$modal.msgSuccess("修改部位模板成功");
this.templateDialogOpen = false;
this.loadTemplateList();
});
} else {
//
await postReportTplEdit(this.newTemplateForm);
const index = this.templateList.findIndex(
(t) => t.id === this.newTemplateForm.id
);
if (index > -1) {
this.templateList.splice(index, 1, { ...this.newTemplateForm });
this.templateForm = { ...this.newTemplateForm };
}
this.$message.success("修改成功");
postReportTplCreate(this.newTemplateForm).then(() => {
this.$modal.msgSuccess("新增部位模板成功");
this.templateDialogOpen = false;
this.loadTemplateList();
});
}
this.templateDialogVisible = false;
} catch (error) {
console.error("保存模板失败:", error);
this.$message.error("保存模板失败");
}
});
},
// -
deleteTemplate() {
if (this.templateList.length <= 1) {
this.$message.warning("至少保留一个模板");
return;
}
this.$confirm("确定删除当前模板?").then(async () => {
try {
await postReportTplDelete({ id: this.templateForm.id });
const index = this.templateList.findIndex(
(t) => t.id === this.templateForm.id
);
this.templateList.splice(index, 1);
this.templateForm = { ...this.templateList[0] };
this.$message.success("删除成功");
} catch (error) {
console.error("删除模板失败:", error);
this.$message.error("删除模板失败");
}
});
deleteTemplate(form) {
this.$modal
.confirm("确定删除当前模板")
.then(function () {
return postReportTplDelete({ tpl_id: form.id });
})
.then(() => {
this.loadTemplateList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
// -
handleComment() {
@ -776,51 +908,53 @@ export default {
//
async loadPhraseList() {
try {
const response = await postReportPhraseList({});
const response = await postReportPhrase({});
this.phraseList = response.data || [];
} catch (error) {
console.error("加载片语列表失败:", error);
this.$message.error("加载片语列表失败");
}
},
// -/
openPhraseDialog(row) {
this.phraseDialogTitle = row.id === null ? "片语创建" : "片语更新";
this.newPhraseForm = { ...row };
this.phraseDialogVisible = true;
},
//
async savePhrase() {
if (!this.newPhraseForm.phrase) {
this.$message.warning("请输入片语内容");
handlePhraseCommand(command, row) {
if (command === "edit") {
this.handleAddPhrase(row);
return;
}
try {
if (this.phraseType === "add") {
//
const response = await postReportPhraseEdit(this.newPhraseForm);
const newPhrase = response.data;
this.phraseList.unshift(newPhrase);
this.$message.success("创建成功");
} else {
//
await postReportPhraseEdit(this.newPhraseForm);
const index = this.phraseList.findIndex(
(p) => p.phrase_id === this.newPhraseForm.phrase_id
);
if (index > -1) {
this.phraseList.splice(index, 1, { ...this.newPhraseForm });
if (command === "delete") {
this.handleDeletePhrase(row);
return;
}
this.$message.success("更新成功");
if (command === "apply") {
this.applyPhrase(row);
return;
}
this.phraseDialogVisible = false;
} catch (error) {
console.error("保存片语失败:", error);
this.$message.error("保存片语失败");
if (command === "applyConclusion") {
this.applyConclusion(row);
return;
}
},
handleAddPhrase(row) {
this.phraseTitle = row.id === 0 ? "新增片语" : "修改片语";
this.phraseForm = { ...row, phrase_id: row.id };
delete this.phraseForm.id;
this.phraseOpen = true;
},
//
async submitPhraseForm() {
this.$refs["phraseFormRef"].validate((valid) => {
if (valid) {
postReportPhraseEdit(this.phraseForm).then(() => {
this.$modal.msgSuccess(
this.phraseForm.phrase_id === 0 ? "新增片语成功" : "修改片语成功"
);
this.phraseOpen = false;
this.loadPhraseList();
});
}
});
},
//
deletePhrase(row) {
handleDeletePhrase(row) {
this.$modal
.confirm("是否确认删除当前片语?")
.then(function () {
@ -832,16 +966,18 @@ export default {
})
.catch(() => {});
},
//
handleSave() {
this.$confirm("您确定暂存病例吗?").then(() => {
this.$message.success("暂存成功");
applyPhrase(row) {
postReportPhraseCount({ phrase_id: row.id }).then((res) => {
if (res.data) {
this.form.text_comment += row.phrase;
}
});
},
handleSubmit() {
this.$confirm("提交后不可修改,确定提交?").then(() => {
this.$message.success("提交成功");
applyConclusion(row) {
postReportPhraseCount({ phrase_id: row.id }).then((res) => {
if (res.data) {
this.form.text_conclusion += row.phrase;
}
});
},
},
@ -851,7 +987,7 @@ export default {
<style lang="scss" scoped>
/* 内部滚动区域高度自适应 */
.report-form {
height: calc(100vh - 218px);
height: calc(100vh - 235px);
overflow-y: auto;
overflow-x: hidden;
width: 100%;
@ -859,7 +995,7 @@ export default {
}
.template-form {
height: calc(100vh - 265px);
height: calc(100vh - 260px);
overflow-y: auto;
overflow-x: hidden;
}

@ -287,10 +287,10 @@
>
<template slot-scope="scope">
{{
(scope.row.positions.length
scope.row.positions.length
? scope.row.positions.map((item) => item.level2.name).join("|") +
"|"
: "") + scope.row.position_text
(scope.row.position_text ? "|" + scope.row.position_text : "")
: scope.row.position_text
}}
</template>
</el-table-column>
@ -1077,7 +1077,11 @@ export default {
handleTimeSectionUpdate(row) {
this.reset();
postReportInfo({ report_id: row.id }).then((response) => {
if (response.code === 200 && response.data && response.data.exam_rooms.length > 0) {
if (
response.code === 200 &&
response.data &&
response.data.exam_rooms.length > 0
) {
this.fetchTimeSlots(response.data.exam_rooms[0].id);
}
this.form = response.data || {};
@ -1120,9 +1124,11 @@ export default {
this.$modal.msgSuccess("新增成功");
this.open = false;
if (response.data && response.data.report_id) {
postReportInfo({ report_id: response.data.report_id }).then((response) => {
postReportInfo({ report_id: response.data.report_id }).then(
(response) => {
this.handleView(response.data);
});
}
);
} else {
this.getList();
}

Loading…
Cancel
Save