Commit aec518aa authored by gengchunlei's avatar gengchunlei

居民端小程序初始化文件与配置

parent 8bc6a62b
......@@ -52,7 +52,7 @@ export default {
if (!token) {
token = sessionStorage.getItem('token')
if (process.env.NODE_ENV !== 'production') {
token = '72b191d3-e3a0-49ce-884a-1dd3452b5d9a'
token = '4ef7a32e-c217-44b6-ac5d-8ad9a91d38a0'
}
}
if (token) {
......
<template>
<div class='all-back'>
<van-nav-bar title='慢病管理' left-text='' left-arrow
@click-right='toSearch' @click-left='toBack'>
<template #right>
<doc-icon type='doc-search' style='color: #262626' />
</template>
</van-nav-bar>
<div class='top-title'>
我的待随访({{ total }})
</div>
<van-tabs v-model:active='active' @change='changeTab'>
<van-tab :name='item.name' v-for='item in tabList' :key='item.name'>
<template #title>
<span>{{ item.title }}({{ item.num }})</span>
</template>
</van-tab>
</van-tabs>
<van-pull-refresh v-model='loading' @refresh='onRefresh'
:disabled='isRefreshDisable'>
<div class='list-data' ref='list'>
<van-list
v-model:loading='loadingTable'
:finished='finished'
:finished-text="detailInfo.length ? '没有更多了' : ''"
@load='onMore'
>
<div class='mt-10 white-back p-16' v-for='item in detailInfo' :key='item.id'>
<div class='flex items-center'>
<div class='base-title'>{{ item.residentName }}</div>
<div class='second-title plr-8'>{{ getInfoByIdCard(item.idCard).age }}岁</div>
<div class='second-title plr-6'>{{ item.genderName }}</div>
</div>
<div class='mt-3 flex items-center'>
<div class='detail-left'>
身份证号
</div>
<div class='detail-right'>
{{ $idCardHide(item.idCard) }}
</div>
</div>
<div class='mt-3 flex items-center'>
<div class='detail-left'>
是否逾期
</div>
<div class='detail-right'>
{{ item.isOverdueName }}
</div>
</div>
<div class='mt-3 flex items-center'>
<div class='detail-left'>
逾期天数
</div>
<div class='detail-right'>
{{ item.overdueDay }} 天
</div>
</div>
<div class='flex mt-3' style='align-items: baseline'>
<div class='detail-left'>
慢病标签
</div>
<div class='detail-right' style='flex: 1'>
<ChronicTag :list='item.chronicTagsArray' />
</div>
</div>
<van-divider class='mt-3' />
<div class='mt-3 flex word-right'>
<div></div>
<div>
<van-button round size='small' class='btn' @click='toGeneralDetail(item)'>详情
</van-button>
<van-button round size='small' class='btn' style='margin-left: 16px'
@click='toAddGeneral(item)'>通用随访
</van-button>
</div>
</div>
</div>
</van-list>
<div class='text-center empty' v-if='!detailInfo.length'>
<img src='@/assets/image/doctor/empty.png' alt='' style='width: 1.2rem;'>
<p>暂无数据</p>
</div>
</div>
</van-pull-refresh>
</div>
</template>
<script>
import dayjs from 'dayjs'
import { getVisitAll, queryVisitByPage } from '@/api/doctor/generalFU.js'
import ChronicTag from '@/doctor/components/chronicTag/ChronicTag.vue'
import { backHome, getInfoByIdCard } from '@/utils/common'
export default {
name: 'List',
components: {
ChronicTag
},
data() {
return {
active: 1,
tabList: [
{ title: '高血压', name: 1, num: 0 },
{ title: '糖尿病', name: 2, num: 0 },
{ title: '冠心病', name: 3, num: 0 },
{ title: '脑卒中', name: 4, num: 0 },
{ title: '慢阻肺', name: 5, num: 0 },
{ title: '慢性肾病', name: 6, num: 0 },
{ title: '血脂异常', name: 7, num: 0 }
],
detailInfo: [],
total: 0,
// 下拉刷新
loading: false,
isRefreshDisable: false,
//列表刷新
loadingTable: false,
pagination: {
total: 0,
pageIndex: 1,
pageSize: 5
},
finished: false
}
},
mounted() {
const list = this.$refs.list
list.addEventListener('scroll', () => {
if (list.scrollTop > 0) {
this.isRefreshDisable = true
} else {
this.isRefreshDisable = false
}
})
},
methods: {
getInfoByIdCard,
changeTab() {
this.detailInfo = []
this.pagination.pageIndex = 1
this.load()
},
onMore() {
this.pagination.pageIndex++
this.load()
},
load(loading = true) {
const query = {
diseaseType: this.active,
pageIndex: this.pagination.pageIndex,
pageSize: this.pagination.pageSize
}
getVisitAll(query, loading).then(res => {
console.log('getVisitAll', res)
this.detailInfo = this.detailInfo.concat(res.data || [])
this.total = this.detailInfo.length
this.finished = this.detailInfo.length >= this.pagination.total
}).finally(() => {
this.loading = false
this.loadingTable = false
})
},
scrollHandle(dom) {
if (!dom) return
if (dom.scrollTop > 0) {
this.isRefreshDisable = true
} else {
this.isRefreshDisable = false
}
},
onRefresh() {
this.detailInfo = []
this.pagination.pageIndex = 1
this.load(false)
},
toGeneralDetail(item) {
this.$router.push({
path: `/doctor/resident/base`,
query: {
residentId: item.residentInfoId
}
})
},
toAddGeneral(val) {
const { id, ...others } = val
this.$router.push({
path: `/doctor/followUp/generalFU/add`,
query: { ...others }
})
},
toSearch() {
this.$router.push({
path: `/doctor/followUp/search`
})
},
toBack() {
backHome()
}
}
}
</script>
<style scoped lang='less'>
.all-back {
background: #F5F5F5;
.top-title {
padding: 10px 12px;
}
.white-back {
background: #FFFFFF;
}
.mt-10 {
margin-top: 10px;
}
.p-16 {
padding: 16px;
}
.plr-8 {
padding: 0px 8px;
}
.plr-6 {
padding: 0px 6px;
}
.base-title {
font-weight: bold;
font-size: 16px;
}
.second-title {
background: #F0F3FF;
line-height: 24px;
margin-left: 10px;
}
.detail-left {
width: 104px;
font-size: 14px;
color: #8C8C8C;
}
.detail-right {
font-size: 14px;
}
.word-right {
justify-content: space-between;
align-items: center;
}
.btn {
background: #F0F3FF;
color: #607FF0;
border: 0px;
line-height: 26px;
height: 26px;
//padding: 4px 8px 4px 8px;
padding: 0px 8px;
}
.list-data {
height: calc(100vh - 140px);
overflow-y: auto;
}
}
</style>
\ No newline at end of file
<template>
<div class='all-back'>
<van-pull-refresh v-model='isLoading'
success-text='刷新成功'
@refresh='onRefresh'
:disabled='isRefreshDisable'
>
<van-nav-bar title='慢病管理' left-text='' left-arrow>
<template #right>
<van-icon name='search' size='18' />
</template>
</van-nav-bar>
<div class='top-title'>
我的待随访(16)
</div>
<van-tabs v-model:active='active'>
<van-tab :title='item.title' :name='item.name' v-for='item in tabList'></van-tab>
</van-tabs>
<div
class='list-data'
v-infinite-scroll='loadMore'
:infinite-scroll-disabled='loading'
infinite-scroll-distance='10'
ref='list'
>
<div class='mt-10 white-back p-16' v-for='item in detailInfo'>
<div class='flex items-center'>
<div class='base-title'>张曼玉</div>
<div class='second-title plr-8'>24岁</div>
<div class='second-title plr-6'></div>
</div>
<div class='mt-3 flex items-center'>
<div class='detail-left'>
身份证号
</div>
<div class='detail-right'>
3604211901****3128
</div>
</div>
<div class='mt-3 flex items-center'>
<div class='detail-left'>
高危评估
</div>
<div class='detail-right'>
高危人群
</div>
</div>
<div class='mt-3 flex items-center'>
<div class='detail-left'>
专病高危评估
</div>
<div class='detail-right'>
高血压高危
</div>
</div>
<div class='flex' style='align-items: baseline'>
<div class='detail-left' :style="{marginTop: item.diseaseList.length ? '0px': '12px'}">
慢病标签
</div>
<div class='detail-right' style='flex: 1'>
<div class='flex items-center '
style='flex-wrap: wrap;'>
<div v-for='item1 in item.diseaseList' :class='`mt-3 ill-tabs ill-tabs-${item1.id}`'>
{{ item1.name }}
</div>
</div>
</div>
</div>
<van-divider class='mt-3' />
<div class='mt-3 flex word-right'>
<div></div>
<div>
<van-button round size='small' class='btn' @click='toGeneralDetail'>详情</van-button>
<van-button round size='small' class='btn' style='margin-left: 16px' @click='toAddGeneral'>通用随访
</van-button>
</div>
</div>
</div>
</div>
</van-pull-refresh>
</div>
</template>
<script>
import { showFailToast } from 'vant'
const tabList = [
{ title: '高血压', name: 1, num: 3 },
{ title: '糖尿病', name: 2, num: 3 },
{ title: '冠心病', name: 3, num: 3 },
{ title: '脑卒中', name: 4, num: 3 },
{ title: '慢阻肺', name: 5, num: 3 },
{ title: '慢性肾病', name: 6, num: 3 },
{ title: '血脂异常', name: 7, num: 3 }
]
export default {
name: 'List',
data() {
return {
active: 1,
tabList,
loading: false,
isLoading: false,
detailInfo: [
{
diseaseList: [
{ id: 1, name: '高血压' },
{ id: 2, name: '糖尿病' },
{ id: 3, name: '冠心病' },
{ id: 3, name: '脑卒中' },
{ id: 5, name: '慢阻肺' },
{ id: 6, name: '慢性肾病' },
{ id: 7, name: '血脂异常' }
]
},
{
diseaseList: [
{ id: 1, name: '高血压' },
{ id: 3, name: '冠心病' },
{ id: 5, name: '慢阻肺' }
]
},
{
diseaseList: [
{ id: 1, name: '高血压' },
{ id: 6, name: '慢性肾病' },
{ id: 7, name: '血脂异常' }
]
}
],
noDataShow: false,
param: {
pageIndex: 0,
pageSize: 10
},
isRefreshDisable: false,
scrollTop: 0
}
},
watch: {
scrollTop(newval) {
if (newval > 0) {
this.isRefreshDisable = true
} else {
this.isRefreshDisable = false
}
}
},
mounted() {
this.$nextTick(() => {
const list = this.$refs.list
list.addEventListener('scroll', () => {
this.scrollTop = list.scrollTop
})
})
},
methods: {
onRefresh() {
this.isLoading = true
this.loading = true
this.param.pageIndex = 1
this.getRecordInfo()
},
loadMore() {
this.loading = true
this.param.pageIndex += 1
this.getRecordInfo()
},
getRecordInfo(callBack) {
let par = {
...this.param
}
getNetworkInfoByPhone(par).then(({ data = [] }) => {
this.loading = false
if (this.isLoading) { //刷新时先赋空
this.detailInfo = []
}
this.detailInfo = this.detailInfo.concat(data.data.dataList)
if (this.detailInfo.length == 0) {
this.noDataShow = true
} else {
this.noDataShow = false
}
if (data.data && data.data.length < this.param.pageSize) {
this.loadText = '暂无更多数据'
} else {
this.loading = false
}
this.isLoading = false
callBack && callBack()
}).catch(res => {
showFailToast('系统异常,请联系客服!')
this.loading = false
this.isLoading = false
})
},
toGeneralDetail() {
this.$router.push({
path: `/doctor/followUp/generalFU/detail`
})
},
toAddGeneral() {
this.$router.push({
path: `/doctor/followUp/generalFU/add`
})
}
}
}
</script>
<style scoped lang='less'>
.all-back {
background: #F5F5F5;
.top-title {
padding: 10px 12px;
}
.white-back {
background: #FFFFFF;
}
.mt-10 {
margin-top: 10px;
}
.p-16 {
padding: 16px;
}
.plr-8 {
padding: 0px 8px;
}
.plr-6 {
padding: 0px 6px;
}
.base-title {
font-weight: bold;
font-size: 16px;
}
.second-title {
background: #F0F3FF;
line-height: 24px;
margin-left: 10px;
}
.detail-left {
width: 104px;
font-size: 14px;
color: #8C8C8C;
}
.detail-right {
font-size: 14px;
}
.ill-tabs {
line-height: 20px;
border-radius: 20px;
padding: 3px 8px 3px 8px;
}
.ill-tabs-1 {
background: #FFF2E8;
color: #F83B00;
}
.ill-tabs-2 {
margin-left: 2px;
background: #FFF1F0;
color: #F5222D;
}
.ill-tabs-3 {
margin-left: 2px;
background: #FFF0F7;
color: #F61E54;
}
.ill-tabs-4 {
margin-left: 2px;
background: #FFF7E6;
color: #D46B08;
}
.ill-tabs-5 {
margin-left: 2px;
background: #F4FFE6;
color: #A0BA01;
}
.ill-tabs-6 {
margin-left: 2px;
background: #ECEBFF;
color: #AA63E2;
}
.ill-tabs-7 {
margin-left: 2px;
background: #E6F9FF;
color: #4D86DA;
}
.word-right {
justify-content: space-between;
align-items: center;
}
.btn {
background: #F0F3FF;
color: #607FF0;
border: 0px;
line-height: 26px;
padding: 4px 8px 4px 8px;
}
.list-data {
height: calc(100vh - 140px);
overflow-y: auto;
}
}
</style>
\ No newline at end of file
This diff is collapsed.
<template>
<van-config-provider :theme-vars="themeVars">
<div class="h-full resident-home">
<router-view v-slot="{ Component }">
<Transition name="route" mode="out-in">
<component :is="Component" v-if="visible"/>
</Transition>
</router-view>
</div>
</van-config-provider>
</template>
<script>
import { getDict } from '@/api/base.js'
import { useStore } from './store/index.js'
export default {
data() {
return {
visible: false,
themeVars: {
primaryColor: '#54CCBD',
// 按键
buttonPrimaryBackground: '#54CCBD',
buttonPrimaryBorderColor: '#54CCBD',
buttonDefaultBorderColor: '#BFBFBF',
buttonNormalFontSize: '.16rem',
pickerConfirmActionColor: '#54CCBD',
checkboxCheckedIconColor: '#54CCBD',
// tab
tabsBottomBarColor: '#54CCBD',
// 级联选项
cascaderActiveColor: '#54CCBD',
// 表单相关
cellVerticalPadding: '.15rem',
cellTextColor: '#262626',
fieldLabelColor: '#262626',
cellBorderColor: '#d9d9d9'
}
}
},
setup() {
const store = useStore()
return { store }
},
created() {
this.init()
},
methods: {
async init() {
console.log(this.visible)
const res = await getDict()
this.store.$patch({ dict: res.data || {} })
this.visible = true
}
}
}
</script>
<style lang="less" scoped>
</style>
<template>
<div class="h-full pb-5">
<div class="p-3 text-16 text-black text-center shrink-0 top-bar">
<span class="back-bt">
<span @click="onBack">
<doc-icon type="doc-left" />
</span>
</span>
<span>居民慢病筛查详情</span>
</div>
<div class="py-4 border-bottom">
<div class="px-4 doc-title">居民信息</div>
</div>
<div class="px-4 list">
<div v-for="item in columnsBase" :key="item.key"
class="flex justify-between py-4 border-bottom item">
<span class="shrink-0 mr-2 label">{{ item.title }}</span>
<span v-if="item.key === 'idCard'">{{ $idCardHide(residentInfo.idCard) || '-' }}</span>
<span class="text-end" v-else>{{ residentInfo[item.key] || '-' }}</span>
</div>
</div>
<div class="py-4 border-bottom">
<div class="px-4 doc-title">筛查信息</div>
</div>
<div class="px-4 list">
<template v-for="item in columnsScreen" :key="item.key">
<div v-if="item.key == 'pressure'" class="pt-3">
<table class="w-full">
<tr>
<td style="width: 7.1em">血压值(mmHg)</td>
<td>低压值(左侧)</td>
<td></td>
<td>高压值(右侧)</td>
</tr>
<tr>
<td>
第1次测量
</td>
<td>
{{ info.pressureOneDbp || '-' }}
</td>
<td>/</td>
<td>
{{ info.pressureOneSbp || '-' }}
</td>
</tr>
<tr>
<td>
第2次测量
</td>
<td class="flex">
{{ info.pressureTwoDbp || '-' }}
</td>
<td>/</td>
<td>
{{ info.pressureTwoSbp || '-' }}
</td>
</tr>
</table>
</div>
<div v-else
class="flex justify-between py-4 border-bottom item">
<span class="shrink-0 mr-2 label">{{ item.title }}</span>
<div>
<span>{{ info[item.key] || '-' }}</span>
<span v-if="item.unit" class="ml-1">{{ item.unit }}</span>
</div>
</div>
</template>
</div>
</div>
</template>
<script>
import { showNotify } from 'vant'
import { querScreenDetail } from '@/api/resident/screening.js'
export default {
data() {
return {
info: {},
columnsBase: [
{ title: '姓名', key: 'residentName' },
{ title: '证件号码', key: 'idCard'},
{ title: '性别', key: 'genderName' },
{ title: '出生日期', key: 'dataBirth' },
{ title: '年龄', key: 'currentAge' },
{ title: '民族', key: 'nationalName' },
{ title: '本人电话', key: 'telephone' },
{ title: '现住址', key: 'presentCodeName' },
{ title: '详细地址', key: 'nowAddress' },
{ title: '户籍地址', key: 'registeredCodeName' },
{ title: '详细地址', key: 'permanentAddress' }
],
columnsScreen: [
{ title: '年龄', key: 'currentAge', unit: '岁' },
{ title: '既往史', key: 'medicalHistoryName' },
{ title: '身高', key: 'height', unit: 'cm' },
{ title: '体重', key: 'weight', unit: 'kg' },
{ title: 'BMI', key: 'bmi', unit: 'kg/m²' },
{ title: '腰围', key: 'waistline', unit: 'cm' },
{ title: '是否吸烟', key: 'isSmokingName' },
{ title: '家族史', key: 'familyHistoryName' },
{ title: '血压值', key: 'pressure' },
{ title: '空腹血糖', key: 'fastingGlucose', unit: 'mmol/L' },
{ title: '低密度脂蛋白胆固醇', key: 'ldlCholesterin', unit: 'mmol/L' },
{ title: '血清总胆固醇', key: 'serumCholesterin', unit: 'mmol/L' },
{ title: '高密度脂蛋白胆固醇', key: 'hdlCholesterin', unit: 'mmol/L' },
{ title: '运动', key: 'exerciseIntensityName' },
{ title: '慢病高危评估结果', key: 'screenResultName' },
{ title: '筛查日期', key: 'screenDate' },
{ title: '筛查机构', key: 'screenUnitName' }
]
}
},
computed: {
id() {
return this.$route.params.id
},
residentInfo() {
return this.info.residentsRecord || {}
}
},
created() {
if (!this.id) {
showNotify({ type: 'warning', message: '未获取到查询信息', duration: 0 })
return
}
this.init()
},
methods: {
init() {
querScreenDetail({ id: this.id }).then(res => {
this.info = res.data || {}
})
},
onBack() {
this.$router.back()
}
}
}
</script>
<style lang="less" scoped>
@import url('../utils/common.less');
table {
text-align: left;
border-bottom: 1px solid var(--van-cell-border-color);
>tr {
>td {
padding-left: 14px;
padding-bottom: 12px;
&:first-child {
text-align: right;
padding-left: 0;
}
}
}
}
.list {
.label {
min-width: 5em;
}
}
</style>
<template>
<div class="h-full">
<div class="p-3 text-16 text-black text-center shrink-0 top-bar">
<!-- <span class="back-bt">
<span @click="onBack">
<doc-icon type="doc-left" />
</span>
</span> -->
<span>慢病筛查记录</span>
</div>
<div class='card' v-for='item in list' :key="item.id">
<div class="p-4">
<div class='text-16 font-semibold mb-2 title'>{{ item.residentName }}</div>
<div class="mb-2">
<span class="label">证件号码</span>
<span>{{ $idCardHide(item.idCard) }}</span>
</div>
<div class="mb-2">
<span class="label">筛查日期</span>
<span>{{ item.screenDate }}</span>
</div>
<div class="mb-2">
<span class="label">筛查机构</span>
<span>{{ item.screenUnitName }}</span>
</div>
<div class="bt-box flex pt-2 justify-end">
<van-button type="primary" size="small"
@click="toDetail(item)">详 情</van-button>
</div>
</div>
<div class="divide"></div>
</div>
</div>
</template>
<script>
import { showNotify } from 'vant'
import { querScreenList } from '@/api/resident/screening.js'
export default {
data() {
return {
list: []
}
},
computed: {
routeQuery() {
return this.$route.query
},
idCard() {
return this.routeQuery.idCard
}
},
created() {
if (!this.idCard) {
showNotify({ type: 'warning', message: '未获取到用户信息', duration: 0 })
return
}
this.init()
},
methods: {
init() {
querScreenList({ idCard: this.idCard }).then(res => {
this.list = res.data || []
})
},
toDetail(record) {
if (!record) return
const path = `/resident/screening/first/detail/${record.id}`
this.$router.push({ path })
}
}
}
</script>
<style lang="less" scoped>
@import url('../utils/common.less');
.card {
.label {
display: inline-block;
min-width: 5em;
color: #8C8C8C;
}
.bt-box {
border-top: 1px solid var(--van-border-color);
}
.divide {
border-top: 6px solid #f5f5f5;
}
&:last-child {
.divide { display: none; }
}
}
</style>
<template>
<div class="h-full pb-5">
<div class="p-3 text-16 text-black text-center shrink-0 top-bar">
<span class="back-bt">
<span @click="onBack">
<doc-icon type="doc-left" />
</span>
</span>
<span>居民慢病筛查详情</span>
</div>
<div class="py-4 border-bottom">
<div class="px-4 doc-title">居民信息</div>
</div>
<div class="px-4 list">
<div v-for="item in columnsBase" :key="item.key"
class="flex justify-between py-4 border-bottom item">
<span class="shrink-0 mr-2 label">{{ item.title }}</span>
<span v-if="item.key === 'idCard'">{{ $idCardHide(residentInfo.idCard) || '-' }}</span>
<span class="text-end" v-else>{{ residentInfo[item.key] || '-' }}</span>
</div>
</div>
<div class="py-4 border-bottom">
<div class="px-4 doc-title">筛查信息</div>
</div>
<div class="px-4 list">
<template v-for="item in columnsScreen" :key="item.key">
<div v-if="item.key == 'pressure'" class="pt-3">
<table class="w-full">
<tr>
<td style="width: 7.1em">血压值(mmHg)</td>
<td>低压值(左侧)</td>
<td></td>
<td>高压值(右侧)</td>
</tr>
<tr>
<td>
第1次测量
</td>
<td>
{{ info.pressureOneDbp || '-' }}
</td>
<td>/</td>
<td>
{{ info.pressureOneSbp || '-' }}
</td>
</tr>
<tr>
<td>
第2次测量
</td>
<td class="flex">
{{ info.pressureTwoDbp || '-' }}
</td>
<td>/</td>
<td>
{{ info.pressureTwoSbp || '-' }}
</td>
</tr>
</table>
</div>
<div v-else
class="flex justify-between py-4 border-bottom item">
<span class="shrink-0 mr-2 label">{{ item.title }}</span>
<div>
<span>{{ info[item.key] || '-' }}</span>
<span v-if="item.unit" class="ml-1">{{ item.unit }}</span>
</div>
</div>
</template>
</div>
</div>
</template>
<script>
import { showNotify } from 'vant'
import { querScreenDetail } from '@/api/resident/screening.js'
export default {
data() {
return {
info: {},
columnsBase: [
{ title: '姓名', key: 'residentName' },
{ title: '证件号码', key: 'idCard'},
{ title: '性别', key: 'genderName' },
{ title: '出生日期', key: 'dataBirth' },
{ title: '年龄', key: 'currentAge' },
{ title: '民族', key: 'nationalName' },
{ title: '本人电话', key: 'telephone' },
{ title: '现住址', key: 'presentCodeName' },
{ title: '详细地址', key: 'nowAddress' },
{ title: '户籍地址', key: 'registeredCodeName' },
{ title: '详细地址', key: 'permanentAddress' }
],
columnsScreen: [
{ title: '年龄', key: 'currentAge', unit: '岁' },
{ title: '既往史', key: 'medicalHistoryName' },
{ title: '身高', key: 'height', unit: 'cm' },
{ title: '体重', key: 'weight', unit: 'kg' },
{ title: 'BMI', key: 'bmi', unit: 'kg/m²' },
{ title: '腰围', key: 'waistline', unit: 'cm' },
{ title: '是否吸烟', key: 'isSmokingName' },
{ title: '家族史', key: 'familyHistoryName' },
{ title: '血压值', key: 'pressure' },
{ title: '空腹血糖', key: 'fastingGlucose', unit: 'mmol/L' },
{ title: '低密度脂蛋白胆固醇', key: 'ldlCholesterin', unit: 'mmol/L' },
{ title: '血清总胆固醇', key: 'serumCholesterin', unit: 'mmol/L' },
{ title: '高密度脂蛋白胆固醇', key: 'hdlCholesterin', unit: 'mmol/L' },
{ title: '运动', key: 'exerciseIntensityName' },
{ title: '慢病高危评估结果', key: 'screenResultName' },
{ title: '筛查日期', key: 'screenDate' },
{ title: '筛查机构', key: 'screenUnitName' }
]
}
},
computed: {
id() {
return this.$route.params.id
},
residentInfo() {
return this.info.residentsRecord || {}
}
},
created() {
if (!this.id) {
showNotify({ type: 'warning', message: '未获取到查询信息', duration: 0 })
return
}
this.init()
},
methods: {
init() {
querScreenDetail({ id: this.id }).then(res => {
this.info = res.data || {}
})
},
onBack() {
this.$router.back()
}
}
}
</script>
<style lang="less" scoped>
@import url('../utils/common.less');
table {
text-align: left;
border-bottom: 1px solid var(--van-cell-border-color);
>tr {
>td {
padding-left: 14px;
padding-bottom: 12px;
&:first-child {
text-align: right;
padding-left: 0;
}
}
}
}
.list {
.label {
min-width: 5em;
}
}
</style>
import { defineStore } from 'pinia'
export const useStore = defineStore('chronic', {
state: () => {
return {
// 字典
dict: []
}
},
getters: {},
actions: {
getDict(dict) {
if (!dict) return []
return this.dict[dict] || []
},
getDictValue(dict, value) {
let array = []
if (typeof dict === 'string') {
array = this.dict[dict]
} else {
array = dict
}
if (!array || !array.length) {
return ''
}
let temp = array.find(e => e.value == value) || {}
return temp.name || ''
}
}
})
......@@ -31,6 +31,8 @@ const routes = [
name: 'resident-screening-first-detail-id',
component: () => import(/* webpackChunkName: "page-resident" */ '@/resident/screening/first/detail/Detail.vue')
}
]
},
{
......@@ -85,7 +87,31 @@ const routes = [
component: () => import(/* webpackChunkName: "page-doctor" */ '@/doctor/resident/form/BaseInfo.vue')
}
]
}
},
{
path: '/residentWX',
name: 'residentWX',
component: () => import(/* webpackChunkName: "residentWX" */ '@/residentWX/ResidentWX.vue'),
children: [
{
path: 'screening/list',
name: 'residentWX-list',
component: () => import(/* webpackChunkName: "residentWX-screening" */ '@/residentWX/screening/List.vue')
},
{
path: 'screening/firstDetail/:id',
name: 'resident-screening-first-detail-id',
component: () => import(/* webpackChunkName: "residentWX-screening" */ '@/residentWX/screening/FirstDetail.vue')
},
{
path: 'screening/secondDetail/:id',
name: 'resident-screening-first-detail-id',
component: () => import(/* webpackChunkName: "residentWX-screening" */ '@/residentWX/screening/SecondDetail.vue')
}
]
},
]
const router = createRouter({
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment