This commit is contained in:
王创世 2025-07-30 19:58:32 +08:00
parent 1745b5bb5f
commit 9c01660ceb
40 changed files with 4003 additions and 3865 deletions

8
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,8 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

10
.idea/AugmentWebviewStateStore.xml generated Normal file

File diff suppressed because one or more lines are too long

8
.idea/modules.xml generated Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/国职.iml" filepath="$PROJECT_DIR$/.idea/国职.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

12
.idea/国职.iml generated Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@ -62,4 +62,11 @@ module.exports = {
userViedoFind(handler, data = {}) {
return utils.http(handler, 'viedo/jilufind', data)
},
/**
* 查询是否是会员
* @returns {Promise<*>}
*/
ifUserMember(handler, data = {}) {
return utils.http(handler, 'viedo/ifUserMember', data)
},
}

View File

@ -241,14 +241,14 @@ module.exports = {
// 过滤掉一些接口code为0的报错不提示默认所有接口code为0时提示报错
// 不需要报错提示自行到isShowTip方法里面的filterList数组添加不需要提示的接口名
let isShowTip = this.isShowTip(path)
if(res.data.code == 0){
if(isShowTip){
uni.showToast({
title: res.data.msg,
icon: 'none'
})
}
}
// if(res.data.code == 0){
// if(isShowTip){
// uni.showToast({
// title: res.data.msg,
// icon: 'none'
// })
// }
// }
resolve(res.data)
} else {
console.log('http statusCode', res.statusCode)

File diff suppressed because it is too large Load Diff

View File

@ -25,15 +25,15 @@
class="tn-color-wallpaper tn-text-xl tn-text-bold">{{ userInfo.nickname }}</text>
<text class=" tn-round tn-text-xs tn-bg-red tn-color-white tn-margin-left-sm"
style="padding: 10rpx 20rpx;"
v-if="userInfo.info && userInfo.info.type_text">{{userInfo.info.type_text}}</text>
v-if="userInfo.info">{{userInfo.info.status==1?'平台会员':'普通用户'}}</text>
</block>
</view>
<view
<!-- <view
class="tn-padding-right tn-padding-top-xs tn-padding-left-sm tn-text-ellipsis tn-text-sm"
@click="goTo('/pages/score/score-log')">
<text class="tn-color-gray">积分: {{userInfo ? userInfo.info.score : 0}}</text>
<text class="tn-color-blue--disabled tn-padding-left-xs tn-icon-share-square"></text>
</view>
</view> -->
</view>
</view>
@ -55,7 +55,7 @@
</view>
</view>
<view class="tn-margin-top-xl">
<!-- <view class="tn-margin-top-xl">
<view class="button-number tn-flex tn-flex-row-between tn-flex-col-center tn-shadow-blur"
style="background: linear-gradient(-120deg, #3E445A, #31374A, #2B3042, #262B3C);">
@ -69,7 +69,6 @@
<view class="tn-margin-right">
<tn-button shape="round" backgroundColor="#F1C68E" fontColor="#634738" padding="10rpx 0"
width="160rpx" shadow @click="goTo('member-center')">
<!-- <text class="tn-icon-vip tn-padding-right-sm tn-text-lg"></text> -->
<text class="tn-text-bold"> </text>
</tn-button>
</view>
@ -93,12 +92,12 @@
</view>
</view>
</view>
</view> -->
<!-- 更多信息-->
<view class="about-shadow tn-margin-top-xl tn-padding-top-sm tn-padding-bottom-sm tn-bg-white">
<!-- 方式12 start-->
<view class="tn-flex tn-flex-row-center tn-radius tn-padding-top">
<view class="tn-padding-sm tn-margin-xs tn-radius" @click="goTo('/pages/wrong/index')">
@ -112,20 +111,20 @@
</view>
</view>
</view>
<view class="tn-padding-sm tn-margin-xs tn-radius" @click="goTo('/pages/collect/index')">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view
class="icon12__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-bg-blue--light">
<view class="tn-color-wallpaper tn-icon-close-circle"></view>
<view class="tn-color-wallpaper tn-icon-star"></view>
</view>
<view class="tn-text-center" style="font-size: 28rpx;">
<text class="tn-text-ellipsis">题目收藏</text>
</view>
</view>
</view>
<view class="tn-padding-sm tn-margin-xs tn-radius" @click="goTo('/pages/room/signup-index')">
<!-- <view class="tn-padding-sm tn-margin-xs tn-radius" @click="goTo('/pages/room/signup-index')">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view
class="icon12__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-bg-blue--light">
@ -136,8 +135,8 @@
</view>
</view>
</view>
<view class="tn-padding-sm tn-margin-xs tn-radius" @click="goTo('/pages/room/grade')">
-->
<!-- <view class="tn-padding-sm tn-margin-xs tn-radius" @click="goTo('/pages/room/grade')">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view
class="icon12__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-bg-blue--light">
@ -147,12 +146,34 @@
<text class="tn-text-ellipsis">考场成绩</text>
</view>
</view>
</view> -->
<view class="tn-padding-sm tn-margin-xs tn-radius" @click="goTo('/pages/paper/grade')">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view
class="icon12__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-bg-blue--light">
<view class="tn-color-wallpaper tn-icon-order"></view>
</view>
<view class="tn-text-center" style="font-size: 28rpx;">
<text class="tn-text-ellipsis">考试成绩</text>
</view>
</view>
</view>
<view class="tn-padding-sm tn-margin-xs tn-radius" @click="goTo('/pagesSubject/video/user')">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view
class="icon12__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-bg-blue--light">
<view class="tn-color-wallpaper tn-icon-honor"></view>
</view>
<view class="tn-text-center" style="font-size: 28rpx;">
<text class="tn-text-ellipsis">学习记录</text>
</view>
</view>
</view>
</view>
<!-- 方式12 end-->
<!-- 方式12 start-->
<view class="tn-flex tn-flex-row-center tn-radius tn-padding-top">
<!-- <view class="tn-flex tn-flex-row-center tn-radius tn-padding-top">
<view class="tn-padding-sm tn-margin-xs tn-radius" @click="goTo('/pages/paper/grade')">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view
@ -164,10 +185,10 @@
</view>
</view>
</view>
<block v-if="userInfo">
<!-- <view class="tn-padding-sm tn-margin-xs tn-radius" @click="goTo('/pages/cert/list')">
<view class="tn-padding-sm tn-margin-xs tn-radius" @click="goTo('/pages/cert/list')">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view
class="icon12__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-bg-blue--light">
@ -177,7 +198,7 @@
<text class="tn-text-ellipsis">荣誉证书</text>
</view>
</view>
</view> -->
</view>
<view class="tn-padding-sm tn-margin-xs tn-radius" @click="goTo('/pagesSubject/video/user')">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view
@ -185,7 +206,7 @@
<view class="tn-color-wallpaper tn-icon-honor"></view>
</view>
<view class="tn-text-center" style="font-size: 28rpx;">
<text class="tn-text-ellipsis">我的上传</text>
<text class="tn-text-ellipsis">学习记录</text>
</view>
</view>
</view>
@ -196,12 +217,12 @@
<view class="tn-color-wallpaper tn-icon-star"></view>
</view>
<view class="tn-text-center" style="font-size: 28rpx;">
<text class="tn-text-ellipsis">常用分类</text>
<text class="tn-text-ellipsis">常用题库</text>
</view>
</view>
</view>
<view class="tn-padding-sm tn-margin-xs tn-radius" @click="goTo('/pagesSubject/index?type=onlySubject')">
<view class="tn-padding-sm tn-margin-xs tn-radius"
@click="goTo('/pagesSubject/index?type=onlySubject')">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<view
class="icon12__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-bg-blue--light">
@ -213,10 +234,10 @@
</view>
</view>
</block>
</view>
</view> -->
<!-- 方式12 end-->
</view>
<!-- 用户相关 -->
<!-- <view class="wallpaper-shadow tn-margin-top-lg tn-padding-top-sm tn-padding-bottom-sm" v-if="userInfo">
@ -296,7 +317,7 @@
<!-- 更多信息 -->
<view class="wallpaper-shadow tn-margin-top-lg tn-margin-bottom-lg tn-padding-top-sm tn-padding-bottom-sm">
<tn-list-cell :hover="true" :unlined="true" :radius="true" :fontSize="30"
<!-- <tn-list-cell :hover="true" :unlined="true" :radius="true" :fontSize="30"
@click="goTo('member-protocol')">
<view class="tn-flex tn-flex-col-center">
<view class="icon1__item--icon tn-flex tn-flex-row-center tn-flex-col-center"
@ -308,9 +329,9 @@
class="tn-margin-left-sm tn-color-wallpaper tn-text-sm tn-padding-left-xs tn-padding-right-xs tn-bg-gray--light tn-round">
</view>
</view>
</tn-list-cell>
</tn-list-cell> -->
<tn-list-cell :hover="true" :unlined="true" :radius="true" :fontSize="30" @click="clickFollow()"
<!-- <tn-list-cell :hover="true" :unlined="true" :radius="true" :fontSize="30" @click="clickFollow()"
v-show="showFollowBtn">
<view class="tn-flex tn-flex-col-center">
<view class="icon1__item--icon tn-flex tn-flex-row-center tn-flex-col-center"
@ -322,11 +343,10 @@
class="tn-margin-left-sm tn-color-wallpaper tn-text-sm tn-padding-left-xs tn-padding-right-xs tn-bg-gray--light tn-round">
</view>
</view>
</tn-list-cell>
</tn-list-cell> -->
<!-- #ifdef MP-WEIXIN -->
<tn-list-cell :hover="true" :unlined="true" :radius="true" :fontSize="30">
<button class="tn-flex tn-flex-col-center tn-button--clear-style" open-type="contact">
<button class="tn-flex tn-flex-col-center tn-button--clear-style" @click="openPhone()">
<view class="icon1__item--icon tn-flex tn-flex-row-center tn-flex-col-center"
style="color: #7C8191;">
<view class="tn-icon-service-fill"></view>
@ -337,7 +357,6 @@
</view>
</button>
</tn-list-cell>
<!-- #endif -->
<tn-list-cell :hover="true" :unlined="true" :radius="true" :fontSize="30" @click="clearStorage()">
<view class="tn-flex tn-flex-col-center">
@ -354,9 +373,8 @@
</view>
</view>
<!-- #ifdef MP-WEIXIN -->
<!-- 友情链接 -->
<view class="about-shadow tn-margin-top tn-margin-bottom-lg tn-padding-top-sm tn-padding-bottom-sm"
<!-- <view class="about-shadow tn-margin-top tn-margin-bottom-lg tn-padding-top-sm tn-padding-bottom-sm"
v-show="friendApps.length > 0">
<view class="tn-flex tn-flex-row-between tn-padding">
<view class="justify-content-item tn-text-bold tn-text-lg">
@ -365,13 +383,11 @@
</view>
<tn-scroll-list :indicator="false">
<view class="tn-flex tn-margin-left-sm tn-margin-right-sm tn-margin-top">
<navigator target="miniProgram" :app-id="item.wx_app_id" :path="item.path ? item.path : '/pages/index/index'" version="release"
hover-class="none" v-for="(item, index) in friendApps" :key="index">
<navigator target="miniProgram" :app-id="item.wx_app_id"
:path="item.path ? item.path : '/pages/index/index'" version="release" hover-class="none"
v-for="(item, index) in friendApps" :key="index">
<view class="tn-flex-1 tn-padding-sm tn-radius">
<view class="tn-flex tn-flex-direction-column tn-flex-row-center tn-flex-col-center">
<!-- <view class="icon5__item--icon tn-flex tn-flex-row-center tn-flex-col-center tn-shadow-blur"
:style="'background-image:url('+ item.image + ');background-size:100% 100%;'">
</view> -->
<image :src="item.image" mode="scaleToFill" style="width: 150rpx; height: 150rpx;">
</image>
<view class="tn-color-black tn-text-df tn-text-center tn-margin-top-sm">
@ -382,8 +398,7 @@
</navigator>
</view>
</tn-scroll-list>
</view>
<!-- #endif -->
</view> -->
<!-- 关注我们 -->
@ -502,20 +517,17 @@
}
},
methods: {
openPhone(){
uni.makePhoneCall({
phoneNumber: '18903795988' //
});
},
//
tn(e) {
uni.navigateTo({
url: e,
});
},
// UI
navTuniaoUI() {
uni.navigateToMiniProgram({
appId: 'wxf3d81a452b88ff4b'
})
},
//
navAddress() {
uni.chooseAddress({})
@ -526,28 +538,6 @@
wx.vibrateShort();
},
//
callPhoneNumber() {
uni.makePhoneCall({
phoneNumber: "18219128888",
});
},
// id
copyUid() {
wx.vibrateShort();
uni.setClipboardData({
data: "10262008",
})
},
//
copySource() {
wx.vibrateShort();
uni.setClipboardData({
data: "https://ext.dcloud.net.cn/publisher?id=356088",
})
},
login() {
this.$emit('login')
},

File diff suppressed because it is too large Load Diff

View File

@ -130,6 +130,7 @@
.btns {
margin-top: 48rpx;
display: flex;
justify-content: center;
}
.btns .item {

View File

@ -115,14 +115,14 @@
path: '/pages/paper/index',
},
{
name: '学习动态',
name: '关于我们',
icon: 'tn-icon-inventory',
path: '/pages/index/news-list',
},
{
name: '考场列表',
name: '考试公示',
icon: 'tn-icon-menu-list',
path: '/pages/room/index',
path: '/pages/index/notice-list',
},
{
name: '我的',

View File

@ -503,7 +503,7 @@
}
.tui-header-item {
max-width: 240rpx;
max-width: 350rpx;
padding: 15rpx 30rpx;
box-sizing: border-box;
flex-shrink: 0;

View File

@ -9,13 +9,13 @@
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "答题考试",
"navigationBarTitleText": "名扬体育学苑",
"navigationStyle": "custom"
}
}, {
"path": "pages/paper/index",
"style": {
"navigationBarTitleText": "卷列表",
"navigationBarTitleText": "模拟考试",
"enablePullDownRefresh": false,
// 50pxonReachBottom
"onReachBottonDistance": 50
@ -26,7 +26,11 @@
"style": {
"navigationBarTitleText": "考试试卷",
"enablePullDownRefresh": false,
"autoBackButton": false
"autoBackButton": false,
"navigationStyle": "custom",
"app-plus": {
"popGesture": "none"
}
// "navigationBarBackgroundColor": "#FFFFFF",
// "navigationBarTextStyle": "black",
// "titleNView": false,
@ -84,14 +88,14 @@
}, {
"path": "pages/train/train",
"style": {
"navigationBarTitleText": "",
"navigationBarTitleText": "答题",
"enablePullDownRefresh": false
}
}, {
"path": "pages/train/index",
"style": {
"navigationBarTitleText": "",
"navigationBarTitleText": "题目选择",
"enablePullDownRefresh": false
}
@ -112,7 +116,7 @@
}, {
"path": "pages/index/notice-list",
"style": {
"navigationBarTitleText": "公告列表",
"navigationBarTitleText": "考试公示",
"enablePullDownRefresh": false,
// 50pxonReachBottom
"onReachBottonDistance": 50
@ -123,13 +127,13 @@
}, {
"path": "pages/index/notice-detail",
"style": {
"navigationBarTitleText": "",
"navigationBarTitleText": "详情",
"enablePullDownRefresh": false
}
}, {
"path": "pages/index/news-list",
"style": {
"navigationBarTitleText": "学习动态列表",
"navigationBarTitleText": "关于我们",
"enablePullDownRefresh": false,
// 50pxonReachBottom
"onReachBottonDistance": 50
@ -138,7 +142,7 @@
}, {
"path": "pages/index/news-detail",
"style": {
"navigationBarTitleText": "",
"navigationBarTitleText": "详情",
"enablePullDownRefresh": false
}
}, {
@ -219,13 +223,13 @@
{
"path": "video/index",
"style": {
"navigationBarTitleText": "视频教学"
"navigationBarTitleText": "课程中心"
}
},
{
"path": "video/list",
"style": {
"navigationBarTitleText": "视频教学"
"navigationBarTitleText": "课程中心"
}
},
{
@ -237,7 +241,7 @@
{
"path": "video/user",
"style": {
"navigationBarTitleText": "我上传的"
"navigationBarTitleText": "学习记录"
}
},
{
@ -367,7 +371,7 @@
},
// "navigationBarBackgroundColor": "#0081ff",
"navigationBarTitleText": "在线考试",
"navigationBarTitleText": "名扬体育学院",
"navigationBarBackgroundColor": "#1A73E8",
"navigationBarTextStyle": "white"
// #ifdef H5

View File

@ -1,7 +1,7 @@
<template>
<view>
<!-- 答题组件 -->
<kz-question mode="TRAINING" title="收藏试题" :questions="list" v-show="!showNodata"></kz-question>
<kz-question mode="TRAINING" title="收藏试题" :questions="list" v-show="!showNodata" v-on:refresh="refresh"></kz-question>
<!-- 暂无数据 -->
<tui-no-data imgUrl="/static/img/img_noorder_3x.png" v-if="showNodata">暂无数据</tui-no-data>
@ -25,6 +25,11 @@
this.ajax()
},
methods: {
refresh(){
this.page = 1
this.list = []
this.ajax()
},
ajax() {
this.http('question/collectList', {page:this.page}, 'get').then(res => {
this.total = res.data.total;

View File

@ -56,7 +56,7 @@
<!-- <kz-page-index-simple :banners="banners" v-if="pageStyle == 'simple'"></kz-page-index-simple> -->
<!-- 悬浮组件 -->
<tui-scroll-top
<!-- <tui-scroll-top
:scrollTop="scrollTop"
:isIndex="false"
:isHideAd="showAdBtn"
@ -68,7 +68,7 @@
}
"
@goNotice="goNoticeList"
></tui-scroll-top>
></tui-scroll-top> -->
<!-- 流量主组件 -->
<!-- #ifdef MP-WEIXIN -->
@ -103,8 +103,8 @@
<!-- 底部导航栏组件 -->
<tabbar :theme="tabbarStyle" :tabbar="tabbar"></tabbar>
<view class="margin-bottom-xl">
<tn-load-more class="tn-margin-top" status="nomore" dot></tn-load-more>
<view style="padding-bottom: 300rpx;">
<tn-load-more class="tn-margin-top" :loadText="loadText" status="nomore"></tn-load-more>
</view>
</view>
</template>
@ -123,6 +123,11 @@ export default {
},
data() {
return {
loadText: {
loadmore: '灵睿网络',
loading: '灵睿网络',
nomore: '灵睿网络'
},
focusOnTip: "点击「添加小程序」,下次访问更便捷",
imgUrl: this.imgUrl,
banners: [],
@ -147,7 +152,7 @@ export default {
userInfo: {},
subjectId: 0,
subjectName: "请选择科目",
title: "答题考试系统",
title: "名扬体育学苑",
};
},
onLoad(e) {
@ -208,15 +213,15 @@ export default {
//
let point = res.data.point;
if (point?.get_point) {
this.$refs.toast.show({
title: "积分+" + point.get_point,
content: point.type,
imgUrl: "/static/toast/info-circle.png",
icon: true,
duration: 4000,
});
}
// if (point?.get_point) {
// this.$refs.toast.show({
// title: "+" + point.get_point,
// content: point.type,
// imgUrl: "/static/toast/info-circle.png",
// icon: true,
// duration: 4000,
// });
// }
//
this.notices = res.data.notices;

View File

@ -1,43 +1,29 @@
<!-- 新闻 详情 -->
<template>
<view class="container">
<view class="container">
<view>
<view style="background-color: #FFFFFF;padding: 30rpx 30rpx 30rpx 30rpx;">
<view class="titleBox text-xl text-black text-bold">{{ newsData.name }}</view>
<!-- #ifdef H5 -->
<!-- 顶部自定义导航 -->
<tn-nav-bar fixed :bottomShadow="false" backTitle=" ">
<view class="">
<text class="tn-text-lg">学习动态</text>
<text class="tn-text-xl tn-padding-left-sm tn-icon-group-circle"></text>
</view>
</tn-nav-bar>
<!-- #endif -->
<view class="flex justify-between text-df text-gray margin-top-sm margin-bottom-sm">
<text>{{ newsData.create_time_text }}</text>
<!-- <text>{{newsData.type | typeF}}</text> -->
</view>
<!-- <image mode="widthFix" :src="newsData.cover_image" @click="previewImage(0)"></image> -->
<view>
<view style="background-color: #FFFFFF;padding: 30rpx 30rpx 30rpx 30rpx;">
<view class="titleBox text-xl text-black text-bold">{{ newsData.name }}</view>
<!-- 中间文章区域 -->
<view class="contentBox text-lg text-black margin-top-sm margin-tb-lg">
<mp-html :tag-style="tagStyle" :scroll-table="true" :content="newsData.contents" />
</view>
</view>
<view class="flex justify-between text-df text-gray margin-top-sm margin-bottom-sm">
<text>{{ newsData.create_time_text }}</text>
<!-- <text>{{newsData.type | typeF}}</text> -->
</view>
<!-- <image mode="widthFix" :src="newsData.cover_image" @click="previewImage(0)"></image> -->
<!-- 中间文章区域 -->
<view class="contentBox text-lg text-black margin-top-sm margin-tb-lg">
<view class="margin-top-sm" v-html="newsData.contents">
</view>
<!-- <view class="margin-top-sm" v-for="(item, index) in newsData.content.split('&')" v-html="item">
</view> -->
</view>
</view>
<!-- <view class="cu-bar justify-left bg-white margin-top-sm">
<!-- <view class="cu-bar justify-left bg-white margin-top-sm">
<view class="action border-title">
<text class="text-lg text-bold text-blue">图片展示</text>
<text class="bg-gradual-blue" style="width:3rem"></text>
</view>
</view> -->
<!-- <view style="background-color: #FFFFFF;padding: 0rpx 30rpx 30rpx 30rpx;">
<!-- <view style="background-color: #FFFFFF;padding: 0rpx 30rpx 30rpx 30rpx;">
<image @click="previewImage(index)" v-for="(item, index) in newsData.images" :key="index"
mode="widthFix" :src="item"></image>
@ -51,9 +37,9 @@
<text class="text-df" style="margin-top: 2rpx;">{{newsData.commentNum}}</text>
</view>
</view> -->
</view>
</view>
<view class="cu-bar bg-white tabbar border shop bottomBox">
<!-- <view class="cu-bar bg-white tabbar border shop bottomBox">
<view class="btn-group">
<tn-button shape="round" backgroundColor="#1A73E8" padding="30rpx 0" width="200rpx" shadow @click="handleBack()"
fontBold plain>
@ -65,86 +51,93 @@
<text class="tn-color-white">点击前往</text>
</tn-button>
</view>
</view>
<view class="safe-area-inset-bottom"></view>
</view>
</view> -->
<view class="safe-area-inset-bottom"></view>
</view>
</template>
<script>
import newsApi from "@/common/api/news.js"
import newsApi from "@/common/api/news.js"
export default {
data() {
return {
newsData: [],
requestStatus: false //
}
},
onLoad(option) {
console.log(option)
this.getData(option.id);
},
methods: {
//
getData(id) {
console.log(id);
export default {
data() {
return {
newsData: [],
requestStatus: false, //
tagStyle: {
table: 'border: 1px solid gray;border-collapse:collapse',
th: 'border: 1px solid gray;',
td: 'border: 1px solid gray;'
}
}
},
onLoad(option) {
console.log(option)
this.getData(option.id);
},
methods: {
//
getData(id) {
console.log(id);
newsApi.getNewsDetail(this, {id: id}).then(res => {
if (res && res.data) {
this.newsData = res.data
}
})
},
handleBack() {
this.utils.goto('news-list')
},
handleGo() {
if (this.newsData && this.newsData.front_info) {
this.utils.goto(this.newsData.front_info.full_url)
}
},
previewImage(index) {
// uniapppreviewImage
const seeImgList = this.newsData.images
uni.previewImage({
current: index, //
urls: seeImgList //
})
},
newsApi.getNewsDetail(this, {
id: id
}).then(res => {
if (res && res.data) {
this.newsData = res.data
}
})
},
handleBack() {
this.utils.goto('news-list')
},
handleGo() {
if (this.newsData && this.newsData.front_info) {
this.utils.goto(this.newsData.front_info.full_url)
}
},
previewImage(index) {
// uniapppreviewImage
const seeImgList = this.newsData.images
uni.previewImage({
current: index, //
urls: seeImgList //
})
},
},
}
},
}
</script>
<style lang="scss" scoped>
button::after {
border: none;
background: transparent;
}
button::after {
border: none;
background: transparent;
}
uni-button {
background: transparent;
}
uni-button {
background: transparent;
}
.container {
background-color: #f2f2f2;
width: 750rpx;
.container {
background-color: #f2f2f2;
width: 750rpx;
}
}
.solid {
border-radius: 50rpx;
text-indent: 12rpx;
}
.solid {
border-radius: 50rpx;
text-indent: 12rpx;
}
image {
width: 750rpx;
}
image {
width: 750rpx;
}
.bottomBox {
width: 750rpx;
position: fixed;
left: 0;
bottom: 0rpx;
}
</style>
.bottomBox {
width: 750rpx;
position: fixed;
left: 0;
bottom: 0rpx;
}
</style>

View File

@ -1,217 +1,199 @@
<template>
<view class="message tn-safe-area-inset-bottom">
<view class="message tn-safe-area-inset-bottom">
<view v-if="list.length > 0">
<!-- #ifdef H5 -->
<!-- 顶部自定义导航 -->
<tn-nav-bar fixed :bottomShadow="false" backTitle=" ">
<view class="">
<text class="tn-text-lg">学习动态列表</text>
<text class="tn-text-xl tn-padding-left-sm tn-icon-group-circle"></text>
</view>
</tn-nav-bar>
<!-- #endif -->
<view class="wallpaper-shadow tn-margin tn-padding" v-for="(item, index) in list" :key="index"
@click="goDetail(item.id)">
<view class="tn-flex tn-flex-col-top">
<!-- 这个是图片形式自己看需要去使用 -->
<view class="" v-if="item.images">
<view class="logo-pic">
<view class="logo-image">
<!-- <view class="" style="width: 100%;height: 100%;;background-size: cover;"
:style="{backgroundImage:'url('+item.images+')'}">
</view> -->
<image :src="item.images" style="width: 100%;height: 100%;object-fit: cover"></image>
</view>
</view>
</view>
<view class="tn-padding-left-sm" style="width: 100%;height: 200rpx;;position: relative;">
<view class="tn-flex tn-flex-row-between tn-flex-col-between">
<view class="justify-content-item">
<text class="tn-color-wallpaper tn-text-lg tn-text-bold">{{ item.name }}</text>
</view>
</view>
<view class="tn-padding-top-xs" style="position: absolute;bottom: 0;">
<view class="justify-content-item tn-color-gray tn-color-gray">
<text class="tn-icon-time tn-padding-right-xs tn-text-df"></text>
<text class="tn-text-sm">{{ item.create_time_text }}</text>
</view>
</view>
</view>
<view v-if="list.length > 0">
</view>
</view>
<view class="wallpaper-shadow tn-margin tn-padding" v-for="(item, index) in list" :key="index"
@click="goDetail(item.id)">
<view class="tn-flex tn-flex-col-top">
<!-- 这个是图片形式自己看需要去使用 -->
<view class="" v-if="item.cover_image">
<view class="logo-pic">
<view class="logo-image">
<view class="" style="width: 100rpx;height: 100rpx;background-size: cover;"
:style="{backgroundImage:'url('+item.cover_image+')'}">
</view>
</view>
</view>
</view>
<view class="tn-padding-left-sm" style="width: 100%;">
<view class="tn-flex tn-flex-row-between tn-flex-col-between">
<view class="justify-content-item">
<text class="tn-color-wallpaper tn-text-lg tn-text-bold">{{ item.name }}</text>
</view>
</view>
<view class=" tn-padding-top-xs tn-text-ellipsis-2">
<!-- <text class="tn-color-gray">副标题</text> -->
</view>
</view>
</view>
<view class="tn-flex tn-flex-row-between tn-flex-col-between tn-margin-top-sm">
<view class="justify-content-item tn-color-gray tn-text-center tn-color-gray">
<text class="tn-icon-time tn-padding-right-xs tn-padding-left-xs tn-text-df"></text>
<text class="tn-text-sm">{{ item.create_time_text }}</text>
</view>
<!-- <view class="justify-content-item tn-round tn-text-xs tn-bg-blue--light tn-color-blue"
style="padding: 5rpx 15rpx;">
<text class="tn-padding-right-xs">#</text>
</view> -->
</view>
</view>
</view>
<view v-else>
<tui-no-data imgUrl="/static/img/img_noorder_3x.png">暂无数据</tui-no-data>
</view>
<view class="tn-tabbar-height"></view>
<!-- 底部导航栏组件 -->
<tabbar :theme="tabbarStyle"></tabbar>
</view>
<view v-else>
<tui-no-data imgUrl="/static/img/img_noorder_3x.png" >暂无数据</tui-no-data>
</view>
<view class="tn-tabbar-height"></view>
<!-- 底部导航栏组件 -->
<tabbar :theme="tabbarStyle"></tabbar>
</view>
</template>
<script>
import newsApi from "@/common/api/news.js"
import newsApi from "@/common/api/news.js"
export default {
name: 'Message',
data() {
return {
list: [],
hasMore: false,
currentPage: 1,
loadFlag: 'loading',
}
},
onLoad() {
this.getData()
},
async onReachBottom() {
console.log("onReachBottom")
if (this.hasMore) {
this.currentPage++
this.getData()
}
},
methods: {
getData() {
this.loadFlag = 'loading'
export default {
name: 'Message',
data() {
return {
list: [],
hasMore: false,
currentPage: 1,
loadFlag: 'loading',
}
},
onLoad() {
this.getData()
},
async onReachBottom() {
console.log("onReachBottom")
if (this.hasMore) {
this.currentPage++
this.getData()
}
},
methods: {
getData() {
this.loadFlag = 'loading'
let params = {
page: this.current_page
}
let params = {
page: this.current_page
}
newsApi.getNewsList(this, params).then(res => {
if (res && res.data) {
this.list = this.list.concat(res.data.list.data)
this.hasMore = res.data.list.has_more
this.currentPage = res.data.list.current_page
this.loadFlag = 'over'
}
})
},
//
goDetail(id) {
this.utils.goto('news-detail?id=' + id)
},
}
}
newsApi.getNewsList(this, params).then(res => {
if (res && res.data) {
this.list = this.list.concat(res.data.list.data)
this.hasMore = res.data.list.has_more
this.currentPage = res.data.list.current_page
this.loadFlag = 'over'
}
})
},
//
goDetail(id) {
this.utils.goto('news-detail?id=' + id)
},
}
}
</script>
<style lang="scss">
page {
background-color: #fff;
}
page {
background-color: #fff;
}
.message {
max-height: 100vh;
}
.message {
max-height: 100vh;
}
/* 自定义导航栏内容 start */
.custom-nav {
height: 100%;
/* 自定义导航栏内容 start */
.custom-nav {
height: 100%;
&__back {
margin: auto 30rpx;
font-size: 40rpx;
margin-right: 10rpx;
flex-basis: 5%;
width: 100rpx;
position: absolute;
}
}
&__back {
margin: auto 30rpx;
font-size: 40rpx;
margin-right: 10rpx;
flex-basis: 5%;
width: 100rpx;
position: absolute;
}
}
/* 自定义导航栏内容 end */
/* 自定义导航栏内容 end */
/* 底部安全边距 start*/
.tn-tabbar-height {
min-height: 20rpx;
height: calc(40rpx + env(safe-area-inset-bottom) / 2);
height: calc(40rpx + constant(safe-area-inset-bottom));
}
/* 底部安全边距 start*/
.tn-tabbar-height {
min-height: 20rpx;
height: calc(40rpx + env(safe-area-inset-bottom) / 2);
height: calc(40rpx + constant(safe-area-inset-bottom));
}
.tn-color-wallpaper {
color: #1D2541;
}
.tn-color-wallpaper {
color: #1D2541;
}
/* 页面阴影 start*/
.wallpaper-shadow {
border-radius: 15rpx;
box-shadow: 0rpx 0rpx 50rpx 0rpx rgba(0, 0, 0, 0.07);
}
/* 页面阴影 start*/
.wallpaper-shadow {
border-radius: 15rpx;
box-shadow: 0rpx 0rpx 50rpx 0rpx rgba(0, 0, 0, 0.07);
}
/* 图标容器15 start */
.icon15 {
&__item {
width: 30%;
background-color: #FFFFFF;
border-radius: 10rpx;
padding: 30rpx;
margin: 20rpx 10rpx;
transform: scale(1);
transition: transform 0.3s linear;
transform-origin: center center;
/* 图标容器15 start */
.icon15 {
&__item {
width: 30%;
background-color: #FFFFFF;
border-radius: 10rpx;
padding: 30rpx;
margin: 20rpx 10rpx;
transform: scale(1);
transition: transform 0.3s linear;
transform-origin: center center;
&--icon {
width: 105rpx;
height: 105rpx;
font-size: 60rpx;
border-radius: 50%;
margin-bottom: 18rpx;
position: relative;
z-index: 1;
&--icon {
width: 105rpx;
height: 105rpx;
font-size: 60rpx;
border-radius: 50%;
margin-bottom: 18rpx;
position: relative;
z-index: 1;
&::after {
content: " ";
position: absolute;
z-index: -1;
width: 100%;
height: 100%;
left: 0;
bottom: 0;
border-radius: inherit;
opacity: 1;
transform: scale(1, 1);
background-size: 100% 100%;
&::after {
content: " ";
position: absolute;
z-index: -1;
width: 100%;
height: 100%;
left: 0;
bottom: 0;
border-radius: inherit;
opacity: 1;
transform: scale(1, 1);
background-size: 100% 100%;
}
}
}
}
}
}
}
}
/* 用户头像 start */
.logo-image {
width: 100rpx;
height: 100rpx;
position: relative;
}
.logo-pic {
background-size: cover;
background-repeat: no-repeat;
// background-attachment:fixed;
background-position: top;
border: 1rpx solid rgba(255, 255, 255, 0.05);
box-shadow: 0rpx 0rpx 80rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 50%;
overflow: hidden;
// background-color: #FFFFFF;
}
</style>
/* 用户头像 start */
.logo-image {
width: 300rpx;
height: 200rpx;
position: relative;
}
.logo-pic {
background-size: cover;
background-repeat: no-repeat;
// background-attachment:fixed;
background-position: top;
border: 1rpx solid rgba(255, 255, 255, 0.05);
box-shadow: 0rpx 0rpx 80rpx 0rpx rgba(0, 0, 0, 0.05);
overflow: hidden;
// background-color: #FFFFFF;
}
</style>

View File

@ -1,17 +1,6 @@
<!-- 新闻 详情 -->
<template>
<view class="container">
<!-- #ifdef H5 -->
<!-- 顶部自定义导航 -->
<tn-nav-bar fixed :bottomShadow="false" backTitle=" ">
<view class="">
<text class="tn-text-lg">公告</text>
<text class="tn-text-xl tn-padding-left-sm tn-icon-group-circle"></text>
</view>
</tn-nav-bar>
<!-- #endif -->
<view>
<view style="background-color: #FFFFFF;padding: 30rpx 30rpx 30rpx 30rpx;">
<view class="titleBox text-xl text-black text-bold">{{newsData.name}}</view>
@ -24,16 +13,16 @@
<!-- 中间文章区域 -->
<view class="contentBox text-lg text-black margin-top-sm margin-tb-lg">
<view class="margin-top-sm" v-html="newsData.contents">
</view>
<!-- <view class="margin-top-sm" v-html="newsData.contents">
</view> -->
<mp-html :tag-style="tagStyle" :scroll-table="true" :content="newsData.contents" />
<!-- <view class="margin-top-sm" v-for="(item, index) in newsData.contents.split('&')" v-html="item">
</view> -->
</view>
</view>
</view>
<view class="cu-bar bg-white tabbar border shop bottomBox">
<!-- <view class="cu-bar bg-white tabbar border shop bottomBox"> -->
<!-- <button class="action" open-type="share">
<view class="cuIcon-share text-green">
<view class="cu-tag badge">{{newsData.commentNum}}</view>
@ -46,12 +35,12 @@
</view>
联系我们
</button> -->
<view class="btn-group">
<!-- <button style="width: 80%;height: 70rpx;" @click="handleClick()"
<!-- <view class="btn-group">
<button style="width: 80%;height: 70rpx;" @click="handleClick()"
class="cu-btn bg-gradual-blue round shadow-blur">
<view class="cuIcon-appreciatefill text-white margin-right-xs"></view>
前往
</button> -->
</button>
<tn-button shape="round" backgroundColor="#1A73E8" padding="30rpx 0" width="200rpx" shadow @click="handleBack()" fontBold plain>
<text class="primary-color">返回列表</text>
@ -60,8 +49,8 @@
<tn-button shape="round" backgroundColor="#1A73E8" padding="30rpx 0" width="200rpx" shadow @click="handleGo()" v-if="newsData && newsData.front_info" fontBold>
<text class="tn-color-white">点击前往</text>
</tn-button>
</view>
</view>
</view> -->
<!-- </view> -->
<view class="safe-area-inset-bottom"></view>
</view>
</template>
@ -72,7 +61,12 @@
data() {
return {
newsData: [],
requestStatus: false //
requestStatus: false, //
tagStyle: {
table: 'border: 1px solid gray;border-collapse:collapse',
th: 'border: 1px solid gray;',
td: 'border: 1px solid gray;'
}
}
},
onLoad(option) {
@ -86,6 +80,7 @@
noticeApi.getNoticeDetail(this, {id: id}).then(res => {
if (res && res.data) {
//res.data.contents = res.data.contents.replace(/<table/g, '<table border="1"')
this.newsData = res.data
}
})

View File

@ -1,16 +1,5 @@
<template>
<view class="message tn-safe-area-inset-bottom">
<!-- #ifdef H5 -->
<!-- 顶部自定义导航 -->
<tn-nav-bar fixed :bottomShadow="false" backTitle=" ">
<view class="">
<text class="tn-text-lg">公告</text>
<text class="tn-text-xl tn-padding-left-sm tn-icon-group-circle"></text>
</view>
</tn-nav-bar>
<!-- #endif -->
<view v-if="list.length > 0">
<view class="wallpaper-shadow tn-margin tn-padding" v-for="(item, index) in list" :key="index" @click="goDetail(item.id)">
@ -54,7 +43,7 @@
</view>
<view class="tn-tabbar-height"></view>
<tabbar :theme="tabbarStyle" :tabbar="tabbar"></tabbar>
</view>
</template>

View File

@ -42,7 +42,7 @@
</view>
<!-- 加载状态条 -->
<view class="cu-load bg-grey" :class="loadFlag" v-show="has_more || loadFlag == 'over'"></view>
<!-- <view class="cu-load bg-grey" :class="loadFlag" v-show="has_more || loadFlag == 'over'"></view> -->
</view>
<tui-loading v-if="showLoading"></tui-loading>
@ -63,7 +63,7 @@
>
</tn-action-sheet>
<tabbar></tabbar>
<!-- <tabbar></tabbar> -->
</view>
</template>
@ -131,9 +131,7 @@
this.gradeItem = item
this.tipsAction = {text: item.paper?.title}
let listAction = [
{text: '查看排行榜'}
]
let listAction = []
if (item.error_ids) {
listAction.unshift({text: '查看错题'})
}

View File

@ -14,7 +14,7 @@
<view class="tn-text-lg tn-text-bold clamp-text-1 tn-text-justify tn-flex-basic-lg">
<text class="">{{ item.title }}</text>
</view>
<view class="tn-flex-basic-sm text-right">
<!-- <view class="tn-flex-basic-sm text-right">
<view
style="transform: translate(0rpx,6rpx);"
class="justify-content-item tn-tag-content__item tn-margin-right-xs tn-round tn-text-sm tn-text-bold tn-bg-blue--light tn-color-blue"
@ -22,7 +22,7 @@
<text class="tn-tag-content__item--prefix">#</text>
{{ item.cates.name }}
</view>
</view>
</view> -->
</view>
<view class="tn-padding-top-xs" style="min-height: 90rpx;">
<text class=" tn-color-gray clamp-text-2 tn-text-justify">考试限时{{ item.limit_time | format_second }}</text>

View File

@ -2,10 +2,21 @@
<view class="container">
<!-- 顶部导航 -->
<!-- <topbar :title="paper_name" :scrollTop="scrollTop"></topbar> -->
<!-- <tui-navigation-bar splitLine @init="initNavigation" @change="opacityChange" :scrollTop="scrollTop" title="NavBar自定义导航栏" backgroundColor="#fff" color="#333">
<view class="tui-header-icon" :style="{ marginTop: top + 'px' }"><tui-icon name="arrowleft" :color="opacity > 0.85 ? '#333' : '#fff'" @click="back"></tui-icon></view>
</tui-navigation-bar> -->
<tn-nav-bar backgroundColor="#1A73E8" customBack :bottomShadow="false" fontColor="#FFFFFF">
<view class="custom-nav tn-flex tn-flex-col-center tn-flex-row-center">
<view style="color: #ffffff;;text-align: left;font-size: 30rpx;">
<text>考试试卷</text>
</view>
</view>
<view slot="back" @click="goToBack" style="padding-top: 10rpx;">
<text class='tn-icon tn-icon-left' style="font-size: 40rpx;"></text>
</view>
</tn-nav-bar>
<!-- <tui-navigation-bar splitLine @init="initNavigation" @change="opacityChange" :scrollTop="scrollTop"
title="NavBar自定义导航栏" backgroundColor="#fff" color="#333">
<view class="tui-header-icon" :style="{ marginTop: top + 'px' }"><tui-icon name="arrowleft"
:color="opacity > 0.85 ? '#333' : '#fff'" @click="back"></tui-icon></view>
</tui-navigation-bar> -->
<!-- <view class="tui-header-bg"><image src="/static/componentBg.png" class="tui-header-img"></image></view> -->
<!-- <tui-navigation-bar @init="initNavigation" :title="paper_name" @change="opacityChange" :scrollTop="scrollTop" :isOpacity="false" backgroundColor="#fff" color="#333">
<view class="tui-header-icon" :style="{ marginTop: top + 'px' }"><tui-icon name="arrowleft" color="#333" @click="back"></tui-icon></view>
@ -15,18 +26,13 @@
<!-- <tui-countdown :time="limit_time" borderColor="transparent" :isColon="false" @end="endOfTime"></tui-countdown> -->
<!-- 答题组件 -->
<kz-question v-show="result == null"
ref="comQuestion"
mode="EXAM"
:questionMode="paper ? paper.mode : 'RANDOM'"
:title="paper_name"
:questions="questions"
:configs="configs"
:limit_time="limit_time"
:isPreventSwitchScreen="isPreventSwitchScreen"
:switchScreenCount="switchScreenCount"
@submitQuestion="submitQuestion">
</kz-question>
<view style="padding-top: 180rpx;">
<kz-question v-show="result == null" ref="comQuestion" mode="EXAM" :questionMode="paper ? paper.mode : 'RANDOM'"
:title="paper_name" :questions="questions" :configs="configs" :limit_time="limit_time"
:isPreventSwitchScreen="isPreventSwitchScreen" :switchScreenCount="switchScreenCount"
@submitQuestion="submitQuestion">
</kz-question>
</view>
<!-- 成绩组件 -->
<kz-grade-result v-show="result != null" :score="score" :gradeResult="result" ref="gradeResult"
@ -70,15 +76,9 @@
</tui-modal>
<!-- 题库支付激活弹窗组件 -->
<kz-cate-pay ref="cate_pay"
:cateId="cateId"
:catePrice="catePrice"
:showCateConfirm="showCateConfirm"
:confirmCateContent="confirmCateContent"
v-on:paySuccess="cateSuccess()"
v-on:codeSuccess="cateSuccess()"
v-on:cancel="closeCateDialog"
>
<kz-cate-pay ref="cate_pay" :cateId="cateId" :catePrice="catePrice" :showCateConfirm="showCateConfirm"
:confirmCateContent="confirmCateContent" v-on:paySuccess="cateSuccess()" v-on:codeSuccess="cateSuccess()"
v-on:cancel="closeCateDialog">
</kz-cate-pay>
</view>
</template>
@ -144,7 +144,7 @@
}],
isSubmit: false,
isFirstShow: true,
//
isPreventSwitchScreen: false,
@ -155,6 +155,7 @@
switchScreenTimestamp: 0,
}
},
onShow() {
if (this.isFirstShow) {
this.isFirstShow = false
@ -177,6 +178,21 @@
}
console.log('onShow', this.curretSwitchScreenCount)
// iOS - 3onShow
// #ifdef APP-PLUS
if (!this.isFirstShow) {
try {
let pages = getCurrentPages();
let page = pages[pages.length - 1];
let currentWebview = page.$getAppWebview();
currentWebview.setStyle({ popGesture: 'none' });
console.log('onShow: iOS右划手势禁用补充设置完成')
} catch (e) {
console.log('onShow: iOS右划手势禁用补充设置失败', e)
}
}
// #endif
},
onHide() {
if (this.isPreventSwitchScreen) {
@ -194,6 +210,43 @@
if (this.room_id) {
this.getQuestion()
}
// iOS - 1onLoad
// #ifdef APP-PLUS
try {
plus.webview.currentWebview().setStyle({'popGesture': 'none'})
console.log('onLoad: iOS右划手势禁用设置完成')
} catch (e) {
console.log('onLoad: iOS右划手势禁用设置失败', e)
}
// #endif
},
onReady() {
// iOS - 2onReady使getCurrentPages
// #ifdef APP-PLUS
try {
let pages = getCurrentPages();
let page = pages[pages.length - 1];
let currentWebview = page.$getAppWebview();
currentWebview.setStyle({ popGesture: 'none' });
console.log('onReady: iOS右划手势禁用设置完成')
} catch (e) {
console.log('onReady: iOS右划手势禁用设置失败', e)
}
// webview
setTimeout(() => {
try {
let pages = getCurrentPages();
let page = pages[pages.length - 1];
let currentWebview = page.$getAppWebview();
currentWebview.setStyle({ popGesture: 'none' });
console.log('onReady延迟: iOS右划手势禁用设置完成')
} catch (e) {
console.log('onReady延迟: iOS右划手势禁用设置失败', e)
}
}, 500);
// #endif
},
onBackPress(e) {
console.log('onBackPress e', e)
@ -224,6 +277,22 @@
this.scrollTop = e.scrollTop
},
methods: {
goToBack() {
if (!this.isSubmit) {
let message = '当前正在模拟考试,是否确认退出?'
uni.showModal({
title: '提示',
content: message,
success: (res) => {
if (res.confirm) {
uni.navigateBack({
delta: 1
});
}
}
});
}
},
//
ajax() {
paperApi.checkPay(this, {
@ -248,7 +317,7 @@
case 1:
this.getQuestion()
break
case 2:
// this.utils.toast(res.data.msg)
// this.showCateConfirm = true
@ -256,12 +325,12 @@
// this.catePrice = res.data.price
this.cate = res.data.cate
this.cateId = res.data.cate.id
this.catePrice = parseFloat(res.data.price)
this.confirmCateContent = res.data.msg
this.showCateConfirm = true
break
default:
this.utils.toast('检测支付返回不支持的结果')
break
@ -279,11 +348,11 @@
}
}, 3000)
break
case 1:
this.getQuestion()
break
case 2:
this.utils.toast(res.data.msg)
this.showConfirm = true
@ -291,7 +360,7 @@
this.price = res.data.price
this.memberPrice = res.data.member_price
break
default:
this.utils.toast('检测支付返回不支持的结果')
break
@ -300,19 +369,27 @@
// 12
switch (res.data.status) {
case 0:
this.utils.toast(res.data.msg ? res.data.msg : '未知错误')
setTimeout(() => {
if (res.data.url) {
this.utils.goto(res.data.url)
} else {
this.goBack()
//this.utils.toast(res.data.msg ? res.data.msg : '')
uni.showModal({
title: '提示',
content: res.data.msg,
confirmText: '联系客服',
success: (res) => {
if (res.confirm) {
//this.utils.goto('/pages/user/member-center?from_train=1')
uni.makePhoneCall({
phoneNumber: '18903795988' //
});
} else if (res.cancel) {
this.utils.goback()
}
}
}, 3000)
});
break
case 1:
this.getQuestion()
break
default:
this.utils.toast('检测支付返回不支持的结果')
break
@ -340,7 +417,7 @@
title: res.msg,
icon: 'none'
})
setTimeout(() => {
uni.navigateBack()
}, 2000)
@ -368,16 +445,18 @@
for (let i in questions) {
questions[i]['code2'] = false
console.log('questions[i][score]', questions[i]['score'])
questions[i]['score'] = this.getSingleScore(questions[i])//, questions[i].kind, questions[i].difficulty
questions[i]['score'] = this.getSingleScore(questions[
i]) //, questions[i].kind, questions[i].difficulty
console.log('questions[i][score]', questions[i]['score'])
}
this.questions = questions
this.total = questions.length
this.configs = this.paper.configs
this.configs = this.paper.configs
//
if (this.paper.is_prevent_switch_screen && this.paper.switch_screen_count && this.paper.switch_screen_second) {
if (this.paper.is_prevent_switch_screen && this.paper.switch_screen_count && this.paper
.switch_screen_second) {
this.isPreventSwitchScreen = true
this.switchScreenCount = this.paper.switch_screen_count
this.switchScreenSecond = this.paper.switch_screen_second
@ -572,4 +651,4 @@
color: #333;
padding: 30rpx 0 50rpx;
}
</style>
</style>

View File

@ -1,13 +1,11 @@
<template>
<view>
<view class="card-view">
<!-- <view class="card-view">
<image :src="bannerImage" mode="aspectFill" style="width: 100%; height: 200rpx;"></image>
</view>
<view style="height: calc(99vh - 200px);">
<view class="card-view">
<!-- <tui-divider width="80%" gradual>选择要练习的题目类型</tui-divider> -->
</view> -->
<view style="height:99vh">
<view class="card-view" style="height: 85%;">
<!-- <tui-divider width="80%" gradual>选择要练习的题目类型</tui-divider>
<view class="margin">
<tn-radio-group activeColor="#1A73E8" v-model="mode">
<tn-radio name="normal">正常模式</tn-radio>
@ -20,9 +18,9 @@
<view v-if="mode == 'normal'">* 按顺序出题不记忆当前做题题标</view>
<view v-if="mode == 'memory'">* 按顺序出题记忆当前做题题标下次进入直接跳至题标</view>
<view v-if="mode == 'random'">* 随机出题不记忆当前做题题标</view>
</view>
</view> -->
<tui-cascade-selection height="800rpx" :itemList="cateList" @complete="complete" text="请选择题库"
<tui-cascade-selection height="75vh" :itemList="cateList" @complete="complete" text="请选择题库"
:defaultItemList="defaultCateList"></tui-cascade-selection>
</view>
@ -199,7 +197,7 @@
if (res.code == 1) {
this.questionCount = res.data.total
if (this.questionCount) {
this.btnText = '开始练习' + this.questionCount + '题)'
this.btnText = '开始练习'
} else {
this.btnText = '当前分类无试题'
}
@ -228,10 +226,13 @@
uni.showModal({
title: '提示',
content: res.msg,
confirmText: '前往开通',
confirmText: '联系客服',
success: (res) => {
if (res.confirm) {
this.utils.goto('/pages/user/member-center?from_train=1')
//this.utils.goto('/pages/user/member-center?from_train=1')
uni.makePhoneCall({
phoneNumber: '18903795988' //
});
} else if (res.cancel) {
this.utils.goback()
}

View File

@ -1,8 +1,8 @@
<template>
<view>
<view class="card-view">
<!-- <view class="card-view">
<image src="../../static/img/train-banner2.png" mode="aspectFill" style="width: 100%;"></image>
</view>
</view> -->
<view class="card-view">
<!-- <tui-divider width="80%" gradual>选择要常用的题库</tui-divider> -->

View File

@ -12,9 +12,9 @@
<view class="tn-flex tn-flex-row-between tn-strip-bottom-min tn-padding">
<view class="justify-content-item">
<view class="tn-text-bold tn-text-lg"> 用户头像 </view>
<view class="tn-color-gray tn-padding-top-xs">
<!-- <view class="tn-color-gray tn-padding-top-xs">
有趣的头像百里挑一
</view>
</view> -->
</view>
<button
class="avatar-wrapper"
@ -82,7 +82,7 @@
<view class="tn-icon-right tn-padding-top"></view>
</view>
</view> -->
<picker
<!-- <picker
@change="bindGenderChange"
:value="indexGender"
:range="arrayGender"
@ -121,7 +121,7 @@
<view class="tn-icon-right tn-padding-top"></view>
</view>
</view>
</picker>
</picker> -->
<!-- <picker @change="bindPickerChange1" :value="index1" :range="array1">
<view class="tn-flex tn-flex-row-between tn-strip-bottom-min tn-padding">
<view class="justify-content-item">

View File

@ -20,6 +20,8 @@
<view v-if="info!=''" @click="updateVideo"
style="position: fixed;left:0;right:0;border-radius:10rpx;bottom: 40rpx;;color: #ffffff;height: 80rpx;line-height: 80rpx;text-align: center;background-color: #1A73E8;width: 80%;margin: 0 auto">
上传学习成果</view>
<!-- 登录组件 -->
<login ref="login" v-on:succ="ajax()"></login>
</view>
</template>
@ -35,6 +37,25 @@
onLoad(op) {
this.id = op.id;
this.getList();
},
onShow() {
uni.$on("login_success", (data) => {
console.log("login_success", data);
//this.user = data.user;
this.getList();
});
if (!uni.getStorageSync("token")) {
this.$nextTick(() => {
//console.log(this.$refs.login);
this.$refs.login.modal = true;
});
} else {
}
},
onHide() {
uni.$off("login_success");
},
onShareAppMessage() {
return {
@ -43,8 +64,15 @@
};
},
methods: {
ajax() {
},
updateVideo() {
if (!uni.getStorageSync("token")) {
this.$refs.login.modal = true;
return;
}
var that = this;
uni.chooseMedia({
count: 1,
@ -94,6 +122,7 @@
id: this.id
}).then(res => {
console.log(res);
this.info = res.data;
})
},

View File

@ -6,17 +6,20 @@
<view style="padding: 30rpx;background-color: #ffffff;">
<view style="display: flex;justify-content: space-between;align-items: center;">
<view style="font-size: 34rpx;font-weight: 600">{{info.mulu.mulu_name}}</view>
<view style="font-size: 24rpx;color: #999999">转发</view>
<view>
<button open-type="share" style="font-size: 24rpx;color: #999999">转发</button>
</view>
</view>
</view>
<view style="margin-top: 15rpx;padding: 30rpx;background-color: #ffffff;">
<tn-tabs :list="list" :isScroll="false" :current="current" name="name" :bold="true" activeColor="#1A73E8" inactiveColor="#999999" :fontSize="36" @change="change"></tn-tabs>
<tn-tabs :list="list" :isScroll="false" :current="current" name="name" :bold="true" activeColor="#1A73E8"
inactiveColor="#999999" :fontSize="36" @change="change"></tn-tabs>
<view style="height: 1px;background-color: #eeeeee;width: 100%;margin: 30rpx 0rpx;"></view>
<view v-if="current==0">
<view v-html="info.mulu.mulu_content"></view>
</view>
<view v-for="(item,index) in info.viedo" v-if="current==1">
<view style="display: flex;" @click="openUrl(item.id)">
<view v-for="(item,index) in info.viedo" v-if="current==1" @click="openUrl(item)">
<view style="display: flex;">
<view style="font-size: 32rpx;font-weight: 600;color: #999999;">{{index<9?0:''}}{{index+1}}</view>
<view style="width: 100%;padding-left: 20rpx;">
<view style="display: flex;align-items: center;justify-content: space-between;">
@ -50,15 +53,30 @@
current: 0,
info: {},
id: 0,
vip: 0,
}
},
onLoad(op) {
this.id = op.id;
this.getList();
this.getIsUser();
},
onShareAppMessage() {
return {
title: this.info.mulu.mulu_name,
path: '/pagesSubject/video/list?id=' + this.id,
};
},
methods: {
change(d){
this.current=d;
getIsUser() {
newsApi.ifUserMember(this, {}).then(res => {
//0
console.log(res);
this.vip = res.code;
})
},
change(d) {
this.current = d;
},
getList() {
newsApi.getViedoInfo(this, {
@ -68,9 +86,25 @@
this.info = res.data;
})
},
openUrl(id) {
openUrl(item) {
console.log(this.vip);
if (this.vip == 0 && item.status == 1) {
uni.showModal({
title: '提示',
content: '请联系客服,购买会员!',
confirmText: '联系客服',
success: (res) => {
if (res.confirm) {
uni.makePhoneCall({
phoneNumber: '18903795988' //
});
}
}
});
return;
}
uni.navigateTo({
url: "/pagesSubject/video/info?id=" + id
url: "/pagesSubject/video/info?id=" + item.id
})
}
}
@ -78,5 +112,13 @@
</script>
<style>
button,
button::after {
margin: 0;
padding: 0;
border: none;
outline: none;
border-radius: 0;
background: transparent;
}
</style>

BIN
static/img/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
static/img/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
static/img/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
static/img/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -10,7 +10,7 @@
- 丰富的插件(关键词搜索、内容编辑、`latex` 公式等)
- 效率高、容错性强且轻量化
查看 [功能介绍](https://jin-yufeng.gitee.io/mp-html/#/overview/feature) 了解更多
查看 [功能介绍](https://jin-yufeng.github.io/mp-html/#/overview/feature) 了解更多
## 使用方法
- `uni_modules` 方式
@ -84,13 +84,13 @@
使用 *cli* 方式运行的项目,通过 *npm* 方式引入时,需要在 *vue.config.js* 中配置 *transpileDependencies*,详情可见 [#330](https://github.com/jin-yufeng/mp-html/issues/330#issuecomment-913617687)
如果在 **nvue** 中使用还要将 `dist/uni-app/static` 目录下的内容拷贝到项目的 `static` 目录下,否则无法运行
查看 [快速开始](https://jin-yufeng.gitee.io/mp-html/#/overview/quickstart) 了解更多
查看 [快速开始](https://jin-yufeng.github.io/mp-html/#/overview/quickstart) 了解更多
## 组件属性
| 属性 | 类型 | 默认值 | 说明 |
|:---:|:---:|:---:|---|
| container-style | String | | 容器的样式([2.1.0+](https://jin-yufeng.gitee.io/mp-html/#/changelog/changelog#v210) |
| container-style | String | | 容器的样式([2.1.0+](https://jin-yufeng.github.io/mp-html/#/changelog/changelog#v210) |
| content | String | | 用于渲染的 html 字符串 |
| copy-link | Boolean | true | 是否允许外部链接被点击时自动复制 |
| domain | String | | 主域名(用于链接拼接) |
@ -106,7 +106,7 @@
| tag-style | Object | | 设置标签的默认样式 |
| use-anchor | Boolean | false | 是否使用锚点链接 |
查看 [属性](https://jin-yufeng.gitee.io/mp-html/#/basic/prop) 了解更多
查看 [属性](https://jin-yufeng.github.io/mp-html/#/basic/prop) 了解更多
## 组件事件
@ -119,7 +119,7 @@
| linktap | 链接被点击时 |
| play | 音视频播放时 |
查看 [事件](https://jin-yufeng.gitee.io/mp-html/#/basic/event) 了解更多
查看 [事件](https://jin-yufeng.github.io/mp-html/#/basic/event) 了解更多
## api
组件实例上提供了一些 `api` 方法可供调用
@ -132,10 +132,10 @@
| getRect | 获取富文本内容的位置和大小 |
| setContent | 设置富文本内容 |
| imgList | 获取所有图片的数组 |
| pauseMedia | 暂停播放音视频([2.2.2+](https://jin-yufeng.gitee.io/mp-html/#/changelog/changelog#v222) |
| setPlaybackRate | 设置音视频播放速率([2.4.0+](https://jin-yufeng.gitee.io/mp-html/#/changelog/changelog#v240) |
| pauseMedia | 暂停播放音视频([2.2.2+](https://jin-yufeng.github.io/mp-html/#/changelog/changelog#v222) |
| setPlaybackRate | 设置音视频播放速率([2.4.0+](https://jin-yufeng.github.io/mp-html/#/changelog/changelog#v240) |
查看 [api](https://jin-yufeng.gitee.io/mp-html/#/advanced/api) 了解更多
查看 [api](https://jin-yufeng.github.io/mp-html/#/advanced/api) 了解更多
## 插件扩展
除基本功能外,本组件还提供了丰富的扩展,可按照需要选用
@ -167,7 +167,7 @@
```
4. 拷贝 `dist/uni-app` 中的内容到项目根目录
查看 [插件](https://jin-yufeng.gitee.io/mp-html/#/advanced/plugin) 了解更多
查看 [插件](https://jin-yufeng.github.io/mp-html/#/advanced/plugin) 了解更多
## 关于 nvue
`nvue` 使用原生渲染,不支持部分 `css` 样式,为实现和 `html` 相同的效果,组件内部通过 `web-view` 进行渲染,性能上差于原生,根据 `weex` 官方建议,`web` 标签仅应用在非常规的降级场景。因此,如果通过原生的方式(如 `richtext`)能够满足需要,则不建议使用本组件,如果有较多的富文本内容,则可以直接使用 `vue` 页面
@ -178,11 +178,9 @@
`nvue` 模式下,[此问题](https://ask.dcloud.net.cn/question/119678) 修复前,不支持通过 `uni_modules` 引入,需要本地引入(将 [dist/uni-app](https://github.com/jin-yufeng/mp-html/tree/master/dist/uni-app) 中的内容拷贝到项目根目录下)
## 立即体验
![富文本插件](https://mp-html.oss-cn-hangzhou.aliyuncs.com/qrcode.jpg)
## 问题反馈
遇到问题时,请先查阅 [常见问题](https://jin-yufeng.gitee.io/mp-html/#/question/faq) 和 [issue](https://github.com/jin-yufeng/mp-html/issues) 中是否已有相同的问题
遇到问题时,请先查阅 [常见问题](https://jin-yufeng.github.io/mp-html/#/question/faq) 和 [issue](https://github.com/jin-yufeng/mp-html/issues) 中是否已有相同的问题
可通过 [issue](https://github.com/jin-yufeng/mp-html/issues/new/choose) 、插件问答或发送邮件到 [mp_html@126.com](mailto:mp_html@126.com) 提问,不建议在评论区提问(不方便回复)
提问请严格按照 [issue 模板](https://github.com/jin-yufeng/mp-html/issues/new/choose) ,描述清楚使用环境、`html` 内容或可复现的 `demo` 项目以及复现方式,对于 **描述不清**、**无法复现** 或重复的问题将不予回复
@ -191,4 +189,4 @@
群2已满`778239129`
群3`960265313`
查看 [问题反馈](https://jin-yufeng.gitee.io/mp-html/#/question/feedback) 了解更多
查看 [问题反馈](https://jin-yufeng.github.io/mp-html/#/question/feedback) 了解更多

View File

@ -1,3 +1,9 @@
## v2.5.12025-04-20
1. `U` 适配鸿蒙 `APP` [详细](https://github.com/jin-yufeng/mp-html/issues/615)
2. `U` 微信小程序替换废弃 `api` `getSystemInfoSync` [详细](https://github.com/jin-yufeng/mp-html/issues/613)
3. `F` 修复了 `app` 端播放视频可能报错的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/617)
4. `F` 修复了 `latex` 插件可能出现 `xxx can be used only in display mode` 的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/632)
5. `F` 修复了 `uni-app``latex` 公式可能不显示的问题 [#599](https://github.com/jin-yufeng/mp-html/issues/599)、[#627](https://github.com/jin-yufeng/mp-html/issues/627)
## v2.5.02024-04-22
1. `U` `play` 事件增加返回 `src` 等信息 [详细](https://github.com/jin-yufeng/mp-html/issues/526)
2. `U` `preview-img` 属性支持设置为 `all` 开启 `base64` 图片预览 [详细](https://github.com/jin-yufeng/mp-html/issues/536)

View File

@ -5,14 +5,14 @@
<node v-else :childs="nodes" :opts="[lazyLoad,loadingImg,errorImg,showImgMenu,selectable]" name="span" />
<!-- #endif -->
<!-- #ifdef APP-PLUS-NVUE -->
<web-view ref="web" src="/static/app-plus/mp-html/local.html" :style="'margin-top:-2px;height:' + height + 'px'" @onPostMessage="_onMessage" />
<web-view ref="web" src="/uni_modules/mp-html/static/app-plus/mp-html/local.html" :style="'margin-top:-2px;height:' + height + 'px'" @onPostMessage="_onMessage" />
<!-- #endif -->
</view>
</template>
<script>
/**
* mp-html v2.5.0
* mp-html v2.5.1
* @description 富文本组件
* @tutorial https://github.com/jin-yufeng/mp-html
* @property {String} container-style 容器的样式
@ -41,8 +41,7 @@
import node from './node/node'
// #endif
import Parser from './parser'
import latex from './latex/index.js'
const plugins=[latex,]
const plugins=[]
// #ifdef APP-PLUS-NVUE
const dom = weex.requireModule('dom')
// #endif

File diff suppressed because one or more lines are too long

View File

@ -76,12 +76,19 @@ const config = {
}
}
const tagSelector={}
const {
windowWidth,
let windowWidth, system
// #ifdef MP-WEIXIN
if (uni.canIUse('getWindowInfo')) {
windowWidth = uni.getWindowInfo().windowWidth
system = uni.getDeviceInfo().system
} else {
// #endif
const systemInfo = uni.getSystemInfoSync()
windowWidth = systemInfo.windowWidth
// #ifdef MP-WEIXIN
system
// #endif
} = uni.getSystemInfoSync()
system = systemInfo.system
}
// #endif
const blankChar = makeMap(' ,\r,\n,\t,\f')
let idIndex = 0

View File

@ -1,76 +1,99 @@
{
"id": "mp-html",
"displayName": "mp-html 富文本组件【全端支持支持编辑、latex等扩展】",
"version": "v2.5.0",
"description": "一个强大的富文本组件,高效轻量,功能丰富",
"keywords": [
"富文本",
"编辑器",
"html",
"rich-text",
"editor"
],
"repository": "https://github.com/jin-yufeng/mp-html",
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "无",
"data": "无",
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/mp-html",
"type": "component-vue"
"id": "mp-html",
"displayName": "mp-html 富文本组件【全端支持支持编辑、latex等扩展】",
"version": "v2.5.1",
"description": "一个强大的富文本组件,高效轻量,功能丰富",
"keywords": [
"富文本",
"编辑器",
"html",
"rich-text",
"editor"
],
"repository": "https://github.com/jin-yufeng/mp-html",
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"uni_modules": {
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y"
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "u",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "y",
"联盟": "y"
},
"Vue": {
"vue2": "y",
"vue3": "y"
}
}
"contact": {
"qq": ""
},
"declaration": {
"ads": "无",
"data": "无",
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/mp-html",
"type": "component-vue",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"platforms": {
"cloud": {
"tcb": "√",
"aliyun": "√",
"alipay": "x"
},
"client": {
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}
},
"engines": {
"HBuilderX": "^3.1.0",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
}
}

View File

@ -1 +1 @@
"use strict";function t(t){for(var e=Object.create(null),n=t.attributes.length;n--;)e[t.attributes[n].name]=t.attributes[n].value;return e}function e(){a[1]&&(this.src=a[1],this.onerror=null),this.onclick=null,this.ontouchstart=null,uni.postMessage({data:{action:"onError",source:"img",attrs:t(this)}})}function n(){window.unloadimgs-=1,0===window.unloadimgs&&uni.postMessage({data:{action:"onReady"}})}function o(r,s,c){for(var d=0;d<r.length;d++)!function(){var u,l=r[d];if(l.type&&"node"!==l.type)u=document.createTextNode(l.text.replace(/&amp;/g,"&"));else{var g=l.name;"svg"===g&&(c="http://www.w3.org/2000/svg"),"html"!==g&&"body"!==g||(g="div"),u=c?document.createElementNS(c,g):document.createElement(g);for(var p in l.attrs)u.setAttribute(p,l.attrs[p]);if(l.children&&o(l.children,u,c),"img"===g){if(window.unloadimgs+=1,u.onload=n,u.onerror=n,!u.src&&u.getAttribute("data-src")&&(u.src=u.getAttribute("data-src")),l.attrs.ignore||(u.onclick=function(e){e.stopPropagation(),uni.postMessage({data:{action:"onImgTap",attrs:t(this)}})}),a[2]){var h=new Image;h.src=u.src,u.src=a[2],h.onload=function(){u.src=this.src},h.onerror=function(){u.onerror()}}u.onerror=e}else if("a"===g)u.addEventListener("click",function(e){e.stopPropagation(),e.preventDefault();var n,o=this.getAttribute("href");o&&"#"===o[0]&&(n=(document.getElementById(o.substr(1))||{}).offsetTop),uni.postMessage({data:{action:"onLinkTap",attrs:t(this),offset:n}})},!0);else if("video"===g||"audio"===g)i.push(u),l.attrs.autoplay||l.attrs.controls||u.setAttribute("controls","true"),u.onplay=function(){if(uni.postMessage({data:{action:"onPlay"}}),a[3])for(var t=0;t<i.length;t++)i[t]!==this&&i[t].pause()},u.onerror=function(){uni.postMessage({data:{action:"onError",source:g,attrs:t(this)}})};else if("table"===g&&a[4]&&!u.style.cssText.includes("inline")){var f=document.createElement("div");f.style.overflow="auto",f.appendChild(u),u=f}else"svg"===g&&(c=void 0)}s.appendChild(u)}()}document.addEventListener("UniAppJSBridgeReady",function(){document.body.onclick=function(){return uni.postMessage({data:{action:"onClick"}})},uni.postMessage({data:{action:"onJSBridgeReady"}})});var a,i=[];window.setContent=function(t,e,n){var r=document.getElementById("content");e[0]&&(document.body.style.cssText=e[0]),e[5]||(r.style.userSelect="none"),n||(r.innerHTML="",i=[]),a=e,window.unloadimgs=0;var s=document.createDocumentFragment();o(t,s),r.appendChild(s);var c=r.scrollHeight;uni.postMessage({data:{action:"onLoad",height:c}}),window.unloadimgs||uni.postMessage({data:{action:"onReady",height:c}}),clearInterval(window.timer),window.timer=setInterval(function(){r.scrollHeight!==c&&(c=r.scrollHeight,uni.postMessage({data:{action:"onHeightChange",height:c}}))},350)},window.onunload=function(){clearInterval(window.timer)};
"use strict";function t(t){for(var e=Object.create(null),n=t.attributes.length;n--;)e[t.attributes[n].name]=t.attributes[n].value;return e}function e(){a[1]&&(this.src=a[1],this.onerror=null),this.onclick=null,this.ontouchstart=null,uni.postMessage({data:{action:"onError",source:"img",attrs:t(this)}})}function n(){window.unloadimgs-=1,0===window.unloadimgs&&uni.postMessage({data:{action:"onReady"}})}function o(r,s,c){for(var d=0;d<r.length;d++)!function(d){var u=r[d],l=void 0;if(u.type&&"node"!==u.type)l=document.createTextNode(u.text.replace(/&amp;/g,"&"));else{var g=u.name;"svg"===g&&(c="http://www.w3.org/2000/svg"),"html"!==g&&"body"!==g||(g="div"),l=c?document.createElementNS(c,g):document.createElement(g);for(var p in u.attrs)l.setAttribute(p,u.attrs[p]);if(u.children&&o(u.children,l,c),"img"===g){if(window.unloadimgs+=1,l.onload=n,l.onerror=n,!l.src&&l.getAttribute("data-src")&&(l.src=l.getAttribute("data-src")),u.attrs.ignore||(l.onclick=function(e){e.stopPropagation(),uni.postMessage({data:{action:"onImgTap",attrs:t(this)}})}),a[2]){var h=new Image;h.src=l.src,l.src=a[2],h.onload=function(){l.src=this.src},h.onerror=function(){l.onerror()}}l.onerror=e}else if("a"===g)l.addEventListener("click",function(e){e.stopPropagation(),e.preventDefault();var n,o=this.getAttribute("href");o&&"#"===o[0]&&(n=(document.getElementById(o.substr(1))||{}).offsetTop),uni.postMessage({data:{action:"onLinkTap",attrs:t(this),offset:n}})},!0);else if("video"===g||"audio"===g)i.push(l),u.attrs.autoplay||u.attrs.controls||l.setAttribute("controls","true"),l.onplay=function(){if(uni.postMessage({data:{action:"onPlay"}}),a[3])for(var t=0;t<i.length;t++)i[t]!==this&&i[t].pause()},l.onerror=function(){uni.postMessage({data:{action:"onError",source:g,attrs:t(this)}})};else if("table"===g&&a[4]&&!l.style.cssText.includes("inline")){var f=document.createElement("div");f.style.overflow="auto",f.appendChild(l),l=f}else"svg"===g&&(c=void 0)}s.appendChild(l)}(d)}document.addEventListener("UniAppJSBridgeReady",function(){document.body.onclick=function(){return uni.postMessage({data:{action:"onClick"}})},uni.postMessage({data:{action:"onJSBridgeReady"}})});var a,i=[];window.setContent=function(t,e,n){var r=document.getElementById("content");e[0]&&(document.body.style.cssText=e[0]),e[5]||(r.style.userSelect="none"),n||(r.innerHTML="",i=[]),a=e,window.unloadimgs=0;var s=document.createDocumentFragment();o(t,s),r.appendChild(s);var c=r.scrollHeight;uni.postMessage({data:{action:"onLoad",height:c}}),window.unloadimgs||uni.postMessage({data:{action:"onReady",height:c}}),clearInterval(window.timer),window.timer=setInterval(function(){r.scrollHeight!==c&&(c=r.scrollHeight,uni.postMessage({data:{action:"onHeightChange",height:c}}))},350)},window.onunload=function(){clearInterval(window.timer)};

File diff suppressed because one or more lines are too long