fix: 分辨率自适应,测试问题修改

dev_病例管理
xiangcongshuai 10 months ago
parent 8f940705f0
commit 8c0663abf8

@ -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

@ -95,7 +95,7 @@ export default {
{
path: "/caseManagement/edit",
name: "caseManagementEdit",
component: () => import("@/views/caseManagement/list/edit.vue"),
component: () => import("@/views/caseManagement/list/edit/index.vue"),
meta: {
title: "编辑病历",
showLink: false,

@ -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,208 @@
<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;
}
}
}
}
</style>

@ -0,0 +1,178 @@
<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;
}
}
}
}
</style>

@ -0,0 +1,117 @@
<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;
}
}
}
}
</style>

@ -0,0 +1,176 @@
<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">
<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="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;
}
}
}
}
</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,8 +1,9 @@
<script setup lang="ts">
import { reactive, ref } from "vue";
import AddCase from "./AddCase.vue";
import SelectPeople from "./SelectPeople.vue";
const AddCaseRef = ref();
const SelectPeopleRef = ref();
const formData = reactive({
patientGender: "",
directoryDesc: "",
@ -18,6 +19,9 @@ const rules = {
const add = () => {
AddCaseRef.value.open();
};
const openPeopleDialog = () => {
SelectPeopleRef.value.open();
};
</script>
<template>
<div class="ElectronicCase">
@ -32,10 +36,11 @@ const add = () => {
</div>
</div>
<el-form
style="padding-right: 40px"
ref="ruleFormRef"
:model="formData"
:rules="rules"
label-width="80px"
label-width="100px"
>
<el-row>
<el-col :span="8">
@ -45,7 +50,9 @@ const add = () => {
</el-col>
<el-col :span="8">
<el-form-item label="虚拟人" prop="patientGender">
<el-button type="primary" link> 请选择数字人 </el-button>
<el-button @click="openPeopleDialog" type="primary" link>
请选择数字人
</el-button>
</el-form-item>
</el-col>
<el-col :span="8">
@ -98,14 +105,204 @@ const add = () => {
</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-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-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;
@ -125,5 +322,12 @@ const add = () => {
}
}
}
.desc {
font-weight: 400;
font-size: 12px;
color: #a0a0a0;
padding-left: 100px;
margin-bottom: 24px;
}
}
</style>

@ -1,5 +1,8 @@
<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 { ref } from "vue";
const activedIndex = ref(0);
const navList = ref([
@ -19,6 +22,9 @@ const navList = ref([
name: "处置计划"
}
]);
const changeType = val => {
activedIndex.value = val;
};
</script>
<template>
@ -29,19 +35,23 @@ 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" />
</div>
</template>
<style lang="scss" scoped>
.editCase {
display: flex;
flex-direction: row !important;
width: 100%;
padding: 0;
.editCase_nav {

Loading…
Cancel
Save