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) {
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) {
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>
<div class="h-full flex flex-col screening-second">
<DocNavBar :title="`${id ? '修改' : '新增'}专病高危筛查`" class="shrink-0" :backFunc="onBack"></DocNavBar>
<div class="p-4 overflow-y-auto grow" ref="all">
<archive-common :info='info'
v-show='step ==1'
ref='baseInfo'
></archive-common>
<DiseaseSelect
:infoValue='info.diseaseArrays'
v-show='step == 2'
ref='diseaseInfo'
></DiseaseSelect>
<div class='h-full flex flex-col screening-second'>
<DocNavBar :title="`${id ? '修改' : '新增'}专病高危筛查`" class='shrink-0' :backFunc='onBack'></DocNavBar>
<div class='p-4 overflow-y-auto grow' ref='all'>
<BaseInfo :info='info'
v-show='step ==1'
@getLast='getLastData'
ref='baseInfo'
></BaseInfo>
<form-cont :info='info'
:disease-arrays-info='diseaseArraysInfo'
v-show='step == 3'
v-show='step == 2'
ref='formInfo'
></form-cont>
<result :residentInfoId="residentInfoId"
v-show='step == 4'
<result :residentInfoId='residentInfoId'
v-show='step == 3'
></result>
</div>
<div class='bottom-small-line'></div>
......@@ -36,16 +32,7 @@
@click='toNext(3)'>下一步
</van-button>
</div>
<div class='px-5 flex align-center justify-around' 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'>
<div class='px-5 grow flex flex-col justify-end' v-if='step == 3'>
<van-button type='primary' block round
@click='onsubmit'>提交
</van-button>
......@@ -61,9 +48,14 @@ import { fetchCurrencyById, getChronicResidentsId } from '@/api/doctor/generalFU
import FormCont from '@/doctor/screening/second/FormCont'
import Result from '@/doctor/screening/second/Result'
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 {
components: {
BaseInfo,
DiseaseSelect,
Result,
FormCont,
......@@ -71,11 +63,12 @@ export default {
DocNavBar
},
data() {
return {
step: 1,
info: {},
diseaseArraysInfo: []
}
return {
step: 1,
info: {},
residentInfo: {},
diseaseArraysInfo: []
}
},
computed: {
id() {
......@@ -92,14 +85,19 @@ export default {
async init() {
this.info = {}
if (this.id) {
const res = await fetchCurrencyById({ id: this.id })
const res = await secondScreenDetail({ id: this.id })
let result = res.data || {}
const { residentsRecord = {} } = result
const { id, ...others } = residentsRecord
let obj = this.dataHandle(result)
this.info = {
...others,
personId: id,
...result
...obj
}
this.residentInfo = {
...others,
personId: id,
}
} else {
const res = await getChronicResidentsId(this.residentInfoId)
......@@ -115,21 +113,67 @@ export default {
updated,
...others
} = res.data
this.residentInfo = {
personId: id,
...others
}
this.info = {
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) {
this.$refs.all.scrollTo(0, 0)
if (val == 2) {
await this.$refs.baseInfo.onSubmit()
let obj = await this.$refs.baseInfo.onSubmit()
this.diseaseArraysInfo = obj.diseaseArrays || []
}
if (val == 3) {
this.diseaseArraysInfo = await this.$refs.diseaseInfo.onSubmit() || []
}
if (val == 4) {
await this.$refs.formInfo.onSubmit()
}
this.step = val
......@@ -138,7 +182,6 @@ export default {
onsubmit() {
},
onBack() {
if (this.step == 1) {
this.$router.back()
......@@ -150,6 +193,6 @@ export default {
}
</script>
<style lang="less" scoped>
<style lang='less' scoped>
</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