页面调整

This commit is contained in:
liyuanchao 2025-08-21 16:07:15 +08:00
parent abf7f3c799
commit d93d37ee6c

View File

@ -13,7 +13,14 @@
</view> </view>
<view class="form-item"> <view class="form-item">
<text class="label required">所属公司</text> <text class="label required">证件号</text>
<view class="input-wrapper">
<input type="text" placeholder="请输入您的证件号" v-model="formData.idCard" />
</view>
</view>
<view class="form-item">
<text class="label">所属公司</text>
<view class="input-wrapper"> <view class="input-wrapper">
<input type="text" placeholder="请输入您的公司名称" v-model="formData.visitorUnit" /> <input type="text" placeholder="请输入您的公司名称" v-model="formData.visitorUnit" />
</view> </view>
@ -28,15 +35,28 @@
<view class="form-item"> <view class="form-item">
<text class="label required">拜访事由</text> <text class="label required">拜访事由</text>
<view class="input-wrapper"> <!-- <view class="input-wrapper">
<input type="text" placeholder="请简要描述拜访目的" v-model="formData.visitingReason" /> <input type="text" placeholder="请简要描述拜访目的" v-model="formData.visitingReason" />
</view> -->
<view class="select-wrapper" :class="{active: showTypeDialog}" @click.stop="showTypeDialog = true">
<text>{{ formData.visitingReason || '请选择拜访事由' }}</text>
<image class="filter-img" src="/static/ic_down_arrow_g.png" />
<view v-if="showTypeDialog" class="dropdown">
<view class="dropdown-list">
<view v-for="(item, index) in typeList" :key="index" class="dropdown-item"
@click.stop="selectVisitingReason(item)">
{{ item }}
</view>
</view>
</view>
</view> </view>
</view> </view>
<!-- 被访人信息 --> <!-- 被访人信息 -->
<view class="section-title">被访人信息</view> <view class="section-title">被访人信息</view>
<view class="form-item"> <view class="form-item">
<text class="label required">被访人姓名</text> <text class="label">被访人姓名</text>
<view class="input-wrapper"> <view class="input-wrapper">
<input type="text" placeholder="请输入被访人姓名" v-model="formData.interviewedPerson" /> <input type="text" placeholder="请输入被访人姓名" v-model="formData.interviewedPerson" />
</view> </view>
@ -63,12 +83,12 @@
<view class="picker-wrapper"> <view class="picker-wrapper">
<picker mode="date" :value="formData.visitingBeginDate" start="2020-01-01" end="2030-12-31" <picker mode="date" :value="formData.visitingBeginDate" start="2020-01-01" end="2030-12-31"
@change="onBeginDateChange"> @change="onBeginDateChange">
<view class="picker-value">{{formData.visitingBeginDate}}</view> <view class="picker-value">{{ formData.visitingBeginDate }}</view>
</picker> </picker>
</view> </view>
<view class="picker-wrapper time-picker"> <view class="picker-wrapper time-picker">
<picker mode="time" :value="formData.visitingBeginTime" @change="onBeginTimeChange"> <picker mode="time" :value="formData.visitingBeginTime" @change="onBeginTimeChange">
<view class="picker-value">{{formData.visitingBeginTime}}</view> <view class="picker-value">{{ formData.visitingBeginTime }}</view>
</picker> </picker>
</view> </view>
</view> </view>
@ -78,34 +98,34 @@
<view class="picker-wrapper"> <view class="picker-wrapper">
<picker mode="date" :value="formData.visitingEndDate" start="2020-01-01" end="2030-12-31" <picker mode="date" :value="formData.visitingEndDate" start="2020-01-01" end="2030-12-31"
@change="onEndDateChange"> @change="onEndDateChange">
<view class="picker-value">{{formData.visitingEndDate}}</view> <view class="picker-value">{{ formData.visitingEndDate }}</view>
</picker> </picker>
</view> </view>
<view class="picker-wrapper time-picker"> <view class="picker-wrapper time-picker">
<picker mode="time" :value="formData.visitingEndTime" @change="onEndTimeChange"> <picker mode="time" :value="formData.visitingEndTime" @change="onEndTimeChange">
<view class="picker-value">{{formData.visitingEndTime}}</view> <view class="picker-value">{{ formData.visitingEndTime }}</view>
</picker> </picker>
</view> </view>
</view> </view>
<!-- 预约信息 --> <!-- 预约信息 -->
<view class="section-title">预约信息</view> <!-- <view class="section-title">预约信息</view>
<view class="form-item"> <view class="form-item">
<text class="label">预约车位</text> <text class="label">预约车位</text>
<view class="picker-wrapper"> <view class="picker-wrapper">
<picker mode="selector" :range="parkingOptions" @change="handleParkingChange"> <picker mode="selector" :range="parkingOptions" @change="handleParkingChange">
<view class="picker-value">{{formData.bookingParkingSpace ? '需要' : '不需要'}}</view> <view class="picker-value">{{formData.bookingParkingSpace ? '需要' : '不需要'}}</view>
</picker> </picker>
</view> </view>
</view> </view> -->
<!-- 条件显示预约车位时显示车牌号 --> <!-- 条件显示预约车位时显示车牌号 -->
<view class="form-item" v-if="formData.bookingParkingSpace"> <!-- <view class="form-item" v-if="formData.bookingParkingSpace">
<text class="label required">车牌号</text> <text class="label required">车牌号</text>
<view class="input-wrapper"> <view class="input-wrapper">
<input type="text" placeholder="请输入车牌号" v-model="formData.licensePlate" /> <input type="text" placeholder="请输入车牌号" v-model="formData.licensePlate" />
</view> </view>
</view> </view> -->
<view class="form-item"> <view class="form-item">
<text class="label required">人脸照片</text> <text class="label required">人脸照片</text>
@ -119,14 +139,14 @@
</view> </view>
</view> </view>
<!-- <view class="form-item"> <!-- <view class="form-item">
<text class="label">预约状态</text> <text class="label">预约状态</text>
<view class="picker-wrapper"> <view class="picker-wrapper">
<picker mode="selector" :range="statusOptions" @change="handleStatusChange"> <picker mode="selector" :range="statusOptions" @change="handleStatusChange">
<view class="picker-value">{{statusMap[formData.serveStatus]}}</view> <view class="picker-value">{{statusMap[formData.serveStatus]}}</view>
</picker> </picker>
</view> </view>
</view> --> </view> -->
<!-- 提交按钮 --> <!-- 提交按钮 -->
<view class="submit-wrapper"> <view class="submit-wrapper">
@ -150,8 +170,9 @@
formData: { formData: {
visitorName: '1', visitorName: '1',
visitorUnit: '1', visitorUnit: '1',
idCard: '',
visitorPhone: '15555555555', visitorPhone: '15555555555',
visitingReason: '1', visitingReason: '',
interviewedPerson: '1', interviewedPerson: '1',
interviewedUnit: '1', interviewedUnit: '1',
interviewedPhone: '15555555555', interviewedPhone: '15555555555',
@ -171,11 +192,13 @@
1: '已确认', 1: '已确认',
2: '已取消', 2: '已取消',
3: '已完成' 3: '已完成'
} },
typeList: ['业务洽谈', '会议参与', '面试应聘', '技术支持', '办事咨询', '调研考察'],
showTypeDialog: false
} }
}, },
onLoad() { onLoad() {
// #ifdef APP-PLUS // #ifdef APP-PLUS
plus.screen.lockOrientation('default'); plus.screen.lockOrientation('default');
// #endif // #endif
}, },
@ -185,6 +208,17 @@
// #endif // #endif
}, },
methods: { methods: {
// 访
selectVisitingReason(reason) {
this.formData.visitingReason = reason;
this.showTypeDialog = false;
},
//
handleClickOutside() {
this.showTypeDialog = false;
},
// //
onBeginDateChange(e) { onBeginDateChange(e) {
this.formData.visitingBeginDate = e.detail.value; this.formData.visitingBeginDate = e.detail.value;
@ -200,12 +234,12 @@
}, },
// //
handleParkingChange(e) { // handleParkingChange(e) {
this.formData.bookingParkingSpace = e.detail.value === 1; // this.formData.bookingParkingSpace = e.detail.value === 1;
if (!this.formData.bookingParkingSpace) { // if (!this.formData.bookingParkingSpace) {
this.formData.licensePlate = ''; // this.formData.licensePlate = '';
} // }
}, // },
// //
handleStatusChange(e) { handleStatusChange(e) {
@ -233,8 +267,10 @@
// //
validateForm() { validateForm() {
const { const {
qrCodeId,
visitorName, visitorName,
visitorUnit, visitorUnit,
idCard,
visitorPhone, visitorPhone,
visitingReason, visitingReason,
interviewedPerson, interviewedPerson,
@ -253,8 +289,8 @@
} }
// //
if (!visitorUnit) { if (!idCard) {
return '请输入所属公司'; return '请输入证件号';
} }
// //
@ -273,14 +309,14 @@
} }
// 访 // 访
if (!interviewedPerson) { // if (!interviewedPerson) {
return '请输入被访人姓名'; // return '访';
} // }
// //
if (bookingParkingSpace && !licensePlate) { // if (bookingParkingSpace && !licensePlate) {
return '请输入车牌号'; // return '';
} // }
if (!facePictures) { if (!facePictures) {
@ -313,12 +349,7 @@
this.formData.visitingBeginTime = `${this.formData.visitingBeginDate} ${this.formData.visitingBeginTime}`; this.formData.visitingBeginTime = `${this.formData.visitingBeginDate} ${this.formData.visitingBeginTime}`;
this.formData.visitingEndTime = `${this.formData.visitingEndDate} ${this.formData.visitingEndTime}`; this.formData.visitingEndTime = `${this.formData.visitingEndDate} ${this.formData.visitingEndTime}`;
//
const submitData = {
...this.formData,
bookingParkingSpace: this.formData.bookingParkingSpace ? 0 : 1
};
console.log(submitData)
// //
uni.showLoading({ uni.showLoading({
@ -328,9 +359,10 @@
// API // API
setTimeout(() => { setTimeout(() => {
uni.request({
this.$u.post(this.formData.facePictures) url: this.formData.facePictures
.then(response => response.blob()) })
// .then(response => response.blob())
.then(blob => { .then(blob => {
// Blob // Blob
console.log(blob); console.log(blob);
@ -342,39 +374,87 @@
formData.append('file', file); formData.append('file', file);
console.log(formData) console.log(formData)
// //
this.$u.api.uploadimg() // this.$u.api.uploadimg()
// Blob // Blob
this.$u.api.uploadimg(formData).then(res => { uni.uploadFile({
console.log(res) url: 'http://183.230.235.66:11010/api/resource/oss/qrupload', //
if (res.code == 200) { filePath: file.filePath, //
uni.showToast({ name: 'file', //
title: "提交成功,请等待审核!", // FormData
icon: "success" formData: {
'code': this.formData.qrCodeId //
},
// //
// onProgressUpdate: (res) => {
// this.progress = res.progress;
// console.log(':' + res.progress);
// },
//
success: (res) => {
console.log('上传成功', res);
// this.formData.facePictures = res.data.ossId;
//
const submitData = {
...this.formData,
bookingParkingSpace: this.formData
.bookingParkingSpace ? 0 : 1
};
const parsedData = JSON.parse(res.data);
// ossId
const ossId = parsedData.data.ossId;
console.log("ossId", ossId)
submitData.facePictures = ossId;
console.log(submitData)
this.$u.api.fksub(submitData).then(res => {
console.log(res)
if (res.code == 200) {
uni.showToast({
title: "提交成功,请等待审核!",
icon: "success"
})
}
}) })
} else {
// uni.showToast({
// title: '',
// icon: 'success'
// });
},
//
fail: (err) => {
console.error('上传失败', err);
uni.showToast({ uni.showToast({
title: "提交失败!", title: '上传失败',
icon: "error" icon: 'none'
}) });
},
//
complete: () => {
this.progress = 0; //
} }
}) });
// this.$u.api.uploadimg(formData).then(res => {
// console.log(res)
// if (res.code == 200) {
// uni.showToast({
// title: "",
// icon: "success"
// })
// } else {
// uni.showToast({
// title: "tp",
// icon: "error"
// })
// }
// })
}); });
this.$u.api.fksub(submitData).then(res => {
console.log(res)
if (res.code == 200) {
uni.showToast({
title: "提交成功,请等待审核!",
icon: "success"
})
} else {
uni.showToast({
title: "提交失败!",
icon: "error"
})
}
})
uni.hideLoading(); uni.hideLoading();
// //
@ -393,8 +473,8 @@
}, 2000); }, 2000);
}, 1500); }, 1500);
}, },
delimg(){ delimg() {
this.formData.facePictures= '' this.formData.facePictures = ''
}, },
// //
@ -487,6 +567,36 @@
padding: 0 12px; padding: 0 12px;
display: flex; display: flex;
align-items: center; align-items: center;
position: relative;
}
.select-wrapper {
flex: 1;
height: 40px;
border: 1px solid #e5e6eb;
border-radius: 6px;
padding: 0 12px;
display: flex;
align-items: center;
position: relative;
cursor: pointer;
}
.select-wrapper text {
flex: 1;
font-size: 14px;
color: #333;
}
.filter-img {
width: 18rpx;
height: 10rpx;
margin-left: 8rpx;
transition: transform 0.3s;
}
.select-wrapper.active .filter-img {
transform: rotate(180deg);
} }
.input-wrapper input { .input-wrapper input {
@ -496,6 +606,17 @@
color: #333; color: #333;
} }
.input-wrapper .filter-img {
position: absolute;
right: 12px;
top: 50%;
transform: translateY(-50%);
width: 18px;
/* Adjust based on your image size */
height: 10px;
/* Adjust based on your image size */
}
.picker-wrapper { .picker-wrapper {
flex: 1; flex: 1;
height: 40px; height: 40px;
@ -583,4 +704,55 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.filter-btn {
padding: 15rpx 22rpx;
background: #f7f7f7;
border-radius: 25rpx;
height: 58rpx;
color: #9a9a9a;
font-size: 28rpx;
display: flex;
justify-content: center;
align-items: center;
margin-right: 24rpx;
position: relative;
cursor: pointer;
}
.filter-img {
width: 18rpx;
height: 10rpx;
margin-left: 8rpx;
}
.dropdown {
position: absolute;
top: calc(100% + 5px);
left: 0;
right: 0;
background: #fff;
border-radius: 6px;
box-shadow: 0 4rpx 10rpx rgba(0, 0, 0, 0.1);
z-index: 999;
max-height: 200px;
overflow-y: auto;
}
.dropdown-item {
padding: 12px;
font-size: 14px;
color: #333;
border-bottom: 1rpx solid #eee;
text-align: left;
cursor: pointer;
}
.dropdown-item:last-child {
border-bottom: none;
}
.dropdown-item:hover {
background-color: #f5f7fa;
}
</style> </style>