@ -0,0 +1,490 @@ |
|||||
|
<template> |
||||
|
<view class="imgDetail"> |
||||
|
<image class="main-img" :src="detailMsg.imgUrl" mode=""></image> |
||||
|
<view class="toolbar"> |
||||
|
<view class="toolbar-box"> |
||||
|
<image v-if="detailMsg.isHot ==='0'" src="../../static/hot-not.png" mode=""></image> |
||||
|
<image v-else src="../../static/hot-yes.png" mode=""></image> |
||||
|
</view> |
||||
|
<view class="toolbar-box" @click="download(detailMsg.imgUrl)"> |
||||
|
<image v-if="isDownload" src="../../static/download-select.png" mode=""></image> |
||||
|
<image v-else src="../../static/download.png" mode=""></image> |
||||
|
<text>下载</text> |
||||
|
</view> |
||||
|
<view class="toolbar-box" @click="likeCollect('isLike')"> |
||||
|
<image v-if="isLike" src="../../static/like-select.png" mode=""></image> |
||||
|
<image v-else src="../../static/like.png" mode=""></image> |
||||
|
<text>喜欢</text> |
||||
|
</view> |
||||
|
<view class="toolbar-box" @click="likeCollect('isCollect')"> |
||||
|
<image v-if="isCollect" src="../../static/collect-select.png" mode=""></image> |
||||
|
<image v-else src="../../static/collect.png" mode=""></image> |
||||
|
<text>收藏</text> |
||||
|
</view> |
||||
|
<view class="toolbar-box share-box"> |
||||
|
<button open-type="share"> |
||||
|
<image src="../../static/share.png" mode=""></image> |
||||
|
<text>分享</text> |
||||
|
</button> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { |
||||
|
detailsTiktokImg, // 获取图片详情 |
||||
|
judgeTiktokLike, // 查询是否点赞过 |
||||
|
judgeTiktokCollect, // 查询是否收藏过 |
||||
|
tiktokLike, // 点赞 |
||||
|
tiktokUnLike, // 取消点赞 |
||||
|
tiktokCollect, // 收藏 |
||||
|
tiktokUnCollect, // 取消收藏 |
||||
|
queryCreatorScanCodeById, //获取艺术家搜索码 |
||||
|
insertOrUpdatePreAdProfit, //新增/更新艺术家即将入账广告收益 |
||||
|
insertOrUpdatePreInviteProfit, // 新增/更新艺术家即将入账邀请收益 |
||||
|
checkUserCanDownload // 检查某平台用户当日下载次数是否超标 |
||||
|
} from '@/api/creator.js' |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
detailMsg: {}, // 图片信息 |
||||
|
userInfo: {}, // 登录用户信息 |
||||
|
isDownload: false, // 是否已下载 |
||||
|
isLike: false, // 是否点赞/喜欢 |
||||
|
isCollect: false, // 是否收藏, |
||||
|
scanCode: undefined, //艺术家搜索码 |
||||
|
canDownload: false //能否下载 false为能下载 |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
const detailId = uni.getStorageSync('detailId') |
||||
|
if (detailId) { |
||||
|
this.getImgDetail(detailId) |
||||
|
} else { |
||||
|
this.getImgDetail(detailId) |
||||
|
} |
||||
|
}, |
||||
|
onShareAppMessage(res) { |
||||
|
if (res.from === 'button') { // 来自页面内分享按钮 |
||||
|
console.log(res) |
||||
|
} |
||||
|
return { |
||||
|
title: '来看看艺术家[' + this.scanCode + ']精心准备的图片吧~', |
||||
|
path: `/pages/creator/imgDetail?id=${this.userInfo.id}`, |
||||
|
bgImgUrl: `${this.detailMsg.imgUrl}` |
||||
|
} |
||||
|
uni.showToast({ |
||||
|
title: '分享成功', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
}, |
||||
|
methods: { |
||||
|
// 图片详情 |
||||
|
async getImgDetail(id) { |
||||
|
const res = await detailsTiktokImg(id) |
||||
|
console.log('res', res) |
||||
|
if (res.data.code === 200) { |
||||
|
this.detailMsg = res.data.data |
||||
|
console.log('图片详情', res) |
||||
|
const result = await queryCreatorScanCodeById(this.detailMsg.creatorId) |
||||
|
if (result.data.code === 200) { |
||||
|
this.scanCode = result.data.data.scanCode |
||||
|
} else { |
||||
|
uni.showToast({ |
||||
|
title: '该艺术家不存在!', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
} |
||||
|
uni.getStorage({ |
||||
|
key: 'userInfo', |
||||
|
success: res => { |
||||
|
this.userInfo = res.data |
||||
|
console.log('userInfo', this.userInfo) |
||||
|
this.searchIsLike() |
||||
|
this.searchisCollect() |
||||
|
this.checkUserDownload() |
||||
|
} |
||||
|
}) |
||||
|
} else { |
||||
|
uni.showToast({ |
||||
|
title: '请输入艺术家代号', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
// 查询是否点赞 |
||||
|
async searchIsLike() { |
||||
|
const params = { |
||||
|
imgId: this.detailMsg.id, |
||||
|
userId: this.userInfo.id |
||||
|
} |
||||
|
console.log('params', this.detailMsg, params) |
||||
|
const res = await judgeTiktokLike(params) |
||||
|
if (res.data.code === 200) { |
||||
|
this.isLike = res.data.data |
||||
|
} else { |
||||
|
uni.showToast({ |
||||
|
title: res.data.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
// 查询是否收藏过 |
||||
|
async searchisCollect() { |
||||
|
const params = { |
||||
|
imgId: this.detailMsg.id, |
||||
|
userId: this.userInfo.id |
||||
|
} |
||||
|
const res = await judgeTiktokCollect(params) |
||||
|
if (res.data.code === 200) { |
||||
|
this.isCollect = res.data.data |
||||
|
} else { |
||||
|
uni.showToast({ |
||||
|
title: res.data.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
// 点赞/收藏 |
||||
|
async likeCollect(val) { |
||||
|
const params = { |
||||
|
imgId: this.detailMsg.id, |
||||
|
userId: this.userInfo.id |
||||
|
} |
||||
|
if (val === 'isLike') { |
||||
|
this.isLike = !this.isLike |
||||
|
console.log('this.isLike', this.isLike) |
||||
|
if (this.isLike) { |
||||
|
//点赞 |
||||
|
console.log('点赞') |
||||
|
const res = await tiktokLike(params) |
||||
|
if (res.data.code === 200) {} else { |
||||
|
uni.showToast({ |
||||
|
title: res.data.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
} |
||||
|
} else { |
||||
|
//取消点赞 |
||||
|
console.log('取消点赞') |
||||
|
const res = await tiktokUnLike(params) |
||||
|
if (res.data.code === 200) {} else { |
||||
|
uni.showToast({ |
||||
|
title: res.data.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
} else if (val === 'isCollect') { |
||||
|
this.isCollect = !this.isCollect |
||||
|
if (this.isCollect) { |
||||
|
//收藏 |
||||
|
console.log('收藏') |
||||
|
const res = await tiktokCollect(params) |
||||
|
if (res.data.code === 200) {} else { |
||||
|
uni.showToast({ |
||||
|
title: res.data.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
} |
||||
|
} else { |
||||
|
//取消收藏 |
||||
|
console.log('取消收藏') |
||||
|
const res = await tiktokUnCollect(params) |
||||
|
if (res.data.code === 200) {} else { |
||||
|
uni.showToast({ |
||||
|
title: res.data.msg, |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
//写入图片广告收益 |
||||
|
async insertPreAdProfit() { |
||||
|
const params = { |
||||
|
imgId: this.detailMsg.id, |
||||
|
creatorId: this.detailMsg.creatorId, |
||||
|
scanCode: this.scanCode, |
||||
|
userId: this.userInfo.id, |
||||
|
appType: '0', |
||||
|
platform: '0' |
||||
|
} |
||||
|
const res = await insertOrUpdatePreAdProfit(params); |
||||
|
if (res.data.code === 200) { |
||||
|
console.log("写入广告收益成功!") |
||||
|
this.adResult = res.data.code; |
||||
|
} else { |
||||
|
uni.showToast({ |
||||
|
title: '图片下载失败!', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//写入图片邀请收益 |
||||
|
async insertPreInviteProfit() { |
||||
|
const params = { |
||||
|
imgId: this.detailMsg.id, |
||||
|
creatorId: this.detailMsg.creatorId, |
||||
|
scanCode: this.scanCode, |
||||
|
appType: '0', |
||||
|
platform: '0' |
||||
|
} |
||||
|
const res = await insertOrUpdatePreInviteProfit(params) |
||||
|
if (res.data.code === 200) { |
||||
|
console.log("写入邀请收益成功"); |
||||
|
this.inviteResult = res.data.code; |
||||
|
} else { |
||||
|
uni.showToast({ |
||||
|
title: '图片下载失败!', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//检查某平台用户当日下载次数是否超标 |
||||
|
async checkUserDownload() { |
||||
|
const params = { |
||||
|
userId: this.userInfo.id, |
||||
|
appType: '0', |
||||
|
platform: '0' |
||||
|
} |
||||
|
const res = await checkUserCanDownload(params); |
||||
|
if (res.data.code === 200) { |
||||
|
console.log("当日下载结果为", res.data.data) |
||||
|
this.canDownload = res.data.data; |
||||
|
} else { |
||||
|
uni.showToast({ |
||||
|
title: '检查下载状态失败!', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
|
||||
|
// 下载 |
||||
|
download(url) { |
||||
|
let that = this; |
||||
|
if (this.canDownload != true) { |
||||
|
//满足可下载条件 |
||||
|
this.isDownload = true |
||||
|
uni.showLoading({ |
||||
|
title: '正在保存图片...' |
||||
|
}); |
||||
|
//获取用户的当前设置。获取相册权限 |
||||
|
uni.getSetting({ |
||||
|
success: (res) => { |
||||
|
//如果没有相册权限 |
||||
|
if (!res.authSetting["scope.writePhotosAlbum"]) { |
||||
|
//向用户发起授权请求 |
||||
|
tt.authorize({ |
||||
|
scope: "scope.album", |
||||
|
success: () => { |
||||
|
//授权成功保存图片到系统相册 |
||||
|
uni.downloadFile({ |
||||
|
url, |
||||
|
success: (res) => { |
||||
|
console.log('下载路径', res) |
||||
|
if (res.statusCode === 200) { |
||||
|
uni.saveImageToPhotosAlbum({ |
||||
|
//图片路径,不支持网络图片路径 |
||||
|
filePath: res |
||||
|
.tempFilePath, |
||||
|
success: (res) => { |
||||
|
console.log( |
||||
|
'success', |
||||
|
res) |
||||
|
|
||||
|
}, |
||||
|
fail: (res) => { |
||||
|
console.log( |
||||
|
'fail', |
||||
|
res) |
||||
|
return uni |
||||
|
.showToast({ |
||||
|
title: res |
||||
|
.errMsg, |
||||
|
icon: 'none' |
||||
|
}); |
||||
|
}, |
||||
|
complete: (res) => { |
||||
|
uni |
||||
|
.hideLoading(); |
||||
|
if (res |
||||
|
.errMsg !== |
||||
|
"saveImageToPhotosAlbum:ok" |
||||
|
) { |
||||
|
return uni |
||||
|
.showToast({ |
||||
|
title: "下载失败!", |
||||
|
icon: 'none' |
||||
|
}); |
||||
|
} else { |
||||
|
return uni |
||||
|
.showToast({ |
||||
|
title: "下载成功!", |
||||
|
icon: 'none', |
||||
|
success() { |
||||
|
that.insertPreAdProfit(); |
||||
|
that.insertPreInviteProfit(); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
}, |
||||
|
}); |
||||
|
} else { |
||||
|
uni.showToast({ |
||||
|
title: "下载失败!", |
||||
|
icon: 'none' |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
//授权失败 |
||||
|
fail: () => { |
||||
|
uni.hideLoading(); |
||||
|
uni.showModal({ |
||||
|
title: "您已拒绝获取相册权限", |
||||
|
content: "是否进入权限管理,调整授权?", |
||||
|
success: (res) => { |
||||
|
if (res.confirm) { |
||||
|
//调起客户端小程序设置界面,返回用户设置的操作结果。(重新让用户授权) |
||||
|
uni.openSetting({ |
||||
|
success: ( |
||||
|
res) => { |
||||
|
console |
||||
|
.log( |
||||
|
res |
||||
|
.authSetting |
||||
|
); |
||||
|
}, |
||||
|
}); |
||||
|
} else if (res.cancel) { |
||||
|
return uni.showToast({ |
||||
|
title: "已取消!", |
||||
|
icon: 'none' |
||||
|
}); |
||||
|
} |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
}); |
||||
|
} else { |
||||
|
//如果已有相册权限,直接保存图片到系统相册 |
||||
|
uni.saveImageToPhotosAlbum({ |
||||
|
filePath: url, |
||||
|
success: (res) => { |
||||
|
uni.hideLoading(); |
||||
|
return uni.showToast({ |
||||
|
title: "保存成功!", |
||||
|
icon: 'none' |
||||
|
}); |
||||
|
}, |
||||
|
fail: (res) => { |
||||
|
uni.hideLoading(); |
||||
|
console.log(res.errMsg); |
||||
|
return uni.showToast({ |
||||
|
title: res.errMsg, |
||||
|
icon: 'none' |
||||
|
}); |
||||
|
}, |
||||
|
//无论成功失败都走的回调 |
||||
|
complete: (res) => { |
||||
|
uni.hideLoading(); |
||||
|
}, |
||||
|
}); |
||||
|
} |
||||
|
}, |
||||
|
fail: (res) => {}, |
||||
|
}); |
||||
|
} else { |
||||
|
//不满足可下载条件 canDownload为true状态 |
||||
|
uni.showToast({ |
||||
|
title: '当日下载次数已用完,请明日再来!', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
// 分享 |
||||
|
share() { |
||||
|
uni.showToast({ |
||||
|
title: '分享', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less"> |
||||
|
.imgDetail { |
||||
|
height: 100vh; |
||||
|
width: 100vw; |
||||
|
overflow: hidden; |
||||
|
position: relative; |
||||
|
|
||||
|
.main-img { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
.toolbar { |
||||
|
width: 60px; |
||||
|
background-color: rgba(255, 255, 255, 0.2); |
||||
|
position: absolute; |
||||
|
bottom: 76px; |
||||
|
right: 10px; |
||||
|
border-radius: 60px; |
||||
|
padding-top: 40rpx; |
||||
|
|
||||
|
.share-box { |
||||
|
|
||||
|
>button { |
||||
|
line-height: 0 !important; |
||||
|
padding: 0; |
||||
|
outline: none; |
||||
|
background: none; |
||||
|
border: none; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
>button::after { |
||||
|
border: none; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.toolbar-box { |
||||
|
height: 60px; |
||||
|
text-align: center; |
||||
|
margin-bottom: 40rpx; |
||||
|
|
||||
|
text { |
||||
|
display: block; |
||||
|
text-align: center; |
||||
|
line-height: 60rpx; |
||||
|
font-size: 12px; |
||||
|
} |
||||
|
|
||||
|
image { |
||||
|
width: 50rpx; |
||||
|
height: 50rpx; |
||||
|
margin: 0 auto; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.toolbar-box:first-child { |
||||
|
line-height: 40rpx; |
||||
|
height: 40rpx; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 9.0 KiB |