Files
sykl-sm/pages/userCase/userCase.vue
2022-07-15 10:49:55 +08:00

511 lines
17 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="content">
<view class="caseUser">
<view class="caseUser-left">
<view class="caseUser-left-number">
患者{{ caseInfo.name }}
</view>
<view class="caseUser-left-tool">
<view class="caseUser-left-number">
年龄{{ caseInfo.age }}
</view>
<view class="caseUser-left-number">
性别{{ caseInfo.sex == 'woman' ? '女' : '男' }}
</view>
</view>
</view>
<view class="caseUser-img">
<image v-if="caseImg" @click="openImg(caseImg)" :src="caseImg" mode="aspectFill"></image>
<block v-else>
<image src="/static/imgs/caseTips.png" mode="aspectFill"></image>
<view @click="updImg" class="caseUser-tips">上传</view>
</block>
</view>
<view class="caseUser-label">
<view class="caseUser-label-see">
<view class="caseUser-label-name">
初始值
</view>
<view class="caseUser-label-number">
{{ countInfo.first != 0 ? countInfo.first : '-' }}
</view>
</view>
<view class="caseUser-label-see">
<view class="caseUser-label-name">
最高值
</view>
<view class="caseUser-label-number">
{{ countInfo.max != 0 ? countInfo.max : '-' }}
</view>
</view>
<view class="caseUser-label-see">
<view class="caseUser-label-name">
最新值
</view>
<view class="caseUser-label-number">
{{ countInfo.last != 0 ? countInfo.last : '-' }}
</view>
</view>
</view>
</view>
<view class="caseRemark">
<view class="caseRemark-title">
症状说明
</view>
<view class="caseRemark-text">
{{ caseInfo.remark }}
</view>
</view>
<view class="caseTime" v-if="timeInfo.length > 0">
<view class="caseTime-label" v-for="(items, index) in timeInfo" :key="index">
<view class="caseTime-date">
{{ items.created_at }}
</view>
<view class="caseTime-cont" @click="showSee(items.item.gout_case_log_id)" v-if="items.type == 'case_log'">
<view class="caseTime-cont-left" :class="{active : items.item.cover}">
<view class="caseTime-cont-name">
{{ items.text }} - {{ items.item.quantity }}umol
</view>
<view class="nowrap-multi caseTime-cont-text">
{{ items.item.remark }}
</view>
</view>
<image class="caseTime-cont-img" :src="items.item.cover" mode="aspectFill"></image>
</view>
<view class="caseTime-cont" @click="$Router.push({name: 'Indexdetails', params: {id: items.item.goods.goods_id}})" v-else>
<view class="caseTime-cont-left">
<view class="caseTime-cont-name">
{{ items.text }}
</view>
<view class="nowrap caseTime-cont-text">
商品 {{ items.item.goods.goods_name }}
</view>
<view class="caseTime-cont-text" style="margin: 0;">
状态 {{ items.item.state }}
</view>
</view>
<image class="caseTime-cont-img" :src="items.item.goods.cover" mode="aspectFill"></image>
</view>
</view>
</view>
<!-- 记录尿酸值弹出 -->
<view class="recordBack" v-if="recordShow"></view>
<view class="recordCont" v-if="recordShow">
<view class="recordCont-title">
<view class="recordCont-title-text">
尿酸详情
</view>
<image @click="recordClick" class="recordCont-title-close" src="/static/icons/uricacidClose.png" mode="aspectFill"></image>
</view>
<view class="recordCont-form">
<view class="site-input">
<label>尿酸值</label>
<view class="recordCont-title-input">
{{ LogInfo.quantity }}<text>umol</text>
</view>
</view>
<view class="site-input">
<label>备注描述</label>
<view class="site-remarks">
{{ LogInfo.remark }}
</view>
</view>
<view class="site-data">
<label>尿酸记录日期</label>
<view class="site-data-text">
{{ LogInfo.created_at }}
</view>
</view>
<view class="site-input" v-if="LogInfo.cover">
<label>图片信息</label>
<image class="issueNew-icon" @click="openImg(LogInfo.cover)" :src="LogInfo.cover" mode="aspectFill"></image>
</view>
</view>
</view>
</view>
</template>
<script>
import { goutSee, goutCover, DetLog } from '@/apis/interfaces/gout'
import { uploads } from '@/apis/interfaces/uploading'
export default {
data() {
return {
caseImg : '',
caseInfo : '',
LogInfo : '', //记录详情
countInfo : '',
timeInfo : [],
recordShow : false,
};
},
onLoad() {
goutSee().then(res => {
this.caseInfo = res.case
this.countInfo = res.count
this.timeInfo = res.timelines
this.caseImg = res.case.cover
console.log(res.case)
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
methods:{
// 查看图片
openImg(img) {
uni.previewImage({
current: img,
urls:[img]
})
},
// 上传图片
updImg(type){
uni.chooseImage({
count : 1,
success : path => {
uploads([{
uri : path.tempFilePaths[0]
}]).then(res => {
this.caseImg = res.url[0]
// 上传头像
this.settingInfo(res.path[0]);
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
})
},
// 上传图片-提交
settingInfo(value) {
goutCover(this.caseInfo.gout_case_id, {
cover: value
}).then(res => {
uni.showToast({
title: '上传成功',
icon : 'none'
})
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 查看详情
showSee(val) {
// 获取详情
this.lastDet(val);
this.recordShow = true
},
// 新增尿酸弹出
recordClick() {
this.recordShow = !this.recordShow
},
// 尿酸列表-详情
lastDet(id) {
DetLog(id).then(res => {
this.LogInfo = res
this.LogId = id
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
}
}
</script>
<style lang="scss" scoped>
.content{
overflow: hidden;
background: linear-gradient(to bottom, rgba($color: $mian-color, $alpha: .2), white);
padding: 30rpx;
box-sizing: border-box;
}
.caseUser {
background-color: #6e79ec;
color: #FFFFFF;
padding: 30rpx 0;
box-sizing: border-box;
position: relative;
height: 310rpx;
border-radius: 10rpx 10rpx 0 0;
.caseUser-left {
height: 160rpx;
padding-left: 30rpx;
box-sizing: border-box;
.caseUser-left-tool {
display: flex;
margin-top: 30rpx;
.caseUser-left-number {
flex: 2;
font-weight: normal;
}
}
.caseUser-left-number {
line-height: 48rpx;
font-weight: 600;
}
}
.caseUser-img {
width: 120rpx;
height: 140rpx;
border-radius: 6rpx;
position: absolute;
background-color: #a8b0ff;
padding: 6rpx;
box-sizing: border-box;
right: 30rpx;
top: 25rpx;
image {
width: 100%;
height: 100%;
}
.caseUser-tips {
position: absolute;
top: 0;
left: 0;
color: #707070;
font-weight: 600;
font-size: 28rpx;
line-height: 140rpx;
text-align: center;
width: 100%;
}
}
.caseUser-label {
background-color: #5963cb;
color: #FFFFFF;
display: flex;
padding: 20rpx 0;
.caseUser-label-see {
flex: 3;
text-align: center;
.caseUser-label-name {
font-size: 26rpx;
margin-bottom: 10rpx;
}
.caseUser-label-number {
font-weight: 600;
}
}
}
}
.caseRemark {
background-color: #F8F8F8;
padding: 30rpx;
box-sizing: border-box;
.caseRemark-title {
font-weight: 600;
margin-bottom: 20rpx;
}
.caseRemark-text {
font-size: 28rpx;
color: #666;
line-height: 48rpx;
}
}
.caseTime {
background-color: #FFFFFF;
padding: 50rpx;
box-sizing: border-box;
position: relative;
&::after {
position: absolute;
content: '';
left: 50rpx;
top: 55rpx;
background-color: #ebebeb;
width: 2rpx;
height: 100%;
}
.caseTime-label {
position: relative;
padding-left: 50rpx;
&::after {
position: absolute;
content: '';
left: -13rpx;
z-index: 99;
top: 6rpx;
background-color: #ebebeb;
width: 26rpx;
height: 26rpx;
border-radius: 50%;
}
&:last-child::before {
position: absolute;
content: '';
left: -1rpx;
z-index: 99;
top: 6rpx;
background-color: #FFFFFF;
width: 2rpx;
height: 200%;
}
.caseTime-date {
font-size: 26rpx;
color: #666666;
font-weight: 600;
}
.caseTime-cont {
background-color: #eff0ff;
margin: 20rpx 0 40rpx;
padding: 20rpx 30rpx;
border-radius: 10rpx;
box-sizing: border-box;
position: relative;
height: 180rpx;
.caseTime-cont-left {
width: 100%;
&.active {
width: calc(100% - 100rpx);
}
.caseTime-cont-name {
color: #6e79ec;
font-size: 30rpx;
}
.caseTime-cont-text {
font-size: 28rpx;
color: #666666;
margin-top: 20rpx;
}
.caseTime-cont-price {
color: red;
margin-top: 20rpx;
}
}
.caseTime-cont-img {
position: absolute;
right: 20rpx;
top: 20rpx;
width: 100rpx;
height: 100rpx;
border-radius: 6rpx;
}
}
}
}
// 弹出
.recordBack {
position: fixed;
width: 100%;
height: 100%;
background-color: rgba($color: #000000, $alpha: .4);
left: 0;
top: 0;
z-index: 99;
}
.recordCont {
position: fixed;
width: 100%;
left: 0;
bottom: 0;
background-color: #FFFFFF;
z-index: 100;
overflow-y: scroll;
height: 70vh;
border-radius: 30rpx 30rpx 0 0;
padding: 30rpx;
box-sizing: border-box;
.recordCont-title {
border-bottom: 2rpx solid #F2F2F2;
padding-bottom: 30rpx;
display: flex;
line-height: 54rpx;
position: relative;
.recordCont-title-close {
width: 40rpx;
height: 40rpx;
margin-top: 7rpx;
}
.recordCont-title-text {
width: 100%;
text-align: center;
}
.recordCont-title-btn view {
background-color: red;
width: 150rpx;
text-align: center;
color: #FFFFFF;
height: 54rpx;
line-height: 54rpx;
border-radius: 40rpx;
font-size: 28rpx;
position: absolute;
right: 0;
top: 0;
}
}
.recordCont-form {
margin-top: 30rpx;
.site-input {
margin-bottom: 30rpx;
label {
margin-bottom: 20rpx;
display: block;
font-weight: 600;
}
.recordCont-title-input {
display: flex;
font-size: 40rpx;
font-weight: 600;
line-height: 60rpx;
text {
font-size: 32rpx;
font-weight: normal;
color: #adadad;
padding-left: 10rpx;
}
}
}
.site-remarks {
background-color: #F2F2F2;
border-radius: 10rpx;
padding: 20rpx;
box-sizing: border-box;
textarea {
width: 100%;
height: 80rpx;
}
text {
text-align: right;
display: block;
font-size: 26rpx;
color: #54975e;
}
}
.site-data {
margin: 40rpx 0;
display: flex;
label {
flex: 1;
font-weight: 600;
}
}
}
}
.issueNew-icon{
width: 200rpx;
height: 200rpx;
}
</style>