maker/src/pages/result/index.vue
2019-12-02 20:33:34 +08:00

362 lines
8.7 KiB
Vue

<template>
<div class="page p-result">
<div class="main">
<!-- 详情卡片 -->
<div class="sec-1">
<div class="wrap">
<div class="title">
<span class="color-white">测试</span>
<span>结果</span>
</div>
<div class="card">
<div class="card-hd">{{title}}</div>
<div class="card-bd">
<div class="card-cont">
<div :key="index" v-for="(item, index) in result">{{item}}</div>
</div>
<button @click="saveResult" class="card-btn">
<image
class="icon icon-download"
lazy-load="false"
mode="scaleToFill"
src="/static/images/icon-download.png"
style="width:16px;height:16px;"
/>保存结果
</button>
<button class="card-btn" data-id="shareBtn" open-type="share">
<image
@click="share"
class="icon icon-share"
lazy-load="false"
mode="scaleToFill"
src="/static/images/icon-share.png"
style="width:16px;height:16px;"
/>分享结果
</button>
<button @click="replay" class="card-btn">
<image
class="icon icon-reload"
lazy-load="false"
mode="scaleToFill"
src="/static/images/icon-reload.png"
style="width:16px;height:16px;"
/>再来一次
</button>
</div>
</div>
</div>
</div>
<!-- 列表热门 -->
<div class="sec-2">
<div class="list">
<div class="list-hd">
<div class="l">大家都在测</div>
<div @click="goList" class="r">更多>></div>
</div>
<div class="list-bd">
<list-item :data="item" :key="index" v-for="(item, index) in hotList"></list-item>
</div>
</div>
</div>
</div>
<!-- canvas -->
<painter
:palette="template"
@imgOK="onImgOk"
customStyle="position: absolute; left: -9999rpx;"
v-if="paint"
/>
</div>
</template>
<script>
import card from '@/components/card'
import search from '@/components/search'
import listItem from '@/components/list-item'
import tag from '@/components/tag'
import requestUtil from '@/utils/request'
import sdkManage from '@/utils/jcfw/SDKManage'
export default {
data() {
return {
hotList: [],
result: '',
title: '',
template: {},
imgPath: '',
paint: false,
_id: ''
}
},
components: {
search,
listItem,
tag
},
async onLoad(options) {
this.users = options.users
this._id = options._id
sdkManage.init(options)
},
async mounted() {
await this.getResult()
await this.getHot()
const palette = {
background: '#eee',
width: '750rpx',
height: '1334rpx',
views: [
{
type: 'image',
url: '/static/images/bg-result.png',
css: {
top: '0rpx',
left: '0rpx',
width: '750rpx',
height: '1334rpx'
}
},
{
type: 'text',
text: this.title,
css: {
top: '100rpx',
left: '0rpx',
width: '750rpx',
color: '#000000',
textAlign: 'center',
fontSize: '52rpx',
fontWeight: 'bold',
lineHeight: '64rpx'
}
},
{
type: 'text',
text: this.result.join('\n'),
css: {
top: '220rpx',
left: '100rpx',
width: '550rpx',
color: '#000000',
lineHeight: '72rpx',
fontSize: '48rpx'
}
},
{
type: 'image',
url: '/static/images/qr-code.jpg',
css: {
bottom: '128rpx',
right: '60rpx',
width: '120rpx',
height: '120rpx'
}
},
{
type: 'text',
text: '小程序',
css: {
bottom: '64rpx',
right: '64rpx',
height: '120rpx',
color: '#999999',
lineHeight: '48rpx',
fontSize: '28rpx'
}
},
{
type: 'text',
text: '奇妙测试机',
css: {
bottom: '32rpx',
right: '64rpx',
height: '120rpx',
color: '#999999',
lineHeight: '48rpx',
fontSize: '28rpx'
}
}
]
}
this.template = palette
this.paint = true
},
onShareAppMessage(res) {
// if (res.from === 'button') {
// // 来自页面内转发按钮
// }
return {
title: this.title,
path: `/pages/details/main?_id=${this._id}`
}
},
methods: {
async getHot() {
try {
const data = await requestUtil.getData('/list', { type: 'hot' })
this.hotList = data.result
} catch (err) {
console.log(err)
}
},
async getResult() {
try {
const data = await requestUtil.getData('/result', {
_id: this._id,
users: this.users
})
this.result = data.result
this.title = data.title
} catch (err) {
console.log(err)
}
},
replay() {
wx.navigateBack({
delta: 1 //返回的页面数,如果 delta 大于现有页面数,则返回到首页,
})
},
share() {
setTimeout(() => {
sdkManage.uploadLog('click_share', { id: this._id, title: this.title })
}, 0)
},
paint() {},
onImgOk(e) {
this.imgPath = e.mp.detail.path
console.log(this.imgPath)
},
saveResult() {
setTimeout(() => {
sdkManage.uploadLog('click_save', { id: this._id, title: this.title })
}, 0)
wx.showToast({
title: '正在保存', //提示的内容,
icon: 'loading', //图标,
duration: 2000, //延迟时间,
mask: true //显示透明蒙层,防止触摸穿透,
})
const self = this
setTimeout(() => {
wx.saveImageToPhotosAlbum({
filePath: self.imgPath,
success: function() {
wx.showToast({
title: '保存成功', //提示的内容,
icon: 'success', //图标,
duration: 2000, //延迟时间,
mask: true //显示透明蒙层,防止触摸穿透,
})
},
fail: function(err) {
wx.showToast({
title: '保存失败!请重试!', //提示的内容,
icon: 'none', //图标,
duration: 2000, //延迟时间,
mask: true //显示透明蒙层,防止触摸穿透,
})
console.log(err)
}
})
}, 1000)
},
goList() {
wx.switchTab({
url: `/pages/list/main`
})
}
}
}
</script>
<style lang="less" scoped>
.p-result {
.main {
padding: 40rpx 20rpx 60rpx;
}
.sec-1 {
.wrap {
position: relative;
margin: 0 auto;
padding: 60rpx 32rpx;
background-color: #fffdf5;
border: 4px solid #ffdc34;
}
.title {
position: absolute;
transform: translateX(0%);
top: -2rpx;
left: -2rpx;
height: 64rpx;
padding: 0 32rpx;
font-size: 32rpx;
line-height: 64rpx;
font-weight: 700;
background-color: #ffdc34;
}
.card {
.card-hd {
margin-bottom: 0rpx;
text-align: center;
font-size: 48rpx;
font-weight: 700;
}
.card-bd {
line-height: 1.5;
font-size: 32rpx;
.card-cont {
margin: 12rpx 0;
text-indent: 1em;
font-size: 42rpx;
}
.card-btn {
margin: 32rpx auto;
border: none;
background-color: #ffdc34;
color: #fff;
border-radius: 0;
width: 100%;
letter-spacing: 4rpx;
.icon {
margin-right: 16rpx;
vertical-align: middle;
}
}
}
}
}
.sec-2 {
margin-top: 30rpx;
.list {
background-color: #fff;
border: 4rpx solid #ffdc34;
.list-hd {
display: flex;
justify-content: space-between;
align-items: center;
height: 80rpx;
padding: 0 32rpx;
line-height: 80rpx;
border-bottom: 1px solid #f0f0f0;
.l {
font-weight: 700;
color: #ffdc34;
}
.r {
font-size: 28rpx;
color: #ffdc34;
}
}
}
}
}
</style>