Compare commits

...

4 Commits

@ -0,0 +1,31 @@
import { http } from "@/utils/http";
/** 新建病历基本信息 */
export const createMedicalRecBaseInfo = (data?: object) => {
return http.request(
"post",
"/virtual-patient-manage/medicalRecManage/createMedicalRecBaseInfo",
{
data
}
);
};
/** 修改病历状态,上线或下线病历 */
export const updateMedicalStatus = (data?: object) => {
return http.request(
"post",
"/virtual-patient-manage/medicalRecManage/updateMedicalStatus",
{
data
}
);
};
/** 查询虚拟病人电子病历信息 */
export const queryMedicalRecBaseInfo = (data?: object) => {
return http.request(
"get",
"/virtual-patient-manage/medicalRecManage/queryMedicalRecBaseInfo",
{
params: data
}
);
};

@ -218,3 +218,21 @@ export const deleteProcess = (data?: object) => {
params: data
});
};
/**
*/
export const queryQaRecordForFeedback = (data?: object) => {
return http.request(
"get",
"/virtual-patient/feedback/queryQaRecordForFeedback",
{
params: data
}
);
};
/**
*/
export const saveFeedback = (data?: object) => {
return http.request("post", "/virtual-patient/feedback/saveFeedback", {
data
});
};

@ -0,0 +1,39 @@
import { http } from "@/utils/http";
/** 查询数字人列表 */
export const queryPageList = (data?: object) => {
return http.request("get", "/virtual-patient-manage/humanManage/list", {
params: data
});
};
/** 新增数字人 */
export const createHuman = (data?: object) => {
return http.request(
"post",
"/virtual-patient-manage/humanManage/createHuman",
{
data
}
);
};
/** 修改数字人 */
export const updateHuman = (data?: object) => {
return http.request(
"post",
"/virtual-patient-manage/humanManage/updateHuman",
{
data
}
);
};
// 删除数字人;
export const deleteHuman = (data?: object) => {
return http.request(
"delete",
"/virtual-patient-manage/humanManage/deleteHuman",
{
params: data
}
);
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 959 B

@ -0,0 +1,13 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="tishi" clip-path="url(#clip0_2113_4143)">
<path id="Vector" d="M7 0C3.1 0 0 3.1 0 7C0 10.9 3.1 14 7 14C10.9 14 14 10.9 14 7C14 3.1 10.9 0 7 0Z" fill="#00975E"/>
<g id="&#229;&#175;&#185;&#229;&#143;&#183; 2">
<path id="Vector_2" d="M4.14564 6.15296C3.8463 5.85206 3.36038 5.85226 3.06059 6.15282L3.06046 6.15296C2.76162 6.45335 2.76162 6.9404 3.06046 7.24079L3.06052 7.24085L5.52864 9.71898L5.52886 9.71919L9.95367 4.40062L9.84739 4.29477L9.84736 4.29481C9.8473 4.29486 9.84725 4.29492 9.8472 4.29497L6.07117 8.08619L4.14564 6.15296ZM4.14564 6.15296L4.03942 6.25863L4.14557 6.1529L4.14564 6.15296Z" fill="white" stroke="white" stroke-width="0.3"/>
</g>
</g>
<defs>
<clipPath id="clip0_2113_4143">
<rect width="14" height="14" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 871 B

@ -0,0 +1,10 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="tishi" clip-path="url(#clip0_2113_4249)">
<path id="Vector" d="M7 0C3.1 0 0 3.1 0 7C0 10.9 3.1 14 7 14C10.9 14 14 10.9 14 7C14 3.1 10.9 0 7 0ZM7.8 11.2C7.8 11.7 7.5 12 7 12C6.5 12 6.2 11.7 6.2 11.2V6.6C6.2 6.1 6.5 5.8 7 5.8C7.5 5.8 7.8 6.1 7.8 6.6V11.2ZM8.2 3.6C8.2 4.3 7.6 4.8 7 4.8C6.4 4.8 5.8 4.3 5.8 3.6C5.8 2.9 6.3 2.3 7 2.3C7.7 2.3 8.2 2.9 8.2 3.6Z" fill="#FF3429"/>
</g>
<defs>
<clipPath id="clip0_2113_4249">
<rect width="14" height="14" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 591 B

@ -0,0 +1,11 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="heli-xuanzhong" clip-path="url(#clip0_542_564)">
<path id="Vector" d="M10 18.3337C12.3012 18.3337 14.3845 17.4009 15.8925 15.8929C17.4006 14.3848 18.3333 12.3015 18.3333 10.0003C18.3333 7.69916 17.4006 5.61583 15.8925 4.10777C14.3845 2.59973 12.3012 1.66699 10 1.66699C7.69884 1.66699 5.6155 2.59973 4.10745 4.10777C2.59941 5.61583 1.66667 7.69916 1.66667 10.0003C1.66667 12.3015 2.59941 14.3848 4.10745 15.8929C5.6155 17.4009 7.69884 18.3337 10 18.3337Z" stroke="#00975E" stroke-width="1.5" stroke-linejoin="round"/>
<path id="Vector_2" d="M6.66667 10L9.16667 12.5L14.1667 7.5" stroke="#00975E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_542_564">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 880 B

@ -0,0 +1,12 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="buheli-xuanzhong" clip-path="url(#clip0_542_568)">
<path id="Vector" d="M10 18.3337C14.6024 18.3337 18.3333 14.6027 18.3333 10.0003C18.3333 5.39795 14.6024 1.66699 10 1.66699C5.39762 1.66699 1.66666 5.39795 1.66666 10.0003C1.66666 14.6027 5.39762 18.3337 10 18.3337Z" stroke="#FF3429" stroke-width="1.5" stroke-linejoin="round"/>
<path id="Vector_2" d="M12.357 7.64258L7.64291 12.3566" stroke="#FF3429" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="Vector_3" d="M7.64304 7.64258L12.3571 12.3566" stroke="#FF3429" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_542_568">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 829 B

@ -0,0 +1,11 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="heli" clip-path="url(#clip0_542_573)">
<path id="Vector" d="M10 18.3337C12.3012 18.3337 14.3845 17.4009 15.8925 15.8929C17.4006 14.3848 18.3333 12.3015 18.3333 10.0003C18.3333 7.69916 17.4006 5.61583 15.8925 4.10777C14.3845 2.59973 12.3012 1.66699 10 1.66699C7.69884 1.66699 5.6155 2.59973 4.10745 4.10777C2.59941 5.61583 1.66667 7.69916 1.66667 10.0003C1.66667 12.3015 2.59941 14.3848 4.10745 15.8929C5.6155 17.4009 7.69884 18.3337 10 18.3337Z" stroke="#999999" stroke-width="1.5" stroke-linejoin="round"/>
<path id="Vector_2" d="M6.66667 10L9.16667 12.5L14.1667 7.5" stroke="#999999" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_542_573">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 870 B

@ -0,0 +1,12 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="buheli" clip-path="url(#clip0_542_577)">
<path id="Vector" d="M10 18.3337C14.6024 18.3337 18.3333 14.6027 18.3333 10.0003C18.3333 5.39795 14.6024 1.66699 10 1.66699C5.39762 1.66699 1.66666 5.39795 1.66666 10.0003C1.66666 14.6027 5.39762 18.3337 10 18.3337Z" stroke="#999999" stroke-width="1.5" stroke-linejoin="round"/>
<path id="Vector_2" d="M12.357 7.64258L7.64291 12.3566" stroke="#999999" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="Vector_3" d="M7.64304 7.64258L12.3571 12.3566" stroke="#999999" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_542_577">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 819 B

@ -19,6 +19,19 @@ export default {
roles: ["admin", "common"]
}
},
{
path: "/generalRules/ConsultationResults",
name: "ConsultationResults",
component: () =>
import("@/views/generalRules/ConsultationResults/index.vue"),
meta: {
title: "问诊结果 ",
showLink: true,
showParent: true,
roles: ["admin", "common"]
}
},
{
path: "/generalRules/materialCenter",
name: "MaterialCenter",

@ -1,42 +1,35 @@
<script setup lang="ts">
import { nextTick, reactive, ref } from "vue";
import { reactive, ref } from "vue";
import { FormInstance } from "element-plus";
import { message } from "@/utils/message";
import { createMedicalRecBaseInfo } from "@/api/caseManagement";
// import { useRoute } from "vue-router";
defineOptions({
name: "AddEdit"
});
const isEditFlag = ref(false);
const diseaseList = ref([]);
const id = ref("");
const dialogVisible = ref(false);
const formData = reactive({
patientName: "",
patientGender: "",
directoryDesc: "",
patientSelfDesc: "",
patientAge: "",
diseaseId: ""
});
const ruleFormRef = ref<FormInstance>();
const rules = {
patientName: [{ required: true, message: "请输入", trigger: "change" }],
patientGender: [{ required: true, message: "请选择", trigger: "change" }],
directoryDesc: [{ required: true, message: "请输入", trigger: "change" }]
patientAge: [{ required: true, message: "请输入", trigger: "change" }],
patientSelfDesc: [{ required: true, message: "请输入", trigger: "change" }],
diseaseId: [{ required: true, message: "请选择", trigger: "change" }]
};
defineExpose({
async open(item) {
async open(data) {
dialogVisible.value = true;
await nextTick();
if (item) {
for (const key in item) {
// eslint-disable-next-line no-prototype-builtins
if (formData.hasOwnProperty(key)) {
formData[key] = item[key];
}
}
isEditFlag.value = true;
id.value = item.id;
}
diseaseList.value = data;
}
});
const resetForm = () => {
@ -55,27 +48,14 @@ const reset = () => {
const save = (formEl: FormInstance | undefined) => {
formEl.validate(async (valid, fields) => {
if (valid) {
// formData.result = refWangEditor.value.valueHtml;
// const params = {
// ...formData,
// result: refWangEditor.value.valueHtml,
// diseaseId: route.query.id
// };
if (isEditFlag.value) {
// const res: any = await updateSupportInspect({
// ...params,
// id: id.value
// });
if (res.code === 200) {
message("修改成功", { type: "success" });
id.value = "";
}
} else {
// const res: any = await addSupportInspect(params);
// if (res.code === 200) {
// message("", { type: "success" });
// }
const params = {
...formData
};
const res: any = await createMedicalRecBaseInfo(params);
if (res.code === 200) {
message("新增成功", { type: "success" });
}
dialogVisible.value = false;
emit("update");
} else {
@ -106,13 +86,13 @@ const save = (formEl: FormInstance | undefined) => {
ref="ruleFormRef"
:model="formData"
:rules="rules"
label-width="80px"
label-width="90px"
>
<el-form-item label="姓名" prop="directoryDesc">
<el-form-item label="姓名" prop="patientName">
<el-input
size="large"
placeholder="请输入"
v-model="formData.directoryDesc"
v-model="formData.patientName"
/>
</el-form-item>
<el-form-item label="性别" prop="patientGender">

@ -0,0 +1,313 @@
<script setup lang="ts">
import { nextTick, reactive, ref } from "vue";
import { FormInstance } from "element-plus";
import { message } from "@/utils/message";
// import { useRoute } from "vue-router";
import successIcon from "@/assets/svg/consultation/check_small.svg?component";
import errorIcon from "@/assets/svg/consultation/error.svg?component";
defineOptions({
name: "AddQuestion"
});
const isEditFlag = ref(false);
const id = ref("");
const dialogVisible = ref(false);
const tableList = ref([]);
const formData = reactive({
patientGender: "",
directoryDesc: "",
patientSelfDesc: "",
defaultAnswer: "",
dicIdPath: ""
});
const dictList = ref([]);
const isValidate = ref("1");
const ruleFormRef = ref<FormInstance>();
const rules = {
patientGender: [{ required: true, message: "请选择", trigger: "change" }],
directoryDesc: [{ required: true, message: "请输入", trigger: "change" }]
};
const props = {
value: "id",
label: "nameZh",
children: "childDictTreeList",
expandTrigger: "hover" as const
};
const columns: TableColumnList = [
{
label: "相似问题",
prop: "itemName"
},
{
label: "操作",
fixed: "right",
width: 100,
slot: "operation"
}
];
defineExpose({
async open(item) {
dialogVisible.value = true;
await nextTick();
if (item) {
for (const key in item) {
// eslint-disable-next-line no-prototype-builtins
if (formData.hasOwnProperty(key)) {
formData[key] = item[key];
}
}
isEditFlag.value = true;
id.value = item.id;
}
}
});
const handleChange = item => {
formData.dictId = item[item.length - 1];
};
const resetForm = () => {
ruleFormRef.value.resetFields();
};
const closeDialog = () => {
dialogVisible.value = false;
isEditFlag.value = false;
resetForm();
};
const emit = defineEmits(["update"]);
const reset = () => {
ruleFormRef.value.resetFields();
};
const handleDelete = item => {};
const save = (formEl: FormInstance | undefined) => {
formEl.validate(async (valid, fields) => {
if (valid) {
// formData.result = refWangEditor.value.valueHtml;
// const params = {
// ...formData,
// result: refWangEditor.value.valueHtml,
// diseaseId: route.query.id
// };
if (isEditFlag.value) {
// const res: any = await updateSupportInspect({
// ...params,
// id: id.value
// });
if (res.code === 200) {
message("修改成功", { type: "success" });
id.value = "";
}
} else {
// const res: any = await addSupportInspect(params);
// if (res.code === 200) {
// message("", { type: "success" });
// }
}
dialogVisible.value = false;
emit("update");
} else {
return fields;
}
});
};
</script>
<template>
<div>
<el-drawer
:size="650"
append-to-body
v-model="dialogVisible"
:show-close="false"
:with-header="false"
:before-close="closeDialog"
custom-class="AddQuestion"
>
<div class="AddQuestion">
<div class="header-title">
<div class="tip" />
<span>添加问题</span>
</div>
<div class="line" />
<el-form
ref="ruleFormRef"
:model="formData"
:rules="rules"
label-width="120px"
>
<el-form-item label="问诊问题" prop="directoryDesc">
<el-input
size="large"
style="width: 380px"
v-model="formData.patientSelfDesc"
/>
<div class="add_btn">评估</div>
</el-form-item>
<el-form-item label="相似度阈值(%)" prop="directoryDesc">
<span>{{ `0.7%(系统返回阈值结界)` }}</span>
</el-form-item>
<div class="result">
<div v-if="isValidate === '2'" class="result_error">
<errorIcon />
<span
>相似度高已存在相似问诊问题不支持添加若要添加可联系运营人员</span
>
</div>
<div v-if="isValidate === '1'" class="result_success">
<successIcon />
<span>相似度低支持添加该问题</span>
</div>
</div>
<el-form-item label="">
<pure-table
ref="tableRef"
align-whole="center"
style="height: 460px"
showOverflowTooltip
class="mt-4"
border
:data="tableList"
:columns="columns"
:header-cell-style="{
background: 'var(--el-table-row-hover-bg-color)',
color: 'var(--el-text-color-primary)'
}"
>
<template #operation="{ row }">
<el-button link type="danger" @click="handleDelete(row)">
删除
</el-button>
</template>
</pure-table>
</el-form-item>
<el-form-item label="问诊类目 " prop="dicIdPath">
<el-cascader
:disabled="isEditFlag"
style="width: 100%"
size="large"
v-model="formData.dicIdPath"
:options="dictList"
:props="props"
@change="handleChange"
/>
</el-form-item>
<el-form-item label="回复 " prop="defaultAnswer">
<el-input
size="large"
v-model="formData.defaultAnswer"
placeholder="请输入"
/>
</el-form-item>
</el-form>
</div>
<template #footer>
<div class="footer_btn">
<div class="reset" @click="reset()"></div>
<div class="main" @click="save(ruleFormRef)"></div>
</div>
</template>
</el-drawer>
</div>
</template>
<style lang="scss" scoped>
.AddQuestion {
:deep(.el-form-item__label) {
font-weight: 400;
color: #333;
}
.header-title {
display: flex;
align-items: center;
// border-left: 6px solid #4287ff;
font-size: 20px;
font-weight: bold;
color: #2b3f54;
.tip {
width: 6px;
height: 20px;
margin-right: 10px;
line-height: 20px;
background: #4287ff;
}
}
.add_btn {
width: 76px;
height: 32px;
background: #ffffff;
border-radius: 6px 6px 6px 6px;
border: 1px solid #4287ff;
line-height: 32px;
text-align: center;
font-size: 14px;
color: #4287ff;
margin-left: 16px;
cursor: pointer;
}
.result {
display: flex;
padding-left: 120px;
.result_error {
display: flex;
align-items: center;
span {
font-size: 12px;
color: #ff3429;
margin-left: 8px;
}
}
.result_success {
display: flex;
align-items: center;
span {
font-size: 12px;
color: #00975e;
margin-left: 8px;
}
}
}
.line {
position: relative;
left: -20px;
width: 630px;
height: 1px;
margin: 24px 0;
background: rgb(91 139 255 / 30%);
}
.footer_btn {
display: flex;
align-items: center;
justify-content: flex-end;
margin-top: 16px;
.reset {
width: 188px;
height: 48px;
margin-right: 24px;
font-size: 16px;
font-weight: 400;
line-height: 48px;
color: #4287ff;
text-align: center;
cursor: pointer;
background: #fff;
border: 1px solid #4287ff;
border-radius: 6px;
}
.main {
width: 188px;
height: 48px;
font-size: 16px;
line-height: 48px;
color: #fff;
text-align: center;
cursor: pointer;
background: #4287ff;
border: 1px solid #4287ff;
border-radius: 6px;
}
}
}
</style>

@ -0,0 +1,227 @@
<script setup lang="ts">
import { reactive, ref } from "vue";
import ProblemBase from "@/views/caseManagement/diseaseType/compontents/problemBase.vue";
import AddQuestion from "./AddQuestion.vue";
import { message } from "@/utils/message";
const seachForm = reactive({
type: "",
name: "",
patientSelfDesc: "",
patientAge: "",
diseaseId: ""
});
const typeList = ref([]);
const problemBaseRef = ref();
const AddQuestionRef = ref();
const dataList = ref([{}]);
const pagination = reactive<any>({
total: 0,
pageSize: 10,
currentPage: 1,
background: true
});
const columns: TableColumnList = [
{
label: "序号",
type: "index",
width: 80
},
{
label: "问题",
prop: "itemName"
},
{
label: "回复",
prop: "itemName"
},
{
label: "问题类目",
prop: "itemName"
},
{
label: "诊断依据",
prop: "itemName"
},
{
label: "操作",
fixed: "right",
width: 200,
slot: "operation"
}
];
const getData = () => {};
const search = () => {
pagination.currentPage = 1;
pagination.pageSize = 10;
getData();
};
const selectQuestion = () => {
problemBaseRef.value.open();
};
const add = () => {
AddQuestionRef.value.open();
};
const edit = item => {};
const handleDelete = item => {};
const reset = () => {
seachForm.name = "";
seachForm.type = "";
search();
};
const selectOk = async (data: any) => {
let flag = true;
data.forEach(e => {
for (const item of dataList.value) {
if (item.libraryQuestionId === e.libraryQuestionId) {
message("不能选择重复数据", { type: "error" });
flag = false;
return;
}
}
if (flag) {
dataList.value.push({
defaultAnswer: e.defaultAnswer,
dictNamePath: e.nameZhPath,
medicalRecAnswer: e.defaultAnswer,
libraryQuestionId: e.libraryQuestionId,
questionList: e.question,
answerResourceId: e.answerResourceId
});
}
});
};
</script>
<template>
<div class="ClinicalConsultation">
<div class="header">
<div class="header_left">
<span>临床问诊</span>
</div>
<div class="header_right">
<el-button
size="large"
class="btn"
@click="selectQuestion"
type="primary"
>选择问题</el-button
>
<el-button size="large" class="btn" @click="add" type="primary"
>添加问题</el-button
>
</div>
</div>
<el-form
style="padding-right: 40px"
ref="ruleFormRef"
:model="seachForm"
label-width="80px"
>
<el-row>
<el-form-item label="类目" prop="patientGender">
<el-select
size="large"
filterable
style="width: 100%"
v-model="seachForm.type"
placeholder="请选择"
>
<el-option
v-for="item in typeList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="问题">
<el-input size="large" v-model="seachForm.name" />
</el-form-item>
<el-button class="ml-8" size="large" @click="search" type="primary"
>搜索</el-button
>
<el-button size="large" @click="reset"></el-button>
</el-row>
</el-form>
<div style="padding: 0 40px">
<pure-table
ref="tableRef"
v-if="dataList.length > 0"
align-whole="center"
style="height: calc(100vh - 485px)"
showOverflowTooltip
class="mt-4"
:data="dataList"
:columns="columns"
:header-cell-style="{
background: 'var(--el-table-row-hover-bg-color)',
color: 'var(--el-text-color-primary)'
}"
>
<template #basisConfirm="{ row }">
<el-checkbox
:true-label="1"
:false-label="0"
v-model="row.basisConfirmFlag"
size="large"
/>
</template>
<template #operation="{ row }">
<el-button link type="primary" @click="edit(row)"> </el-button>
<el-button link type="danger" @click="handleDelete(row)">
删除
</el-button>
</template>
</pure-table>
</div>
<ProblemBase @select="selectOk" ref="problemBaseRef" />
<AddQuestion ref="AddQuestionRef" />
</div>
</template>
<style lang="scss" scoped>
.ClinicalConsultation {
flex: 1;
:deep(.el-form-item__label) {
font-weight: 400;
color: #333;
}
.header {
display: flex;
align-items: center;
justify-content: space-between;
height: 88px;
padding: 0 40px;
margin-bottom: 24px;
border-bottom: 1px solid #d9d9d9;
.header_left {
font-size: 20px;
color: #333;
span {
padding-left: 8px;
border-left: 6px solid #4287ff;
}
}
.header_right {
display: flex;
.btn {
width: 112px;
font-size: 16px;
}
}
.reset_btn {
width: 112px;
height: 40px;
border-radius: 6px 6px 6px 6px;
border: 1px solid #4287ff;
line-height: 40px;
text-align: center;
font-size: 16px;
color: #4287ff;
margin-right: 24px;
cursor: pointer;
}
}
}
</style>

@ -0,0 +1,197 @@
<script setup lang="ts">
import { reactive, ref } from "vue";
import { message } from "@/utils/message";
const seachForm = reactive({
type: "",
name: "",
patientSelfDesc: "",
patientAge: "",
diseaseId: ""
});
const typeList = ref([]);
const dataList = ref([{}]);
const pagination = reactive<any>({
total: 0,
pageSize: 10,
currentPage: 1,
background: true
});
const columns: TableColumnList = [
{
label: "检查项目",
prop: "toolName"
},
{
label: "检查部位",
prop: "locationName"
},
{
label: "初步诊断依据",
slot: "slot0"
},
{
label: "证实诊断依据",
slot: "slot1"
},
{
label: "鉴别依据",
slot: "slot2"
},
{
label: "全面依据",
slot: "slot3"
},
{
label: "是否必查",
prop: "requireCheckFlag",
slot: "requireCheckFlag"
}
];
const getData = () => {};
const search = () => {
pagination.currentPage = 1;
pagination.pageSize = 10;
getData();
};
const add = () => {};
const edit = item => {};
const handleDelete = item => {};
const reset = () => {
seachForm.name = "";
seachForm.type = "";
search();
};
</script>
<template>
<div class="ClinicalDiagnosis">
<div class="header">
<div class="header_left">
<span>临床诊断-体格检查辅助检查项目</span>
</div>
<div class="header_right">
<el-button size="large" class="btn" @click="add" type="primary"
>保存</el-button
>
</div>
</div>
<el-form
style="padding-right: 40px"
ref="ruleFormRef"
:model="seachForm"
label-width="80px"
>
<el-row>
<el-form-item label="类目" prop="patientGender">
<el-select
size="large"
filterable
style="width: 100%"
v-model="seachForm.type"
placeholder="请选择"
>
<el-option
v-for="item in typeList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="问题">
<el-input size="large" v-model="seachForm.name" />
</el-form-item>
<el-button class="ml-8" size="large" @click="search" type="primary"
>搜索</el-button
>
<el-button size="large" @click="reset"></el-button>
</el-row>
</el-form>
<div style="padding: 0 40px">
<pure-table
ref="tableRef"
v-if="dataList.length > 0"
align-whole="center"
style="height: calc(100vh - 485px)"
showOverflowTooltip
class="mt-4"
:data="dataList"
:columns="columns"
:header-cell-style="{
background: 'var(--el-table-row-hover-bg-color)',
color: 'var(--el-text-color-primary)'
}"
>
<template #basisConfirm="{ row }">
<el-checkbox
:true-label="1"
:false-label="0"
v-model="row.basisConfirmFlag"
size="large"
/>
</template>
<template #basisIdentification="{ row }">
<el-checkbox
:true-label="1"
:false-label="0"
v-model="row.basisIdentificationFlag"
size="large"
/>
</template>
<template #operation="{ row }">
<el-button link type="primary" @click="edit(row)"> </el-button>
<el-button link type="danger" @click="handleDelete(row)">
删除
</el-button>
</template>
</pure-table>
</div>
</div>
</template>
<style lang="scss" scoped>
.ClinicalDiagnosis {
flex: 1;
:deep(.el-form-item__label) {
font-weight: 400;
color: #333;
}
.header {
display: flex;
align-items: center;
justify-content: space-between;
height: 88px;
padding: 0 40px;
margin-bottom: 24px;
border-bottom: 1px solid #d9d9d9;
.header_left {
font-size: 20px;
color: #333;
span {
padding-left: 8px;
border-left: 6px solid #4287ff;
}
}
.header_right {
display: flex;
.btn {
width: 112px;
font-size: 16px;
}
}
.reset_btn {
width: 112px;
height: 40px;
border-radius: 6px 6px 6px 6px;
border: 1px solid #4287ff;
line-height: 40px;
text-align: center;
font-size: 16px;
color: #4287ff;
margin-right: 24px;
cursor: pointer;
}
}
}
</style>

@ -0,0 +1,136 @@
<script setup lang="ts">
import { reactive, ref } from "vue";
import { message } from "@/utils/message";
const seachForm = reactive({
primarilyDiagnosisCriteria: "",
confirmDiagnosisCriteria: "",
patientSelfDesc: "",
differentialDiagnosisCriteria: "",
fullCheck: ""
});
const add = () => {};
const reset = () => {};
</script>
<template>
<div class="DiagnosticBasis">
<div class="header">
<div class="header_left">
<span>诊断依据</span>
</div>
<div class="header_right">
<el-button size="large" class="btn" @click="add" type="primary"
>保存</el-button
>
</div>
</div>
<el-form class="mt-4 mr-10" :model="seachForm" label-width="180px">
<el-row>
<el-col :span="24">
<el-form-item
label="初步诊断依据:"
prop="primarilyDiagnosisCriteria"
>
<el-input
:rows="4"
style="width: 100%"
type="textarea"
:maxLength="500"
placeholder="请输入描述"
v-model="seachForm.primarilyDiagnosisCriteria"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="证实诊断依据:" prop="confirmDiagnosisCriteria">
<el-input
:rows="4"
style="width: 100%"
type="textarea"
:maxLength="500"
placeholder="请输入描述"
v-model="seachForm.confirmDiagnosisCriteria"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="鉴别依据:" prop="differentialDiagnosisCriteria">
<el-input
:rows="4"
style="width: 100%"
type="textarea"
:maxLength="500"
placeholder="请输入描述"
v-model="seachForm.differentialDiagnosisCriteria"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="处置诊断说明" prop="fullCheck">
<el-input
:rows="4"
style="width: 100%"
type="textarea"
:maxLength="500"
placeholder="请输入描述"
v-model="seachForm.fullCheck"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</template>
<style lang="scss" scoped>
.DiagnosticBasis {
flex: 1;
:deep(.el-form-item__label) {
font-weight: 400;
color: #333;
}
.header {
display: flex;
align-items: center;
justify-content: space-between;
height: 88px;
padding: 0 40px;
margin-bottom: 24px;
border-bottom: 1px solid #d9d9d9;
.header_left {
font-size: 20px;
color: #333;
span {
padding-left: 8px;
border-left: 6px solid #4287ff;
}
}
.header_right {
display: flex;
.btn {
width: 112px;
font-size: 16px;
}
}
.reset_btn {
width: 112px;
height: 40px;
border-radius: 6px 6px 6px 6px;
border: 1px solid #4287ff;
line-height: 40px;
text-align: center;
font-size: 16px;
color: #4287ff;
margin-right: 24px;
cursor: pointer;
}
}
}
</style>

@ -0,0 +1,164 @@
<script setup lang="ts">
import { reactive, ref } from "vue";
import { message } from "@/utils/message";
const seachForm = reactive({
type: "",
name: "",
patientSelfDesc: "",
patientAge: "",
diseaseId: ""
});
const typeList = ref([]);
const dataList = ref([{}]);
const pagination = reactive<any>({
total: 0,
pageSize: 10,
currentPage: 1,
background: true
});
const columns = [
{
label: "检查项目",
prop: "toolName"
},
{
label: "检查部位",
prop: "locationName"
},
{
label: "初步诊断依据",
slot: "slot0"
},
{
label: "证实诊断依据",
slot: "slot1"
},
{
label: "鉴别依据",
slot: "slot2"
},
{
label: "全面依据",
slot: "slot3"
},
{
label: "是否必查",
prop: "requireCheckFlag",
slot: "requireCheckFlag"
}
];
const getData = () => {};
const search = () => {
pagination.currentPage = 1;
pagination.pageSize = 10;
getData();
};
const add = () => {};
const handleDelete = item => {};
const reset = () => {
seachForm.name = "";
seachForm.type = "";
search();
};
</script>
<template>
<div class="DisposalPlan">
<div class="header">
<div class="header_left">
<span>处置计划</span>
</div>
<div class="header_right">
<div class="reset_btn">重置</div>
<el-button size="large" class="btn" @click="add" type="primary"
>保存</el-button
>
</div>
</div>
<div style="padding: 0 40px">
<pure-table
ref="tableRef"
v-if="dataList.length > 0"
align-whole="center"
style="height: calc(100vh - 485px)"
showOverflowTooltip
class="mt-4"
:data="dataList"
:columns="columns"
:header-cell-style="{
background: 'var(--el-table-row-hover-bg-color)',
color: 'var(--el-text-color-primary)'
}"
>
<template #basisConfirm="{ row }">
<el-checkbox
:true-label="1"
:false-label="0"
v-model="row.basisConfirmFlag"
size="large"
/>
</template>
<template #basisIdentification="{ row }">
<el-checkbox
:true-label="1"
:false-label="0"
v-model="row.basisIdentificationFlag"
size="large"
/>
</template>
<template #operation="{ row }">
<el-button link type="danger" @click="handleDelete(row)">
删除
</el-button>
</template>
</pure-table>
</div>
</div>
</template>
<style lang="scss" scoped>
.DisposalPlan {
flex: 1;
:deep(.el-form-item__label) {
font-weight: 400;
color: #333;
}
.header {
display: flex;
align-items: center;
justify-content: space-between;
height: 88px;
padding: 0 40px;
margin-bottom: 24px;
border-bottom: 1px solid #d9d9d9;
.header_left {
font-size: 20px;
color: #333;
span {
padding-left: 8px;
border-left: 6px solid #4287ff;
}
}
.header_right {
display: flex;
.btn {
width: 112px;
font-size: 16px;
}
}
.reset_btn {
width: 112px;
height: 40px;
border-radius: 6px 6px 6px 6px;
border: 1px solid #4287ff;
line-height: 40px;
text-align: center;
font-size: 16px;
color: #4287ff;
margin-right: 24px;
cursor: pointer;
}
}
}
</style>

@ -0,0 +1,215 @@
<script setup lang="ts">
import { nextTick, reactive, ref } from "vue";
import { FormInstance } from "element-plus";
import { message } from "@/utils/message";
// import { useRoute } from "vue-router";
defineOptions({
name: "AddCase"
});
const isEditFlag = ref(false);
const diseaseList = ref([]);
const id = ref("");
const dialogVisible = ref(false);
const formData = reactive({
patientGender: "",
directoryDesc: "",
patientSelfDesc: "",
patientAge: "",
diseaseId: ""
});
const ruleFormRef = ref<FormInstance>();
const rules = {
patientGender: [{ required: true, message: "请选择", trigger: "change" }],
directoryDesc: [{ required: true, message: "请输入", trigger: "change" }]
};
defineExpose({
async open(item) {
dialogVisible.value = true;
await nextTick();
if (item) {
for (const key in item) {
// eslint-disable-next-line no-prototype-builtins
if (formData.hasOwnProperty(key)) {
formData[key] = item[key];
}
}
isEditFlag.value = true;
id.value = item.id;
}
}
});
const resetForm = () => {
ruleFormRef.value.resetFields();
};
const closeDialog = () => {
dialogVisible.value = false;
isEditFlag.value = false;
resetForm();
};
const emit = defineEmits(["update"]);
const reset = () => {
ruleFormRef.value.resetFields();
};
const save = (formEl: FormInstance | undefined) => {
formEl.validate(async (valid, fields) => {
if (valid) {
// formData.result = refWangEditor.value.valueHtml;
// const params = {
// ...formData,
// result: refWangEditor.value.valueHtml,
// diseaseId: route.query.id
// };
if (isEditFlag.value) {
// const res: any = await updateSupportInspect({
// ...params,
// id: id.value
// });
if (res.code === 200) {
message("修改成功", { type: "success" });
id.value = "";
}
} else {
// const res: any = await addSupportInspect(params);
// if (res.code === 200) {
// message("", { type: "success" });
// }
}
dialogVisible.value = false;
emit("update");
} else {
return fields;
}
});
};
</script>
<template>
<div>
<el-drawer
:size="650"
append-to-body
v-model="dialogVisible"
:show-close="false"
:with-header="false"
:before-close="closeDialog"
custom-class="AddEdit"
>
<div class="AddEdit">
<div class="header-title">
<div class="tip" />
<span>添加电子病历项</span>
</div>
<div class="line" />
<el-form
ref="ruleFormRef"
:model="formData"
:rules="rules"
label-width="80px"
>
<el-form-item label="选择类目" prop="directoryDesc">
<el-select
size="large"
filterable
clearable
v-model="formData.diseaseId"
class="form_select"
style="width: 100%"
placeholder="请选择选择类目"
>
<el-option
v-for="item in diseaseList"
:key="item.id"
:label="item.diseaseName"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="名称" prop="patientGender">
<el-input size="large" v-model="formData.patientSelfDesc" />
</el-form-item>
<el-form-item label="内容" prop="patientSelfDesc">
<el-input size="large" v-model="formData.patientSelfDesc" />
</el-form-item>
</el-form>
</div>
<template #footer>
<div class="footer_btn">
<div class="reset" @click="reset()"></div>
<div class="main" @click="save(ruleFormRef)"></div>
</div>
</template>
</el-drawer>
</div>
</template>
<style lang="scss" scoped>
.AddEdit {
:deep(.el-form-item__label) {
font-weight: 400;
color: #333;
}
.header-title {
display: flex;
align-items: center;
// border-left: 6px solid #4287ff;
font-size: 20px;
font-weight: bold;
color: #2b3f54;
.tip {
width: 6px;
height: 20px;
margin-right: 10px;
line-height: 20px;
background: #4287ff;
}
}
.line {
position: relative;
left: -20px;
width: 605px;
height: 1px;
margin: 24px 0;
background: rgb(91 139 255 / 30%);
}
.footer_btn {
display: flex;
align-items: center;
justify-content: flex-end;
margin-top: 16px;
.reset {
width: 188px;
height: 48px;
margin-right: 24px;
font-size: 16px;
font-weight: 400;
line-height: 48px;
color: #4287ff;
text-align: center;
cursor: pointer;
background: #fff;
border: 1px solid #4287ff;
border-radius: 6px;
}
.main {
width: 188px;
height: 48px;
font-size: 16px;
line-height: 48px;
color: #fff;
text-align: center;
cursor: pointer;
background: #4287ff;
border: 1px solid #4287ff;
border-radius: 6px;
}
}
}
</style>

@ -0,0 +1,215 @@
<script setup lang="ts">
import { nextTick, ref } from "vue";
defineOptions({
name: "AddCase"
});
const isEditFlag = ref(false);
const dataList = ref([
{
url: "",
key: 1,
name: "虚拟人名称"
},
{
url: "",
key: 2,
name: "虚拟人名称"
},
{
url: "",
key: 3,
name: "虚拟人名称"
}
]);
const selectKey = ref(1);
const id = ref("");
const dialogVisible = ref(false);
defineExpose({
async open(item) {
dialogVisible.value = true;
}
});
const closeDialog = () => {
dialogVisible.value = false;
isEditFlag.value = false;
};
const emit = defineEmits(["update"]);
const reset = () => {};
const save = () => {};
</script>
<template>
<div>
<el-drawer
:size="650"
append-to-body
v-model="dialogVisible"
:show-close="false"
:with-header="false"
:before-close="closeDialog"
custom-class="SelectPeople"
>
<div class="SelectPeople">
<div class="header-title">
<div class="tip" />
<span>选择虚拟人形象</span>
</div>
<div class="line" />
<div class="img_list">
<div
class="img_list_item"
v-for="(item, index) in dataList"
:key="index"
>
<img :src="item.url" alt="" />
<div class="img_list_desc">{{ item.name }}</div>
<div class="no_select" v-if="selectKey !== item.key" />
<div class="selected" v-if="selectKey === item.key">
<span class="in_select" />
</div>
</div>
</div>
</div>
<template #footer>
<div class="footer_btn">
<div class="reset" @click="reset()"></div>
<div class="main" @click="save()"></div>
</div>
</template>
</el-drawer>
</div>
</template>
<style lang="scss" scoped>
.SelectPeople {
:deep(.el-form-item__label) {
font-weight: 400;
color: #333;
}
.header-title {
display: flex;
align-items: center;
// border-left: 6px solid #4287ff;
font-size: 20px;
font-weight: bold;
color: #2b3f54;
.tip {
width: 6px;
height: 20px;
margin-right: 10px;
line-height: 20px;
background: #4287ff;
}
}
.line {
position: relative;
left: -20px;
width: 650px;
height: 1px;
margin: 24px 0;
background: rgb(91 139 255 / 30%);
}
.img_list {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.img_list_item {
width: 190px;
position: relative;
box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.08);
// margin-right: 16px;
border-radius: 12px;
cursor: pointer;
img {
width: 100%;
height: 190px;
}
.img_list_item:last-child {
margin-right: 0px;
}
.img_list_desc {
width: 100%;
height: 40px;
background: #ffffff;
border-radius: 0px 0px 12px 12px;
font-size: 16px;
color: #333333;
line-height: 40px;
padding-left: 16px;
border-radius: 0 0 12px 12px;
}
.no_select {
width: 30px;
height: 30px;
background: #ffffff;
border-radius: 28px 28px 28px 28px;
border: 1px solid #d9d9d9;
position: absolute;
top: 12px;
right: 12px;
}
.selected {
width: 30px;
height: 30px;
background: #ffffff;
border-radius: 28px 28px 28px 28px;
border: 1px solid #4287ff;
position: absolute;
top: 12px;
right: 12px;
display: flex;
align-items: center;
justify-content: center;
.in_select {
width: 16px;
height: 16px;
background: #4287ff;
border-radius: 12px;
}
}
}
}
.footer_btn {
display: flex;
align-items: center;
justify-content: flex-end;
margin-top: 16px;
.reset {
width: 188px;
height: 48px;
margin-right: 24px;
font-size: 16px;
font-weight: 400;
line-height: 48px;
color: #4287ff;
text-align: center;
cursor: pointer;
background: #fff;
border: 1px solid #4287ff;
border-radius: 6px;
}
.main {
width: 188px;
height: 48px;
font-size: 16px;
line-height: 48px;
color: #fff;
text-align: center;
cursor: pointer;
background: #4287ff;
border: 1px solid #4287ff;
border-radius: 6px;
}
}
}
</style>

@ -1,4 +1,48 @@
<script setup lang="ts"></script>
<script setup lang="ts">
import { onMounted, reactive, ref } from "vue";
import AddCase from "./AddCase.vue";
import SelectPeople from "./SelectPeople.vue";
import { queryMedicalRecBaseInfo } from "@/api/caseManagement";
import { useRoute } from "vue-router";
const AddCaseRef = ref();
const SelectPeopleRef = ref();
let formData = reactive({
patientName: "",
patientGender: "",
patientMarriage: "",
nativePlace: "",
directoryDesc: "",
patientSelfDesc: "",
patientBirthplace: "",
patientPhone: "",
patientPostcode: "",
patientProfession: "",
patientAge: "",
diseaseId: "",
medicalType: ""
});
const route = useRoute();
const medicalTypeList = ref([]);
const rules = {
patientGender: [{ required: true, message: "请选择", trigger: "change" }],
directoryDesc: [{ required: true, message: "请输入", trigger: "change" }]
};
const add = () => {
AddCaseRef.value.open();
};
const openPeopleDialog = () => {
SelectPeopleRef.value.open();
};
const getDetail = async () => {
const res: any = await queryMedicalRecBaseInfo({
medicalRecId: route.query.medicalRecId
});
formData = res.data;
};
onMounted(() => {
getDetail();
});
</script>
<template>
<div class="ElectronicCase">
<div class="header">
@ -11,18 +55,281 @@
>
</div>
</div>
<el-form
style="padding-right: 40px"
ref="ruleFormRef"
:model="formData"
:rules="rules"
label-width="100px"
>
<el-row>
<el-col :span="8">
<el-form-item label="类型" prop="patientGender">
<span>在线默认</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="虚拟人" prop="patientGender">
<el-button @click="openPeopleDialog" type="primary" link>
请选择数字人
</el-button>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="病历类型" prop="medicalType">
<el-select
size="large"
filterable
clearable
v-model="formData.medicalType"
class="form_select"
style="width: 100%"
placeholder="请选择选择类目"
>
<el-option
v-for="item in medicalTypeList"
:key="item.id"
:label="item.diseaseName"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="姓名" prop="patientName">
<el-input
size="large"
placeholder="请输入"
v-model="formData.patientName"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="性别" prop="patientGender">
<el-input
size="large"
placeholder="请输入"
v-model="formData.patientGender"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="年龄" prop="patientAge">
<el-input
size="large"
placeholder="请输入"
v-model="formData.patientAge"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="婚姻状态" prop="patientMarriage">
<el-input
size="large"
placeholder="请输入"
v-model="formData.patientMarriage"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="籍贯" prop="nativePlace">
<el-input
size="large"
placeholder="请输入"
v-model="formData.nativePlace"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="职业" prop="patientProfession">
<el-input
size="large"
placeholder="请输入"
v-model="formData.patientProfession"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="出生地" prop="patientBirthplace">
<el-input
size="large"
placeholder="请输入"
v-model="formData.patientBirthplace"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电话" prop="patientPhone">
<el-input
size="large"
placeholder="请输入"
v-model="formData.patientPhone"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="邮编" prop="patientPostcode">
<el-input
size="large"
placeholder="请输入"
v-model="formData.patientPostcode"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="现住地" prop="directoryDesc">
<el-input
size="large"
placeholder="请输入"
v-model="formData.directoryDesc"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="长期居住地" prop="directoryDesc">
<el-input
size="large"
placeholder="请输入"
v-model="formData.directoryDesc"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="民族" prop="directoryDesc">
<el-input
size="large"
placeholder="请输入"
v-model="formData.directoryDesc"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="初步诊断" prop="directoryDesc">
<el-input
size="large"
placeholder="请输入"
v-model="formData.directoryDesc"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="主诉" prop="directoryDesc">
<el-input
size="large"
placeholder="请输入"
v-model="formData.directoryDesc"
/>
</el-form-item>
</el-col>
</el-row>
<div class="desc">
主诉多于一项时应按发生的时间次序排列持续时间上一般从长到短排列
</div>
<el-row>
<el-col :span="24">
<el-form-item label="现病史" prop="directoryDesc">
<el-input
size="large"
placeholder="请输入"
v-model="formData.directoryDesc"
/>
</el-form-item>
</el-col>
</el-row>
<div class="desc">
可记录起病情况主要症状特点及演变情况诊治情况发病后的一般情况
</div>
<el-row>
<el-col :span="24">
<el-form-item label="过敏史" prop="directoryDesc">
<el-input
size="large"
placeholder="请输入"
v-model="formData.directoryDesc"
/>
</el-form-item>
</el-col>
</el-row>
<div class="desc">可记录药物或食物过敏史默认没有过敏反应</div>
<el-row>
<el-col :span="24">
<el-form-item label="个人史" prop="directoryDesc">
<el-input
size="large"
placeholder="请输入"
v-model="formData.directoryDesc"
/>
</el-form-item>
</el-col>
</el-row>
<div class="desc">可记录药物或食物过敏史默认没有过敏反应</div>
<el-row>
<el-col :span="24">
<el-form-item label="家族史" prop="directoryDesc">
<el-input
size="large"
placeholder="请输入"
v-model="formData.directoryDesc"
/>
</el-form-item>
</el-col>
</el-row>
<div class="desc">可记录家族遗传病情况默认没有家族遗传病</div>
<el-row>
<el-col :span="24">
<el-form-item label="既往史" prop="directoryDesc">
<el-input
size="large"
placeholder="请输入"
v-model="formData.directoryDesc"
/>
</el-form-item>
</el-col>
</el-row>
<div class="desc">可记录历史慢性疾病和长期服药情况</div>
<el-row>
<el-col :span="24">
<el-form-item label="手术史" prop="directoryDesc">
<el-input
size="large"
placeholder="请输入"
v-model="formData.directoryDesc"
/>
</el-form-item>
</el-col>
</el-row>
<div class="desc">可记录历史手术情况</div>
</el-form>
<AddCase ref="AddCaseRef" />
<SelectPeople ref="SelectPeopleRef" />
</div>
</template>
<style lang="scss" scoped>
.ElectronicCase {
flex: 1;
:deep(.el-form-item__label) {
font-weight: 400;
color: #333;
}
.header {
display: flex;
align-items: center;
justify-content: space-between;
height: 88px;
padding: 0 40px;
margin-bottom: 24px;
border-bottom: 1px solid #d9d9d9;
.header_left {
@ -35,5 +342,12 @@
}
}
}
.desc {
font-weight: 400;
font-size: 12px;
color: #a0a0a0;
padding-left: 100px;
margin-bottom: 24px;
}
}
</style>

@ -1,5 +1,9 @@
<script setup lang="ts">
import ElectronicCase from "./compontents/ElectronicCase/index.vue";
import ClinicalConsultation from "./compontents/ClinicalConsultation/index.vue";
import ClinicalDiagnosis from "./compontents/ClinicalDiagnosis/index.vue";
import DiagnosticBasis from "./compontents/DiagnosticBasis/index.vue";
import DisposalPlan from "./compontents/DisposalPlan/index.vue";
import { ref } from "vue";
const activedIndex = ref(0);
const navList = ref([
@ -19,6 +23,9 @@ const navList = ref([
name: "处置计划"
}
]);
const changeType = val => {
activedIndex.value = val;
};
</script>
<template>
@ -29,19 +36,24 @@ const navList = ref([
:class="[activedIndex === index ? 'actived' : '']"
v-for="(item, index) in navList"
:key="index"
@click="changeType(index)"
>
<div class="line" />
<span>{{ item.name }}</span>
</div>
</div>
<ElectronicCase v-if="activedIndex === 0" />
<ClinicalConsultation v-if="activedIndex === 1" />
<ClinicalDiagnosis v-if="activedIndex === 2" />
<DiagnosticBasis v-if="activedIndex === 3" />
<DisposalPlan v-if="activedIndex === 4" />
</div>
</template>
<style lang="scss" scoped>
.editCase {
display: flex;
flex-direction: row !important;
width: 100%;
padding: 0;
.editCase_nav {

@ -10,7 +10,8 @@ import { onMounted } from "vue";
import { clearObject } from "@/utils/auth";
import { useCaseStoreHooks } from "@/store/modules/caseManagement";
import AddEdit from "./add.vue";
import { updateMedicalStatus } from "@/api/caseManagement";
import { message } from "@/utils/message";
defineOptions({
name: "CaseManagement"
});
@ -58,8 +59,10 @@ const columns: TableColumnList = [
minWidth: 150
},
{
label: "机构",
prop: "alarmTask"
label: "状态",
prop: "diagnosisPrimaryStr",
slot: "status",
minWidth: 150
},
{
label: "更新时间",
@ -92,7 +95,7 @@ const reset = () => {
search();
};
const add = () => {
AddEditRef.value.open();
AddEditRef.value.open(diseaseList.value);
};
const getDiseaseListByDropList = async () => {
const res: any = await queryDiseaseListByDropList();
@ -108,6 +111,16 @@ const getData = async () => {
dataList.value = res.data.records;
pagination.total = res.data.total;
};
const changeStatus = async item => {
const res: any = await updateMedicalStatus({
medicalRecId: item.medicalId,
status: item.medicalStatus
});
if (res.code === 200) {
message("修改成功", { type: "success" });
getData();
}
};
const openDetail = item => {
router.push({
path: "/caseManagement/detail",
@ -120,7 +133,7 @@ const handleEdit = item => {
router.push({
path: "/caseManagement/edit",
query: {
id: item.medicalId
medicalRecId: item.medicalId
}
});
};
@ -227,6 +240,14 @@ onMounted(() => {
删除
</el-button> -->
</template>
<template #status="{ row }">
<el-switch
@change="changeStatus(row)"
v-model="row.medicalStatus"
active-value="1"
inactive-value="0"
/>
</template>
</pure-table>
</div>
<AddEdit ref="AddEditRef" />

@ -1,5 +1,92 @@
<script setup lang="ts">
import titleIcon from "@/assets/newInquiry/title_icon.png";
import textIcon from "@/assets/newInquiry/text_icon.png";
import actReasonableIcon from "@/assets/svg/consultation/record/act_reasonable.svg";
import actUnreasonableIcon from "@/assets/svg/consultation/record/act_unreasonable.svg";
import reasonableIcon from "@/assets/svg/consultation/record/reasonable.svg";
import unreasonableIcon from "@/assets/svg/consultation/record/unreasonable.svg";
import { queryQaRecordForFeedback, saveFeedback } from "@/api/consultation";
import { reactive, ref } from "vue";
import { onMounted } from "vue";
import { useRoute } from "vue-router";
import { FormInstance } from "element-plus";
import { message } from "@/utils/message";
const formData = reactive({
evaluateLevel: undefined,
evaluateRemark: ""
});
const route = useRoute();
const ruleFormRef = ref<FormInstance>();
// const feedbackList = ref([
// {
// key: "1",
// name: ""
// },
// {
// key: "2",
// name: ""
// },
// {
// key: "3",
// name: ""
// }
// ]);
const dataList = ref([
// {
// feedbackType: 1,
// remark: "",
// feedback: [],
// question: "",
// anser:
// ""
// }
]);
const rules = {
evaluateLevel: [{ required: true, message: "请选择", trigger: "change" }]
};
const changeStatus = (index, val) => {
const list = [...dataList.value];
list[index].feedbackType = val;
dataList.value = list;
};
const getData = async () => {
const res: any = await queryQaRecordForFeedback({
processId: route.query.processId
});
dataList.value = res.data.qaList;
formData.evaluateLevel = res.data.evaluateLevel || "";
formData.evaluateRemark = res.data.evaluateRemark;
};
const reset = () => {
getData();
};
const save = (formEl: FormInstance | undefined) => {
formEl.validate(async (valid, fields) => {
if (valid) {
const params = {
qaList: dataList.value,
evaluateLevel: formData.evaluateLevel,
evaluateRemark: formData.evaluateRemark,
processId: route.query.processId
};
const res: any = await saveFeedback(params);
if (res.code === 200) {
message("提交成功", { type: "success" });
getData();
}
} else {
return fields;
}
});
};
const submit = () => {
console.log("1", dataList.value);
};
onMounted(() => {
getData();
});
</script>
<template>
@ -12,31 +99,278 @@ import titleIcon from "@/assets/newInquiry/title_icon.png";
<span>问诊评价</span>
</div>
</div>
<el-form
ref="ruleFormRef"
:model="formData"
class="mt-4"
:rules="rules"
label-width="90px"
>
<el-form-item label="预期结果:" prop="evaluateLevel">
<el-radio-group v-model="formData.evaluateLevel">
<el-radio :label="0" size="large">可靠</el-radio>
<el-radio :label="1" size="large">基本可靠</el-radio>
<el-radio :label="2" size="large">仅供参考</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注:" prop="evaluateRemark">
<el-input
:rows="4"
type="textarea"
:maxLength="500"
placeholder="请输入"
v-model="formData.evaluateRemark"
/>
</el-form-item>
</el-form>
</div>
<div class="main_content">
<div class="header_title">
<div class="title">
<img :src="textIcon" alt="" />
<span>临床问诊</span>
</div>
</div>
<div class="main_list">
<div class="main_item" v-for="(item, index) in dataList" :key="index">
<div class="main_item_left">
<p class="mb-1">{{ `问诊:${item.question}` }}</p>
<p>{{ `病人:${item.answer}` }}</p>
</div>
<div class="main_item_right">
<div
@click="changeStatus(index, 1)"
class="main_item_right_item"
style="margin-right: 40px"
:class="[item.feedbackType === 1 ? 'act_reasonableIcon' : '']"
>
<actReasonableIcon v-if="item.feedbackType === 1" />
<reasonableIcon v-else />
<span>合理</span>
</div>
<el-dropdown>
<div
@click="changeStatus(index, 2)"
class="main_item_right_item"
:class="[
item.feedbackType === 2 ? 'act_unreasonableIcon' : ''
]"
>
<actUnreasonableIcon v-if="item.feedbackType === 2" />
<unreasonableIcon v-else />
<span>不合理</span>
</div>
<template #dropdown>
<div class="drop_content">
<div class="title">临床问诊反馈</div>
<div class="dropdown_list">
<el-checkbox
size="large"
class="dropdown_list_item"
v-model="item.feedbackTooLong"
:true-label="1"
:false-label="0"
>回答过于冗长</el-checkbox
>
<el-checkbox
size="large"
class="dropdown_list_item"
:true-label="1"
:false-label="0"
v-model="item.feedbackError"
>答非所问</el-checkbox
>
<el-checkbox
size="large"
class="dropdown_list_item"
:true-label="1"
:false-label="0"
v-model="item.feedbackTooShort"
>内容不合理</el-checkbox
>
</div>
<el-input
v-model="item.feedbackRemark"
maxlength="20"
placeholder="请输入"
show-word-limit
type="textarea"
/>
<div class="drop_content_btn" @click="submit"></div>
</div>
</template>
</el-dropdown>
</div>
</div>
</div>
</div>
<div class="main_list">111</div>
</div>
<div class="footer_btn">
<div class="reset" @click="reset"></div>
<div class="main_btn" @click="save(ruleFormRef)"></div>
</div>
</div>
</template>
<style lang="scss" scoped>
.ConsultationRecords {
display: flex;
// display: flex;
padding: 32px;
.main {
display: flex;
flex-direction: row-reverse;
width: 100%;
margin: 16px;
.evaluate {
width: 441px;
height: calc(100vh - 250px);
padding: 24px;
margin-right: 24px;
background: #fff;
border-radius: 6px;
box-shadow: 0 0 8px 0 rgb(0 0 0 / 15%);
}
.main_list {
.main_content {
flex: 1;
height: calc(100vh - 250px);
padding: 24px;
margin-right: 16px;
overflow-y: auto;
background: #fff;
border-radius: 6px;
box-shadow: 0 0 8px 0 rgb(0 0 0 / 15%);
.main_list {
.main_item {
display: flex;
align-items: center;
justify-content: space-between;
height: 94px;
border-bottom: 1px solid #5b8bff;
.main_item_left {
padding-top: 24px;
font-size: 16px;
color: #2b3f54;
}
.main_item_right {
display: flex;
.main_item_right_item {
display: flex;
align-items: center;
cursor: pointer;
span {
margin-left: 8px;
font-size: 14px;
font-weight: 400;
color: #999;
}
}
.act_reasonableIcon span {
color: #00975e;
}
.act_unreasonableIcon span {
color: #ff3429;
}
}
}
}
}
}
.footer_btn {
display: flex;
align-items: center;
justify-content: flex-end;
margin-top: 16px;
margin-right: 32px;
.reset {
width: 188px;
height: 48px;
margin-right: 24px;
font-size: 16px;
font-weight: 400;
line-height: 48px;
color: #4287ff;
text-align: center;
cursor: pointer;
background: #fff;
border: 1px solid #4287ff;
border-radius: 6px;
}
.main_btn {
width: 188px;
height: 48px;
font-size: 16px;
line-height: 48px;
color: #fff;
text-align: center;
cursor: pointer;
background: #4287ff;
border: 1px solid #4287ff;
border-radius: 6px;
}
}
}
</style>
<style lang="scss">
.drop_content {
width: 240px;
height: 295px;
padding: 16px;
background: #fff;
border-radius: 8px;
box-shadow: 0 1px 8px 0 rgb(0 0 0 / 15%);
.title {
font-size: 16px;
font-weight: bold;
color: #2b3f54;
}
.dropdown_list {
display: flex;
flex-direction: column;
.dropdown_list_item {
padding: 0;
// margin-bottom: 8px;
}
.el-checkbox.el-checkbox--large .el-checkbox__inner {
width: 18px;
height: 18px;
}
.el-checkbox__inner::after {
left: 5px;
width: 5px;
height: 9px;
border-width: 2px;
}
}
.drop_content_btn {
width: 80px;
height: 32px;
margin-top: 16px;
margin-left: 60px;
font-size: 14px;
line-height: 32px;
color: #fff;
text-align: center;
cursor: pointer;
background: #4287ff;
border-radius: 6px;
}
}
</style>

@ -5,6 +5,7 @@ import { Plus, Delete } from "@element-plus/icons-vue";
import { message } from "@/utils/message";
// import { useRoute } from "vue-router";
import { getToken } from "@/utils/auth";
import { createHuman, updateHuman } from "@/api/digitalHuman";
defineOptions({
name: "AddEdit"
});
@ -15,28 +16,30 @@ const id = ref("");
const dialogVisible = ref(false);
const formData = reactive({
iconBase64: "",
directoryDesc: ""
imageFileUrl: "",
imageName: "",
imageFileId: "",
description: ""
});
const ruleFormRef = ref<FormInstance>();
const rules = {
iconBase64: [{ required: true, message: "请选择", trigger: "change" }],
directoryDesc: [{ required: true, message: "请输入", trigger: "change" }]
imageFileUrl: [{ required: true, message: "请选择", trigger: "change" }],
imageName: [{ required: true, message: "请输入", trigger: "change" }],
description: [{ required: true, message: "请输入", trigger: "change" }]
};
const handleSuccess: UploadProps["onSuccess"] = response => {
formData.iconBase64 = `/virtual-patient-manage/fileManage/downloadFile?fileId=${response.data.id}`;
formData.imageFileId = response.data.id;
formData.imageFileUrl = `/virtual-patient-manage/fileManage/downloadFile?fileId=${response.data.id}`;
};
const handleRemove = () => {
formData.iconBase64 = "";
formData.imageFileUrl = "";
formData.imageFileId = "";
fileList.value = [];
};
const beforeUpload: UploadProps["beforeUpload"] = async rawFile => {
// png|jpg 10M
if (
rawFile.type !== "image/png" ||
rawFile.type == "image/jpg" ||
rawFile.type == "image/jpeg"
) {
const type = rawFile.type.split("/")[1];
if (!["png", "jpg", "jpeg"].includes(type)) {
ElMessage.error("上传文件格式务必PNG|JPG|JPEG");
return false;
} else if (rawFile.size / 1024 / 1024 > 10) {
@ -57,7 +60,14 @@ defineExpose({
formData[key] = item[key];
}
}
formData.imageFileUrl = `/virtual-patient-manage/fileManage/downloadFile?fileId=${formData.imageFileId}`;
isEditFlag.value = true;
fileList.value = [];
if (formData.imageFileUrl) {
fileList.value.push({
url: formData.imageFileUrl
});
}
id.value = item.id;
}
}
@ -72,44 +82,33 @@ const closeDialog = () => {
};
const emit = defineEmits(["update"]);
const reset = () => {
if (isEditFlag.value) {
ruleFormRef.value.resetFields([
"diagnosticCriteria",
"diagnosisAssessmentFlag",
"requireCheckFlag",
"expectedDiagnosisResult",
"normalResult"
]);
} else {
ruleFormRef.value.resetFields();
}
// refWangEditor.value.valueHtml = "";
ruleFormRef.value.resetFields();
fileList.value = [];
isEditFlag.value = false;
};
const save = (formEl: FormInstance | undefined) => {
formEl.validate(async (valid, fields) => {
if (valid) {
// formData.result = refWangEditor.value.valueHtml;
// const params = {
// ...formData,
// result: refWangEditor.value.valueHtml,
// diseaseId: route.query.id
// };
const params = {
...formData,
imageFileUrl: undefined
};
if (isEditFlag.value) {
// const res: any = await updateSupportInspect({
// ...params,
// id: id.value
// });
const res: any = await updateHuman({
...params,
id: id.value
});
if (res.code === 200) {
message("修改成功", { type: "success" });
id.value = "";
}
} else {
// const res: any = await addSupportInspect(params);
// if (res.code === 200) {
// message("", { type: "success" });
// }
const res: any = await createHuman(params);
if (res.code === 200) {
message("新增成功", { type: "success" });
}
}
dialogVisible.value = false;
emit("update");
@ -143,7 +142,7 @@ const save = (formEl: FormInstance | undefined) => {
:rules="rules"
label-width="120px"
>
<el-form-item label="选择数字人形象" prop="code">
<el-form-item label="选择数字人形象" prop="imageFileUrl">
<div class="upload_img">
<el-upload
:limit="1"
@ -155,7 +154,7 @@ const save = (formEl: FormInstance | undefined) => {
:file-list="fileList"
:on-success="handleSuccess"
:before-upload="beforeUpload"
:class="{ hide: formData.iconBase64 !== '' }"
:class="{ hide: formData.imageFileUrl !== '' }"
>
<el-icon><Plus /></el-icon>
@ -163,7 +162,7 @@ const save = (formEl: FormInstance | undefined) => {
<div>
<img
class="el-upload-list__item-thumbnail"
:src="formData.iconBase64"
:src="formData.imageFileUrl"
alt=""
/>
<span class="el-upload-list__item-actions">
@ -180,13 +179,22 @@ const save = (formEl: FormInstance | undefined) => {
<div class="tip">仅支持JPGPNG格式图片尺寸420*746</div>
</div>
</el-form-item>
<el-form-item label="说明 " prop="directoryDesc">
<el-form-item label="名称 " prop="imageName">
<el-input
:maxLength="10"
size="large"
placeholder="请输入"
v-model="formData.imageName"
/>
</el-form-item>
<el-form-item label="说明 " prop="description">
<el-input
:rows="4"
size="large"
:maxLength="500"
type="textarea"
placeholder="请输入"
v-model="formData.directoryDesc"
v-model="formData.description"
/>
</el-form-item>
</el-form>

@ -3,6 +3,9 @@ import { onMounted, ref } from "vue";
import AddEdit from "./addEdit.vue";
import { Edit, Delete } from "@element-plus/icons-vue";
import { downLoadUrl } from "@/utils/auth";
import moreIcon from "@/assets/svg/consultation/more.svg?component";
import { deleteHuman, queryPageList } from "@/api/digitalHuman";
import { message } from "@/utils/message";
const dataList = ref([]);
const activedId = ref("");
const AddEditRef = ref();
@ -16,20 +19,25 @@ const onMouseenter = id => {
const onMouseleave = () => {
activedId.value = "";
};
const handleCommand = async (e: any) => {
const handleCommand = async (e: any, item) => {
if (e === "edit") {
// EditMaterialsRef.value.open(0, item);
AddEditRef.value.open(item);
} else {
// const res: any = await deleteMaterial({
// id: item.id
// });
// if (res.code === 200) {
// message("", { type: "success" });
// getData();
// }
const res: any = await deleteHuman({
id: item.id
});
if (res.code === 200) {
message("删除成功", { type: "success" });
getData();
}
}
};
const getData = async () => {
const res: any = await queryPageList();
if (res.code === 200) {
dataList.value = res.data;
}
};
const getData = () => {};
onMounted(() => {
getData();
});
@ -57,10 +65,10 @@ onMounted(() => {
@mouseleave.prevent="onMouseleave()"
>
<div class="folder_img">
<img :src="downLoadUrl(item.fileResourceId)" alt="" />
<img :src="downLoadUrl(item.imageFileId)" alt="" />
</div>
<div :title="item.materialName" class="name">
{{ item.materialName }}
<div :title="item.imageName" class="name">
{{ item.imageName }}
</div>
<el-dropdown
@command="e => handleCommand(e, item)"
@ -81,7 +89,7 @@ onMounted(() => {
</el-dropdown>
</div>
</div>
<AddEdit ref="AddEditRef" />
<AddEdit @update="getData" ref="AddEditRef" />
</div>
</template>
<style lang="scss" scoped>
@ -115,8 +123,9 @@ onMounted(() => {
background: #f5f5f5;
img {
width: 130px;
height: 130px;
width: 190px;
height: 190px;
border-radius: 12px 12px 0 0;
}
}

@ -0,0 +1,149 @@
<script setup lang="ts">
import { PaginationProps } from "@pureadmin/table";
import { reactive, ref } from "vue";
import { queryPageList } from "@/api/generalRules";
import { onMounted } from "vue";
defineOptions({
name: "ConsultationResults"
});
const dataList = ref([{}]);
const loading = ref(false);
const AddEditRef = ref(null);
const seachForm = reactive({
description: ""
});
const pagination = reactive<PaginationProps>({
total: 0,
pageSize: 10,
currentPage: 1,
background: true
});
const columns: TableColumnList = [
{
label: "用户问题",
prop: "nameZhPath"
},
{
label: "回复",
prop: "description",
minWidth: 240
},
{
label: "问诊类目",
prop: "defaultAnswer"
},
{
label: "病历编号",
prop: "defaultAnswer"
},
{
label: "姓名",
prop: "defaultAnswer"
},
{
label: "阈值(%",
prop: "defaultAnswer"
},
{
label: "应答状态",
slot: "statusSlot"
},
{
label: "问诊时间",
prop: "defaultAnswer"
},
{
label: "操作",
fixed: "right",
slot: "operation"
}
];
const getData = async () => {
const params = {
pageNum: pagination.currentPage,
pageSize: pagination.pageSize,
description: seachForm.description
};
const res: any = await queryPageList(params);
dataList.value = res.data.records;
pagination.total = res.data.total;
};
function handleSizeChange(val: number) {
pagination.pageSize = val;
getData();
}
function handleCurrentChange(val: number) {
pagination.currentPage = val;
getData();
}
const search = () => {
pagination.currentPage = 1;
pagination.pageSize = 10;
getData();
};
const reset = () => {
seachForm.description = "";
search();
};
const add = () => {
AddEditRef.value.open();
};
const del = item => {};
onMounted(() => {
getData();
});
</script>
<template>
<div class="app-main-content">
<div class="seach">
<el-form :model="seachForm">
<el-row>
<el-form-item label="问题:">
<el-input size="large" v-model="seachForm.description" />
</el-form-item>
<el-button class="ml-8" size="large" @click="search" type="primary"
>搜索</el-button
>
<el-button size="large" @click="reset"></el-button>
</el-row>
</el-form>
</div>
<div class="main-table">
<div class="main-table-title">
<div class="title">
<div class="line" />
<span>问诊结果</span>
</div>
<el-row class="mb-6">
<el-button size="large" @click="add" type="primary"
>批量删除</el-button
>
</el-row>
</div>
<pure-table
align-whole="center"
showOverflowTooltip
table-layout="auto"
:loading="loading"
adaptive
:data="dataList"
:columns="columns"
:pagination="pagination"
:header-cell-style="{
background: 'var(--el-table-row-hover-bg-color)',
color: 'var(--el-text-color-primary)'
}"
@page-size-change="handleSizeChange"
@page-current-change="handleCurrentChange"
><template #operation="{ row }">
<el-button link type="primary" @click="del(row)"></el-button>
</template>
</pure-table>
</div>
</div>
</template>

@ -160,8 +160,8 @@ const beforeUpload: UploadProps["beforeUpload"] = async rawFile => {
// png|jpg 10M
if (
rawFile.type !== "image/png" ||
rawFile.type == "image/jpg" ||
rawFile.type == "image/jpeg"
rawFile.type !== "image/jpg" ||
rawFile.type !== "image/jpeg"
) {
ElMessage.error("上传文件格式务必PNG|JPG|JPEG");
return false;

@ -14,6 +14,7 @@ import {
import { getUserInfo } from "@/utils/auth";
import { useConsultationStoreHooks } from "@/store/modules/consultation";
import { creatDiagnosisProcesse } from "@/api/inquiry";
// import { message } from "@/utils/message";
import { downLoadUrl } from "@/utils/auth";
import { ElMessageBox } from "element-plus";
@ -89,12 +90,13 @@ const getDiagnoseProcessPageList = async () => {
userId: JSON.parse(userInfo).id
};
const res: any = await queryDiagnoseProcessPageList(params);
if (res?.code === 200) {
userPagination.total = res.data?.total;
caseList.value = res.data?.records;
userPagination.total = res.data.total;
caseList.value = res.data.records;
diagnoseProcessList.value = res.data.records;
userPagination.total = res.data.total;
diagnoseProcessList.value = res.data?.records;
userPagination.total = res.data?.total;
}
};
const getMedicalRecPageList = async () => {
const params = {
@ -102,10 +104,12 @@ const getMedicalRecPageList = async () => {
pageSize: casePagination.pageSize
};
const res: any = await queryMedicalRecPageList(params);
medicalRecList.value = res.data.records;
casePagination.total = res.data.total;
if (addFlag.value === true) {
caseList.value = medicalRecList.value;
if (res?.code === 200) {
medicalRecList.value = res.data.records;
casePagination.total = res.data.total;
if (addFlag.value === true) {
caseList.value = medicalRecList.value;
}
}
};
const handleUserChange = val => {

@ -46,7 +46,7 @@ export default ({ command, mode }: ConfigEnv): UserConfigExport => {
proxy: {
// 类型: Record<string, string | ProxyOp 为开发服务器配置自定义代理规则
"/virtual-patient-manage/": {
target: "http://192.168.10.137:8891/",
target: "http://192.168.10.25:8891/",
changeOrigin: true,
secure: false
// eslint-disable-next-line no-shadow

Loading…
Cancel
Save