4个文件已删除
13个文件已修改
96个文件已添加
| | |
| | | import updateManager from './common/updateManager'; |
| | | import MG from './assets/js/middleGround/WebMiddleGroundApi' |
| | | import config from "./assets/js/config.js" |
| | | App({ |
| | | MG:MG, |
| | | MG: MG, |
| | | config: config, |
| | | onLaunch: function () { }, |
| | | onShow: function () { |
| | | updateManager(); |
| | |
| | | "pages/order/fill-tracking-no/index", |
| | | "pages/order/delivery-detail/index", |
| | | "pages/order/invoice/index", |
| | | "pages/usercenter/name-edit/index" |
| | | "pages/usercenter/name-edit/index", |
| | | "pages/teacherCertification/index", |
| | | "pages/personalCenter/index", |
| | | "pages/personalCenter/myOrder/index", |
| | | "pages/personalCenter/myCollection/index", |
| | | "pages/personalCenter/myMassage/index", |
| | | "pages/personalCenter/feedBack/index", |
| | | "pages/personalCenter/feedBackSubmit/index", |
| | | "pages/personalCenter/certificate/index", |
| | | "pages/personalCenter/publishBooks/index", |
| | | "pages/personalCenter/sampleBooks/index", |
| | | "pages/personalCenter/downloads/index", |
| | | "pages/personalCenter/activateProduct/index" |
| | | ], |
| | | "tabBar": { |
| | | "custom": true, |
| | |
| | | "text": "购物车" |
| | | }, |
| | | { |
| | | "pagePath": "pages/usercenter/index", |
| | | "pagePath": "pages/personalCenter/index", |
| | | "text": "我的" |
| | | } |
| | | ] |
| | |
| | | }); |
| | | }, |
| | | |
| | | //检查微信小程序是否注册 |
| | | checkWeChatAppAccount(data) { |
| | | return request({ |
| | | url: "/identity/api/CheckWeChatAppAccount", |
| | | method: "post", |
| | | data, |
| | | }); |
| | | }, |
| | | |
| | | |
| | | // 通过手机号重置密码 |
| | | changePasswordByMobilePhone(data) { |
| | |
| | | data, |
| | | }); |
| | | }, |
| | | loginByWeChatAppCode(data) { |
| | | return request({ |
| | | url: "/identity/api/LoginByWeChatAppCode", |
| | | method: "post", |
| | | data, |
| | | }); |
| | | }, |
| | | |
| | | // 获取邮箱验证码 |
| | | getEmailCode(data) { |
| | |
| | | import config from "@/assets/js/config.js"; |
| | | |
| | | import jobApi from "./middleGround/api/job"; // newJobWithNewView // newSession, |
| | | import config from "./config.js"; |
| | | import jobApi from "./middleGround/api/job";// newJobWithNewView // newSession, |
| | | |
| | | export function setSessionGuid(type, id) { |
| | | var cityCode = null; |
| | |
| | | }; |
| | | |
| | | jobApi.newSession(params).then(res => { |
| | | storage.set("sessionGuid", res, 30); |
| | | wx.setStorageSync("sessionGuid", res); |
| | | setNewView(type, id); |
| | | }); |
| | | } |
| | |
| | | } |
| | | |
| | | export function setNewView(type, id) { |
| | | if (!sessionStorage.getItem("sessionGuid")) { |
| | | if (!wx.getStorageSync("sessionGuid")) { |
| | | setSessionGuid(type, id); |
| | | } |
| | | |
| | | const sessionGuid = sessionStorage.getItem("sessionGuid"); |
| | | const fromPath = sessionStorage.getItem("fromPath"); |
| | | const toPath = sessionStorage.getItem("toPath"); |
| | | const sessionGuid = wx.getStorageSync("sessionGuid"); |
| | | const fromPath = wx.getStorageSync("fromPath"); |
| | | const toPath = wx.getStorageSync("toPath"); |
| | | if (sessionGuid) { |
| | | let params = { |
| | | sessionGuid: sessionGuid, |
| | |
| | | if (id) { |
| | | params[type] = id; |
| | | } |
| | | jobApi.newJobWithNewView(params).then(res => {}); |
| | | jobApi.newJobWithNewView(params).then(res => { }); |
| | | } |
| | | } |
| | |
| | | import config from "../js/config" |
| | | |
| | | |
| | | let clearStorage = false; |
| | | let timer = null; |
| | | const request = (params) => { |
| | | let fullUrl = `${config.requestCtx}${params.url}` |
| | | let token = wx.getStorageSync(config.tokenKey) ? wx.getStorageSync(config.tokenKey) : '' |
| | |
| | | { |
| | | icon: 'person', |
| | | text: '个人中心', |
| | | url: 'pages/usercenter/index', |
| | | url: 'pages/personalCenter/index', |
| | | }, |
| | | ]; |
| | |
| | | import { fetchHome } from '../../services/home/home'; |
| | | import moment from 'moment' |
| | | import { setSessionGuid } from "../../assets/js/userAction" |
| | | const app = getApp() |
| | | Page({ |
| | | data: { |
| | | backUrl: null, |
| | | userInfo: {}, |
| | | tabList: [], //目录 |
| | | pageLoading: false, |
| | | current: 1,//轮播图参数 |
| | |
| | | navigation: { type: 'dots' },//轮播图参数 |
| | | bannerList: [], //轮播图列表 |
| | | specialSubjectList: [],//专题讨论 |
| | | activeItem: 0,//精选课程默认选中 |
| | | courseTypeList: [],//精选课程分类 |
| | | courseList: [], |
| | | bookTypeList: [],//图书类型 |
| | | activeItem1: 0, |
| | | booksList: [], |
| | | textbookList: [] |
| | | readBookList: [], //数字阅读 |
| | | textbookList: [], //数字教材 |
| | | rankingList: []//排行榜 |
| | | }, |
| | | |
| | | goodListPagination: { |
| | | index: 0, |
| | | num: 20, |
| | | }, |
| | | |
| | | privateData: { |
| | | tabIndex: 0, |
| | | }, |
| | | |
| | | onShow() { |
| | | this.getTabBar().init(); |
| | | this.loadHomePage(); |
| | | this.getBannerList() |
| | | }, |
| | | |
| | | onLoad() { |
| | | onLoad(options) { |
| | | if (options.backUrl) { |
| | | let backUrl = JSON.parse(decodeURIComponent(options.backUrl)); |
| | | if (backUrl.options) { |
| | | for (let key in backUrl.options) { |
| | | const value = backUrl.options[key] |
| | | backUrl.backUrl += `${key}=${value}&` |
| | | } |
| | | } |
| | | this.setData({ |
| | | backUrl: backUrl.backUrl |
| | | }) |
| | | } |
| | | this.getTestLoginInfo() |
| | | this.init(); |
| | | }, |
| | | |
| | | onReachBottom() { |
| | | }, |
| | | onPullDownRefresh() { |
| | |
| | | }, |
| | | init() { |
| | | this.getSubjectList(); |
| | | this.getCourseList(); |
| | | this.getCourseTypeListList(); |
| | | this.getBookTypeList(); |
| | | this.getReadBookList(); |
| | | this.getTextbookListList(); |
| | | this.getRankingList() |
| | | }, |
| | | // 获取测试登录时的token |
| | | getTestLoginInfo() { |
| | | const token = wx.getStorageSync(app.config.tokenKey) |
| | | if (!token) { |
| | | wx.login({ |
| | | success: (res) => { |
| | | wx.getUserInfo({ |
| | | success: (infoRes) => { |
| | | app.MG.identity.checkWeChatAppAccount({ |
| | | code: res.code, |
| | | appCode: app.config.appRefCode, |
| | | encryptedData: infoRes.encryptedData, |
| | | iv: infoRes.iv |
| | | }).then(loginRes => { |
| | | if (!loginRes) { |
| | | // wx.navigateTo({ |
| | | // url: "/pages/index/bindInfo/index?code=" + res.code, |
| | | // }); |
| | | } else { |
| | | wx.login({ |
| | | success: (res) => { |
| | | app.MG.identity.loginByWeChatAppCode({ |
| | | code: res.code, |
| | | appRefCode: app.config.appRefCode, |
| | | platform: "weChatApp", |
| | | encryptedData: infoRes.encryptedData, |
| | | iv: infoRes.iv |
| | | }).then(res => { |
| | | if (res && res.status == "Ok") { |
| | | wx.setStorageSync(app.config.tokenKey, res.token); |
| | | setSessionGuid() |
| | | this.getCurrentUserInfo() |
| | | } |
| | | }) |
| | | }, |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | getCurrentUserInfo() { |
| | | app.MG.identity.getCurrentAppUser().then(res => { |
| | | console.log(res, "userInfo"); |
| | | // 用户信息优先级:教师认证 > 微信 > 学生(注册时默认) |
| | | if (res) { |
| | | let defaultUser = {}; |
| | | let WeChatInfo = res.infoList.find((item) => item.type === "WeChat"); |
| | | let phoneNumber = res.secretList.find(i => i.type == 'MobilePhone') |
| | | if (WeChatInfo) { |
| | | defaultUser = { |
| | | nickName: WeChatInfo.name, |
| | | avatarUrl: WeChatInfo.icon, |
| | | weChatId: WeChatInfo.id |
| | | } |
| | | } |
| | | if (phoneNumber) { |
| | | defaultUser.phoneNumber = phoneNumber.credential |
| | | } |
| | | this.setData({ |
| | | userInfo: defaultUser, |
| | | }) |
| | | wx.setStorageSync(app.config.userInfoKey, JSON.stringify(this.data.userInfo)); |
| | | } |
| | | if (this.data.backUrl) { |
| | | wx.navigateTo({ |
| | | url: this.data.backUrl, |
| | | }) |
| | | } else { |
| | | wx.switchTab({ |
| | | url: '/pages/home/home' |
| | | }) |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | getBannerList() { |
| | | const list = [] |
| | |
| | | }, |
| | | paging: { |
| | | start: 0, |
| | | size: 3 |
| | | size: 4 |
| | | }, |
| | | fields: { |
| | | liveTime: [], |
| | |
| | | } |
| | | } |
| | | app.MG.store.getProductList(obj).then((res) => { |
| | | res.datas.forEach((item) => { |
| | | item.liveTime = item.liveTime ? moment(item.liveTime).format("MM-DD HH:mm:ss") : ''; |
| | | item.startTime = item.startTime ? moment(item.startTime).format("MM-DD HH:mm:ss") : ''; |
| | | item.price = item.price ? item.price.toFixed(2) : item.price; |
| | | }); |
| | | this.setData({ |
| | | specialSubjectList: res.datas |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | //精选课程分类 |
| | | getCourseTypeListList() { |
| | | const data = { |
| | | path: 'jsek_homepageDigitalCourses', |
| | | filterList: [], |
| | | queryType: '\\', |
| | | searchList: [], |
| | | size: '20', |
| | | start: '0', |
| | | storeRefCode: app.config.digitalCourses, |
| | | sort: { type: 'Asc', field: 'LinkOrder' } |
| | | } |
| | | app.MG.store.getStoreChannelList(data).then((res) => { |
| | | if (res.datas && res.datas.length > 0) { |
| | | let dataList = []; |
| | | dataList.push(...res.datas) |
| | | this.setData({ |
| | | courseTypeList: dataList, |
| | | activeItem: 0 |
| | | }) |
| | | this.getCourseList(res.datas[0]) |
| | | } |
| | | }) |
| | | }, |
| | | //精选课程列表 |
| | | getCourseList(item) { |
| | | const obj = { |
| | | storeInfo: "app.config.goodsStore", |
| | | path: 'jsek_homepageDigitalTextbooks', |
| | | path: item.pathList + '\\' + item.id, |
| | | coverSize: { |
| | | width: 260 |
| | | }, |
| | |
| | | } |
| | | } |
| | | app.MG.store.getProductList(obj).then((res) => { |
| | | res.datas.forEach((item) => { |
| | | item.price = item.price ? item.price.toFixed(2) : item.price; |
| | | }); |
| | | this.setData({ |
| | | courseList: res.datas |
| | | }) |
| | | }) |
| | | }, |
| | | tabChangeHandle(item) { |
| | | let info = this.data.courseTypeList[item.detail.value] |
| | | this.getCourseList(info) |
| | | }, |
| | | //图书服务分类 |
| | | getBookTypeList() { |
| | | const data = { |
| | | path: 'jsek_homepageBookService', |
| | | filterList: [], |
| | | queryType: '\\', |
| | | searchList: [], |
| | | size: '20', |
| | | start: '0', |
| | | storeRefCode: app.config.goodsStore, |
| | | sort: { type: 'Asc', field: 'LinkOrder' } |
| | | } |
| | | app.MG.store.getStoreChannelList(data).then((res) => { |
| | | if (res.datas && res.datas.length > 0) { |
| | | let dataList = []; |
| | | dataList.push(...res.datas) |
| | | this.setData({ |
| | | bookTypeList: dataList, |
| | | activeItem1: 0 |
| | | }) |
| | | this.getBooksList(dataList[0]) |
| | | } |
| | | }) |
| | | }, |
| | | //图书服务列表 |
| | | getBooksList(item) { |
| | | const obj = { |
| | | storeInfo: app.config.goodsStore, |
| | | path: item.pathList + '\\' + item.id, |
| | | queryType: '*', |
| | | coverSize: { |
| | | width: 150 |
| | | }, |
| | | paging: { |
| | | start: 0, |
| | | size: 6 |
| | | }, |
| | | fields: { |
| | | author: [] |
| | | } |
| | | } |
| | | app.MG.store.getProductList(obj).then((res) => { |
| | | this.setData({ |
| | | booksList: res.datas, |
| | | }) |
| | | }) |
| | | }, |
| | | //图书服务 |
| | | tabBookClick(item) { |
| | | let info = this.data.bookTypeList[item.detail.value] |
| | | this.getBooksList(info) |
| | | }, |
| | | //数字阅读 |
| | | getReadBookList() { |
| | | const obj = { |
| | | storeInfo: app.config.digitalTextbooks, |
| | | path: 'jsek_homepageDigitalTextbooks', |
| | | coverSize: { |
| | | width: 150 |
| | | }, |
| | | paging: { |
| | | start: 0, |
| | | size: 3 |
| | | }, |
| | | fields: { |
| | | author: [] |
| | | } |
| | | } |
| | | app.MG.store.getProductList(obj).then((res) => { |
| | | this.setData({ |
| | | readBookList: res.datas |
| | | }) |
| | | }) |
| | | }, |
| | | //数字教材 |
| | | getTextbookListList() { |
| | | const obj = { |
| | | storeInfo: app.config.digitalTextbooks, |
| | | path: 'jsek_homepageDigitalTextbooks', |
| | | coverSize: { |
| | | width: 150 |
| | | }, |
| | | paging: { |
| | | start: 0, |
| | | size: 6 |
| | | }, |
| | | fields: { |
| | | author: [], |
| | | } |
| | | } |
| | | app.MG.store.getProductList(obj).then((res) => { |
| | | this.setData({ |
| | | textbookList: res.datas |
| | | }) |
| | | }) |
| | | }, |
| | | //获取排行榜 |
| | | getRankingList() { |
| | | const obj = { |
| | | storeInfo: app.config.digitalTextbooks, |
| | | path: 'jsek_homepageDigitalTextbooks', |
| | | coverSize: { |
| | | width: 150 |
| | | }, |
| | | paging: { |
| | | start: 0, |
| | | size: 6 |
| | | }, |
| | | fields: { |
| | | author: [], |
| | | } |
| | | } |
| | | app.MG.store.getProductList(obj).then((res) => { |
| | | this.setData({ |
| | | rankingList: res.datas |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | }); |
| | |
| | | "goods-list": "/components/goods-list/index", |
| | | "load-more": "/components/load-more/index", |
| | | "t-grid": "tdesign-miniprogram/grid/grid", |
| | | "t-grid-item": "tdesign-miniprogram/grid-item/grid-item" |
| | | "t-grid-item": "tdesign-miniprogram/grid-item/grid-item", |
| | | "t-empty": "tdesign-miniprogram/empty/empty" |
| | | } |
| | | } |
| | |
| | | <view class="icon"> |
| | | <t-image src="/static/images/home/zhuantitaolun.png" mode="heightFix" class="iconImage" /> |
| | | </view> |
| | | <view bindtap="onMoreGuide"> |
| | | <view bindtap="onMoreGuide" class="flex"> |
| | | <text class="more">更多</text> |
| | | <t-icon name="chevron-right" size="32rpx" color="#ff6d00" /> |
| | | </view> |
| | | </view> |
| | | <view> |
| | | <view wx:for="{{specialSubjectList}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}"> |
| | | <view class="specialSubject-img"> |
| | | <t-image src="{{item.icon}}" mode="aspectFill" width="50" height="50" /> |
| | | </view> |
| | | <view class="body-info"> |
| | | <view>{{item.name}}</view> |
| | | <view class="listBox"> |
| | | <view wx:for="{{specialSubjectList}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="listItemBox"> |
| | | <view class="listItem"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" /> |
| | | </view> |
| | | <view class="body-info"> |
| | | <view class="name">{{item.name}}</view> |
| | | <view class="time" wx:if="{{item.liveTime}}">直播时间:<text>{{item.liveTime}}</text></view> |
| | | <view class="time" wx:if="{{item.startTime}}">开播时间:<text>{{ item.startTime }}</text></view> |
| | | <view class="time" wx:if="{{!item.liveTime && !item.startTime}}">开播时间:<text class="grey">待定</text></view> |
| | | <view class="flex jc-sb"> |
| | | <text class="author">{{item.lecturer}}</text> |
| | | <text class="price" wx:if="{{item.price == 0}}">免费</text> |
| | | <text class="price" wx:if="{{item.price !== 0}}">¥{{item.price}}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <view class="tabCardPublic"> |
| | | <view class="icon"> |
| | | <t-image src="/static/images/home/jingxuankecheng@2x.png" mode="heightFix" class="iconImage" /> |
| | | </view> |
| | | <view bindtap="onMoreGuide" class="flex"> |
| | | <text class="more">更多</text> |
| | | <t-icon name="chevron-right" size="32rpx" color="#ff6d00" /> |
| | | </view> |
| | | </view> |
| | | <view class="home-page-tabs"> |
| | | <t-tabs t-class="t-tabs" t-class-active="tabs-external__active" t-class-item="tabs-external__item" defaultValue="{{activeItem}}" space-evenly="{{false}}" bind:change="tabChangeHandle"> |
| | | <t-tab-panel wx:for="{{courseTypeList}}" wx:for-index="index" wx:key="index" label="{{item.name}}" value="{{index}}" /> |
| | | </t-tabs> |
| | | </view> |
| | | <view class="listBox1"> |
| | | <view wx:if="{{courseList.length>0}}"> |
| | | <view wx:for="{{courseList}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="listItemBox"> |
| | | <view class="listItem flex"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" /> |
| | | </view> |
| | | <view class="body-info"> |
| | | <view class="name">{{item.name}}</view> |
| | | <view class="flex jc-sb"> |
| | | <text class="author">{{item.courseLeader}}</text> |
| | | <text>{{item.classHours}}课时</text> |
| | | </view> |
| | | <view class="priceBox flex jc-sb"> |
| | | <text class="price" wx:if="{{item.price == 0}}">免费</text> |
| | | <text class="price" wx:if="{{item.price !== 0}}">¥{{item.price}}</text> |
| | | <image src="/static/images/home/home-cart.png" mode="aspectFill" class="addCartImg" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="empyt" wx:else> |
| | | <t-empty icon="folder-open" description="暂无数据" font-size="80" /> |
| | | </view> |
| | | </view> |
| | | <view class="tabCardPublic"> |
| | | <view class="icon"> |
| | | <t-image src="/static/images/home/tushufuwu@2x.png" mode="heightFix" class="iconImage" /> |
| | | </view> |
| | | <view bindtap="onMoreGuide" class="flex"> |
| | | <text class="more">更多</text> |
| | | <t-icon name="chevron-right" size="32rpx" color="#ff6d00" /> |
| | | </view> |
| | | </view> |
| | | <view class="home-page-tabs"> |
| | | <t-tabs t-class="t-tabs" t-class-active="tabs-external__active" t-class-item="tabs-external__item" defaultValue="{{activeItem1}}" space-evenly="{{false}}" bind:change="tabBookClick"> |
| | | <t-tab-panel wx:for="{{bookTypeList}}" wx:for-index="index" wx:key="index" label="{{item.name}}" value="{{index}}" /> |
| | | </t-tabs> |
| | | </view> |
| | | <view class="listBox2"> |
| | | <view wx:if="{{booksList.length > 0}}" class="flex"> |
| | | <view wx:for="{{booksList}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="booksListItemBox"> |
| | | <view class="listItem"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" /> |
| | | </view> |
| | | <view class="body-info"> |
| | | <view class="name">{{item.name}}</view> |
| | | <view class="author">{{item.author}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="empyt" wx:else> |
| | | <t-empty icon="folder-open" description="暂无数据" font-size="80" /> |
| | | </view> |
| | | </view> |
| | | <view class="tabCardPublic"> |
| | | <view class="icon"> |
| | | <t-image src="/static/images/home/shuziyuedu1@2x.png" mode="heightFix" class="iconImage" /> |
| | | </view> |
| | | <view bindtap="onMoreGuide" class="flex"> |
| | | <text class="more">更多</text> |
| | | <t-icon name="chevron-right" size="32rpx" color="#ff6d00" /> |
| | | </view> |
| | | </view> |
| | | <view class="listBox2 flex"> |
| | | <view wx:for="{{readBookList}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="booksListItemBox"> |
| | | <view class="listItem"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" /> |
| | | </view> |
| | | <view class="body-info"> |
| | | <view class="name">{{item.name}}</view> |
| | | <view class="author">{{item.author}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="tabCardPublic"> |
| | | <view class="icon"> |
| | | <t-image src="/static/images/home/shuzijiaocai1@2x.png" mode="heightFix" class="iconImage" /> |
| | | </view> |
| | | <view bindtap="onMoreGuide" class="flex"> |
| | | <text class="more">更多</text> |
| | | <t-icon name="chevron-right" size="32rpx" color="#ff6d00" /> |
| | | </view> |
| | | </view> |
| | | <view class="listBox3"> |
| | | <view wx:if="{{textbookList.length > 0}}" class="listBox3"> |
| | | <view wx:for="{{textbookList}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="textbooksItemBox"> |
| | | <view class="listItem flex"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" /> |
| | | </view> |
| | | <view class="body-info"> |
| | | <view class="name">{{item.name}}</view> |
| | | <view class="introduction">{{item.description}}</view> |
| | | <view class="author">{{item.author}}</view> |
| | | <view class="priceBox flex jc-sb"> |
| | | <text class="price" wx:if="{{item.price == 0}}">免费</text> |
| | | <text class="price" wx:if="{{item.price !== 0}}">¥{{item.price}}</text> |
| | | <image src="/static/images/home/home-cart.png" mode="aspectFill" class="addCartImg" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="empyt" wx:else> |
| | | <t-empty icon="folder-open" description="暂无数据" font-size="80" /> |
| | | </view> |
| | | </view> |
| | | <view class="tabCardPublic"> |
| | | <view class="icon"> |
| | | <t-image src="/static/images/home/paihangbang@2x.png" mode="heightFix" class="iconImage" /> |
| | | </view> |
| | | <view bindtap="onMoreGuide" class="flex"> |
| | | <text class="more">更多</text> |
| | | <t-icon name="chevron-right" size="32rpx" color="#ff6d00" /> |
| | | </view> |
| | | </view> |
| | | <view class="listBox2 rankingList flex"> |
| | | <view wx:for="{{rankingList}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="booksListItemBox"> |
| | | <view class="listItem"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" /> |
| | | </view> |
| | | <view class="body-info"> |
| | | <view class="name">{{item.name}}</view> |
| | | <view class="author">{{item.author}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <load-more list-is-empty="{{!goodsList.length}}" status="{{goodsListLoadStatus}}" bind:retry="onReTry" /> |
| | | <t-toast id="t-toast" /> |
| | |
| | | padding-bottom: calc(env(safe-area-inset-bottom) + 96rpx); |
| | | } |
| | | |
| | | .home-page-header { |
| | | position: relative; |
| | | .flex { |
| | | display: flex; |
| | | } |
| | | |
| | | .home-page-header .search { |
| | | position: absolute; |
| | | top: 20rpx; |
| | | left: 0; |
| | | width: 100%; |
| | | z-index: 99; |
| | | } |
| | | |
| | | .home-page-header .t-search__input-container { |
| | | border-radius: 15rpx !important; |
| | | margin: 0 24rpx; |
| | | height: 64rpx !important; |
| | | } |
| | | |
| | | .home-page-header .t-search__input { |
| | | font-size: 28rpx !important; |
| | | color: rgb(116, 116, 116) !important; |
| | | } |
| | | |
| | | .home-page-header .swiper-wrap .t-swiper-host { |
| | | border-radius: 0; |
| | | } |
| | | |
| | | .home-page-header .t-image__swiper { |
| | | width: 100%; |
| | | height: 300rpx; |
| | | .jc-sb { |
| | | justify-content: space-between |
| | | } |
| | | |
| | | .home-page-container { |
| | | margin-top: 20rpx; |
| | | display: block; |
| | | padding: 0 24rpx; |
| | | } |
| | |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 20rpx 5rpx; |
| | | margin: 20rpx 5rpx; |
| | | box-sizing: border-box; |
| | | border-bottom: 2rpx solid #fadfbc; |
| | | } |
| | | |
| | | .tabCardPublic .icon { |
| | | width: 246rpx; |
| | | height: 72rpx; |
| | | width: 156rpx; |
| | | height: 48rpx; |
| | | } |
| | | |
| | | .tabCardPublic .icon .t-image { |
| | |
| | | |
| | | .tabCardPublic .more { |
| | | font-size: 24rpx; |
| | | color: #999; |
| | | color: #ff6d00; |
| | | } |
| | | |
| | | .listBox { |
| | | padding: 20rpx 0; |
| | | display: flex; |
| | | flex-flow: row wrap; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .listBox .listItemBox { |
| | | width: 49%; |
| | | margin-bottom: 30rpx; |
| | | } |
| | | |
| | | .listItemBox .listItem { |
| | | background: #fff; |
| | | box-sizing: border-box; |
| | | border-radius: 5px; |
| | | overflow: hidden; |
| | | box-shadow: 0px 0px 20rpx 2px #f1f1f1; |
| | | } |
| | | |
| | | .listBox .specialSubject-img { |
| | | width: 100%; |
| | | height: 120rpx; |
| | | } |
| | | |
| | | .specialSubject-img image { |
| | | width: 100%; |
| | | height: 100%; |
| | | object-fit: contain; |
| | | } |
| | | |
| | | .body-info { |
| | | padding: 20rpx; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .body-info .name { |
| | | font-size: 32rpx; |
| | | height: 88rpx; |
| | | color: #333333; |
| | | font-weight: bold; |
| | | line-height: 44rpx; |
| | | display: -webkit-box; |
| | | margin-bottom: 10rpx; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 2; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .body-info .time { |
| | | font-size: 26rpx; |
| | | margin-bottom: 10rpx; |
| | | } |
| | | |
| | | .body-info .author { |
| | | font-size: 26rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .body-info .price { |
| | | font-size: 26rpx; |
| | | color: #ff6d00; |
| | | } |
| | | |
| | | .t-tabs .t-tabs__item--active { |
| | | color: #ff6d00; |
| | | font-size: 30rpx; |
| | | /* background-image: url('/static/images/home/click-icon@2x.png'); */ |
| | | background-repeat: no-repeat; |
| | | background-size: cover; |
| | | /* 确保背景图像不会被拉伸 */ |
| | | /* background-position: right; */ |
| | | } |
| | | |
| | | .t-tabs .t-tabs__track { |
| | | display: none; |
| | | } |
| | | |
| | | .t-tabs .t-tabs--top .t-tabs__scroll { |
| | | border-bottom: none !important; |
| | | } |
| | | |
| | | .t-tabs .t-tabs-scroll { |
| | | border: none !important; |
| | | } |
| | | |
| | | .listBox1, |
| | | .listBox2 { |
| | | padding: 50rpx 0; |
| | | } |
| | | |
| | | .listBox1 .listItemBox { |
| | | height: 220rpx; |
| | | margin-bottom: 30rpx; |
| | | } |
| | | |
| | | .listBox1 .specialSubject-img { |
| | | width: 400rpx; |
| | | height: 218rpx; |
| | | } |
| | | |
| | | .listBox1 .addCartImg, |
| | | .listBox3 .addCartImg { |
| | | width: 30rpx; |
| | | height: 30rpx; |
| | | } |
| | | |
| | | .listBox1 .priceBox { |
| | | margin-top: 14rpx; |
| | | } |
| | | |
| | | .listBox2 { |
| | | flex-flow: row wrap; |
| | | } |
| | | |
| | | .listBox2 .flex { |
| | | flex-flow: row wrap; |
| | | } |
| | | |
| | | .listBox2 .booksListItemBox { |
| | | width: calc(100%/3 - 30rpx); |
| | | margin-bottom: 30rpx; |
| | | margin-right: 45rpx; |
| | | } |
| | | |
| | | .listBox2 :nth-child(3), |
| | | .listBox2 :nth-child(6) { |
| | | margin-right: 0; |
| | | } |
| | | |
| | | .listBox2 .specialSubject-img { |
| | | height: 300rpx; |
| | | width: 100%; |
| | | box-shadow: 0px 0px 20rpx 2px #f1f1f1; |
| | | } |
| | | |
| | | .listBox2 .body-info { |
| | | padding: 20rpx 0; |
| | | } |
| | | |
| | | .listBox2 .author { |
| | | height: 30rpx; |
| | | color: #333333; |
| | | font-weight: bold; |
| | | line-height: 30rpx; |
| | | display: -webkit-box; |
| | | margin-bottom: 10rpx; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 1; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .listBox2 .empyt { |
| | | padding: 20rpx; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .listBox3 .textbooksItemBox { |
| | | margin-bottom: 30rpx; |
| | | } |
| | | |
| | | .listBox3 .textbooksItemBox .specialSubject-img { |
| | | width: 190rpx; |
| | | height: 260rpx; |
| | | box-shadow: 0px 0px 20rpx 2px #f1f1f1; |
| | | } |
| | | |
| | | .listBox3 .body-info { |
| | | width: calc(100% - 190rpx); |
| | | } |
| | | |
| | | .listBox3 .name { |
| | | font-size: 32rpx; |
| | | height: 44rpx; |
| | | color: #333333; |
| | | font-weight: bold; |
| | | line-height: 44rpx; |
| | | display: -webkit-box; |
| | | margin-bottom: 10rpx; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 1; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .listBox3 .introduction { |
| | | color: #B4B6BD; |
| | | line-height: 36rpx; |
| | | display: -webkit-box; |
| | | margin-bottom: 10rpx; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 2; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .listBox3 .author { |
| | | line-height: 40rpx; |
| | | margin-bottom: 30rpx; |
| | | } |
| | | |
| | | .readList { |
| | | overflow: auto; |
| | | } |
New file |
| | |
| | | // pages/personalCenter/activateProduct/index.js |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | } |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "激活商品", |
| | | "usingComponents": {} |
| | | } |
New file |
| | |
| | | <!--pages/personalCenter/activateProduct/index.wxml--> |
| | | <text>pages/personalCenter/activateProduct/index.wxml</text> |
New file |
| | |
| | | /* pages/personalCenter/activateProduct/index.wxss */ |
New file |
| | |
| | | |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | } |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "我的证书", |
| | | "usingComponents": {} |
| | | } |
New file |
| | |
| | | const AuthStepType = { |
| | | ONE: 1, |
| | | TWO: 2, |
| | | THREE: 3, |
| | | }; |
| | | |
| | | Component({ |
| | | options: { |
| | | multipleSlots: true, |
| | | }, |
| | | properties: { |
| | | currAuthStep: { |
| | | type: Number, |
| | | value: AuthStepType.ONE, |
| | | }, |
| | | userInfo: { |
| | | type: Object, |
| | | value: {}, |
| | | }, |
| | | isNeedGetUserInfo: { |
| | | type: Boolean, |
| | | value: false, |
| | | }, |
| | | }, |
| | | data: { |
| | | defaultAvatarUrl: |
| | | 'https://cdn-we-retail.ym.tencent.com/miniapp/usercenter/icon-user-center-avatar@2x.png', |
| | | AuthStepType, |
| | | }, |
| | | methods: { |
| | | gotoUserEditPage() { |
| | | this.triggerEvent('gotoUserEditPage'); |
| | | }, |
| | | }, |
| | | }); |
New file |
| | |
| | | { |
| | | "component": true, |
| | | "usingComponents": { |
| | | "t-icon": "tdesign-miniprogram/icon/icon", |
| | | "t-avatar": "tdesign-miniprogram/avatar/avatar" |
| | | } |
| | | } |
New file |
| | |
| | | <view class="user-center-card"> |
| | | <!-- 未登录的情况 --> |
| | | <block wx:if="{{currAuthStep === AuthStepType.ONE}}"> |
| | | <view class="user-center-card__header" bind:tap="gotoUserEditPage"> |
| | | <t-avatar image="{{userInfo.avatarUrl || defaultAvatarUrl}}" class="user-center-card__header__avatar" /> |
| | | <view class="user-center-card__header__name">{{'请登录'}}</view> |
| | | <view>设置</view> |
| | | </view> |
| | | </block> |
| | | <!-- 已登录但未授权用户信息情况 --> |
| | | <block wx:if="{{currAuthStep === AuthStepType.TWO}}"> |
| | | <view class="user-center-card__header"> |
| | | <t-avatar image="{{userInfo.avatarUrl || defaultAvatarUrl}}" class="user-center-card__header__avatar" /> |
| | | <view class="user-center-card__header__name">{{userInfo.nickName || '微信用户'}}</view> |
| | | <!-- 需要授权用户信息,通过slot添加弹窗 --> |
| | | <view class="user-center-card__header__transparent" wx:if="{{isNeedGetUserInfo}}"> |
| | | <slot name="getUserInfo" /> |
| | | </view> |
| | | <!-- 不需要授权用户信息,仍然触发gotoUserEditPage事件 --> |
| | | <view class="user-center-card__header__transparent" bind:tap="gotoUserEditPage" wx:else></view> |
| | | </view> |
| | | </block> |
| | | <!-- 已登录且已经授权用户信息的情况 --> |
| | | <block wx:if="{{currAuthStep === AuthStepType.THREE}}"> |
| | | <view class="user-center-card__header" bind:tap="gotoUserEditPage"> |
| | | <t-avatar t-class="avatar" mode="aspectFill" class="user-center-card__header__avatar" image="{{userInfo.avatarUrl || defaultAvatarUrl}}" /> |
| | | <view class="user-center-card__header__name">{{userInfo.nickName || '微信用户'}}</view> |
| | | </view> |
| | | </block> |
| | | </view> |
New file |
| | |
| | | .user-center-card { |
| | | background-image: url('https://cdn-we-retail.ym.tencent.com/miniapp/template/user-center-bg-v1.png'); |
| | | background-size: cover; |
| | | background-repeat: no-repeat; |
| | | padding: 0 24rpx; |
| | | } |
| | | |
| | | .user-center-card__header { |
| | | margin-top: 160rpx; |
| | | margin-bottom: 30rpx; |
| | | margin-left: 20rpx; |
| | | height: 96rpx; |
| | | line-height: 48rpx; |
| | | display: flex; |
| | | justify-content: flex-start; |
| | | align-items: center; |
| | | color: #333; |
| | | position: relative; |
| | | } |
| | | |
| | | .user-center-card__header__avatar { |
| | | width: 96rpx; |
| | | height: 96rpx; |
| | | border-radius: 48rpx; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .user-center-card__header__name { |
| | | font-size: 36rpx; |
| | | line-height: 48rpx; |
| | | color: #333; |
| | | font-weight: bold; |
| | | margin-left: 24rpx; |
| | | margin-right: 16rpx; |
| | | } |
| | | |
| | | .user-center-card__header__transparent { |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | background-color: transparent; |
| | | height: 100%; |
| | | width: 100%; |
| | | } |
| | | |
| | | .user-center-card__icon { |
| | | line-height: 96rpx; |
| | | } |
New file |
| | |
| | | // pages/personalCenter/downloads/index.js |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | } |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "我的下载", |
| | | "usingComponents": {} |
| | | } |
New file |
| | |
| | | <!--pages/personalCenter/downloads/index.wxml--> |
| | | <text>pages/personalCenter/downloads/index.wxml</text> |
New file |
| | |
| | | /* pages/personalCenter/downloads/index.wxss */ |
New file |
| | |
| | | // pages/personalCenter/feedBack/index.js |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | } |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "建议与反馈", |
| | | "usingComponents": {} |
| | | } |
New file |
| | |
| | | <!--pages/personalCenter/feedBack/index.wxml--> |
| | | <text>pages/personalCenter/feedBack/index.wxml</text> |
New file |
| | |
| | | /* pages/personalCenter/feedBack/index.wxss */ |
New file |
| | |
| | | // pages/personalCenter/feedBackSubmit/index.js |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | } |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "意见反馈", |
| | | "usingComponents": {} |
| | | } |
New file |
| | |
| | | <!--pages/personalCenter/feedBackSubmit/index.wxml--> |
| | | <text>pages/personalCenter/feedBackSubmit/index.wxml</text> |
New file |
| | |
| | | /* pages/personalCenter/feedBackSubmit/index.wxss */ |
New file |
| | |
| | | const app = getApp() |
| | | const menuData = [ |
| | | { |
| | | title: '我的订单', |
| | | icon: '/static/images/personal/order.png', |
| | | url: '/pages/personalCenter/myOrder/index', |
| | | type: 'order', |
| | | }, |
| | | { |
| | | title: '激活商品', |
| | | icon: '/static/images/personal/jihuo.png', |
| | | url: '/pages/personalCenter/activateProduct/index', |
| | | type: 'activateProduct', |
| | | }, |
| | | { |
| | | title: '我的证书', |
| | | icon: '/static/images/personal/certificate.png', |
| | | url: '/pages/personalCenter/certificate/index', |
| | | type: 'certificate', |
| | | }, |
| | | { |
| | | title: '我的收藏', |
| | | icon: '/static/images/personal/wodeshoucang.png', |
| | | url: '/pages/personalCenter/myCollection/index', |
| | | type: 'collection', |
| | | }, |
| | | { |
| | | title: '我的下载', |
| | | icon: '/static/images/personal/download.png', |
| | | url: '/pages/personalCenter/downloads/index', |
| | | type: 'download', |
| | | }, |
| | | { |
| | | title: '样书申请', |
| | | icon: '/static/images/personal/yangshushenqing.png', |
| | | url: '/pages/personalCenter/sampleBooks/index', |
| | | type: 'sampleBook', |
| | | }, |
| | | { |
| | | title: '出书申请', |
| | | icon: '/static/images/personal/chushu.png', |
| | | url: '/pages/personalCenter/publishBooks/index', |
| | | type: 'publishBooks', |
| | | }, |
| | | { |
| | | title: '我的上传', |
| | | icon: '/static/images/personal/upload.png', |
| | | url: '', |
| | | type: 'upload', |
| | | } |
| | | ]; |
| | | const moreMenu = [ |
| | | { |
| | | title: '我的消息', |
| | | icon: '/static/images/personal/notification.png', |
| | | url: '/pages/personalCenter/myMassage/index', |
| | | type: 'message', |
| | | }, |
| | | { |
| | | title: '建议与反馈', |
| | | icon: '/static/images/personal/feedback.png', |
| | | url: '/pages/personalCenter/feedback/index', |
| | | type: 'feedback', |
| | | } |
| | | ]; |
| | | const moreMenu1 = [ |
| | | { |
| | | title: '关于我们', |
| | | icon: '/static/images/personal/about.png', |
| | | url: '', |
| | | type: 'aboutUs', |
| | | }, |
| | | { |
| | | title: '联系我们', |
| | | icon: '/static/images/personal/contact.png', |
| | | url: '', |
| | | type: 'contact', |
| | | } |
| | | ]; |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | show: false, |
| | | userInfo: { |
| | | avatarUrl: |
| | | 'https://we-retail-static-1300977798.cos.ap-guangzhou.myqcloud.com/retail-ui/components-exp/avatar/avatar-1.jpg', |
| | | nickName: 'TDesign', |
| | | phoneNumber: '13438358888', |
| | | }, |
| | | currAuthStep: 1, |
| | | teacherState: { |
| | | state: '', |
| | | reasonTxt: '', |
| | | }, |
| | | integral: 0, |
| | | menuData, |
| | | moreMenu, |
| | | moreMenu1 |
| | | }, |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | }, |
| | | |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | if (wx.getStorageSync(app.config.userInfoKey)) { |
| | | this.setData({ |
| | | show: true, |
| | | userInfo: JSON.parse(wx.getStorageSync(app.config.userInfoKey)) |
| | | }) |
| | | |
| | | if (typeof this.getTabBar === 'function' && this.getTabBar()) { |
| | | this.getTabBar().setData({ |
| | | selected: 4 //这个数字是当前页面在tabBar中list数组的索引 |
| | | }) |
| | | } |
| | | if (this.data.userInfo) { |
| | | this.getTeacherInfo() |
| | | } |
| | | } |
| | | }, |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | this.setData({ |
| | | show: false |
| | | }) |
| | | }, |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | this.init(); |
| | | }, |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | }, |
| | | //教师信息 |
| | | getTeacherInfo() { |
| | | const data = { |
| | | start: 0, |
| | | size: 10, |
| | | topicIdOrRefCode: 'teacherRoleApproval', |
| | | appRefCode: app.config.appRefCode, |
| | | sort: { |
| | | type: 'Desc', |
| | | field: 'CreateDate' |
| | | } |
| | | } |
| | | app.MG.ugc.getTopicMessageList(data).then((res) => { |
| | | const resData = res.datas.find((i) => i.appUserCreator.userId == userId.value) |
| | | if (resData) { |
| | | this.setData({ |
| | | teacherState: { |
| | | state: resData.state, |
| | | reasonTxt: resData.feedBack != null ? JSON.parse(resData.feedBack).reason : '' |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | //点击目录 |
| | | toPages(item) { |
| | | console.log(item) |
| | | let info = item.target.dataset.info |
| | | if (info.url) { |
| | | wx.navigateTo({ |
| | | url: info.url |
| | | }) |
| | | } else { |
| | | wx.showToast({ |
| | | title: "建设中", |
| | | icon: 'none', |
| | | duration: 2000 |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | } |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "个人中心", |
| | | "navigationStyle": "custom", |
| | | "usingComponents": { |
| | | "t-user-center-card": "./components/user-center-card/index", |
| | | "t-image": "/components/webp-image/index" |
| | | }, |
| | | "enablePullDownRefresh": true |
| | | } |
New file |
| | |
| | | <image class="background" src="/static/images/personal/my-bg.png" mode="heightFix" /> |
| | | <t-user-center-card userInfo="{{userInfo}}" isPhoneHide="{{true}}" name-class="custom-name-class" phone-class="custom-phone-class" avatar-class="customer-avatar-class" currAuthStep="{{currAuthStep}}" bind:gotoUserEditPage="gotoUserEditPage" /> |
| | | <view class="content-wrapper"> |
| | | <view class="topBox"> |
| | | <view class="teacherBox"> |
| | | <view> |
| | | <view class="wait" wx:if="{{teacherState.state == 'WaitAudit'}}">等待审核</view> |
| | | <view class="yes" wx:if="{{teacherState.state == 'Normal'}}">已认证</view> |
| | | <view class="no" wx:if="{{teacherState.state == 'Reject'}}">已驳回</view> |
| | | <view class="wait" wx:if="{{teacherState.state == ''}}">待认证</view> |
| | | <view class="title"><text>教师认证</text> |
| | | <text class="change-info" wx:if="{{teacherState.state == ''}}">认证</text> |
| | | <text class="change-info" wx:if="{{teacherState.state == 'Normal' || teacherState.state == 'Reject'}}">修改</text> |
| | | </view> |
| | | </view> |
| | | <view> |
| | | <view>{{integral}}</view> |
| | | <view class="title">积分</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="domainBox"> |
| | | <view class="title"> |
| | | <text>常用功能</text> |
| | | </view> |
| | | <view class="domainList"> |
| | | <view wx:for="{{menuData}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toPages" data-info="{{item}}" class="listItem"> |
| | | <view class="icon"> |
| | | <t-image src="{{item.icon}}" mode="heightFix" class="img" /> |
| | | </view> |
| | | <view class="label"> |
| | | <text>{{item.title}}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="domainBox"> |
| | | <view class="title"> |
| | | <text>更多功能</text> |
| | | </view> |
| | | <view class="domainList1"> |
| | | <view wx:for="{{moreMenu}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toPages" data-info="{{item}}" class="listItem"> |
| | | <view class="icon"> |
| | | <t-image src="{{item.icon}}" mode="heightFix" class="img" /> |
| | | </view> |
| | | <view class="label"> |
| | | <text>{{item.title}}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="domainList2"> |
| | | <view wx:for="{{moreMenu1}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toPages" data-info="{{item}}" class="listItem"> |
| | | <view class="icon"> |
| | | <t-image src="{{item.icon}}" mode="heightFix" class="img" /> |
| | | </view> |
| | | <view class="label"> |
| | | <text>{{item.title}}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
New file |
| | |
| | | page { |
| | | background-color: #f0f2f5; |
| | | box-sizing: border-box; |
| | | padding-bottom: calc(env(safe-area-inset-bottom) + 96rpx); |
| | | } |
| | | |
| | | .background { |
| | | position: fixed; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100% !important; |
| | | height: 680rpx; |
| | | } |
| | | |
| | | .content-wrapper { |
| | | position: relative; |
| | | padding: 30rpx; |
| | | } |
| | | |
| | | .topBox { |
| | | width: 100%; |
| | | background-color: #fff; |
| | | border-radius: 20rpx; |
| | | box-shadow: 0px 0px 20rpx 2px #f1f1f1; |
| | | } |
| | | |
| | | .teacherBox { |
| | | display: flex; |
| | | padding: 40rpx 20rpx; |
| | | justify-content: space-around; |
| | | text-align: center; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .teacherBox .title { |
| | | margin-top: 20rpx; |
| | | line-height: 40rpx; |
| | | } |
| | | |
| | | .teacherBox .change-info { |
| | | color: #ff6d00; |
| | | margin-left: 20rpx; |
| | | } |
| | | |
| | | .wait { |
| | | color: #ff6d00; |
| | | } |
| | | |
| | | .no { |
| | | color: #EE1818 |
| | | } |
| | | |
| | | .yes { |
| | | color: #1FBC1F |
| | | } |
| | | |
| | | .domainBox { |
| | | width: 100%; |
| | | margin: 20rpx auto; |
| | | background-color: #fff; |
| | | border-radius: 20rpx; |
| | | box-shadow: 0px 0px 20rpx 2px #f1f1f1; |
| | | } |
| | | |
| | | .domainBox .title { |
| | | font-weight: bold; |
| | | padding: 30rpx; |
| | | } |
| | | |
| | | .domainList { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | justify-content: center; |
| | | padding-bottom: 30rpx; |
| | | } |
| | | |
| | | .domainList1 { |
| | | /* width: 100%; */ |
| | | display: flex; |
| | | /* flex-wrap: wrap; */ |
| | | border-bottom: 2rpx solid #f1f1f1; |
| | | margin: 0 30rpx; |
| | | } |
| | | |
| | | .domainList2 { |
| | | display: flex; |
| | | margin: 0 30rpx; |
| | | } |
| | | |
| | | .listItem { |
| | | width: 160rpx; |
| | | min-width: 160rpx; |
| | | flex-shrink: 0; |
| | | padding: 30rpx 0; |
| | | } |
| | | |
| | | .listItem .icon { |
| | | width: 46rpx; |
| | | height: 46rpx; |
| | | margin: 0 auto; |
| | | } |
| | | |
| | | .listItem .icon .t-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | object-fit: contain; |
| | | } |
| | | |
| | | .listItem .label { |
| | | width: 100%; |
| | | font-size: 28rpx; |
| | | line-height: 40rpx; |
| | | text-align: center; |
| | | margin-top: 20rpx; |
| | | } |
New file |
| | |
| | | |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | } |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "我的收藏", |
| | | "usingComponents": {} |
| | | } |
New file |
| | |
| | | <text>我的收藏</text> |
New file |
| | |
| | | const app = getApp(); |
| | | Page({ |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | list: [], |
| | | //分页 |
| | | page: 1, |
| | | limit: 10, |
| | | pageTotalCount: 0, |
| | | bottomLoading: false, |
| | | isMoreData: false, |
| | | // 返回顶部 |
| | | isBackTop: false, |
| | | setScrollValue: 0, |
| | | skeletonLoding: true, |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | this.getDataList(false); |
| | | }, |
| | | |
| | | getDataList(isReachBottom) { |
| | | app.MG.app.getAppMessageList({ |
| | | appRefCode: app.config.appRefCode, |
| | | start: this.data.page * this.data.limit - this.data.limit, |
| | | size: this.data.limit, |
| | | sort: { |
| | | type: "Desc", |
| | | field: "CreateDate" |
| | | } |
| | | }) |
| | | .then(res => { |
| | | try { |
| | | if (res.datas.length > 0) { |
| | | let dataList = res.datas; |
| | | //触底加载新数据并保留老数据 |
| | | if (isReachBottom) { |
| | | dataList = [...this.data.list, ...dataList] //将新数据加入老数据中 |
| | | } |
| | | this.setData({ |
| | | list: dataList, |
| | | pageTotalCount: res.total, |
| | | bottomLoading: false, |
| | | isMoreData: dataList.length > 0 ? false : true, |
| | | skeletonLoding: false, |
| | | }) |
| | | } else { |
| | | this.setData({ |
| | | skeletonLoding: false, |
| | | }) |
| | | } |
| | | } catch (error) { |
| | | console.log(error) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | if (this._freshing) return |
| | | this.setData({ |
| | | page: 1, |
| | | limit: 10, |
| | | pageTotalCount: 0, |
| | | bottomLoading: false, |
| | | isMoreData: false |
| | | }) |
| | | this._freshing = true; |
| | | this.setData({ |
| | | triggered: false, |
| | | }) |
| | | this.getDataList(false); |
| | | this._freshing = false |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | this.setData({ |
| | | bottomLoading: true, |
| | | isMoreData: false |
| | | }) |
| | | let bool = false; |
| | | if (this.data.pageTotalCount > this.data.list.length) { |
| | | bool = true; |
| | | this.setData({ |
| | | page: this.data.page + 1, |
| | | }) |
| | | } else { |
| | | setTimeout(() => { |
| | | this.setData({ |
| | | bottomLoading: false, |
| | | isMoreData: true |
| | | }) |
| | | }, 100) |
| | | return false; |
| | | } |
| | | this.getDataList(bool); |
| | | |
| | | }, |
| | | |
| | | // 监听滚动距离 |
| | | onPageScroll(e) { |
| | | if (e && e.scrollTop >= 1000) { |
| | | this.setData({ |
| | | isBackTop: true |
| | | }) |
| | | } else { |
| | | this.setData({ |
| | | isBackTop: false |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | } |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "我的消息", |
| | | "usingComponents": { |
| | | "t-back-top": "tdesign-miniprogram/back-top/back-top", |
| | | "t-image": "tdesign-miniprogram/image/image", |
| | | "t-pull-down-refresh": "tdesign-miniprogram/pull-down-refresh/pull-down-refresh", |
| | | "t-loading": "tdesign-miniprogram/loading/loading", |
| | | "t-empty": "tdesign-miniprogram/empty/empty" |
| | | } |
| | | } |
New file |
| | |
| | | <view class="container" wx:if="{{!skeletonLoding}}"> |
| | | <scroll-view class="scroll content" bind:scroll="onPageScroll" model:scroll-top="{{setScrollValue}}" scroll-y refresher-enabled="{{true}}" lower-threshold="{{200}}" refresher-threshold="{{80}}" refresher-default-style="none" refresher-triggered="{{triggered}}" bindrefresherpulling="{{refresh.onPulling}}" bindrefresherrefresh="onPullDownRefresh" bindscrolltolower="onReachBottom"> |
| | | <view slot="refresher" class="refresh-container"> |
| | | <view class="loading"> |
| | | <t-loading theme="circular" size="40rpx" text="正在刷新..." class="wrapper" /> |
| | | </view> |
| | | </view> |
| | | <view class="pageInfo" wx:if="{{list.length > 0}}"> |
| | | <view class="content-item" wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}"> |
| | | <view> |
| | | <text class="item-title">{{item.name}}</text> |
| | | </view> |
| | | <view class="imageBox"> |
| | | <t-image src="{{item.icon}}" mode="aspectFill" width="50" height="50" class="item-icon" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view wx:if="{{list.length == 0}}" class="empyt"> |
| | | <t-empty icon="folder-open" description="暂无数据" /> |
| | | </view> |
| | | <view class="bottom-loading" wx:if="{{bottomLoading}}"> |
| | | <t-loading theme="circular" size="40rpx" text="加载中..." class="wrapper" /> |
| | | </view> |
| | | <view class="bottom-loading" style="color: #ccc;font-size: 28rpx;" wx:if="{{isMoreData}}"> |
| | | <text>没有更多了</text> |
| | | </view> |
| | | </scroll-view> |
| | | <t-back-top theme="round" wx:if="{{isBackTop}}" text="顶部" bind:to-top="onToTop"></t-back-top> |
| | | </view> |
New file |
| | |
| | | |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | } |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "我的订单", |
| | | "usingComponents": {} |
| | | } |
New file |
| | |
| | | <text>我的订单</text> |
New file |
| | |
| | | // pages/personalCenter/publishBooks/index.js |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | } |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "出书申请", |
| | | "usingComponents": {} |
| | | } |
New file |
| | |
| | | <!--pages/personalCenter/publishBooks/index.wxml--> |
| | | <text>pages/personalCenter/publishBooks/index.wxml</text> |
New file |
| | |
| | | /* pages/personalCenter/publishBooks/index.wxss */ |
New file |
| | |
| | | // pages/personalCenter/sampleBooks/index.js |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | } |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "样书申请", |
| | | "usingComponents": {} |
| | | } |
New file |
| | |
| | | <!--pages/personalCenter/sampleBooks/index.wxml--> |
| | | <text>pages/personalCenter/sampleBooks/index.wxml</text> |
New file |
| | |
| | | /* pages/personalCenter/sampleBooks/index.wxss */ |
New file |
| | |
| | | // pages/bookServices/index.js |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | } |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "教师认证", |
| | | "enablePullDownRefresh": true, |
| | | "backgroundTextStyle": "light", |
| | | "usingComponents": {} |
| | | } |
New file |
| | |
| | | <view class="container"> |
| | | <view class="tips"> |
| | | 仅限学校本课程任课教师申请;请上传有效在职教师工作证将有助于审核。 |
| | | </view> |
| | | <view class="page-body"> |
| | | <form catchsubmit="formSubmit" catchreset="formReset" class="formBox"> |
| | | <view class="from-item"> |
| | | <view class="label"> |
| | | 当前状态: |
| | | </view> |
| | | <view class="item-content"> |
| | | <input class="weui-input" name="input" placeholder="" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> |
| | | 学校: |
| | | </view> |
| | | <view class="item-content"> |
| | | <input class="weui-input" name="input" placeholder="请输入学校" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> |
| | | 真实姓名: |
| | | </view> |
| | | <view class="item-content"> |
| | | <input class="weui-input" name="input" placeholder="请输入真实姓名" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> |
| | | 职称: |
| | | </view> |
| | | <view class="item-content"> |
| | | <!-- <input class="weui-input" name="input" placeholder="请选择职称" /> --> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> |
| | | 任教课程: |
| | | </view> |
| | | <view class="item-content"> |
| | | <input class="weui-input" name="input" placeholder="请输入任教课程" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> |
| | | 手机号: |
| | | </view> |
| | | <view class="item-content"> |
| | | <input class="weui-input" name="input" placeholder="请输入手机号" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> |
| | | 座机: |
| | | </view> |
| | | <view class="item-content"> |
| | | <input class="weui-input" name="input" placeholder="请输入座机" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> |
| | | 邮箱: |
| | | </view> |
| | | <view class="item-content"> |
| | | <input class="weui-input" name="input" placeholder="请输入邮箱" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> |
| | | 详细地址: |
| | | </view> |
| | | <view class="item-content"> |
| | | <input class="weui-input" name="input" placeholder="请输入详细地址" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> |
| | | 在职教师工作证: |
| | | </view> |
| | | <view class="item-content"> |
| | | </view> |
| | | </view> |
| | | <view class="btn-area"> |
| | | <button class="submit" formType="submit">提交</button> |
| | | </view> |
| | | |
| | | </form> |
| | | </view> |
| | | </view> |
New file |
| | |
| | | .tips { |
| | | line-height: 24px; |
| | | font-size: 28rpx; |
| | | padding: 5px; |
| | | background: rgba(255, 108, 0, 0.1); |
| | | color: #ff6c00; |
| | | text-align: center; |
| | | margin: 0 auto 20px auto; |
| | | } |
| | | |
| | | .page-body { |
| | | padding: 20rpx; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .from-item { |
| | | margin-bottom: 20rpx; |
| | | display: flex; |
| | | } |
| | | |
| | | .from-item .label { |
| | | width: 240rpx; |
| | | height: 68rpx; |
| | | line-height: 68rpx; |
| | | } |
| | | |
| | | .from-item .item-content { |
| | | width: 56%; |
| | | border: 2rpx solid #D9D9D9; |
| | | padding: 10rpx; |
| | | } |
| | | |
| | | .submit { |
| | | background: #ff6c00; |
| | | color: #fff; |
| | | } |
| | |
| | | overflow: hidden; |
| | | margin-bottom: 20rpx; |
| | | } |
| | | |
| | | .icon-color { |
| | | color: #aaa; |
| | | } |
| | | |
| | | .cell-class { |
| | | height: 100rpx; |
| | | display: flex; |
| | |
| | | -ms-transform: translate(-50%, -50%); |
| | | transform: translate(-50%, -50%); |
| | | } |
| | | |
| | | .order-content-t { |
| | | margin-top: 10rpx; |
| | | font-size: 24rpx; |
| | |
| | | margin-bottom: env(safe-area-inset-bottom); |
| | | border-radius: 16rpx 16rpx 0 0; |
| | | } |
| | | |
| | | .popup-content .popup-title { |
| | | background: #fff; |
| | | text-align: center; |
| | |
| | | transform-origin: left top; |
| | | border-bottom: 2rpx solid #e5e5e5; |
| | | } |
| | | |
| | | .popup-content .popup-phone, |
| | | .popup-content .popup-close { |
| | | background: #fff; |
| | |
| | | font-weight: 400; |
| | | color: #333; |
| | | } |
| | | |
| | | .popup-content .popup-phone.online { |
| | | margin-bottom: 20rpx; |
| | | } |
| | | |
| | | .popup-content .popup-phone.online::after { |
| | | content: none; |
| | | } |
| | | |
| | | .popup-content .popup-close { |
| | | color: #333; |
| | | border: 0; |
| | |
| | | font-size: 24rpx; |
| | | line-height: 32rpx; |
| | | } |
| | | |
| | | .cell-box .order-group__left { |
| | | margin-right: 0; |
| | | } |
| | | |
| | | .cell-box .t-cell-padding { |
| | | padding: 24rpx 18rpx 24rpx 32rpx; |
| | | } |
| | | } |
| | |
| | | { |
| | | text: '图书服务', |
| | | key: 0, |
| | | icon: '/static/images/home/1.png', |
| | | icon: '/static/images/home/zhutichuban@2x.png', |
| | | url: '/pages/bookServices/index', |
| | | }, |
| | | { |
| | | text: '数字阅读', |
| | | key: 1, |
| | | icon: '', |
| | | icon: '/static/images/home/shuziyuedu@2x.png', |
| | | url: '', |
| | | }, |
| | | { |
| | | text: '数字课程', |
| | | key: 2, |
| | | icon: "", |
| | | icon: '/static/images/home/shuzikecheng@2x.png', |
| | | url: '', |
| | | }, |
| | | { |
| | | text: '数字教材', |
| | | key: 3, |
| | | icon: "", |
| | | icon: '/static/images/home/shuzijiaocai@2x.png', |
| | | url: '', |
| | | }, |
| | | { |
| | | text: '专题讨论', |
| | | key: 4, |
| | | icon: "", |
| | | icon: '/static/images/home/zhuantitaolun@2x.png', |
| | | url: '', |
| | | }, |
| | | { |
| | | text: '线上书展', |
| | | key: 5, |
| | | icon: "", |
| | | icon: '/static/images/home/xianshangshuzhan@2x.png', |
| | | url: '', |
| | | }, |
| | | { |
| | | text: '书目下载', |
| | | key: 6, |
| | | icon: "", |
| | | icon: '/static/images/home/shumuxiazai@2x.png', |
| | | url: '', |
| | | }, |
| | | { |
| | | text: '教师认证', |
| | | key: 7, |
| | | icon: "", |
| | | url: '', |
| | | icon: '/static/images/home/jiaoshirenzheng@2x.png', |
| | | url: '/pages/teacherCertification/index', |
| | | }, |
| | | { |
| | | text: '样书申请', |
| | | key: 8, |
| | | icon: "", |
| | | icon: '/static/images/home/yangshushenqing@2x.png', |
| | | url: '', |
| | | }, |
| | | { |
| | | text: '我要出书', |
| | | key: 9, |
| | | icon: "", |
| | | icon: '/static/images/home/xueshuzhuzuo@2x.png', |
| | | url: '', |
| | | } |
| | | ], |