800 lines
23 KiB
Vue
800 lines
23 KiB
Vue
|
<template>
|
|||
|
<view style="background-color: white; height: 100vh">
|
|||
|
<u-navbar title="返校预约申请"></u-navbar>
|
|||
|
<!-- 内容 -->
|
|||
|
<scroll-view
|
|||
|
scroll-y="true"
|
|||
|
style="
|
|||
|
height: calc(100vh - 240rpx);
|
|||
|
width: 100%;
|
|||
|
border-top: 1px solid #edf2fa;
|
|||
|
background-color: #fff;
|
|||
|
box-sizing: border-box;
|
|||
|
"
|
|||
|
>
|
|||
|
<!-- 基础信息 -->
|
|||
|
<view class="base-box">
|
|||
|
<view class="item-line">
|
|||
|
<text class="line-label"> 预约人</text>
|
|||
|
<text class="line-value"> {{ baseMsg.name || "-" }} </text>
|
|||
|
</view>
|
|||
|
<view class="item-line">
|
|||
|
<text class="line-label"> 学院专业</text>
|
|||
|
<text class="line-value"> {{ baseMsg.college + "-" + baseMsg.major }} </text>
|
|||
|
</view>
|
|||
|
<view class="item-line">
|
|||
|
<text class="line-label"> 学历层次</text>
|
|||
|
<text class="line-value"> {{ baseMsg.educationStr || "-" }} </text>
|
|||
|
</view>
|
|||
|
<view class="item-line">
|
|||
|
<text class="line-label"> 毕业年份</text>
|
|||
|
<text class="line-value"> {{ baseMsg.endYear || "-" }} </text>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<!-- 表单 -->
|
|||
|
<view class="form-box">
|
|||
|
<!-- 返校日期 -->
|
|||
|
<view class="item-date" @click="dateShowFn">
|
|||
|
<text class="line-label must"> 返校日期</text>
|
|||
|
<u-input
|
|||
|
:custom-style="inputStyle"
|
|||
|
type="text"
|
|||
|
input-align="right"
|
|||
|
:border="false"
|
|||
|
v-model="formData.date"
|
|||
|
@click.native="dateShowFn"
|
|||
|
placeholder="请选择"
|
|||
|
disabled
|
|||
|
/>
|
|||
|
<view class="img">
|
|||
|
<image
|
|||
|
style="width:15rpx; height: 25rpx; margin-left: 20rpx"
|
|||
|
src="/static/common/img/row_right.png"
|
|||
|
/>
|
|||
|
</view>
|
|||
|
<!-- 点击盒子 -->
|
|||
|
<view class="input-mask"></view>
|
|||
|
</view>
|
|||
|
<!-- 提示 -->
|
|||
|
<view class="item-tip" v-if="weekSet.length">
|
|||
|
<text class="line-label"> 提示:每周{{ dateTip }}暂停开放返校服务</text>
|
|||
|
</view>
|
|||
|
<!-- 车牌号 -->
|
|||
|
<view class="item-line" style="border: none;">
|
|||
|
<text class="line-label"> 车牌号</text>
|
|||
|
<u-input
|
|||
|
:custom-style="inputStyle"
|
|||
|
type="text"
|
|||
|
input-align="right"
|
|||
|
:border="false"
|
|||
|
maxlength="10"
|
|||
|
v-model="formData.carNumber"
|
|||
|
placeholder="如果车辆入校请务必填写"
|
|||
|
/>
|
|||
|
</view>
|
|||
|
<!-- 联系电话 -->
|
|||
|
<view class="item-line" style="border: none;">
|
|||
|
<text class="line-label must"> 联系电话</text>
|
|||
|
<u-input
|
|||
|
:custom-style="inputStyle"
|
|||
|
type="number"
|
|||
|
input-align="right"
|
|||
|
:border="false"
|
|||
|
maxlength="20"
|
|||
|
v-model="formData.phone"
|
|||
|
placeholder="请输入"
|
|||
|
/>
|
|||
|
</view>
|
|||
|
<!-- 随行人信息 -->
|
|||
|
<view class="item-line">
|
|||
|
<text class="line-label"> 随行人信息</text>
|
|||
|
<text @click="addPersonFn" style="color: #3cb5fb"> 添加随行人 </text>
|
|||
|
</view>
|
|||
|
<!-- 动态随行人 -->
|
|||
|
<view class="item-box">
|
|||
|
<view class="item-for" v-for="(x, xIndex) in sxList" :key="xIndex">
|
|||
|
<!-- 左侧内容 -->
|
|||
|
<view class="for-left">
|
|||
|
<view class="each">
|
|||
|
<text class="must"> 随行人{{ xIndex + 1 }}</text>
|
|||
|
<u-input
|
|||
|
:custom-style="eachStyle"
|
|||
|
type="text"
|
|||
|
input-align="right"
|
|||
|
:border="false"
|
|||
|
maxlength="20"
|
|||
|
v-model="x.name"
|
|||
|
placeholder="请输入"
|
|||
|
/>
|
|||
|
</view>
|
|||
|
<view class="each">
|
|||
|
<text class="must"> 手机号</text>
|
|||
|
<u-input
|
|||
|
:custom-style="eachStyle"
|
|||
|
type="number"
|
|||
|
input-align="right"
|
|||
|
:border="false"
|
|||
|
maxlength="20"
|
|||
|
v-model="x.phone"
|
|||
|
placeholder="请输入"
|
|||
|
/>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<!-- 右侧删除 -->
|
|||
|
<view class="del">
|
|||
|
<!-- <u-icon
|
|||
|
@click="delFn(xIndex)"
|
|||
|
name="trash"
|
|||
|
color="#2799f6"
|
|||
|
size="45"
|
|||
|
></u-icon> -->
|
|||
|
<image style="width: 32rpx;height: 32rpx;" src="/static/common/img/delete.svg" @click="delFn(xIndex)"></image>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<!-- 返校事由 -->
|
|||
|
<view class="item-line">
|
|||
|
<text class="line-label must"> 返校事由</text>
|
|||
|
</view>
|
|||
|
<view class="item-text">
|
|||
|
<u-input
|
|||
|
type="textarea"
|
|||
|
height="200"
|
|||
|
:border="false"
|
|||
|
v-model="formData.retuenSchoolReason"
|
|||
|
placeholder="请输入"
|
|||
|
/>
|
|||
|
</view>
|
|||
|
<!-- 同意区域 -->
|
|||
|
<view class="item-agree">
|
|||
|
<view class="agree-left">
|
|||
|
<u-checkbox-group>
|
|||
|
<u-checkbox v-model="formData.checked"></u-checkbox>
|
|||
|
</u-checkbox-group>
|
|||
|
</view>
|
|||
|
<view class="agree-right">{{ desc }}</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view style="height: 50rpx"></view>
|
|||
|
</scroll-view>
|
|||
|
<!-- 按钮 -->
|
|||
|
<view class="btn-box">
|
|||
|
<u-button style="width: 80%" shape="circle" type="primary" @click="btnSubmitFn"
|
|||
|
>提交</u-button
|
|||
|
>
|
|||
|
</view>
|
|||
|
<u-top-tips ref="uTips" :navbar-height="50"></u-top-tips>
|
|||
|
<!-- 选择日期范围 -->
|
|||
|
<!-- date 单个日期范围 range 多个日期范围 min-date="" -->
|
|||
|
<u-calendarWeek
|
|||
|
max-year="2030"
|
|||
|
min-year="2020"
|
|||
|
max-date="2030"
|
|||
|
:min-date="minDate"
|
|||
|
:max-date="maxDate"
|
|||
|
v-model="dateShow"
|
|||
|
:filterWeek="weekSet"
|
|||
|
:filterDate="filterDate"
|
|||
|
mode="range"
|
|||
|
@change="dateChangeFn"
|
|||
|
></u-calendarWeek>
|
|||
|
<u-toast ref="uToast" />
|
|||
|
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
export default {
|
|||
|
data() {
|
|||
|
return {
|
|||
|
// 表单
|
|||
|
formData: {
|
|||
|
carNumber: "", // 车牌号
|
|||
|
phone: "", // 联系电话
|
|||
|
checked: false, //是否同意
|
|||
|
retuenSchoolReason: "", //返校事由
|
|||
|
date: "", //返校日期
|
|||
|
},
|
|||
|
// 日期的值
|
|||
|
dateList: [],
|
|||
|
// 随行人
|
|||
|
sxList: [
|
|||
|
{
|
|||
|
name: "",
|
|||
|
phone: "",
|
|||
|
},
|
|||
|
],
|
|||
|
// 选择日期
|
|||
|
dateShow: false,
|
|||
|
//
|
|||
|
inputStyle: {
|
|||
|
lineHeight: "90rpx",
|
|||
|
height: "90rpx",
|
|||
|
width: "400rpx",
|
|||
|
},
|
|||
|
eachStyle: {
|
|||
|
lineHeight: "80rpx",
|
|||
|
height: "80rpx",
|
|||
|
width: "400rpx",
|
|||
|
},
|
|||
|
desc:
|
|||
|
"本人承诺进校期间,遵守国家相关规律法规和校园管理相关规定,服从工作人员的指挥和管理",
|
|||
|
// 基础信息
|
|||
|
baseMsg: {
|
|||
|
id: "",
|
|||
|
name: "", //姓名
|
|||
|
schoolName: "",
|
|||
|
schoolLogo: "",
|
|||
|
startYear: "", //入学年份
|
|||
|
college: "", //学院
|
|||
|
educationStr: "", //学历层次
|
|||
|
major: "", //专业
|
|||
|
endYear: "", //毕业年份
|
|||
|
},
|
|||
|
// 星期设置
|
|||
|
weekSet: [],
|
|||
|
// 已预约的日期 这里需要两个格式 2025-2-19 2025/2/19
|
|||
|
filterDate:[],
|
|||
|
// 选择日期提示
|
|||
|
dateTip: "",
|
|||
|
// 最小日期
|
|||
|
minDate: "",
|
|||
|
// 最大日期
|
|||
|
maxDate: "",
|
|||
|
};
|
|||
|
},
|
|||
|
async onLoad(e) {
|
|||
|
await this.getSchoolFn();
|
|||
|
// 获取返校设置
|
|||
|
this.getSetFn();
|
|||
|
// 获取已预约的日期
|
|||
|
this.getFilterDate();
|
|||
|
},
|
|||
|
created() {},
|
|||
|
methods: {
|
|||
|
async getFilterDate(){
|
|||
|
const req = {
|
|||
|
// userId: this.vuex_user.id,
|
|||
|
educationId: this.baseMsg.id,
|
|||
|
}
|
|||
|
// return
|
|||
|
const res = await this.$u.apiList.GetDateTimeReturnApi(req);
|
|||
|
console.log(res,'res--获取已预约日期')
|
|||
|
// 截取一下
|
|||
|
const result = res.map(x=>x.retuenSchoolTime.slice(0,10))
|
|||
|
// 保存一份不去0的
|
|||
|
this.filterDateSource = [...result];
|
|||
|
// 去0 [2025-2-18]
|
|||
|
const arr1 = result.map(x=>x.replace(/(?<=-)0/g, ''))
|
|||
|
// 在生成一个 [2025/02/18]
|
|||
|
const arr2 = arr1.map(x=>x.replaceAll('-','/'))
|
|||
|
// 已预约的日期
|
|||
|
this.filterDate = [...arr1,...arr2];
|
|||
|
},
|
|||
|
arrayToString(arr) {
|
|||
|
let result = "";
|
|||
|
const map = new Map([
|
|||
|
[0, "周日"],
|
|||
|
[1, "周一"],
|
|||
|
[2, "周二"],
|
|||
|
[3, "周三"],
|
|||
|
[4, "周四"],
|
|||
|
[5, "周五"],
|
|||
|
[6, "周六"],
|
|||
|
]);
|
|||
|
arr.forEach((x) => {
|
|||
|
if (map.has(x)) {
|
|||
|
result += map.get(x) + "、";
|
|||
|
}
|
|||
|
});
|
|||
|
return arr.length ? result.slice(0, result.length - 1) : result;
|
|||
|
},
|
|||
|
//获取返校设置
|
|||
|
async getSetFn() {
|
|||
|
const req = {
|
|||
|
schoolId: this.baseMsg.schoolId,
|
|||
|
}
|
|||
|
const res = await this.$u.apiList.SelectInfoSetApi(req);
|
|||
|
console.log(res, "res--");
|
|||
|
let AllArr = [0, 1, 2, 3, 4, 5, 6];
|
|||
|
// 星期设置
|
|||
|
if (res.isDayOfWeek) {
|
|||
|
let result = res.dayOfWeek.split(",").map((x) => Number(x));
|
|||
|
this.weekSet = AllArr.filter((x) => {
|
|||
|
return !result.includes(x);
|
|||
|
});
|
|||
|
// 处理tip提示
|
|||
|
this.dateTip = this.arrayToString(this.weekSet);
|
|||
|
}
|
|||
|
// 限制选择日期
|
|||
|
// 在用户需要提前几天申请预约
|
|||
|
if (res.isBefore) {
|
|||
|
const date = new Date();
|
|||
|
date.setDate(date.getDate() + res.beforeDay);
|
|||
|
const year = date.getFullYear();
|
|||
|
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|||
|
const day = String(date.getDate()).padStart(2, "0");
|
|||
|
this.minDate = `${year}-${month}-${day}`;
|
|||
|
} else {
|
|||
|
// 默认最小日期是今天
|
|||
|
const date = new Date();
|
|||
|
date.setDate(date.getDate());
|
|||
|
const year = date.getFullYear();
|
|||
|
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|||
|
const day = String(date.getDate()).padStart(2, "0");
|
|||
|
this.minDate = `${year}-${month}-${day}`;
|
|||
|
}
|
|||
|
// 用户最大可选日期 默认180天
|
|||
|
const dateRes = new Date();
|
|||
|
// 在用户需要提前几天申请预约
|
|||
|
let maxDay = res.isDayOfWeek ? res.returnSchoolDays : 180
|
|||
|
dateRes.setDate(dateRes.getDate() + maxDay);
|
|||
|
const year1 = dateRes.getFullYear();
|
|||
|
const month1 = String(dateRes.getMonth() + 1).padStart(2, "0");
|
|||
|
const day1 = String(dateRes.getDate()).padStart(2, "0");
|
|||
|
this.maxDate = `${year1}-${month1}-${day1}`;
|
|||
|
},
|
|||
|
async getSchoolFn() {
|
|||
|
const req = {
|
|||
|
userId: this.vuex_user.id,
|
|||
|
};
|
|||
|
const res = await this.$u.apiList.MyEducations(req);
|
|||
|
console.log(res, "res--");
|
|||
|
const findRow = res.find((x) => x.isSelected === true);
|
|||
|
if (!findRow) {
|
|||
|
/* uni.showToast({
|
|||
|
title: "未查询到当前教育经历",
|
|||
|
icon: "none",
|
|||
|
}); */
|
|||
|
this.$refs.uToast.show({
|
|||
|
title: "未查询到当前教育经历",
|
|||
|
type: "error",
|
|||
|
});
|
|||
|
|
|||
|
return;
|
|||
|
}
|
|||
|
Object.assign(this.baseMsg, findRow);
|
|||
|
this.baseMsg.name = this.vuex_user.name;
|
|||
|
},
|
|||
|
// 添加随行人
|
|||
|
addPersonFn() {
|
|||
|
this.sxList.push({
|
|||
|
name: "",
|
|||
|
phone: "",
|
|||
|
});
|
|||
|
},
|
|||
|
// 删除随行人
|
|||
|
delFn(index) {
|
|||
|
uni.showModal({
|
|||
|
// title: "提示",
|
|||
|
content: `确定删除随行人${index + 1}?`,
|
|||
|
success: (res) => {
|
|||
|
if (res.confirm) {
|
|||
|
this.sxList.splice(index, 1);
|
|||
|
}
|
|||
|
if (res.cancel) {
|
|||
|
// console.log('用户点击取消');
|
|||
|
}
|
|||
|
},
|
|||
|
});
|
|||
|
},
|
|||
|
// 选择日期
|
|||
|
dateShowFn() {
|
|||
|
this.dateShow = true;
|
|||
|
},
|
|||
|
// 日期change
|
|||
|
dateChangeFn(e) {
|
|||
|
console.log(e, "e--");
|
|||
|
this.currentList = this.getDatesArray(e.startDate, e.endDate);
|
|||
|
console.log(JSON.parse(JSON.stringify(this.currentList)),'this.currentList--1');
|
|||
|
// 判断是否包含不可选中日期
|
|||
|
let flag = this.currentList.some(function(x){
|
|||
|
// 包含禁用的日期
|
|||
|
if (this.disArr.includes(new Date(x).getDay())) {
|
|||
|
return true;
|
|||
|
}
|
|||
|
// 包含已预约的日期
|
|||
|
if(this.selectArr.includes(x)){
|
|||
|
return true;
|
|||
|
}
|
|||
|
return false;
|
|||
|
},{
|
|||
|
disArr:this.weekSet, // 禁用的星期
|
|||
|
selectArr:this.filterDateSource // 已预约的日期
|
|||
|
})
|
|||
|
// 过滤一下禁用的星期
|
|||
|
// this.currentList = this.currentList.filter((x) => {
|
|||
|
// // 当天的星期
|
|||
|
// const dateWeek = new Date(x).getDay();
|
|||
|
// // 包含禁用的星期过滤掉
|
|||
|
// if (this.weekSet.includes(dateWeek)) {
|
|||
|
// return false;
|
|||
|
// }
|
|||
|
// return true;
|
|||
|
// });
|
|||
|
// 过滤掉已预约的日期
|
|||
|
// this.currentList = this.currentList.filter((x) => {
|
|||
|
// if(this.filterDateSource.includes(x)){
|
|||
|
// return false;
|
|||
|
// }else{
|
|||
|
// return true;
|
|||
|
// }
|
|||
|
// });
|
|||
|
if(flag){
|
|||
|
/* uni.showToast({
|
|||
|
icon:'none',
|
|||
|
title: `当前返校时间包含不可预约的日期,请重新选择!`,
|
|||
|
duration: 2000,
|
|||
|
}); */
|
|||
|
this.$refs.uToast.show({
|
|||
|
title: `当前返校时间包含不可预约的日期,请重新选择!`,
|
|||
|
type: "error",
|
|||
|
});
|
|||
|
this.dateShow = true;
|
|||
|
return
|
|||
|
}
|
|||
|
// 显示的值
|
|||
|
this.formData.date = e.startDate + " ~ " + e.endDate;
|
|||
|
console.log(JSON.parse(JSON.stringify(this.currentList)),'this.currentList--2');
|
|||
|
// 处理成后端要的格式
|
|||
|
this.dateList = this.currentList.map((x) => {
|
|||
|
return {
|
|||
|
time: x,
|
|||
|
};
|
|||
|
});
|
|||
|
console.log(JSON.parse(JSON.stringify(this.dateList)),'this.dateList');
|
|||
|
},
|
|||
|
// 校验表单信息
|
|||
|
validate() {
|
|||
|
// 校验手机号的正则表达式
|
|||
|
const phoneReg = /^[1][3-9][0-9]{9}$/;
|
|||
|
return new Promise((resolve, reject) => {
|
|||
|
// 校验返校日期
|
|||
|
if (!this.formData.date) {
|
|||
|
// this.$tips("返校日期不能为空", "error");
|
|||
|
this.$refs.uToast.show({
|
|||
|
title: "返校日期不能为空",
|
|||
|
type: "error",
|
|||
|
});
|
|||
|
return reject(false);
|
|||
|
}
|
|||
|
// 校验联系电话
|
|||
|
if (!this.formData.phone) {
|
|||
|
// this.$tips("联系电话不能为空", "error");
|
|||
|
this.$refs.uToast.show({
|
|||
|
title: "联系电话不能为空",
|
|||
|
type: "error",
|
|||
|
});
|
|||
|
return reject(false);
|
|||
|
}
|
|||
|
if (!phoneReg.test(this.formData.phone)) {
|
|||
|
// this.$tips("联系电话格式不正确,请输入有效的手机号", "error");
|
|||
|
this.$refs.uToast.show({
|
|||
|
title: "联系电话格式不正确,请输入有效的手机号",
|
|||
|
type: "error",
|
|||
|
});
|
|||
|
|
|||
|
return reject(false);
|
|||
|
}
|
|||
|
// 校验随行人信息
|
|||
|
if (this.sxList.length) {
|
|||
|
for (let i = 0; i < this.sxList.length; i++) {
|
|||
|
const item = this.sxList[i];
|
|||
|
// 校验随行人名称
|
|||
|
if (!item.name) {
|
|||
|
// this.$tips(`随行人${i + 1}的名称不能为空`, "error");
|
|||
|
this.$refs.uToast.show({
|
|||
|
title: `随行人${i + 1}的名称不能为空`,
|
|||
|
type: "error",
|
|||
|
});
|
|||
|
return reject(false);
|
|||
|
}
|
|||
|
// 校验随行人手机号
|
|||
|
if (!item.phone) {
|
|||
|
// this.$tips(`随行人${i + 1}的手机号不能为空`, "error");
|
|||
|
this.$refs.uToast.show({
|
|||
|
title: `随行人${i + 1}的手机号不能为空`,
|
|||
|
type: "error",
|
|||
|
});
|
|||
|
return reject(false);
|
|||
|
}
|
|||
|
if (!phoneReg.test(item.phone)) {
|
|||
|
// this.$tips(`随行人${i + 1}的手机号格式不正确,请输入有效的手机号`, "error");
|
|||
|
this.$refs.uToast.show({
|
|||
|
title: `随行人${i + 1}的手机号格式不正确,请输入有效的手机号`,
|
|||
|
type: "error",
|
|||
|
});
|
|||
|
return reject(false);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
// 校验返校事由
|
|||
|
if (!this.formData.retuenSchoolReason) {
|
|||
|
// this.$tips("返校事由不能为空", "error");
|
|||
|
this.$refs.uToast.show({
|
|||
|
title: "返校事由不能为空",
|
|||
|
type: "error",
|
|||
|
});
|
|||
|
return reject(false);
|
|||
|
}
|
|||
|
resolve(true);
|
|||
|
});
|
|||
|
},
|
|||
|
// 日期转换数组
|
|||
|
getDatesArray(startDate, endDate) {
|
|||
|
// 将输入的字符串转换为 Date 对象
|
|||
|
const start = new Date(startDate);
|
|||
|
const end = new Date(endDate);
|
|||
|
|
|||
|
// 创建一个用于存储结果的数组
|
|||
|
let datesArray = [];
|
|||
|
|
|||
|
// 复制开始日期,以免修改原始对象
|
|||
|
let currentDate = new Date(start);
|
|||
|
|
|||
|
// 使用循环从开始日期遍历到结束日期
|
|||
|
while (currentDate <= end) {
|
|||
|
// 将当前日期添加到数组中
|
|||
|
// 使用 toISOString 方法去掉 T 后面的时间部分并去掉最后的 Z 和小数秒
|
|||
|
datesArray.push(new Date(currentDate).toISOString().split("T")[0]);
|
|||
|
|
|||
|
// 增加一天
|
|||
|
currentDate.setDate(currentDate.getDate() + 1);
|
|||
|
}
|
|||
|
|
|||
|
return datesArray;
|
|||
|
},
|
|||
|
// 我要预约
|
|||
|
async btnSubmitFn() {
|
|||
|
const result = await this.validate().catch((e) => e);
|
|||
|
console.log(result, "result");
|
|||
|
if (!result) {
|
|||
|
return;
|
|||
|
}
|
|||
|
// 校验是否勾选了同意
|
|||
|
if (!this.formData.checked) {
|
|||
|
return uni.showModal({
|
|||
|
// title: "提示",
|
|||
|
content: this.desc,
|
|||
|
success: (res) => {
|
|||
|
if (res.confirm) {
|
|||
|
// 默认帮用户勾选上 提交
|
|||
|
this.formData.checked = true;
|
|||
|
this.submit();
|
|||
|
}
|
|||
|
if (res.cancel) {
|
|||
|
// console.log('用户点击取消');
|
|||
|
}
|
|||
|
},
|
|||
|
});
|
|||
|
}
|
|||
|
this.submit();
|
|||
|
},
|
|||
|
// 提交的函数
|
|||
|
async submit() {
|
|||
|
// this.$tips("开发中", "success");
|
|||
|
const req = {
|
|||
|
userId: this.vuex_user.id,
|
|||
|
educationId: this.baseMsg.id,
|
|||
|
carNumber: this.formData.carNumber, //车牌号
|
|||
|
phone: String(this.formData.phone), //联系电话
|
|||
|
retuenSchoolReason: this.formData.retuenSchoolReason, //返校事由
|
|||
|
// 随行人
|
|||
|
TogetherPersonDtoList: this.sxList.map((x, xIndex) => {
|
|||
|
x.index = xIndex;
|
|||
|
x.phone = String(x.phone);
|
|||
|
return x;
|
|||
|
}),
|
|||
|
// 日期
|
|||
|
TimeList: this.dateList,
|
|||
|
};
|
|||
|
const res = await this.$u.apiList.AddReturnSchoolApi(req).catch(e=>e);
|
|||
|
console.log(res, "res---");
|
|||
|
if (res?.succeed === false) {
|
|||
|
/* uni.showToast({
|
|||
|
icon:'none',
|
|||
|
title: res.error || "提交失败",
|
|||
|
duration: 2000,
|
|||
|
}); */
|
|||
|
this.$refs.uToast.show({
|
|||
|
title: res.error || "提交失败",
|
|||
|
type: "error",
|
|||
|
});
|
|||
|
return;
|
|||
|
}
|
|||
|
/* uni.showToast({
|
|||
|
title: "提交成功",
|
|||
|
duration: 2000,
|
|||
|
}); */
|
|||
|
this.$refs.uToast.show({
|
|||
|
title: "提交成功",
|
|||
|
type: "success",
|
|||
|
});
|
|||
|
setTimeout(() => {
|
|||
|
// 返回上一页
|
|||
|
/* this.$u.route({
|
|||
|
url: "pages/my/BackSchool/BackSchool",
|
|||
|
}); */
|
|||
|
uni.navigateBack({
|
|||
|
delta: 1
|
|||
|
});
|
|||
|
}, 1000);
|
|||
|
},
|
|||
|
},
|
|||
|
};
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss" scoped>
|
|||
|
// 必填的样式
|
|||
|
.must {
|
|||
|
position: relative;
|
|||
|
&::before {
|
|||
|
content: "*";
|
|||
|
color: red;
|
|||
|
position: absolute;
|
|||
|
top: -10rpx;
|
|||
|
right: -17rpx;
|
|||
|
transform: scale(0.8);
|
|||
|
/* 相对于父元素的左上角定位 */
|
|||
|
}
|
|||
|
}
|
|||
|
.body-box {
|
|||
|
max-height: calc(100vh - 250rpx);
|
|||
|
overflow-y: auto;
|
|||
|
border: 1px solid red;
|
|||
|
}
|
|||
|
// 基础信息
|
|||
|
.base-box {
|
|||
|
background-color: white;
|
|||
|
// 单行样式
|
|||
|
.item-line {
|
|||
|
text-align: left;
|
|||
|
padding-left: 30rpx;
|
|||
|
padding-right: 30rpx;
|
|||
|
font-size: 30rpx;
|
|||
|
line-height: 90rpx;
|
|||
|
height: 90rpx;
|
|||
|
display: flex;
|
|||
|
justify-content: space-between;
|
|||
|
border-bottom: 1px solid #f1f2f6;
|
|||
|
.line-label {
|
|||
|
// font-size: 30rpx;
|
|||
|
color: black;
|
|||
|
}
|
|||
|
.line-value {
|
|||
|
// font-weight: 700;
|
|||
|
color: #969696;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
// 表单
|
|||
|
.form-box {
|
|||
|
margin-top: 20rpx;
|
|||
|
background-color: white;
|
|||
|
// 返校日期
|
|||
|
.item-date {
|
|||
|
padding-left: 30rpx;
|
|||
|
padding-right: 30rpx;
|
|||
|
font-size: 30rpx;
|
|||
|
line-height: 90rpx;
|
|||
|
height: 90rpx;
|
|||
|
display: flex;
|
|||
|
position: relative;
|
|||
|
.input-mask {
|
|||
|
position: absolute;
|
|||
|
width: 100%;
|
|||
|
height: 90rpx;
|
|||
|
// background-color: red;
|
|||
|
}
|
|||
|
.img {
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
justify-content: center;
|
|||
|
width: 30rpx;
|
|||
|
// padding-right: 30rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
// 单行样式
|
|||
|
.item-line {
|
|||
|
text-align: left;
|
|||
|
padding-left: 30rpx;
|
|||
|
padding-right: 30rpx;
|
|||
|
font-size: 30rpx;
|
|||
|
line-height: 90rpx;
|
|||
|
height: 90rpx;
|
|||
|
display: flex;
|
|||
|
justify-content: space-between;
|
|||
|
border-bottom: 1px solid #f1f2f6;
|
|||
|
.line-label {
|
|||
|
// font-size: 30rpx;
|
|||
|
color: black;
|
|||
|
}
|
|||
|
}
|
|||
|
// 提示
|
|||
|
.item-tip {
|
|||
|
text-align: left;
|
|||
|
padding-left: 30rpx;
|
|||
|
padding-right: 30rpx;
|
|||
|
padding-bottom: 10rpx;
|
|||
|
font-size: 22rpx;
|
|||
|
// line-height: 90rpx;
|
|||
|
// height: 90rpx;
|
|||
|
display: flex;
|
|||
|
justify-content: space-between;
|
|||
|
border-bottom: 1px solid #f1f2f6;
|
|||
|
.line-label {
|
|||
|
// font-size: 30rpx;
|
|||
|
color: red;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 随行人样式
|
|||
|
|
|||
|
.item-for {
|
|||
|
background-color: #f7f6f9;
|
|||
|
padding-left: 30rpx;
|
|||
|
display: flex;
|
|||
|
width: 100%;
|
|||
|
border-bottom: 1px solid #e1e1e1 ;
|
|||
|
|
|||
|
.for-left {
|
|||
|
// border: 1px solid blue;
|
|||
|
width: calc(100% - 50rpx);
|
|||
|
.each {
|
|||
|
flex: 1;
|
|||
|
display: flex;
|
|||
|
justify-content: space-between;
|
|||
|
line-height: 80rpx;
|
|||
|
height: 80rpx;
|
|||
|
padding-right: 30rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
.del {
|
|||
|
// border: 1px solid red;
|
|||
|
width: 40rpx;
|
|||
|
display: flex;
|
|||
|
justify-content: center;
|
|||
|
align-items: center;
|
|||
|
}
|
|||
|
&:last-of-type{
|
|||
|
border-bottom: none;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 文本框
|
|||
|
.item-text {
|
|||
|
padding-left: 30rpx;
|
|||
|
padding-right: 30rpx;
|
|||
|
}
|
|||
|
// 同意样式
|
|||
|
.item-agree {
|
|||
|
padding-left: 30rpx;
|
|||
|
padding-right: 30rpx;
|
|||
|
display: flex;
|
|||
|
padding-bottom: 20rpx;
|
|||
|
padding-top: 20rpx;
|
|||
|
border-top: 1px solid #f1f2f6;
|
|||
|
// margin-bottom: 50rpx;
|
|||
|
// flex-wrap: wrap;
|
|||
|
.agree-left {
|
|||
|
width: 50rpx;
|
|||
|
}
|
|||
|
.agree-right {
|
|||
|
color: black;
|
|||
|
flex: 1;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
// 按钮
|
|||
|
.btn-box {
|
|||
|
position: fixed;
|
|||
|
width: 100%;
|
|||
|
bottom: 0;
|
|||
|
height: 150rpx;
|
|||
|
border-top: 1px solid #f1f2f6;
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
justify-content: center;
|
|||
|
}
|
|||
|
</style>
|