Commit 01dd7a6c authored by songrui's avatar songrui

Merge branch 'chronic-dev' of http://gitlab.yiboshi.com/nightkis1995/frontend-h5 into chronic-dev

parents ca004c6e b3e2ebf3
...@@ -10,6 +10,11 @@ export function secondScreenDetail(params) { ...@@ -10,6 +10,11 @@ export function secondScreenDetail(params) {
return fetchBase({ url: `/chronic-resident/v1/chronic-screening-record/rescreen-detail`, body: params, loading: true }) return fetchBase({ url: `/chronic-resident/v1/chronic-screening-record/rescreen-detail`, body: params, loading: true })
} }
//查询最近一次专病高危筛查
export function getLastScreen(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-screening-rescreen/last-info`, body: params, loading: true})
}
// 保存初筛 // 保存初筛
export function saveFirstScreening(params) { export function saveFirstScreening(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-screening-record/save`,body: params,loading: true}) return fetchBase({ url: `/chronic-admin/v1/chronic-screening-record/save`,body: params,loading: true})
......
<template>
<div>
<van-form ref='form'>
<archive-common :info='info' ref='archive'></archive-common>
<div class='flex justify-between items-center mt-5 mb-20'>
<div class='title'>筛查信息</div>
<div>
<van-button plain size='small' type='primary' @click='toLast'>引入上一次筛查数据</van-button>
</div>
</div>
<div class='label-title mt-5'>筛查病种</div>
<van-field
v-model='form.diseaseArraysName'
readonly
is-link
placeholder='请选择'
class='input-back mt-2 form-input'
:rules='rules.diseaseArraysName'
@click='showGroupsArrays= true'
>
<template #input>
<span class='text-end' v-if='form.diseaseArraysName'>{{ form.diseaseArraysName }}</span>
<span class='text-end' v-if='!form.diseaseArraysName' style='color: #dfdfe1'>请选择</span>
</template>
</van-field>
<van-popup v-model:show='showGroupsArrays' position='bottom'>
<div class='p-4'>
<div class='flex justify-between items-center mb-4 pop-title'>
<div class='greyColor' @click='showGroupsArrays = false' style='font-weight: 400'>取消</div>
<div>筛查病种(可多选)</div>
<div class='blueColor' @click='groupsArraysConfirm'>确定</div>
</div>
<CheckBtn multiple
column-1
:options='groupArrList'
v-model:value='checkGroupsArrays'
:fieldNames="{text: 'name', value: 'value'}" />
</div>
</van-popup>
</van-form>
</div>
</template>
<script>
import ArchiveCommon from '@/doctor/components/archiveCommon/archiveCommon'
import { useStore } from '@/doctor/store'
import CheckBtn from '@/doctor/components/checkBtn/CheckBtn'
export default {
name: 'BaseInfo',
props: {
info: Object
},
components: { CheckBtn, ArchiveCommon },
data() {
return {
store: useStore(),
form: {
diseaseArrays: [],
diseaseArraysName: undefined
},
rules: {
diseaseArraysName: [{ required: true, message: '请选择' }]
},
showGroupsArrays: false,
//筛查病种组件双向绑定变量
checkGroupsArrays: []
}
},
computed: {
//筛查病种
groupArrList() {
let res = []
res = this.store.getDict('CP00117')
return res
}
},
watch: {
'info': {
handler() {
this.init()
},
immediate: true
}
},
methods: {
init() {
if (!this.info.id) {
//是否是引用上一次复筛数据
if (this.info.flag && this.info.flag == 'lastInfo') {
this.setDis(this.info.diseaseArrays)
} else {//新增时
this.setDis([1,2,3,4,5,6,7])
}
} else {
this.setDis(this.info.diseaseArrays)
}
},
setDis(diseaseArrays) {
if (diseaseArrays) {
this.form.diseaseArrays = diseaseArrays
this.checkGroupsArrays = this.form.diseaseArrays
let res = []
this.groupArrList.forEach(item => {
let list = this.form.diseaseArrays.filter(i => i == item.value)
if (list && list.length) {
res.push(item.name)
}
})
this.form.diseaseArraysName = res.join()
}
},
groupsArraysConfirm() {
let res = []
this.groupArrList.forEach(item => {
let selected = this.checkGroupsArrays.filter(i => i == item.value)
if (selected && selected.length) {
res.push(item.name)
}
})
if (this.checkGroupsArrays && this.checkGroupsArrays.length) {
this.form.diseaseArrays = this.checkGroupsArrays
this.form.diseaseArraysName = res.join()
} else {
this.form.diseaseArrays = []
this.form.diseaseArraysName = ''
}
this.showGroupsArrays = false
},
toLast() {
this.$emit('getLast', true)
},
async onSubmit() {
let baseInfo = {}
try {
baseInfo = await this.$refs.archive.onSubmit()
} catch (e) {
}
return new Promise((resolve, reject) => {
this.$refs.form.validate().then(() => {
let par = {
residentsRecord: {
...this.info,
...baseInfo,
id: this.info.personId
},
diseaseArrays: this.form.diseaseArrays
}
resolve(par)
}).catch((e) => {
console.warn('baseInfo error', e)
})
})
}
}
}
</script>
<style scoped lang='less'>
.title {
font-weight: bold;
}
.mb-20 {
margin-bottom: 20px;
}
.label-title {
font-size: 13px;
color: #595959;
font-weight: 500;
&::after {
content: "*";
color: red;
font-weight: bold;
margin-left: 4px;
}
}
.no-req-label {
font-size: 13px;
color: #595959;
font-weight: 500;
}
.form-input {
padding: 8px 12px;
border-radius: 8px;
}
.input-back {
background: #FAFAFA;
}
.pop-title {
color: #262626;
font-size: 16px;
line-height: 24px;
font-weight: bold;
}
:deep(.van-popup) {
min-height: 30% !important;
}
:deep(.van-cell-group--inset) {
overflow: visible;
}
:deep(.van-cell) {
overflow: visible;
}
:deep(.van-cell:after) {
border-bottom: 0px;
}
</style>
\ No newline at end of file
This diff is collapsed.
<template> <template>
<div class="h-full flex flex-col screening-second"> <div class='h-full flex flex-col screening-second'>
<DocNavBar :title="`${id ? '修改' : '新增'}专病高危筛查`" class="shrink-0" :backFunc="onBack"></DocNavBar> <DocNavBar :title="`${id ? '修改' : '新增'}专病高危筛查`" class='shrink-0' :backFunc='onBack'></DocNavBar>
<div class="p-4 overflow-y-auto grow" ref="all"> <div class='p-4 overflow-y-auto grow' ref='all'>
<archive-common :info='info' <BaseInfo :info='info'
v-show='step ==1' v-show='step ==1'
ref='baseInfo' @getLast='getLastData'
></archive-common> ref='baseInfo'
<DiseaseSelect ></BaseInfo>
:infoValue='info.diseaseArrays'
v-show='step == 2'
ref='diseaseInfo'
></DiseaseSelect>
<form-cont :info='info' <form-cont :info='info'
:disease-arrays-info='diseaseArraysInfo' :disease-arrays-info='diseaseArraysInfo'
v-show='step == 3' v-show='step == 2'
ref='formInfo' ref='formInfo'
></form-cont> ></form-cont>
<result :residentInfoId="residentInfoId" <result :residentInfoId='residentInfoId'
v-show='step == 4' v-show='step == 3'
></result> ></result>
</div> </div>
<div class='bottom-small-line'></div> <div class='bottom-small-line'></div>
...@@ -36,16 +32,7 @@ ...@@ -36,16 +32,7 @@
@click='toNext(3)'>下一步 @click='toNext(3)'>下一步
</van-button> </van-button>
</div> </div>
<div class='px-5 flex align-center justify-around' v-if='step == 3'> <div class='px-5 grow flex flex-col justify-end' v-if='step == 3'>
<van-button type='primary' round plain style='width: 44%'
@click='toNext(2)'>上一步
</van-button>
<van-button type='primary' round style='width: 44%'
@click='toNext(4)'>下一步
</van-button>
</div>
<div class='px-5 grow flex flex-col justify-end' v-if='step == 4'>
<van-button type='primary' block round <van-button type='primary' block round
@click='onsubmit'>提交 @click='onsubmit'>提交
</van-button> </van-button>
...@@ -61,9 +48,14 @@ import { fetchCurrencyById, getChronicResidentsId } from '@/api/doctor/generalFU ...@@ -61,9 +48,14 @@ import { fetchCurrencyById, getChronicResidentsId } from '@/api/doctor/generalFU
import FormCont from '@/doctor/screening/second/FormCont' import FormCont from '@/doctor/screening/second/FormCont'
import Result from '@/doctor/screening/second/Result' import Result from '@/doctor/screening/second/Result'
import DiseaseSelect from '@/doctor/screening/second/DiseaseSelect' import DiseaseSelect from '@/doctor/screening/second/DiseaseSelect'
import BaseInfo from '@/doctor/screening/second/BaseInfo'
import { fetchDataHandle } from '@/utils/common'
import { getLastScreen, secondScreenDetail } from '@/api/doctor/screening'
import { showToast } from 'vant'
export default { export default {
components: { components: {
BaseInfo,
DiseaseSelect, DiseaseSelect,
Result, Result,
FormCont, FormCont,
...@@ -71,11 +63,12 @@ export default { ...@@ -71,11 +63,12 @@ export default {
DocNavBar DocNavBar
}, },
data() { data() {
return { return {
step: 1, step: 1,
info: {}, info: {},
diseaseArraysInfo: [] residentInfo: {},
} diseaseArraysInfo: []
}
}, },
computed: { computed: {
id() { id() {
...@@ -92,14 +85,19 @@ export default { ...@@ -92,14 +85,19 @@ export default {
async init() { async init() {
this.info = {} this.info = {}
if (this.id) { if (this.id) {
const res = await fetchCurrencyById({ id: this.id }) const res = await secondScreenDetail({ id: this.id })
let result = res.data || {} let result = res.data || {}
const { residentsRecord = {} } = result const { residentsRecord = {} } = result
const { id, ...others } = residentsRecord const { id, ...others } = residentsRecord
let obj = this.dataHandle(result)
this.info = { this.info = {
...others, ...others,
personId: id, personId: id,
...result ...obj
}
this.residentInfo = {
...others,
personId: id,
} }
} else { } else {
const res = await getChronicResidentsId(this.residentInfoId) const res = await getChronicResidentsId(this.residentInfoId)
...@@ -115,21 +113,67 @@ export default { ...@@ -115,21 +113,67 @@ export default {
updated, updated,
...others ...others
} = res.data } = res.data
this.residentInfo = {
personId: id,
...others
}
this.info = { this.info = {
personId: id, personId: id,
...others, ...others
} }
} }
}, },
//获取上一次筛查数据
getLastData() {
let par = {
residentInfoId: this.residentInfoId
}
getLastScreen(par).then(res => {
let result = res.data || {}
if (Object.keys(result).length === 0) {
showToast('暂无上一次筛查数据')
return
}
let obj = this.dataHandle(result)
this.info = {
...obj,
...this.residentInfo,
flag: 'lastInfo',
id: null
}
})
},
//数据处理
dataHandle(result) {
let obj = fetchDataHandle(result, {
diseaseArrays: 'strToArrNum',
medicalHistory: 'strToArrNum',
familyHistory: 'strToArrNum',
relativeType: 'strToArrNum',
femaleMedicalHistory: 'strToArrNum',
medicineHistory: 'strToArrNum',
touchHarmful: 'strToArrNum',
dietaryHabit: 'strToArrNum',
drinkKind: 'strToArrNum',
specialScreenResult: 'strToArrNum',
highItem: 'strToArrNum',
hypertensionHighItem: 'strToArrNum',
diabetesHighItem: 'strToArrNum',
coronaryHighItem: 'strToArrNum',
strokeHighItem: 'strToArrNum',
pulmonaryHighItem: 'strToArrNum',
nephrosisHighItem: 'strToArrNum',
dyslipemiaHighItem: 'strToArrNum',
})
return obj
},
async toNext(val) { async toNext(val) {
this.$refs.all.scrollTo(0, 0) this.$refs.all.scrollTo(0, 0)
if (val == 2) { if (val == 2) {
await this.$refs.baseInfo.onSubmit() let obj = await this.$refs.baseInfo.onSubmit()
this.diseaseArraysInfo = obj.diseaseArrays || []
} }
if (val == 3) { if (val == 3) {
this.diseaseArraysInfo = await this.$refs.diseaseInfo.onSubmit() || []
}
if (val == 4) {
await this.$refs.formInfo.onSubmit() await this.$refs.formInfo.onSubmit()
} }
this.step = val this.step = val
...@@ -138,7 +182,6 @@ export default { ...@@ -138,7 +182,6 @@ export default {
onsubmit() { onsubmit() {
}, },
onBack() { onBack() {
if (this.step == 1) { if (this.step == 1) {
this.$router.back() this.$router.back()
...@@ -150,6 +193,6 @@ export default { ...@@ -150,6 +193,6 @@ export default {
} }
</script> </script>
<style lang="less" scoped> <style lang='less' scoped>
</style> </style>
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