@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Eslint config file
|
||||||
|
* Documentation: https://eslint.org/docs/user-guide/configuring/
|
||||||
|
* Install the Eslint extension before using this feature.
|
||||||
|
*/
|
||||||
|
module.exports = {
|
||||||
|
env: {
|
||||||
|
es6: true,
|
||||||
|
browser: true,
|
||||||
|
node: true,
|
||||||
|
},
|
||||||
|
ecmaFeatures: {
|
||||||
|
modules: true,
|
||||||
|
},
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 2018,
|
||||||
|
sourceType: 'module',
|
||||||
|
},
|
||||||
|
globals: {
|
||||||
|
wx: true,
|
||||||
|
App: true,
|
||||||
|
Page: true,
|
||||||
|
getCurrentPages: true,
|
||||||
|
getApp: true,
|
||||||
|
Component: true,
|
||||||
|
requirePlugin: true,
|
||||||
|
requireMiniProgram: true,
|
||||||
|
},
|
||||||
|
// extends: 'eslint:recommended',
|
||||||
|
rules: {},
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
// app.js
|
||||||
|
App({
|
||||||
|
onLaunch() {
|
||||||
|
// 展示本地存储能力
|
||||||
|
const logs = wx.getStorageSync('logs') || []
|
||||||
|
logs.unshift(Date.now())
|
||||||
|
wx.setStorageSync('logs', logs)
|
||||||
|
|
||||||
|
// 登录
|
||||||
|
wx.login({
|
||||||
|
success: res => {
|
||||||
|
// 发送 res.code 到后台换取 openId, sessionKey, unionId
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
globalData: {
|
||||||
|
students: [
|
||||||
|
{ name: '张三', avatar: '/assets/img/Fairy/fairy (1).png', score:19, id:1000, index:1 },
|
||||||
|
{ name: '李四', avatar: '/assets/img/Fairy/fairy (2).png', score:17, id:1001, index:2 },
|
||||||
|
{ name: '王五', avatar: '/assets/img/Fairy/fairy (3).png', score:14, id:1002, index:3 },
|
||||||
|
{ name: '赵六', avatar: '/assets/img/Fairy/fairy (4).png', score:12, id:1003, index:4 },
|
||||||
|
{ name: '周无', avatar: '/assets/img/Fairy/fairy (5).png', score:12, id:1004, index:5 },
|
||||||
|
{ name: '程七', avatar: '/assets/img/Fairy/fairy (6).png', score:9, id:1005, index:6 },
|
||||||
|
{ name: '刘大大', avatar: '/assets/img/Fairy/fairy (7).png', score:9, id:1006, index:7 },
|
||||||
|
{ name: '王乐康', avatar: '/assets/img/Fairy/fairy (8).png', score:8, id:1007, index:8 },
|
||||||
|
{ name: '段问蕾', avatar: '/assets/img/Fairy/fairy (9).png', score:7, id:1008, index:9 },
|
||||||
|
{ name: '贾伦', avatar: '/assets/img/Fairy/fairy (10).png', score:4, id:1009, index:10 },
|
||||||
|
{ name: '李书易', avatar: '/assets/img/Fairy/fairy (11).png', score:3, id:1010, index:11 },
|
||||||
|
{ name: '胡心', avatar: '/assets/img/Fairy/fairy (12).png', score:1, id:1011, index:12 },
|
||||||
|
{ name: '李天泽', avatar: '/assets/img/Fairy/fairy (13).png', score:-1, id:1012, index:13 },
|
||||||
|
{ name: '列亿枫', avatar: '/assets/img/Fairy/fairy (14).png', score:0, id:1013, index:14 },
|
||||||
|
{ name: '周乐心', avatar: '/assets/img/Fairy/fairy (15).png', score:-2, id:1014, index:15 },
|
||||||
|
{ name: '胡小小', avatar: '/assets/img/Fairy/fairy (16).png', score:2, id:1015, index:16 },
|
||||||
|
{ name: '王滢', avatar: '/assets/img/Fairy/fairy (17).png', score:1, id:1016, index:17 },
|
||||||
|
{ name: "傅彭", avatar: '/assets/img/Fairy/fairy (18).png', score:21, id:1017, index:18 },
|
||||||
|
{ name: "丁璧容", avatar: '/assets/img/Fairy/fairy (19).png', score:3, id:1018, index:19 },
|
||||||
|
{ name: "赵丽", avatar: '/assets/img/Fairy/fairy (20).png', score:25, id:1019, index:20 },
|
||||||
|
{ name: "李恺", avatar: '/assets/img/Fairy/fairy (21).png', score:9, id:1020, index:21 },
|
||||||
|
{ name: "王笑天", avatar: '/assets/img/Fairy/fairy (22).png', score:8, id:1021, index:22 },
|
||||||
|
{ name: "庞蕊", avatar: '/assets/img/Fairy/fairy (23).png', score:0, id:1022, index:23 },
|
||||||
|
{ name: "李四", avatar: '/assets/img/Fairy/fairy (24).png', score:0, id:1023, index:24 },
|
||||||
|
{ name: "吴无五", avatar: '/assets/img/Fairy/fairy (25).png', score:0, id:1024, index:25 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
})
|
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"entryPagePath": "pages/lodding/lodding",
|
||||||
|
"pages": [
|
||||||
|
"pages/lodding/lodding",
|
||||||
|
"pages/AddClass/AddClass",
|
||||||
|
"pages/RollClass/RollClass",
|
||||||
|
"pages/setting/setting",
|
||||||
|
"pages/studentList/studentList",
|
||||||
|
"pages/studentRanking/studentRanking",
|
||||||
|
"pages/startNaming/startNaming"
|
||||||
|
],
|
||||||
|
"window": {
|
||||||
|
"navigationBarTextStyle": "black",
|
||||||
|
"navigationBarTitleText": "学生点名系统",
|
||||||
|
"navigationBarBackgroundColor": "#ffffff"
|
||||||
|
},
|
||||||
|
|
||||||
|
"tabBar": {
|
||||||
|
"color": "#000000",
|
||||||
|
"selectedColor": "#0F40F5",
|
||||||
|
"backgroundColor": "#ffffff",
|
||||||
|
"borderStyle": "black",
|
||||||
|
"list": [
|
||||||
|
{
|
||||||
|
"pagePath": "pages/AddClass/AddClass",
|
||||||
|
"text": "班级",
|
||||||
|
"iconPath": "/assets/img/nav/nav1-1.png",
|
||||||
|
"selectedIconPath": "/assets/img/nav/nav1-2.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pagePath": "pages/RollClass/RollClass",
|
||||||
|
"text": "课堂",
|
||||||
|
"iconPath": "/assets/img/nav/nav2-1.png",
|
||||||
|
"selectedIconPath": "/assets/img/nav/nav2-2.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pagePath": "pages/setting/setting",
|
||||||
|
"text": "设置",
|
||||||
|
"iconPath": "/assets/img/nav/nav3-1.png",
|
||||||
|
"selectedIconPath": "/assets/img/nav/nav3-2.png"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
"style": "v2",
|
||||||
|
"componentFramework": "glass-easel",
|
||||||
|
"sitemapLocation": "sitemap.json",
|
||||||
|
"lazyCodeLoading": "requiredComponents"
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
/**app.wxss**/
|
||||||
|
.container {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 200rpx 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 264 B |
After Width: | Height: | Size: 92 KiB |
After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 355 KiB |
After Width: | Height: | Size: 346 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 84 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 71 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 212 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 7.5 KiB |
After Width: | Height: | Size: 9.2 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 7.7 KiB |
After Width: | Height: | Size: 7.8 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 7.3 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 594 B |
After Width: | Height: | Size: 609 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 9.0 KiB |
After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 1.8 KiB |
@ -0,0 +1,136 @@
|
|||||||
|
Page({
|
||||||
|
onCardTap: function() {
|
||||||
|
wx.switchTab({
|
||||||
|
url: '/pages/RollClass/RollClass',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
data: {
|
||||||
|
cards: [], // 班级数据数组,存储当前已有的班级
|
||||||
|
modalVisible1: false, // 控制浮窗1的显隐状态
|
||||||
|
modalVisible2: false, // 控制浮窗2的显隐状态
|
||||||
|
modalVisible3: false, // 控制浮窗3的显隐状态
|
||||||
|
modalVisible4: false, // 控制浮窗4的显隐状态
|
||||||
|
className: '', // 存储输入的班级名称(浮窗1)
|
||||||
|
fileName: '' // 存储选择的文件名(浮窗2)
|
||||||
|
},
|
||||||
|
|
||||||
|
// 点击加号按钮后触发,显示浮窗
|
||||||
|
onAddCard() {
|
||||||
|
this.setData({
|
||||||
|
modalVisible1: true // 设置浮窗可见
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 处理输入框的输入事件,更新班级名称
|
||||||
|
onInput(e) {
|
||||||
|
this.setData({
|
||||||
|
className: e.detail.value // 更新输入的班级名称为用户输入
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 浮窗1确认按钮的点击事件处理
|
||||||
|
onConfirm1() {
|
||||||
|
this.setData({
|
||||||
|
modalVisible1: false, // 隐藏浮窗
|
||||||
|
modalVisible2: true //显示浮窗2
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 浮窗1取消按钮的点击事件处理
|
||||||
|
onCancel1() {
|
||||||
|
this.setData({
|
||||||
|
modalVisible1: false, // 隐藏浮窗
|
||||||
|
className: null // 重置输入框内容
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 浮窗2选择文件的处理函数
|
||||||
|
onSelectFile() {
|
||||||
|
wx.chooseMessageFile({
|
||||||
|
count: 1,
|
||||||
|
type: 'file',
|
||||||
|
success: (res) => {
|
||||||
|
const filePath = res.tempFiles[0].path; // 依然使用相对路径
|
||||||
|
this.setData({
|
||||||
|
fileName: filePath.split('/').pop() // 取文件名部分
|
||||||
|
});
|
||||||
|
console.log("选中的文件路径:", filePath); // 可以在这里使用相对路径进行后续处理
|
||||||
|
},
|
||||||
|
fail: (err) => {
|
||||||
|
console.error("选择文件失败:", err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 浮窗2确认按钮的点击事件处理
|
||||||
|
onConfirm2() {
|
||||||
|
// 处理确认逻辑
|
||||||
|
console.log('确认导入文件:', this.data.fileName);
|
||||||
|
this.setData({
|
||||||
|
modalVisible2: false, // 隐藏浮窗
|
||||||
|
fileName:null,
|
||||||
|
modalVisible3: true //显示浮窗3
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 浮窗2取消按钮的点击事件处理
|
||||||
|
onCancel2() {
|
||||||
|
this.setData({
|
||||||
|
modalVisible2: false, // 隐藏浮窗
|
||||||
|
className:null,
|
||||||
|
fileName: null // 清空选择的文件
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 浮窗3确认按钮的点击事件处理
|
||||||
|
onConfirm3() {
|
||||||
|
const { className, cards } = this.data;
|
||||||
|
|
||||||
|
// 检查班级名是否已存在
|
||||||
|
const classExists = cards.some(card => card.name === className);
|
||||||
|
|
||||||
|
if (classExists) {
|
||||||
|
// 如果班级名已经存在,弹出错误提示或进行其他处理
|
||||||
|
this.setData({
|
||||||
|
modalVisible3:false,
|
||||||
|
modalVisible4:true,
|
||||||
|
className:null,
|
||||||
|
fileName: null
|
||||||
|
});
|
||||||
|
return; // 结束函数执行
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建新班级对象
|
||||||
|
const newCard = {
|
||||||
|
name: className || '新课程', // 使用用户输入的班级名,如果为空则默认
|
||||||
|
studentCount: 30,
|
||||||
|
creationDate: new Date().toLocaleDateString() // 当前日期
|
||||||
|
};
|
||||||
|
|
||||||
|
// 更新数据状态
|
||||||
|
this.setData({
|
||||||
|
cards: [...cards, newCard], // 将新卡片加入数组
|
||||||
|
modalVisible3: false, // 隐藏浮窗
|
||||||
|
className:null,
|
||||||
|
fileName: null
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 浮窗3取消按钮的点击事件处理
|
||||||
|
onCancel3(){
|
||||||
|
this.setData({
|
||||||
|
modalVisible3:false,
|
||||||
|
className:null,
|
||||||
|
fileName: null
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
onCancel4(){
|
||||||
|
this.setData({
|
||||||
|
modalVisible4:false,
|
||||||
|
className:null,
|
||||||
|
fileName: null
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"navigationBarTitleText": "班级列表",
|
||||||
|
"navigationBarBackgroundColor": "#F5F8F9",
|
||||||
|
"backgroundColor": "#eeeeee",
|
||||||
|
"navigationBarTextStyle": "black",
|
||||||
|
"usingComponents": {}
|
||||||
|
}
|
@ -0,0 +1,180 @@
|
|||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start; /* 让元素从容器的顶部开始对齐 */
|
||||||
|
align-items: center;
|
||||||
|
height: 100vh;
|
||||||
|
background-color: #f5f8f9;
|
||||||
|
padding-top:20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.class-card {
|
||||||
|
background-color: #f5f8f9;
|
||||||
|
padding: 20rpx;
|
||||||
|
margin-top: 20rpx; /* 每个卡片上方的间距 */
|
||||||
|
border-radius: 20rpx;
|
||||||
|
box-shadow: 4rpx 4rpx 6rpx rgba(64, 149, 229, 0.85);
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
border: 2rpx solid rgba(29,70,157,1);
|
||||||
|
width: 600rpx;
|
||||||
|
height: 100rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.class-image{
|
||||||
|
width:80rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
margin-right: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.class-info{
|
||||||
|
white-space: pre;
|
||||||
|
flex:1; /* 意味着该元素可以占用容器中所有可用的空间。 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.class-name {
|
||||||
|
font-size: 36rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.class-details {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #888888;
|
||||||
|
display: flex; /* 使子元素以行内显示 */
|
||||||
|
gap:20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.arrow {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-button {
|
||||||
|
padding:0;
|
||||||
|
margin: 0;
|
||||||
|
flex:none;
|
||||||
|
position: fixed; /* 固定在视口 */
|
||||||
|
bottom: 75rpx; /* 距离底部20rpx */
|
||||||
|
right: 75rpx; /* 距离右侧20rpx */
|
||||||
|
width: 100rpx; /* 按钮宽度 */
|
||||||
|
height: 100rpx; /* 按钮高度 */
|
||||||
|
background-color: #f5f8f9; /*按钮颜色*/
|
||||||
|
border: none; /* 去掉默认边框 */
|
||||||
|
display:flex;
|
||||||
|
justify-content: center; /* 图片在按钮内部水平居中 */
|
||||||
|
align-items: center; /* 图片在按钮内部垂直居中 */
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 图片样式 */
|
||||||
|
.add-image {
|
||||||
|
width: 100rpx; /* 图片宽度 */
|
||||||
|
height: 100rpx; /* 图片高度 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 浮窗的覆盖层 通用 */
|
||||||
|
.modal {
|
||||||
|
position: fixed; /* 绝对定位以覆盖整个视口 */
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background-color: rgba(0, 0, 0, 0.5); /* 背景为半透明黑色 */
|
||||||
|
display: flex; /* 使用flex布局 */
|
||||||
|
justify-content: center; /* 居中对齐内容 */
|
||||||
|
align-items: center; /* 垂直居中对齐 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 浮窗内容 通用 */
|
||||||
|
.modal-content {
|
||||||
|
background-color: #4095e5; /* 浮窗的背景颜色 */
|
||||||
|
padding: 40rpx 20rpx; /* 内边距 */
|
||||||
|
border-radius: 20rpx; /* 圆角 */
|
||||||
|
width: 80%; /* 浮窗宽度为视口的80% */
|
||||||
|
max-width: 500rpx; /* 最大宽度为500rpx */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 浮窗标题 通用 */
|
||||||
|
.modal-title {
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 46rpx; /* 字体大小 */
|
||||||
|
margin-top: 30rpx;
|
||||||
|
margin-bottom: 30rpx;
|
||||||
|
text-shadow: 4rpx 4rpx 6rpx rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 输入框样式 */
|
||||||
|
.input-box {
|
||||||
|
width: 90%; /* 输入框宽度占满父容器 */
|
||||||
|
margin-top: 10rpx; /* 上方留出间隙 */
|
||||||
|
padding: 25rpx; /* 内边距 */
|
||||||
|
border: none; /* 去掉边框 */
|
||||||
|
border-bottom: 2rpx solid #fff; /* 底部边框 */
|
||||||
|
border-radius: 20rpx; /* 圆角 */
|
||||||
|
background-color: #fff; /* 背景颜色 */
|
||||||
|
color: black; /* 字体颜色 */
|
||||||
|
box-shadow: 4rpx 4rpx 6rpx rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 设置 placeholder 的颜色 */
|
||||||
|
.input-box::-webkit-input-placeholder {
|
||||||
|
color: #888888; /* 输入框班级名称的颜色 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 浮窗按钮容器 通用 */
|
||||||
|
.modal-buttons {
|
||||||
|
display: flex; /* 使用flex布局 */
|
||||||
|
justify-content: space-between; /* 按钮间隔均匀 */
|
||||||
|
margin-top: 20rpx; /* 上方留出空间 */
|
||||||
|
gap:50rpx; /* 设置按钮之间的间距 */
|
||||||
|
margin-left: 50rpx;
|
||||||
|
margin-right: 50rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 确认、取消按钮样式 通用 */
|
||||||
|
.confirm-button, .cancel-button {
|
||||||
|
background-color: white; /* 按钮背景颜色 */
|
||||||
|
color: #0014b7; /* 按钮文字颜色 */
|
||||||
|
flex: 1; /* 等宽 */
|
||||||
|
padding: 10rpx; /* 内边距 */
|
||||||
|
border: none; /* 去掉默认边框 */
|
||||||
|
border-radius: 20rpx; /* 圆角 */
|
||||||
|
margin-left: 10rpx; /* 按钮间距 */
|
||||||
|
box-shadow: 4rpx 4rpx 6rpx rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 文件选择部分 */
|
||||||
|
.file-selection {
|
||||||
|
display: flex; /* 使用flex布局 */
|
||||||
|
align-items: center; /* 垂直居中 */
|
||||||
|
margin-bottom: 10rpx; /* 底部留出一些间距 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 选择文件按钮样式 */
|
||||||
|
.select-file-button {
|
||||||
|
background-color: white; /* 按钮背景颜色 */
|
||||||
|
color: #0014b7; /* 按钮文字颜色 */
|
||||||
|
padding: 15rpx; /* 内边距 */
|
||||||
|
border: none; /* 去掉默认边框 */
|
||||||
|
font-size: 30rpx;
|
||||||
|
width: 200rpx;
|
||||||
|
border-radius: 20rpx; /* 圆角 */
|
||||||
|
margin-right: 20rpx; /* 按钮与文件名之间的间距 */
|
||||||
|
box-shadow: 4rpx 4rpx 6rpx rgba(0, 0, 0, 0.4);
|
||||||
|
box-sizing: border-box; /* 包含边距和内边距 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 文件名的显示样式 */
|
||||||
|
.file-name {
|
||||||
|
color: white; /* 文字颜色 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 分隔线样式 */
|
||||||
|
.divider {
|
||||||
|
height: 4rpx; /* 分隔线高度 */
|
||||||
|
background-color: #0014b7; /* 分隔线颜色 */
|
||||||
|
margin: 10rpx 0; /* 上下留出一些间距 */
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
Page({
|
||||||
|
onStudentList() {
|
||||||
|
wx.navigateTo({
|
||||||
|
url: '/pages/studentList/studentList',
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
onStudentRanking() {
|
||||||
|
wx.navigateTo({
|
||||||
|
url: '/pages/studentRanking/studentRanking',
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
onStartNaming() {
|
||||||
|
wx.navigateTo({
|
||||||
|
url: '/pages/startNaming/startNaming',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"navigationBarBackgroundColor": "#F5F8F9",
|
||||||
|
"navigationBarTitleText": "学生点名",
|
||||||
|
"usingComponents": {}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
<view class="container">
|
||||||
|
<view class="menu-item" bindtap="onStudentList">
|
||||||
|
<image class="icon" src="/assets/img/RollClass/RollClass1_4.png" mode="aspectFill" />
|
||||||
|
<text class="menu-text">学生名单</text>
|
||||||
|
<image class="additional-icon" src="/assets/img/RollClass/RollClass1_1.png" mode="aspectFill" />
|
||||||
|
<image class="arrow" src="/assets/img/setting/setting4.png" mode="aspectFill" />
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="menu-item" bindtap="onStudentRanking">
|
||||||
|
<image class="icon" src="/assets/img/RollClass/RollClass1_5.png" mode="aspectFill" />
|
||||||
|
<text class="menu-text">学生排名</text>
|
||||||
|
<image class="additional-icon" src="/assets/img/RollClass/RollClass1_2.png" mode="aspectFill" />
|
||||||
|
<image class="arrow" src="/assets/img/setting/setting4.png" mode="aspectFill" />
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="menu-item" bindtap="onStartNaming">
|
||||||
|
<image class="icon" src="/assets/img/RollClass/RollClass1_6.png" mode="aspectFill" />
|
||||||
|
<text class="menu-text">开始点名</text>
|
||||||
|
<image class="additional-icon" src="/assets/img/RollClass/RollClass1_3.png" mode="aspectFill" />
|
||||||
|
<image class="arrow" src="/assets/img/setting/setting4.png" mode="aspectFill" />
|
||||||
|
</view>
|
||||||
|
</view>
|
@ -0,0 +1,47 @@
|
|||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start; /* 让元素从容器的顶部开始对齐 */
|
||||||
|
align-items: center;
|
||||||
|
height: 100vh;
|
||||||
|
background-color: #f5f8f9;
|
||||||
|
padding-top:20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-item {
|
||||||
|
cursor: pointer; /* 鼠标悬停时显示为指针 */
|
||||||
|
background-color: #f5f8f9;
|
||||||
|
padding: 20rpx;
|
||||||
|
margin-top: 20rpx; /* 每个卡片上方的间距 */
|
||||||
|
border-radius: 20rpx;
|
||||||
|
box-shadow: 4rpx 4rpx 6rpx rgba(64, 149, 229, 0.85);
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid rgba(29,70,157,1);
|
||||||
|
width: 600rpx;
|
||||||
|
height: 100rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
width: 75rpx; /* 图标大小 */
|
||||||
|
height: 75rpx; /* 图标大小 */
|
||||||
|
margin-right: 10rpx; /* 图标与文本之间的间距 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-text {
|
||||||
|
font-size: 32rpx; /* 文本字体大小 */
|
||||||
|
font-weight: bold;
|
||||||
|
flex: 1; /* 使文本占据剩余空间 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.additional-icon {
|
||||||
|
width: 120rpx; /* 调整大小 */
|
||||||
|
height: 120rpx; /* 调整大小 */
|
||||||
|
margin-left: 20rpx; /* 添加间距 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.arrow {
|
||||||
|
width: 48rpx; /* 箭头图标大小 */
|
||||||
|
height: 48rpx; /* 箭头图标大小 */
|
||||||
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"usingComponents": {
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
<!--index.wxml-->
|
||||||
|
<scroll-view class="scrollarea" scroll-y type="list">
|
||||||
|
<view class="container">
|
||||||
|
<view class="userinfo">
|
||||||
|
<block wx:if="{{canIUseNicknameComp && !hasUserInfo}}">
|
||||||
|
<button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
|
||||||
|
<image class="avatar" src="{{userInfo.avatarUrl}}"></image>
|
||||||
|
</button>
|
||||||
|
<view class="nickname-wrapper">
|
||||||
|
<text class="nickname-label">昵称</text>
|
||||||
|
<input type="nickname" class="nickname-input" placeholder="请输入昵称" bind:change="onInputChange" />
|
||||||
|
</view>
|
||||||
|
</block>
|
||||||
|
<block wx:elif="{{!hasUserInfo}}">
|
||||||
|
<button wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile"> 获取头像昵称 </button>
|
||||||
|
<view wx:else> 请使用2.10.4及以上版本基础库 </view>
|
||||||
|
</block>
|
||||||
|
<block wx:else>
|
||||||
|
<image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
|
||||||
|
<text class="userinfo-nickname">{{userInfo.nickName}}</text>
|
||||||
|
</block>
|
||||||
|
</view>
|
||||||
|
<view class="usermotto">
|
||||||
|
<text class="user-motto">{{motto}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
@ -0,0 +1,62 @@
|
|||||||
|
/**index.wxss**/
|
||||||
|
page {
|
||||||
|
height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.scrollarea {
|
||||||
|
flex: 1;
|
||||||
|
overflow-y: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.userinfo {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
color: #aaa;
|
||||||
|
width: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.userinfo-avatar {
|
||||||
|
overflow: hidden;
|
||||||
|
width: 128rpx;
|
||||||
|
height: 128rpx;
|
||||||
|
margin: 20rpx;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.usermotto {
|
||||||
|
margin-top: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatar-wrapper {
|
||||||
|
padding: 0;
|
||||||
|
width: 56px !important;
|
||||||
|
border-radius: 8px;
|
||||||
|
margin-top: 40px;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatar {
|
||||||
|
display: block;
|
||||||
|
width: 56px;
|
||||||
|
height: 56px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nickname-wrapper {
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
padding: 16px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-top: .5px solid rgba(0, 0, 0, 0.1);
|
||||||
|
border-bottom: .5px solid rgba(0, 0, 0, 0.1);
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nickname-label {
|
||||||
|
width: 105px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nickname-input {
|
||||||
|
flex: 1;
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
Page({
|
||||||
|
startApp() {
|
||||||
|
// 页面跳转到首页或其他功能页
|
||||||
|
wx.switchTab({
|
||||||
|
url: '/pages/AddClass/AddClass',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"navigationBarTextStyle": "black",
|
||||||
|
"navigationBarTitleText": "学生点名系统",
|
||||||
|
"navigationBarBackgroundColor": "#ffffff",
|
||||||
|
"usingComponents": {}
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
<view class="container">
|
||||||
|
<!-- 图片容器,包含背景图片和文字 -->
|
||||||
|
<view class="image-container" style="position: relative; left: 0rpx; top: -46rpx">
|
||||||
|
<!-- 背景图片 -->
|
||||||
|
<image class="background-image" src="/assets/img/lodding/lodding1.png" mode="widthFix"></image>
|
||||||
|
<!-- 文字 -->
|
||||||
|
<view class="overlay-text">
|
||||||
|
<text style="position: relative; left: -91rpx; top: 159rpx">学生点</text>
|
||||||
|
<text style="position: relative; left: 67rpx; top: -69rpx">名系统</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="image-container2" style="position: relative; left: 0rpx; top: -15rpx">
|
||||||
|
<!-- 背景图片 -->
|
||||||
|
<image class="background-image2" src="/assets/img/lodding/lodding2.png" mode="widthFix"></image>
|
||||||
|
<!-- 按钮,使用绝对定位居中 -->
|
||||||
|
<view class='image-button'>
|
||||||
|
<button class='start-button' bindtap="startApp" style="width: 436rpx; display: block; box-sizing: border-box; left: 0rpx; top: 0rpx">开始使用</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
@ -0,0 +1,100 @@
|
|||||||
|
/* 页面整体布局 */
|
||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 100vh;
|
||||||
|
background-color: #93d2f3;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 图片容器,使用相对定位 */
|
||||||
|
.image-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 背景图片 */
|
||||||
|
.background-image {
|
||||||
|
width: 597.3rpx;
|
||||||
|
height: 320rpx;
|
||||||
|
opacity: 0;
|
||||||
|
animation: fadeIn 200ms ease-in forwards;
|
||||||
|
animation-delay: 400ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 文字样式,竖向排列 */
|
||||||
|
.overlay-text {
|
||||||
|
white-space: pre; /* 保留文本中的空格 */
|
||||||
|
writing-mode: vertical-lr; /* 让文字竖向排列 */
|
||||||
|
text-orientation: upright; /* 保持文字正方向 */
|
||||||
|
font-size: 137.4rpx; /* 设定文字大小 */
|
||||||
|
line-height: 1.5; /* 调整行高,使文字之间有间距 */
|
||||||
|
color: white; /* 文字颜色 */
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%); /* 让文字垂直水平居中 */
|
||||||
|
text-shadow: 3.8rpx 7.6rpx 11.5rpx #1d469d;
|
||||||
|
font-weight: bold;
|
||||||
|
opacity: 0; /*初始透明读*/
|
||||||
|
animation: fadeIn 400ms ease-in forwards;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 页面整体布局 */
|
||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 100vh; /* 使容器高度为视口高度 */
|
||||||
|
background-color: #93d2f3; /* 背景颜色 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 图片容器,使用相对定位 */
|
||||||
|
.image-container2 {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
position: relative; /* 为绝对定位的子元素提供相对定位 */
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 背景图片 */
|
||||||
|
.background-image2 {
|
||||||
|
width: 597.3rpx;
|
||||||
|
height: 862.6rpx;
|
||||||
|
opacity: 0;
|
||||||
|
animation: fadeIn 200ms ease-in forwards;
|
||||||
|
animation-delay: 600ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 按钮样式 */
|
||||||
|
.image-button {
|
||||||
|
position: absolute; /* 使按钮相对于父容器绝对定位 */
|
||||||
|
top: 50%; /* 使按钮垂直居中 */
|
||||||
|
left: 50%; /* 使按钮水平居中 */
|
||||||
|
transform: translate(-50%, -50%); /* 精确居中 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 按钮样式 */
|
||||||
|
.start-button {
|
||||||
|
background-color: #4095e5;
|
||||||
|
color: white;
|
||||||
|
font-size: 76.3rpx;
|
||||||
|
border-radius: 40rpx;
|
||||||
|
box-shadow: 6rpx 4rpx 6rpx #0f40f5;
|
||||||
|
opacity: 0;
|
||||||
|
animation: fadeIn 200ms ease-in forwards;
|
||||||
|
animation-delay: 600ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fadeIn{
|
||||||
|
to{
|
||||||
|
opacity: 1; /*最终透明度*/
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
// logs.js
|
||||||
|
const util = require('../../utils/util.js')
|
||||||
|
|
||||||
|
Page({
|
||||||
|
data: {
|
||||||
|
logs: []
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.setData({
|
||||||
|
logs: (wx.getStorageSync('logs') || []).map(log => {
|
||||||
|
return {
|
||||||
|
date: util.formatTime(new Date(log)),
|
||||||
|
timeStamp: log
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"usingComponents": {
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
<!--logs.wxml-->
|
||||||
|
<scroll-view class="scrollarea" scroll-y type="list">
|
||||||
|
<block wx:for="{{logs}}" wx:key="timeStamp" wx:for-item="log">
|
||||||
|
<view class="log-item">{{index + 1}}. {{log.date}}</view>
|
||||||
|
</block>
|
||||||
|
</scroll-view>
|
@ -0,0 +1,16 @@
|
|||||||
|
page {
|
||||||
|
height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.scrollarea {
|
||||||
|
flex: 1;
|
||||||
|
overflow-y: hidden;
|
||||||
|
}
|
||||||
|
.log-item {
|
||||||
|
margin-top: 20rpx;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.log-item:last-child {
|
||||||
|
padding-bottom: env(safe-area-inset-bottom);
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
// pages/setting/setting.js
|
||||||
|
Page({
|
||||||
|
})
|
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"navigationBarTitleText": "设置",
|
||||||
|
"navigationBarBackgroundColor": "#F5F8F9",
|
||||||
|
"backgroundColor": "#eeeeee",
|
||||||
|
"navigationBarTextStyle": "black",
|
||||||
|
"usingComponents": {}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
<view class="container">
|
||||||
|
<view class="profile">
|
||||||
|
<image class="profile-image" src="/assets/img/Fairy/fairy (1).png" mode="aspectFill" />
|
||||||
|
<text class="nickname">昵称</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="menu-item" bindtap="onPersonalInfo">
|
||||||
|
<image class="icon" src="/assets/img/setting/setting1.png" />
|
||||||
|
<text class="menu-text">个人信息</text>
|
||||||
|
<image class="arrow" src="/assets/img/setting/setting4.png" mode="aspectFill" />
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="menu-item" bindtap="onFeedback">
|
||||||
|
<image class="icon" src="/assets/img/setting/setting2.png" />
|
||||||
|
<text class="menu-text">意见反馈</text>
|
||||||
|
<image class="arrow" src="/assets/img/setting/setting4.png" mode="aspectFill" />
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="menu-item" bindtap="onAboutUs">
|
||||||
|
<image class="icon" src="/assets/img/setting/setting3.png" />
|
||||||
|
<text class="menu-text">关于我们</text>
|
||||||
|
<image class="arrow" src="/assets/img/setting/setting4.png" mode="aspectFill" />
|
||||||
|
</view>
|
||||||
|
</view>
|
@ -0,0 +1,60 @@
|
|||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column; /* 列布局 */
|
||||||
|
justify-content: flex-start; /* 从顶部开始对齐 */
|
||||||
|
align-items: center; /* 水平居中 */
|
||||||
|
height: 100vh;
|
||||||
|
background-color: #f5f8f9; /* 背景颜色 */
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile {
|
||||||
|
display: flex; /* 横向布局 */
|
||||||
|
align-items: center; /* 垂直居中 */
|
||||||
|
border-bottom: 1rpx solid #3480FF; /* 下边框 */
|
||||||
|
width: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-image {
|
||||||
|
width: 136rpx; /* 头像大小 */
|
||||||
|
height: 136rpx; /* 头像大小 */
|
||||||
|
border-radius: 50%; /* 圆形头像 */
|
||||||
|
margin-right: 15rpx; /* 头像与昵称之间的间距 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.nickname {
|
||||||
|
margin-top: 30rpx;
|
||||||
|
font-size: 36rpx; /* 昵称字 */
|
||||||
|
font-weight: bold; /* 加粗 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-item {
|
||||||
|
display: flex; /* 横向布局 */
|
||||||
|
align-items: center; /* 垂直居中 */
|
||||||
|
padding: 20rpx; /* 内边距 */
|
||||||
|
border-bottom: 1rpx solid #3480FF; /* 下边框 */
|
||||||
|
width: 80%; /* 宽度 80% 填满容器 */
|
||||||
|
cursor: pointer; /* 鼠标悬停时显示为指针 */
|
||||||
|
justify-content: space-between; /* 让文本与箭头两端对齐 */
|
||||||
|
margin: 8rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
color:#f5f8f9;
|
||||||
|
width: 48rpx;
|
||||||
|
height: 48rpx;
|
||||||
|
margin-right: 10rpx; /* 图标与文本之间的间距 */
|
||||||
|
margin-bottom: 8rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-text {
|
||||||
|
margin-left: 20rpx;
|
||||||
|
flex: 1; /* 使文本占据剩余空间 */
|
||||||
|
font-size: 28rpx; /* 文本字体大小 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.arrow {
|
||||||
|
color:#f5f8f9;
|
||||||
|
width: 36rpx; /* 箭头图标大小 */
|
||||||
|
height: 36rpx;
|
||||||
|
}
|
@ -0,0 +1,233 @@
|
|||||||
|
Page({
|
||||||
|
data:{
|
||||||
|
modalVisible1:false,
|
||||||
|
modalVisible2:false,
|
||||||
|
modalVisible3:false,
|
||||||
|
modalVisible4:false,
|
||||||
|
modalVisible5:false,
|
||||||
|
modalVisible6:false,
|
||||||
|
scoreModalVisible: false,
|
||||||
|
name:'',
|
||||||
|
score:'',
|
||||||
|
studentCount: "", // 存储输入的学生人数
|
||||||
|
dice:0, // 默认模式
|
||||||
|
diceImage:'/assets/img/RollClass/RollClass5_1.png', // 初始骰子图像
|
||||||
|
roll_or_request:0,
|
||||||
|
selectedStudents: [], // 用于存储随机选择的学生
|
||||||
|
currentStudentIndex: null, // 当前选中学生的索引
|
||||||
|
query: '',
|
||||||
|
foundStudent: null, // 存储找到的学生
|
||||||
|
students: []
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
const app = getApp();
|
||||||
|
this.setData({
|
||||||
|
students: app.globalData.students // 设置全局数据
|
||||||
|
});
|
||||||
|
// console.log(this.data.students); // 检查此时的学生数据
|
||||||
|
},
|
||||||
|
|
||||||
|
onAbout(){
|
||||||
|
this.setData({
|
||||||
|
modalVisible1:true,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
onAdd(){
|
||||||
|
this.setData({
|
||||||
|
modalVisible2:true,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
onRank(){
|
||||||
|
wx.navigateTo({
|
||||||
|
url: '/pages/studentRanking/studentRanking',
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
onRoll(){
|
||||||
|
this.setData({
|
||||||
|
modalVisible4:true
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
onRollCall() {
|
||||||
|
this.setData({
|
||||||
|
modalVisible3:true,
|
||||||
|
roll_or_request:0
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
onRequest() {
|
||||||
|
this.setData({
|
||||||
|
modalVisible3:true,
|
||||||
|
roll_or_request:1
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 加分
|
||||||
|
addScore(event){
|
||||||
|
const index = event.currentTarget.dataset.index; // 获取点击的学生索引
|
||||||
|
this.setData({
|
||||||
|
currentStudentIndex: index, // 保存当前学生索引
|
||||||
|
modalVisible5:true
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 浮窗
|
||||||
|
closeModal(){
|
||||||
|
this.setData({
|
||||||
|
modalVisible1:false,
|
||||||
|
modalVisible2:false,
|
||||||
|
modalVisible3:false,
|
||||||
|
modalVisible4:false,
|
||||||
|
modalVisible5:false,
|
||||||
|
modalVisible6:false,
|
||||||
|
name:'',
|
||||||
|
score:'',
|
||||||
|
studentCount:""
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 浮窗2
|
||||||
|
onInputName(event) {
|
||||||
|
this.setData({
|
||||||
|
name: event.detail.value
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
onInputScore(event) {
|
||||||
|
this.setData({
|
||||||
|
score: parseInt(event.detail.value) || 0 // 确保总是为数字
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询加分
|
||||||
|
onConfirm2() {
|
||||||
|
const { name, score, students } = this.data;
|
||||||
|
|
||||||
|
// 判断输入是否为数字
|
||||||
|
const isNumeric = !isNaN(name) && name.trim() !== '';
|
||||||
|
|
||||||
|
// 查找学生
|
||||||
|
const foundStudent = students.find(student => {
|
||||||
|
return isNumeric ? student.id === parseInt(name) : student.name === name;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (foundStudent) {
|
||||||
|
foundStudent.score += score; // 修改找到的学生的分数
|
||||||
|
|
||||||
|
this.setData({
|
||||||
|
students: [...students], // 更新页面的学生数据
|
||||||
|
scoreInfo: { // 设置要显示的分数信息
|
||||||
|
name: foundStudent.name,
|
||||||
|
id: foundStudent.id,
|
||||||
|
score: foundStudent.score
|
||||||
|
},
|
||||||
|
scoreModalVisible: true // 显示分数弹窗
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log("更新后的学生数据:", foundStudent);
|
||||||
|
|
||||||
|
// 获取全局变量并更新
|
||||||
|
const app = getApp();
|
||||||
|
app.globalData.students = [...students]; // 将修改后的数据同步到全局
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// 没有找到学生时显示错误弹窗
|
||||||
|
this.setData({
|
||||||
|
modalVisible6: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// console.log("姓名:", this.data.name);
|
||||||
|
// console.log("得分:", this.data.score);
|
||||||
|
|
||||||
|
// 重置输入框和隐藏弹窗
|
||||||
|
this.setData({
|
||||||
|
name: '',
|
||||||
|
score: '',
|
||||||
|
modalVisible2: false
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// 浮窗3
|
||||||
|
onInputNum(event){
|
||||||
|
this.setData({
|
||||||
|
studentCount:event.detail.value
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
onConfirm3() {
|
||||||
|
const { studentCount, students } = this.data;
|
||||||
|
|
||||||
|
if (studentCount > students.length) {
|
||||||
|
wx.showToast({ title: '人数超出范围', icon: 'none' });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 随机选择学生
|
||||||
|
const selectedStudents = this.getRandomStudents(students, studentCount);
|
||||||
|
this.setData({
|
||||||
|
selectedStudents,studentCount: '', // 清空输入框
|
||||||
|
modalVisible3: false // 关闭弹窗
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log("随机选择的学生:", selectedStudents); // 打印随机选择的学生
|
||||||
|
},
|
||||||
|
|
||||||
|
// 随机选择学生函数
|
||||||
|
getRandomStudents(students, count) {
|
||||||
|
const shuffled = students.sort(() => 0.5 - Math.random()); // 打乱数组
|
||||||
|
return shuffled.slice(0, count); // 选择前 count 个学生
|
||||||
|
},
|
||||||
|
|
||||||
|
// 浮窗4 投掷骰子
|
||||||
|
onRollDice() {
|
||||||
|
console.log("投掷骰子按钮被点击");
|
||||||
|
// 生成1-6随机数
|
||||||
|
const rolledValue = Math.floor(Math.random()*6)+1;
|
||||||
|
this.setData({
|
||||||
|
dice: rolledValue,
|
||||||
|
diceImage: `/assets/img/RollClass/RollClass5_${rolledValue}.png`, // 更新图像
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 浮窗5 加分 处理分数按钮点击
|
||||||
|
onScoreChange(event) {
|
||||||
|
const scoreChange = parseFloat(event.currentTarget.dataset.score);
|
||||||
|
const { currentStudentIndex, selectedStudents } = this.data;
|
||||||
|
|
||||||
|
if (currentStudentIndex != null) {
|
||||||
|
selectedStudents[currentStudentIndex].score += scoreChange; // 增加分数
|
||||||
|
|
||||||
|
// 获取全局变量
|
||||||
|
const app = getApp();
|
||||||
|
const students = app.globalData.students;
|
||||||
|
students[currentStudentIndex].score = selectedStudents[currentStudentIndex].score; // 更新全局数据
|
||||||
|
|
||||||
|
this.setData({
|
||||||
|
selectedStudents,
|
||||||
|
modalVisible5: false, // 关闭加分弹窗
|
||||||
|
scoreInfo: {
|
||||||
|
name: selectedStudents[currentStudentIndex].name,
|
||||||
|
id: selectedStudents[currentStudentIndex].id,
|
||||||
|
score: selectedStudents[currentStudentIndex].score
|
||||||
|
},
|
||||||
|
scoreModalVisible: true // 显示得分弹窗
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log("更新后的分数:", selectedStudents[currentStudentIndex].score);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// 浮窗7 得分信息
|
||||||
|
closeScoreModal() {
|
||||||
|
this.setData({
|
||||||
|
scoreModalVisible: false // 隐藏得分弹窗
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"navigationBarBackgroundColor": "#F5F8F9",
|
||||||
|
"navigationBarTitleText": "开始点名",
|
||||||
|
"usingComponents": {}
|
||||||
|
}
|