diff --git a/src/api/screening.js b/src/api/resident/screening.js similarity index 72% rename from src/api/screening.js rename to src/api/resident/screening.js index df47b00c9e6deb09c1c446c08ead6b34a58ac0d1..85297656221b12780fcbcb52909c615f6b6a76ec 100644 --- a/src/api/screening.js +++ b/src/api/resident/screening.js @@ -1,4 +1,4 @@ -import { fetchBase } from './fetch.js' +import { fetchBase } from '../fetch.js' // 证件号查询是否管理慢病档案 export function queryResidentInfo(params) { @@ -14,3 +14,8 @@ export function querScreenList(params) { export function querScreenDetail(params) { return fetchBase({ url: `/chronic-resident/v1/chronic-screening-record/record`, body: params, loading: true }) } + +// 新增筛查记录 +export function savefirstScreen(params) { + return fetchBase({ url: `/chronic-resident/v1/chronic-screening-record/save`, body: params, loading: true }) +} \ No newline at end of file diff --git a/src/register.js b/src/register.js index 04f595398184c7f191172f9c3eaffc4b754a6fa6..0e7bdc963e99c78a3c6c38db1dad2d6bc7d58473 100644 --- a/src/register.js +++ b/src/register.js @@ -14,4 +14,23 @@ dayjs.locale('cn') export function registe(app) { // 自定义组件 app.use(DocIcon) + + app.config.globalProperties.$idCardHide = idCardHide + app.config.globalProperties.$phoneHide = phoneHide +} + +// idCard 脱敏 +function idCardHide(idCard) { + if (!idCard || idCard.length < 18) { + return idCard + } + return idCard.substring(0, 6) + '******' + idCard.substring(14) +} + +// phone 脱敏 +function phoneHide(phone) { + if (!phone || phone.length < 11) { + return phone + } + return phone.substring(0, 3) + '******' + phone.substring(9) } diff --git a/src/resident/screening/first/detail/Detail.vue b/src/resident/screening/first/detail/Detail.vue index 3df2f2e132cc0f23b9674c7929f7973eed8cecc5..74bb3f1dbd375a07092b2fcf36aed86b4b7bcd1d 100644 --- a/src/resident/screening/first/detail/Detail.vue +++ b/src/resident/screening/first/detail/Detail.vue @@ -9,7 +9,7 @@ <span>慢病自我初筛详情</span> </div> <div class="py-4 border-bottom"> - <div class="px-4 title">居民信息</div> + <div class="px-4 doc-title">居民信息</div> </div> <div class="px-4 list"> <div v-for="item in columnsBase" :key="item.key" @@ -20,7 +20,7 @@ </div> <div class="py-4 border-bottom"> - <div class="px-4 title">筛查信息</div> + <div class="px-4 doc-title">筛查信息</div> </div> <div class="px-4 list"> <template v-for="item in columnsScreen" :key="item.key"> @@ -74,7 +74,7 @@ <script> import { showNotify } from 'vant' -import { querScreenDetail } from '@/api/screening.js' +import { querScreenDetail } from '@/api/resident/screening.js' export default { data() { @@ -135,7 +135,7 @@ export default { }) }, onBack() { - + this.$router.back() } } } diff --git a/src/resident/screening/first/detail/List.vue b/src/resident/screening/first/detail/List.vue index 861444438146b92594080e29e7576fd646ba76ff..da4d01cd2659bd528da2d582e5b137eb3e2ad037 100644 --- a/src/resident/screening/first/detail/List.vue +++ b/src/resident/screening/first/detail/List.vue @@ -1,14 +1,48 @@ <template> - <div> - + <div class="h-full"> + <div class="p-3 text-16 text-black text-center shrink-0 top-bar"> + <!-- <span class="back-bt"> + <span @click="onBack"> + <doc-icon type="doc-left" /> + </span> + </span> --> + <span>慢病筛查记录</span> + </div> + <div class='card' v-for='item in list' :key="item.id"> + <div class="p-4"> + <div class='text-16 font-semibold mb-2 title'>{{ item.residentName }}</div> + <div class="mb-2"> + <span class="label">证件号码</span> + <span>{{ $idCardHide(item.idCard) }}</span> + </div> + <div class="mb-2"> + <span class="label">筛查日期</span> + <span>{{ item.screenDate }}</span> + </div> + <div class="mb-2"> + <span class="label">筛查机构</span> + <span>{{ item.screenUnitName }}</span> + </div> + <div class="bt-box flex pt-2 justify-end"> + <van-button type="primary" size="small" + @click="toDetail(item)">详 情</van-button> + </div> + </div> + <div class="divide"></div> + </div> </div> </template> <script> import { showNotify } from 'vant' -import { querScreenList } from '@/api/screening.js' +import { querScreenList } from '@/api/resident/screening.js' export default { + data() { + return { + list: [] + } + }, computed: { routeQuery() { return this.$route.query @@ -26,12 +60,35 @@ export default { }, methods: { init() { - querScreenList({ idCard: this.idCard }) + querScreenList({ idCard: this.idCard }).then(res => { + this.list = res.data || [] + }) + }, + toDetail(record) { + if (!record) return + const path = `/resident/screening/first/detail/${record.id}` + this.$router.push({ path }) } } } </script> <style lang="less" scoped> - +@import url('../../../utils/common.less'); +.card { + .label { + display: inline-block; + min-width: 5em; + color: #8C8C8C; + } + .bt-box { + border-top: 1px solid var(--van-border-color); + } + .divide { + border-top: 6px solid #f5f5f5; + } + &:last-child { + .divide { display: none; } + } +} </style> diff --git a/src/resident/screening/first/form/BaseInfo.vue b/src/resident/screening/first/form/BaseInfo.vue index f149926c3019c9ab99cfd4c01e3f40848edf3297..307d8285538e944ad02dfec80f88ecb39f8c84ea 100644 --- a/src/resident/screening/first/form/BaseInfo.vue +++ b/src/resident/screening/first/form/BaseInfo.vue @@ -1,7 +1,7 @@ <template> <div class="base-info"> <div class="flex py-4 border-bottom"> - <div class="px-4 title">居民信息</div> + <div class="px-4 doc-title">居民信息</div> <div class="text-12">请准确填写您的证件信息,标*内容为必填</div> </div> <van-form label-width="5em" ref="form" class="screen-form" @@ -285,9 +285,9 @@ export default { this.form.dataBirth = info.dataBirth }, submit() { - this.recordForm.base = {...this.form} - this.$parent.onNext() - return + // this.recordForm.base = {...this.form} + // this.$parent.onNext() + // return this.$refs.form.validate().then(() => { this.recordForm.base = {...this.form} this.$parent.onNext() diff --git a/src/resident/screening/first/form/IdCheck.vue b/src/resident/screening/first/form/IdCheck.vue index 534955162ff5bec2c03dacc1e8269d067c4474fa..f9f3410ebfc48a85968b891a66f52c0c707dd502 100644 --- a/src/resident/screening/first/form/IdCheck.vue +++ b/src/resident/screening/first/form/IdCheck.vue @@ -1,7 +1,7 @@ <template> <div class="h-full flex flex-col id-check"> <div class="flex items-end py-4 border-bottom"> - <div class="px-4 font-semibold title">居民证件信息</div> + <div class="px-4 font-semibold doc-title">居民证件信息</div> <div class="text-12">请准确填写您的证件信息,标*内容为必填</div> </div> <van-form label-width="5em" ref="form" @@ -46,7 +46,7 @@ <script> import { useStore } from '@/resident/store/index.js' import { idCardRule } from '@/utils/commonReg.js' -import { queryResidentInfo } from '@/api/screening.js' +import { queryResidentInfo } from '@/api/resident/screening.js' import { showNotify } from 'vant' export default { diff --git a/src/resident/screening/first/form/Index.vue b/src/resident/screening/first/form/Index.vue index b9918b90f6a5bfb7708fc15c271ba25a046a24b8..2d63dbd73e4ba14dd1920bed78e528b0362ca88f 100644 --- a/src/resident/screening/first/form/Index.vue +++ b/src/resident/screening/first/form/Index.vue @@ -69,7 +69,9 @@ export default { created() { if (!this.doctorId) { showNotify({ type: 'warning', message: '未获取到医生信息', duration: 0 }) + return } + this.recordForm.doctorId = this.doctorId }, methods: { onNext(step) { diff --git a/src/resident/screening/first/form/Result.vue b/src/resident/screening/first/form/Result.vue index 2d3facd45a963d24af5fe370fb97b55b9a85981f..8cfd0e8c5d5b4a38227d83f009b7d4611d5e5884 100644 --- a/src/resident/screening/first/form/Result.vue +++ b/src/resident/screening/first/form/Result.vue @@ -46,11 +46,19 @@ export default { const highItem = this.screenInfo.highItem return highItem && highItem.length ? this.store.getDict('CP00113').filter(e => highItem.includes(e.value)).map(e => e.name) : [] + }, + baseInfo() { + return this.recordForm.base || {} } }, methods:{ toRecord() { - + this.$router.replace({ + path: '/resident/screening/first/detail', + query: { + idCard: this.baseInfo.idCard + } + }) } } } diff --git a/src/resident/screening/first/form/ScreenInfo.vue b/src/resident/screening/first/form/ScreenInfo.vue index 624261889448a6282ce1a06af81fafc96130cdda..3ad5e0adf8d7e5de81c1a81544898ed92c2bd9ec 100644 --- a/src/resident/screening/first/form/ScreenInfo.vue +++ b/src/resident/screening/first/form/ScreenInfo.vue @@ -1,7 +1,7 @@ <template> <div class="screen-info"> <div class="flex items-end py-4 border-bottom"> - <div class="px-4 font-semibold title">筛查信息</div> + <div class="px-4 font-semibold doc-title">筛查信息</div> <div class="text-12">请根据您身体实际情况填写以下内容</div> </div> @@ -322,7 +322,8 @@ <script> import { useStore } from '@/resident/store/index.js' -import { checkboxReject } from '@/utils/common.js' +import { checkboxReject, fetchDataHandle } from '@/utils/common.js' +import { savefirstScreen } from '@/api/resident/screening.js' import dayjs from 'dayjs' const defaultForm = (info = {}) => { @@ -446,8 +447,19 @@ export default { this.resultHandle() this.recordForm.screen = {...this.form} console.log(this.form) + const query = { + ...this.form, + screenDoctorId: this.recordForm.doctorId, + residentsRecord: this.recordForm.base + } // 提交表单 - this.$parent.onNext() + savefirstScreen(fetchDataHandle(query, { + familyHistory: 'arrToStr', + highItem: 'arrToStr', + medicalHistory: 'arrToStr', + })).then(() => { + this.$parent.onNext() + }) }).catch(err => console.warn(err)) }, onPrev() { diff --git a/src/resident/utils/common.less b/src/resident/utils/common.less index f54e07106c9aadd7a65d3abfa68eb6f932efc3f8..e136524e1d14adb8dc9a4658e7d68fa29951fa49 100644 --- a/src/resident/utils/common.less +++ b/src/resident/utils/common.less @@ -1,4 +1,4 @@ -.title { +.doc-title { font-weight: 600; display: flex; align-items: center;