活动报名静态界面
This commit is contained in:
parent
5349c734ca
commit
eb56c0fb2f
|
|
@ -18,6 +18,6 @@ export const CommonEnum = {
|
||||||
Refresh: "https://api.ccttiot.com/image-1754377032112.png", //刷新
|
Refresh: "https://api.ccttiot.com/image-1754377032112.png", //刷新
|
||||||
LotusMeditation: "https://api.ccttiot.com/image-1754377169541.png", //莲坐禅心
|
LotusMeditation: "https://api.ccttiot.com/image-1754377169541.png", //莲坐禅心
|
||||||
CENTER_TILES: "https://api.ccttiot.com/image-1754897751419.png", //腰部瓦片组
|
CENTER_TILES: "https://api.ccttiot.com/image-1754897751419.png", //腰部瓦片组
|
||||||
SUCCESS_APPOINTMENT: "https://api.ccttiot.com/image-1754897751419.png", //预约成功
|
SUCCESS_APPOINTMENT: "https://api.ccttiot.com/image-1755156093304.png", //预约成功
|
||||||
};
|
};
|
||||||
export default CommonEnum;
|
export default CommonEnum;
|
||||||
|
|
|
||||||
35
pages.json
35
pages.json
|
|
@ -172,6 +172,41 @@
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path" : "pages/activity/application",
|
||||||
|
"style" :
|
||||||
|
{
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path" : "pages/activity/appointmentSuccess",
|
||||||
|
"style" :
|
||||||
|
{
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path" : "pages/activity/reservationVegetarianMeals",
|
||||||
|
"style" :
|
||||||
|
{
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path" : "pages/activity/ReservationSuccess",
|
||||||
|
"style" :
|
||||||
|
{
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path" : "pages/activity/myReservation",
|
||||||
|
"style" :
|
||||||
|
{
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"subPackages": [
|
"subPackages": [
|
||||||
|
|
|
||||||
13
pages/activity/ReservationSuccess.vue
Normal file
13
pages/activity/ReservationSuccess.vue
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
<template>
|
||||||
|
<view class="">
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
239
pages/activity/application.vue
Normal file
239
pages/activity/application.vue
Normal file
|
|
@ -0,0 +1,239 @@
|
||||||
|
<template>
|
||||||
|
<view class="page">
|
||||||
|
<base-background />
|
||||||
|
<!-- 使用自定义导航栏组件 -->
|
||||||
|
<custom-navbar ref="customNavbar" title="活动报名" />
|
||||||
|
<view :style="{ backgroundColor: CommonEnum.BASE_COLOR }" class="header">
|
||||||
|
<!-- 页面内容将在这里添加 -->
|
||||||
|
<text>选择活动日期</text>
|
||||||
|
<scroll-view class="scroll-view" scroll-x="true">
|
||||||
|
<view class="scroll-view-item_date">A</view>
|
||||||
|
<view class="scroll-view-item_date">B</view>
|
||||||
|
<view class="scroll-view-item_date">C</view>
|
||||||
|
</scroll-view>
|
||||||
|
<text>选择活动时段</text>
|
||||||
|
<scroll-view class="scroll-view" scroll-x="true">
|
||||||
|
<view class="scroll-view-item_time">A</view>
|
||||||
|
<view class="scroll-view-item_time">B</view>
|
||||||
|
<view class="scroll-view-item_time">C</view>
|
||||||
|
</scroll-view>
|
||||||
|
<text>参与活动人数</text>
|
||||||
|
<scroll-view class="scroll-view" scroll-x="true">
|
||||||
|
<view class="scroll-view-item_number">1人</view>
|
||||||
|
<view class="scroll-view-item_number">2人</view>
|
||||||
|
<view class="scroll-view-item_number">自定义</view>
|
||||||
|
</scroll-view>
|
||||||
|
</view>
|
||||||
|
<view class="contact">
|
||||||
|
<view class="contact-item">
|
||||||
|
<view class="info">姓名</view>
|
||||||
|
<input placeholder="请输入姓名" type="text" />
|
||||||
|
</view>
|
||||||
|
<view class="contact-item">
|
||||||
|
<view class="info">联系号码</view>
|
||||||
|
<input placeholder="填写手机号" type="text" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="submit">
|
||||||
|
<view class="submit-message">100</view>
|
||||||
|
<view class="submit-button">提交报名</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { CommonEnum } from "@/enum/common.js";
|
||||||
|
import { MonkEnum } from "@/enum/monk.js";
|
||||||
|
import { getMonkList } from "@/api/monk/monk.js";
|
||||||
|
|
||||||
|
import SearchBox from "../../components/search-box/search-box.vue";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
MonkSearchBox: SearchBox,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
bgc: {
|
||||||
|
backgroundColor: "#F5F0E7",
|
||||||
|
},
|
||||||
|
CommonEnum,
|
||||||
|
MonkEnum,
|
||||||
|
monkList: [],
|
||||||
|
searchName: "",
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.fetchMonkList();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async fetchMonkList() {
|
||||||
|
try {
|
||||||
|
const res = await getMonkList({ name: this.searchName });
|
||||||
|
if (res.code === 200 && Array.isArray(res.rows)) {
|
||||||
|
this.monkList = res.rows;
|
||||||
|
} else {
|
||||||
|
uni.showToast({
|
||||||
|
title: res.msg || "获取失败",
|
||||||
|
icon: "none",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
uni.showToast({
|
||||||
|
title: "网络错误",
|
||||||
|
icon: "none",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 去除 HTML 标签,返回纯文本
|
||||||
|
stripHtmlTags(html) {
|
||||||
|
if (!html) return ""; // 处理空值
|
||||||
|
return html.replace(/<[^>]+>/g, ""); // 正则替换所有 HTML 标签
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.page {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.header {
|
||||||
|
width: 650rpx;
|
||||||
|
margin-top: 24rpx;
|
||||||
|
height: 726rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 38rpx 50rpx 50rpx 50rpx;
|
||||||
|
background: #fffbf5;
|
||||||
|
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||||||
|
border: 2rpx solid #c7a26d;
|
||||||
|
margin-bottom: 40rpx;
|
||||||
|
|
||||||
|
.scroll-view {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
white-space: nowrap;
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 62rpx;
|
||||||
|
|
||||||
|
.scroll-view-item_date {
|
||||||
|
text-align: center;
|
||||||
|
line-height: 120rpx;
|
||||||
|
display: inline-block;
|
||||||
|
width: 162rpx;
|
||||||
|
height: 120rpx;
|
||||||
|
background: #fff1dd;
|
||||||
|
border-radius: 14rpx 14rpx 14rpx 14rpx;
|
||||||
|
margin-right: 32rpx;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #c7a26d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scroll-view-item_time {
|
||||||
|
text-align: center;
|
||||||
|
line-height: 120rpx;
|
||||||
|
display: inline-block;
|
||||||
|
width: 258rpx;
|
||||||
|
height: 120rpx;
|
||||||
|
background: #fff1dd;
|
||||||
|
border-radius: 14rpx 14rpx 14rpx 14rpx;
|
||||||
|
margin-right: 34rpx;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 30rpx;
|
||||||
|
color: #c7a26d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scroll-view-item_number {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
line-height: 64rpx;
|
||||||
|
display: inline-block;
|
||||||
|
width: 170rpx;
|
||||||
|
height: 64rpx;
|
||||||
|
background: #fff1dd;
|
||||||
|
border-radius: 48rpx 48rpx 48rpx 48rpx;
|
||||||
|
border: 2rpx solid #c7a26d;
|
||||||
|
margin-right: 18rpx;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #c7a26d;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact {
|
||||||
|
width: 650rpx;
|
||||||
|
height: 232rpx;
|
||||||
|
background: #fffbf5;
|
||||||
|
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||||||
|
border: 2rpx solid #c7a26d;
|
||||||
|
padding: 0 50rpx 0 54rpx;
|
||||||
|
margin-bottom: 292rpx;
|
||||||
|
|
||||||
|
.contact-item {
|
||||||
|
width: 100%;
|
||||||
|
height: 116rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
border-bottom: 1px solid #d8d8d8;
|
||||||
|
|
||||||
|
.info {
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #695347;
|
||||||
|
line-height: 44rpx;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit {
|
||||||
|
width: 650rpx;
|
||||||
|
height: 92rpx;
|
||||||
|
background: #fffbf5;
|
||||||
|
border-radius: 57rpx 57rpx 57rpx 57rpx;
|
||||||
|
border: 2rpx solid #c7a26d;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.submit-message {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #695347;
|
||||||
|
line-height: 38rpx;
|
||||||
|
margin-left: 62rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-button {
|
||||||
|
width: 224rpx;
|
||||||
|
height: 72rpx;
|
||||||
|
background: #a24242;
|
||||||
|
border-radius: 57rpx 57rpx 57rpx 57rpx;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #ffffff;
|
||||||
|
line-height: 72rpx;
|
||||||
|
text-align: center;
|
||||||
|
margin-right: 10rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
text {
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #695347;
|
||||||
|
line-height: 44rpx;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 26rpx;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
13
pages/activity/appointmentSuccess.vue
Normal file
13
pages/activity/appointmentSuccess.vue
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
<template>
|
||||||
|
<view class="">
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
82
pages/activity/myReservation.vue
Normal file
82
pages/activity/myReservation.vue
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
<template>
|
||||||
|
<view class="page">
|
||||||
|
<base-background />
|
||||||
|
<!-- 使用自定义导航栏组件 -->
|
||||||
|
<custom-navbar ref="customNavbar" title="带图片背景的基础界面" />
|
||||||
|
<view :style="{ backgroundColor: CommonEnum.BASE_COLOR }" class="header">
|
||||||
|
<!-- 状态展示 -->
|
||||||
|
<status-display v-if="loading" loading-text="加载中..." type="loading" />
|
||||||
|
<!-- 页面内容将在这里添加 -->
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { CommonEnum } from "@/enum/common.js";
|
||||||
|
import { MonkEnum } from "@/enum/monk.js";
|
||||||
|
import { getMonkList } from "@/api/monk/monk.js";
|
||||||
|
|
||||||
|
import SearchBox from "../../components/search-box/search-box.vue";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
MonkSearchBox: SearchBox,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
bgc: {
|
||||||
|
backgroundColor: "#F5F0E7",
|
||||||
|
},
|
||||||
|
CommonEnum,
|
||||||
|
MonkEnum,
|
||||||
|
monkList: [],
|
||||||
|
searchName: "",
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.fetchMonkList();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async fetchMonkList() {
|
||||||
|
try {
|
||||||
|
const res = await getMonkList({ name: this.searchName });
|
||||||
|
if (res.code === 200 && Array.isArray(res.rows)) {
|
||||||
|
this.monkList = res.rows;
|
||||||
|
} else {
|
||||||
|
uni.showToast({
|
||||||
|
title: res.msg || "获取失败",
|
||||||
|
icon: "none",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
uni.showToast({
|
||||||
|
title: "网络错误",
|
||||||
|
icon: "none",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 去除 HTML 标签,返回纯文本
|
||||||
|
stripHtmlTags(html) {
|
||||||
|
if (!html) return ""; // 处理空值
|
||||||
|
return html.replace(/<[^>]+>/g, ""); // 正则替换所有 HTML 标签
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.page {
|
||||||
|
width: 100%;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
width: 100%;
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 0 15rpx 40rpx 15rpx;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
82
pages/activity/reservationVegetarianMeals.vue
Normal file
82
pages/activity/reservationVegetarianMeals.vue
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
<template>
|
||||||
|
<view class="page">
|
||||||
|
<base-background />
|
||||||
|
<!-- 使用自定义导航栏组件 -->
|
||||||
|
<custom-navbar ref="customNavbar" title="带图片背景的基础界面" />
|
||||||
|
<view :style="{ backgroundColor: CommonEnum.BASE_COLOR }" class="header">
|
||||||
|
<!-- 状态展示 -->
|
||||||
|
<status-display v-if="loading" loading-text="加载中..." type="loading" />
|
||||||
|
<!-- 页面内容将在这里添加 -->
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { CommonEnum } from "@/enum/common.js";
|
||||||
|
import { MonkEnum } from "@/enum/monk.js";
|
||||||
|
import { getMonkList } from "@/api/monk/monk.js";
|
||||||
|
|
||||||
|
import SearchBox from "../../components/search-box/search-box.vue";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
MonkSearchBox: SearchBox,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
bgc: {
|
||||||
|
backgroundColor: "#F5F0E7",
|
||||||
|
},
|
||||||
|
CommonEnum,
|
||||||
|
MonkEnum,
|
||||||
|
monkList: [],
|
||||||
|
searchName: "",
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.fetchMonkList();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async fetchMonkList() {
|
||||||
|
try {
|
||||||
|
const res = await getMonkList({ name: this.searchName });
|
||||||
|
if (res.code === 200 && Array.isArray(res.rows)) {
|
||||||
|
this.monkList = res.rows;
|
||||||
|
} else {
|
||||||
|
uni.showToast({
|
||||||
|
title: res.msg || "获取失败",
|
||||||
|
icon: "none",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
uni.showToast({
|
||||||
|
title: "网络错误",
|
||||||
|
icon: "none",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 去除 HTML 标签,返回纯文本
|
||||||
|
stripHtmlTags(html) {
|
||||||
|
if (!html) return ""; // 处理空值
|
||||||
|
return html.replace(/<[^>]+>/g, ""); // 正则替换所有 HTML 标签
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.page {
|
||||||
|
width: 100%;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
width: 100%;
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 0 15rpx 40rpx 15rpx;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -6,50 +6,50 @@
|
||||||
// 环境配置
|
// 环境配置
|
||||||
const ENV_CONFIG = {
|
const ENV_CONFIG = {
|
||||||
develop: {
|
develop: {
|
||||||
loadingText: '开发环境加载中~',
|
loadingText: "加载中~",
|
||||||
loadingTime: 100,
|
loadingTime: 100,
|
||||||
},
|
},
|
||||||
trial: {
|
trial: {
|
||||||
loadingText: '体验版加载中~',
|
loadingText: "加载中~",
|
||||||
loadingTime: 100,
|
loadingTime: 100,
|
||||||
},
|
},
|
||||||
release: {
|
release: {
|
||||||
loadingText: '加载中~',
|
loadingText: "加载中~",
|
||||||
loadingTime: 100,
|
loadingTime: 100,
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
|
|
||||||
// 获取当前环境配置
|
// 获取当前环境配置
|
||||||
const getCurrentConfig = () => {
|
const getCurrentConfig = () => {
|
||||||
try {
|
try {
|
||||||
const { envVersion } = wx.getAccountInfoSync().miniProgram
|
const { envVersion } = wx.getAccountInfoSync().miniProgram;
|
||||||
console.log('当前环境:', envVersion)
|
console.log("当前环境:", envVersion);
|
||||||
return ENV_CONFIG[envVersion] || ENV_CONFIG.release
|
return ENV_CONFIG[envVersion] || ENV_CONFIG.release;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.warn('获取环境失败,默认使用正式环境:', error)
|
console.warn("获取环境失败,默认使用正式环境:", error);
|
||||||
return ENV_CONFIG.release
|
return ENV_CONFIG.release;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
const config = getCurrentConfig()
|
const config = getCurrentConfig();
|
||||||
|
|
||||||
// 全局状态管理
|
// 全局状态管理
|
||||||
let isLoading = false
|
let isLoading = false;
|
||||||
let loadingTimer = null
|
let loadingTimer = null;
|
||||||
let loadingCount = 0 // 请求计数器
|
let loadingCount = 0; // 请求计数器
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置loading超时自动清除
|
* 设置loading超时自动清除
|
||||||
*/
|
*/
|
||||||
const setLoadingTimeout = () => {
|
const setLoadingTimeout = () => {
|
||||||
if (loadingTimer) {
|
if (loadingTimer) {
|
||||||
clearTimeout(loadingTimer)
|
clearTimeout(loadingTimer);
|
||||||
}
|
}
|
||||||
loadingTimer = setTimeout(() => {
|
loadingTimer = setTimeout(() => {
|
||||||
console.warn('Loading超时,强制清除')
|
console.warn("Loading超时,强制清除");
|
||||||
forceHideLoading()
|
forceHideLoading();
|
||||||
}, 30000) // 30秒超时
|
}, 30000); // 30秒超时
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 显示加载状态
|
* 显示加载状态
|
||||||
|
|
@ -57,19 +57,19 @@ const setLoadingTimeout = () => {
|
||||||
*/
|
*/
|
||||||
function showLoading(text = config.loadingText) {
|
function showLoading(text = config.loadingText) {
|
||||||
try {
|
try {
|
||||||
loadingCount++
|
loadingCount++;
|
||||||
if (!isLoading) {
|
if (!isLoading) {
|
||||||
isLoading = true
|
isLoading = true;
|
||||||
uni.showLoading({
|
uni.showLoading({
|
||||||
title: text,
|
title: text,
|
||||||
mask: true,
|
mask: true,
|
||||||
})
|
});
|
||||||
// 设置超时清除
|
// 设置超时清除
|
||||||
setLoadingTimeout()
|
setLoadingTimeout();
|
||||||
console.log('显示Loading:', text)
|
console.log("显示Loading:", text);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.warn('显示loading失败:', error)
|
console.warn("显示loading失败:", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -78,23 +78,26 @@ function showLoading(text = config.loadingText) {
|
||||||
*/
|
*/
|
||||||
function hideLoading() {
|
function hideLoading() {
|
||||||
try {
|
try {
|
||||||
loadingCount--
|
loadingCount--;
|
||||||
if (loadingCount > 0) {
|
if (loadingCount > 0) {
|
||||||
console.log('还有其他请求在进行,不隐藏Loading, 剩余请求数:', loadingCount)
|
console.log(
|
||||||
return // 还有其他请求在进行
|
"还有其他请求在进行,不隐藏Loading, 剩余请求数:",
|
||||||
|
loadingCount,
|
||||||
|
);
|
||||||
|
return; // 还有其他请求在进行
|
||||||
}
|
}
|
||||||
if (isLoading) {
|
if (isLoading) {
|
||||||
isLoading = false
|
isLoading = false;
|
||||||
// 清除超时定时器
|
// 清除超时定时器
|
||||||
if (loadingTimer) {
|
if (loadingTimer) {
|
||||||
clearTimeout(loadingTimer)
|
clearTimeout(loadingTimer);
|
||||||
loadingTimer = null
|
loadingTimer = null;
|
||||||
}
|
}
|
||||||
uni.hideLoading()
|
uni.hideLoading();
|
||||||
console.log('隐藏Loading')
|
console.log("隐藏Loading");
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.warn('隐藏loading失败:', error)
|
console.warn("隐藏loading失败:", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -103,16 +106,16 @@ function hideLoading() {
|
||||||
*/
|
*/
|
||||||
export function forceHideLoading() {
|
export function forceHideLoading() {
|
||||||
try {
|
try {
|
||||||
isLoading = false
|
isLoading = false;
|
||||||
loadingCount = 0
|
loadingCount = 0;
|
||||||
if (loadingTimer) {
|
if (loadingTimer) {
|
||||||
clearTimeout(loadingTimer)
|
clearTimeout(loadingTimer);
|
||||||
loadingTimer = null
|
loadingTimer = null;
|
||||||
}
|
}
|
||||||
uni.hideLoading()
|
uni.hideLoading();
|
||||||
console.log('强制隐藏Loading')
|
console.log("强制隐藏Loading");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.warn('强制隐藏loading失败:', error)
|
console.warn("强制隐藏loading失败:", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -125,7 +128,7 @@ export function getLoadingStatus() {
|
||||||
isLoading,
|
isLoading,
|
||||||
loadingCount,
|
loadingCount,
|
||||||
hasTimer: !!loadingTimer,
|
hasTimer: !!loadingTimer,
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -133,8 +136,8 @@ export function getLoadingStatus() {
|
||||||
* @param {Object} newConfig - 新的配置
|
* @param {Object} newConfig - 新的配置
|
||||||
*/
|
*/
|
||||||
export function setLoadingConfig(newConfig) {
|
export function setLoadingConfig(newConfig) {
|
||||||
Object.assign(config, newConfig)
|
Object.assign(config, newConfig);
|
||||||
console.log('更新Loading配置:', config)
|
console.log("更新Loading配置:", config);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -142,7 +145,7 @@ export function setLoadingConfig(newConfig) {
|
||||||
* @returns {Object} 当前配置
|
* @returns {Object} 当前配置
|
||||||
*/
|
*/
|
||||||
export function getLoadingConfig() {
|
export function getLoadingConfig() {
|
||||||
return { ...config }
|
return { ...config };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -150,10 +153,13 @@ export function getLoadingConfig() {
|
||||||
* @param {string} text - 加载提示文字
|
* @param {string} text - 加载提示文字
|
||||||
* @param {number} delay - 延迟时间(毫秒)
|
* @param {number} delay - 延迟时间(毫秒)
|
||||||
*/
|
*/
|
||||||
export function showLoadingWithDelay(text = config.loadingText, delay = config.loadingTime) {
|
export function showLoadingWithDelay(
|
||||||
|
text = config.loadingText,
|
||||||
|
delay = config.loadingTime,
|
||||||
|
) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
showLoading(text)
|
showLoading(text);
|
||||||
}, delay)
|
}, delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -162,8 +168,8 @@ export function showLoadingWithDelay(text = config.loadingText, delay = config.l
|
||||||
*/
|
*/
|
||||||
export function hideLoadingWithDelay(delay = 500) {
|
export function hideLoadingWithDelay(delay = 500) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
hideLoading()
|
hideLoading();
|
||||||
}, delay)
|
}, delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -171,35 +177,36 @@ export function hideLoadingWithDelay(delay = 500) {
|
||||||
*/
|
*/
|
||||||
export function initGlobalLoadingManager() {
|
export function initGlobalLoadingManager() {
|
||||||
// 监听页面显示事件
|
// 监听页面显示事件
|
||||||
uni.$on('page-show', () => {
|
uni.$on("page-show", () => {
|
||||||
console.log('页面显示,检查loading状态')
|
console.log("页面显示,检查loading状态");
|
||||||
// 页面显示时检查loading状态,如果超时则清除
|
// 页面显示时检查loading状态,如果超时则清除
|
||||||
if (isLoading && loadingTimer) {
|
if (isLoading && loadingTimer) {
|
||||||
const remainingTime = 30000 - (Date.now() - (loadingTimer._startTime || Date.now()))
|
const remainingTime =
|
||||||
|
30000 - (Date.now() - (loadingTimer._startTime || Date.now()));
|
||||||
if (remainingTime <= 0) {
|
if (remainingTime <= 0) {
|
||||||
console.warn('页面显示时发现超时loading,强制清除')
|
console.warn("页面显示时发现超时loading,强制清除");
|
||||||
forceHideLoading()
|
forceHideLoading();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
// 监听页面隐藏事件
|
// 监听页面隐藏事件
|
||||||
uni.$on('page-hide', () => {
|
uni.$on("page-hide", () => {
|
||||||
console.log('页面隐藏')
|
console.log("页面隐藏");
|
||||||
})
|
});
|
||||||
|
|
||||||
// 监听应用显示事件
|
// 监听应用显示事件
|
||||||
uni.$on('app-show', () => {
|
uni.$on("app-show", () => {
|
||||||
console.log('应用显示')
|
console.log("应用显示");
|
||||||
})
|
});
|
||||||
|
|
||||||
// 监听应用隐藏事件
|
// 监听应用隐藏事件
|
||||||
uni.$on('app-hide', () => {
|
uni.$on("app-hide", () => {
|
||||||
console.log('应用隐藏,清除loading')
|
console.log("应用隐藏,清除loading");
|
||||||
forceHideLoading()
|
forceHideLoading();
|
||||||
})
|
});
|
||||||
|
|
||||||
console.log('全局loading管理器已初始化')
|
console.log("全局loading管理器已初始化");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -207,30 +214,30 @@ export function initGlobalLoadingManager() {
|
||||||
*/
|
*/
|
||||||
export class AutoLoadingManager {
|
export class AutoLoadingManager {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.isActive = false
|
this.isActive = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 显示loading(可选)
|
// 显示loading(可选)
|
||||||
show(text = '加载中...') {
|
show(text = "加载中...") {
|
||||||
this.isActive = true
|
this.isActive = true;
|
||||||
// 这里可以选择是否显示额外的loading
|
// 这里可以选择是否显示额外的loading
|
||||||
// 默认情况下,所有API调用都会自动显示loading
|
// 默认情况下,所有API调用都会自动显示loading
|
||||||
}
|
}
|
||||||
|
|
||||||
// 隐藏loading(可选)
|
// 隐藏loading(可选)
|
||||||
hide() {
|
hide() {
|
||||||
this.isActive = false
|
this.isActive = false;
|
||||||
// 这里可以选择是否手动隐藏loading
|
// 这里可以选择是否手动隐藏loading
|
||||||
// 默认情况下,API调用完成后会自动隐藏loading
|
// 默认情况下,API调用完成后会自动隐藏loading
|
||||||
}
|
}
|
||||||
|
|
||||||
// 销毁管理器
|
// 销毁管理器
|
||||||
destroy() {
|
destroy() {
|
||||||
this.isActive = false
|
this.isActive = false;
|
||||||
// 页面卸载时可以选择是否强制清除loading
|
// 页面卸载时可以选择是否强制清除loading
|
||||||
// forceHideLoading()
|
// forceHideLoading()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 导出内部方法供request.js使用
|
// 导出内部方法供request.js使用
|
||||||
export { showLoading, hideLoading, config }
|
export { showLoading, hideLoading, config };
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user