Compare commits
22 Commits
xie_xuewei
...
xie_wuyunl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
738e403b8d | ||
|
|
c774d48f5e | ||
|
|
880d75eec1 | ||
|
|
1172043635 | ||
|
|
3b57f0aeb0 | ||
|
|
890a3c45ad | ||
|
|
c50dfc0bd5 | ||
|
|
52f7ad40c8 | ||
|
|
7db05c39fa | ||
|
|
ca693e3a4d | ||
|
|
346ec9d615 | ||
|
|
b08bc52662 | ||
|
|
f25a50e09d | ||
|
|
f0f8b758c8 | ||
|
|
d41853aed7 | ||
|
|
14cc4a87f1 | ||
|
|
4cdf12da24 | ||
|
|
6b324701b3 | ||
|
|
52e17d42b2 | ||
|
|
8043abbd12 | ||
|
|
66770de40b | ||
|
|
6fc6dfcd1c |
@@ -6,8 +6,8 @@ if (process.env.NODE_ENV === 'development') {
|
||||
// socketUrl = "ws://localhost:6001/";
|
||||
// baseUrl = "https://twin-ui.com/demo/";
|
||||
// baseUrl = "http://59.110.212.44:9200/pb/";
|
||||
// baseUrl = "https://testapi.nuttyreading.com/"; // 线上测试环境
|
||||
baseUrl = "https://api.nuttyreading.com/"; // 线上正式
|
||||
baseUrl = "https://testapi.nuttyreading.com/"; // 线上测试环境
|
||||
// baseUrl = "https://api.nuttyreading.com/"; // 线上正式
|
||||
// baseUrl = "http://192.168.110.100:9100/pb/"; // 开发用电脑
|
||||
// baseUrl = "http://192.168.110.110:9200/pb/";
|
||||
// baseUrl = "http://192.168.110.38:9200/pb/"; // 吴春磊笔记本1
|
||||
|
||||
@@ -167,6 +167,7 @@ $http.dataFactory = async function(res) {
|
||||
title: '登录失效,请重新登录',
|
||||
icon: 'none'
|
||||
});
|
||||
console.log('到这里了')
|
||||
setTimeout(() => {
|
||||
uni.navigateTo({
|
||||
url: "/pages/user/login"
|
||||
|
||||
4
main.js
@@ -11,8 +11,8 @@ Vue.prototype.$bgm = bgm
|
||||
// Vue.prototype.$baseUrl = "http://59.110.212.44:9100/pb/"
|
||||
Vue.prototype.$baseUrl = "https://api.nuttyreading.com/"
|
||||
// 安卓安卓包下载地址
|
||||
// Vue.prototype.$apkUrl = "https://www.nuttyreading.com/nuttyreading.apk"
|
||||
Vue.prototype.$apkUrl = "https://www.nuttyreading.com/nuttyreading.apk"
|
||||
// Vue.prototype.$apkUrl = "https://www.nuttyreading.com/nuttyreading.apk" // 本地地址
|
||||
Vue.prototype.$apkUrl = "https://a.app.qq.com/o/simple.jsp?pkgname=com.cn.nuttyreading" // 应用宝
|
||||
|
||||
|
||||
// uView组件库
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
"src" : "图片路径"
|
||||
}
|
||||
],
|
||||
"versionName" : "1.2.10",
|
||||
"versionCode" : 1210,
|
||||
"versionName" : "1.2.14",
|
||||
"versionCode" : 1214,
|
||||
"app-plus" : {
|
||||
"compatible" : {
|
||||
"ignoreVersion" : true
|
||||
@@ -113,7 +113,8 @@
|
||||
"entitlements" : {
|
||||
"com.apple.developer.associated-domains" : [ "applinks:verification.nuttyreading.com" ]
|
||||
}
|
||||
}
|
||||
},
|
||||
"idfa" : false
|
||||
},
|
||||
"icons" : {
|
||||
"android" : {
|
||||
@@ -153,7 +154,10 @@
|
||||
"splashscreen" : {
|
||||
"alwaysShowBeforeRender" : false
|
||||
},
|
||||
"nativePlugins" : {}
|
||||
"nativePlugins" : {},
|
||||
"uniStatistics" : {
|
||||
"enable" : true
|
||||
}
|
||||
},
|
||||
// 5+App特有相关
|
||||
"quickapp" : {},
|
||||
@@ -171,6 +175,9 @@
|
||||
"scope.userLocation" : {
|
||||
"desc" : "你的位置信息将用于小程序位置接口的效果展示"
|
||||
}
|
||||
},
|
||||
"uniStatistics" : {
|
||||
"enable" : true
|
||||
}
|
||||
},
|
||||
"h5" : {
|
||||
@@ -183,9 +190,61 @@
|
||||
"treeShaking" : {
|
||||
"enable" : true
|
||||
}
|
||||
},
|
||||
"uniStatistics" : {
|
||||
"enable" : true
|
||||
}
|
||||
},
|
||||
"_spaceID" : "mp-3614b80b-2d75-4462-a481-4998f8187274"
|
||||
"_spaceID" : "mp-3614b80b-2d75-4462-a481-4998f8187274",
|
||||
"uniStatistics" : {
|
||||
"version" : "2",
|
||||
"enable" : true
|
||||
},
|
||||
"mp-alipay" : {
|
||||
"uniStatistics" : {
|
||||
"enable" : true
|
||||
}
|
||||
},
|
||||
"mp-baidu" : {
|
||||
"uniStatistics" : {
|
||||
"enable" : true
|
||||
}
|
||||
},
|
||||
"mp-jd" : {
|
||||
"uniStatistics" : {
|
||||
"enable" : true
|
||||
}
|
||||
},
|
||||
"mp-kuaishou" : {
|
||||
"uniStatistics" : {
|
||||
"enable" : true
|
||||
}
|
||||
},
|
||||
"mp-lark" : {
|
||||
"uniStatistics" : {
|
||||
"enable" : true
|
||||
}
|
||||
},
|
||||
"mp-qq" : {
|
||||
"uniStatistics" : {
|
||||
"enable" : true
|
||||
}
|
||||
},
|
||||
"mp-toutiao" : {
|
||||
"uniStatistics" : {
|
||||
"enable" : true
|
||||
}
|
||||
},
|
||||
"quickapp-webview-huawei" : {
|
||||
"uniStatistics" : {
|
||||
"enable" : true
|
||||
}
|
||||
},
|
||||
"quickapp-webview-union" : {
|
||||
"uniStatistics" : {
|
||||
"enable" : true
|
||||
}
|
||||
}
|
||||
}
|
||||
// 小程序特有相关
|
||||
|
||||
|
||||
@@ -508,6 +508,14 @@
|
||||
"navigationBarTitleText" : "脉穴详情",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/luck/luck",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText" : "五运六气",
|
||||
"enablePullDownRefresh" : false
|
||||
}
|
||||
}
|
||||
],
|
||||
"globalStyle": {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
:duration="duration">
|
||||
<swiper-item v-for="(item, index) in acupointDetail.imageList" :key="index">
|
||||
<view class="swiper-item">
|
||||
<image :src="item" mode="aspectFit"></image>
|
||||
<image :src="item" mode="aspectFit" @click="previewImage(item)"></image>
|
||||
</view>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
@@ -21,7 +21,7 @@
|
||||
</view>
|
||||
</uni-section>
|
||||
<uni-section class="mb-10" titleFontSize="18px" title="别名" type="line">
|
||||
<view class="item" v-if="acupointDetail.alias && acupointDetail.alias != ''">
|
||||
<view class="item" v-if="acupointDetail.alias && acupointDetail.alias != ''" >
|
||||
{{acupointDetail.alias}}
|
||||
</view>
|
||||
<view class="item" v-else>
|
||||
@@ -30,20 +30,20 @@
|
||||
</uni-section>
|
||||
|
||||
<uni-section class="mb-10" titleFontSize="18px" title="所属经络" type="line">
|
||||
<view class="item">
|
||||
{{acupointDetail.meridian}}
|
||||
<view class="item" v-html="acupointDetail.meridian">
|
||||
|
||||
</view>
|
||||
</uni-section>
|
||||
|
||||
<uni-section class="mb-10" titleFontSize="18px" title="定位" type="line">
|
||||
<view class="item">
|
||||
{{acupointDetail.position}}
|
||||
<uni-section class="mb-10" titleFontSize="18px" title="定位" type="line" >
|
||||
<view class="item" v-html="acupointDetail.position">
|
||||
|
||||
</view>
|
||||
</uni-section>
|
||||
|
||||
<uni-section class="mb-10" titleFontSize="18px" title="解剖" type="line">
|
||||
<view class="item" v-if="acupointDetail.anatomy && acupointDetail.anatomy != ''">
|
||||
{{acupointDetail.anatomy}}
|
||||
<view class="item" v-if="acupointDetail.anatomy && acupointDetail.anatomy != ''" v-html="acupointDetail.anatomy">
|
||||
|
||||
</view>
|
||||
<view class="item" v-else>
|
||||
暂无
|
||||
@@ -51,14 +51,13 @@
|
||||
</uni-section>
|
||||
|
||||
<uni-section class="mb-10" titleFontSize="18px" title="主治" type="line">
|
||||
<view class="item">
|
||||
{{acupointDetail.indication}}
|
||||
<view class="item" v-html="acupointDetail.indication">
|
||||
|
||||
</view>
|
||||
</uni-section>
|
||||
|
||||
<uni-section class="mb-10" titleFontSize="18px" title="配伍" type="line">
|
||||
<view class="item" v-if="acupointDetail.compatibility && acupointDetail.compatibility != ''">
|
||||
{{acupointDetail.compatibility}}
|
||||
<view class="item" v-if="acupointDetail.compatibility && acupointDetail.compatibility != ''" v-html="acupointDetail.compatibility">
|
||||
</view>
|
||||
<view class="item" v-else>
|
||||
暂无
|
||||
@@ -66,8 +65,8 @@
|
||||
</uni-section>
|
||||
|
||||
<uni-section class="mb-10" titleFontSize="18px" title="文献" type="line">
|
||||
<view class="item" v-if="acupointDetail.literature && acupointDetail.literature != ''">
|
||||
{{acupointDetail.literature}}
|
||||
<view class="item" v-if="acupointDetail.literature && acupointDetail.literature != ''" v-html="acupointDetail.literature">
|
||||
|
||||
</view>
|
||||
<view class="item" v-else>
|
||||
暂无
|
||||
@@ -105,6 +104,19 @@
|
||||
this.getDetail()
|
||||
},
|
||||
methods: {
|
||||
// 放大图片
|
||||
previewImage(url) {
|
||||
console.log(url)
|
||||
uni.previewImage({
|
||||
urls: [url],
|
||||
longPressActions: {
|
||||
itemList: ['很抱歉,暂不支持保存图片到本地'],
|
||||
success: function(res) {
|
||||
// console.log(res,'+++++')
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
// 穴位详情
|
||||
getDetail() {
|
||||
$http.request({
|
||||
@@ -139,7 +151,7 @@
|
||||
.mb-10{ margin-bottom: 10px;}
|
||||
.content{font-size: 28rpx;}
|
||||
.swiper-item{
|
||||
image{margin: 0 auto; height:200rpx;}
|
||||
image{margin: 0 auto; height:250rpx;}
|
||||
|
||||
}
|
||||
.uni-margin-wrap{ margin-bottom: 20rpx; padding-top: 20rpx;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<view :class="['container', currentDay == linshiDay && taskInfo.id && myword.length == 0 ? 'pb100':'']">
|
||||
<view :class="['container', currentDay == linshiDay && taskInfo.id && myword.length == 0 && bookInfo.isBuy ? 'pb100':'']">
|
||||
<z-nav-bar title="读书打卡"></z-nav-bar>
|
||||
<!-- 仿钉钉打卡日历组件 -->
|
||||
<view class=""
|
||||
@@ -254,7 +254,7 @@
|
||||
|
||||
</view>
|
||||
</u-popup>
|
||||
<view class="leaveBtn" v-if="!addTextShow && currentDay == linshiDay && taskInfo.id && myword.length == 0">
|
||||
<view class="leaveBtn" v-if="!addTextShow && currentDay == linshiDay && taskInfo.id && myword.length == 0 && bookInfo.isBuy">
|
||||
<button style="height: 70rpx; font-size: 28rpx; line-height: 70rpx;" type="primary" plain="true"
|
||||
@click="addTextShow = true">说点什么</button>
|
||||
</view>
|
||||
@@ -450,7 +450,11 @@
|
||||
// 获取书籍信息
|
||||
getBookInfo() {
|
||||
this.$http
|
||||
.post('book/book/appinfo/' + this.bookid + '/' + this.userInfo.id)
|
||||
// .post('book/book/appinfo/' + this.bookid + '/' + this.userInfo.id)
|
||||
.post('book/book/getBookInfo', {
|
||||
'bookId': this.bookid,
|
||||
'userId': this.userInfo.id
|
||||
})
|
||||
.then(res => {
|
||||
if (res.code == 0) {
|
||||
console.log(res, 'res')
|
||||
@@ -657,7 +661,7 @@
|
||||
.then(res => {
|
||||
if (res.code == 0) {
|
||||
console.log(res, '任务信息')
|
||||
if (res.result != {}) {
|
||||
if (res.result != {} && res.result) {
|
||||
this.taskInfo = res.result
|
||||
this.taskInfo.video != '' ? this.poster = this.taskInfo.video +
|
||||
"?x-oss-process=video/snapshot,t_0,f_jpg" : ''
|
||||
@@ -674,17 +678,30 @@
|
||||
uni.hideLoading()
|
||||
})
|
||||
},
|
||||
gotoBuy(){
|
||||
let that = this
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '购买本书后方可参与打卡',
|
||||
confirmText:'立即购买',
|
||||
cancelText:'知道了',
|
||||
success: function (res) {
|
||||
if (res.confirm) {
|
||||
console.log(that.bookInfo,'that.bookInfo');
|
||||
uni.navigateTo({
|
||||
url: '../bookShop/commodityDetail?id=' + that.bookInfo.productId
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
// 补卡
|
||||
buSign(day) {
|
||||
console.log('正在补卡', this.taskInfo, day)
|
||||
// return false
|
||||
// if (!this.taskInfo.id) {
|
||||
// uni.showToast({
|
||||
// title: '当天未发布打卡任务,不可补卡哦',
|
||||
// icon: 'none'
|
||||
// })
|
||||
// return
|
||||
// }
|
||||
if(!this.bookInfo.isBuy){
|
||||
this.gotoBuy()
|
||||
return
|
||||
}
|
||||
let param = {
|
||||
'bookId': this.bookid,
|
||||
'userId': this.userInfo.id,
|
||||
@@ -713,8 +730,12 @@
|
||||
},
|
||||
// 快捷签到
|
||||
kuickSign() {
|
||||
if(!this.bookInfo.isBuy){
|
||||
this.gotoBuy()
|
||||
return
|
||||
}
|
||||
|
||||
if (!this.taskInfo.id) {
|
||||
if (this.taskInfo != null && !this.taskInfo.id) {
|
||||
uni.showToast({
|
||||
title: '当天未发布打卡任务,不可签到哦',
|
||||
icon: 'none'
|
||||
@@ -800,7 +821,7 @@
|
||||
});
|
||||
},
|
||||
// 说点什么
|
||||
goToSign() {
|
||||
goToSign() {
|
||||
// images数据处理
|
||||
if (this.formData.images.length > 0) {
|
||||
var imgs = []
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<uni-tag class="tag" @click="toMore()" :inverted="true" text="书评" type="success"></uni-tag>
|
||||
<uni-tag @click="gotoListen()" class="tag" v-if="bookMessage.canListen" :inverted="true" text="听书" type="primary"></uni-tag>
|
||||
<!-- 1:打卡,2不打卡 -->
|
||||
<uni-tag @click="gotoclock()" v-if="bookMessage.clockIn == 1" class="tag" :inverted="true" text="签到" type="warning"></uni-tag>
|
||||
<uni-tag @click="gotoclock()" v-if="bookMessage.clockIn == 1" class="tag" :inverted="true" text="打卡" type="warning"></uni-tag>
|
||||
<uni-tag @click="goJiangShu()" v-if="bookMessage.teachIn == 1" class="tag" :inverted="true" text="讲书" type="error"></uni-tag>
|
||||
</view>
|
||||
<view class="buy" v-if="!bookMessage.isBuy">
|
||||
|
||||
287
pages/luck/luck - 副本.vue
Normal file
@@ -0,0 +1,287 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<!-- 公共组件-每个页面必须引入 -->
|
||||
<public-module></public-module> -->
|
||||
<z-nav-bar title="五运六气"></z-nav-bar>
|
||||
<view class="">
|
||||
<canvas style="width: 100%; height:100vh;" canvas-id="firstCanvas" id="firstCanvas"></canvas>
|
||||
</view>
|
||||
<music-play :playData="playData"></music-play>
|
||||
<z-navigation></z-navigation>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import musicPlay from '@/components/music.vue'
|
||||
import $http from '@/config/requestConfig.js';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
playData: {},
|
||||
pageWidth: uni.getSystemInfoSync().windowWidth,
|
||||
pageHeight: uni.getSystemInfoSync().windowHeight - 200,
|
||||
fiveYunNum: 5,
|
||||
zhuyun: [],
|
||||
keyun: [],
|
||||
nianyun: '',
|
||||
fiveTimes: []
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.getYun()
|
||||
},
|
||||
onReady: function(e) {
|
||||
|
||||
},
|
||||
onHide() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
getpanOne() {
|
||||
console.log(this.nianyun, 'nuanyun')
|
||||
var myCanvas = uni.createCanvasContext('firstCanvas')
|
||||
//将原点设置100,100位置
|
||||
myCanvas.translate(0, 0);
|
||||
//原点在100,100,则圆心设为0,0 ——> 100,100的位置
|
||||
myCanvas.setStrokeStyle("#00ff00")
|
||||
myCanvas.setLineWidth(1)
|
||||
// myCanvas.fillStyle = "#f3b2a7"
|
||||
// myCanvas.rect(0, 0, 200, 200)
|
||||
// myCanvas.stroke()
|
||||
myCanvas.setLineWidth(1)
|
||||
// console.log(-Math.PI/5,'-Math.PI/2')
|
||||
let yunNum = 360 / 5
|
||||
var angle = Math.PI * 2 / 5;
|
||||
// let startAng = 0
|
||||
// console.log(angle,'angle')
|
||||
var deg = Math.PI / 180
|
||||
// 最大圈
|
||||
for (var i = 0; i < this.fiveYunNum; i++) {
|
||||
myCanvas.setStrokeStyle("#000")
|
||||
let n = i + 1
|
||||
myCanvas.beginPath();
|
||||
myCanvas.moveTo(this.pageWidth / 2, this.pageHeight / 2)
|
||||
myCanvas.arc(this.pageWidth / 2, this.pageHeight / 2, 160, -deg * i * yunNum, -deg * yunNum * n, true)
|
||||
|
||||
myCanvas.font = 'normal 16px Arial'
|
||||
myCanvas.fillStyle = "#f3b2a7"
|
||||
myCanvas.fill();
|
||||
myCanvas.closePath();
|
||||
myCanvas.stroke()
|
||||
}
|
||||
for (var i = 0; i < this.fiveYunNum; i++) {
|
||||
myCanvas.setStrokeStyle("#000")
|
||||
let n = i + 1
|
||||
myCanvas.beginPath();
|
||||
myCanvas.moveTo(this.pageWidth / 2, this.pageHeight / 2)
|
||||
myCanvas.arc(this.pageWidth / 2, this.pageHeight / 2, 90, -deg * i * yunNum, -deg * yunNum * n, true)
|
||||
myCanvas.closePath();
|
||||
myCanvas.fillStyle = "#fef9e4"
|
||||
myCanvas.fill();
|
||||
myCanvas.stroke()
|
||||
}
|
||||
// 中间的主运
|
||||
myCanvas.beginPath();
|
||||
myCanvas.arc(this.pageWidth / 2, this.pageHeight / 2, 30, 0, 2 * Math.PI, true)
|
||||
myCanvas.fillStyle = "#f8d8d5"
|
||||
myCanvas.fill();
|
||||
myCanvas.fillStyle = "#000"
|
||||
myCanvas.fillText(this.nianyun, this.pageWidth / 2 - 9, this.pageHeight / 2 + 6)
|
||||
myCanvas.closePath();
|
||||
myCanvas.stroke()
|
||||
|
||||
|
||||
|
||||
// 绘制文字(主运)
|
||||
|
||||
myCanvas.beginPath();
|
||||
myCanvas.fillStyle = "#000"
|
||||
myCanvas.font = 'normal 16px Arial'
|
||||
// myCanvas.rotate((Math.PI/180)*5)
|
||||
myCanvas.fillText(this.zhuyun[0], this.pageWidth / 2 + 90, this.pageHeight / 2 + 70)
|
||||
myCanvas.closePath();
|
||||
myCanvas.stroke()
|
||||
|
||||
|
||||
myCanvas.beginPath();
|
||||
myCanvas.fillStyle = "#000"
|
||||
myCanvas.font = 'normal 16px Arial'
|
||||
// myCanvas.rotate((Math.PI/180)*5)
|
||||
myCanvas.fillText(this.zhuyun[1], this.pageWidth / 2 - 30, this.pageHeight / 2 + 120)
|
||||
myCanvas.closePath();
|
||||
myCanvas.stroke()
|
||||
|
||||
|
||||
myCanvas.beginPath();
|
||||
myCanvas.fillStyle = "#000"
|
||||
myCanvas.font = 'normal 16px Arial'
|
||||
// myCanvas.rotate((Math.PI/180)*5)
|
||||
myCanvas.fillText(this.zhuyun[2], this.pageWidth / 2 - 140, this.pageHeight / 2)
|
||||
myCanvas.closePath();
|
||||
myCanvas.stroke()
|
||||
|
||||
|
||||
myCanvas.beginPath();
|
||||
myCanvas.fillStyle = "#000"
|
||||
myCanvas.font = 'normal 16px Arial'
|
||||
// myCanvas.rotate((Math.PI/180)*5)
|
||||
myCanvas.fillText(this.zhuyun[3], this.pageWidth / 2 - 50, this.pageHeight / 2 - 120)
|
||||
myCanvas.closePath();
|
||||
myCanvas.stroke()
|
||||
|
||||
myCanvas.beginPath();
|
||||
myCanvas.fillStyle = "#000"
|
||||
myCanvas.font = 'normal 16px Arial'
|
||||
// myCanvas.rotate((Math.PI/180)*5)
|
||||
myCanvas.fillText(this.zhuyun[4], this.pageWidth / 2 + 90, this.pageHeight / 2 - 70)
|
||||
myCanvas.closePath();
|
||||
myCanvas.stroke()
|
||||
|
||||
// 结束
|
||||
// 绘制文字(客运)
|
||||
myCanvas.beginPath();
|
||||
myCanvas.fillStyle = "#000"
|
||||
myCanvas.font = 'normal 16px Arial'
|
||||
// myCanvas.rotate((Math.PI/180)*5)
|
||||
myCanvas.fillText(this.keyun[0], this.pageWidth / 2 + 40, this.pageHeight / 2 + 40)
|
||||
myCanvas.closePath();
|
||||
myCanvas.stroke()
|
||||
|
||||
|
||||
myCanvas.beginPath();
|
||||
myCanvas.fillStyle = "#000"
|
||||
myCanvas.font = 'normal 16px Arial'
|
||||
// myCanvas.rotate((Math.PI/180)*5)
|
||||
myCanvas.fillText(this.keyun[1], this.pageWidth / 2 - 20, this.pageHeight / 2 + 60)
|
||||
myCanvas.closePath();
|
||||
myCanvas.stroke()
|
||||
|
||||
|
||||
myCanvas.beginPath();
|
||||
myCanvas.fillStyle = "#000"
|
||||
myCanvas.font = 'normal 16px Arial'
|
||||
// myCanvas.rotate((Math.PI/180)*5)
|
||||
myCanvas.fillText(this.keyun[2], this.pageWidth / 2 - 70, this.pageHeight / 2)
|
||||
myCanvas.closePath();
|
||||
myCanvas.stroke()
|
||||
|
||||
|
||||
myCanvas.beginPath();
|
||||
myCanvas.fillStyle = "#000"
|
||||
myCanvas.font = 'normal 16px Arial'
|
||||
// myCanvas.rotate((Math.PI/180)*5)
|
||||
myCanvas.fillText(this.keyun[3], this.pageWidth / 2 - 30, this.pageHeight / 2 - 50)
|
||||
myCanvas.closePath();
|
||||
myCanvas.stroke()
|
||||
|
||||
myCanvas.beginPath();
|
||||
myCanvas.fillStyle = "#000"
|
||||
myCanvas.font = 'normal 16px Arial'
|
||||
// myCanvas.rotate((Math.PI/180)*5)
|
||||
myCanvas.fillText(this.keyun[4], this.pageWidth / 2 + 30, this.pageHeight / 2 - 20)
|
||||
myCanvas.closePath();
|
||||
myCanvas.stroke()
|
||||
// 结束
|
||||
|
||||
// 绘制时间
|
||||
// myCanvas.beginPath();
|
||||
myCanvas.save();
|
||||
myCanvas.translate(this.pageWidth / 2 + 170, this.pageHeight / 2 - 30);
|
||||
myCanvas.rotate(90 * Math.PI / 180 );
|
||||
// console.log(30 * Math.PI / 180 )
|
||||
myCanvas.fillStyle = "#000"
|
||||
// myCanvas.textBaseline = 'middle'
|
||||
myCanvas.font = 'normal 12px Arial'
|
||||
myCanvas.fillText(this.fiveTimes[0], 0, 0)
|
||||
// myCanvas.closePath();
|
||||
myCanvas.restore()
|
||||
|
||||
|
||||
// myCanvas.beginPath();
|
||||
myCanvas.save();
|
||||
myCanvas.translate(this.pageWidth / 2 + 80, this.pageHeight / 2 + 150);
|
||||
myCanvas.rotate((90+yunNum) * Math.PI / 180 );
|
||||
// console.log(30 * Math.PI / 180 )
|
||||
myCanvas.fillStyle = "#000"
|
||||
// myCanvas.textBaseline = 'middle'
|
||||
myCanvas.font = 'normal 12px Arial'
|
||||
myCanvas.fillText(this.fiveTimes[1], 0, 0)
|
||||
// myCanvas.closePath();
|
||||
myCanvas.restore()
|
||||
|
||||
|
||||
myCanvas.save();
|
||||
myCanvas.translate(this.pageWidth / 2 - 120, this.pageHeight / 2 + 120);
|
||||
myCanvas.rotate((90+yunNum*2) * Math.PI / 180 );
|
||||
myCanvas.fillStyle = "#000"
|
||||
myCanvas.font = 'normal 12px Arial'
|
||||
myCanvas.fillText(this.fiveTimes[2], 0, 0)
|
||||
myCanvas.restore()
|
||||
|
||||
myCanvas.save();
|
||||
myCanvas.translate(this.pageWidth / 2 - 160, this.pageHeight / 2 - 70);
|
||||
myCanvas.rotate((90+yunNum*3) * Math.PI / 180 );
|
||||
myCanvas.fillStyle = "#000"
|
||||
myCanvas.font = 'normal 12px Arial'
|
||||
myCanvas.fillText(this.fiveTimes[3], 0, 0)
|
||||
myCanvas.restore()
|
||||
|
||||
myCanvas.save();
|
||||
myCanvas.translate(this.pageWidth / 2 + 20, this.pageHeight / 2 - 170);
|
||||
myCanvas.rotate((90+yunNum*4) * Math.PI / 180 );
|
||||
myCanvas.fillStyle = "#000"
|
||||
myCanvas.font = 'normal 12px Arial'
|
||||
myCanvas.fillText(this.fiveTimes[4], 0, 0)
|
||||
myCanvas.restore()
|
||||
|
||||
myCanvas.draw()
|
||||
},
|
||||
getYun() {
|
||||
$http.request({
|
||||
url: "book/point/TGDZForYear",
|
||||
method: "POST", // POST、GET、PUT、DELETE,具体说明查看官方文档
|
||||
data: {
|
||||
"date": "2023-11-16 13:25:15"
|
||||
},
|
||||
header: { //默认 无 说明:请求头
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
})
|
||||
.then(res => {
|
||||
|
||||
if (res.code == 0 && res.tgdz) {
|
||||
console.log('获取成功', res.tgdz)
|
||||
this.zhuyun = res.tgdz.wy.zhuYun
|
||||
this.keyun = res.tgdz.wy.keYun
|
||||
this.nianyun = res.tgdz.wy.nianYun
|
||||
this.fiveTimes = res.tgdz.wy.time
|
||||
// console.log(this.nianyun,'this.nianyun')
|
||||
this.getpanOne()
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
}).catch(e => {
|
||||
console.log(e, 'e')
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
components: {
|
||||
musicPlay
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.container {
|
||||
padding: 10rpx;
|
||||
height: 100vh;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
|
||||
.flexbox {
|
||||
display: flex;
|
||||
}
|
||||
</style>
|
||||
363
pages/luck/luck.vue
Normal file
@@ -0,0 +1,363 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<!-- 公共组件-每个页面必须引入 -->
|
||||
<public-module></public-module> -->
|
||||
<z-nav-bar title="五运六气"></z-nav-bar>
|
||||
<view>
|
||||
<!-- {{date}}---{{timestamp}} -->
|
||||
<!-- <uni-section :title="'date 对象用法:' + datetimesingle" type="line"></uni-section> -->
|
||||
<view class="datetimeBox">
|
||||
<uni-datetime-picker type="datetime" v-model="date" @change="changeLog" :clear-icon="false" />
|
||||
</view>
|
||||
<view class="flexbox box1 grayBg">
|
||||
<view class="yunqi">
|
||||
<view class="">
|
||||
<text>五运:{{wy.zhuyun[wy.now]}}(主运) {{wy.keyun[wy.now]}}(客运) {{wy.nianyun}}(年运)</text>
|
||||
</view>
|
||||
<view class="">
|
||||
<text>六气:{{lq.zhuqi[lq.now]}}(主气) {{lq.keqi[lq.now]}}(客气)</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="yinli">
|
||||
<text>{{yinli.year}}</text>
|
||||
<text>{{yinli.month}}</text>
|
||||
<text>{{yinli.day}}</text>
|
||||
<text>{{yinli.hour}}</text>
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="centerBox">《 ↓ 五运图 》</view>
|
||||
<!-- <scroll-view class="scroll-view_H flexbox" scroll-x="true" @scroll="scroll" > -->
|
||||
<view class="flexbox scroll-view_H wuYunBox">
|
||||
<view class="leftone row" id="text">
|
||||
<view class="line line1">开始时间<br /><span>运数</span></view>
|
||||
<!-- <view class="">*节</view> -->
|
||||
<view class="line zhuyun">主运</view>
|
||||
<view class="line keyun">客运</view>
|
||||
</view>
|
||||
<view :class="['row', wy.now == 0 ? 'cur' : '']" id="text0">
|
||||
<view class="line line1">{{wy.fiveTimes[0]}}起<br /><span>初之运</span></view>
|
||||
<view class="line zhuyun">{{wy.zhuyun[0]}}</view>
|
||||
<view class="line keyun">{{wy.keyun[0]}}</view>
|
||||
</view>
|
||||
<view :class="['row', wy.now == 1 ? 'cur' : '']" id="text1">
|
||||
<view class="line line1">{{wy.fiveTimes[1]}}起<br /><span>二之运</span></view>
|
||||
<view class="line zhuyun">{{wy.zhuyun[1]}}</view>
|
||||
<view class="line keyun">{{wy.keyun[1]}}</view>
|
||||
</view>
|
||||
<view :class="['row', wy.now == 2 ? 'cur' : '']" id="text2">
|
||||
<view class="line line1">{{wy.fiveTimes[2]}}起<br /><span>三之运</span></view>
|
||||
<view class="line zhuyun">{{wy.zhuyun[2]}}</view>
|
||||
<view class="line keyun">{{wy.keyun[2]}}</view>
|
||||
</view>
|
||||
<view :class="['row', wy.now == 3 ? 'cur' : '']" id="text3">
|
||||
<view class="line line1">{{wy.fiveTimes[3]}}起<br /><span>四之运</span></view>
|
||||
<view class="line zhuyun">{{wy.zhuyun[3]}}</view>
|
||||
<view class="line keyun">{{wy.keyun[3]}}</view>
|
||||
</view>
|
||||
<view :class="['row',wy.now == 4 ? 'cur' : '']" id="text4">
|
||||
<view class="line line1">{{wy.fiveTimes[4]}}起<br /><span>终之运</span></view>
|
||||
<view class="line zhuyun">{{wy.zhuyun[4]}}</view>
|
||||
<view class="line keyun">{{wy.keyun[4]}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- </scroll-view> -->
|
||||
<view class="centerBox">《 ↓ 六气图,左滑查看全年气数 》</view>
|
||||
<scroll-view class="scroll-view_H flexbox liuqiBox" scroll-x="true" @scroll="scroll" :scroll-left="200">
|
||||
<!-- <view class="flexbox scroll-view_H"> -->
|
||||
<view class="leftone row">
|
||||
<view class="line line1">开始时间<br /><span>气数</span></view>
|
||||
<!-- <view class="">*节</view> -->
|
||||
<view class="line zhuyun">主气</view>
|
||||
<view class="line keyun">客气</view>
|
||||
</view>
|
||||
<view :class="['row', lq.now == 0 ? 'cur' : '']">
|
||||
<view class="line line1">{{lq.time[0]}}起<br /><span>初之气</span></view>
|
||||
<view class="line zhuyun">{{lq.zhuqi[0]}}</view>
|
||||
<view class="line keyun">{{lq.keqi[0]}}</view>
|
||||
</view>
|
||||
<view :class="['row', lq.now == 1 ? 'cur' : '']">
|
||||
<view class="line line1">{{lq.time[1]}}起<br /><span>二之气</span></view>
|
||||
<view class="line zhuyun">{{lq.zhuqi[1]}}</view>
|
||||
<view class="line keyun">{{lq.keqi[1]}}</view>
|
||||
</view>
|
||||
<view :class="['row', 'sizai', 'sizai1', lq.now == 2 ? 'cur' : '']">
|
||||
<view class="line line1">{{lq.time[2]}}起<br /><span>三之气</span></view>
|
||||
<view class="line zhuyun">{{lq.zhuqi[2]}}</view>
|
||||
<view class="line keyun">{{lq.keqi[2]}}</view>
|
||||
</view>
|
||||
<view :class="['row', lq.now == 3 ? 'cur' : '']">
|
||||
<view class="line line1">{{lq.time[3]}}起<br /><span>四之气</span></view>
|
||||
<view class="line zhuyun">{{lq.zhuqi[3]}}</view>
|
||||
<view class="line keyun">{{lq.keqi[3]}}</view>
|
||||
</view>
|
||||
<view :class="['row', lq.now == 4 ? 'cur' : '']">
|
||||
<view class="line line1">{{lq.time[4]}}起<br /><span>五之气</span></view>
|
||||
<view class="line zhuyun">{{lq.zhuqi[4]}}</view>
|
||||
<view class="line keyun">{{lq.keqi[4]}}</view>
|
||||
</view>
|
||||
<view :class="['row', 'sizai', 'sizai2', lq.now == 5 ? 'cur' : '']">
|
||||
<view class="line line1">{{lq.time[5]}}起<br /><span>终之气</span></view>
|
||||
<view class="line zhuyun">{{lq.zhuqi[5]}}</view>
|
||||
<view class="line keyun">{{lq.keqi[5]}}</view>
|
||||
</view>
|
||||
<!-- </view> -->
|
||||
</scroll-view>
|
||||
<!-- <image src="../../static/icon/leftFrag.gif" mode="scaleToFill"></image> -->
|
||||
<music-play :playData="playData"></music-play>
|
||||
<z-navigation></z-navigation>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import musicPlay from '@/components/music.vue'
|
||||
import $http from '@/config/requestConfig.js';
|
||||
|
||||
function formatDateTime(time) {
|
||||
var date = new Date(time);
|
||||
var y = date.getFullYear();
|
||||
var m = date.getMonth() + 1;
|
||||
m = m < 10 ? ('0' + m) : m;
|
||||
var d = date.getDate();
|
||||
d = d < 10 ? ('0' + d) : d;
|
||||
var h = date.getHours();
|
||||
h = h < 10 ? ('0' + h) : h;
|
||||
var minute = date.getMinutes();
|
||||
var second = date.getSeconds();
|
||||
minute = minute < 10 ? ('0' + minute) : minute;
|
||||
second = second < 10 ? ('0' + second) : second;
|
||||
|
||||
return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
|
||||
};
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
playData: {},
|
||||
pageWidth: uni.getSystemInfoSync().windowWidth,
|
||||
pageHeight: uni.getSystemInfoSync().windowHeight - 200,
|
||||
fiveYunNum: 5,
|
||||
// date: new Date().toISOString().slice(0, 10), // 只返回年月日
|
||||
date: Date.now() - 2 * 24 * 3600 * 1000, // 返回年月日带时间
|
||||
dateToString: formatDateTime(new Date()), // 字符串格式的日期
|
||||
timestamp: Date.now() - 2 * 24 * 3600 * 1000, // 时间戳
|
||||
wy: {
|
||||
curTime:0,
|
||||
zhuyun: [],
|
||||
keyun: [],
|
||||
nianyun: '',
|
||||
fiveTimes: []
|
||||
},
|
||||
showCalendar: false,
|
||||
info: {
|
||||
lunar: true,
|
||||
range: true,
|
||||
insert: false,
|
||||
selected: []
|
||||
},
|
||||
lq: {
|
||||
curTime:0,
|
||||
zhuqi: [],
|
||||
keqi: [],
|
||||
time: []
|
||||
},
|
||||
yinli: {
|
||||
year: '',
|
||||
month: '',
|
||||
day: '',
|
||||
hour: ''
|
||||
},
|
||||
wYScrollLeft:0,
|
||||
lQScrollLeft:0,
|
||||
wytext:'',
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
let da = new Date().toISOString().slice(0, 10)
|
||||
this.timestamp = new Date(da).getTime()
|
||||
this.getYun(this.dateToString)
|
||||
|
||||
},
|
||||
|
||||
onHide() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
scroll: function(e) {},
|
||||
// 获取五运六气
|
||||
getYun(date) {
|
||||
let that = this
|
||||
$http.request({
|
||||
url: "book/point/WYLQForYear",
|
||||
method: "POST", // POST、GET、PUT、DELETE,具体说明查看官方文档
|
||||
data: {
|
||||
"date": date
|
||||
},
|
||||
header: { //默认 无 说明:请求头
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
})
|
||||
.then(res => {
|
||||
if (res.code == 0 && res.wylq) {
|
||||
console.log('获取成功', res.wylq)
|
||||
this.wy.zhuyun = res.wylq.wy.zhuYun
|
||||
this.wy.keyun = res.wylq.wy.keYun
|
||||
this.wy.nianyun = res.wylq.wy.nianYun
|
||||
this.wy.fiveTimes = res.wylq.wy.time
|
||||
this.wy.now = res.wylq.wy.now
|
||||
this.wytext = 'text'+this.wy.now
|
||||
// this.wy.timestampList = res.wylq.wy.time.map( item => {
|
||||
// return new Date(item).getTime()
|
||||
// })
|
||||
// this.wy.curTime = this.wy.timestampList.find(function(elem){
|
||||
// return elem > that.timestamp
|
||||
// });
|
||||
// console.log(this.wy,'this.wy.curTime',this.timestamp)
|
||||
// this.yinli.month = res.wylq.month
|
||||
// this.yinli.day = res.wylq.day
|
||||
// this.yinli.hour = res.wylq.hour
|
||||
// this.yinli.year = res.wylq.year
|
||||
|
||||
this.lq = res.wylq.lq
|
||||
// this.wy.now >= 2 ? this.wYScrollLeft = 1800 : 0
|
||||
// this.lq.now >= 2 ?this.lQScrollLeft = 1800 : 0
|
||||
|
||||
|
||||
// this.lq.timestampList = res.wylq.lq.time.map( item => {
|
||||
// return new Date(item).getTime()
|
||||
// })
|
||||
// console.log(this.wYScrollLeft,this.lQScrollLeft,'this.lq.timestampList')
|
||||
}
|
||||
|
||||
}).catch(e => {
|
||||
console.log(e, 'e')
|
||||
});
|
||||
},
|
||||
changeLog(e) {
|
||||
console.log('change事件:', e);
|
||||
let ss = e.slice(0, 10)
|
||||
this.timestamp = new Date(ss).getTime()
|
||||
this.getYun(e)
|
||||
},
|
||||
},
|
||||
|
||||
components: {
|
||||
musicPlay
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
* {
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.centerBox {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
.yinli {
|
||||
line-height: 50rpx;
|
||||
|
||||
text {
|
||||
writing-mode: vertical-rl;
|
||||
letter-spacing: 20rpx;
|
||||
color: #c06346;
|
||||
}
|
||||
}
|
||||
|
||||
.box1 {
|
||||
padding: 20rpx;
|
||||
margin-bottom: 20rpx;
|
||||
justify-content: space-between;
|
||||
|
||||
.yunqi {
|
||||
color: #c06346;
|
||||
line-height: 50rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.grayBg {
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
.scroll-view_H {
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
|
||||
.leftone {
|
||||
|
||||
border-left: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.row {
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
background-color: #fef9e4;
|
||||
border-right: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.row.cur{background-color: #8d3d16; color: #fff; position: relative; border-right:0;
|
||||
z-index: 5; box-shadow:0 0 10px #8d3d16;
|
||||
}
|
||||
.line {
|
||||
padding: 20rpx;
|
||||
border-top: 1px solid #ddd;
|
||||
span{font-size: 36rpx; }
|
||||
}
|
||||
.line1{ font-size: 24rpx; height: 200rpx; writing-mode: vertical-rl;;}
|
||||
|
||||
.zhuyun {
|
||||
color: #8d3d16;
|
||||
background-color: #faede7;
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.keyun {
|
||||
color: #c06346;
|
||||
background-color: #fceeed;
|
||||
font-size: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
padding: 10rpx;
|
||||
|
||||
background-color: #fff; padding-bottom: 70rpx;
|
||||
}
|
||||
|
||||
.datetimeBox {
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
.liuqiBox{
|
||||
.line.keyun { padding: 60rpx 10rpx}
|
||||
}
|
||||
.wuYunBox{
|
||||
.row{width: 20%; box-sizing: border-box;}
|
||||
}
|
||||
/deep/ .uni-calendar__content-mobile {
|
||||
bottom: 100rpx !important;
|
||||
}
|
||||
|
||||
.sizai{
|
||||
.keyun{
|
||||
position:relative;
|
||||
}
|
||||
.keyun::after{ position: absolute; content: ''; top:24rpx; left:0;font-size: 24rpx; display:block; width: 100%; color: #888; text-align: center;}
|
||||
|
||||
}
|
||||
.sizai1{
|
||||
.keyun::after{content: '(司天)';}
|
||||
}
|
||||
.sizai2{
|
||||
.keyun::after{content: '(在泉)';}
|
||||
}
|
||||
.flexbox {
|
||||
display: flex;
|
||||
}
|
||||
</style>
|
||||
@@ -3,33 +3,36 @@
|
||||
<!-- <z-nav-bar backState="2000" title="首页"></z-nav-bar> -->
|
||||
<view class="home_bg">
|
||||
<view class="" style=" ">
|
||||
<view class="icon_hua">
|
||||
<image src="../../static/icon/home_icon_3.png" mode="aspectFit" class="icon_hua_1"></image>
|
||||
</view>
|
||||
<view class="hehan">
|
||||
<image src="../../static/icon/hehan.png" mode="aspectFit" class="icon_hua_1"></image>
|
||||
</view>
|
||||
<view class="fiveIcon flexbox" >
|
||||
|
||||
<view class="icon_hua">
|
||||
<image src="../../static/icon/home_icon_1.png" mode="aspectFit" class="icon_hua_1"></image>
|
||||
</view>
|
||||
<view class="hehan">
|
||||
<image src="../../static/icon/hehan.png" mode="aspectFit" class="icon_hua_1"></image>
|
||||
</view>
|
||||
|
||||
<view class="fiveIcon flexbox" style="justify-content: space-around;">
|
||||
<div class="item item1" @click="onPageJump('../acupoint/acupoint')">
|
||||
<image src="../../static/icon/five1.png" mode="aspectFit" ></image>
|
||||
<text>经穴检索</text>
|
||||
</div>
|
||||
<div class="item item1">
|
||||
<!-- <div class="item item1">
|
||||
<image src="../../static/icon/five2.png" mode="aspectFit"></image>
|
||||
<text>方药检索</text>
|
||||
</div> -->
|
||||
<div class="item item1" @click="onPageJump('../luck/luck')">
|
||||
<image src="../../static/icon/five4.png" mode="aspectFit"></image>
|
||||
<text>五运六气</text>
|
||||
</div>
|
||||
<div class="item item1" @click="onPageJump('../peanut/searchFor')">
|
||||
<image src="../../static/icon/five3.png" mode="aspectFit"></image>
|
||||
<text>书名检索</text>
|
||||
</div>
|
||||
<div class="item item1">
|
||||
<image src="../../static/icon/five4.png" mode="aspectFit"></image>
|
||||
<text>五运六气</text>
|
||||
</div>
|
||||
<div class="item item1">
|
||||
|
||||
<!-- <div class="item item1">
|
||||
<image src="../../static/icon/five5.png" mode="aspectFit"></image>
|
||||
<text>吴门医述</text>
|
||||
</div>
|
||||
</div> -->
|
||||
</view>
|
||||
<!-- <view class="search_box flexbox" @click="onPageJump('../peanut/searchFor')">
|
||||
<view class="search">
|
||||
@@ -49,24 +52,24 @@
|
||||
<!-- <view class="home_nar" v-if="showEbook"> -->
|
||||
<view class="home_nar">
|
||||
<view class="hn_cl_tit shuguan" @click="onPageJump('../clock/index')">
|
||||
<image src="../../static/icon/home1.png" mode="aspectFit"></image>
|
||||
<text>打 卡</text>
|
||||
<image src="../../static/icon/home1-1.png" mode="aspectFit"></image>
|
||||
<!-- <text>打 卡</text> -->
|
||||
</view>
|
||||
|
||||
<view class="hn_cl_tit dianzishu" @click="onPageJump('../listen/home')">
|
||||
<image src="../../static/icon/home2.png" mode="aspectFit"></image>
|
||||
<text>听 书</text>
|
||||
<image src="../../static/icon/home2-1.png" mode="aspectFit"></image>
|
||||
<!-- <text>听 书</text> -->
|
||||
</view>
|
||||
|
||||
<!-- <view class="hn_cl_tit" @click="onPageJump('../bookShop/bookShopIndex')"> -->
|
||||
<view class="hn_cl_tit shuping" @click="onPageJump('../comments/commentsList')">
|
||||
<image src="../../static/icon/home3.png" mode="aspectFit"></image>
|
||||
<text>书 评</text>
|
||||
<image src="../../static/icon/home3-1.png" mode="aspectFit"></image>
|
||||
<!-- <text>书 评</text> -->
|
||||
</view>
|
||||
|
||||
<view class="hn_cl_tit chaoshi" @click="onPageJump('../talkBook/talkBook')">
|
||||
<image src="../../static/icon/home4.png" mode="aspectFit"></image>
|
||||
<text>讲 书</text>
|
||||
<image src="../../static/icon/home4-1.png" mode="aspectFit"></image>
|
||||
<!-- <text>讲 书</text> -->
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -124,14 +127,14 @@
|
||||
</view>
|
||||
</view> -->
|
||||
|
||||
<view class="head_line" >
|
||||
<view class="head_line" style="background-color: #fff;">
|
||||
<b></b>
|
||||
<text>新书上市</text>
|
||||
<!-- <i @click="onBookMore('New')">查看更多 ></i> -->
|
||||
</view>
|
||||
|
||||
<view class="newBook">
|
||||
<scroll-view class="scroll-view_H " scroll-x="true" scroll-left="10">
|
||||
<scroll-view class="scroll-view_H " scroll-x="true" scroll-left="10" style="margin-top: 0 !important;">
|
||||
<view :class="['item']" v-for="(item,index) in newBookList" :key="index">
|
||||
<view class="videoBox" @click="goDetail(item.productId)">
|
||||
<image v-if="item.productImages != ''" :src="item.productImages" mode="scaleToFill"></image>
|
||||
@@ -713,7 +716,7 @@
|
||||
text{
|
||||
font-size: 28rpx; color: #11a669;
|
||||
}
|
||||
image{width: 60rpx; height: 60rpx; margin: 0 auto; }
|
||||
image{width: 56rpx; height: 56rpx; margin: 0 auto; }
|
||||
}
|
||||
.hehan{width: 80%; margin: 10rpx auto;}
|
||||
.zhekou{
|
||||
@@ -723,24 +726,26 @@
|
||||
.priceAndnum{ font-size: 24rpx !important;
|
||||
.price{color: #9b9b9b !important; font-size: inherit; font-weight: normal !important; display: block;}
|
||||
}
|
||||
.ProTabs{margin: 20rpx 0; padding:0 20rpx;
|
||||
text{padding: 12rpx 14rpx; font-size: 32rpx; border-radius: 10rpx; overflow: hidden;
|
||||
.ProTabs{
|
||||
// margin: 20rpx 0;
|
||||
padding:0 20rpx;
|
||||
text{padding: 8rpx 14rpx; font-size: 32rpx; display: inline-block; border-radius: 10rpx; overflow: hidden;
|
||||
// background-color: #eee;
|
||||
color: #55aa7f; margin-right: 10rpx;}
|
||||
text.cur{background-color:#55aa7f ; color: #fff;}
|
||||
}
|
||||
.newBook{margin-top: 20rpx;}
|
||||
// .newBook{margin-top: 10rpx;}
|
||||
.scroll-view_H{background-color: #fff;white-space: nowrap;
|
||||
padding:10rpx ; }
|
||||
padding:10rpx ; margin-top: 12rpx;}
|
||||
.scroll-view_H{
|
||||
.item { padding: 10rpx; overflow: hidden; display: inline-block;
|
||||
.item { padding: 10rpx; overflow: hidden; display: inline-block; padding-bottom: 0;
|
||||
width: 180rpx !important; margin-right: 20rpx; border-radius: 10rpx;
|
||||
.videoBox{
|
||||
image{display: block; width:150rpx;
|
||||
height: 170rpx;
|
||||
}
|
||||
}
|
||||
.bookName{display: block; margin-top: 20rpx; color: #666; font-size: 24rpx; white-space: nowrap;
|
||||
.bookName{display: block; margin-top: 6rpx; color: #666; font-size: 24rpx; white-space: nowrap;
|
||||
overflow-x: hidden; overflow: hidden;
|
||||
text-overflow: ellipsis;}
|
||||
}
|
||||
@@ -748,7 +753,8 @@
|
||||
}
|
||||
.flexbox{display: flex;}
|
||||
.head_line {
|
||||
margin: 20rpx 0 0 0;
|
||||
padding-top: 8rpx;
|
||||
margin: 12rpx 0 0 0;
|
||||
|
||||
|
||||
b {
|
||||
@@ -790,8 +796,8 @@
|
||||
image{width: 150rpx; height: 80rpx;}
|
||||
}
|
||||
.icon_hua{width: 100%; text-align: center; display: block;
|
||||
image{width: 150rpx; height: 150rpx; margin: 0 auto;}
|
||||
}
|
||||
image{width: 150rpx; height: 150rpx; margin: 0 auto;}
|
||||
}
|
||||
.search_box { margin: 0 auto; margin-top: 20rpx; align-items: center;
|
||||
width: calc(100% - 30rpx); margin-top: 0;
|
||||
margin-bottom: 20rpx;
|
||||
@@ -825,29 +831,31 @@
|
||||
font-size: 30rpx; color: #fff;
|
||||
}
|
||||
}
|
||||
.home_nar {
|
||||
margin: 30rpx 20rpx; justify-content: space-between;
|
||||
.home_nar {
|
||||
background-color: #fff;
|
||||
padding: 20rpx 30rpx;
|
||||
justify-content: space-between;
|
||||
display: flex;
|
||||
color: #333;
|
||||
// margin-bottom: 0;
|
||||
margin-bottom: 0;
|
||||
// .dianzishu{ margin-right:10rpx;
|
||||
// background-color:#f8d6f4 ; border: 2px solid #edcce9;
|
||||
// }
|
||||
// .chaoshi{background-color:#fff2d8 ; border: 2px solid #ede6d3; }
|
||||
// .shuping{ background-color: #d6ffda; border: 2px solid #bae9bf;}
|
||||
// .shuguan{ background-color:#e3f9f9 ; border: 2px solid #d7eced; }
|
||||
.hn_cl_tit { padding-bottom: 10rpx;
|
||||
.hn_cl_tit {
|
||||
// width: 23%;
|
||||
width: 31%;
|
||||
text-align: center;
|
||||
border-radius: 20rpx ; padding-top: 10rpx;
|
||||
border-radius: 20rpx ;
|
||||
// line-height: 110upx;
|
||||
//display: flex;
|
||||
align-content: center;
|
||||
justify-content: center;
|
||||
image {
|
||||
width:90%;
|
||||
height:156rpx;
|
||||
width:120rpx;
|
||||
height:120rpx;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
// margin: 0 20rpx;
|
||||
@@ -1116,13 +1124,13 @@
|
||||
|
||||
.goods {
|
||||
width: 100%;
|
||||
margin:18rpx 0 50rpx 0;
|
||||
margin:0 0 50rpx 0; background-color: #fff;
|
||||
|
||||
.goodsItem {
|
||||
display: inline-block;
|
||||
width: 46%;
|
||||
border-radius: 20rpx;
|
||||
padding: 25rpx 25rpx 20rpx 25rpx;
|
||||
padding: 25rpx; padding-bottom: 5rpx;
|
||||
margin: 0 20rpx 20rpx 20rpx;
|
||||
background-color: #fff;
|
||||
border: 1px solid #eee;
|
||||
@@ -1137,12 +1145,12 @@
|
||||
|
||||
.goodsName {
|
||||
margin-top: 10rpx;
|
||||
font-size: 30rpx;
|
||||
font-size: 28rpx;
|
||||
// font-weight: bold;
|
||||
}
|
||||
|
||||
.goodsPrice {
|
||||
font-size: 30rpx;
|
||||
font-size: 28rpx;
|
||||
margin: 5rpx 0 0 3rpx;
|
||||
display: flex; justify-content: space-between;
|
||||
.price{
|
||||
|
||||
@@ -89,7 +89,8 @@
|
||||
<!-- <view class="nav_list" @click="onGoing()">
|
||||
<text>帮助与反馈11111</text>
|
||||
</view> -->
|
||||
<view class="nav_list" @click="newOnShare" v-if="isAndorid">
|
||||
<!-- <view class="nav_list" @click="newOnShare" v-if="isAndorid"> -->
|
||||
<view class="nav_list" @click="newOnShare">
|
||||
<text>分享App</text>
|
||||
</view>
|
||||
<view class="nav_list" @click="onPageJump('../peanut/aboutUs')">
|
||||
@@ -122,7 +123,7 @@
|
||||
import $http from '@/config/requestConfig.js';
|
||||
// import appShare, { closeShare } from '@/uni_modules/zhouWei-APPshare/js_sdk/appShare';
|
||||
import {
|
||||
mapState
|
||||
mapState,mapMutations
|
||||
} from 'vuex';
|
||||
export default {
|
||||
data() {
|
||||
@@ -160,6 +161,7 @@
|
||||
},
|
||||
//方法
|
||||
methods: {
|
||||
...mapMutations(['setUserInfo']),
|
||||
// 获得操作系统
|
||||
getOS(){
|
||||
let oprateOs = ''
|
||||
@@ -278,6 +280,7 @@
|
||||
// 退出登录
|
||||
signOut() {
|
||||
this.signShow = false
|
||||
this.setUserInfo({'token': null})
|
||||
uni.reLaunch({
|
||||
url: '../user/login'
|
||||
});
|
||||
|
||||
@@ -4,9 +4,24 @@
|
||||
<view class="mainContent">
|
||||
<view class="title">{{talkBookDetail.title}}</view>
|
||||
<view class="voices" v-if="talkBookDetail.voices != '' && audioShow">
|
||||
<audio style="text-align: left; overflow: hidden;" :src="talkBookDetail.voices" @play="audioPlay"
|
||||
<!-- <audio style="text-align: left; overflow: hidden;" :src="talkBookDetail.voices" @play="audioPlay"
|
||||
poster="../../static/icon/home_icon_0.png" :name="talkBookDetail.title"
|
||||
:author="bookInfo.author.authorName" :action="audioAction" controls></audio>
|
||||
:author="bookInfo.author.authorName" :action="audioAction" controls @timeupdate="updateTime"></audio> -->
|
||||
<!-- 下面自己写了个播放器 -->
|
||||
<view class="audiobox">
|
||||
<view class="audioinfo">
|
||||
<image class="audioimg" :src="bookInfo.images" mode="aspectFit"></image>
|
||||
<image class="audioimgstart" v-if="!this.paused" mode="aspectFit" src="../../static/audiostart.png" @click="start"></image>
|
||||
<image class="audioimgstart" v-else mode="aspectFit" src="../../static/audiostop.png" @click="start"></image>
|
||||
<view>
|
||||
<view class="audiotitle">{{talkBookDetail.title}}</view>
|
||||
<view class="audioauthor">{{bookInfo.author.authorName}}</view>
|
||||
<view class="audioauthor">{{currentTime+'/'+duration}}秒</view>
|
||||
<slider class="audioslider" block-size="12" v-model="currentTime" :max="duration" @change="changeTime"></slider>
|
||||
<!-- <view @click="start">点击播放/暂停</view> -->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="content" v-if="talkBookDetail.content != ''" v-html="talkBookDetail.content"></view>
|
||||
<view class="content" v-else></view>
|
||||
@@ -68,6 +83,10 @@
|
||||
}, // 书籍信息
|
||||
talkBookDetail: {},
|
||||
windowWidth: 0,
|
||||
audio: null,
|
||||
duration: 10,
|
||||
currentTime: 0,
|
||||
paused: false
|
||||
}
|
||||
},
|
||||
onLoad(e) {
|
||||
@@ -75,16 +94,55 @@
|
||||
console.log(e, 'onLoad')
|
||||
this.bookId = e.bookId
|
||||
this.teachId = e.teachId
|
||||
|
||||
// 初始化播放器实例
|
||||
this.audio = uni.createInnerAudioContext();
|
||||
},
|
||||
onShow() {
|
||||
this.getBookInfo()
|
||||
this.getTalkBookDetail()
|
||||
},
|
||||
onHide() {
|
||||
// console.log('onHide----',this.paused)
|
||||
this.audio.pause() // 暂停播放
|
||||
this.paused = false
|
||||
},
|
||||
onUnload() {
|
||||
// console.log('onUnload----',this.paused)
|
||||
this.audio.destroy() // 销毁播放器
|
||||
},
|
||||
computed: {
|
||||
...mapState(['userInfo'])
|
||||
},
|
||||
methods: {
|
||||
...mapMutations(['setUserInfo']),
|
||||
start(){
|
||||
this.initAudio() // 开始播放
|
||||
},
|
||||
initAudio(){
|
||||
this.audio.onTimeUpdate(()=>{
|
||||
this.duration = this.audio.duration.toFixed()
|
||||
this.currentTime = this.audio.currentTime.toFixed()
|
||||
})
|
||||
this.audio.onPause(()=>{ // 用于被听书组件打断时,设置播放icon状态
|
||||
this.paused = false
|
||||
// console.log('onPause----------',this.paused)
|
||||
})
|
||||
this.paused = this.audio.paused
|
||||
// console.log('paused',this.paused)
|
||||
if(this.paused){
|
||||
this.audio.play()
|
||||
}else{
|
||||
this.audio.pause()
|
||||
}
|
||||
},
|
||||
updateTime(e){
|
||||
this.currentTime = e.detail.currentTime.toFixed()
|
||||
this.duration = e.detail.duration.toFixed()
|
||||
},
|
||||
changeTime(e){
|
||||
this.audio.seek(e.detail.value) // 设置播放位置
|
||||
},
|
||||
audioPlay(){
|
||||
console.log('播放讲书',this.$music)
|
||||
this.$music.setCloseBgm() // 关闭听书音频
|
||||
@@ -140,6 +198,11 @@
|
||||
console.log(res, 'res')
|
||||
this.talkBookDetail = res.bookTeach
|
||||
|
||||
this.audio.src = this.talkBookDetail.voices // 设置播放资源路径
|
||||
this.audio.onCanplay((e)=>{
|
||||
this.duration = this.audio.duration.toFixed() // 初始化进度条和音频秒数
|
||||
})
|
||||
|
||||
// this.isBuy = res.book.isBuy
|
||||
// this.freeChapterCount = res.book.freeChapterCount
|
||||
} else {
|
||||
@@ -239,6 +302,43 @@
|
||||
border-radius: 5px;
|
||||
}
|
||||
}
|
||||
// 自定义播放器样式
|
||||
.audiobox{
|
||||
border: 2rpx solid #d6d5d5;
|
||||
border-radius: 8px;
|
||||
.audioinfo{
|
||||
display: flex;
|
||||
.audioimg{
|
||||
padding: 10rpx;
|
||||
width: 180rpx;
|
||||
height: 220rpx;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.audioimgstart{
|
||||
position: absolute;
|
||||
padding: 20rpx;
|
||||
width: 180rpx;
|
||||
height: 220rpx;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.audiotitle{
|
||||
padding: 10rpx;
|
||||
font-size: 28rpx;
|
||||
text-align: left;
|
||||
}
|
||||
.audioauthor{
|
||||
padding: 4rpx;
|
||||
font-size: 24rpx;
|
||||
text-align: left;
|
||||
color: #999;
|
||||
}
|
||||
.audioslider{
|
||||
width: 400rpx;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// .opbtn{font-size: 14rpx;}
|
||||
</style>
|
||||
@@ -253,7 +253,7 @@
|
||||
|
||||
},
|
||||
changeHandler(e) { //城市选择时触发
|
||||
console.log(e,'变化了',this.columnData, this.columnDatas)
|
||||
// console.log(e,'变化了',this.columnData, this.columnDatas)
|
||||
this.addressChanged = true
|
||||
const {
|
||||
columnIndex, //当前选择的列,省 / 市 / 区
|
||||
@@ -278,7 +278,7 @@
|
||||
},
|
||||
|
||||
addconfirm(e) { //点击确定按钮
|
||||
console.log(e,'选中的值')
|
||||
// console.log(e,'选中的值')
|
||||
this.addressChanged = true
|
||||
this.addreShow = false;
|
||||
this.addressForm.areaidpathtext = e.value[0].UName + '-' + e.value[1].UName + '-' + e.value[2].UName
|
||||
|
||||
BIN
static/audiostart.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
static/audiostop.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
static/bofang (1).png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 4.8 KiB |
BIN
static/icon/hehanandLogo.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
static/icon/home1-1.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
static/icon/home2-1.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
static/icon/home3-1.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
static/icon/home4-1.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
@@ -14781,7 +14781,15 @@
|
||||
"createDate": 1666867907000
|
||||
},
|
||||
{
|
||||
"countyList": [],
|
||||
"countyList": [
|
||||
{
|
||||
"regionCode": "441900",
|
||||
"countyId": 8446,
|
||||
"cityId": 949,
|
||||
"countyName": "东莞市",
|
||||
"createDate": 1699422943745
|
||||
}
|
||||
],
|
||||
"regionCode": "441900",
|
||||
"cityName": "东莞市",
|
||||
"cityId": 949,
|
||||
@@ -14789,7 +14797,15 @@
|
||||
"createDate": 1666867907000
|
||||
},
|
||||
{
|
||||
"countyList": [],
|
||||
"countyList": [
|
||||
{
|
||||
"regionCode": "442000",
|
||||
"countyId": 8447,
|
||||
"cityId": 950,
|
||||
"countyName": "中山市",
|
||||
"createDate": 1699423000757
|
||||
}
|
||||
],
|
||||
"regionCode": "442000",
|
||||
"cityName": "中山市",
|
||||
"cityId": 950,
|
||||
|
||||
BIN
static/zanting (1).png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
static/播放 (1).png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
static/暂停 (1).png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |