Commit befffd23 authored by songrui's avatar songrui

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

parents cabe326a 3bd2ead7
...@@ -52,7 +52,7 @@ export default { ...@@ -52,7 +52,7 @@ export default {
if (!token) { if (!token) {
token = sessionStorage.getItem('token') token = sessionStorage.getItem('token')
if (process.env.NODE_ENV !== 'production') { if (process.env.NODE_ENV !== 'production') {
token = '3a247da4-e163-4e68-80da-4ed81f088ca5' token = 'c05b4361-deec-4a64-92d5-b6f4b54ec89b'
} }
} }
if (token) { if (token) {
......
...@@ -104,6 +104,7 @@ export default { ...@@ -104,6 +104,7 @@ export default {
border: 1px solid transparent; border: 1px solid transparent;
background-color: #FAFAFA; background-color: #FAFAFA;
border-radius: 8px; border-radius: 8px;
text-align: center;
transition: all .2s; transition: all .2s;
} }
.check-btn-item-active { .check-btn-item-active {
......
...@@ -202,235 +202,32 @@ ...@@ -202,235 +202,32 @@
</div> </div>
</van-popup> </van-popup>
<div class='label-title mt-5'>随访方式</div>
<van-field name='radio' :rules='rules.visitWay' class='p-12-0'>
<template #input>
<van-radio-group v-model='form.visitWay' class='w-full' shape='dot'>
<van-cell title='门诊' clickable @click='form.visitWay = 5'
class='input-back form-input'
:style="{borderRadius: form.visitWay == 5 ? '8px 8px 0px 0px ': '8px'}"
>
<template #right-icon>
<van-radio :name='5' />
</template>
</van-cell>
<div class='tel-back' v-if='form.visitWay == 5'>
<div class='tel flex items-center justify-between'>
<div>
<span>居民电话: </span><span>{{ form.telephone }}</span>
</div>
<div @click='toTel' class='tel-label'>点击拨打</div>
</div>
</div>
<van-cell title='住院' clickable @click='form.visitWay = 6'
class='input-back mt-2 form-input'
:style="{borderRadius: form.visitWay == 6 ? '8px 8px 0px 0px ': '8px'}"
>
<template #right-icon>
<van-radio :name='6' />
</template>
</van-cell>
<div class='tel-back' v-if='form.visitWay == 6'>
<div class='tel flex items-center justify-between'>
<div>
<span>居民电话: </span><span>{{ form.telephone }}</span>
</div>
<div @click='toTel' class='tel-label'>点击拨打</div>
</div>
</div>
<van-cell title='入户' clickable @click='form.visitWay = 7'
class='input-back mt-2 form-input'
:style="{borderRadius: form.visitWay == 7 ? '8px 8px 0px 0px ': '8px'}"
>
<template #right-icon>
<van-radio :name='7' />
</template>
</van-cell>
<div class='tel-back' v-if='form.visitWay == 7'>
<div class='tel flex items-center justify-between'>
<div>
<span>居民电话: </span><span>{{ form.telephone }}</span>
</div>
<div @click='toTel' class='tel-label'>点击拨打</div>
</div>
</div>
<van-cell title='电话' clickable @click='form.visitWay = 8'
class='input-back mt-2 form-input'
:style="{borderRadius: form.visitWay == 8 ? '8px 8px 0px 0px ': '8px'}"
>
<template #right-icon>
<van-radio :name='8' />
</template>
</van-cell>
<div class='tel-back' v-if='form.visitWay == 8'>
<div class='tel flex items-center justify-between'>
<div>
<span>居民电话: </span><span>{{ form.telephone }}</span>
</div>
<div @click='toTel' class='tel-label'>点击拨打</div>
</div>
</div>
<!-- @click='form.visitWay = 9'-->
<van-cell title='短信(指导)' clickable
class='input-back mt-2 form-input'
:style="{borderRadius: form.visitWay == 9 ? '8px 8px 0px 0px ': '8px'}"
>
<template #right-icon>
<van-radio-group disabled>
<van-radio :name='9' />
</van-radio-group>
</template>
</van-cell>
<div class='tel-back' v-if='form.visitWay == 9'>
<div class='tel'>
<div>
是否指导?
</div>
<van-radio-group v-model='form.isHealthGuide' direction='horizontal'
shape='dot'>
<div class='flex items-center w-full'>
<van-cell title='是' clickable
@click='form.isHealthGuide = 1'
style='flex: 1'
class='input-back form-input'
>
<template #right-icon>
<van-radio :name='1' />
</template>
</van-cell>
<van-cell title='否' clickable
@click='form.isHealthGuide = 2'
style='flex: 1'
class='input-back form-input ml-2'
>
<template #right-icon>
<van-radio :name='2' />
</template>
</van-cell>
</div>
</van-radio-group>
</div>
</div>
<!-- @click='form.visitWay = 11'-->
<van-cell title='微信(指导)' clickable
class='input-back mt-2 form-input'
:style="{borderRadius: form.visitWay == 11 ? '8px 8px 0px 0px ': '8px'}"
>
<template #right-icon>
<van-radio-group disabled>
<van-radio :name='11' />
</van-radio-group>
</template>
</van-cell>
<div class='tel-back' v-if='form.visitWay == 11'>
<div class='tel'>
<div>
是否指导?
</div>
<van-radio-group v-model='form.isHealthGuide' direction='horizontal'
shape='dot'>
<div class='flex items-center w-full'>
<van-cell title='是' clickable
@click='form.isHealthGuide = 1'
style='flex: 1'
class='input-back form-input'
>
<template #right-icon>
<van-radio :name='1' />
</template>
</van-cell>
<van-cell title='否' clickable
@click='form.isHealthGuide = 2'
style='flex: 1'
class='input-back form-input ml-2'
>
<template #right-icon>
<van-radio :name='2' />
</template>
</van-cell>
</div>
</van-radio-group>
</div>
</div>
<!-- @click='form.visitWay = 10'-->
<van-cell title='短信(催检)' clickable
class='input-back mt-2 form-input'
:style="{borderRadius: form.visitWay == 10 ? '8px 8px 0px 0px ': '8px'}"
>
<template #right-icon>
<van-radio-group disabled>
<van-radio :name='10' />
</van-radio-group>
</template>
</van-cell>
<div class='tel-back' v-if='form.visitWay == 10'>
<div class='tel'>
<div>
催检内容:
</div>
<div>
请您于{{ form.screenTime }}到{{ authInfo.unitName }}进行复查,祝早日 恢复健康!
</div>
<div class='mt-2' style='text-align: center'>
<span style='color: #607FF0' @click='showTime1 = true'>修改日期</span>
</div>
</div>
</div>
<van-popup v-model:show='showTime1' position='bottom'>
<van-date-picker @confirm='timeConfirm1' @cancel='showBirth = false' />
</van-popup>
<!-- @click='form.visitWay = 12'-->
<van-cell title='微信(催检)' clickable
class='input-back mt-2 form-input'
:style="{borderRadius: form.visitWay == 12 ? '8px 8px 0px 0px ': '8px'}"
>
<template #right-icon>
<van-radio-group disabled>
<van-radio :name='12' />
</van-radio-group>
</template>
</van-cell>
<div class='tel-back' v-if='form.visitWay == 12'>
<div class='tel'>
<div>
催检内容:
</div>
<div>
请您于{{ form.screenTime }}到{{ authInfo.unitName }}进行复查,祝早日 恢复健康!
</div>
<div class='mt-2' style='text-align: center'>
<span style='color: #607FF0' @click='showTime2 = true'>修改日期</span>
</div>
</div>
</div>
<van-popup v-model:show='showTime2' position='bottom'>
<van-date-picker @confirm='timeConfirm2' @cancel='showBirth = false' />
</van-popup>
</van-radio-group>
</template>
</van-field>
<div class='label-title mt-5'>随访方式</div> <div class='label-title mt-5'>随访方式</div>
<van-field <van-field
v-model='form.visitWayRulesName' v-model='form.visitWayName'
readonly readonly
is-link is-link
placeholder='请选择' placeholder='请选择'
class='input-back mt-2 form-input' class='input-back mt-2 form-input'
:style="{borderRadius: form.visitWayName ? '8px 8px 0px 0px ': '8px'}"
:rules='rules.visitWay' :rules='rules.visitWay'
@click='showVisitWay= true' @click='showVisitWay= true'
/> />
<van-popup v-model:show='showVisitWayRules' position='bottom'> <div class='tel-back' v-if='form.visitWayName'>
<div class='tel flex items-center justify-between'>
<div>
<span>居民电话: </span><span>{{ form.telephone }}</span>
</div>
<div @click='toTel' class='tel-label'>点击拨打</div>
</div>
</div>
<van-popup v-model:show='showVisitWay' position='bottom'>
<div class='p-4'> <div class='p-4'>
<div class='flex justify-between mb-4'> <div class='flex justify-between mb-4'>
<div class='greyColor' @click='showVisitWayRules = false'>取消</div> <div class='greyColor' @click='showVisitWay = false'>取消</div>
<div class='blueColor' @click='visitWayRulesConfirm'>确认</div> <div class='blueColor' @click='visitWayConfirm'>确认</div>
</div> </div>
<CheckBtn multiple :options='visitWayRulesList' v-model:value='checkVisitWayRules' :fieldNames="{text: 'name', value: 'value'}"/> <CheckBtn column-2 :options="store.getDict('CP00179')" v-model:value='checkVisitWay' :fieldNames="{text: 'name', value: 'value'}"/>
</div> </div>
</van-popup> </van-popup>
...@@ -450,7 +247,7 @@ ...@@ -450,7 +247,7 @@
<div class='greyColor' @click='showVisitWayRules = false'>取消</div> <div class='greyColor' @click='showVisitWayRules = false'>取消</div>
<div class='blueColor' @click='visitWayRulesConfirm'>确认</div> <div class='blueColor' @click='visitWayRulesConfirm'>确认</div>
</div> </div>
<CheckBtn multiple :options='visitWayRulesList' v-model:value='checkVisitWayRules' :fieldNames="{text: 'name', value: 'value'}"/> <CheckBtn multiple column-2 :options='visitWayRulesList' v-model:value='checkVisitWayRules' :fieldNames="{text: 'name', value: 'value'}"/>
</div> </div>
</van-popup> </van-popup>
...@@ -509,8 +306,6 @@ const defaultForm = (info = {}) => { ...@@ -509,8 +306,6 @@ const defaultForm = (info = {}) => {
relation: undefined, relation: undefined,
relationName: undefined, relationName: undefined,
relationOther: undefined, relationOther: undefined,
screenTime: new dayjs().add(1, 'day').format('YYYY-MM-DD'),
//随访人群 //随访人群
groupsArrays: undefined, groupsArrays: undefined,
groupsArraysName: undefined, groupsArraysName: undefined,
...@@ -558,9 +353,12 @@ export default { ...@@ -558,9 +353,12 @@ export default {
showTime1: false, showTime1: false,
showTime2: false, showTime2: false,
showGroupsArrays: false, showGroupsArrays: false,
showVisitWay: false,
showVisitWayRules: false, showVisitWayRules: false,
//随访人群组件双向绑定变量 //随访人群组件双向绑定变量
checkGroupsArrays: [], checkGroupsArrays: [],
//随访方式组件双向绑定变量
checkVisitWay: [],
//随访类型组件双向绑定变量 //随访类型组件双向绑定变量
checkVisitWayRules: [], checkVisitWayRules: [],
form: {}, form: {},
...@@ -626,13 +424,14 @@ export default { ...@@ -626,13 +424,14 @@ export default {
if (this.form.registeredCode) { if (this.form.registeredCode) {
this.addressRecord.registeredCode = addToArr(this.form.registeredCode) this.addressRecord.registeredCode = addToArr(this.form.registeredCode)
} }
}, },
immediate: true immediate: true
}, },
'form.visitSituation': { 'form.visitWay': {
handler() { handler() {
this.$emit('changeVisitSituation', this.form.visitSituation) this.form.visitWayRulesName = ''
this.form.visitWayRules = ''
this.checkVisitWayRules = []
} }
} }
}, },
...@@ -682,14 +481,6 @@ export default { ...@@ -682,14 +481,6 @@ export default {
// 触发a标签的点击事件 // 触发a标签的点击事件
a.click() a.click()
}, },
timeConfirm1({ selectedValues }) {
this.form.screenTime = selectedValues.join('-')
this.showTime1 = false
},
timeConfirm2({ selectedValues }) {
this.form.screenTime = selectedValues.join('-')
this.showTime2 = false
},
//随访人群 //随访人群
groupsArraysConfirm() { groupsArraysConfirm() {
let res = [] let res = []
...@@ -705,6 +496,16 @@ export default { ...@@ -705,6 +496,16 @@ export default {
} }
this.showGroupsArrays = false this.showGroupsArrays = false
}, },
//随访方式
visitWayConfirm() {
this.store.getDict('CP00179').forEach(item => {
if (item.value == this.checkVisitWay) {
this.form.visitWay = item.value
this.form.visitWayName = item.name
}
})
this.showVisitWay = false
},
//随访类型 //随访类型
visitWayRulesConfirm() { visitWayRulesConfirm() {
let res = [] let res = []
...@@ -718,34 +519,21 @@ export default { ...@@ -718,34 +519,21 @@ export default {
this.form.visitWayRules = this.checkVisitWayRules.join() this.form.visitWayRules = this.checkVisitWayRules.join()
this.form.visitWayRulesName = res.join() this.form.visitWayRulesName = res.join()
} }
this.showGroupsArrays = false this.showVisitWayRules = false
}, },
onSubmit() { onSubmit() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.$refs.form.validate().then(() => { this.$refs.form.validate().then(() => {
const { const {
personId, personId,
visitSituation,
lossReason,
deathReason,
lossReasonOther,
visitWay, visitWay,
isHealthGuide, visitWayRules,
screenTime,
...others ...others
} = this.form } = this.form
let time = dayjs(screenTime).format('YYYY-MM-DD')
let content = `请您于${time}${this.authInfo.unitName}进行复查,祝早日恢复健康!`
let par = { let par = {
visitSituation,
lossReason,
deathReason,
lossReasonOther,
visitWay, visitWay,
isHealthGuide, visitWayRules,
screenTime,
residentInfoId: this.form.residentInfoId, residentInfoId: this.form.residentInfoId,
urgentInsContent: content,
residentsRecord: { residentsRecord: {
...others, ...others,
id: this.form.personId id: this.form.personId
...@@ -826,6 +614,15 @@ export default { ...@@ -826,6 +614,15 @@ export default {
padding: 12px 0px; padding: 12px 0px;
} }
//灰色
.greyColor {
color: var(--van-text-color-2);
}
//确认按钮颜色
.blueColor {
color: var(--van-primary-color)
}
:deep(.van-cell-group--inset) { :deep(.van-cell-group--inset) {
overflow: visible; overflow: visible;
} }
...@@ -850,13 +647,8 @@ export default { ...@@ -850,13 +647,8 @@ export default {
background: var(--van-button-primary-background) background: var(--van-button-primary-background)
} }
//灰色 :deep(.van-popup) {
.greyColor { min-height: 30%!important;
color: var(--van-text-color-2);
} }
//确认按钮颜色
.blueColor {
color: var(--van-primary-color)
}
</style> </style>
\ No newline at end of file
<template> <template>
<div> <div>
<van-form ref='form'> <van-form ref='form'>
<div class='no-req-label'>随访单位</div> <div class='label-title' v-if='showPush'>请选择推送渠道</div>
<van-field <checkBtn column-1 :options='vxList' v-model:value='checkVx' :fieldNames="{text: 'name', value: 'value'}"></checkBtn>
v-model='form.visitUnitName' <div class='push-lab'>随访信息将通过小程序消息推送给居民</div>
is-link <checkBtn column-1 :options='messageList' v-model:value='checkMessage' :fieldNames="{text: 'name', value: 'value'}"></checkBtn>
readonly <div class='push-lab'>随访信息将通过短信方式发送给居民</div>
placeholder='随访单位'
class='input-back mt-2 form-input' <div :class="['label-title', {'mt-5': showPush}]">随访单位</div>
@click="show1 = true" <van-field
/> v-model='form.visitUnitName'
<DocUnit v-model:show="show1" v-model:value="form.visitUnitId" @change="changeUnit"/> is-link
readonly
<div class='no-req-label mt-5'>随访科室</div> placeholder='随访单位'
<van-field class='input-back mt-2 form-input'
v-model='form.visitOfficeName' @click='show1 = true'
is-link />
readonly <DocUnit v-model:show='show1' v-model:value='form.visitUnitId' @change='changeUnit' />
placeholder='随访科室'
class='input-back mt-2 form-input' <div class='label-title mt-5'>随访科室</div>
@click='show2 = true' <van-field
/> v-model='form.visitOfficeName'
<DocOffice v-model:show="show2" v-model:value="form.visitOfficeId" @change="changeOffice" :unitId="form.visitUnitId"/> is-link
readonly
<div class='no-req-label mt-5'>随访医生</div> placeholder='随访科室'
<van-field class='input-back mt-2 form-input'
v-model='form.visitDoctorName' @click='show2 = true'
is-link />
readonly <DocOffice v-model:show='show2' v-model:value='form.visitOfficeId' @change='changeOffice'
placeholder='随访医生' :unitId='form.visitUnitId' />
class='input-back mt-2 form-input'
@click='show3 = true' <div class='label-title mt-5'>随访医生</div>
/> <van-field
v-model='form.visitDoctorName'
<DocOfficeDoctor v-model:show="show3" v-model:value="form.visitDoctorId" @change="changeDoctor" :unitId="form.visitUnitId" :officeId="form.visitOfficeId"/> is-link
readonly
placeholder='随访医生'
class='input-back mt-2 form-input'
@click='show3 = true'
/>
<DocOfficeDoctor v-model:show='show3' v-model:value='form.visitDoctorId' @change='changeDoctor'
:unitId='form.visitUnitId' :officeId='form.visitOfficeId' />
</van-form> </van-form>
</div> </div>
</template> </template>
...@@ -44,15 +52,27 @@ import { useStore } from '@/doctor/store' ...@@ -44,15 +52,27 @@ import { useStore } from '@/doctor/store'
import DocUnit from '@/doctor/components/docUnit/DocUnit' import DocUnit from '@/doctor/components/docUnit/DocUnit'
import DocOffice from '@/doctor/components/docOffice/DocOffice' import DocOffice from '@/doctor/components/docOffice/DocOffice'
import DocOfficeDoctor from '@/doctor/components/docOfficeDoctor/DocOfficeDoctor' import DocOfficeDoctor from '@/doctor/components/docOfficeDoctor/DocOfficeDoctor'
import CheckBtn from '@/doctor/components/checkBtn/CheckBtn'
export default { export default {
name: 'CommonBottom', name: 'CommonBottom',
components: { DocOfficeDoctor, DocOffice, DocUnit }, components: { CheckBtn, DocOfficeDoctor, DocOffice, DocUnit },
props: { props: {
info: { info: {
default: () => { default: () => {
return {} return {}
} }
},
firstForm: {
default: () => {
return {}
}
},
modeEnumList: {
default: () => {
return {}
}
} }
}, },
data() { data() {
...@@ -61,6 +81,10 @@ export default { ...@@ -61,6 +81,10 @@ export default {
show1: false, show1: false,
show2: false, show2: false,
show3: false, show3: false,
vxList:[],
checkVx: undefined,
messageList: [],
checkMessage: undefined,
form: {}, form: {},
rules: {} rules: {}
} }
...@@ -76,9 +100,32 @@ export default { ...@@ -76,9 +100,32 @@ export default {
computed: { computed: {
authInfo() { authInfo() {
return this.store.$state.authInfo return this.store.$state.authInfo
},
//是否显示推送渠道
showPush() {
let res = false
let list = []
if (this.firstForm.visitWayRules) {
list = this.firstForm.visitWayRules.split(',').map(item => Number(item))
}
if (list && list.length && (list.includes(2) || list.includes(3) || list.includes(4))) {
res = true
}
return res
} }
}, },
mounted() {
this.vxList = this.getVxEnum(this.firstForm.residentsRecord)
this.messageList = this.getMessageEnum(this.firstForm.residentsRecord)
},
methods: { methods: {
//微信
getVxEnum(patientInfo = {}) {
return [{ name: `${patientInfo.weixinTel ? `(${this.$phoneHide(patientInfo.weixinTel)}已注册小程序)` : `(未注册小程序)`}`, value:1 }]
},
getMessageEnum(patientInfo = {}) {
return [{ name: `${patientInfo.telephone ? `(手机号 ${this.$phoneHide(patientInfo.telephone)})` : `(手机号 不存在)`}`, value: 2 }]
},
setForm(info) { setForm(info) {
const form = { const form = {
visitDate: new dayjs(), visitDate: new dayjs(),
...@@ -134,7 +181,7 @@ export default { ...@@ -134,7 +181,7 @@ export default {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.$refs.form.validate().then(() => { this.$refs.form.validate().then(() => {
let par = { let par = {
...this.form, ...this.form
} }
resolve(par) resolve(par)
}).catch((e) => { }).catch((e) => {
...@@ -166,6 +213,12 @@ export default { ...@@ -166,6 +213,12 @@ export default {
} }
} }
.push-lab {
line-height: 20px;
color: #8C8C8C;
font-size: 12px
}
.no-req-label { .no-req-label {
font-size: 13px; font-size: 13px;
color: #595959; color: #595959;
......
...@@ -2,175 +2,198 @@ ...@@ -2,175 +2,198 @@
<div> <div>
<van-form ref='form'> <van-form ref='form'>
<div class='title'>随访信息</div> <div class='title'>随访信息</div>
<div v-if='showOne'> <div v-if='showOne'>
<div class='no-req-label'>随访内容</div> <div class='no-req-label'>随访内容</div>
<van-field <van-field
v-model='form.visitContent' v-model='form.visitContent'
placeholder='随访内容' placeholder='随访内容'
class='input-back mt-2 form-input' class='input-back mt-2 form-input'
rows='2' rows='2'
autosize autosize
type='textarea' type='textarea'
/> />
</div> </div>
<div v-if='showOne'> <div v-if='showOne'>
<div class='no-req-label mt-5'>处置意见</div> <div class='no-req-label mt-5'>处置意见</div>
<van-field <van-field
v-model='form.disposalOpinion' v-model='form.disposalOpinion'
rows='2' rows='2'
autosize autosize
type='textarea' type='textarea'
placeholder='处置意见' placeholder='处置意见'
class='input-back mt-2 form-input' class='input-back mt-2 form-input'
/> />
</div>
<div v-if='showTwo'>
<div class='no-req-label mt-5'>健康指导</div>
<div class='health mt-2'>
<div class='health-cell mt-2' v-for='item in form.visitHealthGuideList'>
<div class='no-req-label' v-if="item.name != '无'">{{ item.name }}</div>
<van-field
v-model='item.templateContent'
rows='1'
autosize
type='textarea'
placeholder='请输入'
class='input-back mt-2 form-input'
/>
</div>
</div> </div>
<div v-if='showTwo'> </div>
<div class='no-req-label mt-5'>健康指导</div> <!-- 催检-->
<div class='health mt-2'> <div v-if='showFour'>
<div class='health-cell mt-2' v-for='item in form.visitHealthGuideList'> <div class='no-req-label mt-5'>催检内容</div>
<div class='no-req-label' v-if="item.name != '无'">{{ item.name }}</div> <div class='tel-back mt-2'>
<van-field <div class='tel'>
v-model='item.templateContent' <div style='text-indent: 2em;line-height: .2rem'>
rows='1' <span v-if='modeEnumList.urgeResidentShow'>{{ firstForm.residentsRecord.residentName }}先生/女士,</span>
autosize <span v-else>您好,</span>
type='textarea' <span>请您于{{ form.screenTime }}</span>
placeholder='请输入' <span>{{ authInfo.unitName }}</span>
class='input-back mt-2 form-input' <span>进行专病高危筛查/慢病复查,</span>
/> <span>祝早日康复!</span>
</div>
<div class='mt-2' style='text-align: center' @click='showTime1 = true'>
<span style='color: #607FF0'>修改日期</span>
</div> </div>
</div> </div>
</div> </div>
<van-popup v-model:show='showTime1' position='bottom'>
<van-date-picker v-model='currentTime1' @confirm='timeConfirm1' @cancel='showTime1 = false' />
</van-popup>
<div v-if='showOne'> </div>
<div class='no-req-label mt-5'>上传随访记录</div>
<div class='tips'> <div v-if='showOne'>
支持上传jpg、png、jpeg文件,大小请在10M以内 <div class='no-req-label mt-5'>上传随访记录</div>
</div> <div class='tips'>
<div class='img-btn mt-2' @click="toUpload('imgId')"> 支持上传jpg、png、jpeg文件,大小请在10M以内
<input type='file' id='imgId' multiple @change='choiceImg' style='display: none' </div>
:key='new Date().getTime()' accept="image/*,.pdf"> <div class='img-btn mt-2' @click="toUpload('imgId')">
<div class='flex items-center justify-center'> <input type='file' id='imgId' multiple @change='choiceImg' style='display: none'
<div> :key='new Date().getTime()' accept='image/*,.pdf'>
<doc-icon type='doc-upload' class='doc-up' /> <div class='flex items-center justify-center'>
</div> <div>
<div class='ml-2'>上传图片</div> <doc-icon type='doc-upload' class='doc-up' />
</div> </div>
<div class='ml-2'>上传图片</div>
</div> </div>
</div>
<div class='flex items-center' style='flex-wrap: wrap'> <div class='flex items-center' style='flex-wrap: wrap'>
<div v-for='(item, index) in imgList'> <div v-for='(item, index) in imgList'>
<!-- 图片--> <!-- 图片-->
<div v-if="item.imgFlag == 'img'" class='mt-2' style='position: relative'> <div v-if="item.imgFlag == 'img'" class='mt-2' style='position: relative'>
<div> <div>
<doc-icon type='doc-remove' class='remove' @click='delImg(item.indexF)'></doc-icon> <doc-icon type='doc-remove' class='remove' @click='delImg(item.indexF)'></doc-icon>
</div>
<img :src='item.trueDownloadUrl' class='ml-2' style='width: 95px;height: 95px;'
@click='toPreview(imgList,index)'>
</div> </div>
<img :src='item.trueDownloadUrl' class='ml-2' style='width: 95px;height: 95px;'
@click='toPreview(imgList,index)'>
</div> </div>
</div> </div>
<!-- pdf--> </div>
<div> <!-- pdf-->
<div v-for='item in imgList'> <div>
<div class='mt-2 pdf' v-if="item.imgFlag == 'pdf'"> <div v-for='item in imgList'>
<div class='flex items-center justify-between'> <div class='mt-2 pdf' v-if="item.imgFlag == 'pdf'">
<div class='flex items-center' @click.stop='toPdf(item)'> <div class='flex items-center justify-between'>
<div> <div class='flex items-center' @click.stop='toPdf(item)'>
<doc-icon type='doc-PDF' style='font-size: .48rem'></doc-icon>
</div>
<div class='ml-1'>{{ item.name }}</div>
</div>
<div> <div>
<doc-icon type='doc-PDF' style='font-size: .48rem'></doc-icon>
</div>
<div class='ml-1'>{{ item.name }}</div>
</div>
<div>
<span><doc-icon type='doc-remove' style='font-size: .24rem' <span><doc-icon type='doc-remove' style='font-size: .24rem'
@click='delImg(item.indexF)'></doc-icon></span> @click='delImg(item.indexF)'></doc-icon></span>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div v-if='imgList.length > 6' class='warn mt-2'>最多允许上传6张!</div>
</div> </div>
<div v-if='showOne'> <div v-if='imgList.length > 6' class='warn mt-2'>最多允许上传6张!</div>
<div class='no-req-label mt-5'>现场随访照片</div> </div>
<div class='tips'>
支持上传jpg、png、jpeg文件,大小请在10M以内 <div>
</div> <div class='no-req-label mt-5'>现场随访照片</div>
<div class='img-btn mt-2' @click="toUpload('imgId2')"> <div class='tips'>
<input type='file' id='imgId2' multiple @change='choiceImg2' style='display: none' 支持上传jpg、png、jpeg文件,大小请在10M以内
:key='new Date().getTime()-10000' accept="image/*,.pdf"> </div>
<div class='flex items-center justify-center'> <div class='img-btn mt-2' @click="toUpload('imgId2')">
<div> <input type='file' id='imgId2' multiple @change='choiceImg2' style='display: none'
<doc-icon type='doc-upload' class='doc-up' /> :key='new Date().getTime()-10000' accept='image/*,.pdf'>
</div> <div class='flex items-center justify-center'>
<div class='ml-2'>上传图片</div> <div>
<doc-icon type='doc-upload' class='doc-up' />
</div> </div>
<div class='ml-2'>上传图片</div>
</div> </div>
</div>
<div class='flex items-center' style='flex-wrap: wrap'> <div class='flex items-center' style='flex-wrap: wrap'>
<div v-for='(item, index) in imgList2'> <div v-for='(item, index) in imgList2'>
<!-- 图片--> <!-- 图片-->
<div v-if="item.imgFlag == 'img'" class='mt-2' style='position: relative'> <div v-if="item.imgFlag == 'img'" class='mt-2' style='position: relative'>
<div> <div>
<doc-icon type='doc-remove' class='remove' @click='delImg2(item.indexF)'></doc-icon> <doc-icon type='doc-remove' class='remove' @click='delImg2(item.indexF)'></doc-icon>
</div>
<img :src='item.trueDownloadUrl' class='ml-2' style='width: 95px;height: 95px;'
@click='toPreview(imgList2 ,index)'>
</div> </div>
<img :src='item.trueDownloadUrl' class='ml-2' style='width: 95px;height: 95px;'
@click='toPreview(imgList2 ,index)'>
</div> </div>
</div> </div>
<!-- pdf--> </div>
<div> <!-- pdf-->
<div v-for='item in imgList2'> <div>
<div class='mt-2 pdf' v-if="item.imgFlag == 'pdf'"> <div v-for='item in imgList2'>
<div class='flex items-center justify-between'> <div class='mt-2 pdf' v-if="item.imgFlag == 'pdf'">
<div class='flex items-center' @click.stop='toPdf(item)'> <div class='flex items-center justify-between'>
<div> <div class='flex items-center' @click.stop='toPdf(item)'>
<doc-icon type='doc-PDF' style='font-size: .48rem'></doc-icon>
</div>
<div class='ml-1'>{{ item.name }}</div>
</div>
<div> <div>
<doc-icon type='doc-PDF' style='font-size: .48rem'></doc-icon>
</div>
<div class='ml-1'>{{ item.name }}</div>
</div>
<div>
<span><doc-icon type='doc-remove' style='font-size: .24rem' <span><doc-icon type='doc-remove' style='font-size: .24rem'
@click='delImg2(item.indexF)'></doc-icon></span> @click='delImg2(item.indexF)'></doc-icon></span>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div v-if='imgList2.length > 8' class='warn mt-2'>最多允许上传8张!</div>
</div> </div>
<div v-if='imgList2.length > 8' class='warn mt-2'>最多允许上传8张!</div>
</div>
<!-- 图片预览--> <!-- 图片预览-->
<van-overlay :show='imgShow' @click='imgShow = false'> <van-overlay :show='imgShow' @click='imgShow = false'>
<div class='wrapper'> <div class='wrapper'>
<van-swipe class='block' :initial-swipe='initSwipe'> <van-swipe class='block' :initial-swipe='initSwipe'>
<van-swipe-item v-for='image in showImgList' :key='image'> <van-swipe-item v-for='image in showImgList' :key='image'>
<img :src='image' style='width: 100%;height: 100%'/> <img :src='image' style='width: 100%;height: 100%' />
</van-swipe-item> </van-swipe-item>
</van-swipe> </van-swipe>
</div>
</van-overlay>
<div>
<div class='label-title mt-5'>下次随访日期</div>
<van-field
v-model='form.nextVisitDate'
is-link
readonly
name='nextVisitDate'
placeholder='下次随访日期'
class='input-back mt-2 form-input'
:rules='rules.nextVisitDate'
@click='showDate = true' />
<van-popup v-model:show='showDate' position='bottom'>
<van-date-picker v-model="form._nextVisitDate"
:min-date="nextVisitDateRange.min"
:max-date="nextVisitDateRange.max"
@confirm='dataConfirm' @cancel='showDate = false' />
</van-popup>
</div> </div>
</van-overlay>
<div>
<div class='label-title mt-5'>下次随访日期</div>
<van-field
v-model='form.nextVisitDate'
is-link
readonly
name='nextVisitDate'
placeholder='下次随访日期'
class='input-back mt-2 form-input'
:rules='rules.nextVisitDate'
@click='showDate = true' />
<van-popup v-model:show='showDate' position='bottom'>
<van-date-picker v-model='form._nextVisitDate'
:min-date='nextVisitDateRange.min'
:max-date='nextVisitDateRange.max'
@confirm='dataConfirm' @cancel='showDate = false' />
</van-popup>
</div>
</van-form> </van-form>
</div> </div>
</template> </template>
...@@ -196,6 +219,11 @@ export default { ...@@ -196,6 +219,11 @@ export default {
return {} return {}
} }
}, },
modeEnumList: {
default: () => {
return {}
}
}
}, },
data() { data() {
return { return {
...@@ -209,6 +237,8 @@ export default { ...@@ -209,6 +237,8 @@ export default {
imgInputList2: [], imgInputList2: [],
showDate: false, showDate: false,
imgShow: false, imgShow: false,
showTime1: false,
currentTime1: null,
showImgList: [], showImgList: [],
initSwipe: 0, initSwipe: 0,
rules: { rules: {
...@@ -218,7 +248,7 @@ export default { ...@@ -218,7 +248,7 @@ export default {
nextVisitDateRange: { nextVisitDateRange: {
min: undefined, min: undefined,
max: undefined max: undefined
}, }
} }
}, },
watch: { watch: {
...@@ -231,41 +261,48 @@ export default { ...@@ -231,41 +261,48 @@ export default {
} }
}, },
immediate: true immediate: true
}, }
}, },
computed: { computed: {
authInfo() {
return this.store.$state.authInfo
},
//复检 //复检
showOne() { showOne() {
const { visitWayRules = [] } = this.firstForm const { visitWayRules } = this.firstForm
let res = false let res = false
if (visitWayRules.includes(1)) { let list = visitWayRules && visitWayRules.split(',').map(item => Number(item))
if (list && list.includes(1)) {
res = true res = true
} }
return res return res
}, },
//指导 //指导
showTwo() { showTwo() {
const { visitWayRules = [] } = this.firstForm const { visitWayRules } = this.firstForm
let res = false let res = false
if (visitWayRules.includes(2)) { let list = visitWayRules && visitWayRules.split(',').map(item => Number(item))
if (list && list.includes(2)) {
res = true res = true
} }
return res return res
}, },
//宣教 //宣教
showThree() { showThree() {
const {visitWayRules = []} = this.firstForm const { visitWayRules } = this.firstForm
let res = false let res = false
if (visitWayRules.includes(3)) { let list = visitWayRules && visitWayRules.split(',').map(item => Number(item))
if (list && list.includes(3)) {
res = true res = true
} }
return res return res
}, },
//催检 //催检
showFour() { showFour() {
const { visitWayRules = [] } = this.firstForm const { visitWayRules } = this.firstForm
let res = false let res = false
if (visitWayRules.includes(4)) { let list = visitWayRules && visitWayRules.split(',').map(item => Number(item))
if (list && list.includes(4)) {
res = true res = true
} }
return res return res
...@@ -304,6 +341,9 @@ export default { ...@@ -304,6 +341,9 @@ export default {
this.nextVisitDateRange.max = new Date(date.year() + 10, date.month(), date.date()) this.nextVisitDateRange.max = new Date(date.year() + 10, date.month(), date.date())
this.nextVisitDateRange.min = new Date(date.year(), date.month(), date.date() + 1) this.nextVisitDateRange.min = new Date(date.year(), date.month(), date.date() + 1)
this.form._nextVisitDate = [date.year(), date.month(), date.date() + 1] this.form._nextVisitDate = [date.year(), date.month(), date.date() + 1]
this.form.nextVisitDate = new dayjs().add(1, 'day').format('YYYY-MM-DD')
let time = new dayjs().add(1, 'day').format('YYYY-MM-DD')
this.currentTime1 = time.split('-')
}, },
methods: { methods: {
setForm(info = {}) { setForm(info = {}) {
...@@ -319,6 +359,7 @@ export default { ...@@ -319,6 +359,7 @@ export default {
nextVisitDate: info.nextVisitDate, nextVisitDate: info.nextVisitDate,
isSms: info.isSms, isSms: info.isSms,
isWx: info.isWx, isWx: info.isWx,
screenTime: new dayjs().add(1, 'day').format('YYYY-MM-DD'),
visitContent: info.visitContent, visitContent: info.visitContent,
disposalOpinion: info.disposalOpinion, disposalOpinion: info.disposalOpinion,
uploadVisitRecord: info.uploadVisitRecord, uploadVisitRecord: info.uploadVisitRecord,
...@@ -356,11 +397,11 @@ export default { ...@@ -356,11 +397,11 @@ export default {
toUpload(id) { toUpload(id) {
if (id === 'imgId' && this.imgList.length > 6) { if (id === 'imgId' && this.imgList.length > 6) {
showToast('最多允许上传6张') showToast('最多允许上传6张')
return return
} }
if (id === 'imgId2' && this.imgList2.length > 8) { if (id === 'imgId2' && this.imgList2.length > 8) {
showToast('最多允许上传8张') showToast('最多允许上传8张')
return return
} }
let input = document.getElementById(id) let input = document.getElementById(id)
input.click() input.click()
...@@ -431,18 +472,26 @@ export default { ...@@ -431,18 +472,26 @@ export default {
this.form.nextVisitDate = selectedValues.join('-') this.form.nextVisitDate = selectedValues.join('-')
this.showDate = false this.showDate = false
}, },
//催检日期选择
timeConfirm1({ selectedValues }) {
this.form.screenTime = selectedValues.join('-')
this.showTime1 = false
},
onSubmit() { onSubmit() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.$refs.form.validate().then(() => { this.$refs.form.validate().then(() => {
if (this.imgList.length > 6 || this.imgList2.length > 8) { if (this.imgList.length > 6 || this.imgList2.length > 8) {
return return
} }
let time = dayjs(this.form.screenTime).format('YYYY-MM-DD')
let content = `${this.modeEnumList.urgeResidentShow ? `${this.firstForm.residentsRecord.residentName}先生/女士,` : `您好,`}请您于${time}${this.authInfo.unitName}进行专病高危筛查/慢病复查,祝早日恢复健康!`
let par = { let par = {
img1: this.imgList || [], img1: this.imgList || [],
img2: this.imgList2 || [], img2: this.imgList2 || [],
imgInput1: this.imgInputList1, imgInput1: this.imgInputList1,
imgInput2: this.imgInputList2, imgInput2: this.imgInputList2,
...this.form, ...this.form,
urgentInsContent: content,
healthGuideContent: JSON.stringify(this.form.visitHealthGuideList) healthGuideContent: JSON.stringify(this.form.visitHealthGuideList)
} }
resolve(par) resolve(par)
...@@ -555,11 +604,13 @@ export default { ...@@ -555,11 +604,13 @@ export default {
top: -9px; top: -9px;
z-index: 1; z-index: 1;
} }
.wrapper { .wrapper {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
height: 100%; height: 100%;
.block { .block {
width: 100%; width: 100%;
height: 300px; height: 300px;
...@@ -583,8 +634,8 @@ export default { ...@@ -583,8 +634,8 @@ export default {
} }
.warn { .warn {
color: #ee0a24; color: #ee0a24;
text-align: left; text-align: left;
} }
</style> </style>
......
<template> <template>
<div> <div>
<van-nav-bar :title="routerDetail.id ? '修改通用随访': '新增通用随访'" left-text='' left-arrow @click-left='toBack'></van-nav-bar> <van-nav-bar :title="routerDetail.id ? '修改通用随访': '新增通用随访'" left-text='' left-arrow
@click-left='toBack'></van-nav-bar>
<div class='p-4 h-overflow'> <div class='p-4 h-overflow'>
<base-info :info='info' <base-info :info='info'
:modeEnumList="modeEnumList" :modeEnumList='modeEnumList'
v-show='step == 1' v-show='step == 1'
ref='baseInfo' ref='baseInfo'
@changeVisitSituation='changeVisitSituation'
></base-info> ></base-info>
<general-f-u-form :info='info' <general-f-u-form :info='info'
:first-form='firstForm' :first-form='firstForm'
:modeEnumList='modeEnumList'
v-show='step == 2' v-show='step == 2'
ref='generalFUForm' ref='generalFUForm'
></general-f-u-form> ></general-f-u-form>
<common-bottom :info='info' <common-bottom :info='info'
:first-form='firstForm'
:modeEnumList='modeEnumList'
v-show='step == 3' v-show='step == 3'
ref='commonBottom' ref='commonBottom'
></common-bottom> ></common-bottom>
</div> </div>
<div class='pt-2 pb-2'> <div class='pt-2 pb-2'>
<div class='px-5 grow flex flex-col justify-end' v-if='step == 1'> <div class='px-5 grow flex flex-col justify-end' v-if='step == 1'>
<van-button type='primary' block round v-if='visitSituation == 1' <van-button type='primary' block round
@click='toNext(2)'>下一步 @click='toNext(2)'>下一步
</van-button> </van-button>
<van-button type='primary' block round v-if='visitSituation == 2'
@click='toNext(3)'>下一步
</van-button>
</div> </div>
<div class='px-5 flex align-center justify-around' v-if='step == 2'> <div class='px-5 flex align-center justify-around' v-if='step == 2'>
...@@ -63,65 +63,66 @@ const getModeEnum = (patientInfo = {}) => { ...@@ -63,65 +63,66 @@ const getModeEnum = (patientInfo = {}) => {
{ {
value: '1', name: `门诊`, value: '1', name: `门诊`,
children: [ children: [
{value: 1, name: `复检`, disabled: false}, { value: 1, name: `复检`, disabled: false },
{value: 2, name: `指导`, disabled: false}, { value: 2, name: `指导`, disabled: false },
{value: 3, name: `宣教`, disabled: false}, { value: 3, name: `宣教`, disabled: false },
{value: 4, name: `催检`, disabled: true} { value: 4, name: `催检`, disabled: true }
] ]
}, },
{ {
value: '2', name: `住院`, value: '2', name: `住院`,
children: [ children: [
{value: 1, name: `复检`, disabled: false}, { value: 1, name: `复检`, disabled: false },
{value: 2, name: `指导`, disabled: false}, { value: 2, name: `指导`, disabled: false },
{value: 3, name: `宣教`, disabled: false}, { value: 3, name: `宣教`, disabled: false },
{value: 4, name: `催检`, disabled: true} { value: 4, name: `催检`, disabled: true }
] ]
}, },
{ {
value: '3', name: `入户`, value: '3', name: `入户`,
children: [ children: [
{value: 1, name: `复检`, disabled: false}, { value: 1, name: `复检`, disabled: false },
{value: 2, name: `指导`, disabled: false}, { value: 2, name: `指导`, disabled: false },
{value: 3, name: `宣教`, disabled: false}, { value: 3, name: `宣教`, disabled: false },
{value: 4, name: `催检`, disabled: true} { value: 4, name: `催检`, disabled: true }
], ]
}, },
{ {
value: '4', name: `电话`, value: '4', name: `电话`,
children: [ children: [
{value: 1, name: `复检`, disabled: false}, { value: 1, name: `复检`, disabled: false },
{value: 2, name: `指导`, disabled: false}, { value: 2, name: `指导`, disabled: false },
{value: 3, name: `宣教`, disabled: true}, { value: 3, name: `宣教`, disabled: true },
{value: 4, name: `催检`, disabled: false} { value: 4, name: `催检`, disabled: false }
], ]
}, },
{ {
value: '5', name: `短信`, value: '5', name: `短信`,
children: [ children: [
{value: 1, name: `复检`, disabled: true}, { value: 1, name: `复检`, disabled: true },
{value: 2, name: `指导`, disabled: false}, { value: 2, name: `指导`, disabled: false },
{value: 3, name: `宣教`, disabled: false}, { value: 3, name: `宣教`, disabled: false },
{value: 4, name: `催检`, disabled: false} { value: 4, name: `催检`, disabled: false }
], ]
}, },
{ {
value: '6', name: `微信`, value: '6', name: `微信`,
children: [ children: [
{value: 1, name: `复检`, disabled: true}, { value: 1, name: `复检`, disabled: true },
{value: 2, name: `指导`, disabled: false}, { value: 2, name: `指导`, disabled: false },
{value: 3, name: `宣教`, disabled: false}, { value: 3, name: `宣教`, disabled: false },
{value: 4, name: `催检`, disabled: false} { value: 4, name: `催检`, disabled: false }
], ]
}, }
], ],
tel:`(本人电话:${patientInfo.telephone || ''})`, tel: `(本人电话:${patientInfo.telephone || ''})`,
weixi: `(绑定电话:${patientInfo.weixin || '未绑定'})`, weixi: `(绑定电话:${patientInfo.weixin || '未绑定'})`,
telephone: patientInfo.telephone,
weixinTel: patientInfo.weixin, weixinTel: patientInfo.weixin,
//是否下次随访日期必填 //是否下次随访日期必填
nextVisitDateReq: true, nextVisitDateReq: true,
//催检内容是否显示患者姓名 //催检内容是否显示患者姓名
urgeResidentShow: true, urgeResidentShow: true
} }
} }
export default { export default {
...@@ -131,7 +132,6 @@ export default { ...@@ -131,7 +132,6 @@ export default {
return { return {
info: {}, info: {},
resident: {}, resident: {},
visitSituation: 1,
step: 1, step: 1,
//第一步提交的表单 //第一步提交的表单
firstForm: {}, firstForm: {},
...@@ -154,8 +154,8 @@ export default { ...@@ -154,8 +154,8 @@ export default {
if (this.routerDetail.id) { if (this.routerDetail.id) {
const res = await fetchCurrencyById({ id: this.routerDetail.id }) const res = await fetchCurrencyById({ id: this.routerDetail.id })
let result = res.data || {} let result = res.data || {}
const {residentsRecord = {}} = result const { residentsRecord = {} } = result
const {id, ...others} = residentsRecord const { id, ...others } = residentsRecord
this.info = { this.info = {
...others, ...others,
personId: id, personId: id,
...@@ -192,9 +192,6 @@ export default { ...@@ -192,9 +192,6 @@ export default {
} }
this.step = val this.step = val
}, },
changeVisitSituation(val) {
this.visitSituation = val
},
//图片上传 //图片上传
async upload(imgList = []) { async upload(imgList = []) {
let list = [] let list = []
...@@ -257,9 +254,6 @@ export default { ...@@ -257,9 +254,6 @@ export default {
if (this.info.id) { if (this.info.id) {
params.visitRecordId = this.info.visitRecordId params.visitRecordId = this.info.visitRecordId
} }
if (params.visitSituation == 2) {
params.visitWay = 14
}
let fun = this.info.id ? updateCurrency : addCurrency let fun = this.info.id ? updateCurrency : addCurrency
fun(params, true).then(({ code }) => { fun(params, true).then(({ code }) => {
if (code == 'SUCCESS') { if (code == 'SUCCESS') {
...@@ -268,17 +262,9 @@ export default { ...@@ -268,17 +262,9 @@ export default {
}) })
}, },
toBack() { toBack() {
if (this.visitSituation == 1) { if (this.step != 1) {
if (this.step != 1) { this.step--
this.step-- return
return
}
}
if (this.visitSituation == 2) {
if (this.step != 1) {
this.step = 1
return
}
} }
this.$router.back() this.$router.back()
} }
......
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