补充提交二维码跳转
This commit is contained in:
parent
431f24418a
commit
8b320a0f18
|
|
@ -2,7 +2,7 @@ const config = {
|
||||||
terminal: 1, //终端
|
terminal: 1, //终端
|
||||||
title: '后台管理系统', //网站默认标题
|
title: '后台管理系统', //网站默认标题
|
||||||
version: '1.9.1', //版本号
|
version: '1.9.1', //版本号
|
||||||
baseUrl: `${import.meta.env.VITE_APP_BASE_URL || 'http://192.168.123.111:8082'}/`, //请求接口域名 localhost
|
baseUrl: `${import.meta.env.VITE_APP_BASE_URL || 'http://localhost:8082'}/`, //请求接口域名 localhost
|
||||||
urlPrefix: 'adminapi', //请求默认前缀
|
urlPrefix: 'adminapi', //请求默认前缀
|
||||||
timeout: 10 * 1000 //请求超时时长
|
timeout: 10 * 1000 //请求超时时长
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ public class IndexServiceImpl implements IIndexService {
|
||||||
console.put("version", version);
|
console.put("version", version);
|
||||||
|
|
||||||
// 招生统计数据
|
// 招生统计数据
|
||||||
Map<String, Object> enrollmentStats = enrollmentStaticService.buildEnrollmentStats();
|
Map<String, Object> enrollmentStats = enrollmentStaticService.buildEnrollmentStats(null);
|
||||||
console.put("today", enrollmentStats);
|
console.put("today", enrollmentStats);
|
||||||
|
|
||||||
// 招生趋势数据(带筛选条件)
|
// 招生趋势数据(带筛选条件)
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import java.io.Serializable;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("岗位关联表实体")
|
@ApiModel("岗位关联表实体")
|
||||||
@TableName("la-admin_jobs")
|
@TableName("la_admin_jobs")
|
||||||
public class AdminJobs implements Serializable {
|
public class AdminJobs implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,9 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> impl
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AjaxResult<Object> getTeacherInfo(TeacherSearchValidate searchValidate) {
|
public AjaxResult<Object> getTeacherInfo(TeacherSearchValidate searchValidate) {
|
||||||
if (searchValidate.getTeacherId() == null && StringUtils.isBlank(searchValidate.getInvitationCode())) {
|
if (searchValidate.getTeacherId() == null
|
||||||
|
&& StringUtils.isBlank(searchValidate.getInvitationCode())
|
||||||
|
&& StringUtils.isBlank(searchValidate.getTeacherCode())) {
|
||||||
return AjaxResult.failed("教师参数缺失!");
|
return AjaxResult.failed("教师参数缺失!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -99,6 +101,9 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> impl
|
||||||
if (StringUtils.isNotBlank(searchValidate.getInvitationCode())) {
|
if (StringUtils.isNotBlank(searchValidate.getInvitationCode())) {
|
||||||
queryWrapper.eq("invitation_code", searchValidate.getInvitationCode());
|
queryWrapper.eq("invitation_code", searchValidate.getInvitationCode());
|
||||||
}
|
}
|
||||||
|
if (StringUtils.isNotBlank(searchValidate.getTeacherCode())) {
|
||||||
|
queryWrapper.eq("teacher_code", searchValidate.getTeacherCode());
|
||||||
|
}
|
||||||
|
|
||||||
Teacher teacher = teacherMapper.selectOne(queryWrapper.last("limit 1"));
|
Teacher teacher = teacherMapper.selectOne(queryWrapper.last("limit 1"));
|
||||||
if (teacher == null) {
|
if (teacher == null) {
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ const envBaseUrl = import.meta.env.VITE_APP_BASE_URL || ''
|
||||||
|
|
||||||
//#ifdef MP-WEIXIN
|
//#ifdef MP-WEIXIN
|
||||||
// 微信小程序:如果环境变量为空,使用默认开发地址
|
// 微信小程序:如果环境变量为空,使用默认开发地址
|
||||||
let baseUrl = envBaseUrl ? `${envBaseUrl}/` : 'http://192.168.123.123:8084/'
|
let baseUrl = envBaseUrl ? `${envBaseUrl}/` : 'http://8.153.111.6:8084/'
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#ifndef MP-WEIXIN
|
//#ifndef MP-WEIXIN
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,7 @@ import { useUserStore } from '@/stores/user'
|
||||||
import { storeToRefs } from 'pinia'
|
import { storeToRefs } from 'pinia'
|
||||||
import { getAliyunImageUrl } from '@/utils/imageUtils'
|
import { getAliyunImageUrl } from '@/utils/imageUtils'
|
||||||
import { ensureStorageConfig } from '@/utils/configUtils'
|
import { ensureStorageConfig } from '@/utils/configUtils'
|
||||||
|
import cache from '@/utils/cache'
|
||||||
|
|
||||||
// #ifdef MP
|
// #ifdef MP
|
||||||
import MpPrivacyPopup from './component/mp-privacy-popup.vue'
|
import MpPrivacyPopup from './component/mp-privacy-popup.vue'
|
||||||
|
|
@ -185,19 +186,15 @@ const getStats = async () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 先获取教师信息,获取 teacherId
|
|
||||||
let teacherId: number | undefined = undefined
|
let teacherId: number | undefined = undefined
|
||||||
|
|
||||||
// 尝试从 userInfo 中获取
|
|
||||||
if (userInfo.value?.teacherId) {
|
if (userInfo.value?.teacherId) {
|
||||||
teacherId = userInfo.value.teacherId
|
teacherId = userInfo.value.teacherId
|
||||||
} else {
|
} else if (userInfo.value?.account) {
|
||||||
// 如果 userInfo 中没有,调用 getTeacherInfo 获取
|
|
||||||
try {
|
try {
|
||||||
const teacherRes = await getTeacherInfo({ id: userInfo.value.id })
|
const teacherRes = await getTeacherInfo({ teacher_code: userInfo.value.account })
|
||||||
if (teacherRes && teacherRes.code === 1 && teacherRes.data) {
|
if (teacherRes && teacherRes.code === 1 && teacherRes.data) {
|
||||||
teacherId = teacherRes.data.teacherId
|
teacherId = teacherRes.data.teacher_id
|
||||||
// 更新 userInfo
|
|
||||||
userInfo.value.teacherId = teacherId
|
userInfo.value.teacherId = teacherId
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
@ -208,7 +205,6 @@ const getStats = async () => {
|
||||||
if (teacherId) {
|
if (teacherId) {
|
||||||
console.log('首页获取招生统计,teacherId:', teacherId)
|
console.log('首页获取招生统计,teacherId:', teacherId)
|
||||||
const res = await getEnrollmentStatistical(teacherId)
|
const res = await getEnrollmentStatistical(teacherId)
|
||||||
// 接口直接返回数据对象,没有 code 包装
|
|
||||||
if (res && res.total_enroll_count !== undefined) {
|
if (res && res.total_enroll_count !== undefined) {
|
||||||
stats.value = {
|
stats.value = {
|
||||||
total: res.total_enroll_count,
|
total: res.total_enroll_count,
|
||||||
|
|
@ -279,23 +275,32 @@ onLoad((options: any) => {
|
||||||
|
|
||||||
if (options.scene) {
|
if (options.scene) {
|
||||||
const invitationCode = decodeURIComponent(options.scene)
|
const invitationCode = decodeURIComponent(options.scene)
|
||||||
if (isLogin.value) {
|
cache.set('INVITATION_CODE', invitationCode)
|
||||||
uni.navigateTo({
|
|
||||||
url: `/pages/pre_registration/pre_registration?invitationCode=${invitationCode}`
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
uni.navigateTo({
|
|
||||||
url: `/pages/login/login?invitationCode=${invitationCode}`
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
onShow(async () => {
|
onShow(async () => {
|
||||||
// 等待登录状态确定
|
|
||||||
await new Promise(resolve => setTimeout(resolve, 100))
|
await new Promise(resolve => setTimeout(resolve, 100))
|
||||||
|
|
||||||
// 如果没有登录,跳过
|
const invitationCode = cache.get('INVITATION_CODE')
|
||||||
|
if (invitationCode) {
|
||||||
|
console.log('首页 onShow 检测到邀请码:', invitationCode)
|
||||||
|
cache.remove('INVITATION_CODE')
|
||||||
|
if (isLogin.value) {
|
||||||
|
// 已登录,直接跳转到预报名页面,带上邀请码参数
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/pre_registration/pre_registration?invitationCode=${invitationCode}`
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
// 未登录,保留在缓存中,跳转到登录页面
|
||||||
|
cache.set('INVITATION_CODE', invitationCode)
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/login/login'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if (!isLogin.value) {
|
if (!isLogin.value) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -391,8 +391,10 @@ const loginHandle = async (data: any) => {
|
||||||
uni.hideLoading()
|
uni.hideLoading()
|
||||||
const invitationCode = cache.get('INVITATION_CODE')
|
const invitationCode = cache.get('INVITATION_CODE')
|
||||||
if (invitationCode) {
|
if (invitationCode) {
|
||||||
cache.remove('INVITATION_CODE')
|
console.log('登录后检测到邀请码,跳转到预报名页面:', invitationCode)
|
||||||
router.reLaunch(`/pages/pre_registration/pre_registration?invitationCode=${invitationCode}`)
|
uni.reLaunch({
|
||||||
|
url: `/pages/pre_registration/pre_registration?invitationCode=${invitationCode}`
|
||||||
|
})
|
||||||
cache.remove(BACK_URL)
|
cache.remove(BACK_URL)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -193,6 +193,7 @@ import { reactive, ref, onMounted, watch, toRaw } from 'vue'
|
||||||
import { onLoad } from '@dcloudio/uni-app'
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
import { useRouter } from 'uniapp-router-next'
|
import { useRouter } from 'uniapp-router-next'
|
||||||
import { getMajorList, addStudent, getTeacherInfo } from '@/api/app'
|
import { getMajorList, addStudent, getTeacherInfo } from '@/api/app'
|
||||||
|
import cache from '@/utils/cache'
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|
||||||
|
|
@ -237,11 +238,19 @@ const getTeacherData = async (teacherId: string) => {
|
||||||
console.log('teacherId:', teacherId)
|
console.log('teacherId:', teacherId)
|
||||||
try {
|
try {
|
||||||
console.log('开始调用 getTeacherInfo...')
|
console.log('开始调用 getTeacherInfo...')
|
||||||
const res = await getTeacherInfo({ teacherId: Number(teacherId) })
|
const res = await getTeacherInfo({ teacher_id: Number(teacherId) })
|
||||||
console.log('getTeacherInfo 返回:', res)
|
console.log('getTeacherInfo 完整返回:', JSON.stringify(res))
|
||||||
|
console.log('getTeacherInfo res.code:', res.code)
|
||||||
|
console.log('getTeacherInfo res.data:', res.data)
|
||||||
if (res.code === 1 && res.data) {
|
if (res.code === 1 && res.data) {
|
||||||
|
console.log('res.data.teacher_name:', res.data.teacher_name)
|
||||||
|
console.log('res.data.teacher_id:', res.data.teacher_id)
|
||||||
formData.teacher = res.data.teacher_name
|
formData.teacher = res.data.teacher_name
|
||||||
formData.recruitmentTeacherId = res.data.teacher_id
|
formData.recruitmentTeacherId = res.data.teacher_id
|
||||||
|
console.log('赋值后 formData.teacher:', formData.teacher)
|
||||||
|
console.log('赋值后 formData.recruitmentTeacherId:', formData.recruitmentTeacherId)
|
||||||
|
} else {
|
||||||
|
console.log('res.code !== 1 或 res.data 为空')
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取老师信息失败:', error)
|
console.error('获取老师信息失败:', error)
|
||||||
|
|
@ -252,11 +261,20 @@ const getTeacherDataByInvitationCode = async (invitationCode: string) => {
|
||||||
console.log('=== getTeacherDataByInvitationCode 被调用 ===')
|
console.log('=== getTeacherDataByInvitationCode 被调用 ===')
|
||||||
console.log('invitationCode:', invitationCode)
|
console.log('invitationCode:', invitationCode)
|
||||||
try {
|
try {
|
||||||
const res = await getTeacherInfo({ invitationCode: invitationCode })
|
console.log('开始调用 getTeacherInfo...')
|
||||||
console.log('getTeacherInfo 返回:', res)
|
const res = await getTeacherInfo({ invitation_code: invitationCode })
|
||||||
|
console.log('getTeacherInfo 完整返回:', JSON.stringify(res))
|
||||||
|
console.log('getTeacherInfo res.code:', res.code)
|
||||||
|
console.log('getTeacherInfo res.data:', res.data)
|
||||||
if (res.code === 1 && res.data) {
|
if (res.code === 1 && res.data) {
|
||||||
|
console.log('res.data.teacher_name:', res.data.teacher_name)
|
||||||
|
console.log('res.data.teacher_id:', res.data.teacher_id)
|
||||||
formData.teacher = res.data.teacher_name
|
formData.teacher = res.data.teacher_name
|
||||||
formData.recruitmentTeacherId = res.data.teacher_id
|
formData.recruitmentTeacherId = res.data.teacher_id
|
||||||
|
console.log('赋值后 formData.teacher:', formData.teacher)
|
||||||
|
console.log('赋值后 formData.recruitmentTeacherId:', formData.recruitmentTeacherId)
|
||||||
|
} else {
|
||||||
|
console.log('res.code !== 1 或 res.data 为空')
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取老师信息失败:', error)
|
console.error('获取老师信息失败:', error)
|
||||||
|
|
@ -460,13 +478,28 @@ onMounted(() => {
|
||||||
})
|
})
|
||||||
|
|
||||||
onLoad((options: any) => {
|
onLoad((options: any) => {
|
||||||
console.log('=== 预报名页面 onLoad ===')
|
console.log('=== 预报名页面 onLoad 被触发 ===')
|
||||||
console.log('options:', options)
|
console.log('options:', options)
|
||||||
|
|
||||||
if (options.teacherId) {
|
if (options.teacherId) {
|
||||||
getTeacherData(options.teacherId)
|
getTeacherData(options.teacherId)
|
||||||
|
} else if (options.id) {
|
||||||
|
// 二维码扫码跳转可能使用 id 参数
|
||||||
|
getTeacherData(options.id)
|
||||||
} else if (options.invitationCode) {
|
} else if (options.invitationCode) {
|
||||||
getTeacherDataByInvitationCode(options.invitationCode)
|
getTeacherDataByInvitationCode(options.invitationCode)
|
||||||
|
} else if (options.scene) {
|
||||||
|
const invitationCode = decodeURIComponent(options.scene)
|
||||||
|
getTeacherDataByInvitationCode(invitationCode)
|
||||||
|
} else {
|
||||||
|
const cachedCode = cache.get('INVITATION_CODE')
|
||||||
|
if (cachedCode) {
|
||||||
|
console.log('从缓存中获取到 INVITATION_CODE:', cachedCode)
|
||||||
|
cache.remove('INVITATION_CODE')
|
||||||
|
getTeacherDataByInvitationCode(cachedCode)
|
||||||
|
} else {
|
||||||
|
console.log('没有获取到任何参数或缓存')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -465,29 +465,27 @@ onShow(async () => {
|
||||||
|
|
||||||
if (isLogin.value && userInfo.value) {
|
if (isLogin.value && userInfo.value) {
|
||||||
console.log('条件满足,开始获取教师信息')
|
console.log('条件满足,开始获取教师信息')
|
||||||
console.log('userInfo.value.id:', userInfo.value.id)
|
console.log('userInfo.value.account:', userInfo.value.account)
|
||||||
// 获取教师信息
|
// 获取教师信息
|
||||||
let teacherIdForQrcode: number | undefined = undefined
|
let teacherIdForQrcode: number | undefined = undefined
|
||||||
try {
|
try {
|
||||||
console.log('准备调用 getTeacherInfo, 参数:', { id: userInfo.value.id })
|
console.log('准备调用 getTeacherInfo, 参数:', { teacher_code: userInfo.value.account })
|
||||||
const teacherRes = await getTeacherInfo({ id: userInfo.value.id })
|
const teacherRes = await getTeacherInfo({ teacher_code: userInfo.value.account })
|
||||||
console.log('getTeacherInfo 返回:', teacherRes)
|
console.log('getTeacherInfo 返回:', teacherRes)
|
||||||
console.log('teacherRes 类型:', typeof teacherRes)
|
console.log('teacherRes 类型:', typeof teacherRes)
|
||||||
console.log('teacherRes.code:', teacherRes?.code)
|
console.log('teacherRes.code:', teacherRes?.code)
|
||||||
console.log('teacherRes.data:', teacherRes?.data)
|
console.log('teacherRes.data:', teacherRes?.data)
|
||||||
// 后端返回格式: { code: 1, msg: '成功', data: { teacherId, teacherName, ... } }
|
|
||||||
if (teacherRes && teacherRes.code === 1 && teacherRes.data) {
|
if (teacherRes && teacherRes.code === 1 && teacherRes.data) {
|
||||||
const teacherData = teacherRes.data
|
const teacherData = teacherRes.data
|
||||||
console.log('teacherData:', teacherData)
|
console.log('teacherData:', teacherData)
|
||||||
console.log('teacherData.teacherId:', teacherData.teacherId)
|
console.log('teacherData.teacher_id:', teacherData.teacher_id)
|
||||||
// 将教师信息合并到 userInfo
|
userInfo.value.teacherId = teacherData.teacher_id
|
||||||
userInfo.value.teacherId = teacherData.teacherId
|
teacherIdForQrcode = teacherData.teacher_id
|
||||||
teacherIdForQrcode = teacherData.teacherId
|
currentTeacherId.value = teacherData.teacher_id
|
||||||
currentTeacherId.value = teacherData.teacherId
|
console.log('设置 teacherId:', teacherData.teacher_id)
|
||||||
console.log('设置 teacherId:', teacherData.teacherId)
|
console.log('教师姓名:', teacherData.teacher_name)
|
||||||
console.log('教师姓名:', teacherData.teacherName)
|
console.log('学院:', teacherData.college_name)
|
||||||
console.log('学院:', teacherData.collegeName)
|
console.log('二维码URL:', teacherData.qrcode_url)
|
||||||
console.log('二维码URL:', teacherData.qrcodeUrl)
|
|
||||||
} else {
|
} else {
|
||||||
console.log('获取教师信息失败或返回格式异常:', teacherRes)
|
console.log('获取教师信息失败或返回格式异常:', teacherRes)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,9 @@ const requestHooks: RequestHooks = {
|
||||||
const { urlPrefix, baseUrl, withToken, isAuth } = config
|
const { urlPrefix, baseUrl, withToken, isAuth } = config
|
||||||
options.header = options.header ?? {}
|
options.header = options.header ?? {}
|
||||||
|
|
||||||
|
// 设置默认 Content-Type
|
||||||
|
options.header['Content-Type'] = options.header['Content-Type'] || 'application/json'
|
||||||
|
|
||||||
console.log('【Request拦截器】原始请求URL:', options.url)
|
console.log('【Request拦截器】原始请求URL:', options.url)
|
||||||
console.log('【Request拦截器】urlPrefix:', urlPrefix)
|
console.log('【Request拦截器】urlPrefix:', urlPrefix)
|
||||||
console.log('【Request拦截器】baseUrl:', baseUrl)
|
console.log('【Request拦截器】baseUrl:', baseUrl)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue