|
|
<template> <view class="myData pad" id="app"> <topNavbar title=""></topNavbar> <view class="topText"> <view class="h3">专属您的</view> <view class="h4">学车数据</view> </view> <view class="card"> <view class="row"> <view class="leftCon"> <view class="icon"> <image src="@/static/images/userCenter/ic_jiaxiao.png" mode=""></image> </view> <view class="text">我的驾校</view> </view> <view class="value">翔力驾校</view> </view> <view class="row"> <view class="leftCon"> <view class="icon"> <image src="@/static/images/userCenter/ic_jiaolian.png" mode=""></image> </view> <view class="text">我的教练</view> </view> <view class="value">xxx</view> </view> <view class="row"> <view class="leftCon"> <view class="icon"> <image src="@/static/images/userCenter/ic_chexing.png" mode=""></image> </view> <view class="text">所学车型</view> </view> <view class="value">xxx</view> </view> <view class="row"> <view class="leftCon"> <view class="icon"> <image src="@/static/images/userCenter/ic_shijian.png" mode=""></image> </view> <view class="text">报名时间</view> </view> <view class="value">xxx</view> </view> </view> <!-- 学驾共历时 --> <view class="card"> <view class="chart_row"> <view class="leftText"> <view class="lab">学驾共历时</view> <view class="val">33天</view> </view> <view class="rightChart"> <ringChart /> </view> </view>
</view> <!-- 考试通过率 --> <view class="card"> <view class="chart_row"> <view class="leftText" style="width: 200rpx;"> <view class="lab">考试通过率</view> <view class="val">90%</view> </view> <view class="rightChart pad28"> <view class="blueBg"> <columnChart/> </view> </view> </view>
</view> <view class="flex-b"> <view class="count card"> <view class="lab">实操练习次数</view> <view class="val">20次</view> </view> <view class="count card"> <view class="lab">模拟训练次数</view> <view class="val">20次</view> </view> </view> <view class="btnBorder" @click="destImgFn">立即分享</view> <!-- <button @click="shareFn" open-type="share">立即分享</button> --> <canvas canvas-id="canvas" style="width: 350px; height: 350px;" class="canvas">3333</canvas> <view class="img" style="width: 300px; height: 300px;"> <image :src="shareImageUrl" mode=""></image> </view> </view> </template>
<script> import ringChart from './ringChart.vue' import columnChart from './columnChart' export default { components: { ringChart, columnChart }, data() { return { shareImageUrl: '' } }, onReady() { this.destImgFn() },
methods: { captureCanvas() { // 获取 Canvas 组件实例
const canvas = uni.createCanvasContext('myCanvas', this); // 绘制需要的内容
canvas.setFontSize(20); canvas.fillText('Hello, Canvas!', 50, 50); // 绘制完成后执行截屏操作
canvas.draw(true, () => { uni.canvasToTempFilePath({ canvasId: 'myCanvas', fileType: 'png', success: (res) => { console.log('截屏成功', res.tempFilePath); }, fail: (err) => { console.log('截屏失败', err); } }, this); }); }, destImgFn() { this.$nextTick(()=>{ // uni.canvasToTempFilePath({
// x: 0,
// y: 0,
// width: 350,
// height: 350,
// destWidth: 350,
// destHeight: 350,
// canvasId: 'canvas',
// success: function(res) {
// // 在H5平台下,tempFilePath 为 base64
// console.log(res.tempFilePath)
// }
// },this)
// return
let _this = this uni.createSelectorQuery().select('#app').boundingClientRect((rect) => { console.log(rect) const context = uni.createCanvasContext('canvas') context.draw(true, () => { setTimeout(()=>{ uni.canvasToTempFilePath({ x: 0, y: 0, fileType:'png', width: 200, height: 200, // destWidth: rect.width * uni.getSystemInfoSync().pixelRatio,
// destHeight: rect.height * uni.getSystemInfoSync().pixelRatio,
canvasId: 'canvas', success: (res) => { console.log('截图成功') console.log(res) uni.showToast({ title: '截图成功', icon: 'none' }) // uni.hideToast()
// 将截屏图片路径保存至storage或全局变量,以便后续分享使用
_this.shareImageUrl = res.tempFilePath console.log(_this.shareImageUrl) }, fail: (error) => { console.log('截图失败') console.log(error) // uni.hideToast()
uni.showToast({ title: '截图失败', icon: 'none' }) }, }) },2000) }) }).exec() }) }, shareFn() { let _this = this // uni.share({
// provider: "weixin",
// scene: "WXSceneSession",
// type: 2,
// imageUrl: _this.shareImageUrl,
// success: function (res) {
// console.log("success:" + JSON.stringify(res));
// },
// fail: function (err) {
// console.log("fail:" + JSON.stringify(err));
// }
// });
uni.showShareMenu({ withShareTicket: true, success: () => { uni.showShareImageMenu({ path: _this.shareImageUrl, success: (res) => { console.log('分享成功', res) }, fail: (error) => { console.log('分享失败', error) } }) } })
}, // 在分享按钮的点击事件中调用分享API
onShareImageBtnClick() { wx.showShareMenu({ withShareTicket: true, success: () => { wx.shareAppMessage({ imageUrl: '/image/share-image.jpg', success: (res) => { console.log('分享成功', res) }, fail: (error) => { console.log('分享失败', error) } }) } }) }
} } </script>
<style lang="scss" scoped> .myData { width: 100%; background: url('http://192.168.1.20:81/zhili/image/20230818/409dca21dfec44eb8477e056ee23e437.png') #f6f6f6 no-repeat; background-size: 100% 544rpx; min-height: 100vh; font-size: 28rpx; padding-bottom: 40rpx;
.topText { padding: 56rpx 34rpx 84rpx 34rpx; color: #fff; font-weight: 600;
.h3 { font-size: 42rpx; }
.h4 { font-size: 64rpx; } }
.card { padding: 0 24rpx; margin-bottom: 20rpx;
.row { display: flex; border-bottom: 2rpx solid #E8E9EC; height: 102rpx; align-items: center;
.leftCon { display: flex; align-items: center;
.icon { width: 40rpx; height: 40rpx; }
.text { font-size: 28rpx; padding: 0 40rpx 0 12rpx; } }
.value { font-size: 28rpx; color: #1989FA; flex: 1; } } }
.count { width: 48%; height: 196rpx; background: #FFFFFF; border-radius: 16rpx; text-align: center;
.lab { margin: 36rpx 0 28rpx 0; }
.val { font-weight: 500; font-size: 40rpx; color: $themC; } }
.btnBorder { width: 396rpx; margin: 48rpx auto 0 auto; } }
.chart_row { height: 300rpx; border-radius: 16rpx; display: flex;
.leftText { width: 270rpx; display: flex; flex-direction: column; align-items: center; justify-content: center;
.lab { margin: 0rpx 0 24rpx 0; }
.val { font-weight: 500; font-size: 40rpx; color: $themC; } }
.rightChart { width: 0; flex: 1; &.pad28 { padding: 28rpx 0; } .blueBg { padding: 20rpx 0 10rpx 0; width: 100%; height: 100%; background-color: #F2F8FF; } } } .img { width: 100vw; height: 100vh; } </style>
|