Commit b65b45d9 authored by gengchunlei's avatar gengchunlei

医生端 v1.2 1、初筛、复筛高危随访表单、详情页

parent 5079fca7
import {fetchBase} from '@/api/doctor/doctorFetch'
// 保存主要慢病随访
export function saveHighMajorVisit(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-major/save`,body: params})
}
// 修改主要慢病随访
export function updateHighMajorVisit(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-major/update`,body: params})
}
//查询主要慢病随访
export function getHighMajorVisitId(id) {
return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-major/record`,body:{"id":id},loading: true})
}
//删除主要慢病随访
export function deleteHighMajorVisit(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-major/delete`,body: params})
}
// 保存专病随访
export function saveHighSpecificVisit(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-specific/save`,body: params})
}
// 修改专病随访
export function updateHighSpecificVisit(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-specific/update`,body: params})
}
//查询专病随访
export function getHighSpecificVisitId(id) {
return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-specific/record`,body:{"id":id},loading: true})
}
//删除专病随访
export function deleteHighSpecificVisit(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-specific/delete`,body: params})
}
//查询最近一次专病高危随访
export function getLastHighSpecificVisit(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-specific/last-info`, body: params, loading: true})
}
//删除高危随访
export function delHighVisit(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-collect/delete`,body: params})
}
\ No newline at end of file
......@@ -137,6 +137,8 @@ export default {
addOptions: [
{ name: '新增主要慢病高危筛查', value: 1, path: '/doctor/screening/firstForm' },
{ name: '新增专病高危筛查', value: 2, path: '/doctor/screening/secondForm' },
{ name: '新增主要慢病高危随访', value: 8, path: '/doctor/screening/highVisit/firstForm' },
{ name: '新增专病高危随访', value: 9, path: '/doctor/screening/highVisit/secondForm' },
{ name: '新增慢病诊断', value: 3, path: '/doctor/diagnose/form' },
{ name: '新增通用随访', value: 4, path: '/doctor/followUp/generalFU/add' },
{ name: '新增死亡记录', value: 5, path: '/doctor/deathRecord/add' },
......
<template>
<div class="h-full visit-list" ref='list'>
<div class='h-full visit-list' ref='list'>
<van-pull-refresh v-model='loadingRefresh' @refresh='onRefresh'
:disabled='isRefreshDisable' style="min-height: 100%">
:disabled='isRefreshDisable' style='min-height: 100%'>
<van-list
v-model:loading='loading'
:finished='finished'
......@@ -9,43 +9,46 @@
:immediate-check='false'
@load='onMore'
>
<div class="flex flex-col">
<div v-for='item in list' :key="item.id"
:class="['mb-3', {'first-card': item.serveType == 1},
<div class='flex flex-col'>
<div v-for='item in list' :key='item.id'
:class="['mb-3', {'first-card': item.serveType == 1},
{'second-card': item.serveType == 2},
{'general-card': item.serveType == 3}]">
<div class="title px-4 py-1">{{item.serveTypeName}}</div>
<div class="py-3 px-4 doc-list-card" @click="toDetail(item)">
<div class="flex flex-col" style="row-gap: .04rem;line-height: 1.5;"
@click="toDetail(item)">
<div class='title px-4 py-1'>{{ item.serveTypeName }}</div>
<div class='py-3 px-4 doc-list-card'>
<div class='flex flex-col' style='row-gap: .04rem;line-height: 1.5;'
@click='toDetail(item)'>
<div>
<span class="label">随访日期</span>
<span class='label'>随访日期</span>
<span>{{ item.visitDate }}</span>
</div>
<div>
<span class="label">随访类型</span>
<span class='label'>随访类型</span>
<span>{{ item.visitTypeName || '-' }}</span>
</div>
<div>
<span class="label">随访方式</span>
<span class='label'>随访方式</span>
<span>{{ item.visitWayName || '-' }}</span>
</div>
<div class="text-ellipsis">
<span class="label">随访医生</span>
<div class='text-ellipsis'>
<span class='label'>随访医生</span>
<span>{{ item.visitDoctorName || '-' }}</span>
</div>
<div class="text-ellipsis">
<span class="label">随访机构</span>
<div class='text-ellipsis'>
<span class='label'>随访机构</span>
<span>{{ item.visitUnitName || '-' }}</span>
</div>
</div>
<div class="divider my-3" v-if="item.serveType == 3"></div>
<div class="bt-group" v-if="item.serveType == 3">
<van-button round size="small" class="doc-btn-primary" @click="toDetail(item)">详情</van-button>
<!-- <van-button round size="small" class="doc-btn-primary" @click='editBtn(item)'
v-if="!(item.allowUpdate !==1 || item.serveType == 3)">修改</van-button>
<van-button round size="small" class="doc-btn-red" @click="delBtn(item)"
v-if="!(item.allowUpdate !==1 || item.serveType == 3)">删除</van-button> -->
<div class='divider my-3'></div>
<div class='bt-group'>
<van-button round size='small' class='doc-btn-primary' @click='toDetail(item)'>详情
</van-button>
<van-button round size='small' class='doc-btn-primary' @click='editBtn(item)'
v-if='!(item.allowUpdate !==1 || item.serveType == 3)'>修改
</van-button>
<van-button round size='small' class='doc-btn-red' @click='delBtn(item)'
v-if='!(item.allowUpdate !==1 || item.serveType == 3)'>删除
</van-button>
</div>
</div>
</div>
......@@ -62,6 +65,9 @@
<script>
import { getHighVisitList } from '@/api/doctor/visit.js'
import { useStore } from '@/doctor/store'
import { delHighVisit } from '@/api/doctor/highVisitApi'
import { showConfirmDialog } from 'vant'
import { deleteSecondScreening } from '@/api/doctor/screening'
export default {
inject: ['residentInfo'],
......@@ -131,6 +137,24 @@ export default {
this.$message.info('暂时无法查看 详情信息')
return
}
//主要慢病
if (record.serveType == 1) {
this.$router.push({
path: '/doctor/screening/highVisit/firstDetail',
query: {
id: record.relationId
}
})
}
//专病高危
if (record.serveType == 2) {
this.$router.push({
path: '/doctor/screening/highVisit/secondDetail',
query: {
id: record.relationId
}
})
}
if (record.serveType == 3) {
this.$router.push({
path: '/doctor/screening/highVisit/GeneralFUDetail',
......@@ -139,19 +163,44 @@ export default {
}
})
}
// this.$router.push({
// path: '/doctor/patient-detail',
// query: {
// residentInfoId: record.residentInfoId
// }
// })
},
editBtn() {
editBtn(record) {
if (!record) return
if (record.id == null) {
this.$message.info('暂时无法修改')
return
}
//主要慢病
if (record.serveType == 1) {
this.$router.push({
path: '/doctor/screening/highVisit/firstForm',
query: {
id: record.relationId
}
})
}
//专病高危
if (record.serveType == 2) {
this.$router.push({
path: '/doctor/screening/highVisit/secondForm',
query: {
id: record.relationId
}
})
}
},
delBtn(record) {
showConfirmDialog({
message: '确定要删除吗?'
}).then(() => {
delHighVisit({ id: record.id }).then(res => {
setTimeout(() => {
this.$message.info('删除成功')
}, 600)
this.list = this.list.filter(e => e.id !== record.id)
})
}).catch((err) => { console.warn('delBtn', err) })
},
delBtn() {
}
},
watch: {
'store.refreshMark'() {
......@@ -161,6 +210,6 @@ export default {
}
</script>
<style lang="less" scoped>
<style lang='less' scoped>
</style>
......@@ -4,7 +4,7 @@
<span @click="onBack" class="text-12 back-bt">
<doc-icon type="doc-left2" />
</span>
<span>主要慢病筛查详情</span>
<span>主要慢病随访详情</span>
</div>
<div class="px-4 py-3 flex shrink-0 base-info">
<div class="flex w-full">
......@@ -13,7 +13,7 @@
<span class="name">{{ collapseList[0].info.residentName }}</span>
</div>
<div class='lh-22'>
<div class='mt-3'>筛查日期:<span class='color-26'>{{ info.screenDate || '-' }}</span></div>
<div class='mt-3'>随访日期:<span class='color-26'>{{ info.visitDate || '-' }}</span></div>
<span>慢病高危评估结果:</span>
<span :class="{'text-red': info.screenResult !== 1, 'color-26': info.screenResult === 1 }">{{ info.screenResultName }}</span>
</div>
......@@ -96,8 +96,8 @@
<script>
import { showNotify } from 'vant'
import { firstScreenDetail } from '@/api/doctor/screening.js'
import { useStore } from '@/doctor/store'
import { getHighMajorVisitId } from '@/api/doctor/highVisitApi'
export default {
data() {
......@@ -118,7 +118,7 @@ export default {
{ title: '户籍地址', key: 'registeredCodeName' },
{ title: '详细地址', key: 'permanentAddress' }
], info: {} },
{ title: '筛查信息', name: '2', columns: [
{ title: '随访信息', name: '2', columns: [
{ title: '年龄', key: 'currentAge', unit: '岁' },
{ title: '既往史', key: 'medicalHistoryName' },
{ title: '身高', key: 'height', unit: 'cm' },
......@@ -135,11 +135,11 @@ export default {
{ title: '运动', key: 'exerciseIntensityName' },
{ title: '慢病高危评估结果', key: 'screenResultName' }
], info: {} },
{ title: '筛查机构', name: '3', columns: [
{ title: '筛查机构', key: 'screenUnitName' },
{ title: '筛查科室', key: 'screenOfficeName' },
{ title: '筛查医生', key: 'screenDoctorName' },
{ title: '筛查日期', key: 'screenDate' }
{ title: '机构', name: '3', columns: [
{ title: '随访机构', key: 'visitUnitName' },
{ title: '随访科室', key: 'visitOfficeName' },
{ title: '随访医生', key: 'visitDoctorName' },
{ title: '随访日期', key: 'visitDate' }
], info: {} }
],
// 全部展开、收起
......@@ -153,7 +153,7 @@ export default {
}
},
created() {
document.title = '筛查详情'
document.title = '随访详情'
if (!this.id) {
showNotify({ type: 'warning', message: '未获取到查询信息'})
return
......@@ -163,7 +163,7 @@ export default {
methods: {
init() {
firstScreenDetail({ id: this.id }).then(res => {
getHighMajorVisitId(this.id).then(res => {
this.info = res.data || {}
this.collapseList[0].info = this.info?.residentsRecord
this.collapseList[1].info = this.info
......@@ -206,7 +206,7 @@ export default {
</script>
<style lang="less" scoped>
@import url('../../utils/common.less');
@import url('../../../utils/common.less');
.base-info {
background: linear-gradient(to bottom, #F0F6FF , #fff 50%);
......
......@@ -4,7 +4,7 @@
<span @click='onBack' class='text-12 back-bt'>
<doc-icon type='doc-left2' />
</span>
<span>专病筛查详情</span>
<span>专病随访详情</span>
</div>
<div class='px-4 py-3 flex shrink-0 base-info'>
<div class='flex w-full'>
......@@ -90,13 +90,13 @@
</div>
</div>
</van-collapse-item>
<van-collapse-item key='2' title='筛查病种' name='2'>
<van-collapse-item key='2' title='随访病种' name='2'>
<template #right-icon>
<doc-icon type='doc-down' />
</template>
<div class='list'>
<div class='flex justify-between py-1 border-bottom item'>
<span class='shrink-0 mr-2 label'>筛查病种</span>
<span class='shrink-0 mr-2 label'>随访病种</span>
<span class='text-end'>
<span>{{ info.diseaseArraysName || '-' }}</span>
</span>
......@@ -495,7 +495,7 @@
</div>
</van-collapse-item>
<van-collapse-item key='26' title='筛查机构' name='26'>
<van-collapse-item key='26' title='随访机构' name='26'>
<template #right-icon>
<doc-icon type='doc-down' />
</template>
......@@ -518,10 +518,10 @@
<script>
import { showNotify } from 'vant'
import { secondScreenDetail } from '@/api/doctor/screening.js'
import { useStore } from '@/doctor/store'
import { fetchDataHandle } from '@/utils/common'
import ImagePreview from '@/doctor/components/imagePreview/imagePreview'
import { getHighSpecificVisitId } from '@/api/doctor/highVisitApi'
export default {
components: { ImagePreview },
......@@ -531,7 +531,7 @@ export default {
activeCollapse: [],
collapseList: [
{ title: '居民信息', name: '1' },
{ title: '筛查病种', name: '2' },
{ title: '随访病种', name: '2' },
{ title: '病史', name: '3' },
{ title: '家族史', name: '4' },
{ title: '身高', name: '5' },
......@@ -555,7 +555,7 @@ export default {
{ title: '跟腱增厚', name: '23' },
{ title: '中国糖尿病风险评分', name: '24' },
{ title: '知情同意书', name: '25' },
{ title: '筛查机构', name: '26' }
{ title: '随访机构', name: '26' }
],
// 全部展开、收起
collapseAll: false,
......@@ -576,9 +576,9 @@ export default {
{ title: '详细地址', key: 'permanentAddress' }
],
columnsOrg: [
{ title: '筛查单位', key: 'screenUnitName' },
{ title: '筛查科室', key: 'screenOfficeName' },
{ title: '筛查医生', key: 'screenDoctorName' }
{ title: '随访单位', key: 'screenUnitName' },
{ title: '随访科室', key: 'screenOfficeName' },
{ title: '随访医生', key: 'screenDoctorName' }
],
highRiskList: []
}
......@@ -757,7 +757,7 @@ export default {
}
},
created() {
document.title = '筛查详情'
document.title = '随访详情'
if (!this.id) {
showNotify({ type: 'warning', message: '未获取到查询信息' })
return
......@@ -766,7 +766,7 @@ export default {
},
methods: {
init() {
secondScreenDetail({ id: this.id }).then(res => {
getHighSpecificVisitId(this.id).then(res => {
let result = res.data || {}
this.info = result
this.highRiskListHandle(result)
......@@ -909,7 +909,7 @@ export default {
</script>
<style lang='less' scoped>
@import url('../../utils/common.less');
@import url('../../../utils/common.less');
.base-info {
background: linear-gradient(to bottom, #F0F6FF, #fff 50%);
......
<template>
<div class="doctor-info">
<div class="doc-form-label" required>筛查单位</div>
<div class="doc-form-label" required>随访单位</div>
<van-field is-link
v-model='form.screenUnitName'
v-model='form.visitUnitName'
readonly
placeholder='请选择'
name="screenUnitId"
name="visitUnitId"
@click="showUnit = true"
:rules="[{ required: true, message: '请选择' }]"
/>
<DocUnit v-model:show="showUnit"
v-model:value="form.screenUnitId"
:valueName="form?.screenUnitName"
v-model:value="form.visitUnitId"
:valueName="form?.visitUnitName"
@change="unitChange"
/>
<div class="doc-form-label" required>筛查科室</div>
<div class="doc-form-label" required>随访科室</div>
<van-field is-link
v-model='form.screenOfficeName'
v-model='form.visitOfficeName'
readonly
placeholder='请选择'
name="screenOfficeId"
name="visitOfficeId"
@click="showOffice = true"
:rules="[{ required: true, message: '请选择' }]"
/>
<DocOffice v-model:show="showOffice"
v-model:value="form.screenOfficeId"
:unitId="form.screenUnitId"
v-model:value="form.visitOfficeId"
:unitId="form.visitUnitId"
@change="officeChange"
/>
<div class="doc-form-label" required>筛查医生</div>
<div class="doc-form-label" required>随访医生</div>
<van-field is-link
v-model='form.screenDoctorName'
v-model='form.visitDoctorName'
readonly
placeholder='请选择'
name="screenDoctorId"
name="visitDoctorId"
@click="showDoctor = true"
:rules="[{ required: true, message: '请选择' }]"
/>
<DocOfficeDoctor v-model:show="showDoctor"
:allowClear="false"
v-model:value="form.screenDoctorId"
:unitId="form.screenUnitId"
:officeId="form.screenOfficeId"
@change="(option) => { form.screenDoctorName = option.staffName }"
v-model:value="form.visitDoctorId"
:unitId="form.visitUnitId"
:officeId="form.visitOfficeId"
@change="(option) => { form.visitDoctorName = option.staffName }"
/>
</div>
</template>
......@@ -60,14 +60,14 @@ const defaultForm = (info = {}) => {
const form = {
createDate: undefined,
// 随访单位
screenUnitId: undefined,
screenUnitName: undefined,
visitUnitId: undefined,
visitUnitName: undefined,
// 随访科室
screenOfficeId: undefined,
screenOfficeName: undefined,
visitOfficeId: undefined,
visitOfficeName: undefined,
// 随访医生
screenDoctorId: undefined,
screenDoctorName: undefined,
visitDoctorId: undefined,
visitDoctorName: undefined,
// 录入单位
createUnitId: undefined,
createUnitName: undefined,
......@@ -112,14 +112,14 @@ export default {
initForm() {
this.form.createDate = dayjs().format('YYYY-MM-DD')
// 随访单位
this.form.screenUnitId = this.authInfo.unitId
this.form.screenUnitName = this.authInfo.unitName
this.form.visitUnitId = this.authInfo.unitId
this.form.visitUnitName = this.authInfo.unitName
// 随访科室
this.form.screenOfficeId = this.authInfo.officeId
this.form.screenOfficeName = this.authInfo.officeName
this.form.visitOfficeId = this.authInfo.officeId
this.form.visitOfficeName = this.authInfo.officeName
// 随访医生
this.form.screenDoctorId = this.authInfo.relationId
this.form.screenDoctorName = this.authInfo.nickName
this.form.visitDoctorId = this.authInfo.relationId
this.form.visitDoctorName = this.authInfo.nickName
// 录入单位
this.form.createUnitId = this.authInfo.unitId
this.form.createUnitName = this.authInfo.unitName
......@@ -131,17 +131,17 @@ export default {
this.form.createDoctorName = this.authInfo.nickName
},
unitChange(option = {}) {
this.form.screenUnitName = option.unitName
this.form.screenDoctorId = undefined
this.form.screenDoctorName = undefined
this.form.screenOfficeId = undefined
this.form.screenOfficeName = undefined
this.form.visitUnitName = option.unitName
this.form.visitDoctorId = undefined
this.form.visitDoctorName = undefined
this.form.visitOfficeId = undefined
this.form.visitOfficeName = undefined
},
officeChange(option = {}) {
this.form.screenOfficeName = option.officeName
this.form.screenDoctorId = undefined
this.form.screenDoctorName = undefined
this.form.visitOfficeName = option.officeName
this.form.visitDoctorId = undefined
this.form.visitDoctorName = undefined
},
submit() {
return this.form
......
<template>
<div class="h-full flex flex-col screening-first">
<DocNavBar :title="`${id ? '修改' : '新增'}主要慢病高危筛查`" class="shrink-0"
<DocNavBar :title="`${id ? '修改' : '新增'}主要慢病高危随访`" class="shrink-0"
:backFunc="onBack" :hideBack="step == 3"></DocNavBar>
<div class="p-4 overflow-y-auto grow" ref="all">
<archiveCommon :info="baseInfo" v-if="step == 1" ref="archiveCommon"></archiveCommon>
......@@ -29,9 +29,9 @@ import archiveCommon from '@/doctor/components/archiveCommon/archiveCommon.vue'
import FormCont from './FormCont.vue'
import Result from './Result.vue'
import { getChronicResidentsId } from '@/api/doctor/generalFU'
import { firstScreenDetail, saveFirstScreening, updateFirstScreening } from '@/api/doctor/screening.js'
import { fetchDataHandle } from '@/utils/common.js'
import { useStore } from '@/doctor/store'
import { getHighMajorVisitId, saveHighMajorVisit, updateHighMajorVisit } from '@/api/doctor/highVisitApi'
export default {
components: {
......@@ -46,7 +46,7 @@ export default {
step: 1,
// 患者基础信息
baseInfo: {},
// 筛查信息
// 随访信息
screenInfo: {},
// 结果
resultInfo: {}
......@@ -85,7 +85,7 @@ export default {
methods: {
async init() {
if (this.id) {
const res = await firstScreenDetail({id: this.id})
const res = await getHighMajorVisitId(this.id)
const result = res.data || {}
this.screenInfo = fetchDataHandle(result, {
medicalHistory: 'strToArrNum',
......@@ -115,7 +115,7 @@ export default {
this.$refs.all.scrollTo(0, 0)
})
} else if (val == 3) {
// 筛查信息
// 随访信息
this.$refs.FormCont.submit().then(res => {
if (!res) return
console.log('FormCont.submit', res)
......@@ -125,7 +125,7 @@ export default {
highItem: 'arrToStr'
})
query.residentsRecord = this.baseInfo
const func = query.id ? updateFirstScreening : saveFirstScreening
const func = query.id ? updateHighMajorVisit : saveHighMajorVisit
func(query).then(res => {
this.resultInfo = query
this.store.onRefreshMark()
......
......@@ -313,12 +313,12 @@
<div class='doc-form-label' required>高危评估结果</div>
<van-field
name="screenResult"
name="visitResult"
class="no-back"
style="padding: 0"
:rules="rules.screenResult">
:rules="rules.visitResult">
<template #input>
<van-radio-group v-model="form.screenResult"
<van-radio-group v-model="form.visitResult"
direction="horizontal"
shape="dot"
class="w-full doc-radio-group">
......@@ -331,21 +331,21 @@
<DoctorInfo :info="info" ref="DoctorInfo"/>
<div class='doc-form-label' required>筛查日期</div>
<div class='doc-form-label' required>随访日期</div>
<van-field
v-model="form.screenDate"
v-model="form.visitDate"
is-link
readonly
name="screenDate"
name="visitDate"
placeholder="请选择"
@click="showScreenDate = true"
:rules="rules.screenDate"
@click="showvisitDate = true"
:rules="rules.visitDate"
/>
<van-popup v-model:show="showScreenDate" position="bottom">
<van-date-picker v-model="form._screenDate"
:min-date="screenDateRange.min"
:max-date="screenDateRange.max"
@confirm="screenDateConfirm" @cancel="showScreenDate = false" />
<van-popup v-model:show="showvisitDate" position="bottom">
<van-date-picker v-model="form._visitDate"
:min-date="visitDateRange.min"
:max-date="visitDateRange.max"
@confirm="visitDateConfirm" @cancel="showvisitDate = false" />
</van-popup>
</van-form>
</div>
......@@ -391,8 +391,8 @@ const defaultForm = (info = {}) => {
// 运动
exerciseIntensity: undefined,
// 筛查日期
screenDate: undefined,
_screenDate: undefined,
visitDate: undefined,
_visitDate: undefined,
// 血压第一次
pressureOneDbp: undefined,
pressureOneSbp: undefined,
......@@ -400,7 +400,7 @@ const defaultForm = (info = {}) => {
pressureTwoDbp: undefined,
pressureTwoSbp: undefined,
// 高危评估结果(1:一般人群(小于3个指标);2:高危人群(大于等于3个指标))
screenResult: 1,
visitResult: 1,
// 高危项目 CP00113
highItem: undefined,
gender: undefined
......@@ -432,8 +432,8 @@ export default {
familyHistory: [{ required: true, message: '请选择' }],
exerciseIntensity: [{ required: true, message: '请选择' }],
isSmoking: [{ required: true, message: '请选择' }],
screenResult: [{ required: true, message: '请选择' }],
screenDate: [{ required: true, message: '请选择' }],
visitResult: [{ required: true, message: '请选择' }],
visitDate: [{ required: true, message: '请选择' }],
height: [{ required: true, message: '请输入' },
{ pattern: /^([1-9]\d{1}(?:\.\d{1})?|[1-2]\d{2}(?:\.\d{1})?|300)$/, message: '输入值在10~300内,1位小数' }],
weight: [{ required: true, message: '请输入' },
......@@ -456,9 +456,9 @@ export default {
// 家族史
showFamily: false,
// 筛查日期
showScreenDate: false,
showvisitDate: false,
// 筛查日期可选范围
screenDateRange: {
visitDateRange: {
min: undefined,
max: undefined
},
......@@ -541,10 +541,10 @@ export default {
methods: {
init() {
const date = dayjs()
this.form.screenDate = date.format('YYYY-MM-DD')
this.form._screenDate = [date.year(), date.month() + 1, date.date()]
this.screenDateRange.max = new Date(date.year(), date.month(), date.date())
this.screenDateRange.min = new Date(date.year() - 20, date.month(), date.date())
this.form.visitDate = date.format('YYYY-MM-DD')
this.form._visitDate = [date.year(), date.month() + 1, date.date()]
this.visitDateRange.max = new Date(date.year(), date.month(), date.date())
this.visitDateRange.min = new Date(date.year() - 20, date.month(), date.date())
},
async submit() {
try {
......@@ -585,9 +585,9 @@ export default {
this.form.familyHistory = checkboxReject(this.form.familyHistory, [9])
},
// 筛查日期
screenDateConfirm({ selectedValues }) {
this.form.screenDate = selectedValues.join('-')
this.showScreenDate = false
visitDateConfirm({ selectedValues }) {
this.form.visitDate = selectedValues.join('-')
this.showvisitDate = false
},
// resultHandle() {
// const {currentAge, waistline, familyHistory = [], isSmoking, gender,
......@@ -627,9 +627,9 @@ export default {
// list = Array.from(new Set(list))
// this.form.highItem = list
// if (list.length >= 3){
// this.form.screenResult = 2
// this.form.visitResult = 2
// }else {
// this.form.screenResult = 1
// this.form.visitResult = 1
// }
// },
setPressureOne(val) {
......@@ -660,9 +660,9 @@ export default {
handler(val) {
this.form.highItem = val
if (val.length >= 3){
this.form.screenResult = 2
this.form.visitResult = 2
}else {
this.form.screenResult = 1
this.form.visitResult = 1
}
},
immediate: true
......
<template>
<div class="screening-first-result text-center pt-3 px-3">
<doc-icon type="doc-check-circle" style="font-size: .46rem;"/>
<div class="mt-3">筛查完成</div>
<div class="mt-3">随访完成</div>
<div class="text-start mt-5">
<span style="color: #595959;">通过筛查,您的慢病高危评估结果为:</span>
<span style="color: #595959;">通过随访,您的慢病高危评估结果为:</span>
<span v-if="info.screenResult == 2" class="text-red">高危人群</span>
<span v-else>一般人群</span>
</div>
<div style="margin-top: .48rem">
<van-button type='primary' block round plain
@click='toScreen'>专病高危筛查</van-button>
@click='toScreen'>专病高危随访</van-button>
<div class="pt-3"></div>
<van-button type='primary' block round plain
@click='toDetail'>查看居民详情</van-button>
......
......@@ -4,42 +4,42 @@
<div :class="['label-title', 'mt-5']">随访单位</div>
<van-field
v-model='form.screenUnitName'
v-model='form.visitUnitName'
is-link
readonly
placeholder='随访单位'
class='input-back mt-2 form-input'
:rules='rules.screenUnitName'
:rules='rules.visitUnitName'
@click='show1 = true'
/>
<DocUnit v-model:show='show1' v-model:value='form.screenUnitId' @change='changeUnit' />
<DocUnit v-model:show='show1' v-model:value='form.visitUnitId' @change='changeUnit' />
<div class='label-title mt-5'>随访科室</div>
<van-field
v-model='form.screenOfficeName'
v-model='form.visitOfficeName'
is-link
readonly
placeholder='随访科室'
class='input-back mt-2 form-input'
:rules='rules.screenOfficeName'
:rules='rules.visitOfficeName'
@click='show2 = true'
/>
<DocOffice v-model:show='show2' v-model:value='form.screenOfficeId' @change='changeOffice'
:unitId='form.screenUnitId' />
<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.screenDoctorName'
v-model='form.visitDoctorName'
is-link
readonly
placeholder='随访医生'
class='input-back mt-2 form-input'
:rules='rules.screenDoctorName'
:rules='rules.visitDoctorName'
@click='show3 = true'
/>
<DocOfficeDoctor v-model:show='show3' v-model:value='form.screenDoctorId' @change='changeDoctor'
:unitId='form.screenUnitId' :officeId='form.screenOfficeId' />
<DocOfficeDoctor v-model:show='show3' v-model:value='form.visitDoctorId' @change='changeDoctor'
:unitId='form.visitUnitId' :officeId='form.visitOfficeId' />
</van-form>
</div>
</template>
......@@ -92,17 +92,17 @@ export default {
methods: {
setForm(info) {
const form = {
screenDate: new dayjs().format("YYYY-MM-DD"),
visitDate: new dayjs().format("YYYY-MM-DD"),
createDate: new dayjs().format("YYYY-MM-DD"),
// 随访单位
screenUnitId: this.authInfo.unitId,
screenUnitName: this.authInfo.unitName,
visitUnitId: this.authInfo.unitId,
visitUnitName: this.authInfo.unitName,
// 随访科室
screenOfficeId: this.authInfo.officeId,
screenOfficeName: this.authInfo.officeName,
visitOfficeId: this.authInfo.officeId,
visitOfficeName: this.authInfo.officeName,
// 随访医生
screenDoctorId: this.authInfo.relationId,
screenDoctorName: this.authInfo.nickName,
visitDoctorId: this.authInfo.relationId,
visitDoctorName: this.authInfo.nickName,
// 录入单位
createUnitId: this.authInfo.unitId,
createUnitName: this.authInfo.unitName,
......@@ -121,24 +121,24 @@ export default {
return form
},
changeUnit(val) {
this.form.screenUnitName = val.unitName
this.form.screenUnitId = val.id
this.form.screenOfficeId = undefined
this.form.screenOfficeName = undefined
this.form.screenDoctorId = undefined
this.form.screenDoctorName = undefined
this.form.visitUnitName = val.unitName
this.form.visitUnitId = val.id
this.form.visitOfficeId = undefined
this.form.visitOfficeName = undefined
this.form.visitDoctorId = undefined
this.form.visitDoctorName = undefined
this.show1 = false
},
changeOffice(val) {
this.form.screenOfficeId = val.id
this.form.screenOfficeName = val.officeName
this.form.screenDoctorId = undefined
this.form.screenDoctorName = undefined
this.form.visitOfficeId = val.id
this.form.visitOfficeName = val.officeName
this.form.visitDoctorId = undefined
this.form.visitDoctorName = undefined
this.show2 = false
},
changeDoctor(val) {
this.form.screenDoctorId = val.id
this.form.screenDoctorName = val.staffName
this.form.visitDoctorId = val.id
this.form.visitDoctorName = val.staffName
this.show3 = false
},
onSubmit() {
......
<template>
<div class='screening-first-cont'>
<van-form ref='form'>
<div class='title'>筛查信息</div>
<div class='title'>随访信息</div>
<div v-if='ageShow'>
<div class='no-req-label mt-5'>年龄</div>
<van-field
......
<template>
<div class="screening-first-result text-center pt-3 px-3">
<doc-icon type="doc-check-circle" style="font-size: .46rem;"/>
<div class="mt-3">筛查完成</div>
<div class="mt-3">随访完成</div>
<div class="text-start mt-5">
<span style="color: #595959;">通过筛查,您的慢病高危评估结果为:</span>
<span style="color: #595959;">通过随访,您的慢病高危评估结果为:</span>
<div class="text-red mt-2" style='line-height: 24px'>{{specialScreenResultList.join("、")}}</div>
</div>
<div style="margin-top: .48rem">
......
<template>
<div class='h-full flex flex-col screening-second'>
<DocNavBar :title="`${id ? '修改' : '新增'}专病高危筛查`" class='shrink-0' :backFunc='onBack'></DocNavBar>
<DocNavBar :title="`${id ? '修改' : '新增'}专病高危随访`" class='shrink-0' :backFunc='onBack'></DocNavBar>
<div class='p-4 overflow-y-auto grow' ref='all'>
<BaseInfo :info='info'
v-show='step ==1'
......@@ -50,15 +50,20 @@
import DocNavBar from '@/doctor/components/docNavBar/DocNavBar.vue'
import ArchiveCommon from '@/doctor/components/archiveCommon/archiveCommon'
import { 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 FormCont from '@/doctor/screening/highVisit/second/FormCont'
import Result from '@/doctor/screening/highVisit/second/Result'
import DiseaseSelect from '@/doctor/screening/highVisit/second/DiseaseSelect'
import BaseInfo from '@/doctor/screening/highVisit/second/BaseInfo'
import { fetchDataHandle } from '@/utils/common'
import { getLastScreen, saveSecondScreening, secondScreenDetail, updateSecondScreening } from '@/api/doctor/screening'
import { showToast } from 'vant'
import CommonBottom from '@/doctor/screening/second/CommonBottom'
import CommonBottom from '@/doctor/screening/highVisit/second/CommonBottom'
import { useStore } from '@/doctor/store'
import {
getHighSpecificVisitId,
getLastHighSpecificVisit,
saveHighSpecificVisit,
updateHighSpecificVisit
} from '@/api/doctor/highVisitApi'
export default {
components: {
......@@ -95,7 +100,7 @@ export default {
async init() {
this.info = {}
if (this.id) {
const res = await secondScreenDetail({ id: this.id })
const res = await getHighSpecificVisitId(this.id)
let result = res.data || {}
const { residentsRecord = {} } = result
const { id, ...others } = residentsRecord
......@@ -133,15 +138,15 @@ export default {
}
}
},
//获取上一次筛查数据
//获取上一次随访数据
getLastData() {
let par = {
residentInfoId: this.residentInfoId
}
getLastScreen(par).then(res => {
getLastHighSpecificVisit(par).then(res => {
let result = res.data || {}
if (Object.keys(result).length === 0) {
showToast('暂无上一次筛查数据')
showToast('暂无上一次随访数据')
return
}
let obj = this.dataHandle(result)
......@@ -210,12 +215,12 @@ export default {
})
}
if (!params.id) {
saveSecondScreening(params).then(res => {
saveHighSpecificVisit(params).then(res => {
this.$message.success('新增成功')
this.toNext(4)
})
} else {
updateSecondScreening(params).then(res => {
updateHighSpecificVisit(params).then(res => {
this.$message.success('修改成功')
this.toNext(4)
})
......
......@@ -2,24 +2,24 @@
<div>
<van-form ref='form'>
<div :class="['label-title', 'mt-5']">随访单位</div>
<div :class="['label-title', 'mt-5']">筛查单位</div>
<van-field
v-model='form.screenUnitName'
is-link
readonly
placeholder='随访单位'
placeholder='筛查单位'
class='input-back mt-2 form-input'
:rules='rules.screenUnitName'
@click='show1 = true'
/>
<DocUnit v-model:show='show1' v-model:value='form.screenUnitId' @change='changeUnit' />
<div class='label-title mt-5'>随访科室</div>
<div class='label-title mt-5'>筛查科室</div>
<van-field
v-model='form.screenOfficeName'
is-link
readonly
placeholder='随访科室'
placeholder='筛查科室'
class='input-back mt-2 form-input'
:rules='rules.screenOfficeName'
@click='show2 = true'
......@@ -27,12 +27,12 @@
<DocOffice v-model:show='show2' v-model:value='form.screenOfficeId' @change='changeOffice'
:unitId='form.screenUnitId' />
<div class='label-title mt-5'>随访医生</div>
<div class='label-title mt-5'>筛查医生</div>
<van-field
v-model='form.screenDoctorName'
is-link
readonly
placeholder='随访医生'
placeholder='筛查医生'
class='input-back mt-2 form-input'
:rules='rules.screenDoctorName'
@click='show3 = true'
......@@ -94,13 +94,13 @@ export default {
const form = {
screenDate: new dayjs().format("YYYY-MM-DD"),
createDate: new dayjs().format("YYYY-MM-DD"),
// 随访单位
// 筛查单位
screenUnitId: this.authInfo.unitId,
screenUnitName: this.authInfo.unitName,
// 随访科室
// 筛查科室
screenOfficeId: this.authInfo.officeId,
screenOfficeName: this.authInfo.officeName,
// 随访医生
// 筛查医生
screenDoctorId: this.authInfo.relationId,
screenDoctorName: this.authInfo.nickName,
// 录入单位
......
......@@ -85,6 +85,27 @@ const routes = [
name: 'screening-secondDetail',
component: () => import(/* webpackChunkName: "doctor" */ '@/doctor/screening/detail/SecondDetail.vue')
},
{
path: 'screening/highVisit/firstForm',
name: 'screening-highVisit-first-form',
component: () => import(/* webpackChunkName: "doctor" */ '@/doctor/screening/highVisit/first/FirstForm.vue')
},
{
path: 'screening/highVisit/firstDetail',
name: 'screening-highVisit-firstDetail',
component: () => import(/* webpackChunkName: "doctor" */ '@/doctor/screening/highVisit/detail/FirstDetail.vue')
},
{
path: 'screening/highVisit/secondForm',
name: 'screening-highVisit-second-form',
component: () => import(/* webpackChunkName: "doctor" */ '@/doctor/screening/highVisit/second/SecondForm.vue')
},
{
path: 'screening/highVisit/secondDetail',
name: 'screening-highVisit-secondDetail',
component: () => import(/* webpackChunkName: "doctor" */ '@/doctor/screening/highVisit/detail/SecondDetail.vue')
},
{
path: 'screening/highVisit/GeneralFUDetail',
name: 'screening-highVisit-GeneralFUDetail',
......
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