Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
aixianling
2022-05-25 17:05:12 +08:00
12 changed files with 657 additions and 537 deletions

View File

@@ -1,48 +1,13 @@
<template> <template>
<div class="album"> <div class="album">
<div class="tips">请确保以下信息全部由本人填写本人对所填写内容的真实性和完整性负责</div> <div class="tips">请确保以下信息全部由本人填写本人对所填写内容的真实性和完整性负责</div>
<div class="form-item__group"> <div class="form-item__group">
<div class="form-item">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>返乡人员姓名</h2>
</div>
<div class="form-item__right">
<input placeholder="请输入" v-model="form.name" disabled :maxlength="20"/>
</div>
</div>
</div>
<div class="form-item">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>身份证号</h2>
</div>
<div class="form-item__right">
<input placeholder="请输入" v-model="form.idNumber" disabled :maxlength="20"/>
</div>
</div>
</div>
</div>
<div class="form-item__group">
<div class="form-item">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>当前体温</h2>
</div>
<div class="form-item__right">
<input placeholder="请输入" v-model="form.temperature" :maxlength="20"/>
<i></i>
</div>
</div>
</div>
<div class="form-item form-item__imgs"> <div class="form-item form-item__imgs">
<div class="form-item__wrapper"> <div class="form-item__wrapper">
<div class="form-item__title"> <div class="form-item__title">
<i>*</i> <i>*</i>
<h2>14天内是否接触新冠确诊或疑似患者</h2> <h2>个人健康状况可多选</h2>
</div> </div>
<div class="form-item__right"> <div class="form-item__right">
<AiRadio style="width: 100%;" v-model="form.touchInFourteen" dict="epidemicTouchInFourteen"></AiRadio> <AiRadio style="width: 100%;" v-model="form.touchInFourteen" dict="epidemicTouchInFourteen"></AiRadio>
@@ -53,48 +18,7 @@
<div class="form-item__wrapper"> <div class="form-item__wrapper">
<div class="form-item__title"> <div class="form-item__title">
<i>*</i> <i>*</i>
<h2>当前健康状况可多选</h2> <h2>当前状况</h2>
</div>
<div class="form-item__right">
<AiCheckbox style="width: 100%;" v-model="form.health" dict="epidemicRecentHealth"></AiCheckbox>
</div>
</div>
</div>
</div>
<div class="form-item__group">
<div class="form-item">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>核酸检测日期</h2>
</div>
<div class="form-item__right">
<div class="ai-area" @click="isShowDate = true">
<div class="ai-area__wrapper">
<span class="label" v-if="form.checkTime">{{ form.checkTime }}</span>
<i v-else>请选择</i>
<u-icon name="arrow-right" color="#ddd"/>
</div>
</div>
</div>
</div>
</div>
<div class="form-item form-item__imgs">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>核酸检测结果</h2>
</div>
<div class="form-item__right">
<AiRadio style="width: 100%;" v-model="form.checkResult" dict="epidemicRecentTestResult"></AiRadio>
</div>
</div>
</div>
<div class="form-item form-item__imgs">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>健康码类型</h2>
</div> </div>
<div class="form-item__right"> <div class="form-item__right">
<AiRadio style="width: 100%;" v-model="form.healthCode" dict="epidemicHealthCode"></AiRadio> <AiRadio style="width: 100%;" v-model="form.healthCode" dict="epidemicHealthCode"></AiRadio>
@@ -105,26 +29,16 @@
<div class="form-item__wrapper"> <div class="form-item__wrapper">
<div class="form-item__title"> <div class="form-item__title">
<i>*</i> <i>*</i>
<h2>已接种疫苗次数</h2> <h2>备注说明</h2>
</div> </div>
<div class="form-item__right"> <div class="form-item__right">
<AiRadio style="width: 100%;" v-model="form.vaccine" dict="epidemicVaccineTime"></AiRadio> <textarea placeholder="请补充说明健康监测情况" v-model="form.temperature"/>
</div>
</div>
</div>
<div class="form-item form-item__imgs">
<div class="form-item__wrapper">
<div class="form-item__title">
<i style="margin-right: 8px"></i>
<h2>本人健康码截图<span style="color: #999; font-size:14px;font-weight:normal;">(最多9张)</span></h2>
</div>
<div class="form-item__right" style="padding-left: 5px">
<AiUploader v-model="form.checkPhoto" :limit="9" multiple></AiUploader>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<u-picker mode="time" :params="dataParams" v-model="isShowDate" @confirm="onDateChange"></u-picker>
<!-- <u-picker mode="time" :params="dataParams" v-model="isShowDate" @confirm="onDateChange"></u-picker> -->
<div class="btn-wrapper"> <div class="btn-wrapper">
<div class="btn" hover-class="text-hover" @click="submit">提交</div> <div class="btn" hover-class="text-hover" @click="submit">提交</div>
</div> </div>
@@ -135,7 +49,7 @@
import {mapState} from 'vuex' import {mapState} from 'vuex'
export default { export default {
appName:"今日上报", appName:"上报今日状态",
data() { data() {
return { return {
isShowDate: false, isShowDate: false,
@@ -220,10 +134,6 @@ export default {
return this.$toast('请选择已接种疫苗次数') return this.$toast('请选择已接种疫苗次数')
} }
// if (!this.form.checkPhoto.length) {
// return this.$toast('请上传健康码截图')
// }
this.$loading()
this.$instance.post(`/app/appepidemichealthreport/addOrUpdate`, { this.$instance.post(`/app/appepidemichealthreport/addOrUpdate`, {
...this.form, ...this.form,
openid: this.user.openid, openid: this.user.openid,
@@ -238,7 +148,6 @@ export default {
uni.navigateBack() uni.navigateBack()
}, 400) }, 400)
} }
this.$hideLoading()
}) })
} }
} }
@@ -351,7 +260,7 @@ export default {
input { input {
flex: 1; flex: 1;
height: 100%; height: 100%;
text-align: right; text-align: left;
color: #333; color: #333;
padding-right: 10px; padding-right: 10px;
} }
@@ -361,22 +270,21 @@ export default {
align-items: center; align-items: center;
font-size: 32px; font-size: 32px;
span { // .u-input {
max-width: 400px; // display: block;
margin-right: 8px; // width: 100%;
color: #333333; // }
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
i {
margin-right: 8px;
color: #999999;
}
} }
} }
.form-item__wrapper_input {
display: block;
}
&:last-child { &:last-child {
.form-item__wrapper { .form-item__wrapper {
border-bottom: none; border-bottom: none;
@@ -401,11 +309,10 @@ export default {
padding: 0 4px; padding: 0 4px;
font-weight: 600; font-weight: 600;
font-size: 32px; font-size: 32px;
color: #333333; color: #666666;
} }
} }
&.form-item__imgs, &.form-item__textarea { &.form-item__imgs, &.form-item__textarea {
.form-item__wrapper { .form-item__wrapper {
display: block; display: block;
@@ -416,6 +323,7 @@ export default {
textarea { textarea {
width: 100%; width: 100%;
height: 90px; height: 90px;
} }
.form-item__title { .form-item__title {

View File

@@ -27,7 +27,7 @@
<div class="form-item__wrapper"> <div class="form-item__wrapper">
<div class="form-item__title"> <div class="form-item__title">
<i>*</i> <i>*</i>
<h2>手机号码</h2> <h2>联系方式</h2>
</div> </div>
<div class="form-item__right"> <div class="form-item__right">
<input placeholder="请输入" type="number" v-model="form.phone" :maxlength="11"/> <input placeholder="请输入" type="number" v-model="form.phone" :maxlength="11"/>
@@ -38,7 +38,7 @@
<div class="form-item__wrapper"> <div class="form-item__wrapper">
<div class="form-item__title"> <div class="form-item__title">
<i>*</i> <i>*</i>
<h2>上报地区</h2> <h2>所属地区</h2>
</div> </div>
<div class="form-item__right"> <div class="form-item__right">
<AiAreaPicker class="ai-area" :areaId="$areaId" v-model="form.areaId" :fullName.sync="form.areaName"> <AiAreaPicker class="ai-area" :areaId="$areaId" v-model="form.areaId" :fullName.sync="form.areaName">
@@ -58,7 +58,7 @@
<h2>详细地址</h2> <h2>详细地址</h2>
</div> </div>
<div class="form-item__right"> <div class="form-item__right">
<textarea auto-height v-model="form.address" :maxlength="500" placeholder="请输入详细地址" <textarea auto-height v-model="form.address" :maxlength="500" placeholder="如住所、酒店、单位等"
placeholder-style="font-size: 16px;"></textarea> placeholder-style="font-size: 16px;"></textarea>
</div> </div>
</div> </div>

View File

@@ -9,11 +9,15 @@
</div> </div>
</div> </div>
<div class="home-list"> <div class="home-list">
<div class="item" v-for="(item, index) in list" :key="index"> <div class="item" v-for="(item, index) in list" :key="index" >
<div class="item-top"> <div class="item-top" @click.stop="$linkTo('./UserInfo?id=' + item.id)">
<div class="item-top__left"> <div class="item-top__left">
<h2>{{ item.name }}</h2> <h2>{{ item.name }}<span :class="item.status == 1? 'status0':'status1'">返乡人员</span></h2>
<p @click.stop="$linkTo('./UserInfo?id=' + item.id)" hover-class="text-hover">查看个人信息></p> <!-- <p @click.stop="$linkTo('./UserInfo?id=' + item.id)" hover-class="text-hover">查看个人信息></p> -->
<div>
<p>登记于2021-10-15</p>
<span :class="item.status == 1? 'status0':'status1'">异常</span>
</div>
</div> </div>
<span v-if="item.status === '0'">健康数据异常</span> <span v-if="item.status === '0'">健康数据异常</span>
</div> </div>
@@ -38,7 +42,8 @@
<AiEmpty v-if="list.length==0"/> <AiEmpty v-if="list.length==0"/>
</div> </div>
<div class="btn-wrapper"> <div class="btn-wrapper">
<div class="btn" @click="toReport" hover-class="text-hover">添加上报人员</div> <div class="share">分享</div>
<div class="addBtn" @click="toReport" hover-class="text-hover">添加上报人员</div>
</div> </div>
</div> </div>
</template> </template>
@@ -167,17 +172,43 @@ export default {
border-bottom: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD;
.item-top__left { .item-top__left {
width: 100%;
h2 { h2 {
line-height: 44px; line-height: 44px;
margin-bottom: 8px; margin-bottom: 8px;
color: #333; color: #333;
font-size: 32px; font-size: 32px;
font-weight: 600; font-weight: 600;
span {
padding: 4px 8px;
font-size: 26px;
font-weight: normal;
margin-left: 24px;
}
} }
div {
p { display: flex;
color: #999999; justify-content: space-between;
font-size: 26px; p {
color: #999999;
font-size: 26px;
}
span {
padding: 4px 8px;
font-size: 26px;
}
}
.status0 {
color: #FF4466;
background: #FFF5F7;
}
.status1 {
color: #1AAAFF;
background: #E8F6FF;
}
.status2 {
color: #42D784;
background: #ECFBF2;
} }
} }
@@ -219,5 +250,29 @@ export default {
} }
} }
} }
.btn-wrapper {
display: flex;
justify-content: space-between;
padding: 20px 32px !important;
box-sizing: border-box;
.addBtn,
.share {
height: 88px;
line-height: 88px;
text-align: center;
}
.share {
width: 35%;
border-radius: 16px;
border: 1px solid #A0C0FF;
}
.addBtn {
width: 60%;
background: #4181FF;
border-radius: 16px;
color: #fff;
}
}
} }
</style> </style>

View File

@@ -35,44 +35,76 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-item"> </div>
<div class="form-item__group">
<div class="form-item form-item__imgs">
<div class="form-item__wrapper"> <div class="form-item__wrapper">
<div class="form-item__title"> <div class="form-item__title">
<i>*</i> <i>*</i>
<h2>人员类别</h2> <!-- <span style="color:#999; fontSize:14px; font-weight: normal;">(最多9张)</span> -->
<h2>健康码截图</h2>
</div> </div>
<div class="form-item__right"> <div class="form-item__right" style="padding-left: 5px;">
<AiSelect v-model="form.type" dict="epidemicRecentPersonType" class="select"></AiSelect> <AiUploader v-model="form.checkPhoto" :limit="1"></AiUploader>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="form-item__group">
<div class="form-item form-item__imgs">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<!-- <span style="color:#999; fontSize:14px; font-weight: normal;">(最多9张)</span> -->
<h2>48小时核酸证明</h2>
</div>
<div class="form-item__right" style="padding-left: 5px;">
<AiUploader v-model="form.checkPhoto" :limit="1"></AiUploader>
</div>
</div>
</div>
</div>
<div class="form-item__group"> <div class="form-item__group">
<div class="form-item"> <div class="form-item">
<div class="form-item__wrapper"> <div class="form-item__wrapper">
<div class="form-item__title"> <div class="form-item__title">
<i>*</i> <i>*</i>
<h2>行方式</h2> <h2>发地</h2>
</div>
<div class="form-item__right">
<AiAreaPicker class="ai-area" v-model="form.startAreaId" :fullName.sync="form.startAreaName" all>
<div class="ai-area__wrapper">
<span class="label" v-if="form.startAreaName">{{ form.startAreaName }}</span>
<i v-else>请选择</i>
<u-icon name="arrow-right" color="#ddd"/>
</div>
</AiAreaPicker>
</div>
</div>
</div>
<div class="form-item">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>交通工具</h2>
</div> </div>
<div class="form-item__right"> <div class="form-item__right">
<AiSelect dict="epidemicRecentTravel" v-model="form.travelType" class="select"></AiSelect> <AiSelect dict="epidemicRecentTravel" v-model="form.travelType" class="select"></AiSelect>
</div> </div>
</div> </div>
</div> </div>
<div class="form-item"> <div class="form-item form-item__textarea">
<div class="form-item__wrapper"> <div class="form-item__wrapper">
<div class="form-item__title"> <div class="form-item__title">
<i>*</i> <i>*</i>
<h2>出发时间</h2> <h2>火车车次/航班号/客运站</h2>
</div> </div>
<div class="form-item__right"> <div class="form-item__right">
<div class="ai-area" @click="isShowStartTime = true"> <textarea auto-height v-model="form.arriveAddress" :maxlength="100" placeholder="如车次、座位号/车牌号等信息"
<div class="ai-area__wrapper"> placeholder-style="font-size: 16px"></textarea>
<span class="label" v-if="form.startTime">{{ form.startTime }}</span>
<i v-else>请选择</i>
<u-icon name="arrow-right" color="#ddd"/>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -80,7 +112,7 @@
<div class="form-item__wrapper"> <div class="form-item__wrapper">
<div class="form-item__title"> <div class="form-item__title">
<i>*</i> <i>*</i>
<h2>出发地区</h2> <h2>目的地</h2>
</div> </div>
<div class="form-item__right"> <div class="form-item__right">
<AiAreaPicker class="ai-area" v-model="form.startAreaId" :fullName.sync="form.startAreaName" all> <AiAreaPicker class="ai-area" v-model="form.startAreaId" :fullName.sync="form.startAreaName" all>
@@ -97,19 +129,39 @@
<div class="form-item__wrapper"> <div class="form-item__wrapper">
<div class="form-item__title"> <div class="form-item__title">
<i>*</i> <i>*</i>
<h2>出发地址</h2> <h2>居住地点</h2>
</div> </div>
<div class="form-item__right"> <div class="form-item__right">
<textarea auto-height v-model="form.startAddress" :maxlength="500" placeholder="请输入详细的出发地址" <textarea auto-height v-model="form.arriveAddress" :maxlength="100" placeholder="如住所、酒店、单位等"
placeholder-style="font-size: 16px"></textarea> placeholder-style="font-size: 16px"></textarea>
</div> </div>
</div> </div>
</div> </div>
<!-- 行程安排 -->
<div class="form-item">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>预计/实际抵达时间</h2>
</div>
<div class="form-item__right">
<div class="ai-area" @click="isShowStartTime = true">
<div class="ai-area__wrapper">
<span class="label" v-if="form.startTime">{{ form.startTime }}</span>
<i v-else>请选择</i>
<u-icon name="arrow-right" color="#ddd"/>
</div>
</div>
</div>
</div>
</div>
<div class="form-item"> <div class="form-item">
<div class="form-item__wrapper"> <div class="form-item__wrapper">
<div class="form-item__title"> <div class="form-item__title">
<i>*</i> <i>*</i>
<h2>到达时间</h2> <h2>预计离开时间</h2>
</div> </div>
<div class="form-item__right"> <div class="form-item__right">
<div class="ai-area" @click="isShowEndTime = true"> <div class="ai-area" @click="isShowEndTime = true">
@@ -122,125 +174,8 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-item">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>到达地区</h2>
</div>
<div class="form-item__right">
<AiAreaPicker class="ai-area" v-model="form.arriveAreaId" :fullName.sync="form.arriveAreaName" :areaId="$areaId">
<div class="ai-area__wrapper">
<span class="label" v-if="form.arriveAreaName">{{ form.arriveAreaName }}</span>
<i v-else>请选择</i>
<u-icon name="arrow-right" color="#ddd"/>
</div>
</AiAreaPicker>
</div>
</div>
</div>
<div class="form-item form-item__textarea">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>返乡地址</h2>
</div>
<div class="form-item__right">
<textarea auto-height v-model="form.arriveAddress" :maxlength="500" placeholder="请输入详细的返乡地址"
placeholder-style="font-size: 16px"></textarea>
</div>
</div>
</div>
<div class="form-item form-item__textarea">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>行程描述</h2>
</div>
<div class="form-item__right">
<textarea auto-height style="height: 90px" v-model="form.description" :maxlength="500" placeholder="请输入行程描述"
placeholder-style="font-size: 16px"></textarea>
</div>
</div>
</div>
</div>
<div class="form-item__group">
<div class="form-item">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>核酸检测日期</h2>
</div>
<div class="form-item__right">
<div class="ai-area" @click="isShowDate = true">
<div class="ai-area__wrapper">
<span class="label" v-if="form.checkTime">{{ form.checkTime }}</span>
<i v-else>请选择</i>
<u-icon name="arrow-right" color="#ddd"/>
</div>
</div>
</div>
</div>
</div>
<div class="form-item form-item__imgs">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>本人健康码截图或核酸检测报告<span style="color:#999; fontSize:14px; font-weight: normal;">(最多9张)</span></h2>
</div>
<div class="form-item__right" style="padding-left: 5px;">
<AiUploader v-model="form.checkPhoto" :limit="9" multiple></AiUploader>
</div>
</div>
</div>
<div class="form-item form-item__imgs">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>核酸检测结果</h2>
</div>
<div class="form-item__right">
<AiRadio style="width: 100%;" v-model="form.checkResult" dict="epidemicRecentTestResult"/>
</div>
</div>
</div>
</div>
<div class="form-item__group">
<div class="form-item">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>当前体温</h2>
</div>
<div class="form-item__right">
<input placeholder="请输入" v-model="form.temperature" :maxlength="20"/>
<i></i>
</div>
</div>
</div>
<div class="form-item form-item__imgs">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>14天内是否接触新冠确诊或疑似患者</h2>
</div>
<div class="form-item__right">
<AiRadio style="width: 100%;" v-model="form.touchInFourteen" dict="epidemicTouchInFourteen"></AiRadio>
</div>
</div>
</div>
<div class="form-item form-item__imgs">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>当前健康状况可多选</h2>
</div>
<div class="form-item__right">
<AiCheckbox style="width: 100%;" v-model="form.health" dict="epidemicRecentHealth"></AiCheckbox>
</div>
</div>
</div>
</div> </div>
<u-picker mode="time" :params="dataParams" v-model="isShowDate" @confirm="onDateChange"></u-picker> <u-picker mode="time" :params="dataParams" v-model="isShowDate" @confirm="onDateChange"></u-picker>
<u-picker mode="time" :params="params" v-model="isShowStartTime" @confirm="onStartChange"></u-picker> <u-picker mode="time" :params="params" v-model="isShowStartTime" @confirm="onStartChange"></u-picker>
<u-picker mode="time" :params="params" v-model="isShowEndTime" @confirm="onEndChange"></u-picker> <u-picker mode="time" :params="params" v-model="isShowEndTime" @confirm="onEndChange"></u-picker>
@@ -431,11 +366,12 @@ export default {
this.$hideLoading() this.$hideLoading()
this.flag = false this.flag = false
if (res.code == 0) { if (res.code == 0) {
uni.$emit('update') // uni.$emit('update')
this.$toast('提交成功') // this.$toast('提交成功')
setTimeout(() => { // setTimeout(() => {
uni.navigateBack() // uni.navigateBack()
}, 400) // }, 400)
this.$linkTo('./result')
} }
}) })
} }

View File

@@ -1,7 +1,11 @@
<template> <template>
<div class="returnHomeRegister"> <div class="AppReturnHomeRegister">
<div class="tips">
<div>外地抵汉来汉人员疫情防控政策通</div>
<div @click="$linkTo('./policyDetail')">查看详情></div>
</div>
<div class="title"> <div class="title">
<h2>全部记录</h2> <h2>报备记录</h2>
<div class="right"> <div class="right">
<span></span> <span></span>
<i>{{ total }}</i> <i>{{ total }}</i>
@@ -34,8 +38,17 @@
<AiEmpty v-if="list.length==0"/> <AiEmpty v-if="list.length==0"/>
</div> </div>
<div class="btn-wrapper"> <div class="btn-wrapper">
<div class="btn" @click="toReport" hover-class="text-hover">添加返乡记录</div> <div class="share" @click="show = true">分享</div>
<div class="addbtn" @click="toReport" hover-class="text-hover">添加返乡报备</div>
</div> </div>
<u-popup v-model="show" mode="center" border-radius="14" height="300px">
<view>出淤泥而不染濯清涟而不妖</view>
<view>出淤泥而不染濯清涟而不妖</view>
<view>出淤泥而不染濯清涟而不妖</view>
<view>出淤泥而不染濯清涟而不妖</view>
</u-popup>
</div> </div>
</template> </template>
@@ -49,7 +62,8 @@ export default {
return { return {
list: [], list: [],
current: 1, current: 1,
total: 0 total: 0,
show: false,
} }
}, },
@@ -73,6 +87,9 @@ export default {
toReport() { toReport() {
this.$linkTo('./Add') this.$linkTo('./Add')
}, },
// policyDetail() {
// }
getList() { getList() {
this.$instance.post(`/app/appepidemicbackhomerecord/list`, null, { this.$instance.post(`/app/appepidemicbackhomerecord/list`, null, {
params: { params: {
@@ -93,9 +110,16 @@ export default {
}).catch(() => { }).catch(() => {
uni.hideLoading() uni.hideLoading()
}) })
},
shareBtn() {
// console.log('分享');
} }
}, },
onReachBottom() { onReachBottom() {
this.current++ this.current++
this.getList() this.getList()
@@ -104,9 +128,28 @@ export default {
</script> </script>
<style lang="scss" socped> <style lang="scss" socped>
.returnHomeRegister { .AppReturnHomeRegister {
padding: 0 0 150px 0; padding: 0 0 150px 0;
.tips {
height: 106px;
line-height: 106px;
display: flex;
justify-content: space-between;
background: #FFF8F3;
padding: 0 32px;
div:first-child {
width: 520px;
color: #FF883C;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
div:last-child {
color: #4181FF;
}
}
.title { .title {
display: flex; display: flex;
align-items: center; align-items: center;
@@ -193,5 +236,30 @@ export default {
font-size: 28px; font-size: 28px;
} }
} }
.btn-wrapper {
display: flex;
justify-content: space-between;
padding: 20px 32px !important;
box-sizing: border-box;
.addbtn,
.share {
height: 88px;
line-height: 88px;
text-align: center;
}
.share {
width: 35%;
border-radius: 16px;
border: 1px solid #A0C0FF;
}
.addbtn {
width: 60%;
background: #4181FF;
border-radius: 16px;
color: #fff;
}
}
} }
</style> </style>

View File

@@ -1,184 +1,126 @@
<template> <template>
<div class="detail" v-if="pageShow"> <div class="detail" v-if="pageShow">
<div class="detail-header"> <div class="detail-header">
<h2>{{ info.name }}的返乡登记信息</h2> <div class="user">
<div class="item-info"> <div class="header">
<div class="item-info__item"> <h3>张三</h3>
<image src="/static/img/from-icon.png"/> <div style="color: #4181FF;" @click="call('110')"><u-icon name="phone" color="#4181FF" size="28"></u-icon>拨打电话</div>
<span>{{ info.startAreaName }}</span>
</div> </div>
<div class="item-info__item"> <div class="idNumber">
<image src="/static/img/to-icon.png"/> <span>身份证号</span>
<span>{{ info.arriveAreaName }}</span> <span>220102200303078610</span>
</div> </div>
<div class="item-info__item"> <div class="phone">
<image src="/static/img/to-date.png"/> <span>手机号码</span>
<span>{{ info.arriveTime && info.arriveTime.substr(0, info.arriveTime.length - 3) }} 到达</span> <span>13827263092</span>
</div>
<div class="picture">
<div class="healthPic">
<img src="./components/resultPic.png" alt="" @click="preview()">
<span>健康码</span>
</div>
<div class="nucleinPic">
<img src="./components/resultPic.png" alt="" @click="preview()">
<span>核算证明</span>
</div>
</div>
</div>
<div class="card">
<div class="item-info">
<div class="item-info__item">
<image src="/static/img/from-icon.png"/>
<span>{{ info.startAreaName }}</span>
</div>
<div class="item-info__item">
<image src="/static/img/to-icon.png"/>
<span>{{ info.arriveAreaName }}</span>
</div>
<div class="item-info__item">
<image src="/static/img/to-date.png"/>
<span>{{ info.arriveTime && info.arriveTime.substr(0, info.arriveTime.length - 3) }} 到达</span>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="detail-info">
<h2>基本信息</h2> <div class="info">
<div class="detail-info__item"> <div class="detail-info">
<div class="left"> <h2>行程信息<span>省外高风险地区</span></h2>
<label>姓名</label>
<div class="detail-info__item">
<div class="left">
<label>出发地</label>
</div>
<div class="right">
<span :style="{color: info.denger == 1 ? '#FF4466' : '#333'}">{{ info.startAreaName }}</span>
</div>
</div> </div>
<div class="right">
<span>{{ info.name }}</span> <div class="detail-info__item">
</div> <div class="left">
</div> <label>交通工具</label>
<div class="detail-info__item"> </div>
<div class="left"> <div class="right">
<label>身份证号</label> <span>{{ $dict.getLabel('epidemicRecentTravel', info.travelType) }}</span>
</div> </div>
<div class="right"> </div>
<span>{{ info.idNumber }}</span>
</div> <div class="detail-info__item_wrap">
</div> <div class="left">
<div class="detail-info__item"> <label>火车车次/航班号/汽车出发地</label>
<div class="left"> </div>
<label>手机号码</label> <div class="right">
</div> <span>{{ $dict.getLabel('epidemicRecentTravel', info.travelType) }}</span>
<div class="right" @click="call(info.phone)" hover-class="text-hover"> </div>
<image src="https://cdn.cunwuyun.cn/dvcp/h5/common/phone.png"/> </div>
<span style="color: #4181FF">{{ info.phone }}</span>
</div> <div class="detail-info__item">
</div> <div class="left">
<div class="detail-info__item"> <label>目的地</label>
<div class="left"> </div>
<label>人员类别</label> <div class="right">
</div> <span>{{ info.startAddress }}</span>
<div class="right"> </div>
<span :style="{color: /[03]/.test(info.type) ? '#42D784' : '#FF4466'}">{{ </div>
$dict.getLabel('epidemicMemberType', info.type)
}}</span> <div class="detail-info__item">
</div> <div class="left">
</div> <label>居住地点</label>
</div> </div>
<div class="detail-info"> <div class="right">
<h2>行程信息</h2> <span>{{ info.startAddress }}</span>
<div class="detail-info__item"> </div>
<div class="left"> </div>
<label>出行方式</label>
</div> <div class="detail-info__item">
<div class="right"> <div class="left">
<span>{{ $dict.getLabel('epidemicRecentTravel', info.travelType) }}</span> <label>行程安排</label>
</div> </div>
</div> <div class="right">
<div class="detail-info__item"> <span>{{ info.startAddress }}</span>
<div class="left"> </div>
<label>出发时间</label> </div>
</div>
<div class="right"> <div class="detail-info__item">
<span>{{ info.startTime && info.startTime.substr(0, info.startTime.length - 3) }}</span> <div class="left">
</div> <label>预计/实际抵达时间</label>
</div> </div>
<div class="detail-info__item"> <div class="right">
<div class="left"> <span>{{ info.startTime && info.startTime.substr(0, info.startTime.length - 3) }}</span>
<label>出发地区</label> </div>
</div> </div>
<div class="right">
<span :style="{color: info.denger == 1 ? '#FF4466' : '#333'}">{{ info.startAreaName }}</span>
</div> <div class="detail-info__item">
</div> <div class="left">
<div class="detail-info__item"> <label>预计离开时间</label>
<div class="left"> </div>
<label>出发地址</label> <div class="right">
</div> <span>{{ info.arriveTime && info.arriveTime.substr(0, info.arriveTime.length - 3) }}</span>
<div class="right"> </div>
<span>{{ info.startAddress }}</span>
</div>
</div>
<div class="detail-info__item">
<div class="left">
<label>到达时间</label>
</div>
<div class="right">
<span>{{ info.arriveTime && info.arriveTime.substr(0, info.arriveTime.length - 3) }}</span>
</div>
</div>
<div class="detail-info__item">
<div class="left">
<label>返乡地区</label>
</div>
<div class="right">
<span>{{ info.arriveAreaName }}</span>
</div>
</div>
<div class="detail-info__item">
<div class="left">
<label>返乡地址</label>
</div>
<div class="right">
<span>{{ info.arriveAddress }}</span>
</div>
</div>
<div class="detail-info__item">
<div class="left">
<label>行程描述</label>
</div>
<div class="right">
<span>{{ info.description }}</span>
</div>
</div>
</div>
<div class="detail-info">
<h2>核酸检测信息</h2>
<div class="detail-info__item">
<div class="left">
<label>核酸检测日期</label>
</div>
<div class="right">
<span>{{ info.checkTime.split(' ')[0] }}</span>
</div>
</div>
<div class="detail-info__item">
<div class="left">
<label>核酸检测结果</label>
</div>
<div class="right">
<span :style="{color: info.checkResult === '0' ? '#42D784' : '#FF4466'}">{{
$dict.getLabel('epidemicRecentTestResult', info.checkResult)
}}</span>
</div>
</div>
<div class="detail-info__item detail-info__item--img">
<div class="left" style="max-width: 100%;">
<label>本人健康码截图或核酸检测报告</label>
</div>
<div class="right">
<image :src="item.url" @click="preview(item.url)" v-for="(item, index) in info.checkPhoto" :key="index"/>
</div>
</div>
</div>
<div class="detail-info">
<h2>健康状况</h2>
<div class="detail-info__item">
<div class="left">
<label>当前体温</label>
</div>
<div class="right">
<span :style="{color: info.temperature >= 37.3 ? '#FF4466' : '#42D784'}">{{ info.temperature }}</span>
</div>
</div>
<div class="detail-info__item">
<div class="left">
<label>14天内是否接触新冠确诊或疑似患者</label>
</div>
<div class="right">
<span :style="{color: info.touchInFourteen === '0' ? '#42D784' : '#FF4466'}">{{
$dict.getLabel('epidemicTouchInFourteen', info.touchInFourteen)
}}</span>
</div>
</div>
<div class="detail-info__item">
<div class="left">
<label>当前健康状况</label>
</div>
<div class="right">
<span :style="{color: !info.isHealth ? '#42D784' : '#FF4466'}">{{ info.healthName }}</span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
@@ -189,7 +131,8 @@ export default {
data() { data() {
return { return {
info: {}, info: {},
pageShow: false pageShow: false,
files: [],
} }
}, },
@@ -208,6 +151,13 @@ export default {
}) })
}, },
// previewImg(images, img) {
// uni.previewImage({
// urls: images.map((v) => v.url),
// current: img,
// })
// },
getInfo(id) { getInfo(id) {
this.$instance.post(`/app/appepidemicbackhomerecord/queryDetailById?id=${id}`).then(res => { this.$instance.post(`/app/appepidemicbackhomerecord/queryDetailById?id=${id}`).then(res => {
if (res.code === 0) { if (res.code === 0) {
@@ -247,110 +197,180 @@ export default {
.detail-header { .detail-header {
padding: 32px; padding: 32px;
background: #fff; height: 680px;
background: linear-gradient(135deg, #6496FF 0%, #4F75FF 100%);
position: relative;
h2 { .user {
margin-bottom: 32px; width: 100%;
color: #333333; background: #FFFFFF;
font-size: 40px; box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.02);
font-weight: 600; border-radius: 16px;
} padding: 32px;
box-sizing: border-box;
.item-info { .header {
.item-info__item {
display: flex; display: flex;
justify-content: space-between;
align-items: center; align-items: center;
margin-bottom: 8px; h3 {
font-size: 40px;
&:last-child {
margin-bottom: 0;
}
image {
width: 32px;
height: 32px;
margin-right: 16px;
}
span {
color: #333;
font-size: 28px;
}
}
}
}
.detail-info {
margin-top: 24px;
padding: 0 32px;
background: #fff;
& > h2 {
height: 116px;
line-height: 116px;
font-size: 38px;
font-weight: 600;
color: #333;
}
.detail-info__item {
display: flex;
justify-content: space-between;
padding: 34px 0;
border-bottom: 1px solid #DDDDDD;
&:last-child {
border: none;
}
.left {
display: flex;
line-height: 1.3;
max-width: 360px;
label {
position: relative;
color: #999999;
font-size: 32px;
}
}
.right {
display: flex;
max-width: 450px;
span {
color: #333333; color: #333333;
font-size: 32px; font-weight: 600;
text-align: right;
} }
image { }
width: 40px; .idNumber,
height: 40px; .phone {
color: #999999;
font-size: 26px;
margin-top: 8px;
}
.picture {
display: flex;
margin-top: 24px;
.healthPic,
.nucleinPic {
width: 192px;
height: 192px;
border-radius: 8px;
position: relative;
img {
width: 100%;
height: 100%;
}
span {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 40px;
line-height: 40px;
background: rgb(27, 27, 27, 0.85);
color: #fff;
font-size: 22px;
text-align: center;
border-radius: 0 0 8px 8px;
}
} }
.healthPic {
margin-right: 24px;
}
} }
} }
.detail-info__item--img { .card {
display: block; margin-top: 32px;
background: rgba(70, 106, 233);
border-radius: 16px;
padding: 32px;
box-sizing: border-box;
.item-info {
.item-info__item {
display: flex;
align-items: center;
margin-bottom: 8px;
.right { &:last-child {
flex-wrap: wrap; margin-bottom: 0;
max-width: 100%; }
margin-top: 34px;
image { image {
width: 226px; width: 32px;
height: 226px; height: 32px;
margin: 0 9px 9px 0; margin-right: 16px;
}
&:nth-of-type(3n) { span {
margin-right: 0; color: #fff;
font-size: 28px;
} }
} }
} }
} }
} }
.info {
position: absolute;
top: 657px;
left: 50%;
width: 100%;
transform: translate(-50%, 1%);
.detail-info {
margin-top: 24px;
padding: 0 32px;
background: #fff;
border-radius: 16px 16px 0 0;
& > h2 {
height: 116px;
line-height: 116px;
font-size: 38px;
font-weight: 600;
color: #333;
span {
float: right;
font-size: 28px;
color: #FF4466;
font-weight: normal;
}
}
.detail-info__item {
display: flex;
justify-content: space-between;
padding: 34px 0;
border-bottom: 1px solid #DDDDDD;
&:last-child {
border: none;
}
.left {
display: flex;
line-height: 1.3;
max-width: 360px;
label {
position: relative;
color: #999999;
font-size: 32px;
}
}
.right {
display: flex;
max-width: 450px;
span {
color: #333333;
font-size: 32px;
text-align: right;
}
image {
width: 40px;
height: 40px;
}
}
}
.detail-info__item_wrap {
display: block;
border-bottom: 1px solid #DDDDDD;
padding: 34px 0;
.left {
color: #999999;
font-size: 32px;
}
.right {
margin-top: 20px;
}
}
}
}
} }
</style> </style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -0,0 +1,43 @@
<template>
<div class="policyDetail">
<h2>外地抵汉来汉人员疫情防控政策通知</h2>
<div class="tips">
<span>武昌区疫情防控中心</span><span>125人看过</span>
</div>
<u-parse :html="content"></u-parse>
</div>
</template>
<script>
export default {
data() {
return {
content: {}
}
},
methods: {},
}
</script>
<style lang="scss" scoped>
.policyDetail {
padding: 32px 32px;
box-sizing: border-box;
background: #FFF;
h2 {
font-size: 48px;
font-weight: 600;
}
.tips {
display: flex;
justify-content: space-between;
color: #999999;
margin-top: 16px;
}
u-parse {
margin-top: 64px;
}
}
</style>

View File

@@ -0,0 +1,85 @@
<template>
<div class="service-result" >
<!-- v-if="showPage" -->
<img src="./components/resultPic.png" />
<!-- <img src="./components/resultPic.png" /> -->
<h2>提交成功</h2>
<div class="service-btn" hover-class="text-hover" @click="myAdd">报备记录</div>
<div class="service-btn" hover-class="text-hover" @click="back">返回</div>
</div>
</template>
<script>
export default {
name: 'result',
data() {
return {
showPage: false,
title: '',
}
},
onLoad(query) {
this.title = query.title
uni.setNavigationBarTitle({
title: this.title,
})
if (this.title) {
this.showPage = true
}
},
methods: {
myAdd() {
uni.reLaunch({url: './AppReturnHomeRegister'})
},
back() {
uni.reLaunch({url: './AppHelpDeclaration'})
},
},
}
</script>
<style lang="scss" scoped>
.service-result {
min-height: 100vh;
padding-top: 96px;
text-align: center;
background: #fff;
box-sizing: border-box;
.service-btn {
width: 320px;
height: 88px;
line-height: 88px;
margin: 80px auto 0;
text-align: center;
background: #4181FF;
font-size: 36px;
color: #fff;
box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.02);
border-radius: 16px;
}
.service-btn:last-child {
margin-top: 30px;
background: #FFF;
color: #4181FF;
border: 1px solid #4181FF;
}
h2 {
margin-bottom: 32px;
color: #333333;
font-size: 40px;
font-weight: 600;
}
image {
width: 240px;
height: 240px;
}
}
</style>

View File

@@ -43,7 +43,7 @@
<view class="item" :class="{spb:!row.topLabel,flex:!row.topLabel}" v-for="row in household" :key="row.prop"> <view class="item" :class="{spb:!row.topLabel,flex:!row.topLabel}" v-for="row in household" :key="row.prop">
<span class="label" :class="{required:row.required}" v-text="row.label"/> <span class="label" :class="{required:row.required}" v-text="row.label"/>
<AiAreaPicker v-if="row.prop=='householdAreaId'" all @input="v=>$set(form,row.prop,v)" v-model="form[row.prop]" <AiAreaPicker v-if="row.prop=='householdAreaId'" all @input="v=>$set(form,row.prop,v)" v-model="form[row.prop]"
:fullName.sync="form.householdAreaName" valueLevel="5" isForm/> :fullName.sync="form.householdAreaName" valueLevel="5" isForm :selectRoot="false"/>
<textarea v-else v-model="form[row.prop]" input-align="right" placeholder="请输入" placeholder-style="color:#999" <textarea v-else v-model="form[row.prop]" input-align="right" placeholder="请输入" placeholder-style="color:#999"
maxlength="50"/> maxlength="50"/>
</view> </view>
@@ -53,7 +53,7 @@
<span class="label" :class="{required:row.required}" v-text="row.label"/> <span class="label" :class="{required:row.required}" v-text="row.label"/>
<AiSelect v-if="row.dict" v-model="form[row.prop]" :dict="row.dict"/> <AiSelect v-if="row.dict" v-model="form[row.prop]" :dict="row.dict"/>
<AiDate v-else-if="row.type=='time'" v-model="form[row.prop]"/> <AiDate v-else-if="row.type=='time'" v-model="form[row.prop]"/>
<AiAreaPicker v-else-if="row.type=='area'" all v-model="form[row.prop]" <AiAreaPicker v-else-if="row.type=='area'" all v-model="form[row.prop]"
:fullName.sync="form.birthplaceAreaName"> :fullName.sync="form.birthplaceAreaName">
<u-icon name="arrow-right" :label="form.birthplaceAreaName||'请选择'" label-pos="left" color="#ddd"/> <u-icon name="arrow-right" :label="form.birthplaceAreaName||'请选择'" label-pos="left" color="#ddd"/>
</AiAreaPicker> </AiAreaPicker>

View File

@@ -27,13 +27,14 @@
<div class="left"> <div class="left">
<span>*</span><span>家庭人口数</span> <span>*</span><span>家庭人口数</span>
</div> </div>
<input type="tel" class="right__text" v-model="form.householdNumber" placeholder="请输入" :clearable="false" maxlength="10"/> <!-- <u-input type="number" class="right__text" v-model="form.householdNumber" placeholder="请输入" :clearable="false" maxlength="10"/> -->
<input type="number" class="right__text" v-model="form.householdNumber" @change="householdNumberInput" placeholder="请输入" :clearable="false" maxlength="10"/>
</div> </div>
<div class="item"> <div class="item">
<div class="left"> <div class="left">
<span>*</span><span>所在地区</span> <span>*</span><span>所在地区</span>
</div> </div>
<AiAreaPicker v-model="form.areaId" :areaId="$areaId" class="right__text" :fullName.sync="form.areaName" selectRoot="false"> <AiAreaPicker v-model="form.areaId" :areaId="$areaId" class="right__text" :fullName.sync="form.areaName" :selectRoot="false">
<span :class="form.areaName == '' ? 'color-999' : 'color-333' ">{{ form.areaName || "请选择" }}</span> <span :class="form.areaName == '' ? 'color-999' : 'color-333' ">{{ form.areaName || "请选择" }}</span>
<u-icon name="arrow-right" color="#ddd" style="display: inline-block;"/> <u-icon name="arrow-right" color="#ddd" style="display: inline-block;"/>
</AiAreaPicker> </AiAreaPicker>
@@ -121,6 +122,10 @@ export default {
...mapState(['user']) ...mapState(['user'])
}, },
methods: { methods: {
householdNumberInput() {
this.form.householdNumber = this.form.householdNumber.replace(/[^\d]/g,'')
this.$forceUpdate()
},
helpCheck(e) { helpCheck(e) {
e.checked = !e.checked e.checked = !e.checked
this.checkList = this.list.filter(e=>e.checked) this.checkList = this.list.filter(e=>e.checked)

View File

@@ -2,7 +2,7 @@
<div class="progressDetail" v-if="pageShow"> <div class="progressDetail" v-if="pageShow">
<div class="status" v-if="info.approvalStatus === '1'"> <div class="status" v-if="info.approvalStatus === '1'">
<h2>审批通过</h2> <h2>审批通过</h2>
<div class="status-content"> <div class="status-content" v-if="info.tableType == 2">
<span>[{{ info.processDefName }}]已签署完成</span> <span>[{{ info.processDefName }}]已签署完成</span>
<i @click="$linkTo('./progressAnnex?img=' + info.pdfPicFile.url + '&name=' + info.processDefName)">点击查看和保存</i> <i @click="$linkTo('./progressAnnex?img=' + info.pdfPicFile.url + '&name=' + info.processDefName)">点击查看和保存</i>
</div> </div>