微信小程序页面迁移校验之前 P5任务处理之前

This commit is contained in:
Neo
2026-03-09 01:19:21 +08:00
parent 263bf96035
commit 6e20987d2f
1112 changed files with 153824 additions and 219694 deletions

View File

@@ -0,0 +1,146 @@
import { request } from "../../utils/request"
Page({
data: {
statusBarHeight: 0,
siteCode: "",
role: "",
phone: "",
employeeNumber: "",
nickname: "",
submitting: false,
},
onLoad() {
const { statusBarHeight } = wx.getSystemInfoSync()
this.setData({ statusBarHeight })
},
onShow() {
this._checkAccess()
},
/** 校验用户身份:无 token 跳登录,非 new/rejected 跳对应页 */
async _checkAccess() {
const token = wx.getStorageSync("token")
if (!token) {
wx.reLaunch({ url: "/pages/login/login" })
return
}
try {
const data = await request({
url: "/api/xcx/me",
method: "GET",
needAuth: true,
})
const app = getApp<IAppOption>()
app.globalData.authUser = {
userId: data.user_id,
status: data.status,
nickname: data.nickname,
}
wx.setStorageSync("userId", data.user_id)
wx.setStorageSync("userStatus", data.status)
switch (data.status) {
case "new":
break
case "rejected":
wx.reLaunch({ url: "/pages/no-permission/no-permission" })
break
case "approved":
wx.reLaunch({ url: "/pages/mvp/mvp" })
break
case "pending":
wx.reLaunch({ url: "/pages/reviewing/reviewing" })
break
case "disabled":
wx.reLaunch({ url: "/pages/no-permission/no-permission" })
break
}
} catch {
// 网络错误不阻塞,允许用户继续填表
}
},
onBack() {
wx.navigateBack({ fail: () => wx.reLaunch({ url: "/pages/login/login" }) })
},
/* 原生 input 的 bindinput 事件 */
onSiteCodeInput(e: WechatMiniprogram.Input) {
this.setData({ siteCode: e.detail.value })
},
onRoleInput(e: WechatMiniprogram.Input) {
this.setData({ role: e.detail.value })
},
onPhoneInput(e: WechatMiniprogram.Input) {
this.setData({ phone: e.detail.value })
},
onEmployeeNumberInput(e: WechatMiniprogram.Input) {
this.setData({ employeeNumber: e.detail.value })
},
onNicknameInput(e: WechatMiniprogram.Input) {
this.setData({ nickname: e.detail.value })
},
async onSubmit() {
if (this.data.submitting) return
const { siteCode, role, phone, nickname, employeeNumber } = this.data
if (!siteCode.trim()) {
wx.showToast({ title: "请输入球房ID", icon: "none" })
return
}
if (!role.trim()) {
wx.showToast({ title: "请输入申请身份", icon: "none" })
return
}
if (!/^\d{11}$/.test(phone)) {
wx.showToast({ title: "请输入11位手机号", icon: "none" })
return
}
if (!nickname.trim()) {
wx.showToast({ title: "请输入昵称", icon: "none" })
return
}
this.setData({ submitting: true })
try {
await request({
url: "/api/xcx/apply",
method: "POST",
data: {
site_code: siteCode.trim(),
applied_role_text: role.trim(),
phone,
employee_number: employeeNumber.trim() || undefined,
nickname: nickname.trim(),
},
needAuth: true,
})
wx.showToast({ title: "申请已提交", icon: "success" })
setTimeout(() => {
wx.reLaunch({ url: "/pages/reviewing/reviewing" })
}, 800)
} catch (err: any) {
const msg =
err?.data?.detail ||
(err?.statusCode === 409
? "您已有待审核的申请"
: err?.statusCode === 422
? "表单信息有误,请检查"
: "提交失败,请稍后重试")
wx.showToast({ title: msg, icon: "none" })
} finally {
this.setData({ submitting: false })
}
},
})