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 {
if (!token) {
token = sessionStorage.getItem('token')
if (process.env.NODE_ENV !== 'production') {
token = '3a247da4-e163-4e68-80da-4ed81f088ca5'
token = 'c05b4361-deec-4a64-92d5-b6f4b54ec89b'
}
}
if (token) {
......
......@@ -104,6 +104,7 @@ export default {
border: 1px solid transparent;
background-color: #FAFAFA;
border-radius: 8px;
text-align: center;
transition: all .2s;
}
.check-btn-item-active {
......
<template>
<div>
<van-form ref='form'>
<div class='no-req-label'>随访单位</div>
<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"
@click='show1 = true'
/>
<DocUnit v-model:show="show1" v-model:value="form.visitUnitId" @change="changeUnit"/>
<DocUnit v-model:show='show1' v-model:value='form.visitUnitId' @change='changeUnit' />
<div class='no-req-label mt-5'>随访科室</div>
<div class='label-title mt-5'>随访科室</div>
<van-field
v-model='form.visitOfficeName'
is-link
......@@ -21,9 +27,10 @@
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"/>
<DocOffice v-model:show='show2' v-model:value='form.visitOfficeId' @change='changeOffice'
:unitId='form.visitUnitId' />
<div class='no-req-label mt-5'>随访医生</div>
<div class='label-title mt-5'>随访医生</div>
<van-field
v-model='form.visitDoctorName'
is-link
......@@ -33,7 +40,8 @@
@click='show3 = true'
/>
<DocOfficeDoctor v-model:show="show3" v-model:value="form.visitDoctorId" @change="changeDoctor" :unitId="form.visitUnitId" :officeId="form.visitOfficeId"/>
<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;
......
......@@ -40,6 +40,29 @@
</div>
</div>
</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>
<div v-if='showOne'>
<div class='no-req-label mt-5'>上传随访记录</div>
......@@ -48,7 +71,7 @@
</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">
:key='new Date().getTime()' accept='image/*,.pdf'>
<div class='flex items-center justify-center'>
<div>
<doc-icon type='doc-upload' class='doc-up' />
......@@ -92,14 +115,14 @@
<div v-if='imgList.length > 6' class='warn mt-2'>最多允许上传6张!</div>
</div>
<div v-if='showOne'>
<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">
:key='new Date().getTime()-10000' accept='image/*,.pdf'>
<div class='flex items-center justify-center'>
<div>
<doc-icon type='doc-upload' class='doc-up' />
......@@ -147,7 +170,7 @@
<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>
......@@ -165,9 +188,9 @@
: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"
<van-date-picker v-model='form._nextVisitDate'
:min-date='nextVisitDateRange.min'
:max-date='nextVisitDateRange.max'
@confirm='dataConfirm' @cancel='showDate = false' />
</van-popup>
</div>
......@@ -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,
......@@ -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;
......
<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,18 +262,10 @@ 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
}
}
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