注册 openId 没有获取调整
This commit is contained in:
parent
f0c85a60f9
commit
8231066bf5
30
src/App.vue
30
src/App.vue
@ -1,12 +1,42 @@
|
||||
<script setup lang="ts">
|
||||
import {onHide, onLaunch, onShow} from "@dcloudio/uni-app";
|
||||
import {useDataStore} from "@/store/modules/data";
|
||||
|
||||
onLaunch(() => {
|
||||
console.log("App Launch");
|
||||
|
||||
// #ifdef H5
|
||||
// 作为备用方案:从URL获取参数并保存到 global
|
||||
try {
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
const openId = urlParams.get('openId');
|
||||
const menu = urlParams.get('menu');
|
||||
const type = urlParams.get('type');
|
||||
const profilePhoto = urlParams.get('profilePhoto');
|
||||
|
||||
if (openId) {
|
||||
const {setGlobal, getGlobal} = useDataStore();
|
||||
// 只在 global 还没有 openId 时才保存(避免覆盖已有数据)
|
||||
if (!getGlobal.openId) {
|
||||
setGlobal({
|
||||
openId,
|
||||
menu,
|
||||
type: type ? parseInt(type) : 2,
|
||||
profilePhoto
|
||||
});
|
||||
console.log('App.vue 保存 URL 参数到 global:', {openId, menu, type, profilePhoto});
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('App.vue 处理 URL 参数失败:', error);
|
||||
}
|
||||
// #endif
|
||||
});
|
||||
|
||||
onShow(() => {
|
||||
console.log("App Show");
|
||||
});
|
||||
|
||||
onHide(() => {
|
||||
console.log("App Hide");
|
||||
});
|
||||
|
||||
@ -4,11 +4,6 @@
|
||||
<view class="header-section">
|
||||
<view class="header-gradient"></view>
|
||||
|
||||
<!-- 退出按钮 -->
|
||||
<view class="logout-btn" @click="handleLogout">
|
||||
<text class="logout-text">退出</text>
|
||||
</view>
|
||||
|
||||
<!-- 老师信息 -->
|
||||
<view class="teacher-info">
|
||||
<view class="teacher-avatar">
|
||||
@ -843,25 +838,6 @@ defineExpose({
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
// 退出按钮
|
||||
.logout-btn {
|
||||
position: absolute;
|
||||
top: 40rpx;
|
||||
right: 30rpx;
|
||||
z-index: 3;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 20rpx;
|
||||
padding: 10rpx 20rpx;
|
||||
border: 1px solid rgba(255, 255, 255, 0.3);
|
||||
backdrop-filter: blur(10px);
|
||||
|
||||
.logout-text {
|
||||
color: #ffffff;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
// 老师信息
|
||||
.teacher-info {
|
||||
display: flex;
|
||||
|
||||
@ -96,6 +96,18 @@ function goByJs(js: any) {
|
||||
onLoad(async (data: any) => {
|
||||
console.log('launchPage onLoad - 接收到的参数:', data);
|
||||
if (data && data.openId) {
|
||||
// ⭐ 先保存参数到 global,确保后续页面可以获取
|
||||
setGlobal({
|
||||
openId: data.openId,
|
||||
menu: data.menu,
|
||||
type: data.type || 2, // 默认为教师端
|
||||
profilePhoto: data.profilePhoto,
|
||||
qdId: data.qdId,
|
||||
rqgqtime: data.rqgqtime,
|
||||
timestampqd: data.timestampqd
|
||||
});
|
||||
console.log('已保存参数到 global:', { openId: data.openId, type: data.type });
|
||||
|
||||
try {
|
||||
const res = await checkOpenId({
|
||||
openId: data.openId,
|
||||
|
||||
@ -111,7 +111,7 @@ const formData = reactive({
|
||||
loginName: "",
|
||||
phone: "",
|
||||
code: "",
|
||||
avatarUrl: "",
|
||||
avatarUrl: getGlobal.profilePhoto || "", // ⭐ 从微信获取的头像
|
||||
openId: getGlobal.openId,
|
||||
appCode: getGlobal.type == 1 ? "ZB" : "JS",
|
||||
});
|
||||
|
||||
@ -146,25 +146,21 @@
|
||||
</view>
|
||||
|
||||
<view class="info-card list-item-card">
|
||||
<uni-datetime-picker type="datetime" v-model="formData.startTime">
|
||||
<view class="list-item-row">
|
||||
<text class="list-label">开始时间</text>
|
||||
<view class="list-value">
|
||||
<text>{{ formData.startTime || "请选择" }}</text>
|
||||
<uni-icons type="right" size="16" color="#999"></uni-icons>
|
||||
</view>
|
||||
<view class="list-item-row" @click="startTimePicker?.open()">
|
||||
<text class="list-label">开始时间</text>
|
||||
<view class="list-value">
|
||||
<text :class="{ placeholder: !formData.startTime }">{{ formData.startTime || "请选择" }}</text>
|
||||
<uni-icons type="right" size="16" color="#999"></uni-icons>
|
||||
</view>
|
||||
</uni-datetime-picker>
|
||||
</view>
|
||||
|
||||
<uni-datetime-picker type="datetime" v-model="formData.endTime">
|
||||
<view class="list-item-row no-border">
|
||||
<text class="list-label">结束时间</text>
|
||||
<view class="list-value">
|
||||
<text>{{ formData.endTime || "请选择" }}</text>
|
||||
<uni-icons type="right" size="16" color="#999"></uni-icons>
|
||||
</view>
|
||||
<view class="list-item-row no-border" @click="endTimePicker?.open()">
|
||||
<text class="list-label">结束时间</text>
|
||||
<view class="list-value">
|
||||
<text :class="{ placeholder: !formData.endTime }">{{ formData.endTime || "请选择" }}</text>
|
||||
<uni-icons type="right" size="16" color="#999"></uni-icons>
|
||||
</view>
|
||||
</uni-datetime-picker>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
@ -230,6 +226,22 @@
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 自定义时间选择器 -->
|
||||
<DatetimePicker
|
||||
ref="startTimePicker"
|
||||
:value="formData.startTime || new Date().getTime()"
|
||||
mode="datetime"
|
||||
title="选择开始时间"
|
||||
@confirm="handleStartTimeConfirm"
|
||||
/>
|
||||
<DatetimePicker
|
||||
ref="endTimePicker"
|
||||
:value="formData.endTime || new Date().getTime()"
|
||||
mode="datetime"
|
||||
title="选择结束时间"
|
||||
@confirm="handleEndTimeConfirm"
|
||||
/>
|
||||
</BasicLayout>
|
||||
</template>
|
||||
|
||||
@ -243,6 +255,7 @@ import { imagUrl } from "@/utils";
|
||||
import { mobilejlstudentListApi, jlFindByIdApi, jlSaveApi } from "@/api/base/jlApi";
|
||||
import { findAllNjBjTree } from "@/api/base/server";
|
||||
import { useUserStore } from "@/store/modules/user";
|
||||
import DatetimePicker from "@/components/BasicPicker/TimePicker/DatetimePicker.vue";
|
||||
|
||||
interface Attachment {
|
||||
name: string;
|
||||
@ -272,6 +285,11 @@ interface FormData {
|
||||
|
||||
const noticeId = ref<string | null>(null);
|
||||
const isLoadingStudents = ref(false);
|
||||
|
||||
// 自定义时间选择器控制
|
||||
const startTimePicker = ref<any>(null);
|
||||
const endTimePicker = ref<any>(null);
|
||||
|
||||
const formData = reactive<FormData>({
|
||||
title: "",
|
||||
content: "",
|
||||
@ -1094,6 +1112,15 @@ const publishNotice = async () => {
|
||||
};
|
||||
|
||||
|
||||
// 自定义时间选择器确认事件处理
|
||||
const handleStartTimeConfirm = (e: any) => {
|
||||
formData.startTime = formatDate(e.value);
|
||||
};
|
||||
|
||||
const handleEndTimeConfirm = (e: any) => {
|
||||
formData.endTime = formatDate(e.value);
|
||||
};
|
||||
|
||||
// 监听标题变化,自动更新回执说明
|
||||
watch(() => formData.title, (newTitle) => {
|
||||
if (formData.signatureRequired && newTitle) {
|
||||
|
||||
@ -138,6 +138,8 @@ import { ref, reactive, onMounted } from "vue";
|
||||
import { onShow, onLoad } from "@dcloudio/uni-app";
|
||||
import { useUserStore } from "@/store/modules/user";
|
||||
|
||||
const { getJs, getUser } = useUserStore();
|
||||
|
||||
interface QdItem {
|
||||
id: string;
|
||||
qdmc: string; // 签到名称
|
||||
@ -152,15 +154,35 @@ interface QdItem {
|
||||
qdry: string; // 签到人员
|
||||
}
|
||||
|
||||
// 获取当月第一天和最后一天
|
||||
const getCurrentMonthRange = () => {
|
||||
const now = new Date();
|
||||
const year = now.getFullYear();
|
||||
const month = now.getMonth();
|
||||
|
||||
// 当月第一天
|
||||
const firstDay = new Date(year, month, 1);
|
||||
const startTime = `${year}-${String(month + 1).padStart(2, '0')}-01`;
|
||||
|
||||
// 当月最后一天
|
||||
const lastDay = new Date(year, month + 1, 0);
|
||||
const endTime = `${year}-${String(month + 1).padStart(2, '0')}-${String(lastDay.getDate()).padStart(2, '0')}`;
|
||||
|
||||
return { startTime, endTime };
|
||||
};
|
||||
|
||||
// 页面参数
|
||||
const pageParams = ref({
|
||||
qdlx: ''
|
||||
});
|
||||
|
||||
// 获取默认时间范围
|
||||
const defaultRange = getCurrentMonthRange();
|
||||
|
||||
// 搜索表单
|
||||
const searchForm = reactive({
|
||||
startTime: '',
|
||||
endTime: ''
|
||||
startTime: defaultRange.startTime,
|
||||
endTime: defaultRange.endTime
|
||||
});
|
||||
|
||||
// 数据列表
|
||||
@ -187,8 +209,9 @@ const handleSearch = () => {
|
||||
|
||||
// 重置搜索
|
||||
const handleReset = () => {
|
||||
searchForm.startTime = '';
|
||||
searchForm.endTime = '';
|
||||
const resetRange = getCurrentMonthRange();
|
||||
searchForm.startTime = resetRange.startTime;
|
||||
searchForm.endTime = resetRange.endTime;
|
||||
getQdList();
|
||||
};
|
||||
|
||||
@ -197,17 +220,28 @@ const getQdList = async () => {
|
||||
isLoading.value = true;
|
||||
try {
|
||||
const queryParams: any = {
|
||||
qdkstime: searchForm.startTime,
|
||||
qdjstime: searchForm.endTime,
|
||||
page: 1,
|
||||
rows: 100
|
||||
};
|
||||
|
||||
// 添加创建时间范围查询
|
||||
if (searchForm.startTime) {
|
||||
queryParams.createdTimeStart = searchForm.startTime + ' 00:00:00';
|
||||
}
|
||||
if (searchForm.endTime) {
|
||||
queryParams.createdTimeEnd = searchForm.endTime + ' 23:59:59';
|
||||
}
|
||||
|
||||
// 如果有qdlx参数,添加到查询条件中
|
||||
if (pageParams.value.qdlx) {
|
||||
queryParams.qdlx = pageParams.value.qdlx;
|
||||
}
|
||||
|
||||
// 如果不是 admin 用户,则传递当前教师ID进行过滤
|
||||
const empCode = getUser?.empCode || '';
|
||||
if (empCode !== 'admin') {
|
||||
queryParams.jsId = getJs.id; // 当前教师ID
|
||||
}
|
||||
|
||||
const res = await qdFindPageApi(queryParams);
|
||||
dataList.value = res.rows || [];
|
||||
} catch (error) {
|
||||
|
||||
@ -116,7 +116,21 @@
|
||||
|
||||
<!-- 签到打卡开始时间 -->
|
||||
<view class="info-card list-item-card">
|
||||
<uni-datetime-picker type="datetime" v-model="formData.dkkstime">
|
||||
<!-- iOS使用自定义时间选择器 -->
|
||||
<view v-if="isIOS" class="list-item-row" @click="dkkstimePicker?.open()">
|
||||
<view class="list-label-container">
|
||||
<text class="required-asterisk">*</text>
|
||||
<text class="list-label">签到开始</text>
|
||||
</view>
|
||||
<view class="list-value">
|
||||
<text :class="{ placeholder: !formData.dkkstime }">
|
||||
{{ formData.dkkstime || '请选择签到打卡开始时间' }}
|
||||
</text>
|
||||
<uni-icons type="right" size="16" color="#999"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 非iOS使用原生时间选择器 -->
|
||||
<uni-datetime-picker v-else type="datetime" v-model="formData.dkkstime">
|
||||
<view class="list-item-row">
|
||||
<view class="list-label-container">
|
||||
<text class="required-asterisk">*</text>
|
||||
@ -134,7 +148,21 @@
|
||||
|
||||
<!-- 签到开始时间 -->
|
||||
<view class="info-card list-item-card">
|
||||
<uni-datetime-picker type="datetime" v-model="formData.qdkstime">
|
||||
<!-- iOS使用自定义时间选择器 -->
|
||||
<view v-if="isIOS" class="list-item-row" @click="qdkstimePicker?.open()">
|
||||
<view class="list-label-container">
|
||||
<text class="required-asterisk">*</text>
|
||||
<text class="list-label">会议开始</text>
|
||||
</view>
|
||||
<view class="list-value">
|
||||
<text :class="{ placeholder: !formData.qdkstime }">
|
||||
{{ formData.qdkstime || '请选择会议开始时间' }}
|
||||
</text>
|
||||
<uni-icons type="right" size="16" color="#999"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 非iOS使用原生时间选择器 -->
|
||||
<uni-datetime-picker v-else type="datetime" v-model="formData.qdkstime">
|
||||
<view class="list-item-row">
|
||||
<view class="list-label-container">
|
||||
<text class="required-asterisk">*</text>
|
||||
@ -152,7 +180,21 @@
|
||||
|
||||
<!-- 签到结束时间 -->
|
||||
<view class="info-card list-item-card">
|
||||
<uni-datetime-picker type="datetime" v-model="formData.qdjstime">
|
||||
<!-- iOS使用自定义时间选择器 -->
|
||||
<view v-if="isIOS" class="list-item-row" @click="qdjstimePicker?.open()">
|
||||
<view class="list-label-container">
|
||||
<text class="required-asterisk">*</text>
|
||||
<text class="list-label">会议结束</text>
|
||||
</view>
|
||||
<view class="list-value">
|
||||
<text :class="{ placeholder: !formData.qdjstime }">
|
||||
{{ formData.qdjstime || '请选择会议结束时间' }}
|
||||
</text>
|
||||
<uni-icons type="right" size="16" color="#999"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 非iOS使用原生时间选择器 -->
|
||||
<uni-datetime-picker v-else type="datetime" v-model="formData.qdjstime">
|
||||
<view class="list-item-row">
|
||||
<view class="list-label-container">
|
||||
<text class="required-asterisk">*</text>
|
||||
@ -238,6 +280,32 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- iOS自定义时间选择器 -->
|
||||
<DatetimePicker
|
||||
v-if="isIOS"
|
||||
ref="dkkstimePicker"
|
||||
:value="formData.dkkstime || new Date().getTime()"
|
||||
mode="datetime"
|
||||
title="选择签到开始时间"
|
||||
@confirm="handleDkkstimeConfirm"
|
||||
/>
|
||||
<DatetimePicker
|
||||
v-if="isIOS"
|
||||
ref="qdkstimePicker"
|
||||
:value="formData.qdkstime || new Date().getTime()"
|
||||
mode="datetime"
|
||||
title="选择会议开始时间"
|
||||
@confirm="handleQdkstimeConfirm"
|
||||
/>
|
||||
<DatetimePicker
|
||||
v-if="isIOS"
|
||||
ref="qdjstimePicker"
|
||||
:value="formData.qdjstime || new Date().getTime()"
|
||||
mode="datetime"
|
||||
title="选择会议结束时间"
|
||||
@confirm="handleQdjstimeConfirm"
|
||||
/>
|
||||
|
||||
<template #bottom>
|
||||
<view class="bottom-actions">
|
||||
<button class="action-btn cancel-btn" @click="handleCancel">
|
||||
@ -260,9 +328,14 @@ import { kccyFindByKcjbIdApi } from "@/api/base/kccyApi";
|
||||
import { jyjbFindPageApi } from "@/api/base/jyjbApi";
|
||||
import { jycyFindByJyjbIdApi } from "@/api/base/jycyApi";
|
||||
import { useUserStore } from "@/store/modules/user";
|
||||
import { getPlatform } from "@/utils/uniapp";
|
||||
import DatetimePicker from "@/components/BasicPicker/TimePicker/DatetimePicker.vue";
|
||||
|
||||
const { getJs } = useUserStore();
|
||||
|
||||
// 检测是否为iOS设备
|
||||
const isIOS = getPlatform() === 'ios';
|
||||
|
||||
interface TeacherInfo {
|
||||
id: string;
|
||||
jsxm: string;
|
||||
@ -293,6 +366,11 @@ const isPublishing = ref(false);
|
||||
const maxDisplayCount = 5;
|
||||
const showTeacherListModal = ref(false); // 控制教师列表弹窗显示
|
||||
|
||||
// iOS自定义时间选择器控制
|
||||
const dkkstimePicker = ref<any>(null);
|
||||
const qdkstimePicker = ref<any>(null);
|
||||
const qdjstimePicker = ref<any>(null);
|
||||
|
||||
// 课程相关数据
|
||||
const courseOptions = ref<CourseInfo[]>([]);
|
||||
const selectedCourse = ref<CourseInfo | null>(null);
|
||||
@ -561,7 +639,7 @@ const handleCancel = () => {
|
||||
};
|
||||
|
||||
// 格式化时间为后台期望的格式
|
||||
const formatDateTime = (dateTime: string) => {
|
||||
const formatDateTime = (dateTime: string | number) => {
|
||||
if (!dateTime) return '';
|
||||
const date = new Date(dateTime);
|
||||
const year = date.getFullYear();
|
||||
@ -573,6 +651,19 @@ const formatDateTime = (dateTime: string) => {
|
||||
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
||||
};
|
||||
|
||||
// iOS自定义时间选择器确认事件处理
|
||||
const handleDkkstimeConfirm = (e: any) => {
|
||||
formData.dkkstime = formatDateTime(e.value);
|
||||
};
|
||||
|
||||
const handleQdkstimeConfirm = (e: any) => {
|
||||
formData.qdkstime = formatDateTime(e.value);
|
||||
};
|
||||
|
||||
const handleQdjstimeConfirm = (e: any) => {
|
||||
formData.qdjstime = formatDateTime(e.value);
|
||||
};
|
||||
|
||||
const handlePublish = async () => {
|
||||
const requestStartTime = new Date().toISOString();
|
||||
console.log('=== handlePublish 开始 ===', requestStartTime);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user