123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 |
- // parents/pages/good_books/good_books.js
- import F2 from '../../../utils/f2-canvas/lib/f2';
- let chart;
- import { routers, viewImage, sharePage, isFn, getGlobalVal } from '../../../utils/util.js'
- import { GetBookRecommend } from '../../../utils/api.js'
- const { navigateTo, redirectTo, navigateBack } = routers()
- const { globalData, hasLibraryService, hasVipService } = getApp()
- const { baseImgUrl, qrcodeInvalidToastText } = globalData
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- baseImgUrl,
- isLoaded: false,
- opts: {
- lazyLoad: true // 延迟加载组件
- },
- borrowInfoList: [
- // {
- // "child_theme": "child5",
- // "book_num": 5,
- // "aliases": "地域江湖",
- // "theme_name": "地域江湖",
- // "bookList": [
- // {
- // "summary": "好",
- // "local_image": "/2017/11/20/ccf1b904a7d730734600c707111aa5484a2b070936566f6bdbfae788d90b75ee.jpeg",
- // "isbn13": "9787111520450",
- // "title": "用户力测试"
- // },
- // {
- // "summary": "好",
- // "local_image": "/2017/11/20/ccf1b904a7d730734600c707111aa5484a2b070936566f6bdbfae788d90b75ee.jpeg",
- // "isbn13": "9787111520450",
- // "title": "用户力测试"
- // }
- // ]
- // },
- // {
- // "child_theme": "child6",
- // "book_num":15,
- // "aliases": "江湖",
- // "theme_name": "江湖",
- // "bookList": [
- // {
- // "summary": "好",
- // "local_image": "/2017/11/20/ccf1b904a7d730734600c707111aa5484a2b070936566f6bdbfae788d90b75ee.jpeg",
- // "isbn13": "9787111520450",
- // "title": "用户力测试"
- // }
- // ]
- // },
- ],
- headInfoList: [
- // {
- // "name": "共享地球",
- // "percent": 1,
- // "book_count": 190,
- // "proportion": "100%",
- // "child_count": 5,
- // "bnum": 0
- // },
- // {
- // "name": "自我成长",
- // "percent": 1,
- // "book_count": 22,
- // "proportion": "0%",
- // "child_count": 6,
- // "bnum": 0
- // },
- // {
- // "name": "学科素养",
- // "percent": 1,
- // "book_count": 19,
- // "proportion": "0%",
- // "child_count": 8,
- // "bnum": 0
- // },
- // {
- // "name": "多彩世界",
- // "percent": 1,
- // "book_count": 90,
- // "proportion": "0%",
- // "child_count": 6,
- // "bnum": 0
- // }
- ],
- footerData: {
- actIndex: 1,
- list: [
- {
- text: '找好书',
- icon: '../../../assets/book_gray.png',
- actIcon: '../../../assets/book_blue.png',
- url: 'parents/pages/home/home',
- zindex: 3,
- },
- {
- text: '好书推荐',
- icon: '../../../assets/wish_gray.png',
- actIcon: '../../../assets/wish_blue.png',
- url: 'parents/pages/good_books/good_books',
- zindex: 3,
- },
- {
- text: '我的',
- icon: '../../../assets/me_gray.png',
- actIcon: '../../../assets/me_blue.png',
- url: 'parents/pages/me/me',
- zindex: 3,
- }
- ]
- },
- nodataArray: {
- text: "暂无阅读计划",
- margin: '140rpx auto'
- }
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
- options.vipId = getGlobalVal('vipId', `vipId_${getGlobalVal('userId')}`)
- options.libId = getGlobalVal('library').id || ''
- this.setData({ options })
- this.getData()
- },
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady: function () {
- const obj = { navigateTo, redirectTo, navigateBack, viewImage }
- for (const i in obj) {
- this[i] = obj[i]
- }
- },
- /**
- * 生命周期函数--监听页面显示
- */
- onShow: function () {
- },
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide: function () {
- },
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function () {
- },
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- onPullDownRefresh: function () {
- this.setData(() => {
- wx.stopPullDownRefresh()
- })
- },
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom: function () {
- },
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage: function () {
- if (isFn(sharePage)) return sharePage()
- },
- /**
- * 获取好书推荐
- */
- getData: function (cb) {
- const continuousFn = { fn: this.getData, param: { ...arguments } }
- const { libId = '', vipId = '' } = this.data.options
- GetBookRecommend({ data: { libId, vipId }, continuousFn }).then(res => {
- const { borrowInfoList} = res.data
- const headInfoList = (res => {
- for (let i in res) {
- res[i]['name'] = res[i]['parent_name']
- res[i]['percent'] = ~~res[i]['book_count']
- }
- return res
- })(res.data.headInfoList)
- this.setData({ borrowInfoList, headInfoList, isLoaded: true })
- if (isFn(cb)) cb()
- this.goodBooksPicture()
- }).catch(res => {
- this.setData({ isLoaded: true })
- if (isFn(cb)) cb()
- })
- },
- /**
- * 好书推荐图表
- */
- goodBooksPicture: function () {
- const { headInfoList = [] } = this.data
- const chartComponent = this.selectComponent('#pieSelect')
- const fn = (canvas, width, height) => {
- const chart = new F2.Chart({
- el: canvas,
- width,
- height
- });
- chart.source(headInfoList, {
- percent: {
- formatter: function formatter(data) {
- return data.child_count + '个主题' + '\n' + data.book_count + '本书' + '\n' + '已借阅:' + data.bnum + '本'
- }
- }
- });
- chart.legend(false);
- chart.tooltip(false);
- chart.coord('polar', {
- transposed: true,
- radius: 0.75,
- innerRadius: 0.48
- });
- chart.axis(false);
- chart
- .interval()
- .position('a*percent')
- .color('name', ['#FF6464', '#FFCE4A', '#00B7FF', '#FF80A8'])
- .adjust('stack')
- .style({
- lineWidth: 0,
- stroke: '#fff',
- lineJoin: 'round',
- lineCap: 'round'
- });
- chart.interaction('pie-select', {
- cancelable: false,
- animate: {
- duration: 300,
- easing: 'backOut'
- },
- onStart:res=>{
- // console.log(res)
- },
- onEnd: res => {
- // console.log(res)
- // const { shape, data, shapeInfo, selected } = res
- // const { child_count, book_count, bnum } = data
- // if (shape && selected) {
- // this.setData({
- // message: child_count + '个主题' + '\n' + book_count + '本书' + '\n' + '已借阅:' + bnum + '本'
- // })
- // }
- }
- });
- chart.render();
- return chart;
- }
- chartComponent.init(fn)
- }
- })
|