Files
xk-doctor-wx/subPackages/sub_patient/patient_details.vue

229 lines
6.7 KiB
Vue

<template>
<view>
<view class="white p-32" v-if="info&&!loading">
<view class="flex-row flex-ali-center m-b-48" v-if="info">
<u-image width="96rpx" height="96rpx" shape="circle" :src="getAvatar">
<u-loading slot="loading"></u-loading>
</u-image>
<view class="flex-col flex-jus-sp m-l-32">
<view class="flex-row flex-ali-center">
<d-text :text="info.patient.name" className="content-c fs-32"></d-text>
<d-text :text="info.patient.sex==1?'男':'女'" className="tips-c m-l-2"></d-text>
<d-text :text="info.age+'岁'" className="tips-c m-l-2"></d-text>
</view>
<d-text :text="getMobile(info.patient.mobile)"></d-text>
</view>
</view>
<view class="m-b-48 flex-row flex-jus-sp flex-ali-center">
<d-text text="备注" width="85rpx"></d-text>
<view class="flex-row flex-ali-center">
<d-text width="558" :text="info.remark.remark" className="content-c m-r-16" :lines="1">
</d-text>
<u-icon name="arrow-right" color="#A7ABB0" size="32"></u-icon>
</view>
</view>
<view class="m-b-48 flex-row flex-jus-sp flex-ali-center">
<d-text text="分组" width="85rpx"></d-text>
<view class="flex-row flex-ali-center flex-jus-end">
<d-text :text="getGroup(info.group)" width="558" align="right" className="content-c m-r-16"
:lines="1"></d-text>
<u-icon name="arrow-right" color="#A7ABB0" size="32"></u-icon>
</view>
</view>
</view>
<view class="m-t-2 white" v-if="!loading">
<u-tabs :list="tabs" :is-scroll="false" :current="current" @change="current=$event;loading2=true;getList()"
bar-width="20" inactive-color="#6C7380"></u-tabs>
<view class="p-32" v-if="list[current].length>0&&!loading2">
<block v-if="current==0">
<view class="flex-col" :class="{'m-b-32':(i+1)!=list[current].length}"
v-for="(item,i) in list[current]" :key="i">
<d-text text="2022-11-16"></d-text>
<view class="flex-row flex-ali-center m-t-16">
<d-text text="主诉:"></d-text>
<d-text :text="item.main_suit" className="content-c"></d-text>
</view>
<view class="flex-row flex-ali-center flex-jus-sp m-t08">
<d-text width="85rpx" text="诊断:" className=""></d-text>
<d-text :text="item.diagnose" className="flex-1 content-c" :lines="1">
</d-text>
</view>
</view>
</block>
<block v-else>
<view class="flex-col" v-for="(item,i) in list[current]" :key="i">
<view class="flex-row flex-jus-sp flex-ali-center">
<d-text :text="$u.timeFormat(item.created_at, 'yyyy-mm-dd hh:MM:ss')" color="#6C7380">
</d-text>
<d-text :text="states[item.status].label" :color="states[item.status].color"></d-text>
</view>
<view class="m-t-32 flex-col">
<view class="flex-row m-b-16">
<d-text text="医生" align="justify" width="112"></d-text>
<d-text :text="item.doctor_name" className="content-c m-l-48"></d-text>
</view>
<view class="flex-row m-b-16">
<d-text text="诊断" width="112" align="justify"></d-text>
<d-text :text="item.clinical_diagnose" className="content-c m-l-48 flex-1" :lines="1">
</d-text>
</view>
<view class="flex-row m-b-16">
<d-text text="药品" width="112" align="justify"></d-text>
<d-text :text="getDrug(item.drug_name)" className="content-c m-l-48 flex-1" :lines="1"></d-text>
</view>
<!-- <view class="flex-row">
<d-text text="问诊记录" width="112" align="justify"></d-text>
<d-text text="点击查看" :color="states[0].color" className="m-l-48"></d-text>
</view> -->
<!-- <view class="m-t-16 flex-row flex-jus-end">
<u-button :throttle-time="0" shape="circle" size="mini"
:custom-style="{backgroundColor: 'transparent !important'}" plain :ripple="true">
查看详情
</u-button>
</view> -->
</view>
</view>
</block>
</view>
<view class="flex-row flex-jus-center">
<d-empty text="无记录" v-if="!loading2&&list[current].length==0"></d-empty>
</view>
<d-loading-page :loading="loading2"></d-loading-page>
</view>
<d-loading-page :loading="loading"></d-loading-page>
</view>
</template>
<script>
import {
patientInfo,
recordList,
prescripRecord
} from '@/api/all.js'
export default {
data() {
return {
loading: false,
loading2: true,
info: {},
tabs: [{
name: '就诊记录'
}, {
name: '处方记录'
}],
list: {
0: [],
1: []
},
states: {
3: {
color: '#2979FF',
label: '待使用'
},
6: {
color: '#A7ABB0',
label: '已失效'
},
4: {
color: '#A7ABB0',
label: '已使用'
}
},
current: 0,
id: -1
}
},
computed: {
getAvatar() {
return require(`@/static/image/${this.info.patient.sex%2==0?'nv':'nan'}.png`)
}
},
onLoad(op) {
this.id = op['id'] || -1
this.id > 0 && this.getList()
this.id > 0 && this.patientInfo()
},
methods: {
getDrug(obj={}) {
let list = (obj.chinese.length>0?obj.chinese:obj.west)||[]
let drugs =[]
console.log(list);
for (let i = 0; i < list.length; i++) {
if (obj.chinese.length>0) {
for (let j = 0; j < JSON.parse(list[i].content).length; j++) {
drugs.push(JSON.parse(list[i].content)[j]['name'])
}
} else{
drugs.push(JSON.parse(list[i].content)['drug_name'])
}
}
return drugs.join()
},
getGroup(list) {
let groups = []
for (var i = 0; i < list.length; i++) {
groups.push(list[i].name)
}
return groups
},
getMobile(v) {
return v.replace(/^(\d{3})\d{4}(\d+)/, "$1****$2")
},
patientInfo() {
patientInfo({
up_id: this.id
}).then(res => {
if (res.errcode == 0) {
this.info = res.data
this.$nextTick(() => {
this.loading = false
})
} else {
this.$toast(res.msg);
this.loading = false
}
})
},
async getList() {
let res = {}
this.current == 0 && (res = await recordList({
up_id: this.id
}))
this.current == 1 && (res = await prescripRecord({
up_id: this.id
}))
if (res.errcode == 0) {
this.list[this.current] = res.data && res.data.list ? res.data.list : res.data || []
this.$nextTick(() => {
this.loading2 = false
})
} else {
this.$toast(res.msg);
this.loading2 = false
}
}
}
}
</script>
<style>
page {
background-color: #F9FAFB;
}
</style>
<style lang="scss" scoped>
.text {
width: 122rpx;
font-size: 28rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #A7ABB0;
text-align-last: justify;
}
.text:after {
content: '';
width: 100%;
display: inline-block;
}
</style>