Commit 8cd2d6c8 authored by gengchunlei's avatar gengchunlei

居民端小程序 v1.2 模板组件

parent 0f6d77b6
......@@ -41,12 +41,14 @@ export function fileUpload(params) {
return fetchBase({ url: `/chronic-admin/v1/pictures-info/qiniu`, body: params, contentType: 'file' })
}
// 获取模板管理数据
// 获取字典管理数据
export function getTemplateList() {
return fetchBase({ url: `/tumour-admin/v1/h5-app/dict`, loading: true })
}
//模板数据主键查询
//字典数据主键查询
export function getTemplateById() {
return fetchBase({ url: `/tumour-admin/v1/h5-app/dict`, loading: true })
}
\ No newline at end of file
}
......@@ -13,4 +13,14 @@ export function getVisitByPage(params, loading) {
// 待随访列表忽略
export function delVisit(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-task/delete`, body: params, loading: true })
}
// 模板 分页查询
export function getTemplateByPage(params) {
return fetchBase({ url: `/tumour-admin/v1/template/page`, body: params, loading: true })
}
// 模板 主键查询
export function getTemplateDetail(id, loading = true) {
return fetchBase({ url: `/tumour-admin/v1/template/query-id/${id}`, loading })
}
\ No newline at end of file
......@@ -52,7 +52,7 @@ export default {
if (!token) {
token = sessionStorage.getItem('token')
if (process.env.NODE_ENV !== 'production') {
token = 'e85be59c-b842-4e7a-b8eb-b9be87df2b56'
token = 'eb060856-4b3b-4231-8c0f-1dff5b3c7657'
}
}
if (token) {
......
......@@ -4,7 +4,10 @@
<script>
export default {
name: 'temDetail'
name: 'temDetail',
data() {
}
}
</script>
......
<template>
<van-popup v-model:show="show" position="right" :style="{ height: '100%' }" >
<div>1111111</div>
<van-popup v-model:show='innerShow' position='right' :style="{ height: '100%', width: '100%' }">
<div class='bg flex flex-col'>
<div class='p-3 flex items-center shrink-0 justify-between title bg-white'>
<div @click='onBack' class='text-12 back-bt'>
<doc-icon type='doc-left2' />
</div>
<div>随访详情</div>
<div class='text-primary left-btn' @click='openSearch'>筛查</div>
</div>
<div class='grow p-10 overflow-y-auto' ref='list'>
<van-pull-refresh v-model='loadingRefresh' @refresh='onRefresh'
:disabled='isRefreshDisable' style='min-height: 100%'>
<van-list
v-model:loading='loading'
:finished='finished'
:finished-text="list.length ? '没有更多了' : ''"
:immediate-check='false'
@load='onMore'
>
<div class='flex flex-col gap-y-2.5'>
<div class='py-3 px-4 doc-list-card' v-for='item in list' :key='item.id'>
<div class='flex flex-col gap-y-2.5'>
<div>
<span class='label'>模板分类</span>
<span>{{ item.idCard }}</span>
</div>
<div>
<span class='label'>模板名称</span>
<span>{{ item.serviceTypeName }}</span>
</div>
</div>
<div class='divider my-3'></div>
<div class='bt-group'>
<div>
<van-button round size='small' class='doc-btn-primary mr-3' @click='toDetail(item)'>查看</van-button>
<van-button round size='small' class='doc-btn-primary' @click='toDetail(item)'>引用</van-button>
</div>
</div>
</div>
</div>
</van-list>
<div class='text-center shrink-0 empty' v-if='!list.length'>
<img src='@/assets/image/doctor/empty.png' alt='' style='width: 1.2rem;'>
<p>暂无数据</p>
</div>
</van-pull-refresh>
<van-popup v-model:show='searchVisible' position='top' :style="{ height: '60%' }"
style='position: absolute;transition: none'
:overlay-style="{ position: 'absolute' }"
transition='viewer-fade'
:teleport='listDom'>
<div class='h-full flex flex-col workbench-search-box'>
<div class='px-4 py-3 grow overflow-y-auto' style=''>
<van-field v-model='form.templateName' placeholder='请输入要查询的模板名称' maxlength='100'
class='doc-input' />
<div class='my-3'>模板分类</div>
<CheckBtn :options="store.getDict('DC00082')" v-model:value='form.templateClassify' column-3
class='check-btn-workbench' />
<div class='my-3'>文件类型</div>
<CheckBtn :options="store.getDict('DC00093')" v-model:value='form.fileType' column-3
class='check-btn-workbench' />
<div class='my-3'>共享类型</div>
<CheckBtn :options="store.getDict('DC00053')" v-model:value='form.templateType' column-3
class='check-btn-workbench' />
</div>
<div class='text-16 flex shrink-0 text-center bt-group'>
<div class='grow py-3' @click='reset'>重置</div>
<div class='grow py-3 submit-btn' @click='search'>确定</div>
</div>
</div>
</van-popup>
</div>
</div>
</van-popup>
</template>
<script>
import { showToast } from 'vant'
import CheckBtn from '@/doctor/components/checkBtn/CheckBtn'
import { getTemplateByPage } from '@/api/doctor/workbench'
import { useStore } from '@/doctor/store'
const DefaultForm = {
templateName: undefined,
templateClassify: undefined,
//慢病
businessType: 1,
//文件类型
fileType: undefined,
//共享类型
templateType: 1
}
export default {
name: 'temList',
components: { CheckBtn },
props: {
show: { default: false }
},
data() {
return {
show: false
store: useStore(),
list: [],
pagination: {
total: 0,
pageIndex: 1,
pageSize: 8
},
loading: false,
finished: false,
loadingRefresh: false,
isRefreshDisable: false,
// 搜索弹出框
searchVisible: false,
form: { ...DefaultForm }
}
},
computed: {
innerShow() {
return this.show
},
listDom() {
return this.$refs.list
}
},
created() {
this.load()
},
mounted() {
const list = this.$refs.list
if (list) {
list.addEventListener('scroll', () => {
if (list.scrollTop > 0) {
this.isRefreshDisable = true
} else {
this.isRefreshDisable = false
}
})
}
},
methods: {
load(loading = true) {
const query = {
pageIndex: this.pagination.pageIndex,
pageSize: this.pagination.pageSize,
...this.form
}
getTemplateByPage(query, loading).then(res => {
if (this.pagination.pageIndex === 1) {
this.list = []
}
this.list = this.list.concat(res.data.dataList || [])
this.pagination.total = res.data.total || 0
this.finished = this.list.length >= this.pagination.total
}).finally(() => {
this.loading = false
this.loadingRefresh = false
})
},
search() {
this.pagination.pageIndex = 1
this.load()
this.searchVisible = false
},
reset() {
this.form = { ...DefaultForm }
this.search()
},
onMore() {
this.pagination.pageIndex++
this.load(false)
},
onRefresh() {
this.pagination.pageIndex = 1
this.load()
},
openSearch() {
this.searchVisible = true
},
toDetail(record) {
if (!record) return
if (record.residentInfoId == null) {
showToast('暂时无法查看 详情信息')
return
}
this.$router.push({
path: '/doctor/patient-detail',
query: {
residentInfoId: record.residentInfoId
}
})
},
onBack() {
this.$emit('closed', false)
}
}
}
</script>
<style scoped>
<style scoped lang='less'>
.title {
font-size: 18px;
font-weight: 600;
}
.bg-white {
background: #FFFFFF;
}
.left-btn {
font-size: 14px;
font-weight: 400;
}
.bg {
background: rgb(245, 245, 245);
height: 100vh;
}
.p-10 {
padding: 10px;
}
:deep(.workbench-search-box) {
color: #595959;
.bt-group {
border-top: 1px solid #EBEBEC;
color: #262626;
.submit-btn {
color: #fff;
background-color: var(--van-primary-color);
}
}
}
</style>
\ No newline at end of file
......@@ -26,9 +26,9 @@
/>
</div>
<div v-if='showTwo'>
<div class='flex justify-between items-center'>
<div class='label-title mt-5'>健康指导</div>
<van-button class='doc-btn-primary'>选择内容</van-button>
<div class='flex justify-between items-center mt-5'>
<div class='label-title '>健康指导</div>
<van-button class='doc-btn-p' @click='toShowTem'>选择内容</van-button>
</div>
<div class='health mt-2'>
......@@ -51,7 +51,8 @@
<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-if='modeEnumList.urgeResidentShow'>{{ firstForm.residentsRecord.residentName
}}先生/女士,</span>
<span v-else>您好,</span>
<span>请您于{{ form.screenTime }}</span>
<span>{{ authInfo.unitName }}</span>
......@@ -64,33 +65,33 @@
</div>
</div>
<van-popup v-model:show='showTime1' position='bottom'>
<van-date-picker v-model='currentTime1' @confirm='timeConfirm1' @cancel='showTime1 = false' />
<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>
<DocImageUpload
description="支持上传jpg、png、jpeg文件,大小请在10M以内"
lengthMessage="抱歉,最多可上传6个文件。"
:imageData="[]"
@change="(ids, option) => form.uploadVisitRecord = ids"
:maxLength="6"
class="mt-2"
/>
<DocImageUpload
description='支持上传jpg、png、jpeg文件,大小请在10M以内'
lengthMessage='抱歉,最多可上传6个文件。'
:imageData='[]'
@change='(ids, option) => form.uploadVisitRecord = ids'
:maxLength='6'
class='mt-2'
/>
</div>
<!-- 现场随访照片-->
<!-- 现场随访照片-->
<div>
<div class='no-req-label mt-5'>现场随访照片</div>
<DocImageUpload
description="支持上传jpg、png、jpeg文件,大小请在10M以内"
lengthMessage="抱歉,最多可上传6个文件。"
:imageData="[]"
@change="(ids, option) => form.sceneVisitImage = ids"
:maxLength="6"
class="mt-2"
description='支持上传jpg、png、jpeg文件,大小请在10M以内'
lengthMessage='抱歉,最多可上传6个文件。'
:imageData='[]'
@change='(ids, option) => form.sceneVisitImage = ids'
:maxLength='6'
class='mt-2'
/>
</div>
......@@ -114,6 +115,10 @@
</van-popup>
</div>
</van-form>
<div>
<temList :show='showTem' @closed='closedTem'></temList>
</div>
</div>
</template>
......@@ -124,10 +129,11 @@ import DocIcon from '@/components/docIcon/DocIcon'
import { showToast } from 'vant'
import { fetchDataHandle } from '@/utils/common'
import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload'
import TemList from '@/doctor/components/template/temList'
export default {
name: 'GeneralFUForm',
components: { DocImageUpload, DocIcon },
components: { TemList, DocImageUpload, DocIcon },
props: {
info: {
default: () => {
......@@ -157,6 +163,7 @@ export default {
imgInputList2: [],
showDate: false,
showTime1: false,
showTem: false,
currentTime1: null,
showImgList: [],
initSwipe: 0,
......@@ -222,7 +229,7 @@ export default {
res = true
}
return res
},
}
},
created() {
const date = dayjs()
......@@ -243,7 +250,7 @@ export default {
id: info.id,
diseaseType: info.diseaseType,
visitDate: info.visitDate || new dayjs(),
nextVisitDate: info.nextVisitDate || new dayjs().add(1, 'day').format('YYYY-MM-DD'),
nextVisitDate: info.nextVisitDate || new dayjs().add(1, 'day').format('YYYY-MM-DD'),
isSms: info.isSms,
isWx: info.isWx,
screenTime: new dayjs().add(1, 'day').format('YYYY-MM-DD'),
......@@ -274,6 +281,12 @@ export default {
this.form.screenTime = selectedValues.join('-')
this.showTime1 = false
},
toShowTem() {
this.showTem = true
},
closedTem(val) {
this.showTem = val
},
onSubmit() {
return new Promise((resolve, reject) => {
this.$refs.form.validate().then(() => {
......@@ -303,6 +316,21 @@ export default {
</script>
<style scoped lang='less'>
// 按钮样式
.doc-btn {
border: 0;
padding: 4px 8px;
height: 26px;
border-radius: 38px;
}
.doc-btn-p {
.doc-btn();
color: var(--van-primary-color);
background: #F0F3FF;
font-size: 13px;
}
.title {
font-weight: bold;
margin-bottom: 20px;
......
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