Commit 85bdb57c authored by gengchunlei's avatar gengchunlei

居民端小程序 v1.2 医生端选择推送渠道

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