修改样式
This commit is contained in:
parent
4ab00a7702
commit
6a45190e0b
6531
frontend/src/renderer/package-lock.json
generated
6531
frontend/src/renderer/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
BIN
frontend/src/renderer/src/assets/detection/set.png
Normal file
BIN
frontend/src/renderer/src/assets/detection/set.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
frontend/src/renderer/src/assets/detection/title3.png
Normal file
BIN
frontend/src/renderer/src/assets/detection/title3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 546 B |
BIN
frontend/src/renderer/src/assets/detection/title4.png
Normal file
BIN
frontend/src/renderer/src/assets/detection/title4.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 460 B |
BIN
frontend/src/renderer/src/assets/detection/title5.png
Normal file
BIN
frontend/src/renderer/src/assets/detection/title5.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 450 B |
@ -9,7 +9,7 @@
|
||||
|
||||
<div class="AloneReportComparison-container-body" id="pdf-content">
|
||||
<div style="height: 100%; padding:0 90px; box-sizing: border-box;">
|
||||
<div class="AloneReportComparison-container-bodytitle">体态测量报告单</div>
|
||||
<div class="AloneReportComparison-container-bodytitle">体态测量报告单对比</div>
|
||||
<div class="AloneReportComparison-container-display">
|
||||
<!-- <div class="AloneReportComparison-container-userinfotext">检测时间:{{ detectionInfo.start_time }}</div>
|
||||
<div class="AloneReportComparison-container-userinfotext">ID:{{ detectionInfo.id }}</div> -->
|
||||
@ -202,7 +202,6 @@
|
||||
</div>
|
||||
|
||||
<div class="AloneReportComparison-footer">
|
||||
<!-- <div style="margin-right: 80px;">检测时间:{{ leftInfo.created_at }}</div> -->
|
||||
<div style="margin-right: 80px;">报告时间:{{ getFormattedTime() }}</div>
|
||||
<div>检测医生:{{ leftInfo.creator_name }}</div>
|
||||
</div>
|
||||
|
||||
@ -118,7 +118,7 @@
|
||||
<div class="patient-detail-display">
|
||||
<div class="patient-detailinfo-leftbox">
|
||||
<div class="patient-detailinfo-key">居住地</div>
|
||||
<div class="patient-detailinfo-value">
|
||||
<div class="patient-detailinfo-value" :title="selectedPatient.residence">
|
||||
{{ selectedPatient.residence== null || selectedPatient.residence== '' ? '—':selectedPatient.residence }}
|
||||
</div>
|
||||
</div>
|
||||
@ -183,9 +183,10 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="patient-detailinfo-rightbox">
|
||||
<div class="patient-detailinfo-key">职业</div>
|
||||
<div class="patient-detailinfo-value">
|
||||
<span v-if="selectedPatient && selectedPatient.occupation">
|
||||
<div class="patient-detailinfo-key" title="asdas">职业</div>
|
||||
<div class="patient-detailinfo-value" >
|
||||
<span v-if="selectedPatient && selectedPatient.occupation"
|
||||
>
|
||||
{{ selectedPatient.occupation }}
|
||||
</span>
|
||||
<span v-else>—</span>
|
||||
@ -1345,6 +1346,9 @@ function editClick(){
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
color: rgb(255, 255, 255);
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.patient-detailinfo-leftbox{
|
||||
width: 235px;
|
||||
|
||||
@ -172,7 +172,7 @@
|
||||
<div class="body-foot-box">
|
||||
<div class="body-title-display">
|
||||
<div class="body-son-display">
|
||||
<img src="@/assets/detection/title1.png" alt="" style="margin-right: 8px;">
|
||||
<img src="@/assets/detection/title3.png" alt="" style="margin-right: 8px;">
|
||||
<div class="body-posture-text">足部压力</div>
|
||||
</div>
|
||||
<div class="body-son-display">
|
||||
@ -255,8 +255,8 @@
|
||||
<div class="body-userinfo-box">
|
||||
<div class="body-title-display">
|
||||
<div class="body-son-display">
|
||||
<img src="@/assets/detection/title1.png" alt="" style="margin-right: 8px;">
|
||||
<div class="body-posture-text">用户信息</div>
|
||||
<img src="@/assets/detection/title4.png" alt="" style="margin-right: 8px;">
|
||||
<div class="body-posture-text">患者信息</div>
|
||||
</div>
|
||||
<div class="body-son-display"></div>
|
||||
</div>
|
||||
@ -286,10 +286,10 @@
|
||||
class="userinfo-edit-img" style="cursor: pointer;"
|
||||
@click="viewClick">
|
||||
<ViewUserInfo v-if="isViewUser" :patientInfo="patientInfo"
|
||||
@closeViewUserInfo="closeViewUserInfo"/>
|
||||
@closeViewUserInfo="closeViewUserInfo"/>
|
||||
<div class="userinfo-disyplay1">
|
||||
<div class="userinfo-text4">居住地</div>
|
||||
<div class="userinfo-text5">
|
||||
<div class="userinfo-text5" :title="patientInfo.residence">
|
||||
{{ patientInfo.residence ==''||patientInfo.residence ==null ?'—':patientInfo.residence}}
|
||||
</div>
|
||||
</div>
|
||||
@ -317,7 +317,7 @@
|
||||
<div class="body-video-box">
|
||||
<div class="body-title-display">
|
||||
<div class="body-son-display">
|
||||
<img src="@/assets/detection/title1.png" alt="" style="margin-right: 8px;">
|
||||
<img src="@/assets/detection/title5.png" alt="" style="margin-right: 8px;">
|
||||
<div class="body-posture-text">视频</div>
|
||||
</div>
|
||||
<div class="body-son-display">
|
||||
@ -440,27 +440,21 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- -->
|
||||
|
||||
|
||||
<!-- <el-dialog class="historyDialogVisible" v-model="historyDialogVisible" center title="查看档案" width="100%">
|
||||
<HistoryDashboard v-if="historyDialogVisible" :patientId="patientId"/>
|
||||
</el-dialog> -->
|
||||
<PatientProfile v-if="historyDialogVisible"
|
||||
:archiveType="true"
|
||||
:selectedPatient="selectedPatient"
|
||||
@closePatientProfile="closePatientProfile"/>
|
||||
|
||||
<div v-if="isBig1" style="position: fixed;top: 0;right: 0;
|
||||
width: 100%;height: 100vh;z-index: 9999;background: red;border: 2px solid #b0b0b0">
|
||||
<div v-if="isBig1" style="position: fixed;top: 122px;right: 0;
|
||||
background: #323232;
|
||||
width: 100%;height:calc(100% - 122px);z-index: 9999;border: 2px solid #b0b0b0">
|
||||
<svg @click="isBig1=false" style="position: absolute;right: 10px;top:10px;cursor: pointer;" t="1760175800150" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5743" width="24" height="24"><path d="M796 163.1L511.1 448l-285-285-63.9 64 285 285-285 285 63.8 63.8 285-285 285 285 63.8-63.8-285-285 285-285-63.8-63.9z" fill="#ffffff" p-id="5744"></path></svg>
|
||||
<img v-if="isBig1" :src="camera1ImgSrc" alt=""
|
||||
style="width: 100%;height: calc(100%);object-fit:contain;background:#323232;" />
|
||||
</div>
|
||||
|
||||
<div v-if="isBig2" style="position: fixed;top: 0;right: 0;
|
||||
width: 100%;height: 100vh;z-index: 9999;background: red;border: 2px solid #b0b0b0">
|
||||
<div v-if="isBig2" style="position: fixed;top: 122px;right: 0;
|
||||
width: 100%;height:calc(100% - 122px);z-index: 9999;background: #323232;border: 2px solid #b0b0b0">
|
||||
<svg @click="isBig2=false" style="position: absolute;right: 10px;top:10px;cursor: pointer;" t="1760175800150" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5743" width="24" height="24"><path d="M796 163.1L511.1 448l-285-285-63.9 64 285 285-285 285 63.8 63.8 285-285 285 285 63.8-63.8-285-285 285-285-63.8-63.9z" fill="#ffffff" p-id="5744"></path></svg>
|
||||
<img v-if="isBig2" :src="camera2ImgSrc" alt=""
|
||||
style="width: 100%;height: calc(100%);object-fit:contain;background:#323232;" />
|
||||
@ -1575,9 +1569,6 @@ async function saveDetectionData() {
|
||||
let titile_height = 24
|
||||
try {
|
||||
screenshotLoading.value = true
|
||||
// 显示保存进度
|
||||
ElMessage.info('正在保存检测截图数据...')
|
||||
|
||||
// 检查是否有活跃的会话ID
|
||||
if (!patientInfo.value.sessionId) {
|
||||
throw new Error('请先开始检测再进行数据保存')
|
||||
@ -1939,6 +1930,9 @@ const cameraSubmit = async () => {
|
||||
} else {
|
||||
ElMessage.error(result.message)
|
||||
}
|
||||
}else {
|
||||
const result = await response.json()
|
||||
ElMessage.error(result.message)
|
||||
}
|
||||
}
|
||||
|
||||
@ -2598,6 +2592,9 @@ function viewClick(){
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
color: rgb(255, 255, 255);
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.userinfo-line{
|
||||
width: 2px;
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
平衡体态检测系统
|
||||
<span v-if="licenseBadge" :class="['license-badge', licenseClass]">{{ licenseBadge }}</span>
|
||||
<button v-if="showActivateButton" class="activate-btn" @click="goActivate">激活</button>
|
||||
<!-- <span class="trial-text">试用期:2天</span> -->
|
||||
<span v-if="isTrialText" class="trial-text">{{ trialText }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
@ -19,7 +19,7 @@
|
||||
<div class="user-line"></div>
|
||||
<div class="user-info">
|
||||
<img src="@/assets/new/u13.png" alt="Avatar" style="width: 30px;height: 30px;">
|
||||
<span class="username">{{ userInfo.name }}</span>
|
||||
<span class="username" @click="isUpdateUserInfo = true">{{ userInfo.name }}</span>
|
||||
<div class="user-line"></div>
|
||||
<span class="username user-return" @click="isTip = true">退出登录</span>
|
||||
</div>
|
||||
@ -58,6 +58,31 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pop-up-mask updateUserInfo-up-mask" v-if="isUpdateUserInfo">
|
||||
<div class="pop-up-tip-container">
|
||||
<div class="pop-up-tip-header">
|
||||
<div>修改用户信息</div>
|
||||
<img src="@/assets/header/closepage.png" alt="" style="cursor: pointer;"
|
||||
@click="userCancel">
|
||||
</div>
|
||||
<el-form :model="userInfo" :rules="formRules" label-width="80px"
|
||||
style="padding-right:40px;padding-top: 10px;">
|
||||
<el-form-item label="账号">
|
||||
<el-input v-model="userInfo.username" placeholder="请输入" style="color: #fff !important " disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名">
|
||||
<el-input v-model="userInfo.name" placeholder="请输入"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="电话">
|
||||
<el-input v-model="userInfo.phone" placeholder="请输入"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="tipconfirmbutton-box">
|
||||
<div class="pop-up-tip-cancelbutton" @click="userCancel">取消</div>
|
||||
<el-button type="primary" class="tipconfirmbutton" @click="userConfirm">确定</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -70,10 +95,12 @@
|
||||
import License from '@/views/License.vue'
|
||||
const isLicense = ref(false)
|
||||
const isTip = ref(false) // 显示提示框
|
||||
|
||||
const isUpdateUserInfo =ref(false)
|
||||
const router = useRouter()
|
||||
const authStore = useAuthStore()
|
||||
const time = ref("");
|
||||
const isTrialText =ref(false)
|
||||
const trialText = ref('')
|
||||
const userInfo = reactive({
|
||||
username: '医生',
|
||||
avatar: ''
|
||||
@ -154,7 +181,9 @@
|
||||
if ((data.license_type || '').toLowerCase() === 'trial') {
|
||||
const exp = data.expires_at ? new Date(data.expires_at) : null
|
||||
const expStr = exp ? `${exp.getFullYear()}-${String(exp.getMonth()+1).padStart(2,'0')}-${String(exp.getDate()).padStart(2,'0')}` : ''
|
||||
licenseBadge.value = expStr ? `试用版(截止 ${expStr})` : '试用版'
|
||||
licenseBadge.value = '试用'
|
||||
isTrialText.value = true
|
||||
trialText.value = `试用版(截止 ${expStr})`
|
||||
licenseClass.value = 'badge-trial'
|
||||
licenseType.value = 'trial'
|
||||
showActivateButton.value = true
|
||||
@ -189,6 +218,12 @@ function tipCancel(){
|
||||
function tipLogin(){
|
||||
handleLogout()
|
||||
isTip.value = false
|
||||
}
|
||||
function userCancel(){
|
||||
isUpdateUserInfo.value = false
|
||||
}
|
||||
function userConfirm(){
|
||||
isUpdateUserInfo.value = false
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -260,6 +295,7 @@ function tipLogin(){
|
||||
.username {
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.user-dropdown {
|
||||
@ -485,4 +521,190 @@ function tipLogin(){
|
||||
.patientprofile-container-info .el-select__placeholder{
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.updateUserInfo-up-mask{
|
||||
position: fixed;
|
||||
z-index: 99;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
}
|
||||
.updateUserInfo-up-mask .pop-up-tip-container {
|
||||
width: 500px;
|
||||
height:320px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
margin: auto;
|
||||
border-radius: 10px;
|
||||
background: linear-gradient(135deg, rgba(53, 67, 90, 1) 0%, rgba(53, 67, 90, 1) 0%, rgba(62, 79, 105, 1) 99%, rgba(62, 79, 105, 1) 100%);
|
||||
}
|
||||
.updateUserInfo-up-mask .pop-up-camera-container{
|
||||
width: 608px;
|
||||
height:495px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
margin: auto;
|
||||
background: linear-gradient(135deg, rgb(53, 67, 90) 0%, rgb(53, 67, 90) 0%, rgb(62, 79, 105) 99%, rgb(62, 79, 105) 100%);
|
||||
border-radius: 10px;
|
||||
box-shadow: rgb(17, 24, 33) 0px 0px 10px;
|
||||
}
|
||||
.updateUserInfo-up-mask .pop-up-camera-header{
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
box-sizing: border-box;
|
||||
padding: 0 40px;
|
||||
font-family: 'Noto Sans SC';
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-size: 20px;
|
||||
color: #FFFFFF;
|
||||
text-align: left;
|
||||
border-radius:10px 10px 0 0;
|
||||
}
|
||||
|
||||
.updateUserInfo-up-mask .pop-up-tip-header{
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
box-sizing: border-box;
|
||||
padding: 0 30px;
|
||||
font-family: 'Noto Sans SC';
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-size: 20px;
|
||||
color: #FFFFFF;
|
||||
text-align: left;
|
||||
}
|
||||
.updateUserInfo-up-mask .tipconfirmbutton-box{
|
||||
width:100%;
|
||||
display:flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
padding: 0 30px;
|
||||
padding-top: 10px;
|
||||
}
|
||||
.updateUserInfo-up-mask .tipconfirmbutton{
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-size: 14px;
|
||||
color: rgb(255, 255, 255);
|
||||
background:#0b94d5;
|
||||
border:1px solid #0b94d5;
|
||||
width: 80px;
|
||||
height: 40px;
|
||||
}
|
||||
.updateUserInfo-up-mask .tipconfirmbutton:hover{
|
||||
background:#14aaff;
|
||||
border:1px solid #14aaff;
|
||||
}
|
||||
|
||||
.updateUserInfo-up-mask .pop-up-tip-text{
|
||||
width:100%;
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
color: #FFFFFF;
|
||||
text-align: left;
|
||||
height: 80px;
|
||||
box-sizing: border-box;
|
||||
padding-left: 30px;
|
||||
padding-right: 30px;
|
||||
padding-top:20px ;
|
||||
/* padding:20px 10px 30px; */
|
||||
}
|
||||
|
||||
.updateUserInfo-up-mask .pop-up-tip-cancelbutton{
|
||||
width: 80px;
|
||||
height: 40px;
|
||||
background-color: #597194;
|
||||
border-radius: 4px;
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 20px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.updateUserInfo-up-mask .pop-up-tip-cancelbutton:hover{
|
||||
background-color: #14aaff;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.updateUserInfo-up-mask :deep(.el-input__inner) {
|
||||
color: #ffffff;
|
||||
font-size: 14px;
|
||||
height: 40px;
|
||||
}
|
||||
.updateUserInfo-up-mask :deep(.el-input.is-disabled .el-input__inner) {
|
||||
color: #787878;
|
||||
}
|
||||
|
||||
.updateUserInfo-up-mask :deep(.el-select__placeholder) {
|
||||
color: #ffffff;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
:deep(.el-input.is-disabled .el-input__wrapper) {
|
||||
background-color: #2a3649;
|
||||
box-shadow: none;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: transparent;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style>
|
||||
|
||||
|
||||
.updateUserInfo-up-mask .el-select__placeholder {
|
||||
color: #ffffff;
|
||||
font-size: 14px;
|
||||
}
|
||||
.updateUserInfo-up-mask .el-input.is-disabled .el-input__wrapper {
|
||||
background-color: #2a3649;
|
||||
box-shadow: none;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.updateUserInfo-up-mask .el-input__wrapper {
|
||||
background-color: #2a3649;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: rgb(54, 54, 54);
|
||||
border-radius: 4px;
|
||||
box-shadow: none;
|
||||
height: 40px;
|
||||
}
|
||||
.updateUserInfo-up-mask .el-input__inner {
|
||||
color: #ffffff;
|
||||
}
|
||||
.updateUserInfo-up-mask .el-form-item__label {
|
||||
font-size: 14px !important;
|
||||
font-family: 'Noto Sans SC';
|
||||
font-weight: 400 !important;
|
||||
font-style: normal !important;
|
||||
color: #FFFFFF !important;
|
||||
line-height: 40px !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
color: #FFFFFF;
|
||||
padding-bottom: 10px;">视频2</div>
|
||||
<div style="width: 640px;height: 360px;display: flex;justify-content: center;align-items: center;">
|
||||
<img :src="BACKEND_URL+'/' + ImageDetailsInfo.foot1_image" alt="" style="width: 100%;height: 100%;object-fit:contain;">
|
||||
<img :src="BACKEND_URL+'/' + ImageDetailsInfo.foot2_image" alt="" style="width: 100%;height: 100%;object-fit:contain;">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@ -126,14 +126,14 @@
|
||||
<div class="ImageDetailsCompare-content-title">{{ ImageDetailsInfoLeft.id }}视频1</div>
|
||||
<img :src="BACKEND_URL+'/' + ImageDetailsInfoLeft.foot1_image" alt=""
|
||||
style="width: 500px;height:281px">
|
||||
<div class="ImageDetailsCompare-content-title" style="margin-top: 30px;">{{ ImageDetailsInfoRight.id }}视频1</div>
|
||||
<img :src="BACKEND_URL+'/' + ImageDetailsInfoRight.foot1_image" alt=""
|
||||
<div class="ImageDetailsCompare-content-title" style="margin-top: 30px;">{{ ImageDetailsInfoLeft.id }}视频2</div>
|
||||
<img :src="BACKEND_URL+'/' + ImageDetailsInfoLeft.foot2_image" alt=""
|
||||
style="width: 500px;height:281px">
|
||||
</div>
|
||||
<div class="ImageDetailsCompare-content-imgbox"
|
||||
style="width: 500px;height: 100%;margin-left: 50px;">
|
||||
<div class="ImageDetailsCompare-content-title">{{ ImageDetailsInfoLeft.id }}视频2</div>
|
||||
<img :src="BACKEND_URL+'/' + ImageDetailsInfoLeft.foot2_image" alt=""
|
||||
<div class="ImageDetailsCompare-content-title">{{ ImageDetailsInfoRight.id }}视频1</div>
|
||||
<img :src="BACKEND_URL+'/' + ImageDetailsInfoRight.foot1_image" alt=""
|
||||
style="width: 500px;height:281px">
|
||||
<div class="ImageDetailsCompare-content-title" style="margin-top: 30px;">{{ ImageDetailsInfoRight.id }}视频2</div>
|
||||
<img :src="BACKEND_URL+'/' + ImageDetailsInfoRight.foot2_image" alt=""
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
@click="handleTabClick('activate')">
|
||||
<img v-if="activeTab == 'request'" src="@/assets/license/tab2.png" alt="">
|
||||
<img v-else src="@/assets/license/tab2_1.png" alt="">
|
||||
<span class="license_tabtext">授权申请</span>
|
||||
<span class="license_tabtext">激活授权</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="activeTab == 'request'" class="tab-content">
|
||||
|
||||
@ -35,7 +35,10 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="年龄">
|
||||
<el-input v-model="calculatedAge" placeholder="自动计算" readonly suffix-icon="Calendar" />
|
||||
<el-input v-model="calculatedAge" placeholder="自动计算" readonly>
|
||||
<template #suffix>岁</template>
|
||||
</el-input>
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@ -48,7 +51,15 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="居住地" prop="residence">
|
||||
<el-input v-model="patientForm.residence" placeholder="请输入" clearable />
|
||||
<el-cascader
|
||||
v-model="selectedOptions"
|
||||
:options="options"
|
||||
:props="customprops"
|
||||
placeholder="请选择省市区"
|
||||
@change="handleChange"
|
||||
style="width:100%"
|
||||
/>
|
||||
<!-- <el-input v-model="patientForm.residence" placeholder="请输入" clearable /> -->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@ -67,7 +78,9 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="鞋码" prop="shoe_size">
|
||||
<el-input v-model="patientForm.shoe_size" placeholder="请输入" clearable />
|
||||
<el-input v-model="patientForm.shoe_size" placeholder="请输入" clearable>
|
||||
<template #suffix>码</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@ -113,6 +126,8 @@ import { ref, reactive, computed, onMounted } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { patientAPI } from '../services/api.js'
|
||||
import { regionData } from 'element-china-area-data';
|
||||
|
||||
const emit = defineEmits([ 'closecreatbox']);
|
||||
const router = useRouter()
|
||||
const props = defineProps({
|
||||
@ -127,6 +142,20 @@ const props = defineProps({
|
||||
default: null
|
||||
},
|
||||
})
|
||||
const selectedOptions = ref([]);
|
||||
const options = ref(regionData);
|
||||
const customprops = {
|
||||
checkStrictly: true, // 关键配置:解除父子关联
|
||||
expandTrigger: 'hover',
|
||||
value: 'label', // 对应地区编码字段
|
||||
label: 'label', // 对应地区名称字段
|
||||
children: 'children' // 对应子级地区字段
|
||||
};
|
||||
|
||||
function handleChange (e){
|
||||
}
|
||||
|
||||
|
||||
// 表单引用
|
||||
const patientFormRef = ref()
|
||||
// 表单数据
|
||||
@ -151,12 +180,18 @@ const saveAndDetectLoading = ref(false)
|
||||
const patienttitle = ref("新建患者档案")
|
||||
// 生命周期
|
||||
onMounted(() => {
|
||||
|
||||
// 从认证状态管理中加载用户信息
|
||||
if (props.patienttype == 'edit') {
|
||||
patienttitle.value = '编辑患者档案'
|
||||
let tempInfo = props.selectedPatient
|
||||
tempInfo.age = calculateAgeres(tempInfo.birth_date )
|
||||
Object.assign(patientForm, tempInfo)
|
||||
if(props.selectedPatient.residence !='' &&props.selectedPatient.residence !=null
|
||||
){
|
||||
selectedOptions.value = props.selectedPatient.residence.split('-')
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -331,7 +366,9 @@ const savePatient = async () => {
|
||||
medical_history: '', // 添加病史字段
|
||||
notes: '' // 添加备注字段
|
||||
}
|
||||
|
||||
if(selectedOptions.value.length >0 ){
|
||||
patientData.residence = selectedOptions.value.join('-')
|
||||
}
|
||||
try {
|
||||
const response = await patientAPI.createPatient(patientData)
|
||||
if (response.success) {
|
||||
@ -363,6 +400,9 @@ const updatePatient = async () => {
|
||||
residence: patientForm.residence,
|
||||
idcode: patientForm.idcode
|
||||
}
|
||||
if(selectedOptions.value.length >0 ){
|
||||
patientData.residence = selectedOptions.value.join('-')
|
||||
}
|
||||
try {
|
||||
const response = await patientAPI.updatePatient(patientForm.id, patientData)
|
||||
if (response.success) {
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
<div class="patientprofile-title-display" style="margin-bottom:10px">
|
||||
<div class="patientprofile-son-display">
|
||||
<img src="@/assets/archive/usericon.png" alt="" style="margin-right: 8px;">
|
||||
<div class="profile-text">用户信息</div>
|
||||
<div class="profile-text">患者信息</div>
|
||||
</div>
|
||||
<div class="patientprofile-son-display"></div>
|
||||
</div>
|
||||
@ -34,7 +34,7 @@
|
||||
</div>
|
||||
<div class="patientprofile-userinfo-box">
|
||||
<div class="patientprofile-userinfo-text1">居住地</div>
|
||||
<div class="patientprofile-userinfo-text2">{{ selectedPatient.residence }}</div>
|
||||
<div class="patientprofile-userinfo-text2" :title="selectedPatient.residence">{{ selectedPatient.residence }}</div>
|
||||
<div class="patientprofile-userinfo-text3">身高</div>
|
||||
<div class="patientprofile-userinfo-text2">{{ selectedPatient.height }}cm</div>
|
||||
</div>
|
||||
@ -48,13 +48,13 @@
|
||||
<div class="patientprofile-userinfo-text1">电话</div>
|
||||
<div class="patientprofile-userinfo-text2">{{ selectedPatient.phone }}</div>
|
||||
<div class="patientprofile-userinfo-text3">邮箱</div>
|
||||
<div class="patientprofile-userinfo-text2">{{ selectedPatient.email }}</div>
|
||||
<div class="patientprofile-userinfo-text2" :title="selectedPatient.email">{{ selectedPatient.email }}</div>
|
||||
</div>
|
||||
<div class="patientprofile-userinfo-box">
|
||||
<div class="patientprofile-userinfo-text1">职业</div>
|
||||
<div class="patientprofile-userinfo-text2">{{ selectedPatient.occupation }}</div>
|
||||
<div class="patientprofile-userinfo-text3">身份证号</div>
|
||||
<div class="patientprofile-userinfo-text2">{{ selectedPatient.idcode }}</div>
|
||||
<div class="patientprofile-userinfo-text2" :title="selectedPatient.idcode">{{ selectedPatient.idcode }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="patientprofile-container-leftbottombox">
|
||||
@ -135,7 +135,7 @@
|
||||
<div class="patientprofile-son-display">
|
||||
<div class="patientprofile-son-text">测试医生:{{ selectedRecord.creator_name }}</div>
|
||||
<div class="patientprofile-son-text">就诊时间:{{ selectedRecord.start_time }}</div>
|
||||
<div class="patientprofile-son-text">档案ID:{{ selectedPatient.id }}</div>
|
||||
<div class="patientprofile-son-text">档案ID:{{ selectedRecord.id }}</div>
|
||||
<div v-if="archiveType == true" class="patientprofile-son-detectiontext">正在检测</div>
|
||||
|
||||
</div>
|
||||
@ -180,7 +180,7 @@
|
||||
<el-checkbox
|
||||
:value="item.id" size="large" style="display:flex; align-items: center; justify-content: space-between">
|
||||
<div>{{ item.id }}</div>
|
||||
<span>{{ item.timestamp }}</span>
|
||||
<span>{{ getTime(item.timestamp) }}</span>
|
||||
</el-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
@ -227,7 +227,7 @@
|
||||
<el-checkbox
|
||||
:value="item.id" size="large" style="display:flex; align-items: center; justify-content: space-between">
|
||||
<div>{{ item.id }}</div>
|
||||
<span>{{ item.timestamp }}</span>
|
||||
<span>{{ getTime(item.timestamp) }}</span>
|
||||
</el-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
@ -266,9 +266,12 @@
|
||||
<div style="width: 50%;height: calc(100% - 10px) ">
|
||||
<div class="patientprofile-container-dataInfobg-rightbox">
|
||||
<div class="patientprofile-container-dataInfobg-lefttext" style="padding-top:0px">处理</div>
|
||||
<el-select v-model="profileInfo.treatment_info" placeholder="请选择">
|
||||
<el-option :label="'保持观察,不予处理'" :value="'保持观察,不予处理'" />
|
||||
</el-select>
|
||||
<el-select v-model="profileInfo.treatment_info" placeholder="请选择"
|
||||
style="width: calc(100% - 80px);">
|
||||
<el-option :label="'保持观察,不予处理'" :value="'保持观察,不予处理'" />
|
||||
</el-select>
|
||||
<img src="@/assets/detection/set.png" alt=""
|
||||
style="width: 24px;margin-left: 5px;cursor: pointer;">
|
||||
</div>
|
||||
<div class="patientprofile-container-dataInfobg-rightbottombox">
|
||||
<div class="patientprofile-container-dataInfobg-lefttext" style="padding-top:0px">建议</div>
|
||||
@ -384,6 +387,14 @@ const useImgList = ref([])// 图片
|
||||
const useVideoList = ref([])// 视频
|
||||
const selectedData = ref([]) // 列表选中的数据
|
||||
|
||||
function getTime(time){
|
||||
let date = ""
|
||||
if(time != null && time != ''){
|
||||
date = time.split(' ')[1]
|
||||
}
|
||||
return date
|
||||
}
|
||||
|
||||
function getNo(order) {
|
||||
if(order<10){
|
||||
return '0'+order
|
||||
@ -943,7 +954,7 @@ historyAPI.VideoDelById(ids).then((response)=>{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
padding-left: 30px;
|
||||
padding-left: 20px;
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
.patientprofile-userinfo-text1{
|
||||
@ -955,12 +966,15 @@ historyAPI.VideoDelById(ids).then((response)=>{
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
}
|
||||
.patientprofile-userinfo-text2{
|
||||
width: 150px;
|
||||
width: 166px;
|
||||
font-family: 'Noto Sans SC';
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
color: #FFFFFF;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.patientprofile-userinfo-text3{
|
||||
width: 70px;
|
||||
|
||||
@ -122,7 +122,6 @@
|
||||
<div class="PopUpOnlyReport-title2">备注</div>
|
||||
<div class="PopUpOnlyReport-border3">{{ detectionInfo.suggestion_info }}</div>
|
||||
<div class="PopUpOnlyReport-footer">
|
||||
<div style="margin-right: 80px;">检测时间:{{ detectionInfo.created_at }}</div>
|
||||
<div style="margin-right: 80px;">报告时间:{{ getFormattedTime() }}</div>
|
||||
<div>检测医生:{{ detectionInfo.creator_name }}</div>
|
||||
</div>
|
||||
|
||||
@ -185,7 +185,6 @@
|
||||
<div class="PopUpReport-title2">备注</div>
|
||||
<div class="PopUpReport-border3">{{ detectionInfo.suggestion_info }}</div>
|
||||
<div class="PopUpReport-footer">
|
||||
<div style="margin-right: 80px;">检测时间:{{ detectionInfo.created_at }}</div>
|
||||
<div style="margin-right: 80px;">报告时间:{{ getFormattedTime() }}</div>
|
||||
<div>检测医生:{{ detectionInfo.creator_name }}</div>
|
||||
</div>
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
@click="generatePDF">
|
||||
<div class="ReportComparison-container-body" id="pdf-content">
|
||||
<div style="height: 100%; padding:0 90px; box-sizing: border-box;">
|
||||
<div class="ReportComparison-container-bodytitle">体态测量报告单</div>
|
||||
<div class="ReportComparison-container-bodytitle">体态测量报告单对比</div>
|
||||
<div class="ReportComparison-container-display">
|
||||
<!-- <div class="ReportComparison-container-userinfotext">检测时间:{{ detectionInfo.start_time }}</div>
|
||||
<div class="ReportComparison-container-userinfotext">ID:{{ detectionInfo.id }}</div> -->
|
||||
@ -341,7 +341,6 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="ReportComparison-footer">
|
||||
<!-- <div style="margin-right: 80px;">检测时间:{{ rightInfo.created_at }}</div> -->
|
||||
<div style="margin-right: 80px;">报告时间:{{ getFormattedTime() }}</div>
|
||||
<div>检测医生:{{ rightInfo.creator_name }}</div>
|
||||
</div>
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
<el-checkbox
|
||||
:value="item.id" size="large" style="display:flex; align-items: center; justify-content: space-between">
|
||||
<div>{{ item.id }}</div>
|
||||
<span>{{ item.timestamp }}</span>
|
||||
<span>{{ getTime(item.timestamp) }}</span>
|
||||
</el-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
@ -56,6 +56,13 @@ const selectIndex = ref(0) // 图片详情选中的索引
|
||||
onMounted(() => {
|
||||
useImgList.value = props.imageList
|
||||
})
|
||||
function getTime(time){
|
||||
let date = ""
|
||||
if(time != null && time != ''){
|
||||
date = time.split(' ')[1]
|
||||
}
|
||||
return date
|
||||
}
|
||||
function cancel(is) {
|
||||
if(is == true && selectInfo.value.id !=null){
|
||||
emit("closeSelectData",true,selectInfo.value)
|
||||
|
||||
69
frontend/src/renderer/src/views/SetProcess.vue
Normal file
69
frontend/src/renderer/src/views/SetProcess.vue
Normal file
@ -0,0 +1,69 @@
|
||||
<template>
|
||||
<div class="SetProcess-dialog">
|
||||
<div class="SetProcess-container">
|
||||
<div class="form-container-header">
|
||||
<div>设置处理信息</div>
|
||||
<img src="@/assets/header/closepage.png" alt="" style="cursor: pointer;" @click="handleCancel">
|
||||
</div>
|
||||
<div>
|
||||
<div v-for="(item, index) in processData" class="process-item">
|
||||
<div style="width: 30px;">{{ index + 1 }}</div>
|
||||
<el-input v-model="item.name" placeholder="请输入" clearable></el-input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { systemAPI } from '../services/api.js'
|
||||
import { licenseAPI } from '../services/api.js'
|
||||
const emit = defineEmits([ 'closeSetProcess']);
|
||||
|
||||
|
||||
onMounted(async () => {
|
||||
|
||||
})
|
||||
const processData = ref([{name:'1'}])
|
||||
function handleCancel() {
|
||||
emit('closeSetProcess', true);
|
||||
}
|
||||
function handleConfirm() {
|
||||
emit('closeSetProcess', true);
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.SetProcess-dialog{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
background-color: rgba(0,0,0,0.7);
|
||||
z-index: 9999;
|
||||
}
|
||||
.SetProcess-container {
|
||||
width: 800px;
|
||||
height:654px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
margin: auto;
|
||||
background: #394860;
|
||||
border-radius: 10px;
|
||||
box-shadow: 0px 0px 16px rgba(17, 24, 33, 1);
|
||||
color: #fff;
|
||||
}
|
||||
.process-item{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
||||
@ -58,7 +58,7 @@
|
||||
<div class="ViewUserInfo-detail-display">
|
||||
<div class="ViewUserInfo-detailinfo-leftbox">
|
||||
<div class="ViewUserInfo-detailinfo-key">居住地</div>
|
||||
<div class="ViewUserInfo-detailinfo-value">
|
||||
<div class="ViewUserInfo-detailinfo-value" :title="patientInfo.residence">
|
||||
{{ patientInfo.residence== null || patientInfo.residence== '' ? '—':patientInfo.residence }}
|
||||
</div>
|
||||
</div>
|
||||
@ -205,7 +205,8 @@ const formatDate = (date) => {
|
||||
.ViewUserInfo-content-top{
|
||||
position: relative;
|
||||
width: calc(100%);
|
||||
height: 130px;
|
||||
height: 80px;
|
||||
margin-bottom: 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
@ -292,5 +293,8 @@ const formatDate = (date) => {
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
color: rgb(255, 255, 255);
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
</style>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user