diff --git a/pages/IndexFreeCourseDetails/IndexFreeCourseDetails.js b/pages/IndexFreeCourseDetails/IndexFreeCourseDetails.js
new file mode 100644
index 0000000..1a1d6ae
--- /dev/null
+++ b/pages/IndexFreeCourseDetails/IndexFreeCourseDetails.js
@@ -0,0 +1,131 @@
+// pages/Videodetails/Videodetails.js
+const MyApi = require('../../Api/api.js');
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ BaseURL:getApp().globalData.BaseURL,
+ JustChapter:"",
+ zhangjieTitle:"",
+ VideoImageURL:"",
+ VideoTitle:"",
+ RealeaseTime:"",
+ shichangTime:"",
+ playdata:[],
+ VideoPlayerSrc:null,
+ coursedata:null,
+ top:0,
+ HiddenVideoControl:true,
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+//只有当登录才有效
+ if (wx.getStorageSync('UserInfoCache').IsLogin) {
+ //获取接收到的视频序号
+ var receivedIndex = options.number ?? null;
+ if (receivedIndex){
+
+ MyApi.ApiGetFreeCourseData(receivedIndex)
+ .then(result => {
+ this.setData({
+ VideoTitle:result.PlayData[0].课程名称,
+ playdata:result.PlayData,
+ VideoImageURL:this.data.BaseURL+"/Course/"+result.课程id+".png",
+ coursedata:result,
+ });
+ })
+ .catch(err => {
+ this.setData({
+ playdata:[],
+ });
+ console.error("请求失败:"+err);
+ });
+ } else {
+ wx.switchTab({
+ url: '/pages/index/index',
+ })
+ }
+
+ } else {
+ setTimeout(function() {
+ wx.switchTab({
+ url: '/pages/index/index',
+ })
+ },50);
+ }
+ },
+ OnTapVideoList(e){
+ //只有当登录才有效
+ if (wx.getStorageSync('UserInfoCache').IsLogin) {
+ // 获取当前点击的索引
+
+ const courseindex = e.currentTarget.dataset.courseindex;
+
+
+ this.setData({
+ VideoPlayerSrc:this.data.BaseURL+'/'+this.data.coursedata.PlayData[courseindex].视频m3u8,
+ HiddenVideoControl:false,
+ top:420,
+ });
+ } else {
+ setTimeout(function() {
+ wx.switchTab({
+ url: '/pages/index/index',
+ })
+ },50);
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+ if (!wx.getStorageSync('UserInfoCache').IsLogin) {
+ setTimeout(function() {
+ wx.switchTab({
+ url: '/pages/index/index',
+ })
+ },50);
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/IndexFreeCourseDetails/IndexFreeCourseDetails.json b/pages/IndexFreeCourseDetails/IndexFreeCourseDetails.json
new file mode 100644
index 0000000..6f5247b
--- /dev/null
+++ b/pages/IndexFreeCourseDetails/IndexFreeCourseDetails.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/IndexFreeCourseDetails/IndexFreeCourseDetails.wxml b/pages/IndexFreeCourseDetails/IndexFreeCourseDetails.wxml
new file mode 100644
index 0000000..3f38741
--- /dev/null
+++ b/pages/IndexFreeCourseDetails/IndexFreeCourseDetails.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+ {{VideoTitle}}
+ 已更新{{playdata.length}}期
+
+
+
+
+
+
+
+
+
+ {{item['视频标题']}}
+ {{item['详细介绍']}}
+
+ {{item['发布日期']}}
+ {{item['时长']}}min
+
+
+
+
\ No newline at end of file
diff --git a/pages/IndexFreeCourseDetails/IndexFreeCourseDetails.wxss b/pages/IndexFreeCourseDetails/IndexFreeCourseDetails.wxss
new file mode 100644
index 0000000..b60919d
--- /dev/null
+++ b/pages/IndexFreeCourseDetails/IndexFreeCourseDetails.wxss
@@ -0,0 +1,111 @@
+.videoplayer {
+ position: fixed;
+ top: 0;
+ left: 0;
+ height: 420rpx;
+ width: 750rpx;
+ z-index: 999;
+}
+.scrollarea {
+ position: relative;
+ top: 420rpx;
+ flex: 1;
+ overflow-y: hidden;
+
+}
+
+.jieshao {
+margin-bottom: 10rpx;
+/* box-shadow: 0 4rpx 4rpx rgba(150, 150, 150, 0.5); */
+position: relative;
+/* height: 100rpx; */
+display: block;
+}
+.video_biaoti {
+text-align: center;
+ display: block;
+ font-size: 40rpx;
+}
+
+.video_miaoshu {
+text-align: center;
+ display: block;
+ font-size: 30rpx;
+}
+.video_info {
+ position: absolute;
+ bottom: 10rpx;
+ display: block;
+ font-size: 24rpx;
+ right: 30rpx;
+}
+.video_list_content {
+margin: 10rpx 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+
+.videolistcontainer {
+border-radius: 20rpx;
+margin: 10rpx 10rpx;
+box-shadow: 0 0 4rpx rgba(0, 0, 0, 0.5);
+ width: 730rpx;
+ height: 200rpx;
+ position: relative;
+ display: flex;
+ justify-content: left;
+ align-items: center;
+ text-align: left;
+ overflow: hidden;
+}
+
+
+
+.videoimage {
+ width: 320rpx;
+ height: 180rpx;
+ border-radius: 10rpx;
+ margin-left: 10rpx;
+ overflow: hidden;
+ box-shadow: 0 5rpx 10rpx rgba(0, 0, 0, 0.5);
+}
+
+.videoinfo{
+ position: relative;
+ width: 390rpx;
+ height: 180rpx;
+ border-radius: 10rpx;
+ margin-left: 20rpx;
+ overflow: hidden;
+}
+.videotitle {
+ text-align: left;
+ font-size: 30rpx;
+}
+.videodetails {
+ display: block;
+ margin: 10rpx 0rpx;
+ font-size: 25rpx;
+ line-height: 30rpx;
+}
+
+.videoinfo2 {
+ position:absolute;
+ bottom: 0;
+ display: flex;
+ justify-content:left;
+}
+.videodata {
+ font-size: 20rpx;
+}
+
+.videotime {
+ font-size: 20rpx;
+ margin-left: 40rpx;
+}
+.coverimage {
+ width: 100%;
+ height: 100%;
+}
\ No newline at end of file
diff --git a/pages/IndexNewCourseDetails/IndexNewCourseDetails.js b/pages/IndexNewCourseDetails/IndexNewCourseDetails.js
new file mode 100644
index 0000000..1653b42
--- /dev/null
+++ b/pages/IndexNewCourseDetails/IndexNewCourseDetails.js
@@ -0,0 +1,69 @@
+// pages/IndexNewCourseDetails/IndexNewCourseDetails.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ html:String
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+ var number = options.number ?? "";
+ this.setData({
+ html:wx.getStorageSync('IndexNewCourseData')[number].内容
+ });
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/IndexNewCourseDetails/IndexNewCourseDetails.json b/pages/IndexNewCourseDetails/IndexNewCourseDetails.json
new file mode 100644
index 0000000..4c3f6d8
--- /dev/null
+++ b/pages/IndexNewCourseDetails/IndexNewCourseDetails.json
@@ -0,0 +1,5 @@
+{
+ "usingComponents": {
+ "Parser":"/Parser/index"
+ }
+}
\ No newline at end of file
diff --git a/pages/IndexNewCourseDetails/IndexNewCourseDetails.wxml b/pages/IndexNewCourseDetails/IndexNewCourseDetails.wxml
new file mode 100644
index 0000000..c1c3137
--- /dev/null
+++ b/pages/IndexNewCourseDetails/IndexNewCourseDetails.wxml
@@ -0,0 +1,2 @@
+
+加载中...
\ No newline at end of file
diff --git a/pages/IndexNewCourseDetails/IndexNewCourseDetails.wxss b/pages/IndexNewCourseDetails/IndexNewCourseDetails.wxss
new file mode 100644
index 0000000..358a009
--- /dev/null
+++ b/pages/IndexNewCourseDetails/IndexNewCourseDetails.wxss
@@ -0,0 +1 @@
+/* pages/IndexNewCourseDetails/IndexNewCourseDetails.wxss */
\ No newline at end of file
diff --git a/pages/LoginOrOutDetails/LoginOrOutDetails.js b/pages/LoginOrOutDetails/LoginOrOutDetails.js
new file mode 100644
index 0000000..9b53c4a
--- /dev/null
+++ b/pages/LoginOrOutDetails/LoginOrOutDetails.js
@@ -0,0 +1,197 @@
+// pages/LoginOrOutDetails/LoginOrOutDetails.js
+const MyApi = require('../../Api/api.js')
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ userInfo: {
+ avatarUrl: '../../static/image/defaultAvatar.png',
+ nickName: wx.getStorageSync('UserInfoCache').UserName,
+ },
+ LoginTag: "一键登录",
+ isadmin:wx.getStorageSync('UserInfoCache').IsAdministor,
+ loginStatue:wx.getStorageSync('UserInfoCache').IsLogin
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+ this.setData({
+ userInfo: {
+ avatarUrl:'../../static/image/weixin.png',
+ nickName: wx.getStorageSync('UserInfoCache').UserName,
+ },
+ loginStatue: wx.getStorageSync('UserInfoCache').IsLogin
+ });
+
+ var Storage = wx.getStorageSync('UserInfoCache');
+ if (Storage.IsLogin === "1") {
+ this.setData({
+ userInfo: {
+ //avatarUrl: getApp().globalData.BaseURL + "/Images/UsersHeadIcon/" + Storage.user_openid + ".png",
+ avatarUrl:'../../static/image/weixin.png',
+ nickName: Storage.UserName,
+ },
+ });
+ };
+
+ },
+
+ onLoginBtnClick() {
+ var isAdmin=this.data.isadmin;
+ var tempusername=this.data.userInfo.nickName
+ var random_username="";
+ if (!tempusername) {
+ //生成随机用户名
+ var chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
+ var random_username = "";
+ for (var i = 0; i < 8; i++) {
+ var randomIndex = Math.floor(Math.random() * chars.length);
+ random_username += chars[randomIndex];
+ }
+ random_username = "用户"+random_username;
+ } else {random_username = tempusername}
+
+ console.log("用户名: "+random_username);
+
+
+ wx.uploadFile({
+ filePath: "static/image/defaultAvatar.png",
+ name: "HeadIconKey",
+ url: getApp().globalData.BaseURL+'/API/ApiChangeUserInfo.php',
+ formData:{
+ username: random_username,
+ openid: wx.getStorageSync('UserInfoCache').user_openid
+ },
+ success(res) {
+ //打印服务器返回数据
+ wx.showToast({
+ title: '成功!',
+ icon: 'success',
+ mask:true,
+ duration: 4000
+ });
+ //这里修改缓存
+ var tempuesrinfo=wx.getStorageSync('UserInfoCache')
+ tempuesrinfo.UserName=random_username
+ tempuesrinfo.IsAdministor=isAdmin
+ tempuesrinfo.IsLogin="1"
+ wx.setStorageSync('UserInfoCache', tempuesrinfo)
+
+ setTimeout(function() {
+ wx.hideToast();
+ wx.switchTab({
+ url: '/pages/wode/wode',
+ })
+ },3000);
+
+ },
+ fail(res) {
+ //打印服务器返回数据
+ console.log(res);
+ setTimeout(function() {
+ wx.hideToast();
+ wx.switchTab({
+ url: '/pages/wode/wode',
+ })
+ },3000);
+
+ }
+ })
+
+
+
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+ this.onLoad();
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ datachange(){
+ //退出登录操作!
+ MyApi.ApiLogout(wx.getStorageSync('UserInfoCache').user_openid)
+ .then(result1 => {
+ //缓存状态修改
+ var tempuesrinfoislogin=wx.getStorageSync('UserInfoCache')
+ tempuesrinfoislogin.IsLogin=null
+ //tempuesrinfoislogin.UserName=null
+ tempuesrinfoislogin.IsAdministor=null
+
+ this.data.userInfo.avatarUrl= '../../static/image/defaultAvatar.png'
+ this.data.LoginTag= "登录"
+ wx.setStorageSync('UserInfoCache', tempuesrinfoislogin)
+
+
+
+ //返回个人信息页面
+ wx.showToast({
+ title: '请稍等...',
+ icon:'loading',
+ mask:true,
+ duration: 4000,
+ })
+
+ setTimeout(function() {
+ wx.hideToast();
+ wx.switchTab({
+ url: '/pages/wode/wode',
+ })
+ },3000);
+ })
+ .catch(err => {
+ });
+ },
+
+ onlogout() {
+
+ if (wx.getStorageSync('UserInfoCache').IsLogin){
+ wx.showModal({
+ title: '提示',
+ content: '确定退出登录吗?',
+ showCancel: true, // 是否显示取消按钮
+ cancelText: '取消', // 取消按钮的文本,默认是"取消"
+ cancelColor: '#000000', // 取消按钮的文字颜色,默认是"#000000"
+ confirmText: '确认', // 确认按钮的文本,默认是"确定"
+ confirmColor: '#ff0000', // 确认按钮的文字颜色,默认是"#3CC51F"
+ success:(res)=> {
+ if (res.confirm) {
+ // 用户点击了确认按钮
+ this.datachange()
+
+ } else if (res.cancel) {
+ // 用户点击了取消按钮
+ }
+ }
+ });
+ }
+ }
+})
\ No newline at end of file
diff --git a/pages/LoginOrOutDetails/LoginOrOutDetails.json b/pages/LoginOrOutDetails/LoginOrOutDetails.json
new file mode 100644
index 0000000..d58b50c
--- /dev/null
+++ b/pages/LoginOrOutDetails/LoginOrOutDetails.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "navigationBarTitleText": "个人信息"
+}
\ No newline at end of file
diff --git a/pages/LoginOrOutDetails/LoginOrOutDetails.wxml b/pages/LoginOrOutDetails/LoginOrOutDetails.wxml
new file mode 100644
index 0000000..4ccf264
--- /dev/null
+++ b/pages/LoginOrOutDetails/LoginOrOutDetails.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+ 叶雷讲数学
+
+
+ 让数学不再难学
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/LoginOrOutDetails/LoginOrOutDetails.wxss b/pages/LoginOrOutDetails/LoginOrOutDetails.wxss
new file mode 100644
index 0000000..6d051e5
--- /dev/null
+++ b/pages/LoginOrOutDetails/LoginOrOutDetails.wxss
@@ -0,0 +1,117 @@
+/* pages/LoginOrOutDetails/LoginOrOutDetails.wxss */
+page {
+ height: 100vh;
+ display: flex;
+ flex-direction: column;
+}
+
+.scrollarea {
+ flex: 1;
+ overflow-y: hidden;
+}
+.warp {
+
+ /* border: 1px solid #353535; */
+ padding: 10rpx 0;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
+ margin: 50rpx 100rpx;
+ border-radius: 30rpx;
+}
+.userinfo1 {
+ margin-top: 100rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.userinfo2 {
+ margin-top: 80rpx;
+ margin-bottom: 100rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+}
+
+.touxiang_btn[plain] {
+ width: 100rpx;
+ height: 100rpx;
+ padding: 0;
+ margin-left: 50rpx;
+ margin-right: 50rpx;
+ border-radius: 8px;
+ border: none;
+}
+
+.touxiang_text {
+margin-right: 50rpx;
+ font-size: 34rpx;
+}
+.imgview {
+ margin-top: 300rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.imgview2 {
+ margin-top: 10rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.imgview3 {
+ color: rgb(95, 95, 95);
+ font-size: 25rpx;
+ margin-top: 15rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.imgtext {
+ display: block;
+
+}
+
+.touxiang_img {
+ display: block;
+ width: 100rpx;
+ height: 100rpx;
+}
+
+.nickname_label {
+ margin-right: 50rpx;
+ font-size: 34rpx;
+
+
+}
+
+.nickname_input {
+ width: 160rpx;
+ padding-left: 40rpx;
+}
+
+.btn1 {
+ width: 546rpx;
+ margin-top: 30rpx;
+ border-radius: 15rpx;
+}
+.btn1[plain] {
+ border: 0px solid #d10000;
+ background-color: #d10000;
+ /* box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5); */
+}
+.btn2 {
+ width: 546rpx;
+ margin-top: 30rpx;
+ margin-bottom: 100rpx;
+ border-radius: 15rpx;
+}
+.btn2[plain] {
+ border: 0px solid #d10000;
+ background-color: #d10000;
+ /* box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5); */
+}
+.btn_text {
+
+ color: rgb(255, 255, 255);
+}
\ No newline at end of file
diff --git a/pages/SetPasswordCode/SetPasswordCode.js b/pages/SetPasswordCode/SetPasswordCode.js
new file mode 100644
index 0000000..79d5a6f
--- /dev/null
+++ b/pages/SetPasswordCode/SetPasswordCode.js
@@ -0,0 +1,433 @@
+// pages/SetPasswordCode/SetPasswordCode.js
+const MyApi = require('../../Api/api.js');
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ isAdmin:null,
+ //添加口令码提交参数
+ selectcoursename:"请选择课程",
+ selectcourseindex:null,
+ addCourseCode:"",
+ codecount:"",
+ IntegerValid:"",
+ addCourse_enddata:"2099-12-31 00:00:00",
+ add_show:false,
+ add_courseinfo:"",
+ add_courseid:"",
+ columnsID:[],
+ columns: [],
+ columnsInfo:[],
+
+ //修改口令码提交参数
+ changeData:null,
+ changeindex:null,
+ oldcourpswdsecode:[],
+
+ tempCourseData_2:null,
+ activeNames: ['修改栏目-点击展开关闭'],
+ showCourse:false,
+ show: false,
+ minHour: 10,
+ maxHour: 20,
+ minDate: new Date(2023, 1, 1).getTime(),
+ maxDate: new Date(2035, 1, 1).getTime(),
+ currentDate: new Date().getTime(),
+ },
+ confirm_to_delete(e){
+ wx.showModal({
+ title: '删除课程码',
+ confirmColor:"#ff0000",
+ content: '确定删除吗?',
+ complete: (res) => {
+ if (res.cancel) {}
+ if (res.confirm) {
+ var delete_index=e.currentTarget.dataset.index;
+
+ wx.showToast({
+ title: '删除课程码中',
+ duration: 10000,
+ icon: "loading",
+ mask: true,
+ });
+ var delete_openid=wx.getStorageSync('UserInfoCache').user_openid;
+ MyApi.ApiDeletePasswordCode(delete_openid,this.data.changeData[delete_index].口令码)
+ .then(result => {
+
+ if (result.result) {
+ wx.hideToast();
+
+ //本地也删除口令码数据
+ var tempdata=this.data.changeData
+ tempdata.splice(delete_index, 1);
+ this.setData({
+ changeData:tempdata,
+ //恢复默认收缩栏目
+ activeNames: ["修改栏目-点击展开关闭", 998],
+ });
+
+ wx.showToast({
+ title: '删除成功',
+ duration: 1000,
+ icon: "success",
+ mask: true,
+ });
+
+ } else {
+ wx.hideToast();
+ wx.showToast({
+ title: '提交失败',
+ duration: 1000,
+ icon: "error",
+ mask: true,
+ });
+ }
+ })
+ .catch(err => {
+ console.error("请求失败:" + err);
+ });
+ }
+ }
+ })
+
+
+
+ },
+ confirm_to_change(e){
+ wx.showModal({
+ title: '修改口令信息',
+ confirmColor:"#ff0000",
+ content: '确定修改吗?',
+ complete: (res) => {
+ if (res.cancel) {}
+ if (res.confirm) {
+ var change_index=e.currentTarget.dataset.index;
+
+ wx.showToast({
+ title: '修改课程码中',
+ duration: 10000,
+ icon: "loading",
+ mask: true,
+ });
+ //openid,coursePswdCode,courseEndDate,courseInfo,courseCount,oldCoursePswdCode
+ var change_openid=wx.getStorageSync('UserInfoCache').user_openid;
+ var coursePswdCode=this.data.changeData[change_index].口令码;
+ var courseEndDate=this.data.changeData[change_index].口令结束日期;
+ var courseInfo=this.data.changeData[change_index].课程介绍;
+ var courseCount=this.data.changeData[change_index].剩余有效次数;
+ var oldCoursePswdCode=this.data.oldcourpswdsecode[change_index];
+
+
+ MyApi.ApiChangePasswordCode(change_openid,coursePswdCode,courseEndDate,courseInfo,courseCount,oldCoursePswdCode)
+ .then(result => {
+ if (result.result) {
+ wx.hideToast();
+
+ //旧口令码修改为修改后的口令码
+ var oldcoursepswdcode2=this.data.oldcourpswdsecode;
+ oldcoursepswdcode2[change_index]=coursePswdCode;
+ this.setData({
+ oldcourpswdsecode:oldcoursepswdcode2,
+ });
+
+ wx.showToast({
+ title: '修改成功',
+ duration: 1000,
+ icon: "success",
+ mask: true,
+ });
+
+ } else {
+ wx.hideToast();
+ wx.showToast({
+ title: '提交失败',
+ duration: 1000,
+ icon: "error",
+ mask: true,
+ });
+ }
+ })
+ .catch(err => {
+ console.error("请求失败:" + err);
+ });
+ }
+ }
+ })
+ },
+ onchangecodeconfirm(e){
+ var timeformat_02= this.formatTimestamp(e.detail);
+ var tempcode004=this.data.changeData;
+ tempcode004[this.data.changeindex].口令结束日期=timeformat_02;
+ this.setData({
+ changeData:tempcode004,
+ show: false,
+ });
+ },
+ onchangeconde_info(e){
+ var tempcode003=this.data.changeData;
+ tempcode003[e.currentTarget.dataset.index].课程介绍=e.detail;
+ this.setData({
+ changeData:tempcode003
+ });
+ },
+ onchangecode(e){
+
+ var tempcode001=this.data.changeData;
+ tempcode001[e.currentTarget.dataset.index].口令码=e.detail;
+ this.setData({
+ changeData:tempcode001
+ });
+ },
+ onchangecodecount(e){
+ //正则表达式验证纯数字
+ if ( /^\d+$/.test(e.detail) ) {
+ var tempcode002=this.data.changeData;
+ tempcode002[e.currentTarget.dataset.index].剩余有效次数=e.detail;
+ this.setData({
+ IntegerValid: "",
+ changeData:tempcode002
+ });
+ } else {
+ var tempcode002=this.data.changeData;
+ tempcode002[e.currentTarget.dataset.index].剩余有效次数="";
+ this.setData({
+ IntegerValid: "请输入整数!",
+ changeData:tempcode002
+ });
+ }
+ },
+ onAddcourseBtnClick() {
+ wx.showModal({
+ title: '添加课程',
+ content: '确定添加课程码?',
+ complete: (res) => {
+ if (res.cancel) {}
+ if (res.confirm) {
+ wx.showToast({
+ title: '提交中',
+ duration: 10000,
+ icon: "loading",
+ mask: true,
+ });
+
+ var var1=wx.getStorageSync('UserInfoCache').user_openid;
+ var var2=this.data.add_courseid
+ var var3=this.data.selectcoursename
+ var var4=this.data.addCourseCode
+ var var5=this.data.addCourse_enddata
+ var var6=this.data.add_courseinfo
+ var var7=this.data.codecount
+
+ MyApi.ApiAddPasswordCode(var1,var2,var3,var4,var5,var6,var7)
+ .then(result => {
+ if (result.Data) {
+ wx.hideToast();
+ wx.showToast({
+ title: '提交成功',
+ duration: 1000,
+ icon: "success",
+ mask: true,
+ });
+
+ //修改拉取的口令码数据
+ var changelistdata01=result.Data
+ var changechangeData=this.data.changeData
+ changechangeData.push(changelistdata01);
+ this.setData({
+ changeData:changechangeData,
+ //恢复默认收缩栏目
+ activeNames: ["修改栏目-点击展开关闭", 998],
+ });
+
+ } else {
+ wx.hideToast();
+ wx.showToast({
+ title: '提交失败',
+ duration: 1000,
+ icon: "error",
+ mask: true,
+ });
+ }
+ })
+ .catch(err => {
+ console.error("请求失败:" + err);
+ });
+ }
+ }
+ });
+ },
+ addcourse_onInputCourseInfo(e) {
+ this.setData({ add_courseinfo: e.detail });
+ },
+ addcourse_showPopup(e) {
+ this.setData({ add_show: true });
+ },
+ addcourse_onClose(event) {
+ this.setData({ add_show: false });
+ },
+ addcourse_onconfirm(e) {
+ var timeformat_01= this.formatTimestamp(e.detail)
+ this.setData({
+ addCourse_enddata: timeformat_01,
+ });
+ this.setData({ add_show: false });
+ },
+ addCode_onInputCode(e){
+ this.setData({
+ addCourseCode: e.detail,
+ });
+ },
+ addCode_onInputCodecount(e){
+ //正则表达式验证纯数字
+ if ( /^\d+$/.test(e.detail) ) {
+ this.setData({
+ IntegerValid: "",
+ codecount:e.detail
+ });
+ } else {
+ this.setData({
+ IntegerValid: "请输入整数!",
+ codecount:"",
+ });
+ }
+
+ },
+ onInput(event) {
+ this.setData({
+ currentDate: event.detail,
+ });
+ },
+ onInputCourse(event) {
+ this.setData({
+ currentDate: event.detail,
+ });
+ },
+ showPopup(e) {
+ this.setData({
+ show: true,
+ changeindex:e.currentTarget.dataset.index
+ });
+
+ },
+ showPopupCourse() {
+ this.setData({ showCourse: true });
+ },
+
+ onClose(e) {
+ this.setData({ show: false });
+
+ },
+ onCloseCourse(event) {
+ var info=this.data.columnsInfo
+ var id=this.data.columnsID
+ this.setData({
+ showCourse: false,
+ selectcoursename:event.detail.value,
+ selectcourseindex:event.detail.index,
+ add_courseinfo:info[event.detail.index],
+ add_courseid:id[event.detail.index]
+ });
+ },
+
+ onCloseCourse_popup(event) {
+ this.setData({
+ showCourse: false,
+ });
+ },
+
+ onCloseCourse_selectcourse(event) {this.setData({showCourse: false});},
+
+ onChange(event) {
+ this.setData({
+ activeNames: event.detail,
+ });
+ },
+ onChangeCourse(event) {
+ const { picker, value, index } = event.detail;
+ },
+ /*** 生命周期函数--监听页面加载*/
+ onLoad(options) {
+
+ },
+
+ /*** 生命周期函数--监听页面初次渲染完成*/
+ onReady() {
+
+
+ },
+
+ /*** 生命周期函数--监听页面显示*/
+ onShow() {
+ var openid=wx.getStorageSync('UserInfoCache').user_openid;
+ this.setData({
+ isAdmin:wx.getStorageSync('UserInfoCache').IsAdministor
+ });
+ //获取可以添加的课程目录
+ MyApi.ApiAddPasswordCodeBefor(openid)
+ .then(result => {
+ var tempcolumns=[];
+ var tempcolumnsInfo=[];
+ var tempcolumnsID=[];
+
+ for (var i = 0; i < result.Data.length; i++) {
+ tempcolumnsID=tempcolumnsID.concat(result.Data[i].课程id);
+ tempcolumns=tempcolumns.concat(result.Data[i].课程名称);
+ tempcolumnsInfo=tempcolumnsInfo.concat(result.Data[i].课程介绍);
+ }
+ this.setData({
+ tempCourseData_2:result.Data,
+ columns: tempcolumns,
+ columnsID:tempcolumnsID,
+ columnsInfo:tempcolumnsInfo,
+ });
+ })
+ .catch(err => {
+ // 失败后执行的代码
+ console.error("请求失败:" + err);
+ });
+
+ //获取课程口令码
+ MyApi.ApiGetPasswordCode(openid)
+ .then(result => {
+ var tempoldcode=[];
+ for (var i = 0; i < result.Data.length; i++) {
+ tempoldcode=tempoldcode.concat(result.Data[i].口令码);
+ }
+
+ this.setData({
+ changeData:result.Data,
+ oldcourpswdsecode:tempoldcode
+ });
+ })
+ .catch(err => {
+ // 失败后执行的代码
+ console.error("请求失败:" + err);
+ });
+ },
+
+ /*** 生命周期函数--监听页面隐藏*/
+ onHide() {
+
+ },
+
+ /*** 生命周期函数--监听页面卸载*/
+ onUnload() {
+
+ },
+ formatTimestamp(timestamp) {
+ // 创建一个新的Date对象,传入时间戳(以毫秒为单位)
+ var date = new Date(timestamp);
+ // 获取年、月、日、时、分、秒
+ var year = date.getFullYear();
+ var month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需要加1
+ var day = String(date.getDate()).padStart(2, '0');
+ var hours = String(date.getHours()).padStart(2, '0');
+ var minutes = String(date.getMinutes()).padStart(2, '0');
+ var seconds = String(date.getSeconds()).padStart(2, '0');
+ // 拼接成指定格式的日期时间字符串
+ var formattedDateTime = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
+ return formattedDateTime;
+}
+})
\ No newline at end of file
diff --git a/pages/SetPasswordCode/SetPasswordCode.json b/pages/SetPasswordCode/SetPasswordCode.json
new file mode 100644
index 0000000..6b8e47d
--- /dev/null
+++ b/pages/SetPasswordCode/SetPasswordCode.json
@@ -0,0 +1,13 @@
+{
+ "usingComponents": {
+ "van-collapse": "@vant/weapp/collapse/index",
+ "van-collapse-item": "@vant/weapp/collapse-item/index",
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index",
+ "van-cell": "@vant/weapp/cell/index",
+ "van-cell-group": "@vant/weapp/cell-group/index",
+ "van-popup": "@vant/weapp/popup/index",
+ "van-picker": "@vant/weapp/picker/index",
+ "van-datetime-picker": "@vant/weapp/datetime-picker/index"
+ }
+}
\ No newline at end of file
diff --git a/pages/SetPasswordCode/SetPasswordCode.wxml b/pages/SetPasswordCode/SetPasswordCode.wxml
new file mode 100644
index 0000000..0d40351
--- /dev/null
+++ b/pages/SetPasswordCode/SetPasswordCode.wxml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 添加课程码
+
+
+
+
+
+
+
+ 确认添加
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item['口令码']}}
+
+
+
+
+
+
+
+ 确认删除
+ 确认修改
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/SetPasswordCode/SetPasswordCode.wxss b/pages/SetPasswordCode/SetPasswordCode.wxss
new file mode 100644
index 0000000..2a6685e
--- /dev/null
+++ b/pages/SetPasswordCode/SetPasswordCode.wxss
@@ -0,0 +1 @@
+/* pages/SetPasswordCode/SetPasswordCode.wxss */
\ No newline at end of file
diff --git a/pages/VideoDetails/VideoDetails.js b/pages/VideoDetails/VideoDetails.js
new file mode 100644
index 0000000..290c640
--- /dev/null
+++ b/pages/VideoDetails/VideoDetails.js
@@ -0,0 +1,162 @@
+// pages/Videodetails/Videodetails.js
+const MyApi = require('../../Api/api.js');
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ BaseURL:getApp().globalData.BaseURL,
+ JustChapter:"",
+ zhangjieTitle:"",
+ VideoImageURL:"",
+ VideoTitle:"",
+ VideoDetails:"",
+ RealeaseTime:"",
+ shichangTime:"",
+ playdata:[],
+ VideoPlayerSrc:null,
+ coursedata:null,
+ top:0,
+ HiddenVideoControl:true
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+//只有当登录才有效
+ if (wx.getStorageSync('UserInfoCache').IsLogin) {
+ var receivedIndex = options.index ?? null;
+
+ if (receivedIndex){
+
+ //分享页面跳转至课程页面
+ try {
+ wx.getStorageSync('UserInfoCache').OwnedCourse[receivedIndex];
+ if (wx.getStorageSync('UserInfoCache').OwnedCourse[receivedIndex] === undefined){
+ wx.showToast({
+ title: '不可用!',
+ icon: 'error',
+ mask:true,
+ duration: 3000
+ });
+ setTimeout(function() {
+ wx.switchTab({
+ url: '/pages/kecheng/kecheng',
+ })
+ },3000);
+ }
+ } catch (error) {
+ wx.showToast({
+ title: '不可用!',
+ icon: 'error',
+ mask:true,
+ duration: 3000
+ });
+ setTimeout(function() {
+ wx.switchTab({
+ url: '/pages/kecheng/kecheng',
+ })
+ },3000);
+ }
+ var tempdata=wx.getStorageSync('UserInfoCache').OwnedCourse[receivedIndex];
+ MyApi.ApiGetCourseData(tempdata.OpenID,tempdata.课程id)
+ .then(result => {
+ this.setData({
+ VideoTitle:tempdata.课程,
+ playdata:result.PlayData,
+ VideoDetails:tempdata.课程介绍,
+ VideoImageURL:this.data.BaseURL+"/Course/"+tempdata.课程id+".png",
+ coursedata:tempdata,
+ });
+ })
+ .catch(err => {
+ this.setData({
+ playdata:[],
+ });
+ console.error("请求失败:"+err);
+ });
+ } else {
+ wx.switchTab({
+ url: '/pages/kecheng/kecheng',
+ })
+ }
+
+ } else {
+ setTimeout(function() {
+ wx.switchTab({
+ url: '/pages/kecheng/kecheng',
+ })
+ },50);
+ }
+ },
+ OnTapVideoList(e){
+ //只有当登录才有效
+ if (wx.getStorageSync('UserInfoCache').IsLogin) {
+ // 获取当前点击的索引
+ const currentcourseid = e.currentTarget.dataset.courseid;
+ const currentzhangjieid = e.currentTarget.dataset.zhangjieid;
+ const currentplayid = e.currentTarget.dataset.playid;
+ this.setData({
+ VideoPlayerSrc:this.data.BaseURL+"/Course/"+currentcourseid+"/"+currentzhangjieid+"/"+currentplayid+"/"+"playlist.m3u8",
+ HiddenVideoControl:false,
+ top:420
+ });
+ } else {
+ setTimeout(function() {
+ wx.switchTab({
+ url: '/pages/kecheng/kecheng',
+ })
+ },50);
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+ if (!wx.getStorageSync('UserInfoCache').IsLogin) {
+ setTimeout(function() {
+ wx.switchTab({
+ url: '/pages/kecheng/kecheng',
+ })
+ },50);
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/VideoDetails/VideoDetails.json b/pages/VideoDetails/VideoDetails.json
new file mode 100644
index 0000000..98a2a64
--- /dev/null
+++ b/pages/VideoDetails/VideoDetails.json
@@ -0,0 +1,5 @@
+{
+ "usingComponents": {
+
+ }
+}
\ No newline at end of file
diff --git a/pages/VideoDetails/VideoDetails.wxml b/pages/VideoDetails/VideoDetails.wxml
new file mode 100644
index 0000000..d7fb762
--- /dev/null
+++ b/pages/VideoDetails/VideoDetails.wxml
@@ -0,0 +1,26 @@
+
+
+
+
+ {{VideoTitle}}
+ {{VideoDetails}}
+ 已更新{{playdata.length}}期
+
+
+
+
+
+
+
+
+
+ {{item['章节名称']}}
+ {{item['视频名称']}}
+
+ {{item['发布日期']}}
+ {{item['时长']}}min
+
+
+
+
\ No newline at end of file
diff --git a/pages/VideoDetails/VideoDetails.wxss b/pages/VideoDetails/VideoDetails.wxss
new file mode 100644
index 0000000..f5d72cc
--- /dev/null
+++ b/pages/VideoDetails/VideoDetails.wxss
@@ -0,0 +1,109 @@
+.videoplayer {
+ position: fixed;
+ top: 0;
+ left: 0;
+ height: 420rpx;
+ width: 750rpx;
+ z-index: 999;
+}
+.scrollarea {
+ position: relative;
+ top: 420rpx;
+ flex: 1;
+ overflow-y: hidden;
+
+ }
+
+.jieshao {
+ margin-bottom: 10rpx;
+ /* box-shadow: 0 4rpx 4rpx rgba(150, 150, 150, 0.5); */
+ position: relative;
+ height: 200rpx;
+}
+.video_biaoti {
+ text-align: center;
+ display: block;
+ font-size: 40rpx;
+}
+
+.video_miaoshu {
+ text-align: center;
+ display: block;
+ font-size: 30rpx;
+}
+.video_info {
+ position:absolute;
+ bottom: 10rpx;
+ display: block;
+ font-size: 24rpx;
+ right: 30rpx;
+}
+.video_list_content {
+ margin: 10rpx 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+
+.videolistcontainer {
+ border-radius: 20rpx;
+ margin: 10rpx 10rpx;
+ box-shadow: 0 0 4rpx rgba(0, 0, 0, 0.5);
+ width: 730rpx;
+ height: 200rpx;
+ position: relative;
+ display: flex;
+ justify-content: left;
+ align-items: center;
+ text-align: left;
+ overflow: hidden;
+}
+
+
+.videoimage {
+ width: 320rpx;
+ height: 180rpx;
+ border-radius: 10rpx;
+ margin-left: 10rpx;
+ overflow: hidden;
+ box-shadow: 0 5rpx 10rpx rgba(0, 0, 0, 0.5);
+}
+
+.videoinfo{
+ position: relative;
+ width: 390rpx;
+ height: 180rpx;
+ border-radius: 10rpx;
+ margin-left: 20rpx;
+ overflow: hidden;
+}
+.videotitle {
+ text-align: left;
+ font-size: 30rpx;
+}
+.videodetails {
+ display: block;
+ margin: 10rpx 0rpx;
+ font-size: 25rpx;
+ line-height: 30rpx;
+}
+
+.videoinfo2 {
+ position:absolute;
+ bottom: 0;
+ display: flex;
+ justify-content:left;
+}
+.videodata {
+ font-size: 20rpx;
+}
+
+.videotime {
+ font-size: 20rpx;
+ margin-left: 40rpx;
+}
+.coverimage {
+ width: 100%;
+ height: 100%;
+}
\ No newline at end of file
diff --git a/pages/VideoDetailsPage/VideoDetailsPage.js b/pages/VideoDetailsPage/VideoDetailsPage.js
new file mode 100644
index 0000000..5a9dafc
--- /dev/null
+++ b/pages/VideoDetailsPage/VideoDetailsPage.js
@@ -0,0 +1,83 @@
+// pages/VideoDetailsPage/VideoDetailsPage.js
+const htmlSnip =
+`
+在初中数学的考试当中,解所有题型都需要用到公式,公式的重要性不言而喻!为了更好的帮助孩子们记住初中数学常用的公式、定理,在此老师给大家总结了初中三年所有的公式及定理!这份资料十分珍贵,每次考试都能用的上!
+
+
+



















+
+
+
+
+`
+
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ htmlSnip,
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ },
+ //允许分享到朋友圈
+ onShareTimeline(){
+
+ }
+})
\ No newline at end of file
diff --git a/pages/VideoDetailsPage/VideoDetailsPage.json b/pages/VideoDetailsPage/VideoDetailsPage.json
new file mode 100644
index 0000000..6af4d92
--- /dev/null
+++ b/pages/VideoDetailsPage/VideoDetailsPage.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "Parser":"/Parser/index"
+ }
+
+}
\ No newline at end of file
diff --git a/pages/VideoDetailsPage/VideoDetailsPage.wxml b/pages/VideoDetailsPage/VideoDetailsPage.wxml
new file mode 100644
index 0000000..2712ea7
--- /dev/null
+++ b/pages/VideoDetailsPage/VideoDetailsPage.wxml
@@ -0,0 +1,3 @@
+VideoDetailsPage
+富文本测试
+
\ No newline at end of file
diff --git a/pages/VideoDetailsPage/VideoDetailsPage.wxss b/pages/VideoDetailsPage/VideoDetailsPage.wxss
new file mode 100644
index 0000000..03acfec
--- /dev/null
+++ b/pages/VideoDetailsPage/VideoDetailsPage.wxss
@@ -0,0 +1,7 @@
+/* pages/VideoDetailsPage/VideoDetailsPage.wxss */
+text {
+/* display:inherit; */
+ left: 400rpx;
+ top: 100 px;
+ padding-left: 20rpx;
+}
diff --git a/pages/WebPageDetails/WebPageDetails.js b/pages/WebPageDetails/WebPageDetails.js
new file mode 100644
index 0000000..193c84b
--- /dev/null
+++ b/pages/WebPageDetails/WebPageDetails.js
@@ -0,0 +1,103 @@
+// pages/WebPageDetails/WebPageDetails.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ htmlcontent: " ",
+ author: "",
+ title: "",
+ date: ""
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ var receivedIndex = options.index ?? 0;
+ var tempWebPagesContent = wx.getStorageSync('WebPagesContent')[receivedIndex];
+
+ if (tempWebPagesContent.网页内容) {
+ this.setData({
+ htmlcontent: tempWebPagesContent.网页内容,
+ author: tempWebPagesContent.发布人,
+ title: tempWebPagesContent.网页标题,
+ date: tempWebPagesContent.发布日期
+ });
+ } else {
+ this.setData({
+ htmlcontent: " ",
+ author: "",
+ title: "",
+ date: ""
+ });
+ }
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+ const promise = new Promise(resolve => {
+ setTimeout(() => {
+ resolve({
+ title: '叶雷讲数学'
+ })
+ }, 0)
+ })
+ return {
+ title: '叶雷讲数学',
+ path: '',
+ promise
+ }
+ },
+ //允许分享到朋友圈
+ onShareTimeline() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/WebPageDetails/WebPageDetails.json b/pages/WebPageDetails/WebPageDetails.json
new file mode 100644
index 0000000..4c3f6d8
--- /dev/null
+++ b/pages/WebPageDetails/WebPageDetails.json
@@ -0,0 +1,5 @@
+{
+ "usingComponents": {
+ "Parser":"/Parser/index"
+ }
+}
\ No newline at end of file
diff --git a/pages/WebPageDetails/WebPageDetails.wxml b/pages/WebPageDetails/WebPageDetails.wxml
new file mode 100644
index 0000000..996aedf
--- /dev/null
+++ b/pages/WebPageDetails/WebPageDetails.wxml
@@ -0,0 +1,12 @@
+
+ {{title}}
+
+
+ {{author}}
+ {{date}}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/WebPageDetails/WebPageDetails.wxss b/pages/WebPageDetails/WebPageDetails.wxss
new file mode 100644
index 0000000..f78b359
--- /dev/null
+++ b/pages/WebPageDetails/WebPageDetails.wxss
@@ -0,0 +1,63 @@
+/**index.wxss**/
+page {
+ height: 100vh;
+ display: flex;
+ flex-direction: column;
+ }
+ .scrollarea {
+ flex: 1;
+ overflow-y: hidden;
+ }
+ .pagetitle {
+ display: block;
+ font-size: 40rpx;
+ text-align: center;
+ }
+ .pagecontent {
+ display: block;
+ font-size: 30rpx;
+ text-align: left;
+ text-indent: 0rem;
+ margin-bottom: 30rpx;
+ padding: 0 10rpx;
+ }
+ .pagecontent:first-child {
+ margin-top: 30rpx;
+}
+ .pageimg {
+ width: 100%;
+ }
+ .pagevideo {
+ width: 750rpx;
+ height: 421rpx;
+ }
+ .pageauthor {
+ color: rgb(165, 165, 165);
+ font-size: 30rpx;
+ }
+ .pagedate {
+ color: rgb(151, 151, 151);
+ padding-left: 60rpx;
+ font-size: 30rpx;
+ }
+ .pageauthoranddate {
+ height: 80rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ .sharebtn[plain] {
+ display: inline;
+ color: cadetblue;
+ border:none;
+ font-size: 30rpx;
+ margin:0 rpx;
+ margin-left: 20rpx;
+ margin-right: 0rpx;
+ padding:0 ;
+ width: 120rpx;
+ }
+ .content123 {
+ margin: 0;
+ }
+
diff --git a/pages/index/index.js b/pages/index/index.js
new file mode 100644
index 0000000..ef8da4f
--- /dev/null
+++ b/pages/index/index.js
@@ -0,0 +1,256 @@
+// index.js
+const MyApi = require('../../Api/api.js');
+const updateManager = wx.getUpdateManager();
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ BaseURL: getApp().globalData.BaseURL,
+ imageList: [],
+ WebPages: [],
+ CourseList: [],
+ FreeCourseList: [],
+ webPageCount: 1,
+ hasTouchBottom:false,
+ bannerImgName:[]
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+ //获取首页banner图片
+ MyApi.ApiGetBannerImg()
+ .then(result => {
+ this.setData({
+ bannerImgName: result
+ });
+ })
+ .catch(err => {
+ console.error("请求失败:" + err);
+ });
+
+
+ //获取首页课程列表
+ wx.setStorageSync('IndexNewCourseData', []);
+
+ MyApi.ApiGetIndexCourseList()
+ .then(result => {
+ wx.setStorageSync('IndexNewCourseData', result.ListData);
+ this.setData({
+ CourseList: result.ListData
+ });
+ })
+ .catch(err => {
+ console.error("请求失败:" + err);
+ });
+
+ MyApi.ApiGetIndexFreeCourseList()
+ .then(result => {
+ wx.setStorageSync('IndexFreeCourseData', result.ListData);
+ this.setData({
+ FreeCourseList: result.ListData
+ });
+ })
+ .catch(err => {
+ console.error("请求失败:" + err);
+ });
+
+ //获取十个页面数据
+ MyApi.ApiGetWebPagesFromDB(1)
+ .then(result => {
+ wx.setStorageSync('WebPagesContent', result);
+ var tempWebPagesContent = wx.getStorageSync('WebPagesContent');
+ this.setData({
+ WebPages: tempWebPagesContent,
+ });
+ })
+ .catch(err => {
+ console.error("请求失败:" + err);
+ });
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+ //微信小程序更新
+updateManager.onCheckForUpdate(function (res) {
+ // 请求完新版本信息的回调
+ //console.log("是否有新版本:"+res.hasUpdate)
+})
+
+updateManager.onUpdateReady(function () {
+ wx.showModal({
+ title: '更新提示',
+ showCancel:false,
+ content: '新版本已准备好,即将重启应用',
+ success: function (res) {
+ if (res.confirm) {
+ // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
+ updateManager.applyUpdate()
+ }
+ }
+ })
+})
+
+updateManager.onUpdateFailed(function () {
+ // 新版本下载失败
+})
+
+
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+ //逻辑同onLoad()一样,略有修改\
+ //获取首页banner图片
+ MyApi.ApiGetBannerImg()
+ .then(result => {
+ //增加停止下拉刷新显示
+ wx.stopPullDownRefresh();
+
+ this.setData({
+ bannerImgName: result
+ });
+ })
+ .catch(err => {
+ console.error("请求失败:" + err);
+ });
+
+ //获取首页课程列表
+ wx.setStorageSync('IndexNewCourseData', []);
+
+ MyApi.ApiGetIndexCourseList()
+ .then(result => {
+
+ //增加停止下拉刷新显示
+ wx.stopPullDownRefresh();
+
+ wx.setStorageSync('IndexNewCourseData', result.ListData);
+ this.setData({
+ CourseList: result.ListData
+ });
+ })
+ .catch(err => {
+ console.error("请求失败:" + err);
+ });
+
+ MyApi.ApiGetIndexFreeCourseList()
+ .then(result => {
+ wx.setStorageSync('IndexFreeCourseData', result.ListData);
+ this.setData({
+ FreeCourseList: result.ListData
+ });
+ })
+ .catch(err => {
+ console.error("请求失败:" + err);
+ });
+
+ //获取十个页面数据
+ MyApi.ApiGetWebPagesFromDB(1)
+ .then(result => {
+ //增加停止下拉刷新显示
+ wx.stopPullDownRefresh();
+
+ wx.setStorageSync('WebPagesContent', result);
+ var tempWebPagesContent = wx.getStorageSync('WebPagesContent');
+ this.setData({
+ WebPages: tempWebPagesContent,
+ });
+ })
+ .catch(err => {
+ console.error("请求失败:" + err);
+ });
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+ MyApi.ApiGetWebPagesFromDB(this.data.webPageCount + 1)
+ .then(result => {
+ if (result) {
+ //使用展开运算符将两个JSON数据拼接在一起
+ var combinedJson = this.data.WebPages.concat(result);
+ var requireCount = this.data.webPageCount;
+ this.setData({
+ hasTouchBottom: false,
+ webPageCount: requireCount + 1,
+ WebPages: combinedJson
+ });
+
+ //更新缓存
+ wx.setStorageSync('WebPagesContent', combinedJson)
+
+ } else {
+ this.setData({
+ hasTouchBottom: true,
+ });
+ }
+
+ })
+ .catch(err => {
+ console.error("请求失败:" + err);
+ });
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ },
+ NavigatorToWebPageDetails(e) {
+ var index = e.currentTarget.dataset.index;
+ wx.navigateTo({
+ url: '/pages/WebPageDetails/WebPageDetails?index=' + index,
+ })
+ },
+
+ NavigatorToIndexNewCourseDetails(e) {
+ var number = e.currentTarget.dataset.number;
+ wx.navigateTo({
+ url: '/pages/IndexNewCourseDetails/IndexNewCourseDetails?number=' + number,
+ })
+ },
+
+ NavigatorToIndexFreeCourseDetails(e) {
+ var number = e.currentTarget.dataset.number;
+ wx.navigateTo({
+ url: '/pages/IndexFreeCourseDetails/IndexFreeCourseDetails?number=' + number,
+ })
+ },
+
+ //允许分享到朋友圈
+ onShareTimeline(e) {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/index/index.json b/pages/index/index.json
new file mode 100644
index 0000000..6e51c99
--- /dev/null
+++ b/pages/index/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "van-loading": "@vant/weapp/loading/index"
+ },
+ "onReachBottomDistance":50,
+ "enablePullDownRefresh":true
+}
\ No newline at end of file
diff --git a/pages/index/index.wxml b/pages/index/index.wxml
new file mode 100644
index 0000000..cfaad32
--- /dev/null
+++ b/pages/index/index.wxml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 新课上线
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 免费课程
+
+
+
+
+
+
+
+
+
+
+
+
+ 知识速通
+
+
+
+
+
+
+ {{imageshuzu['网页标题']}}
+
+
+ {{imageshuzu['详细介绍']}}
+
+
+
+
+ 已经到底啦!
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/index/index.wxss b/pages/index/index.wxss
new file mode 100644
index 0000000..a42f744
--- /dev/null
+++ b/pages/index/index.wxss
@@ -0,0 +1,137 @@
+/**index.wxss**/
+/* 暂时未用到
+page {
+
+} */
+
+
+.container {
+ padding:0;
+ align-items:center;
+ flex-direction:column;
+ justify-content:space-between;
+}
+.mulucontainer {
+ width: 710rpx;
+ height: 150rpx;
+ white-space: nowrap; /*强制子元素为一行 */
+ margin-left: 25rpx;
+}
+.navpage001 {
+ display: inline-block;
+ width: 150rpx;
+ height: 150rpx;
+ margin-right: 25rpx;
+ text-align: center;
+ font-size: 10px;
+ align-items: center;
+}
+.navpage001img {
+ margin:0 auto;
+ width: 60%;
+ height: 60%;
+}
+.mulucontainer .navpage001:last-child{
+ margin-right: 0;
+}
+.banner{
+ width: 100%;
+ height: 400rpx;
+}
+
+
+
+
+.shouyetupianlist {
+ display: flex;
+ flex-wrap: wrap;/* 允许内容换行 */
+ justify-content:space-between;/* 水平方向上两端对齐 */
+}
+.shouyetupianlistcontent {
+ /* display: inline; */
+ padding: 0;
+ margin: 20rpx;
+ height: 204rpx;
+ width: 334rpx; /* 每行两个图片,设置宽度为 48% 可以有一定的间距 */
+ border-radius: 20rpx;
+ overflow: hidden;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
+}
+.shouyetupianlistcontent01 {
+ position: relative;
+ padding: 0;
+ margin: 20rpx;
+ height: 260rpx;
+ width: 100%;
+ overflow: hidden;
+ border-radius: 20rpx;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
+}
+.indeximagelist {
+ width: 100%;
+ height: 204rpx;
+}
+.indeximagelist01 {
+ width: 100%;
+ height: 100%;
+}
+
+.tupianwenzi {
+ display: block;
+}
+
+.biaoti01 {
+ display: flex;
+ width: 100%;
+ height: 60rpx;
+ align-items: center;
+ padding-left: 20rpx;
+}
+.biaoti01img {
+ width: 40rpx;
+ height: 40rpx;
+}
+.hengxianglist01 {
+ display: flex;
+ width: 300rpx;
+ height: inherit; /* 推荐尺寸在300*250rpx 即150*125px */
+ margin: 0;
+ overflow: hidden;
+ border-radius: 20rpx;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
+}
+.indeximage{
+ border-radius: 20rpx;
+ height: 350rpx;
+ width: 710rpx;
+ transform: translate(20rpx, 30rpx);
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
+}
+
+.bannerswiper {
+ height: 390rpx;
+}
+.indeximagelistmiaosu {
+ font-size: 28rpx;
+ display:flex;
+ position: absolute;
+ top: 10rpx;
+ left: 300rpx;
+ height: 70rpx;
+ align-items: center;
+ padding-left: 20rpx;
+}
+.indeximagelistmiaosu01 {
+ display: inline;
+ position: absolute;
+ left: 300rpx;
+ top: 35px;
+ align-items: center;
+ padding-left: 20rpx;
+}
+.indeximagelistmiaosu0102 {
+ font-size: 20rpx;
+ position: relative;
+ top: -15px;
+ width: 370rpx;
+}
\ No newline at end of file
diff --git a/pages/kecheng/kecheng.js b/pages/kecheng/kecheng.js
new file mode 100644
index 0000000..7c109b9
--- /dev/null
+++ b/pages/kecheng/kecheng.js
@@ -0,0 +1,98 @@
+// pages/kecheng/kecheng.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ BaseURL:getApp().globalData.BaseURL,
+ hasCourse: false,
+ OwnedCourse: null,
+ intervalId: null
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+//每10ms获取一次数据,直到获取到个人信息数据为止
+// 使用箭头函数确保正确的作用域
+var longtime=0;
+this.intervalId = setInterval(() => {
+ //不间断刷新页面
+ this.onShow();
+ if (this.data.OwnedCourse){
+ clearInterval(this.intervalId);
+ return;
+ };
+
+ //计时500次,即5s后如果没有任何获取到已经登录的标志,依然断开计时器
+ if (longtime>=500){
+ clearInterval(this.intervalId);
+ console.log('暂无已购课程!');
+ };
+ longtime=longtime+1;
+
+}, 10);
+ },
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+ if ((wx.getStorageSync('UserInfoCache').OwnedCourse)&&(wx.getStorageSync('UserInfoCache').IsLogin)) {
+ this.setData({
+ hasCourse: true,
+ OwnedCourse: wx.getStorageSync('UserInfoCache').OwnedCourse
+ });
+ } else {
+ this.setData({
+ hasCourse: false,
+ OwnedCourse: null
+ });
+ }
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ NavigatorToVideoDetails(e) {
+ var index=e.currentTarget.dataset.index;
+ wx.navigateTo({
+ url: '/pages/VideoDetails/VideoDetails?index='+index,
+ })
+ }
+})
\ No newline at end of file
diff --git a/pages/kecheng/kecheng.json b/pages/kecheng/kecheng.json
new file mode 100644
index 0000000..24c22d2
--- /dev/null
+++ b/pages/kecheng/kecheng.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+
+ },
+ "navigationBarTitleText": "课程"
+}
\ No newline at end of file
diff --git a/pages/kecheng/kecheng.wxml b/pages/kecheng/kecheng.wxml
new file mode 100644
index 0000000..5a920d1
--- /dev/null
+++ b/pages/kecheng/kecheng.wxml
@@ -0,0 +1,17 @@
+
+
+ 暂无信息
+
+
+
+
+
+
+
+ {{item['课程']}}
+ {{item['课程介绍']}}
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/kecheng/kecheng.wxss b/pages/kecheng/kecheng.wxss
new file mode 100644
index 0000000..fbd0de4
--- /dev/null
+++ b/pages/kecheng/kecheng.wxss
@@ -0,0 +1,50 @@
+/* pages/kecheng/kecheng.wxss */
+.container {
+ padding:0;
+ align-items:center;
+ flex-direction:column;
+ justify-content:space-between;
+}
+.kecheng {
+ width: 710rpx;
+ height: 275rpx;
+ border-radius: 20rpx;
+ overflow: hidden;
+ display: flex;
+ justify-content: left;
+ align-items: center;
+ margin: 6px 0;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
+}
+
+
+
+.kecheng_video_up {
+ width: 400rpx;
+ height: 225rpx;
+ margin-left: 10rpx;
+}
+.kecheng_video_right {
+ margin-left: 5rpx;
+ width: 290rpx;
+ height: 225rpx;
+ overflow: hidden;
+
+}
+.kecheng_img {
+ background-color: #15457b;
+ width: 100%;
+ height: 100%;
+ border-radius: 15rpx;
+}
+.kecheng_title {
+ display: block;
+ font-size: 30rpx;
+ text-align: center;
+}
+.kecheng_details {
+ display: block;
+ font-size: 25rpx;
+ margin-top: 15rpx;
+ margin-left: 15rpx;
+}
\ No newline at end of file
diff --git a/pages/wode/wode.js b/pages/wode/wode.js
new file mode 100644
index 0000000..2fb74cb
--- /dev/null
+++ b/pages/wode/wode.js
@@ -0,0 +1,200 @@
+// pages/wode/wode.js
+const MyApi = require('../../Api/api.js');
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ value: '',
+ show: false,
+ passwordcode: null,
+ intervalId: null,
+ headiconurl: '/static/image/user.png',
+ urlstring: getApp().globalData.BaseURL + "/Images/ToolsIcon/toolsicon",
+ LoginBtnText: '登录注册',
+ UserNameText: '未登录',
+ user_openid: null,
+ YelayMaths_ID: null,
+ IsLogin: null,
+ IsAdministor: null,
+ LastLoginDate: null,
+ UserName: null,
+ NewUser: null
+ },
+ showdialog() {
+ if (wx.getStorageSync('UserInfoCache').IsLogin ) {
+ this.setData({
+ show: true,
+ value: ''
+ });
+ } else {
+ wx.showToast({
+ mask:true,
+ icon: 'error',
+ title: '请登录后操作!',
+ })
+ }
+
+ },
+ onChange(e) {
+ this.setData({
+ passwordcode: e.detail
+ });
+ },
+ onClose() {
+ this.setData({
+ show: false,
+ passwordcode: null
+ });
+ },
+ GetCourse() {
+ //点击确定后的课程获取
+ if (this.data.passwordcode) {
+ wx.showToast({
+ title: '请稍后...',
+ icon: 'loading',
+ mask:true,
+ duration: 10000
+ });
+
+ MyApi.ApiPasswordCodeValidate(wx.getStorageSync('UserInfoCache').user_openid, this.data.passwordcode)
+ .then(result => {
+ // 成功后执行的代码
+ try {
+ wx.hideToast();
+ } catch (error) {}
+
+ wx.showToast({
+ title: result.Data,
+ icon: 'error',
+ mask:true,
+ duration: 2000
+ });
+
+ //修改缓存已拥有课程
+ if (result.ReturnData) {
+ var tempcourse = wx.getStorageSync('UserInfoCache');
+ tempcourse.OwnedCourse=result.ReturnData;
+ wx.setStorageSync('UserInfoCache', tempcourse);
+ };
+ })
+ .catch(err => {
+ // 失败后执行的代码
+ console.error("请求失败:" + err);
+ });
+ } else {
+ wx.showToast({
+ title: '请输入课程码!',
+ icon: 'error',
+ mask:true,
+ duration: 2000
+ });
+ }
+
+ this.setData({
+ show: false,
+ });
+ },
+
+ redirectToTargetLoginout: function () {
+ wx.navigateTo({
+ url: '/pages/LoginOrOutDetails/LoginOrOutDetails?IsLogin=' + this.IsLogin,
+ })
+ },
+
+ NGT_SetPasswordCode: function () {
+ this.setData({
+ show: false,
+ });
+ wx.navigateTo({
+ url: '/pages/SetPasswordCode/SetPasswordCode',
+ });
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ var Storage = wx.getStorageSync('UserInfoCache');
+ if (Storage.IsLogin === "1") {
+ this.setData({
+ IsLogin: Storage.IsLogin,
+ headiconurl: getApp().globalData.BaseURL + "/Images/UsersHeadIcon/" + Storage.user_openid + ".png",
+ LoginBtnText: "个人信息",
+ UserNameText: Storage.UserName,
+ IsAdministor: Storage.IsAdministor,
+ });
+ } else {
+ this.setData({
+ IsLogin: null,
+ headiconurl: "/static/image/user.png",
+ LoginBtnText: "登录注册",
+ UserNameText: "未登录",
+ IsAdministor: null,
+ });
+ }
+ },
+
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+ this.onLoad();
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ function2_01() {
+ wx.showModal({
+ title: '提示',
+ content: '功能安排中。。。',
+ success(res) {
+ if (res.confirm) {
+ console.log('用户点击确定');
+ } else if (res.cancel) {
+ console.log('用户点击取消');
+ }
+ }
+ });
+ },
+
+
+
+})
\ No newline at end of file
diff --git a/pages/wode/wode.json b/pages/wode/wode.json
new file mode 100644
index 0000000..8988c2f
--- /dev/null
+++ b/pages/wode/wode.json
@@ -0,0 +1,8 @@
+{
+ "usingComponents": {
+ "van-dialog": "@vant/weapp/dialog/index",
+ "van-field": "@vant/weapp/field/index",
+ "van-button": "@vant/weapp/button/index"
+ },
+ "navigationBarTitleText": "个人中心"
+}
\ No newline at end of file
diff --git a/pages/wode/wode.wxml b/pages/wode/wode.wxml
new file mode 100644
index 0000000..be6494b
--- /dev/null
+++ b/pages/wode/wode.wxml
@@ -0,0 +1,61 @@
+
+
+点击此处设置课程码
+课程码
+
+
+
+
+
+
+
+
+
+ {{UserNameText}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Version 0.0.7
+ Copyright© 2024 YelayMaths. All Rights Reserved.
+
+
+
diff --git a/pages/wode/wode.wxss b/pages/wode/wode.wxss
new file mode 100644
index 0000000..564f585
--- /dev/null
+++ b/pages/wode/wode.wxss
@@ -0,0 +1,115 @@
+/* pages/wode/wode.wxss */
+.container {
+ padding:0;
+ align-items:center;
+ flex-direction:column;
+ justify-content:space-between;
+}
+
+.login {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ /* border: 3rpx solid rgb(110, 110, 110); */
+ width: 710rpx;
+ height: 150rpx;
+ border-radius: 20rpx;
+ margin: 20rpx;
+ border-radius: 20rpx;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
+}
+.touxiangimg {
+ display: flex;
+ width: 100rpx;
+ height: 100rpx;
+ border-radius: 50rpx;
+}
+.userinfo_name {
+ width: 500rpx;
+ height: 150rpx;
+ margin-left: 30rpx;
+ border-radius: 75rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.loginbtn {
+ display: block;
+ text-align: center;
+}
+.loginbtn[plain] {
+ color: #353535;
+ background-color: transparent;
+ border: 0px solid #353535;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
+ padding: 0rpx 20rpx;
+}
+.loginuserimg {
+ width: 100%;
+ height: 100%;
+ border-radius: 20rpx;
+}
+
+.functions1 {
+ border: 3rpx solid rgb(110, 110, 110);
+ width: 670rpx;
+ border-radius: 20rpx;
+ margin: 20rpx;
+ border-radius: 20rpx;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
+ padding: 20rpx;
+}
+.functions2 {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ /* border: 3rpx solid rgb(110, 110, 110); */
+ background-color: white;
+ width: 710rpx;
+ height: 100rpx;
+ border-radius: 20rpx;
+ margin: 8rpx 20rpx;
+ border-radius: 20rpx;
+ box-shadow: 0 2px 3px rgba(0, 0, 0, 0.5);
+}
+.jiantou {
+ font-size: 40rpx;
+}
+.zuobianwenzi {
+ font-size: 30rpx;
+}
+
+.function001 {
+ height: 150rpx;
+ width: 75rpx;
+
+ padding: 10rpx 47rpx;
+ text-align: center;
+ align-items: center;
+}
+.functionimg001 {
+ width: 75rpx;
+ height: 75rpx;
+}
+.functiontext001 {
+ font-size: 25rpx;
+}
+.functionstools {
+ position: relative;
+ top: 20rpx;
+ padding-bottom: 20rpx;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ align-items: center;
+}
+.version {
+ position: fixed;
+ bottom: 10rpx;
+ color: rgb(197, 197, 197);
+ font-size: 25rpx;
+ text-align: center;
+}
+
+
+