23 Commits

Author SHA1 Message Date
@fawn-nine
2ca4445107 添加轮询定时 2023-12-08 16:28:55 +08:00
@fawn-nine
1c199ffe38 暂存 2023-12-08 14:46:03 +08:00
@fawn-nine
a5f13d10db 微调 2023-12-08 14:12:26 +08:00
@fawn-nine
e9c77cac3e Merge branch 'xie1206' 2023-12-08 14:10:04 +08:00
@fawn-nine
41eddb7e9b 时辰取穴添加一次定时 2023-12-08 14:08:44 +08:00
徐哼唧L
fcb5426f08 图片删除 2023-12-08 13:32:25 +08:00
徐哼唧L
5fd5925160 图片删除 2023-12-08 13:29:27 +08:00
@fawn-nine
abd8171ee5 主分支添加五运六气和时辰检索 2023-12-08 10:12:05 +08:00
@fawn-nine
9f5d76df24 1 2023-12-08 09:43:44 +08:00
@fawn-nine
8e2abde025 Merge branch 'xie_tiangandizhi' 2023-12-08 09:42:26 +08:00
@fawn-nine
1576d2d0ff 地址添加杭州钱塘区 2023-12-07 14:47:20 +08:00
@fawn-nine
916c175fe8 讲书添加评论 2023-12-06 16:23:33 +08:00
@fawn-nine
5949070bc0 Merge branch 'xie1108' 2023-12-05 18:07:28 +08:00
@fawn-nine
57f1ccddc0 修复讲书bug 2023-12-05 18:05:51 +08:00
徐哼唧L
52b8c4503b 1 2023-12-05 11:58:48 +08:00
徐哼唧L
7e798a84eb Merge branch 'master' of https://gitee.com/wjl2008_admin/nuttyreading-html 2023-12-05 09:11:11 +08:00
yanwenlong
1b6a64d3e6 图谱居中,最大宽度适配 2023-12-04 23:16:50 +08:00
徐哼唧L
68ffd76d78 Merge remote-tracking branch 'remotes/origin/xulu' 2023-12-04 16:14:11 +08:00
徐哼唧L
7e666e7d8b 听书评论 2023-12-04 16:03:56 +08:00
徐哼唧L
406a569335 1 2023-12-01 16:33:29 +08:00
@fawn-nine
738e403b8d 添加思天在泉 2023-11-27 10:07:44 +08:00
@fawn-nine
c774d48f5e 微调 2023-11-20 14:27:39 +08:00
@fawn-nine
880d75eec1 五运六气 2023-11-17 17:43:28 +08:00
19 changed files with 1764 additions and 377 deletions

View File

@@ -5,11 +5,12 @@ if (process.env.NODE_ENV === 'development') {
// baseUrl = "http://localhost:7001/";
// socketUrl = "ws://localhost:6001/";
// baseUrl = "https://twin-ui.com/demo/";
baseUrl = "https://testapi.nuttyreading.com/"; // 线上测试环境
// baseUrl = "https://api.nuttyreading.com/"; // 线上正式
// baseUrl = "http://192.168.110.100:9200/pb/"; // 开发用电脑
// baseUrl = "http://59.110.212.44:9200/pb/";
// 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.110:9200/pb/";
// baseUrl = "http://192.168.110.38:9200/pb/"; // 吴春磊笔记本1
// socketUrl = "ws://8.129.186.35:6001/";
} else if (process.env.NODE_ENV === 'production') {

View File

@@ -12,28 +12,28 @@
"path": "pages/peanut/shopping",
"style": {
"navigationBarTitleText": "购物车",
"enablePullDownRefresh":false
"enablePullDownRefresh": false
}
},
{
"path": "pages/peanut/bookshelf",
"style": {
"navigationBarTitleText": "我的书架",
"enablePullDownRefresh":false
"enablePullDownRefresh": false
}
},
{
"path": "pages/peanut/mine",
"style": {
"navigationBarTitleText": "我的",
"enablePullDownRefresh":false
"enablePullDownRefresh": false
}
},
},
{
"path": "pages/peanut/searchFor",
"style": {
"navigationBarTitleText": "搜索",
"enablePullDownRefresh":false
"enablePullDownRefresh": false
}
},
{
@@ -64,14 +64,14 @@
"path": "pages/yRead/angbook",
"style": {
"navigationBarTitleText": "小说3",
"enablePullDownRefresh":false
"enablePullDownRefresh": false
}
},
{
"path": "pages/yRead/cus-audio-play",
"style": {
"navigationBarTitleText": "小说3-1",
"enablePullDownRefresh":false
"enablePullDownRefresh": false
}
},
{
@@ -90,14 +90,14 @@
"path": "pages/eBook/bookContent",
"style": {
"navigationBarTitleText": "小说详情",
"enablePullDownRefresh":false
"enablePullDownRefresh": false
}
},
{
"path": "pages/eBook/bookMessage",
"style": {
"navigationBarTitleText": "小说简介",
"enablePullDownRefresh":false
"enablePullDownRefresh": false
}
},
{
@@ -116,28 +116,28 @@
"path": "pages/peanut/opeVip",
"style": {
"navigationBarTitleText": "开通Vip",
"enablePullDownRefresh":false
"enablePullDownRefresh": false
}
},
{
"path": "pages/peanut/reCharge",
"style": {
"navigationBarTitleText": "充值",
"enablePullDownRefresh":false
"enablePullDownRefresh": false
}
},
{
"path": "pages/user/persData",
"style": {
"navigationBarTitleText": "个人资料",
"enablePullDownRefresh":false
"enablePullDownRefresh": false
}
},
{
"path": "pages/user/persCount",
"style": {
"navigationBarTitleText": "个人账户",
"enablePullDownRefresh":false
"enablePullDownRefresh": false
}
},
{
@@ -168,7 +168,7 @@
"path": "pages/user/login",
"style": {
"navigationBarTitleText": "登录",
"enablePullDownRefresh":false // 禁止下拉刷新
"enablePullDownRefresh": false // 禁止下拉刷新
}
},
{
@@ -252,307 +252,258 @@
"navigationBarTitleText": "物流详情"
}
}
,{
"path" : "pages/peanut/aboutUs",
"style" :
{
"navigationBarTitleText": "关于我们",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/listen/listen",
"style" :
{
"navigationBarTitleText": "悦耳列表",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/listen/home",
"style" :
{
"navigationBarTitleText": "悦耳听书",
"enablePullDownRefresh": true
}
}
,{
"path" : "pages/listen/search",
"style" :
{
"navigationBarTitleText": "搜索听书",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/listen/bgMusix",
"style" :
{
"navigationBarTitleText": "背景音乐模式",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/listen/bgMusic",
"style" :
{
"navigationBarTitleText": "背景音乐启用",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/listen/bgMusic",
"style" :
{
"navigationBarTitleText": "背景音乐启用",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/listen/musicbg",
"style" :
{
"navigationBarTitleText": "音乐1",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/peanut/myComments",
"style" :
{
"navigationBarTitleText": "我的评价",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/listen/setListen",
"style" :
{
"navigationBarTitleText": "听书设置11",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/listen/bigListen",
"style" :
{
"navigationBarTitleText": "听书页面",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/listen/listenNotBuy",
"style" :
{
"navigationBarTitleText": "未购买的详情",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/comments/comments",
"style" :
{
"navigationBarTitleText": "书评1",
"enablePullDownRefresh": true
}
}
,{
"path" : "pages/comments/commentsDetail",
"style" :
{
"navigationBarTitleText": "书评详情1",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/comments/commentsList",
"style" :
{
"navigationBarTitleText": "书评",
"enablePullDownRefresh": true
}
}
,{
"path" : "pages/bookShop/settlementBook",
"style" :
{
"navigationBarTitleText": "book购买1",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/library/library",
"style" :
{
"navigationBarTitleText": "我的图书",
"enablePullDownRefresh": true
}
}
,{
"path" : "pages/clock/clock",
"style" :
{
"navigationBarTitleText": "读书打卡",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/clock/index",
"style" :
{
"navigationBarTitleText": "读书打卡列表",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/clock/clockList",
"style" :
{
"navigationBarTitleText": "打卡记录1",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/talkBook/talkBook",
"style" :
{
"navigationBarTitleText": "讲书",
"enablePullDownRefresh": true
}
}
,{
"path" : "pages/talkBook/talkBookML",
"style" :
{
"navigationBarTitleText": "讲书书籍页面",
"enablePullDownRefresh": true
}
}
,{
"path" : "pages/talkBook/talkBookDetail",
"style" :
{
"navigationBarTitleText": "讲书详情",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/yian/yian",
"style" :
{
"navigationBarTitleText": "医案",
"enablePullDownRefresh": true
}
},
{
"path" : "pages/yian/yianList",
"style" :
{
"navigationBarTitleText": "医案列表",
"enablePullDownRefresh": true
}
}
,{
"path" : "pages/yian/yianDetail",
"style" :
{
"navigationBarTitleText": "医案详情",
"enablePullDownRefresh": false
}
},
{ // 更新版本
"path": "uni_modules/uni-upgrade-center-app/pages/upgrade-popup",
"style": {
"disableScroll": true,
"app-plus": {
"backgroundColorTop": "transparent",
"background": "transparent",
"titleNView": false,
"scrollIndicator": false,
"popGesture": "none",
"animationType": "fade-in",
"animationDuration": 200
}
}
, {
"path": "pages/peanut/aboutUs",
"style": {
"navigationBarTitleText": "关于我们",
"enablePullDownRefresh": false
}
}, {
"path": "pages/listen/listen",
"style": {
"navigationBarTitleText": "悦耳列表",
"enablePullDownRefresh": false
}
}, {
"path": "pages/listen/home",
"style": {
"navigationBarTitleText": "悦耳听书",
"enablePullDownRefresh": true
}
}, {
"path": "pages/listen/search",
"style": {
"navigationBarTitleText": "搜索听书",
"enablePullDownRefresh": false
}
}, {
"path": "pages/listen/bgMusix",
"style": {
"navigationBarTitleText": "背景音乐模式",
"enablePullDownRefresh": false
}
}, {
"path": "pages/listen/bgMusic",
"style": {
"navigationBarTitleText": "背景音乐启用",
"enablePullDownRefresh": false
}
}, {
"path": "pages/listen/bgMusic",
"style": {
"navigationBarTitleText": "背景音乐启用",
"enablePullDownRefresh": false
}
}, {
"path": "pages/listen/musicbg",
"style": {
"navigationBarTitleText": "音乐1",
"enablePullDownRefresh": false
}
}, {
"path": "pages/peanut/myComments",
"style": {
"navigationBarTitleText": "我的评价",
"enablePullDownRefresh": false
}
}, {
"path": "pages/listen/setListen",
"style": {
"navigationBarTitleText": "听书设置11",
"enablePullDownRefresh": false
}
}, {
"path": "pages/listen/bigListen",
"style": {
"navigationBarTitleText": "听书页面",
"enablePullDownRefresh": false
}
}, {
"path": "pages/listen/listenNotBuy",
"style": {
"navigationBarTitleText": "未购买的详情",
"enablePullDownRefresh": false
}
}, {
"path": "pages/comments/comments",
"style": {
"navigationBarTitleText": "书评1",
"enablePullDownRefresh": true
}
}, {
"path": "pages/comments/commentsDetail",
"style": {
"navigationBarTitleText": "书评详情1",
"enablePullDownRefresh": false
}
}, {
"path": "pages/comments/commentsList",
"style": {
"navigationBarTitleText": "书评",
"enablePullDownRefresh": true
}
}, {
"path": "pages/bookShop/settlementBook",
"style": {
"navigationBarTitleText": "book购买1",
"enablePullDownRefresh": false
}
}, {
"path": "pages/library/library",
"style": {
"navigationBarTitleText": "我的图书",
"enablePullDownRefresh": true
}
}, {
"path": "pages/clock/clock",
"style": {
"navigationBarTitleText": "读书打卡",
"enablePullDownRefresh": false
}
}, {
"path": "pages/clock/index",
"style": {
"navigationBarTitleText": "读书打卡列表",
"enablePullDownRefresh": false
}
}, {
"path": "pages/clock/clockList",
"style": {
"navigationBarTitleText": "打卡记录1",
"enablePullDownRefresh": false
}
}, {
"path": "pages/talkBook/talkBook",
"style": {
"navigationBarTitleText": "讲书",
"enablePullDownRefresh": true
}
}, {
"path": "pages/talkBook/talkBookML",
"style": {
"navigationBarTitleText": "讲书书籍页面",
"enablePullDownRefresh": true
}
}, {
"path": "pages/talkBook/talkBookDetail",
"style": {
"navigationBarTitleText": "讲书详情",
"enablePullDownRefresh": false
}
},
{
"path": "pages/yian/yian",
"style": {
"navigationBarTitleText": "医案",
"enablePullDownRefresh": true
}
},
{
"path": "pages/yian/yianList",
"style": {
"navigationBarTitleText": "医案列表",
"enablePullDownRefresh": true
}
}, {
"path": "pages/yian/yianDetail",
"style": {
"navigationBarTitleText": "医案详情",
"enablePullDownRefresh": false
}
},
{ // 更新版本
"path": "uni_modules/uni-upgrade-center-app/pages/upgrade-popup",
"style": {
"disableScroll": true,
"app-plus": {
"backgroundColorTop": "transparent",
"background": "transparent",
"titleNView": false,
"scrollIndicator": false,
"popGesture": "none",
"animationType": "fade-in",
"animationDuration": 200
}
,{
"path" : "pages/bookShop/deliverLIst",
"style" :
{
"navigationBarTitleText": "快递列表",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/peanut/chargeDetaill",
"style" :
{
"navigationBarTitleText" : "充值详情1",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/acupoint/acupoint",
"style" :
{
"navigationBarTitleText" : "穴位检索",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/acupoint/acupointDetail",
"style" :
{
"navigationBarTitleText" : "脉穴详情",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/timeAcupoint/timeAcupoint",
"style" :
{
"navigationBarTitleText" : "时辰取穴",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/timeAcupoint/totalTable",
"style" :
{
"navigationBarTitleText" : "全部穴位一览表",
"enablePullDownRefresh" : false
}
}
],
}
},
{
"path": "pages/bookShop/deliverLIst",
"style": {
"navigationBarTitleText": "快递列表",
"enablePullDownRefresh": false
}
},
{
"path": "pages/peanut/chargeDetaill",
"style": {
"navigationBarTitleText": "充值详情1",
"enablePullDownRefresh": false
}
},
{
"path": "pages/acupoint/acupoint",
"style": {
"navigationBarTitleText": "穴位检索",
"enablePullDownRefresh": false
}
},
{
"path": "pages/acupoint/acupointDetail",
"style": {
"navigationBarTitleText": "脉穴详情",
"enablePullDownRefresh": false
}
},{
"path": "pages/timeAcupoint/timeAcupoint",
"style": {
"navigationBarTitleText": "时辰取穴",
"enablePullDownRefresh": false
}
},
{
"path": "pages/timeAcupoint/totalTable",
"style": {
"navigationBarTitleText": "全部穴位一览表",
"enablePullDownRefresh": false
}
},
{
"path": "pages/luck/luck",
"style": {
"navigationBarTitleText": "五运六气",
"enablePullDownRefresh": false
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
@@ -560,7 +511,7 @@
"navigationBarBackgroundColor": "#FFFFFF",
"backgroundColor": "#FFFFFF",
"navigationStyle": "custom",
"enablePullDownRefresh":true
"enablePullDownRefresh": true
},
"tabBar": {
"color": "#444444",
@@ -613,4 +564,4 @@
"query": "" //启动参数在页面的onLoad函数里面得到
}]
}
}
}

View File

@@ -174,6 +174,20 @@
this.getTitles(id)
},
setOneCateIndex(item, index) {
if(this.userMes.tgdzPower == 0){
let that = this
uni.showModal({
content: "购买 针灸六经法要上册和下册 后方可使用此功能",
confirmText: '好的',
showCancel: false,
success: function(res) {
if (res.confirm) {
// console.log('用户点击确定');
}
}
})
return
}
if(item.title == "时辰取穴"){
uni.navigateTo({
url: "../timeAcupoint/timeAcupoint"

View 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
View 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]}}(主运) &nbsp; {{wy.keyun[wy.now]}}(客运) &nbsp; {{wy.nianyun}}(年运)</text>
</view>
<view class="">
<text>六气{{lq.zhuqi[lq.now]}}(主气) &nbsp; {{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>

View File

@@ -20,14 +20,13 @@
<image src="../../static/icon/five2.png" mode="aspectFit"></image>
<text>方药检索</text>
</div> -->
<!-- <div class="item item1">
<div class="item item1">
<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('../timeAcupoint/timeAcupoint')">
<image src="../../static/icon/five6.png" mode="aspectFit"></image>
<text>时辰取穴</text>
</div> -->
</div>
</div>
<div class="item item1" @click="onPageJump('../peanut/searchFor')">
<image src="../../static/icon/five3.png" mode="aspectFit"></image>
<text>书名检索</text>
@@ -326,7 +325,8 @@
page:1,
totalPage:0,
tjProList:[],
status : 3
status : 3,
userMsg:{}, // 用户信息
};
},
onPageScroll(e) {
@@ -353,6 +353,7 @@
uni.hideTabBar();
this.getData();
this.getTags()
this.getUserInfo()
},
// 页面加载完毕
onReady() {
@@ -364,6 +365,7 @@
this.tjProList = []
this.getData()
this.getTags()
this.getUserInfo()
// this.requestIapOrder()
uni.stopPullDownRefresh()
@@ -404,6 +406,17 @@
methods: {
...mapMutations(['setUserInfo']),
// ...mapMutations(['setLoadingShow']),
// 获取用户详情
getUserInfo() {
// 用户详情
// if (this.userInfo.id != undefined) {
this.$http
.post('book/user/info/' + this.userInfo.id)
.then(res => {
this.userMsg = res.user
});
// }
},
// 获取商品标签
getTags() {
this.loadingNow = false
@@ -663,6 +676,19 @@
// 跳转
onPageJump(url) {
console.log(this.userMsg,'this.userMsg')
if(url == '../luck/luck' && this.userMsg.wylqPower == 0){
uni.showModal({
content: "购买 中医时间医学·火病原理 后方可使用此功能",
confirmText: '好的',
showCancel: false,
success: function(res) {
if (res.confirm) {
}
}
})
return
}
uni.navigateTo({
url: url
});

View File

@@ -11,22 +11,45 @@
<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>
<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>
<slider class="audioslider" block-size="12" v-model="currentTime" :max="duration"
@change="changeTime"></slider>
<!-- <view @click="start">点击播放/暂停</view> -->
</view>
</view>
</view>
</view>
<view class="imagesBox flexbox" v-if="swiperImages.length > 0" style="overflow: hidden;">
<!-- swiperImages -->
<view class="item" v-for="(item, index) in swiperImages" :key="index">
<image @click="previewImage(item)" :src="item" mode="aspectFit"></image>
</view>
</view>
<view class="content" v-if="talkBookDetail.content != ''" v-html="talkBookDetail.content"></view>
<view class="content" v-else></view>
<view class="time">
<!-- <view class="time">
<text>{{talkBookDetail.createTime}}</text>
</view> -->
<view class="zanche flexbox" style="margin-top:15rpx;">
<span class="left">{{talkBookDetail.createTime}}</span>
<span class="right flexbox opbtns">
<image class="gzicon" v-if="contlikeYN" src="../../static/icon/gz2.png" mode="aspectFill"
@click.stop="clickLike(talkBookDetail)"></image>
<image class="gzicon" v-else src="../../static/icon/gz.png" mode="aspectFill"
@click.stop="clickLike(talkBookDetail)"></image>
<view style="color: #C0C4CC;">{{contlike}}</view>
<image class="gzicon" v-if="1" src="../../static/icon/pinglun.png" mode="aspectFill"
@click="pinglun()"></image>
<view style="color: #C0C4CC;" @click="pinglun()">{{pTotal}}</view>
</span>
</view>
<view class="tuijin" v-if="!isBuy && bookInfo.productId != null">
<p>觉得这本书还不错</p>
@@ -52,14 +75,99 @@
<view class="">下一章</view>
</view> -->
</view>
<view class="pinglunMain">
<!-- <u-button class="addPl" type='success' plain @click="pinglun()">添加评论</u-button>
<view class="">
<view style="font-weight: 700;margin:30rpx 0rpx 30rpx;font-size: 30rpx;color:#55aa00;">精彩热评</view>
</view> -->
<!-- <h4>~ 精彩热评 ~</h4> -->
<view v-if="plList.length > 0">
<view class="pl-item" v-for="item in plList" :key="item.id">
<view class="plusername">
<image :src="item.user.avatar"></image>
<span v-if="item.user.nickname!=null">{{item.user.nickname}}</span>
<span v-if="item.user.nickname==null">匿名用户</span>
</view>
<view class="content" v-html="item.content"></view>
<view class="btns flexbox" style="margin-top:10rpx;">
<span class="left" style="color: #C0C4CC;">{{formatTimeDifferenceFromT(item.createTime)}}</span>
<span class="condelt" @click="deleteCont(item)" v-if="item.deletUse">删除</span>
<!-- <span class="conhuif" @click="pinglun(item)">回复</span> -->
</view>
<!-- <view class="pl-son" v-if="item.comments.length > 0">
<view class="pl-son-item" v-for="(item1,index) in item.comments" :key="index">
<view class="pl-son-item-content">
<text class="pl-son-atob">
<text v-if="item1.user.nickname!=null">{{item1.user.nickname}}</text>
<text v-if="item1.user.nickname==null">匿名用户</text>
<text style="margin: 0 10rpx;">回复</text>
<text v-if="item.user.nickname!=null">{{item.user.nickname}}</text>
<text v-if="item.user.nickname==null">匿名用户</text>
</text>
<text v-html="item1.content"></text>
</view>
<view class="btns flexbox" style="margin-top:10rpx;">
<span class="left"
style="color: #C0C4CC;">{{formatTimeDifferenceFromT(item1.createTime)}}</span>
<span class="condelt" @click="deleteCont(item)" v-if="item.deletUse">删除</span>
<span class="conhuif" @click="pinglun(item)">回复</span>
</view>
<view style="border-bottom:2rpx solid #e9e9e9;height:20rpx;"
v-if="index<item.comments.length-1"></view>
</view>
</view> -->
<!-- </view> -->
</view>
</view>
<view class="quesheng" v-else>
<text>暂无评论内容~</text>
</view>
</view>
<view v-if="status==0" style="text-align: center;">
<u-loading-icon style="display: inline-block;"></u-loading-icon>
<font style='vertical-align: super;margin-left: 10px;font-size: 26rpx;color: #909399;'>努力加载中</font>
</view>
<u-divider v-if="status == 1" text="已加载全部评论"></u-divider>
<!-- 评论书评对话框 -->
<!-- 回复评论对话框 -->
<u-popup :show="pingjiaShow" :round="10" @close="closePingjia">
<view class="tanchu">
<view class="dp_title">添加评论</view>
<view style="max-height: 1000rpx;overflow-y: scroll;">
<view class="padding-bottom-sm flex padding-lr-sm" style="border-bottom: 1px solid #EEEEEE;">
<view class="flex-sub flexbox">
<i @click="showEmj()" :class="emojiIcon"></i>
<textarea class="textarea" v-model="Pform.comment" @focus="InputFocus" @blur="InputBlur"
@input="textareaBInput" placeholder-style="font-size:24rpx;color:#aaaaaa;"
placeholder="请输入您要发送的内容"></textarea>
</view>
<view class="">
<u-button type="success" @click="submitPJ">提交</u-button>
</view>
</view>
<view style="position: relative;">
<emotion @emotion="handleEmj" :height="220" v-if="isShowEmj" :windowWidth="windowWidth">
</emotion>
</view>
</view>
</view>
</u-popup>
<music-play :playData="playData"></music-play>
<!-- 公共组件-每个页面必须引入 -->
<public-module></public-module>
<public-module></public-module>
</view>
</template>
<script>
import $http from '@/config/requestConfig.js';
import emotion from '@/bkhumor-emojiplus/components/bkhumor-emojiplus/bkhumor-emojiplus.vue';
import emojiList1 from '../../bkhumor-emojiplus/emoji/biaoqin.js'
import musicPlay from '@/components/music.vue'
import {
mapState,
mapMutations
@@ -71,6 +179,10 @@
method: 'pause'
},
audioShow: false,
isShowEmj: false,
emojiIcon: 'cuIcon-emoji',
emoji: [],
windowWidth: 0,
voicesImg: '',
isBuy: false,
playData: {},
@@ -86,7 +198,23 @@
audio: null,
duration: 10,
currentTime: 0,
paused: false
paused: false,
emojiIcon: 'cuIcon-emoji',
isShowEmj: false,
status: 3,
pingjiaShow: false, //添加评价
Pform: { // 评价表单
//star:0,
comment: '',
//img:[],
html: ''
},
contlike: 0,
contlikeYN: false,
pPage: 1,
pTotal: 0, // 评论的总条数
plList: [], // 书评的评论list
swiperImages: []
}
},
onLoad(e) {
@@ -101,6 +229,8 @@
onShow() {
this.getBookInfo()
this.getTalkBookDetail()
this.getCommPL()
this.getGoodNum()
},
onHide() {
// console.log('onHide----',this.paused)
@@ -116,37 +246,81 @@
},
methods: {
...mapMutations(['setUserInfo']),
start(){
// 放大图片
previewImage(url) {
console.log(url)
uni.previewImage({
urls: [url],
longPressActions: {
itemList: ['很抱歉,暂不支持保存图片到本地'],
success: function(res) {
// console.log(res,'+++++')
}
}
});
},
start() {
this.initAudio() // 开始播放
},
initAudio(){
this.audio.onTimeUpdate(()=>{
formatTimeDifferenceFromT(dateTimeT) {
const now = new Date();
const t = new Date(dateTimeT);
const differenceInSeconds = Math.floor((now - t) / 1000);
if (differenceInSeconds <= 3600) {
const minutes = Math.floor(differenceInSeconds / 60);
return `${minutes} 分钟前`;
} else if (differenceInSeconds <= 86400) {
const hours = Math.floor(differenceInSeconds / 3600);
return `${hours} 小时前`;
} else if (differenceInSeconds <= 2592000) {
const days = Math.floor(differenceInSeconds / 86400);
return `${days} 天前`;
} else {
const currentYear = now.getFullYear();
const tYear = t.getFullYear();
if (currentYear === tYear) {
const month = t.getMonth() + 1;
const day = t.getDate();
return `${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;
} else {
const year = t.getFullYear();
const month = t.getMonth() + 1;
const day = t.getDate();
return `${year}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;
}
}
},
initAudio() {
this.audio.onTimeUpdate(() => {
this.duration = this.audio.duration.toFixed()
this.currentTime = this.audio.currentTime.toFixed()
})
this.audio.onPause(()=>{ // 用于被听书组件打断时设置播放icon状态
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){
if (this.paused) {
this.audio.play()
}else{
} else {
this.audio.pause()
}
},
updateTime(e){
updateTime(e) {
this.currentTime = e.detail.currentTime.toFixed()
this.duration = e.detail.duration.toFixed()
},
changeTime(e){
changeTime(e) {
this.audio.seek(e.detail.value) // 设置播放位置
},
audioPlay(){
console.log('播放讲书',this.$music)
this.$music.setCloseBgm() // 关闭听书音频
this.setUserInfo({'playFlag': false})
audioPlay() {
console.log('播放讲书', this.$music)
this.$music.setCloseBgm() // 关闭听书音频
this.setUserInfo({
'playFlag': false
})
},
// 购买
gotoBuy() {
@@ -197,14 +371,19 @@
if (res.code == 0) {
console.log(res, 'res')
this.talkBookDetail = res.bookTeach
if (res.bookTeach.images != "") {
// this.bookTeach = []
this.swiperImages = res.bookTeach.images.split(';')
}
this.audio.src = this.talkBookDetail.voices // 设置播放资源路径
this.audio.onCanplay((e)=>{
this.audio.onCanplay((e) => {
this.duration = this.audio.duration.toFixed() // 初始化进度条和音频秒数
})
// this.isBuy = res.book.isBuy
// this.freeChapterCount = res.book.freeChapterCount
} else {
console.log(res.msg)
}
@@ -215,14 +394,309 @@
this.audioShow = true
})
},
// 表情
showEmj() {
let bool = !this.isShowEmj;
if (bool) {
this.emojiIcon = 'cuIcon-keyboard';
} else {
this.emojiIcon = 'cuIcon-emoji';
}
this.isShowEmj = bool;
this.$emit('show')
},
InputBlur(e) {
},
InputFocus(e) {
this.isShowEmj = false;
this.emojiIcon = 'cuIcon-emoji';
this.$emit('foc')
},
// 获取点赞数和是否点赞
getGoodNum() {
this.$http
.post("book/teach/getLikeCount?teachId=" + this.teachId)
.then(res => {
if (res.code == 0) {
this.contlike = res.count
}
}).catch((e) => {
console.log(e, 'e')
})
this.$http
.post("book/teach/ifLike?teachId=" + this.teachId)
.then(res => {
if (res.code == 0) {
this.contlikeYN = res.flag
}
})
.catch((e) => {
console.log(e, 'e')
})
},
// 获得书评回复列表
getCommPL() {
$http.request({
url: "book/teach/getCommentList",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
'teachId': this.teachId,
'limit': 5,
'page': this.pPage,
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
.then(res => {
console.log(res, '书评评论')
// this.plList = this.plList.concat(res.page.list)
let plList1 = res.page.records
this.pTotal = res.page.total
this.status = 3
// 评论格式化
var newarr = []
plList1.forEach((item1) => {
item1.content = this.getHtmlComment(item1.content)
if (item1.userId == this.userInfo.id) {
item1.deletUse = true
} else {
item1.deletUse = false
}
newarr.push(item1)
})
this.plList = this.plList.concat(newarr)
console.log('改变格式后', this.plList)
}).catch(e => {
console.log(e, 'e')
});
},
// 获取html格式的评论1
getHtmlComment(comment) {
// 格式化html
// console.log(comment,'comment')
// 这里处理 链接 换行符
let replacedStr = comment.replace(/\[([^(\]|\[)]*)\]/g, (item, index) => {
// console.log(item, index)
var indexss = emojiList1.findIndex(item1 => item1.alt === item)
// console.log(indexss, 'indexss')
return '<img src="https://www.nuttyreading.com/emojis/emojis/qq/' + emojiList1[indexss].url +
'" width="18rpx">';
});
// console.log(replacedStr,'replacedStr')
return replacedStr.replace(/(\r\n)|(\n)/g, '<br>');
},
// 点赞
clickLike(item) {
this.$http
.post("book/teach/addOrCancelLike?teachId=" + this.teachId)
.then(res => {
if (res.code == 0) {
uni.showToast({
title: res.msg,
icon: 'success'
})
this.getGoodNum()
}
}).catch((e) => {
console.log(e, 'e')
})
},
// 显示评论框
pinglun(val) {
console.log('pinglun-val', val)
if (val && val.user && val.user.id && val.puser && val.puser.id) {
this.Pform.name = val.user.name || ''
this.Pform.pid = val.pid
this.Pform.puserId = val.user.id || ''
} else if (val && val.user && val.user.id) {
this.Pform.name = val.user.name || ''
this.Pform.pid = val.id
this.Pform.puserId = val.user.id || ''
} else {
// this.pinglunId = val || null
this.Pform.pid = ''
this.Pform.puserId = ''
}
this.pingjiaShow = true
},
// 提交评论
submitPJ() {
if (this.Pform.comment != '') {
$http.request({
url: "book/teach/addComment",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
teachId: this.teachId,
content: this.Pform.comment,
puserId: 0,
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
.then(res => {
uni.showToast({
title: '评论成功!',
icon: 'success'
})
// this.getCommPL()
this.pingjiaShow = false
this.Pform.comment = ''
this.Pform.name = ''
this.Pform.pid = ''
this.Pform.puserId = ''
// this.pinglunId = null
this.plList = []
this.pPage = 1
this.getCommPL()
}).catch(e => {
console.log(e, 'e')
});
} else {
uni.showToast({
title: '请先输入您的评价内容!',
icon: 'none'
})
}
},
// 删除评论
deleteCont(item) {
uni.showModal({
title: '提示',
content: '确定要删除评论吗?',
confirmText: "确定",
cancelText: "取消",
success: function(res) {
let _this = this
if (res.confirm) {
_this.$http
.post("book/teach/delComment?commentId=" + item.id)
.then(res => {
if (res.code == 0) {
uni.showToast({
title: '删除成功',
icon: 'success'
})
_this.plList = []
_this.pPage = 1
_this.getCommPL()
}
}).catch((e) => {
console.log(e, 'e')
})
}
}.bind(this)
});
},
closePingjia() {
this.pingjiaShow = false
this.Pform.comment = ''
this.Pform.html = ''
this.emoji = []
},
// 获得输入的表情数组
handleEmj(i) {
console.log(i, 'i---------');
this.inputValue = i
// console.log(this.inputValue);
if (i.emotioni == '[em_98]') {
//匹配最后一个表情符号并删除11。
this.Pform.comment = this.Pform.comment.replace(/(\[[^\]]+\]|[\s\S])$/, '');
if (this.emoji.length > 0) {
this.emoji = this.emoji.slice(0, -1)
}
} else {
this.emoji.push({
'tag': i.emotion,
'name': i.emotioni
})
// console.log(this.emoji,'this.emoji')
this.Pform.comment += i.emotioni;
/// this.Pform.html += i.emotion
}
},
textareaBInput(e) {
console.log(e, 'e')
this.Pform.comment = e.detail.value
/// this.Pform.html = e.detail.value
},
showEmj() {
let bool = !this.isShowEmj;
if (bool) {
this.emojiIcon = 'cuIcon-keyboard';
} else {
this.emojiIcon = 'cuIcon-emoji';
}
this.isShowEmj = bool;
this.$emit('show')
},
InputBlur(e) {
},
InputFocus(e) {
this.isShowEmj = false;
this.emojiIcon = 'cuIcon-emoji';
this.$emit('foc')
},
onReachBottom() {
console.log('到底了')
if (this.pPage + 1 <= this.pTotal) {
this.status = 0
this.pPage++
this.getCommPL()
} else {
this.status = 3
}
},
},
components: {
musicPlay
musicPlay,
emotion
},
}
</script>
<style scoped lang="scss">
.imagesBox {
justify-content: center;
.item {
width: 30%;
padding: 0 10rpx;
image {
width: 100%;
}
}
}
.mainContent {
margin: 20rpx 10rpx;
padding: 20rpx;
@@ -291,6 +765,9 @@
.btn {
margin-right: 20rpx;
font-size: 22rpx;
justify-content: space-between;
align-items: center;
text {
display: inline-block;
@@ -302,43 +779,237 @@
border-radius: 5px;
}
}
// 自定义播放器样式
.audiobox{
border: 2rpx solid #d6d5d5;
border-radius: 8px;
.audioinfo{
.zanche {
font-size: 22rpx;
justify-content: space-between;
align-items: center;
.left {
width: 300rpx;
color: #999;
font-size: 24rpx;
}
.right {
width: 300rpx;
display: flex;
.audioimg{
justify-content: flex-end;
align-items: center;
}
.gzicon {
margin: 0 0 0 20rpx;
height: 40rpx;
width: 40rpx;
// float:left;
// border-radius: 20rpx;
// border:1rpx solid #e9e9e9;
}
.opbtns {
.pingjia {
margin-left: 10px;
}
}
}
// 自定义播放器样式
.audiobox {
border: 2rpx solid #d6d5d5;
border-radius: 8px;
.audioinfo {
display: flex;
.audioimg {
padding: 10rpx;
width: 180rpx;
height: 220rpx;
border-radius: 5px;
}
.audioimgstart{
.audioimgstart {
position: absolute;
padding: 20rpx;
width: 180rpx;
height: 220rpx;
border-radius: 5px;
}
.audiotitle{
.audiotitle {
padding: 10rpx;
font-size: 28rpx;
text-align: left;
}
.audioauthor{
.audioauthor {
padding: 4rpx;
font-size: 24rpx;
text-align: left;
color: #999;
}
.audioslider{
.audioslider {
width: 400rpx;
}
}
}
// .opbtn{font-size: 14rpx;}
.pinglunMain {
.pl-item {
margin: 0 0 14rpx 0;
padding: 0 0 14rpx 0;
border-bottom: 1px solid #f0f0f0;
.condelt {
color: #fd6004;
margin-right: 20rpx;
}
.conhuif {
color: #4185c1;
}
.pl-son {
margin: 14rpx 0 14rpx 60rpx;
padding: 0 14rpx 14rpx 14rpx;
background-color: #f0f0f0;
border-radius: 10rpx;
.pl-son-item {
font-size: 26rpx;
padding-top: 28rpx;
.pl-son-item-content {}
.pl-son-atob {
color: #a1a1a1;
}
}
}
}
.plusername {
font-size: 26rpx;
color: #a1a1a1;
image {
width: 40rpx;
height: 40rpx;
border-radius: 20rpx;
display: inline-block;
margin-right: 15rpx;
vertical-align: sub;
}
}
.content {
margin: 30rpx 0rpx;
line-height: 40rpx;
color: #000;
font-size: 30rpx;
}
background-color: #fff;
padding: 10px;
// h4{color: #55aa00; font-size: 40rpx; margin:30rpx 0 ; text-align: center;}
.time {
color: #888;
font-size: 24rpx;
}
.btns {
font-size: 22rpx;
// justify-content: space-between;
align-items: center;
.left {
// width: 300rpx;
margin-right: 20rpx;
color: #a1a1a1;
}
.right {
width: 300rpx;
display: flex;
justify-content: flex-end;
align-items: center;
}
.gzicon {
margin: 0 0 0 20rpx;
height: 40rpx;
width: 40rpx;
// float:left;
// border-radius: 20rpx;
// border:1rpx solid #e9e9e9;
}
.opbtns {
.pingjia {
margin-left: 10px;
}
}
}
}
.quesheng {
text-align: center;
color: #8b8a91;
padding-bottom: 20rpx;
padding-top: 20rpx;
}
.tanchu {
padding: 40rpx 30rpx 40rpx 30rpx;
position: relative;
.dp_title {
font-size: 32rpx;
margin-bottom: 50rpx;
color: #555;
text-align: center;
font-weight: bold;
}
.dp_add {
position: absolute;
top: 40rpx;
right: 30rpx;
font-size: 22rpx;
background-color: #fd6004;
color: #fff;
border-radius: 10rpx;
padding: 5rpx 10rpx;
.u-icon {
display: inline-block;
margin-right: 5rpx;
}
}
}
.cuIcon-emoji {
background: url(../../static/biaoqing.png) no-repeat;
background-size: contain;
display: block;
margin-right: 20rpx;
width: 30px;
}
.cuIcon-keyboard {
background: url(../../static/biaoqing.png) no-repeat;
background-size: contain;
display: block;
width: 30px;
}
</style>

View File

@@ -122,7 +122,7 @@
uni.stopPullDownRefresh();
},
onReachBottom() {
console.log('到底了',this.page+1 , this.totalPage)
// console.log('到底了',this.page+1 , this.totalPage)
if(this.page+1 <= this.totalPage){
this.page++
@@ -195,14 +195,14 @@
})
.then(res => {
if (res.code == 0) {
console.log(res, 'res')
// console.log(res, 'res')
this.bookInfo = res.book
// this.isBuy = res.book.isBuy
// this.freeChapterCount = res.book.freeChapterCount
} else {
console.log(res.msg)
}
console.log(res, 'res基本信息')
// console.log(res, 'res基本信息')
}).catch((error) => {
console.log(error)
})
@@ -228,19 +228,16 @@
.post('book/teach/getBookTeachItems', {
'bookId': this.bookid,
'limit': 20,
'page': this.page
// 'userid': this.userInfo.id,
// 'bookid':
// 'id': this.playid
'page': this.page
})
.then(res => {
if (res.code == 0) {
console.log(res, '章节目录')
console.log( '章节目录',res)
if (res.page.records.length > 0) {
this.libLIst = this.libLIst.concat(res.page.records)
this.status = 3
this.totalPage = res.page.pages
if(this.totalPage = res.page.current){
if(this.totalPage == res.page.current){
this.status = 1
}
} else {

View File

@@ -165,25 +165,65 @@
showCalendar: false,
quxue: [], // 时辰取穴
tiangandizhi: {},
yuanXue: [
'腕骨', '丘墟', '丘墟', '太溪', '大陵', '京骨', '阳池', '太渊', '合谷', '太白', '冲阳', '神门'
],
pageTime:{ // 页面得时间,载入时赋值
hour:0,
minute:0,
increments:0 // 分钟数距离整点的差额
},
myInterval:null, // 定时器
myDingshi: null,
}
},
onLoad() {
let da = new Date().toISOString().slice(0, 10)
this.timestamp = new Date(da).getTime()
console.log('初始时间', this.dateToString, this.date)
// console.log('初始时间', this.dateToString, this.date)
this.getXueWei(this.dateToString)
this.getTGDZ(this.dateToString)
// console.log('全局hours',this.$getHours.hourNumber)
this.getTGDZ(this.dateToString)
},
onUnload() {
this.pageTime.hour = 0
this.pageTime.minute = 0
this.pageTime.increments = 0
clearInterval(this.myDingshi)
clearTimeout(this.myInterval);
console.log('隐藏页面', this.myInterval, this.myDingshi)
},
onShow() {
// console.log('全局hours',this.$getHours.hourNumber,this.$getHours.minuteNumber)
var mydate = new Date()
this.pageTime.hour = mydate.getHours()
this.pageTime.minute = mydate.getMinutes()
console.log('全局hours', this.pageTime.hour,this.pageTime.minute)
this.pageTime.increments = 60 - this.pageTime.minute
console.log('距离整点', this.pageTime.increments, this.pageTime.increments * 60000, '毫秒后执行')
if(this.pageTime.increments > 0){
this.myInterval = setTimeout(() => {
this.autoChange()
this.myDingshi = setInterval(() => {
console.log('进入轮询')
this.autoChange()
},60 * 60000)
}, this.pageTime.increments * 60000)
}
},
onHide() {
clearTimeout(this.myInterval);
clearInterval(this.myDingshi)
console.log('清除定时器',this.myInterval, this.myDingshi)
//this.myInterval = null
},
methods: {
scroll: function(e) {},
autoChange(){
// console.log()
let da = new Date().toISOString().slice(0, 10)
this.timestamp = new Date(da).getTime()
this.dateToString = formatDateTime(new Date()), // 字符串格式的日期
this.getXueWei(this.dateToString)
this.getTGDZ(this.dateToString)
},
showTotalFun() {
uni.navigateTo({
url: "./totalTable"

View File

@@ -150,7 +150,7 @@ import { data } from 'jquery';
this.booksetpage = 1
this.yianList = []
}
if(this.contentShow == 2){
if(this.contentShow == 1){
httpurl = "book/bookMedicalRecords/userEbookBuyList"
} else {
httpurl = "book/bookMedicalRecords/recommendBookList"

View File

@@ -150,8 +150,16 @@
this.$http
.post('book/bookMedicalRecords/getById?medicalRecordsId=' + this.medicalRecordsId )
.then(res => {
console.log(res,'res')
// console.log(res,'res')
this.productInfo = res.entity
// console.log('cursor: nwse-resize', this.productInfo.content.includes('cursor: nwse-resize'))
// if(this.productInfo.content.includes('cursor: nwse-resize')){
// // this.productInfo.content = this.productInfo.content.replaceAll('cursor: nwse-resize;', 'cursor: nwse-resize;max-width:100%;')
// }else{
this.productInfo.content = this.productInfo.content.replaceAll('img src', 'img style="max-width:100%;" src')
// }
// console.log(this.productInfo.content,'res')
uni.hideLoading();
}).catch((e)=>{
console.log(e,'e')
@@ -305,6 +313,9 @@
</script>
<style lang="scss" scoped>
/deep/.ql-align-center{
text-align: center;
}
.addPl{padding-top: 0rpx; margin-bottom: 0rpx;}
.pinglunMain{
.pl-item{

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -6538,6 +6538,13 @@
"countyName": "建德市",
"createDate": "2022-10-27 18:51:47",
"regionCode": "330182"
},
{
"countyId": 6455,
"cityId": 821,
"countyName": "钱塘区",
"createDate": "2022-10-27 18:51:47",
"regionCode": "330101"
}
]
},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

19
utils/getHours.js Normal file
View File

@@ -0,0 +1,19 @@
import store from '@/store/index.js'
import $http from '@/config/requestConfig.js';
// #ifdef APP-PLUS
const nowHour = new Date;
// #endif
// #ifdef H5
const nowHour = new Date;
// #endif
nowHour.hourNumber = nowHour.getHours() // 当前的小时数
nowHour.minuteNumber = nowHour.getMinutes()
var myHour = {
playBgm({mute=false}){
},
}
module.exports = {nowHour}