Files
dvcp_v2_wxcp_app/library/apps/AppHealthReport/Content.vue

483 lines
11 KiB
Vue
Raw Normal View History

2022-05-25 11:58:17 +08:00
<template>
<div class="album">
<div class="form-item__group">
<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 class="form-item">
<div class="form-item__wrapper">
<div class="form-item__title">
<i>*</i>
<h2>当前状态</h2>
</div>
<div class="form-item__right">
<AiSelect
dict="epidemicRecentTravel"
v-model="form.travelType"
class="select"
></AiSelect>
</div>
</div>
</div>
</div>
<div class="form-item__group">
<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: 180px"
v-model="form.description"
:maxlength="500"
placeholder="请输入备注说明"
placeholder-style="font-size: 16px"
></textarea>
</div>
</div>
</div>
</div>
<div class="footer">确认</div>
</div>
</template>
<script>
import {mapState} from "vuex";
export default {
data() {
return {
isShowType: false,
isShowEndTime: false,
isShowStartTime: false,
isShowDate: false,
params: {
year: true,
month: true,
day: true,
hour: true,
minute: true,
},
dataParams: {
year: true,
month: true,
day: true,
},
form: {
arriveAddress: "",
arriveAreaId: "",
arriveAreaName: "",
arriveTime: "",
checkPhoto: [],
checkResult: "",
checkTime: "",
description: "",
health: [],
idNumber: "",
name: "",
phone: "",
startAddress: "",
startAreaId: "",
startAreaName: "",
startTime: "",
temperature: "",
touchInFourteen: "",
travelType: "",
type: "",
unusual: "",
arriveGirdId: '',
arriveGirdName: '',
corpId: '',
},
dictList: [],
arr: [],
gridList: [[], [], []],
flag: false,
areaId: "",
};
},
computed: {
...mapState(["user"]),
},
onLoad(option) {
this.areaId = this.user.areaId;
document.title = '返乡登记'
if (option.corpId) {
this.form.corpId = option.corpId
}
this.form.arriveGirdId = option.arriveGirdId
this.form.arriveGirdName = decodeURIComponent(option.arriveGirdName)
},
methods: {
onDateChange(e) {
this.form.checkTime = `${e.year}-${e.month}-${e.day}`;
},
onStartChange(e) {
this.form.startTime = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}`;
},
onEndChange(e) {
this.form.arriveTime = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}`;
},
submit() {
if (!this.form.name) {
return this.$u.toast("请输入返乡人员姓名");
}
if (!this.form.idNumber) {
return this.$u.toast("请输入返乡人员身份证号");
}
if (
2023-04-25 14:06:40 +08:00
!/^[1-9]\d{5}(19\d{2}|20[0-2]\d)(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}([0-9xX])$/.test(this.form.idNumber)
2022-05-25 11:58:17 +08:00
) {
return this.$u.toast("请输入正确的身份证账号");
}
if (!this.form.phone) {
return this.$u.toast("请输入返乡人员手机号码");
}
if (!/^1[0-9]{10,10}$/.test(this.form.phone)) {
return this.$u.toast("请输入正确的手机号码");
}
if (!this.form.type) {
return this.$u.toast("请选择人员类别");
}
if (!this.form.travelType) {
return this.$u.toast("请选择出行方式");
}
if (!this.form.startTime) {
return this.$u.toast("请选择出发时间");
}
if (
new Date(this.form.startTime.replace(/-/g, "/")).getTime() >
new Date().getTime()
) {
return this.$u.toast("出发时间不得晚于当前时间");
}
if (!this.form.startAreaName) {
return this.$u.toast("请选择出发地区");
}
if (
this.form.startAreaId.substr(this.form.startAreaId.length - 3, 3) ===
"000"
) {
return this.$u.toast("出发地区必须选到村或社区");
}
if (!this.form.startAddress) {
return this.$u.toast("请输入出发详细地址");
}
if (!this.form.arriveTime) {
return this.$u.toast("请选择到达时间");
}
if (
new Date(this.form.startTime.replace(/-/g, "/")).getTime() >=
new Date(this.form.arriveTime.replace(/-/g, "/")).getTime()
) {
return this.$u.toast("到达时间不得早于出发时间");
}
if (!this.form.arriveAreaName) {
return this.$u.toast("请选择到达地区");
}
if (
this.form.arriveAreaId.substr(this.form.arriveAreaId.length - 3, 3) ===
"000"
) {
return this.$u.toast("到达地区必须选到村或社区");
}
if (!this.form.arriveAddress) {
return this.$u.toast("请输入返乡地址");
}
if (!this.form.description) {
return this.$u.toast("请输入行程描述");
}
if (!this.form.checkTime) {
return this.$u.toast("请选择核酸检测日期");
}
if (!this.form.checkPhoto.length) {
return this.$u.toast("请上传本人健康码截图或核酸检测报告");
}
if (!this.form.checkResult) {
return this.$u.toast("请选择核酸检测结果");
}
if (!this.form.temperature) {
return this.$u.toast("请输入当前体温");
}
if (!this.form.touchInFourteen) {
return this.$u.toast("请选择14天内是否接触新冠确诊或疑似患者");
}
if (!this.form.health.length) {
return this.$u.toast("请选择当前健康状况");
}
if (this.flag) return;
this.flag = true;
this.$loading();
this.$http
.post(`/app/appepidemicbackhomerecord/addOrUpdate`, {
...this.form,
startTime: this.form.startTime + ":00",
arriveTime: this.form.arriveTime + ":00",
checkTime: this.form.checkTime + " 00:00:00",
health: this.form.health.join(","),
checkPhoto: JSON.stringify(this.form.checkPhoto),
})
.then((res) => {
this.$hideLoading();
this.flag = false;
if (res.code == 0) {
uni.$emit("updateBackList");
setTimeout(() => {
uni.navigateTo({url: `./Success?status=1&corpId=${this.form.corpId}`})
}, 400);
}
}).catch((err) => {
console.log(err)
uni.$emit("updateBackList");
uni.navigateTo({url: `./Success?status=1&corpId=${this.form.corpId}`})
})
},
},
};
</script>
<style lang="scss">
.album {
padding-bottom: 140px;
.tips {
line-height: 1.3;
padding: 32px 32px;
color: #ff883c;
font-size: 30px;
text-align: justify;
background: #fff8f3;
}
.form-item__group {
margin-bottom: 24px;
background: #fff;
}
.form-item {
padding-left: 32px;
.form-item__checkbox {
width: 100%;
div {
width: 100%;
height: 80px;
line-height: 80px;
margin-bottom: 24px;
text-align: center;
background: #ffffff;
border-radius: 16px;
color: #333333;
font-size: 28px;
border: 1px solid #cccccc;
&.active {
background: #4181ff;
color: #fff;
border-color: #4181ff;
}
}
}
.form-item__radio {
display: flex;
align-items: center;
flex-wrap: wrap;
div {
width: 212px;
height: 80px;
line-height: 80px;
margin-right: 16px;
margin-bottom: 8px;
text-align: center;
background: #ffffff;
border-radius: 16px;
color: #333333;
font-size: 28px;
border: 1px solid #cccccc;
&:nth-of-type(3n) {
margin-right: 0;
}
&.active {
background: #4181ff;
color: #fff;
border-color: #4181ff;
}
}
}
.ai-area__wrapper {
display: flex;
align-items: center;
padding-left: 100px;
span {
color: #333;
font-size: 30px;
}
i {
color: #999;
font-size: 30px;
}
image {
width: 16px;
height: 8px;
}
}
.form-item__wrapper {
display: flex;
align-items: center;
justify-content: space-between;
height: 128px;
padding-right: 28px;
input {
flex: 1;
height: 100%;
text-align: right;
color: #333;
padding-right: 10px;
}
.form-item__right {
display: flex;
align-items: center;
font-size: 32px;
.select {
._i {
padding-left: 100px;
}
}
span {
max-width: 400px;
margin-right: 8px;
color: #333333;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
i {
margin-right: 8px;
color: #999999;
}
}
}
&:last-child {
.form-item__wrapper {
border-bottom: none;
}
}
.form-item__title {
display: flex;
align-items: center;
i {
font-size: 32px;
color: #ff4466;
}
span {
font-size: 28px;
color: #999999;
}
h2 {
padding: 0 4px;
font-weight: 600;
font-size: 32px;
color: #333333;
}
}
&.form-item__imgs,
&.form-item__textarea {
.form-item__wrapper {
display: block;
height: auto;
padding-bottom: 32px;
}
textarea {
width: 100%;
height: 90px;
}
.form-item__title {
padding: 32px 0;
}
.form-item__right {
padding-left: 18px;
}
}
}
.footer{
width: 100%;
height: 112px;
line-height: 112px;
box-shadow: inset 0px 1px 0px 0px #EEEEEE;
font-size: 32px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
text-align: center;
position: fixed;
bottom: 0;
left: 0;
background: #1365DD;
color: #FFF;
}
}
</style>