代码提交
This commit is contained in:
147
hooks/useShare.js
Normal file
147
hooks/useShare.js
Normal file
@ -0,0 +1,147 @@
|
||||
/**
|
||||
* @name: useShare
|
||||
* @author: kahu4
|
||||
* @date: 2023-11-10 09:45
|
||||
* @description:useShare
|
||||
* @update: 2023-11-10 09:45
|
||||
* */
|
||||
import { ref, unref } from "vue";
|
||||
import { PARAMS_KEY, useRouter } from "@/hooks/useRouter";
|
||||
import { VUE_SHARE_TITLE } from "@/config";
|
||||
|
||||
// 分享页面
|
||||
export const SharePathMap = {
|
||||
GOODS_DETAIL:'/pages/goodsDetail/goodsDetail'
|
||||
}
|
||||
|
||||
export function useShare(url='pages/share/index'){
|
||||
const shareInfo = ref({
|
||||
title: VUE_SHARE_TITLE,
|
||||
path: 'pages/share/index',
|
||||
imageUrl: ''
|
||||
})
|
||||
const shareUrl = ref(url)
|
||||
|
||||
/**
|
||||
* 设置路径
|
||||
* @param packageParameter
|
||||
*/
|
||||
const handleSetShareData = (packageParameter) => {
|
||||
//views/dynamic/detail/index
|
||||
shareInfo.value.path = `/pages/share/index?${packageParameter}`
|
||||
}
|
||||
|
||||
const shareAppMessage = ()=>Promise.resolve({
|
||||
title: shareInfo.value.title,
|
||||
path: shareInfo.value.path,
|
||||
imageUrl: shareInfo.value.imageUrl
|
||||
})
|
||||
|
||||
const shareTimeline = ()=>({
|
||||
title: shareInfo.value.title,
|
||||
path: shareInfo.value.path,
|
||||
imageUrl: shareInfo.value.imageUrl
|
||||
})
|
||||
|
||||
/**
|
||||
* 封装参数
|
||||
* @param data
|
||||
*/
|
||||
const packageParameter = (data)=>{
|
||||
const shareData = {
|
||||
url,
|
||||
data
|
||||
}
|
||||
shareData.url = shareUrl.value
|
||||
return `${PARAMS_KEY}=${encodeURIComponent(JSON.stringify(shareData))}`
|
||||
}
|
||||
|
||||
/**
|
||||
* 默认分享
|
||||
*/
|
||||
const defaultShare = ()=>{
|
||||
unref(shareInfo).title = VUE_SHARE_TITLE
|
||||
unref(shareInfo).imageUrl = ''
|
||||
handleSetShareData(packageParameter({
|
||||
url:'/pages/index/index',
|
||||
data:{}
|
||||
}))
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品分享
|
||||
* @param goods
|
||||
*/
|
||||
const goodsDetailShare = (goods)=>{
|
||||
unref(shareInfo).title = goods.storeName
|
||||
unref(shareInfo).imageUrl = goods.image
|
||||
handleSetShareData(packageParameter({
|
||||
id:goods.id
|
||||
}))
|
||||
}
|
||||
|
||||
return {
|
||||
shareUrl,
|
||||
shareInfo,
|
||||
handleSetShareData,
|
||||
shareAppMessage,
|
||||
shareTimeline,
|
||||
packageParameter,
|
||||
defaultShare,
|
||||
goodsDetailShare,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
export const useShareInner = () => {
|
||||
|
||||
const {push, getParams, pushToTab} = useRouter()
|
||||
|
||||
const params = ref({
|
||||
data: undefined, url: ""
|
||||
})
|
||||
|
||||
/**
|
||||
* 处理share参数
|
||||
* @param options
|
||||
*/
|
||||
async function analysisParams(options) {
|
||||
params.value = getParams(options);
|
||||
await analysisParameter()
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析参数
|
||||
*/
|
||||
async function analysisParameter() {
|
||||
switch (unref(params).url) {
|
||||
case SharePathMap.GOODS_DETAIL:
|
||||
toSkip()
|
||||
break;
|
||||
default:
|
||||
pushToTab({url: '/pages/index/index'})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 跳转
|
||||
*/
|
||||
function toSkip() {
|
||||
if (unref(params).url) {
|
||||
push({
|
||||
url: unref(params).url,
|
||||
}, {
|
||||
data: unref(params).data,
|
||||
type: 'redirectTo'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
params,
|
||||
analysisParams
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user