diff --git a/api/interfaces/user.js b/api/interfaces/user.js index b6f2608..a749c66 100644 --- a/api/interfaces/user.js +++ b/api/interfaces/user.js @@ -39,11 +39,18 @@ const teamList = data => req({ data: data }) +// 邀请码背景 +const poster = (data) => req({ + url: "user/posters", + data: data +}) + export default ({ userIndex, userSetup, setting, account, miniShare, - teamList + teamList, + poster }) \ No newline at end of file diff --git a/pages/account/index.js b/pages/account/index.js index 03f2f9e..3d561ea 100644 --- a/pages/account/index.js +++ b/pages/account/index.js @@ -17,7 +17,8 @@ Page({ logsArr : [], page : { current: 1 }, pageLoding : false, - needSign : false + needSign : false, + examine : '' }, /** @@ -40,10 +41,11 @@ Page({ wx.$api.user.account({ page: this.data.page.current }).then(res => { - let { all_in, balance, frozen, need_sign, logs } = res.data + let { all_in, balance, frozen, need_sign, examine, logs } = res.data this.setData({ account : { all_in, balance, frozen }, needSign : need_sign, + examine : examine, logsArr : logs.page.current == 1 ? logs.data : this.data.logsArr.concat(logs.data), page : logs.page, pageLoding : !logs.page.has_more diff --git a/pages/account/index.wxml b/pages/account/index.wxml index 36cf304..ba22041 100644 --- a/pages/account/index.wxml +++ b/pages/account/index.wxml @@ -18,6 +18,23 @@ + + + 销售补贴考核进度 + + + + {{examine.amount}} + + + + + 收益明细 diff --git a/pages/account/index.wxss b/pages/account/index.wxss index 788e7ca..5e050e7 100644 --- a/pages/account/index.wxss +++ b/pages/account/index.wxss @@ -13,6 +13,16 @@ page { background-color: #f6f6f6; } .tab-name{ font-size: 28rpx; color: gray; } .tab-number { font-size: 34rpx; font-weight: bold; margin-top: 5rpx; } +/* 进度条 */ +.bar {margin: 30rpx; background-color: #ffffff; border-radius: 20rpx;box-sizing: border-box; padding: 30rpx;} +.bar-title {font-weight: 600; margin-bottom: 30rpx;} +.bar-line {width: 100%; height: 60rpx; overflow: hidden;position: relative;} +.progress {height: 20rpx; background-color: #ffb0c2;position: absolute; left: 0; top: 0;} +.progress-box {position: absolute; background-color: #dc3159; height: 20rpx;} +.progress-box-name {right: 0rpx;top: 35rpx;position: absolute; font-size: 24rpx; color: #dc3159;} +.progress-box-name.active {right: -15rpx;} +.progress-name {position: absolute;right: 0rpx;top: 35rpx; font-size: 24rpx; color: rgb(146, 146, 146);} + /* 收益明细 */ .listTitle { padding: 30rpx 30rpx 0; font-weight: 600; box-sizing: border-box; font-size: 30rpx; } .list { padding: 30rpx; box-sizing: border-box;} diff --git a/pages/login/index.js b/pages/login/index.js index 917b778..c6f61ee 100644 --- a/pages/login/index.js +++ b/pages/login/index.js @@ -61,7 +61,7 @@ Page({ return } wx.showToast({ - title: '请勾选用户隐私和服务协议', + title: '请勾选隐私协议和服务协议', icon: "none" }) } diff --git a/pages/mall/details/details.js b/pages/mall/details/details.js index 89b91fc..4e91d60 100644 --- a/pages/mall/details/details.js +++ b/pages/mall/details/details.js @@ -84,7 +84,8 @@ Page({ mask : true }) wx.request({ - url : 'https://api.xhtest.douhuofalv.com/api/mall/goods/' + this.data.goodsId, + // url : 'https://api.xhtest.douhuofalv.com/api/mall/goods/' + this.data.goodsId, + url : 'https://api.xuanhuojk.com/api/mall/goods/' + this.data.goodsId, header : { "Accept" : "application/json", "channel" : "client", diff --git a/pages/refund/refund.wxml b/pages/refund/refund.wxml index a6714c1..625ee81 100644 --- a/pages/refund/refund.wxml +++ b/pages/refund/refund.wxml @@ -15,7 +15,7 @@ {{item.state.remark}} - 总退款{{item.refund_total}} + 总退款 ¥{{item.refund_total}} 取消售后 售后详情 diff --git a/pages/user/code/code.js b/pages/user/code/code.js index be80706..1ba1c06 100644 --- a/pages/user/code/code.js +++ b/pages/user/code/code.js @@ -1,68 +1,72 @@ + /* * 手太欠 * 愿这世界都如故事里一样 美好而动人~ */ Page({ - /** * 页面的初始数据 */ data: { - barHeight : getApp().globalData.barHeight, // 状态栏高度 - shareSee : false, // 分享弹出 - inviteText : '', // 邀请码 - inviteCode : '', // 二维码 - nickname : '', // 用户名称 - invite : '', // 邀请码 - //海报 - canvas : '' + nameInfo: '', // 用户名 + invite : '', // 邀请码 + qrcode : '', // 二维码 + posters : [], // 海报数组 + current : 0, // 选项卡下标 }, - - /** - * 生命周期函数--监听页面加载 - */ - onLoad(options) { - // 初始化画布 - wx.createSelectorQuery().select('#coverCanvas').fields({node: true, size: true}).exec(canvasNode => { - const canvas = canvasNode[0].node - canvas.width = 375 - canvas.height = 800 - this.setData({ - canvas - }) - }) - }, - /** * 生命周期函数--监听页面显示 */ - onShow() { - // 小程序码 - this.ShareInfo(); - console.log(wx.getStorageSync("invite")) - }, + onLoad() { + let miniShareFun = wx.$api.user.poster({ url: 'pages/mall/index' }) + // wx.$api.user.poster({ url: 'pages/mall/index' }).then(res => { + // console.log(res.data) + // this.setData({ + // nameInfo : res.data.name, + // posters : res.data.posters, + // qrcode : res.data.qrcode + // }) + // }) - /** - * 小程序码 - */ - ShareInfo() { - wx.$api.user.miniShare({ - url: 'pages/mall/index' - }).then(res => { - let { user_info, qrcode, invite } = res.data + wx.showLoading({ + title: '加载中...', + mask : true + }) + + Promise.all([miniShareFun]).then(res => { + let miniShareData = res[0].data this.setData({ - invite : invite, - inviteCode: qrcode, - nickname : user_info.nickname + nameInfo : miniShareData.name, + posters : miniShareData.posters, + qrcode : miniShareData.qrcode, + invite : miniShareData.invite, + current : 0 }) - }).catch(err => {}) + // wx.getImageInfo({ + // src : miniShareData.qrcode, + // success : qrcodePath => { + // this.setData({ + // qrcode : qrcodePath.path, + // posters : miniShareData.posters, + // nameName : miniShareData.name, + // current: 0 + // }) + // } + // }) + wx.hideLoading() + }) + }, + swiperChange(e) { + let index = e.detail.current + this.setData({ + current: index + }) }, - /** * 检查授权信息 */ - onSetting(){ + onCheckSetting(){ wx.getSetting({ success: res => { if(res.authSetting['scope.writePhotosAlbum'] || res.authSetting['scope.writePhotosAlbum'] === undefined){ @@ -89,96 +93,102 @@ Page({ */ onCanvas(){ wx.showLoading({ - title: '生成图片中...', + title: '加载中...', mask : true }) - const canvas = this.data.canvas - const ctx = canvas.getContext('2d') - const codeImgEl = canvas.createImage() - const backBackEl = canvas.createImage() + wx.getImageInfo({ + src: this.data.posters[this.data.current].cover, + success: imgInfo => { + wx.hideLoading() + wx.showLoading({ + title : '生成海报中...', + mask : true + }) + let posterSrc = imgInfo.path + let posterW = this.data.posters[this.data.current].width + let posterH = this.data.posters[this.data.current].height + let posterY = this.data.posters[this.data.current].qrcode.y + let posterX = this.data.posters[this.data.current].qrcode.x + let qrcodeSize = this.data.posters[this.data.current].qrcode.size + let qrcodeSrc = this.data.qrcode + let nameY = this.data.posters[this.data.current].font.font_y + let nameColor = this.data.posters[this.data.current].font.font_color - codeImgEl.src = this.data.inviteCode //二维码 - backBackEl.src = 'https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/08/31/555d989b496e6d68ee8405bcae16555e.jpg' //背景素材 - const codeImgLoding = new Promise((resolve, reason) => { - codeImgEl.onload = () => { - resolve() - } - }) - const backBackLoding = new Promise((resolve, reason) => { - backBackEl.onload = () => { - resolve() - } - }) - Promise.all([codeImgLoding, backBackLoding]).then(() => { - ctx.drawImage(backBackEl, 0, 0, 375, 800) - // 绘制[二维码-白色背景] - ctx.fillStyle = "#ffffff"; - ctx.fillRect(140, 570, 130, 130); + wx.createSelectorQuery().select('#canvas').fields({ node: true, size: true }).exec(res => { + const canvas = res[0].node; + const ctx = canvas.getContext("2d"); + const img = canvas.createImage() + const code = canvas.createImage() + const dpr = wx.getSystemInfoSync().pixelRatio - // 绘制[二维码-白色背景黑框] - ctx.strokeStyle = "#da2b54"; - ctx.lineWidth = 2 - ctx.strokeRect(140, 570, 132, 132); + // 设置画布 + canvas.width = posterW * dpr + canvas.height = posterH * dpr + ctx.scale(dpr, dpr) + // 清理画布 + ctx.clearRect(0, 0, canvas.width, canvas.height) + // 绘制背景 + img.src = posterSrc + img.onload = () => { + ctx.drawImage(img, 0, 0, posterW, posterH) + + // 绘制图片二维码 + code.src = qrcodeSrc + code.onload = () => { + var x = (posterX - 0 + 60); + var y = (nameY - 0 + 20); - // 绘制[二维码] - ctx.drawImage(codeImgEl, 150, 580, 110, 110) + //绘制字体 + ctx.font = '22px "微软雅黑"'; + ctx.fillStyle = nameColor; + ctx.textAlign = "center"; + ctx.fillText(this.data.nameInfo, x, y); + // ctx.arc( posterX + qrcodeSize/2, posterY + qrcodeSize/2, qrcodeSize/2 + 5, 0, 2 * Math.PI, false); + ctx.arc(Number(posterX) + qrcodeSize/2, Number(posterY) + Number(qrcodeSize/2), Number(qrcodeSize/2 + 5), 0, 2 * Math.PI,true); + ctx.fillStyle = "#ffffff"; + ctx.fill(); + ctx.drawImage(code, posterX, posterY, qrcodeSize, qrcodeSize) - // 文字 - ctx.font = "bold 14px Arial"; //字体大小 - ctx.fillStyle = "#ffffff"; //字体颜色 - ctx.textAlign = "center" - ctx.fillText('保存并分享二维码', 208, 740); - - // 用户昵称 - ctx.font = "bold 14px Arial"; //字体大小 - ctx.fillStyle = "#ffffff"; //字体颜色 - ctx.textAlign = "center" - ctx.fillText(this.data.nickname, 208, 770); - - wx.hideLoading() - wx.canvasToTempFilePath({ - canvas: this.data.canvas, - success : res => { - wx.saveImageToPhotosAlbum({ - filePath: res.tempFilePath, - success: saveRes => { - wx.showToast({ - title: '海报已保存至您的相册', - icon : 'none' + // 保存海报 + wx.canvasToTempFilePath({ + canvas : canvas, + width : canvas.width, + height : canvas.height, + destWidth : canvas.width, + destHeight : canvas.height, + quality : 1, + success : paths => { + wx.saveImageToPhotosAlbum({ + filePath: paths.tempFilePath, + success: res => { + wx.showToast({ + title : '海报已保存', + }) + } + }) + }, + fail: () => { + wx.hideLoading() + wx.showModal({ + title: '提示', + content: '暂未授权小程序写入您的相册,无法存储海报', + confirmColor: '#e50d01', + confirmText: '去设置', + success: res => { + if (res.confirm) { + wx.openSetting() + } + } + }) + } }) - this.setData({ - shareSee: false - }) - }, - fail: () => { - wx.hideLoading() } - }) - }, - }) - }).catch(err => { - wx.hideLoading() - wx.showToast({ - title: '图片加载失败', - icon : 'none' - }) + } + }) + } }) }, - /** - * 分享弹出 - */ - shareTap() { - this.setData({ - shareSee: !this.data.shareSee - }) - }, - - // 返回上一页 - returnGo() { - wx.navigateBack() - }, - /** * 微信分享 */ @@ -187,9 +197,8 @@ Page({ shareSee: false }) return { - title : '绚火健康,生命可以如此精彩~', - path : "/pages/mall/index?invite=" + this.data.invite, - imageUrl: "https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/08/31/555d989b496e6d68ee8405bcae16555e.jpg" + title : '绚火健康品牌主张', + path : "/pages/mall/index?invite=" + this.data.invite } } }) \ No newline at end of file diff --git a/pages/user/code/code.json b/pages/user/code/code.json index f7efdab..7139157 100644 --- a/pages/user/code/code.json +++ b/pages/user/code/code.json @@ -1,4 +1,4 @@ { "usingComponents": {}, - "navigationStyle": "custom" - } \ No newline at end of file + "navigationBarTitleText": "邀请海报" +} \ No newline at end of file diff --git a/pages/user/code/code.wxml b/pages/user/code/code.wxml index 80be5bc..b2fa41b 100644 --- a/pages/user/code/code.wxml +++ b/pages/user/code/code.wxml @@ -1,40 +1,33 @@ - - - - - - - - - - - - - 保存并分享二维码 - - - - 分享 - - - - - - - - - - - - - - 保存二维码 + + + + + + + + {{nameInfo}} + + + + + + + + 保存海报 - 取消 + + + + + diff --git a/pages/user/code/code.wxss b/pages/user/code/code.wxss index 05f6a2f..4adf050 100644 --- a/pages/user/code/code.wxss +++ b/pages/user/code/code.wxss @@ -1,31 +1,19 @@ -/* 返回上一页 */ -.navigation{ position: fixed; top: 0; left: 0; z-index: 9; width: 100%; height: 90rpx; background-color: transparent; transition: .2s; } -.navigation.active { background-color: transparent; } -.navigation-arrow { width: 44rpx; height: 44rpx; margin: 20rpx 15rpx 0 20rpx; } -/* 二维码海报 */ -.code { width: 100vw; height: 100vh; position: relative; } -.code-back { position: absolute; left: 0; top: 0; width: 100%; height: 100%; } -.code-cont { width: 400rpx; position: absolute; z-index: 9; text-align: center; left: calc(50% - 200rpx); bottom: 8vh; } -.code-img{ margin: 0 auto 20rpx; overflow: hidden; width: 260rpx; height: 260rpx; border: 4rpx solid #ff4f64; background-color: #ffffff; padding: 10rpx; box-sizing: border-box; border-radius: 50%; } -.code-img image { width: 100%; } -.code-text { color: #ffffff; font-size: 30rpx; } +.content{ display: flex; align-items: center; flex-direction: column; justify-content: center; background: white; box-shadow: brown; min-height: 100vh;} -/* 海报分享 */ -.code-share { position: absolute; right: 0; bottom: 15%; background: linear-gradient(to right, #fffafb, #ffd4dd); width: 50rpx; text-align: center; border-radius: 26rpx 0 0 26rpx; padding: 30rpx 10rpx 30rpx 15rpx; box-shadow: 0 0 0 6rpx rgba(249, 96, 116, .8); z-index: 9; -} -.code-share-name { writing-mode:vertical-rl; font-size: 30rpx; padding-left: 4rpx; color: #da2b54; } -.code-share image { width: 36rpx; height: 36rpx; margin-bottom: 5rpx; } +/* 海报预览 */ +.poster{ width: 550rpx; height: 900rpx; background: white; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, .05); border-radius: 20rpx; overflow: hidden; } +.poster-item{ width: 550rpx; height: 900rpx; background-position: center; background-size: cover; position: relative; } +.poster-qrocde{ position: absolute; background-color: white; border-radius: 50%; padding: 10rpx; } +.poster-name{ position: absolute; z-index: 999; text-align: center;} -/* 弹出层 */ -.sharePop-lay{ background: rgba(0, 0, 0, .5); position: fixed; top: 0; left: 0; right: 0; height: 100vh; width: 100vw; z-index: 9; display: none; } -.sharePop-lay.active{ display: block; } -.sharePop { position: fixed; width: 100%; z-index: 99; left: 0; bottom: 0; background-color: #ffffff; } -.shareCont-label image { width: 60rpx; height: 60rpx; display: block; margin: 0 auto 10rpx; } -.shareCancel { border-top: 2rpx solid #ebebeb; color: #000000; width: 100%; text-align: center; line-height: 100rpx; } -.shareCont{ display: flex; padding: 30rpx 0; } -.shareCont-label { color: #000000; flex: 2; text-align: center; font-size: 28rpx; } -.codeShare-button { background-color: transparent; padding: 0; font-weight: normal; } +/* 分享功能 */ +.tool{ display: flex; align-items: center; justify-content: space-around; width: 70vw; margin-top: 80rpx; } +.tool-item{ text-align: center; } +.tool-item[size="mini"]{ padding: 0; margin: 0; background-color: transparent; } +.tool-icon{ background: #f7f8f9; width: 88rpx; height: 88rpx; border-radius: 50%; vertical-align: top; } +.tool-text{ color: gray; font-size: 30rpx; line-height: 40rpx; margin-top: 10rpx; } /* canvas */ -.canvas-img { position: fixed; left: 0%; left: -100%; top: 0; z-index: -1; } \ No newline at end of file +.canvas{ background: #ddd; position: absolute; top: 0; left:-200%; } + diff --git a/pages/user/index.js b/pages/user/index.js index 868bd4b..9348897 100644 --- a/pages/user/index.js +++ b/pages/user/index.js @@ -84,5 +84,17 @@ Page({ url: '/pages/mall/details/details?id=' + id, }) } - } + }, + + /** + * 拨打电话 + */ + toCall(){ + wx.makePhoneCall({ + phoneNumber: this.data.userData.parent.username, + success: res=> { + console.log() + } + }) + }, }) \ No newline at end of file diff --git a/pages/user/index.wxml b/pages/user/index.wxml index d3fb17b..3e1614b 100644 --- a/pages/user/index.wxml +++ b/pages/user/index.wxml @@ -4,7 +4,7 @@ {{userData.user.nickname}} - + @@ -21,6 +21,25 @@ + + + + + + + + {{userData.parent.nickname}}推荐人 + {{userData.parent.hidden_username}} + + + + 智能电话 + + + + + + diff --git a/pages/user/index.wxss b/pages/user/index.wxss index 7515164..f733029 100644 --- a/pages/user/index.wxss +++ b/pages/user/index.wxss @@ -130,6 +130,64 @@ page { border: 4rpx solid #ffffff; } +.parent-user { + display: flex; + padding: 30rpx; + box-sizing: border-box; + position: relative; +} + +.parent-icon { + width: 68rpx; + height: 68rpx; + margin-top: 4rpx; +} + +.parent-cont { + width: calc(100% - 68rpx); + padding: 0 20rpx; + box-sizing: border-box; + color: #000000; +} + +.parent-cont-name { + font-weight: 600; + margin-bottom: 6rpx; + font-size: 28rpx; + display: flex; +} + +.parent-cont-tips { + border: 2rpx solid #da2b54; + color: #da2b54; + font-weight: normal; + font-size: 22rpx; + border-radius: 20rpx; + padding: 0 13rpx; + height: 28rpx; + line-height: 28rpx; + margin-left: 15rpx; + margin-top: 4rpx; +} + +.parent-cont-tel { + font-size: 26rpx; + color: #333; +} + +.parent-tel { + position: absolute; + right: 30rpx; + top: 32rpx; + font-size: 24rpx; + text-align: center; +} + +.parent-tel-icon { + width: 36rpx; + height: 36rpx; + margin: 0 auto; +} /* 工具 */ .tool-list { diff --git a/pages/user/team/index.wxml b/pages/user/team/index.wxml index 9c9b7d4..8873b11 100644 --- a/pages/user/team/index.wxml +++ b/pages/user/team/index.wxml @@ -37,15 +37,33 @@ - + - {{item.nickname || '-'}}{{item.hidden_username || '-'}} - {{item.created_at}} + {{item.nickname || '-'}} + {{item.hidden_username || '-'}}{{item.created_at}} + + + + + 个人业绩(元) + + + {{item.self_perf}} + + + + + 总业绩(元) + + + {{item.group_perf}} + + - 加载中... + 加载中... 没有更多了~ diff --git a/pages/user/team/index.wxss b/pages/user/team/index.wxss index 046dfd0..625f697 100644 --- a/pages/user/team/index.wxss +++ b/pages/user/team/index.wxss @@ -81,8 +81,8 @@ page { padding: 25rpx 30rpx; box-sizing: border-box; margin-bottom: 30rpx; - display: flex; align-items: center; + position: relative; } .listItem-head { @@ -90,14 +90,33 @@ page { } .listItem-cont { - width: 100% - 88rpx; - padding-left: 30rpx; + width: 100%; + position: absolute; + left: 0; + top: 0; + padding: 30rpx 30rpx 30rpx 140rpx; box-sizing: border-box; } .listItem-name { font-weight: 600; line-height: 40rpx; + margin-bottom: 10rpx; + display: flex; +} + +.listItem-name image { + width: 100rpx; + margin: 4rpx 0 0 15rpx; +} + +.listItem-tel { + font-size: 28rpx; + display: flex; +} + +.listItem-tel-user { + flex: 1; } .listItem-name text { @@ -111,6 +130,30 @@ page { line-height: 40rpx; } +.listItem-flex { + display: flex; + margin-top: 20rpx; + padding-top: 20rpx; + background-color: #f6f6f6; + padding: 20rpx; + box-sizing: border-box; + border-radius: 10rpx; +} + +.listItem-label { + flex: 3; + text-align: center; +} + +.listItem-label-name { + font-size: 26rpx; + margin-bottom: 15rpx; +} + +.listItem-label-number { + font-size: 30rpx; + font-weight: 600; +} /* 暂无数据 */ .pages-no { diff --git a/project.private.config.json b/project.private.config.json index ba0737f..823bb97 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -17,8 +17,8 @@ }, { "name": "", - "pathName": "pages/mall/index", - "query": "invite=233232", + "pathName": "pages/user/code/code", + "query": "", "launchMode": "default", "scene": null }, diff --git a/static/icons/add_icon.png b/static/icons/add_icon.png index addb8f4..b170b56 100644 Binary files a/static/icons/add_icon.png and b/static/icons/add_icon.png differ diff --git a/static/icons/parent_icon.png b/static/icons/parent_icon.png new file mode 100644 index 0000000..8f6621e Binary files /dev/null and b/static/icons/parent_icon.png differ diff --git a/static/icons/parent_tel.png b/static/icons/parent_tel.png new file mode 100644 index 0000000..b8d6bd2 Binary files /dev/null and b/static/icons/parent_tel.png differ diff --git a/static/share_00.png b/static/share_00.png new file mode 100644 index 0000000..3216977 Binary files /dev/null and b/static/share_00.png differ diff --git a/static/share_01.png b/static/share_01.png new file mode 100644 index 0000000..7ab1a36 Binary files /dev/null and b/static/share_01.png differ