|
|
@@ -3,7 +3,7 @@
|
|
3
|
3
|
* @Author: Fengyu
|
|
4
|
4
|
* @Date: 2025-12-12 10:12:59
|
|
5
|
5
|
* @LastEditors: Fengyu
|
|
6
|
|
- * @LastEditTime: 2025-12-17 11:12:47
|
|
|
6
|
+ * @LastEditTime: 2025-12-17 14:29:31
|
|
7
|
7
|
-->
|
|
8
|
8
|
<template>
|
|
9
|
9
|
<view class="questionnaire-container">
|
|
|
@@ -38,7 +38,7 @@
|
|
38
|
38
|
<view class="grid-title">1.您所在的服务区</view>
|
|
39
|
39
|
<view class="grid-desc">
|
|
40
|
40
|
<u-select v-model="parkSelectShow" :list="parkList" @confirm="confirm"></u-select>
|
|
41
|
|
- <span @click="parkSelectShow = true">{{ parkName || '请选择' }} ﹥</span>
|
|
|
41
|
+ <span @click="parkSelectShow = true">{{ parkName || '请选择' }} <span style="position: relative; top: -2px;">⌵</span></span>
|
|
42
|
42
|
</view>
|
|
43
|
43
|
</view>
|
|
44
|
44
|
</view>
|
|
|
@@ -91,6 +91,18 @@
|
|
91
|
91
|
</view>
|
|
92
|
92
|
</view>
|
|
93
|
93
|
</view>
|
|
|
94
|
+ <!-- 过了填报日期,弹窗提醒 -->
|
|
|
95
|
+ <u-mask :show="!isFormAvailable" :mask-click-able="false">
|
|
|
96
|
+ <view class="warp">
|
|
|
97
|
+ <view class="rect" @tap.stop>
|
|
|
98
|
+ <view class="rect-content">
|
|
|
99
|
+ <view class="rect-title">提示</view>
|
|
|
100
|
+ <view class="rect-desc">当前时间已超过截止时间,无法填写</view>
|
|
|
101
|
+ <view class="rect-btn" @click="goHome">去首页</view>
|
|
|
102
|
+ </view>
|
|
|
103
|
+ </view>
|
|
|
104
|
+ </view>
|
|
|
105
|
+ </u-mask>
|
|
94
|
106
|
</view>
|
|
95
|
107
|
</template>
|
|
96
|
108
|
|
|
|
@@ -215,6 +227,38 @@
|
|
215
|
227
|
type: 0
|
|
216
|
228
|
})
|
|
217
|
229
|
|
|
|
230
|
+ // 是否超时,超时显示弹窗
|
|
|
231
|
+ const isFormAvailable = ref(true)
|
|
|
232
|
+
|
|
|
233
|
+ /**
|
|
|
234
|
+ * 验证问卷截止时间
|
|
|
235
|
+ * @param {string} endAt 截止时间字符串,格式为"YYYY-MM-DD HH:MM:SS"
|
|
|
236
|
+ */
|
|
|
237
|
+ const validateEndTime = (endAt) => {
|
|
|
238
|
+ try {
|
|
|
239
|
+ // 将字符串转换为日期对象(兼容不同浏览器)
|
|
|
240
|
+ const endDate = new Date(endAt.replace(/-/g, '/'))
|
|
|
241
|
+ const currentDate = new Date()
|
|
|
242
|
+
|
|
|
243
|
+ // 比较当前时间与截止时间
|
|
|
244
|
+ if (currentDate <= endDate) {
|
|
|
245
|
+ isFormAvailable.value = true
|
|
|
246
|
+ } else {
|
|
|
247
|
+ isFormAvailable.value = false
|
|
|
248
|
+ }
|
|
|
249
|
+ } catch (error) {
|
|
|
250
|
+ console.error('时间验证失败:', error)
|
|
|
251
|
+ // 如果时间格式解析失败,默认允许填写
|
|
|
252
|
+ isFormAvailable.value = true
|
|
|
253
|
+ }
|
|
|
254
|
+ }
|
|
|
255
|
+
|
|
|
256
|
+ const goHome = () => {
|
|
|
257
|
+ uni.switchTab({
|
|
|
258
|
+ url: '/pages/index'
|
|
|
259
|
+ })
|
|
|
260
|
+ }
|
|
|
261
|
+
|
|
218
|
262
|
// 根据页面参数获取问卷详情
|
|
219
|
263
|
onMounted(() => {
|
|
220
|
264
|
getParkListApi()
|
|
|
@@ -233,6 +277,7 @@
|
|
233
|
277
|
getQuestionnaireDetailApi(questionnaireId).then(res => {
|
|
234
|
278
|
if (res.code === 200) {
|
|
235
|
279
|
questionnaireInfo.value = res.data
|
|
|
280
|
+ validateEndTime(questionnaireInfo.value.endAt)
|
|
236
|
281
|
// 如果questionnaireInfo.value.type == 2,不显示‘车辆维修站’
|
|
237
|
282
|
if (questionnaireInfo.value.type == 2) {
|
|
238
|
283
|
dataFilledIn.value = dataList.value.filter(item => item.id != 6)
|
|
|
@@ -522,4 +567,39 @@
|
|
522
|
567
|
display: flex;
|
|
523
|
568
|
justify-content: center;
|
|
524
|
569
|
}
|
|
|
570
|
+ .warp {
|
|
|
571
|
+ display: flex;
|
|
|
572
|
+ align-items: center;
|
|
|
573
|
+ justify-content: center;
|
|
|
574
|
+ height: 100%;
|
|
|
575
|
+ }
|
|
|
576
|
+
|
|
|
577
|
+ .rect {
|
|
|
578
|
+ width: 60vw;
|
|
|
579
|
+ max-width: 400px;
|
|
|
580
|
+ background-color: #fff;
|
|
|
581
|
+ border-radius: 12rpx;
|
|
|
582
|
+ padding: 30rpx 30rpx;
|
|
|
583
|
+
|
|
|
584
|
+ .rect-title {
|
|
|
585
|
+ font-size: 32rpx;
|
|
|
586
|
+ font-weight: 600;
|
|
|
587
|
+ color: #333;
|
|
|
588
|
+ margin-bottom: 20rpx;
|
|
|
589
|
+ text-align: center;
|
|
|
590
|
+ }
|
|
|
591
|
+
|
|
|
592
|
+ .rect-btn {
|
|
|
593
|
+ width: 100%;
|
|
|
594
|
+ height: 80rpx;
|
|
|
595
|
+ line-height: 80rpx;
|
|
|
596
|
+ text-align: center;
|
|
|
597
|
+ font-size: 32rpx;
|
|
|
598
|
+ font-weight: 600;
|
|
|
599
|
+ color: #fff;
|
|
|
600
|
+ background: linear-gradient(to bottom, #7EBBF5, #4B9EF6);
|
|
|
601
|
+ border-radius: 10rpx;
|
|
|
602
|
+ margin-top: 40rpx;
|
|
|
603
|
+ }
|
|
|
604
|
+ }
|
|
525
|
605
|
</style>
|