广告点击添加
This commit is contained in:
@@ -1,3 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="37" viewBox="0 0 36 37" fill="none">
|
||||
<path d="M18.1694 29.1902C18.3511 29.1902 18.5361 29.1792 18.7221 29.1571C20.5066 28.9439 22.022 27.7025 22.5813 25.9916C22.6234 25.8635 22.5625 25.7266 22.4395 25.6703C22.3177 25.6139 22.1704 25.6625 22.1017 25.7774C22.0951 25.7884 21.3861 26.9283 18.6258 27.2994C18.2126 27.3546 17.8105 27.3833 17.4295 27.3833C15.4955 27.3822 14.6337 26.6566 14.6259 26.6499C14.5285 26.5638 14.38 26.5616 14.2803 26.6455C14.1796 26.7295 14.1563 26.8752 14.2249 26.9868C15.0668 28.3453 16.5777 29.1902 18.1694 29.1902ZM33.0114 12.1636C32.987 12.1636 32.9648 12.168 32.9416 12.168C31.3243 5.19877 25.1445 0 17.7352 0C10.1221 0 3.80052 5.48596 2.39925 12.7434C1.03681 12.9875 0 14.1793 0 15.6206V21.3893C0 23.0063 1.30266 24.3173 2.91102 24.3173C3.81823 24.3173 4.61909 23.891 5.15188 23.236C6.43896 26.6244 9.05965 29.3568 12.3759 30.7982C12.3839 30.781 12.4467 30.6596 12.5221 30.5628C12.5744 30.4956 12.6328 30.4405 12.6831 30.4405C12.7351 30.4405 12.7828 30.4593 12.8237 30.488C12.0561 29.9192 9.28356 26.9956 8.68319 22.9157C8.41956 21.1198 9.77093 19.3571 11.345 19.0655C13.8716 18.5972 16.385 18.0637 18.9116 17.6043C20.5177 17.3127 21.6155 16.4358 22.2867 14.9757C22.444 14.6343 22.6711 13.9441 22.7753 12.9489C22.8029 12.8009 22.9248 12.6872 23.081 12.6872C23.1851 12.6872 23.2737 12.7402 23.3325 12.8164L23.4022 12.7733C24.398 14.2124 26.3731 17.3989 26.6566 20.7587C26.9823 24.6001 26.8006 27.2309 23.8464 29.9225C23.8431 29.9258 23.8387 29.9302 23.8343 29.9336C23.7933 29.9777 23.7689 30.0352 23.7689 30.0981C23.7689 30.181 23.8132 30.2517 23.8775 30.2947C23.9018 30.3047 23.9262 30.3179 23.9506 30.3279C23.9705 30.3323 23.9893 30.3389 24.0093 30.3389C24.0292 30.3389 24.047 30.3323 24.0647 30.3279C24.1068 30.3058 24.1466 30.2804 24.1876 30.2583C27.1751 28.6203 29.4669 25.8846 30.5258 22.5943C30.9545 23.2283 31.6257 23.6844 32.4056 23.8435C31.155 29.505 26.0818 33.0482 19.7967 33.5861C19.4201 32.6561 18.4929 31.9956 17.4041 31.9956C15.9818 31.9956 14.8287 33.1167 14.8287 34.4984C14.8287 35.8801 15.9818 37 17.4041 37C18.5506 37 19.5109 36.2666 19.8444 35.2594C27.1196 34.6707 32.9516 30.3665 34.169 23.6789C35.2446 23.2316 36 22.1812 36 20.9553V15.1181C35.9999 13.4868 34.6618 12.1636 33.0114 12.1636ZM30.3274 13.8402C28.43 8.72428 23.5129 5.06956 17.7286 5.06956C11.9686 5.06956 7.0693 8.69335 5.1541 13.7761C5.05885 13.6601 4.94696 13.5608 4.83729 13.4603C5.9217 7.26634 11.2774 2.55686 17.7352 2.55686C24.162 2.55686 29.5011 7.21994 30.621 13.3708C30.5102 13.5188 30.4083 13.6735 30.3274 13.8402ZM12.3762 30.7983C12.3761 30.7983 12.376 30.7983 12.3759 30.7982C12.3747 30.8009 12.3746 30.8012 12.3762 30.7983Z" fill="white"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 5.8 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 682 B |
@@ -28,7 +28,8 @@ const props = withDefaults(
|
||||
list: Types.App.AdsInfoListItem[];
|
||||
height?: string;
|
||||
isShowIndicators?: boolean;
|
||||
clickType?: 'ads' | 'recreation';
|
||||
/** ads:广告位广告,点击上报;recreation:娱乐模块;none:非广告内容(如案例图),不上报 */
|
||||
clickType?: 'ads' | 'recreation' | 'none';
|
||||
autoplay?: number;
|
||||
/** 为 true 时仅挂载当前/相邻项,减轻首屏 DecryptImg 与解密压力 */
|
||||
lazyRender?: boolean;
|
||||
@@ -46,8 +47,8 @@ const props = withDefaults(
|
||||
const load = () => {
|
||||
emit('load');
|
||||
};
|
||||
const handleJumpAdv = (item: Types.App.AdsInfoListItem, clickType?: 'ads' | 'recreation') => {
|
||||
jumpAdv(item, clickType);
|
||||
const handleJumpAdv = (item: Types.App.AdsInfoListItem, clickType?: 'ads' | 'recreation' | 'none') => {
|
||||
jumpAdv(item, clickType === 'none' ? undefined : clickType);
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@@ -40,8 +40,7 @@
|
||||
</div>
|
||||
<Loading v-else class="coinVideoPayPopup__loading" />
|
||||
<div class="coinVideoPayPopup__tips">
|
||||
*如提示【交易失败】【账户风险】等,可重新发起订单,或在15分钟后重试支付。如支付未到账,请
|
||||
<span @click.stop="goCustomerService">反馈客服订单号</span>
|
||||
*如提示【交易失败】【账户风险】等,可重新发起订单,或在15分钟后重试支付。
|
||||
</div>
|
||||
</div>
|
||||
<div class="coinVideoPayPopup__footer">
|
||||
@@ -52,10 +51,6 @@
|
||||
>
|
||||
{{ payBtnText }}
|
||||
</div>
|
||||
<div class="coinVideoPayPopup__service">
|
||||
支付问题反馈,点击联系
|
||||
<span @click.stop="goCustomerService">在线客服</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</van-popup>
|
||||
@@ -291,11 +286,6 @@ const goTransactionRecord = () => {
|
||||
router.push('/transactionRecord');
|
||||
};
|
||||
|
||||
const goCustomerService = () => {
|
||||
emitClose();
|
||||
router.push('/customerService');
|
||||
};
|
||||
|
||||
const onPopupClosed = () => {
|
||||
state.showRecharge = false;
|
||||
};
|
||||
@@ -508,14 +498,4 @@ watch(
|
||||
opacity: 0.45;
|
||||
pointer-events: none;
|
||||
}
|
||||
.coinVideoPayPopup__service {
|
||||
margin-top: 12px;
|
||||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
text-align: center;
|
||||
color: #dcdcdc;
|
||||
span {
|
||||
color: #ffd460;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -25,7 +25,7 @@ const state = reactive({
|
||||
advList: <any>(getAdItem(props.advType) || []), // 广告数据
|
||||
});
|
||||
const handleJumpAdv = (item: Types.App.AdsInfoListItem) => {
|
||||
jumpAdv(item);
|
||||
jumpAdv(item, 'ads');
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
|
||||
@@ -20,7 +20,7 @@ withDefaults(
|
||||
},
|
||||
);
|
||||
const handleJumpAdv = (item: Types.App.AdsInfoListItem) => {
|
||||
jumpAdv(item);
|
||||
jumpAdv(item, 'ads');
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
|
||||
@@ -119,7 +119,7 @@ function close() {
|
||||
}
|
||||
function jumpUrl() {
|
||||
if (state.isClose) return (state.isClose = false);
|
||||
jumpAdv(state.advObj);
|
||||
jumpAdv(state.advObj, 'ads');
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@@ -54,7 +54,7 @@ const init = () => {
|
||||
};
|
||||
init();
|
||||
const handleJumpAdv = (item: Types.App.AdsInfoListItem) => {
|
||||
jumpAdv(item);
|
||||
jumpAdv(item, 'ads');
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
|
||||
@@ -13,8 +13,6 @@
|
||||
/>
|
||||
<!-- 系统公告 -->
|
||||
<!-- <SystemAnnouncement /> -->
|
||||
<!-- 九宫格广告 -->
|
||||
<NineGridPopup v-if="activeLayerKey === 'nineGrid'" :is-open="true" @close="closeNineGridPopup" />
|
||||
<!-- 浮窗广告 -->
|
||||
<!-- <FloatingBlock :show-close="false" :is-home="true" /> -->
|
||||
<!-- 预售浮窗 -->
|
||||
@@ -31,7 +29,7 @@
|
||||
<!-- 首页付费分层弹窗 -->
|
||||
<HomepagePaymentPopup v-if="activeLayerKey === 'paymentHome'" @close="closePaymentHomePopup" />
|
||||
<!-- 轮播浮窗(不参与弹窗顺序队列) -->
|
||||
<SwipeFloat v-if="!activeLayerKey" />
|
||||
<SwipeFloat v-if="!activeLayerKey && !nineGridPopupVisible" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
@@ -43,6 +41,7 @@ import { getAdItem } from '@/utils/getConfig';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { judgeTime } from '@/utils/index';
|
||||
import { isPaymentPlayPageStatus, resolvePaymentConfigImg } from '@/utils/paymentStatusPopup';
|
||||
import { nineGridPopupVisible } from '@/utils/nineGridPopup';
|
||||
import SwipeFloat from './swipeFloat.vue';
|
||||
|
||||
const HomepagePaymentPopup = defineAsyncComponent(() => import('@/components/HomepagePaymentPopup/index.vue'));
|
||||
@@ -60,8 +59,6 @@ const state = reactive({
|
||||
advList: <Array<Types.App.AdsInfoListItem>>[], // 弹窗广告数据
|
||||
isShowAnnouncementPopup: !globalStore.announcementFirst, // app公告
|
||||
announList: <Array<Types.App.AnnounListItem>>[], //公告数据
|
||||
isShowNineGridPopup: !globalStore.nineGridFirst, // 九宫格广告
|
||||
nineGridList: <Array<Types.App.AdsInfoListItem>>[], // 九宫格广告数据
|
||||
isShowPersalePopup: !globalStore.presaleFirst, //预售弹框
|
||||
isHasPresale: false, //是否开启预售活动
|
||||
isShowPayPersalePopup: !globalStore.payPresaleFirst, //支付预售尾款弹框
|
||||
@@ -77,7 +74,14 @@ const state = reactive({
|
||||
homeTabActive: 1,
|
||||
});
|
||||
|
||||
type ModalLayerKey = 'nineGrid' | 'homeAdv' | 'announcement' | 'jointGame' | 'payPresale' | 'persale' | 'shopIosLink' | 'paymentHome';
|
||||
type ModalLayerKey =
|
||||
| 'homeAdv'
|
||||
| 'announcement'
|
||||
| 'jointGame'
|
||||
| 'payPresale'
|
||||
| 'persale'
|
||||
| 'shopIosLink'
|
||||
| 'paymentHome';
|
||||
|
||||
const shouldShowPaymentHomePopup = computed(() => {
|
||||
if (!isPaymentPlayPageStatus(configStore.appConfig?.paymentStatusPopup)) return false;
|
||||
@@ -87,8 +91,6 @@ const shouldShowPaymentHomePopup = computed(() => {
|
||||
const isModalLayerReady = (key: ModalLayerKey): boolean => {
|
||||
const advancePage = configStore.appConfig.advancePage;
|
||||
switch (key) {
|
||||
case 'nineGrid':
|
||||
return state.isShowNineGridPopup && state.nineGridList.length > 0;
|
||||
case 'homeAdv':
|
||||
return state.isShowAdvPopup && state.advList.length > 0;
|
||||
case 'announcement':
|
||||
@@ -108,8 +110,8 @@ const isModalLayerReady = (key: ModalLayerKey): boolean => {
|
||||
}
|
||||
};
|
||||
|
||||
// 九宫格应用广告不在这里:它挂在 MainView 跟着启动落地页弹,本队列等它关闭后再开始
|
||||
const modalLayerQueue: { key: ModalLayerKey }[] = [
|
||||
{ key: 'nineGrid' },
|
||||
{ key: 'homeAdv' },
|
||||
{ key: 'announcement' },
|
||||
{ key: 'jointGame' },
|
||||
@@ -120,6 +122,7 @@ const modalLayerQueue: { key: ModalLayerKey }[] = [
|
||||
];
|
||||
|
||||
const activeLayerKey = computed(() => {
|
||||
if (nineGridPopupVisible.value) return '';
|
||||
return modalLayerQueue.find((item) => isModalLayerReady(item.key))?.key || '';
|
||||
});
|
||||
|
||||
@@ -127,18 +130,15 @@ const activeLayerKey = computed(() => {
|
||||
const emit = defineEmits(['queue-busy']);
|
||||
|
||||
watch(
|
||||
activeLayerKey,
|
||||
(key) => {
|
||||
emit('queue-busy', !!key);
|
||||
() => !!activeLayerKey.value || nineGridPopupVisible.value,
|
||||
(busy) => {
|
||||
emit('queue-busy', busy);
|
||||
},
|
||||
{ immediate: true },
|
||||
);
|
||||
|
||||
/** 无配置时清掉展示标记,避免占队列位置 */
|
||||
const skipUnconfiguredLayers = () => {
|
||||
if (state.nineGridList.length === 0) {
|
||||
state.isShowNineGridPopup = false;
|
||||
}
|
||||
if (state.advList.length === 0) {
|
||||
state.isShowAdvPopup = false;
|
||||
}
|
||||
@@ -180,10 +180,6 @@ const init = () => {
|
||||
globalStore.setPayPresaleFirst();
|
||||
}
|
||||
}
|
||||
state.nineGridList = getAdItem(AdType.QualityApplication) || [];
|
||||
if (state.nineGridList.length > 0) {
|
||||
globalStore.setNineGridFirst();
|
||||
}
|
||||
// 游戏活动弹框
|
||||
if (data && data.gameActivityPopUp) {
|
||||
state.isHaveGameActive = true;
|
||||
@@ -238,9 +234,6 @@ const closeHomePopupAdv = () => {
|
||||
const closeAnnouncementPopup = () => {
|
||||
state.isShowAnnouncementPopup = false;
|
||||
};
|
||||
const closeNineGridPopup = () => {
|
||||
state.isShowNineGridPopup = false;
|
||||
};
|
||||
const closePaymentHomePopup = () => {
|
||||
state.isShowPaymentHomePopup = false;
|
||||
};
|
||||
|
||||
@@ -123,7 +123,7 @@ const init = () => {
|
||||
};
|
||||
init();
|
||||
const handleJumpAdv = (item: Types.App.AdsInfoListItem) => {
|
||||
jumpAdv(item);
|
||||
jumpAdv(item, 'ads');
|
||||
};
|
||||
const onTouchMove = () => {
|
||||
isStopAnimation.value = true;
|
||||
|
||||
@@ -41,7 +41,7 @@ const currentAds = computed(() => {
|
||||
return state.advList.slice(currentIndex.value, currentIndex.value + 2);
|
||||
});
|
||||
const handleJumpAdv = (item: Types.App.AdsInfoListItem) => {
|
||||
jumpAdv(item);
|
||||
jumpAdv(item, 'ads');
|
||||
};
|
||||
const close = () => {
|
||||
currentIndex.value += 2;
|
||||
|
||||
@@ -57,7 +57,7 @@ const openVideo = () => {
|
||||
return;
|
||||
}
|
||||
if (state.videoInfo.type) {
|
||||
jumpAdv(state.videoInfo);
|
||||
jumpAdv(state.videoInfo, 'ads');
|
||||
return;
|
||||
}
|
||||
if (state.videoInfo.newsType == 'SEED_LINK') {
|
||||
|
||||
@@ -180,7 +180,7 @@ const openVideo = () => {
|
||||
// 必须读 props:列表刷新后组件可能复用,禁止缓存 setup 时的 videoInfo
|
||||
const videoInfo = props.videoInfo;
|
||||
if (videoInfo.type) {
|
||||
jumpAdv(videoInfo);
|
||||
jumpAdv(videoInfo, 'ads');
|
||||
return;
|
||||
}
|
||||
// 点击的暗网视频,需要权限
|
||||
|
||||
@@ -92,7 +92,7 @@ const jumpPage = (videoInfo: any) => {
|
||||
return;
|
||||
}
|
||||
if (videoInfo.type) {
|
||||
jumpAdv(videoInfo);
|
||||
jumpAdv(videoInfo, 'ads');
|
||||
return;
|
||||
}
|
||||
if (videoInfo.newsType == 'COVER') {
|
||||
|
||||
@@ -39,7 +39,7 @@ const appList = ref<Types.App.AdsInfoListItem[]>([]);
|
||||
appList.value = getAdItem(AdType.QualityApplication) || [];
|
||||
// const topList = getAdItem(AdType.TopAdvsList);
|
||||
const handleJumpAdv = (item: Types.App.AdsInfoListItem) => {
|
||||
jumpAdv(item);
|
||||
jumpAdv(item, 'ads');
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@@ -52,10 +52,8 @@ const handleJumpAdv = (item: Types.App.AdsInfoListItem) => {
|
||||
height: 104px !important;
|
||||
}
|
||||
}
|
||||
// 根节点不占位:挂在 MainView 里与 TabBar 同级,撑高会顶出额外滚动;居中由 fixed 的 van-overlay 定位
|
||||
.nineGridPopup {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
.wrapper {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
<div>ID {{ userStore.userInfo.uid }}</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<div class="invit_quantity">提示*可通过官方客服找回账号</div>
|
||||
<div class="qr_code_bg">
|
||||
<div class="code_box flex-center-center">
|
||||
<qrcode-vue id="qrCode" class="code_img" v-if="state.qrUrl" :value="state.qrUrl" level="M" />
|
||||
@@ -81,10 +80,6 @@ nextTick(async () => {
|
||||
height: 1px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
.invit_quantity {
|
||||
font-size: 15px;
|
||||
color: #f68804;
|
||||
}
|
||||
|
||||
.qr_code_bg {
|
||||
height: 120px;
|
||||
|
||||
@@ -72,10 +72,6 @@
|
||||
<div class="payTip">1.因超时支付无法到账,请重新发起。</div>
|
||||
<div class="payTip">2.每天发起支付不能超过5次,连续发起且未支付,账号可能被加入黑名单。</div>
|
||||
<div class="payBtn" @click="toPay">¥{{ state.discountedPrice }}/{{ payBtnLabel }}</div>
|
||||
<div class="customerService">
|
||||
支付中如有问题,请咨询
|
||||
<router-link class="contactCustomer" to="/customerService">在线客服</router-link>
|
||||
</div>
|
||||
</div>
|
||||
</van-popup>
|
||||
|
||||
@@ -84,7 +80,7 @@
|
||||
<div class="kindTipsBox">
|
||||
<div class="title flex-center-center">温馨提示</div>
|
||||
<div class="contents">
|
||||
<p>1.订单支付后,一般会在1-10分钟内到账,如超时未到账,请联系在线客服为您处理。</p>
|
||||
<p>1.订单支付后,一般会在1-10分钟内到账。</p>
|
||||
<p>2.受特殊行业限制,如支付失败可尝试重新发起订单,系统将会随机切换备用的支付通道。</p>
|
||||
<p>3.本APP有稳定的广告收益,产品稳定安全,请放心充值使用,如遇报毒提示忽略即可。</p>
|
||||
</div>
|
||||
@@ -100,7 +96,7 @@
|
||||
<van-popup class="payTipPop" v-model:show="state.showPayTip">
|
||||
<div class="payTipBox">
|
||||
<div class="paySubTitle">支付确认</div>
|
||||
<div class="tipItem">1.订单支付后,一般会在3-5分钟内到账,如超时未到账,请联系在线客服为您处理。</div>
|
||||
<div class="tipItem">1.订单支付后,一般会在3-5分钟内到账。</div>
|
||||
<div class="tipItem">2.受特殊行业限制,如支付失败可尝试重新发起订单,系统将会随机切换备用的支付通道。</div>
|
||||
<div class="tipItem">3.本APP有稳定的广告收益,产品稳定安全,请放心充值使用。</div>
|
||||
<div class="question flex-center-center" @click="$router.push('paymentIssues')">
|
||||
@@ -645,14 +641,6 @@ defineExpose({
|
||||
border-radius: 3px;
|
||||
margin: 20px auto;
|
||||
}
|
||||
.customerService {
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
padding-bottom: 30px;
|
||||
.contactCustomer {
|
||||
color: #ffd460;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
:deep(.van-popup) {
|
||||
|
||||
@@ -148,9 +148,6 @@ function jumpKeywords(type: any, id: any) {
|
||||
case '9':
|
||||
item.href = 'yinseinner://announcement';
|
||||
break;
|
||||
case '10':
|
||||
item.href = 'yinseinner://kefu';
|
||||
break;
|
||||
case '11':
|
||||
item.href = `yinseinner://horizontalVideo?id=${id}`;
|
||||
break;
|
||||
|
||||
@@ -144,9 +144,6 @@ function jumpKeywords(type: any, id: any) {
|
||||
case '9':
|
||||
item.href = 'yinseinner://announcement';
|
||||
break;
|
||||
case '10':
|
||||
item.href = 'yinseinner://kefu';
|
||||
break;
|
||||
case '11':
|
||||
item.href = `yinseinner://horizontalVideo?id=${id}`;
|
||||
break;
|
||||
|
||||
@@ -210,10 +210,6 @@
|
||||
</template>
|
||||
</template>
|
||||
<div class="btn" v-else @click.stop="showPay">{{ payBtnText }}</div>
|
||||
<div class="customerService">
|
||||
支付问题反馈,点击联系
|
||||
<span @click.stop="$router.push('customerService')">在线客服</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <Loading v-else :loading="state.loading" /> -->
|
||||
@@ -1256,17 +1252,6 @@ onUnmounted(() => {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
.customerService {
|
||||
margin-top: 12px;
|
||||
font-size: 11px;
|
||||
line-height: 16px;
|
||||
text-align: center;
|
||||
color: rgba(220, 220, 220, 1);
|
||||
|
||||
span {
|
||||
color: rgba(255, 212, 96, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
+1
-2
@@ -126,14 +126,13 @@ router.beforeEach(async (to, from, next) => {
|
||||
}
|
||||
/**
|
||||
* 短剧播放页缓存(单实例,不按剧 id 区分 key):
|
||||
* - 仅当从播放页内跳出的二级页(客服 / 余额明细 / 评论跳的用户主页、图片预览、影片详情)
|
||||
* - 仅当从播放页内跳出的二级页(余额明细 / 评论跳的用户主页、图片预览、影片详情)
|
||||
* 返回时保留缓存,恢复剧集与播放进度;
|
||||
* - 其余入口(列表选剧 / 广告 / 深链等)一律清缓存重挂载,避免恢复出上一部剧;
|
||||
* - 回到 Tab / 列表页即销毁,避免播放器实例驻留内存。
|
||||
*/
|
||||
const dramaPlaySecondary = [
|
||||
'/transactionRecord',
|
||||
'/customerService',
|
||||
'/userInfo',
|
||||
'/picturePreview',
|
||||
'/movieDetails',
|
||||
|
||||
@@ -488,15 +488,6 @@ const mineCollection: RouteRecordRaw[] = [
|
||||
pageName: '精品应用',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: '/customerService', //我的客服
|
||||
name: 'customerService',
|
||||
component: () => import('@/views/lldmine/customerService/index.vue'),
|
||||
meta: {
|
||||
pageKey: 'customer_service',
|
||||
pageName: '我的客服',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: '/transactionRecord', //交易记录
|
||||
name: 'transactionRecord',
|
||||
|
||||
+4
-4
@@ -163,11 +163,11 @@ export default class AppApi {
|
||||
return request.get('/modules/announce');
|
||||
}
|
||||
/**
|
||||
* @description 广告统计
|
||||
* @param data 参数
|
||||
* @returns
|
||||
* @description 广告点击日志
|
||||
* @param id 广告 id(后端必填)
|
||||
* @param type 固定传 0(普通广告)
|
||||
*/
|
||||
static clickAdv(data: any) {
|
||||
static clickAdv(data: { id: string; type: number }) {
|
||||
return request.post('/ads/click', data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,13 +85,6 @@ export default class UserApi {
|
||||
return request.get('/code/userRecord', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取客服链接接口
|
||||
*/
|
||||
static queryCustomerServiceUrl() {
|
||||
return request.get('/customer/url');
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 意见反馈
|
||||
*/
|
||||
|
||||
+14
-1
@@ -3,6 +3,7 @@ import moment from 'moment';
|
||||
import router from '@/router/index';
|
||||
import type { HistoryVideoType } from '../enums/app';
|
||||
import HomeApi from '@/service/home';
|
||||
import AppApi from '@/service/app';
|
||||
import MineApi from '@/service/mine';
|
||||
import { useGlobalStore } from '@/stores/global';
|
||||
import {
|
||||
@@ -342,7 +343,6 @@ export function innerJump(url: string, options: JumpAdvOptions = {}) {
|
||||
science: '/aiUndress', //AI科技
|
||||
live_streaming: '/shortVideo?type=0', // 直播
|
||||
|
||||
kefu: '/customerService', //在线客服
|
||||
community_page: '/community', //跳转社区
|
||||
publish_page: '/publishGraphics', //跳转发布
|
||||
binding_page: '/bindingPhone', //跳转绑定手机号
|
||||
@@ -478,9 +478,19 @@ function hasInnerQueryParam(url: string) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 广告点击日志:id 为空不报;上报失败不影响跳转
|
||||
*/
|
||||
export function reportAdClick(id?: string | number) {
|
||||
if (id === undefined || id === null || id === '') return;
|
||||
AppApi.clickAdv({ id: String(id), type: 0 }).catch((e) => console.log(e));
|
||||
}
|
||||
|
||||
/**
|
||||
* 跳转广告
|
||||
* @param {*} item 广告信息
|
||||
* @param clickTypeOrOptions 'ads':广告位广告,点击上报 /ads/click;'recreation':娱乐模块广告;
|
||||
* 公告、跑马灯、文字内链等非广告跳转不传
|
||||
*/
|
||||
export async function jumpAdv(
|
||||
item: any,
|
||||
@@ -492,6 +502,9 @@ export async function jumpAdv(
|
||||
typeof clickTypeOrOptions === 'object' && clickTypeOrOptions
|
||||
? clickTypeOrOptions
|
||||
: maybeOptions || {};
|
||||
if (clickType === 'ads') {
|
||||
reportAdClick(item?.id);
|
||||
}
|
||||
const url = item.href || item.link || item.url || item.link_url || item.linkUrl;
|
||||
if (!url) return;
|
||||
try {
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
import { ref } from 'vue';
|
||||
|
||||
/**
|
||||
* 九宫格应用广告弹窗是否正在展示。
|
||||
* 弹窗挂在 MainView,跟着启动落地页弹(默认落在短视频 tab,不依赖首页被挂载);
|
||||
* 首页 HomeAdv 弹窗队列须等它关闭后再接着弹,避免叠在一起。
|
||||
*/
|
||||
export const nineGridPopupVisible = ref(false);
|
||||
@@ -18,6 +18,8 @@
|
||||
:scene="vipContentGuideScene"
|
||||
@close="closeVipContentGuide"
|
||||
/>
|
||||
<!-- 九宫格应用广告:启动后不管落在哪个 tab 都弹,每次启动只弹一次 -->
|
||||
<NineGridPopup v-if="nineGridPopupVisible" :is-open="true" @close="nineGridPopupVisible = false" />
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts">
|
||||
@@ -31,11 +33,20 @@ import { useConfigStore } from '@/stores/config';
|
||||
import { computed } from 'vue';
|
||||
import { useRoute } from 'vue-router';
|
||||
import PaymentGuidePopup from '@/components/PaymentGuidePopup/index.vue';
|
||||
import NineGridPopup from '@/components/NineGridPopup/index.vue';
|
||||
import { useVipContentUpdateGuideOnMainTabs } from '@/hooks/useVipContentUpdateGuideOnMainTabs';
|
||||
import { AdType } from '@/enums/app';
|
||||
import { getAdItem } from '@/utils/getConfig';
|
||||
import { nineGridPopupVisible } from '@/utils/nineGridPopup';
|
||||
|
||||
const route = useRoute();
|
||||
const globalStore = useGlobalStore();
|
||||
const configStore = useConfigStore();
|
||||
|
||||
if (!globalStore.nineGridFirst && (getAdItem(AdType.QualityApplication) || []).length > 0) {
|
||||
globalStore.setNineGridFirst();
|
||||
nineGridPopupVisible.value = true;
|
||||
}
|
||||
const {
|
||||
visible: vipContentGuideVisible,
|
||||
guide: vipContentGuide,
|
||||
|
||||
@@ -162,7 +162,7 @@ const getFirstLoginTime = () => {
|
||||
};
|
||||
|
||||
const toAdv = (item: any) => {
|
||||
jumpAdv(item);
|
||||
jumpAdv(item, 'ads');
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div v-if="props.list" class="fiveGrid">
|
||||
<div class="rectAdvBox" @click="jumpAdv(item)" v-for="item in props.list" :key="item.id">
|
||||
<div class="rectAdvBox" @click="jumpAdv(item, 'ads')" v-for="item in props.list" :key="item.id">
|
||||
<lazyImg class="rectAdvIcon" :src="item.cover" />
|
||||
<div class="rectName ellipsis">{{ item.title }}</div>
|
||||
</div>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
class="advImg"
|
||||
:src="state.advsList[index % state.advsList.length].cover"
|
||||
:key="state.advsList[index % state.advsList.length].cover"
|
||||
@click="jumpAdv(state.advsList[index % state.advsList.length])"
|
||||
@click="jumpAdv(state.advsList[index % state.advsList.length], 'ads')"
|
||||
/>
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
@@ -323,27 +323,6 @@
|
||||
<!-- <div class="submit-box">-->
|
||||
<!-- <div class="submit flex-center-center" @click="$router.push('/memberExchange')">前往积分兑换</div>-->
|
||||
<!-- </div>-->
|
||||
<Teleport to="body">
|
||||
<van-popup v-model:show="showDialog">
|
||||
<div class="warp_taskHall">
|
||||
<div class="content_warp">
|
||||
<div class="contents">
|
||||
<p class="title">温馨提示</p>
|
||||
<div class="line"></div>
|
||||
<div class="desc">
|
||||
实物奖品请联系在线客服领取
|
||||
<br />
|
||||
填写收货地址等
|
||||
</div>
|
||||
<div class="btn themes_btn_bg flex-center-center" @click="handleContact">联系客服</div>
|
||||
</div>
|
||||
<div class="close" @click="close">
|
||||
<SvgIcon name="new_close" class="closeIcon" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</van-popup>
|
||||
</Teleport>
|
||||
<WorkSignPopup
|
||||
v-model:show="showSignPopup"
|
||||
:checked-days="checkedDays"
|
||||
@@ -414,7 +393,6 @@ setTimeout(() => {
|
||||
const { openLoading, closeLoading } = useLoading();
|
||||
const router = useRouter();
|
||||
const userStore = useUserStore();
|
||||
const showDialog = ref(false);
|
||||
const prizeList = ref<any[]>([]);
|
||||
const bigPrizeList = ref<any[]>([]);
|
||||
const allMsgObj = ref<any>({});
|
||||
@@ -435,7 +413,6 @@ const state = reactive({
|
||||
growTasks: <any>[],
|
||||
onceTask: <any>[],
|
||||
integralList: <any>[],
|
||||
nowData: <any>{},
|
||||
tabActive: 0,
|
||||
signExtraPrizesList: <any>[],
|
||||
freeCount: 0,
|
||||
@@ -709,14 +686,10 @@ const exchangeItem = async (data: any) => {
|
||||
let req = {
|
||||
id: data.id,
|
||||
};
|
||||
await exchange(req, data);
|
||||
// if (data.type == 5) {
|
||||
// showDialog.value = true;
|
||||
// state.nowData = data;
|
||||
// }
|
||||
await exchange(req);
|
||||
};
|
||||
|
||||
const exchange = async (item: any, data: any) => {
|
||||
const exchange = async (item: any) => {
|
||||
try {
|
||||
let req = item;
|
||||
const res: any = await HomeApi.exchangeIntegral(req);
|
||||
@@ -728,22 +701,11 @@ const exchange = async (item: any, data: any) => {
|
||||
// } else {
|
||||
showToast(res?.msg || '兑换成功');
|
||||
// }
|
||||
if (data && data.type == 5) {
|
||||
showDialog.value = true;
|
||||
state.nowData = data;
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
};
|
||||
|
||||
const close = () => {
|
||||
showDialog.value = false;
|
||||
};
|
||||
const handleContact = () => {
|
||||
showDialog.value = false;
|
||||
router.push('/customerService');
|
||||
};
|
||||
const getSignExtraPrizesList = async () => {
|
||||
try {
|
||||
let req: any = await HomeApi.getSignExtraPrizesList();
|
||||
@@ -1891,76 +1853,6 @@ onUnmounted(() => {
|
||||
}
|
||||
}
|
||||
}
|
||||
.warp_taskHall {
|
||||
.content_warp {
|
||||
width: 311px;
|
||||
border-radius: 12px;
|
||||
// background: linear-gradient(180deg, #222 0%, #1e1e1e 100%);
|
||||
background: rgba(255, 255, 255, 1);
|
||||
.contents {
|
||||
font-size: 12px;
|
||||
padding: 32px 24px 24px 24px;
|
||||
box-sizing: border-box;
|
||||
.title {
|
||||
font-size: 20px;
|
||||
text-align: center;
|
||||
box-sizing: border-box;
|
||||
font-weight: 550;
|
||||
color: rgba(0, 0, 0, 0.9);
|
||||
line-height: 28px;
|
||||
}
|
||||
.line {
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
margin: 12px 0 0;
|
||||
position: relative;
|
||||
}
|
||||
.desc {
|
||||
font-size: 16px;
|
||||
color: rgba(0, 0, 0, 0.55);
|
||||
margin-bottom: 10px;
|
||||
line-height: 44px;
|
||||
text-align: center;
|
||||
}
|
||||
.titleText {
|
||||
margin: 0 0 20px 0;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
border-radius: 5px;
|
||||
color: #999;
|
||||
padding: 8px 12px;
|
||||
:deep(.van-field__control) {
|
||||
color: rgba(0, 0, 0, 0.9);
|
||||
overflow: hidden;
|
||||
}
|
||||
::placeholder {
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
}
|
||||
:deep(.van-cell::after) {
|
||||
border-bottom: solid 1px transparent !important;
|
||||
}
|
||||
.btn {
|
||||
width: 264px;
|
||||
height: 44px;
|
||||
border-radius: 22px;
|
||||
font-size: 16px;
|
||||
margin: 0 auto 0;
|
||||
background: #e1351f;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
.close {
|
||||
position: absolute;
|
||||
right: 15px;
|
||||
top: 15px;
|
||||
svg {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.progress-icon.shake {
|
||||
animation: icon-shake 0.72s ease-in-out infinite;
|
||||
|
||||
@@ -131,7 +131,7 @@ const openVideo = (videoInfo: any) => {
|
||||
return;
|
||||
}
|
||||
if (videoInfo.type) {
|
||||
jumpAdv(videoInfo);
|
||||
jumpAdv(videoInfo, 'ads');
|
||||
return;
|
||||
}
|
||||
if (videoInfo.newsType == 'COVER') {
|
||||
|
||||
@@ -35,10 +35,6 @@
|
||||
<p>3.充值成功后会在1~5分钟内到账,可重新刷新进入当前页面</p>
|
||||
</div>
|
||||
<div class="btn" @click="exchange">{{ currentItem.price }}金豆/立即支付</div>
|
||||
<div class="service">
|
||||
支付中如有问题 请联系
|
||||
<span @click="$router.push('/customerService')">在线客服</span>
|
||||
</div>
|
||||
</div>
|
||||
</van-popup>
|
||||
|
||||
@@ -343,16 +339,6 @@ export default {
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
}
|
||||
.service {
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
font-size: 12px;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
line-height: 18px; /* 150% */
|
||||
span {
|
||||
color: #4beaff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,8 +22,7 @@
|
||||
<p>1. 选择一张人脸清晰,不得有任何遮挡的照片上传(注意:只含一个人物和脸部,图片不能过暗)</p>
|
||||
<p>2. 选择一个心仪的视频或图片模板,点击生成,生成时间需要3-5分钟,耐心等待。(图片模板可自行上传)</p>
|
||||
<p>3. 在右上角记录查看生成进度,生成成功后可以点击进行下载,也可以在线观看。</p>
|
||||
<p>4. 按照上方操作,有问题随时联系在线客服进行处理。</p>
|
||||
<p>5. 不支持多人图片,禁止未成年人图片</p>
|
||||
<p>4. 不支持多人图片,禁止未成年人图片</p>
|
||||
</div>
|
||||
<div class="imgmess">
|
||||
<div>
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
<div class="aiImg">
|
||||
<p>案列鉴赏</p>
|
||||
<AdvSwiper class="advSwiper" :list="props.list" />
|
||||
<AdvSwiper class="advSwiper" :list="props.list" clickType="none" />
|
||||
</div>
|
||||
|
||||
<div class="bottom">
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
<template>
|
||||
<div class="customerService">
|
||||
<div class="navBar">
|
||||
<div @click="$router.go(-1)">
|
||||
<img class="leftBtn" src="@/assets/images/png/navBarIcon.png" />
|
||||
</div>
|
||||
<div class="title">在线客服</div>
|
||||
</div>
|
||||
<div class="content" v-if="state.kefuUrl">
|
||||
<iframe class="iframe" :src="state.kefuUrl" frameborder="0"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, reactive } from 'vue';
|
||||
import UserApi from '@/service/user';
|
||||
|
||||
const state = reactive({
|
||||
kefuUrl: <string>'',
|
||||
});
|
||||
|
||||
nextTick(async () => {
|
||||
let ret: any = await UserApi.queryCustomerServiceUrl();
|
||||
state.kefuUrl = ret;
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.customerService {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
.navBar {
|
||||
height: 46px;
|
||||
padding: 8px 14px;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.leftBtn {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.title {
|
||||
width: 100%;
|
||||
font-size: 16px;
|
||||
color: #ffffff;
|
||||
margin-right: 30px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.rightBtn {
|
||||
width: 79px;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
border-radius: 32px;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 100%;
|
||||
height: calc(100% - 46px);
|
||||
.iframe {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -4,13 +4,9 @@
|
||||
<div class="titles">常见问题与反馈</div>
|
||||
<div class="content overflow-y-auto">
|
||||
<div class="question" style="margin-top: 8px">为什么充值不了?</div>
|
||||
<div class="answer">
|
||||
由于网络问题,请尝试其他的充值渠道或重启app再次尝试获取充值链接,如还未解决,请联系客服。
|
||||
</div>
|
||||
<div class="answer">由于网络问题,请尝试其他的充值渠道或重启app再次尝试获取充值链接。</div>
|
||||
<div class="question">充值后没到账</div>
|
||||
<div class="answer">
|
||||
由于网络问题,请尝试其他的充值渠道或重启app再次尝试获取充值链接,如未解决,请联系客服。由于网络问题,请尝试其他的充值渠道或重启app再次尝试获取充值链接,请联系客服。
|
||||
</div>
|
||||
<div class="answer">充值成功后通常会在数分钟内到账,请刷新APP或重启后查看。</div>
|
||||
<div class="question">如何分享给好友?</div>
|
||||
<div class="answer">
|
||||
点击【我的】—【分享好友】即可进入分享界面。在分享页面点击【保存图片分享】即可保存图片到相册,要分享时选择相册图片即可;点击【复制分享链接】即可复制文字分享,分享时长按粘贴即可
|
||||
@@ -20,7 +16,7 @@
|
||||
<div class="answer">邀请好友注册后,需查看好友推广码是否有填写为你的分享码,若没有则需手动填写</div>
|
||||
|
||||
<div class="question">购买会员/金币支付失败</div>
|
||||
<div class="answer">使用支付宝支付失败时,请间隔2分钟重试,如果还是不行,可以换种支付方式或者给客服留言</div>
|
||||
<div class="answer">使用支付宝支付失败时,请间隔2分钟重试,如果还是不行,可以换种支付方式</div>
|
||||
|
||||
<div class="question">如何填写邀请码</div>
|
||||
<div class="answer">
|
||||
@@ -28,10 +24,7 @@
|
||||
</div>
|
||||
|
||||
<div class="question">忘记密码,如何找回账号</div>
|
||||
<div class="answer">请保存好个人推广码或注册账号,向客服留言反馈为你重置修改</div>
|
||||
</div>
|
||||
<div class="customerService flex-center-center" @click="$router.push('/customerService')">
|
||||
<img class="icon" src="@/assets/images/png/kflogo.png" alt="" />
|
||||
<div class="answer">请在「我的」页面-账号找回,通过账号凭证或绑定的手机号找回账号</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -63,16 +56,5 @@
|
||||
border-bottom: 1px solid #212121;
|
||||
}
|
||||
}
|
||||
.customerService {
|
||||
position: fixed;
|
||||
right: 20px;
|
||||
bottom: 100px;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
<div v-if="showMessageRedDot" class="newsTip" />
|
||||
</div>
|
||||
<div class="right">
|
||||
<!-- <img @click="jumpPage('/customerService')" src="@/assets/images/png/mine/server.png" alt="" /> -->
|
||||
<img @click="jumpPage('/setting')" src="@/assets/images/png/mine/setting.png" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -172,10 +172,6 @@
|
||||
¥{{ state.selectedItem.discountedPrice / 10 }}/{{ state.selectedItem.isUpgrade ? '补差价升级' : '立即支付' }}
|
||||
</div>
|
||||
</template>
|
||||
<div class="customerService">
|
||||
支付问题反馈,点击联系
|
||||
<span @click="$router.push('customerService')">在线客服</span>
|
||||
</div>
|
||||
</div>
|
||||
<RechargeBox ref="rechargeBoxRef" :is-open="state.isRecharge" @closePay="closePay" />
|
||||
<van-popup v-model:show="showDialog" teleport="body">
|
||||
@@ -1241,19 +1237,6 @@ onUnmounted(() => {
|
||||
width: 335px;
|
||||
}
|
||||
}
|
||||
|
||||
.customerService {
|
||||
font-size: 11px;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: 18px;
|
||||
transform: translate(-50%, -50%);
|
||||
|
||||
span {
|
||||
color: #ebc78a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.preSaleEntBox {
|
||||
|
||||
@@ -243,10 +243,6 @@
|
||||
¥{{ state.selectedItem.discountedPrice / 10 }}/{{ state.selectedItem.isUpgrade ? '补差价升级' : '立即支付' }}
|
||||
</div>
|
||||
</template>
|
||||
<div class="customerService">
|
||||
支付问题反馈,点击联系
|
||||
<span @click="$router.push('customerService')">在线客服</span>
|
||||
</div>
|
||||
</div>
|
||||
<RechargeBox ref="rechargeBoxRef" :is-open="state.isRecharge" @closePay="closePay" />
|
||||
<van-popup v-model:show="showDialog" teleport="body">
|
||||
@@ -1388,20 +1384,6 @@ linear-gradient(150.34deg, rgba(102, 102, 102, 0.1) 0.26%, rgba(102, 102, 102, 0
|
||||
width: 335px;
|
||||
}
|
||||
}
|
||||
|
||||
.customerService {
|
||||
font-size: 11px;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: 18px;
|
||||
transform: translate(-50%, -50%);
|
||||
color:rgba(220, 220, 220, 1);
|
||||
|
||||
span {
|
||||
color: rgba(255, 212, 96, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.preSaleEntBox {
|
||||
|
||||
@@ -62,46 +62,23 @@
|
||||
<Loading />
|
||||
</div>
|
||||
</div>
|
||||
<van-popup v-model:show="showDialog" teleport="body">
|
||||
<div class="warp">
|
||||
<div class="content_warp">
|
||||
<div class="contents">
|
||||
<p class="title">温馨提示</p>
|
||||
<div class="line"></div>
|
||||
<div class="desc">
|
||||
实物奖品请联系在线客服领取
|
||||
<br />
|
||||
填写收货地址等
|
||||
</div>
|
||||
<div class="btn themes_btn_bg flex-center-center" @click="handleContact">联系客服</div>
|
||||
</div>
|
||||
<div class="close" @click="close">
|
||||
<SvgIcon name="new_close" class="closeIcon" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</van-popup>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { reactive, ref } from 'vue';
|
||||
import { reactive } from 'vue';
|
||||
import { useUserStore } from '@/stores/user';
|
||||
import { showToast } from 'vant';
|
||||
import MineApi from '@/service/mine';
|
||||
import UserApi from '@/service/user';
|
||||
import HomeApi from '@/service/home';
|
||||
import moment from 'moment';
|
||||
import { useRouter } from 'vue-router';
|
||||
|
||||
const userStore = useUserStore();
|
||||
const router = useRouter();
|
||||
const showDialog = ref(false);
|
||||
const state = reactive({
|
||||
integralListVip: <Array<Types.Recharge.IntegralList>>[], // 积分列表
|
||||
integralList: <Array<Types.Recharge.IntegralList>>[], // 积分列表
|
||||
loading: true,
|
||||
userWallet: <Types.User.WalletInfo>{},
|
||||
integralRecordList: <any>[],
|
||||
nowData: <any>{},
|
||||
});
|
||||
// 查询会员卡列表
|
||||
const getVipList = async () => {
|
||||
@@ -130,10 +107,6 @@ const exchange = async (item: Types.Recharge.IntegralList) => {
|
||||
state.userWallet.integral -= item.price;
|
||||
getIntegralRecordList();
|
||||
showToast('兑换成功');
|
||||
if (item.type == 5) {
|
||||
showDialog.value = true;
|
||||
state.nowData = item;
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
@@ -144,13 +117,6 @@ const init = () => {
|
||||
getIntegralRecordList();
|
||||
};
|
||||
init();
|
||||
const close = () => {
|
||||
showDialog.value = false;
|
||||
};
|
||||
const handleContact = () => {
|
||||
showDialog.value = false;
|
||||
router.push('/customerService');
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.memberExchange {
|
||||
@@ -421,74 +387,4 @@ const handleContact = () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
.warp {
|
||||
.content_warp {
|
||||
width: 311px;
|
||||
border-radius: 10px;
|
||||
background: #0f0f0f;
|
||||
.contents {
|
||||
font-size: 12px;
|
||||
padding: 20px 22px 30px 22px;
|
||||
box-sizing: border-box;
|
||||
.title {
|
||||
font-size: 20px;
|
||||
text-align: center;
|
||||
// padding: 20px 0;
|
||||
box-sizing: border-box;
|
||||
font-weight: 550;
|
||||
// color: rgba(229, 6, 0, 1);
|
||||
color: rgba(255, 255, 255, 1);
|
||||
}
|
||||
.line {
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
background: #ffffff1a;
|
||||
margin: 20px 0;
|
||||
position: relative;
|
||||
}
|
||||
.desc {
|
||||
font-size: 16px;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
margin-bottom: 20px;
|
||||
line-height: 44px;
|
||||
text-align: center;
|
||||
}
|
||||
.titleText {
|
||||
margin: 0 0 20px 0;
|
||||
background-color: rgba(51, 51, 51, 1);
|
||||
border-radius: 5px;
|
||||
color: #999;
|
||||
padding: 8px 12px;
|
||||
:deep(.van-field__control) {
|
||||
color: #fff;
|
||||
overflow: hidden;
|
||||
}
|
||||
::placeholder {
|
||||
color: rgba(153, 153, 153, 1);
|
||||
}
|
||||
}
|
||||
:deep(.van-cell::after) {
|
||||
border-bottom: solid 1px transparent !important;
|
||||
}
|
||||
.btn {
|
||||
width: 263px;
|
||||
height: 44px;
|
||||
border-radius: 4px;
|
||||
font-size: 16px;
|
||||
margin: 24px auto 0;
|
||||
background: #f68804;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
.close {
|
||||
position: absolute;
|
||||
right: 15px;
|
||||
top: 15px;
|
||||
svg {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
<template>
|
||||
<div class="service-wrap">
|
||||
<div class="list">
|
||||
<div class="item" @click="$router.push('/customerService')">
|
||||
<div class="avatar-box flex-center-center">
|
||||
<SvgIcon name="service" class="icon" />
|
||||
</div>
|
||||
官方客服
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts">
|
||||
export default {
|
||||
name: 'service',
|
||||
};
|
||||
</script>
|
||||
<script lang="ts" setup></script>
|
||||
<style lang="scss" scoped>
|
||||
.service-wrap {
|
||||
height: 100%;
|
||||
.list {
|
||||
.item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 50px;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
|
||||
.avatar-box {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
flex-shrink: 0;
|
||||
border-radius: 50%;
|
||||
background: rgba(52, 118, 255, 1);
|
||||
margin-right: 16px;
|
||||
|
||||
.icon {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -24,13 +24,6 @@
|
||||
</div>
|
||||
<input class="file" type="file" accept="image/*" @change="uploadQrcode($event)" />
|
||||
</div>
|
||||
|
||||
<div class="code row" @click="handleContact">
|
||||
<div class="left">联系客服</div>
|
||||
<div class="right">
|
||||
<van-icon name="arrow" color="rgb(167,167,167)" size="13px" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<van-popup v-model:show="scanVisible" position="bottom" :style="{ height: '70%' }" @closed="stopScanner">
|
||||
@@ -302,13 +295,6 @@ const login = async (qrUrl: string) => {
|
||||
const toBindingPhone = () => {
|
||||
router.push('/findPhone');
|
||||
};
|
||||
|
||||
/**
|
||||
* 联系客服
|
||||
*/
|
||||
const handleContact = () => {
|
||||
router.push('/customerService');
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.myAccount {
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
<div class="mess">
|
||||
<h2>入驻说明</h2>
|
||||
<p>1、平台不会通过个人名义收取任何入驻费用</p>
|
||||
<p>2、请与官方群管理或APP客服确认真实性</p>
|
||||
<p>2、请与官方群管理确认真实性</p>
|
||||
<p>3、更多问题请添加官方管理员咨询</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<Header title="应用中心" />
|
||||
<div class="content overflow-y-auto">
|
||||
<div class="pageBox">
|
||||
<div class="itemBox" v-for="(item, index) in state.appList" :key="index" @click="download(item.href)">
|
||||
<div class="itemBox" v-for="(item, index) in state.appList" :key="index" @click="download(item)">
|
||||
<div class="picBox">
|
||||
<DecryptImg :src="item.cover" />
|
||||
</div>
|
||||
@@ -21,7 +21,7 @@
|
||||
import { getAdItem } from '@/utils/getConfig';
|
||||
import { AdType } from '@/enums/app';
|
||||
import { nextTick, reactive } from 'vue';
|
||||
import { compatibleAppStoreJump } from '@/utils/index';
|
||||
import { compatibleAppStoreJump, reportAdClick } from '@/utils/index';
|
||||
|
||||
const state = reactive({
|
||||
appList: <Array<Types.App.AdsInfoListItem>>[],
|
||||
@@ -29,10 +29,11 @@ const state = reactive({
|
||||
|
||||
/**
|
||||
* 下载应用
|
||||
* @param link
|
||||
* @param item 精品应用广告
|
||||
*/
|
||||
const download = (link: string) => {
|
||||
compatibleAppStoreJump(link);
|
||||
const download = (item: Types.App.AdsInfoListItem) => {
|
||||
compatibleAppStoreJump(item.href);
|
||||
reportAdClick(item.id);
|
||||
};
|
||||
|
||||
nextTick(async () => {
|
||||
|
||||
@@ -38,13 +38,13 @@ const typeList = ref([
|
||||
name: '怎么找回账号?',
|
||||
type: 2,
|
||||
content:
|
||||
'本平台登录会自动创建账号,需保存账号凭证或绑定手机号码,才能记录之前的账号信息。受行业限制,APP无法正常使用时需升级,未绑定手机号码会导致账号信息丢失。请及时绑定手机号码或保存账号凭证,以免VIP信息丢失,造成巨大财产损失!账号丢失的用户可在 『我的』页面-账号找回,原账号的VIP信息会转移至新账号上。『账号凭证』『手机绑定』都没有的情况下,如账号VIP信息丢失,可以提供VIP支付充值凭证截图联系在线客服为您查询核实恢复VIP。',
|
||||
'本平台登录会自动创建账号,需保存账号凭证或绑定手机号码,才能记录之前的账号信息。受行业限制,APP无法正常使用时需升级,未绑定手机号码会导致账号信息丢失。请及时绑定手机号码或保存账号凭证,以免VIP信息丢失,造成巨大财产损失!账号丢失的用户可在 『我的』页面-账号找回,原账号的VIP信息会转移至新账号上。',
|
||||
},
|
||||
{
|
||||
name: '怎么支付不成功?',
|
||||
type: 3,
|
||||
content:
|
||||
'1.因超时支付无法到账,请重新发起。<br/>2.每天发起支付不能超过5次,连续发起且未支付,账号可能被加入黑名单。<br/>3.支付通道在夜间比较忙碌,尝试多次发起,后台会为您自动切换不同支付通道。<br/>4.若充值成功,用户权益通常会在数分钟内到账,请刷新APP或重启。<br/>5.若支付成功并重启APP后依然没有到账,请联系在线客服并提供付款成功凭证截图。',
|
||||
'1.因超时支付无法到账,请重新发起。<br/>2.每天发起支付不能超过5次,连续发起且未支付,账号可能被加入黑名单。<br/>3.支付通道在夜间比较忙碌,尝试多次发起,后台会为您自动切换不同支付通道。<br/>4.若充值成功,用户权益通常会在数分钟内到账,请刷新APP或重启。',
|
||||
},
|
||||
{
|
||||
name: '收到手机报毒提醒?',
|
||||
@@ -65,7 +65,7 @@ const typeList = ref([
|
||||
// {
|
||||
// name: '忘记密码,如何找回账号',
|
||||
// type: 7,
|
||||
// content: '本平台登录会自动创建账号,需保存账号凭证或绑定手机号码,才能记录之前的账号信息。受行业限制,APP无法正常使用时需升级,未绑定手机号码会导致账号信息丢失。请及时绑定手机号码或保存账号凭证,以免VIP信息丢失,造成巨大财产损失!账号丢失的用户可在 『我的』页面-账号找回,原账号的VIP信息会转移至新账号上。『账号凭证』『手机绑定』都没有的情况下,如账号VIP信息丢失,可以提供VIP支付充值凭证截图联系在线客服为您查询核实恢复VIP。',
|
||||
// content: '本平台登录会自动创建账号,需保存账号凭证或绑定手机号码,才能记录之前的账号信息。受行业限制,APP无法正常使用时需升级,未绑定手机号码会导致账号信息丢失。请及时绑定手机号码或保存账号凭证,以免VIP信息丢失,造成巨大财产损失!账号丢失的用户可在 『我的』页面-账号找回,原账号的VIP信息会转移至新账号上。',
|
||||
// },
|
||||
]);
|
||||
const getHelpList = async (val?: number) => {
|
||||
|
||||
@@ -32,25 +32,6 @@
|
||||
</PullRefresh>
|
||||
</template>
|
||||
<Loading v-else />
|
||||
<van-popup v-model:show="state.show" position="bottom">
|
||||
<div class="pay-tip">
|
||||
<div class="popup-title">
|
||||
支付提示
|
||||
<div class="close flex-center-center" @click="state.show = false">
|
||||
<SvgIcon name="community_close" height="24px" width="24px" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
亲,支付到账通常有2-5分钟的延迟,如果5分钟后会员仍 未开通,请联系客服,提供如下图片,带有流水单号的付款
|
||||
账单详情截图,客服会帮您人工补单!如超过30分钟未到 账,请联系客服咨询补单进度
|
||||
</div>
|
||||
<div class="popup-sub-title">支付凭证(示例)</div>
|
||||
<div class="pay-img"></div>
|
||||
<div class="contact-btn" @click="openCustomerService">
|
||||
<div class="btn">联系客服,提供凭证</div>
|
||||
</div>
|
||||
</div>
|
||||
</van-popup>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -60,16 +41,11 @@ import MineApi from '@/service/mine';
|
||||
import { dateFormat } from '@/utils';
|
||||
import { showToast } from 'vant';
|
||||
import toClipboard from '@/utils/clipboard';
|
||||
import { useRouter } from 'vue-router';
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
const state = reactive({
|
||||
list: <Array<Types.Recharge.RechargeRecord>>[],
|
||||
pageNumber: 1,
|
||||
pageSize: 15,
|
||||
show: false,
|
||||
itemData: <any>{},
|
||||
loading: true,
|
||||
});
|
||||
const moreParams = reactive({
|
||||
@@ -136,27 +112,8 @@ const copyLink = async (cod: string) => {
|
||||
console.log(e);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 打开凭证
|
||||
*/
|
||||
const openCertificate = (item: any) => {
|
||||
state.itemData = item;
|
||||
state.show = true;
|
||||
};
|
||||
|
||||
/**
|
||||
* 跳转客服
|
||||
*/
|
||||
const openCustomerService = () => {
|
||||
copyLink(state.itemData.orderId);
|
||||
router.push('/customerService');
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
:deep(.van-popup) {
|
||||
background-color: transparent;
|
||||
}
|
||||
.recharge-record {
|
||||
height: 100%;
|
||||
background: rgba(3, 15, 24, 1);
|
||||
@@ -221,65 +178,5 @@ const openCustomerService = () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
.pay-tip {
|
||||
background-color: white;
|
||||
border-radius: 10px 10px 0 0;
|
||||
.popup-title {
|
||||
height: 48px;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: $textColor;
|
||||
letter-spacing: 0.36px;
|
||||
line-height: 48px;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
.close {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: 10px;
|
||||
transform: translate(0, -50%);
|
||||
}
|
||||
}
|
||||
.content {
|
||||
font-size: 14px;
|
||||
color: $greyDeepColor;
|
||||
padding: 0 14px;
|
||||
line-height: 20px;
|
||||
}
|
||||
.popup-sub-title {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: $textColor;
|
||||
margin: 16px 0;
|
||||
text-align: center;
|
||||
}
|
||||
.pay-img {
|
||||
height: 300px;
|
||||
width: 183px;
|
||||
background: url('@/assets/images/png/pay_img.jpg') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.contact-btn {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
height: 80px;
|
||||
width: 100%;
|
||||
background-color: white;
|
||||
.btn {
|
||||
height: 42px;
|
||||
width: 337px;
|
||||
background-color: $themeColor;
|
||||
border-radius: 6px;
|
||||
text-align: center;
|
||||
line-height: 42px;
|
||||
color: white;
|
||||
font-size: 14px;
|
||||
letter-spacing: 0.42px;
|
||||
margin: 10px auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<template>
|
||||
<div class="myShare">
|
||||
<!-- <Header title="邀请记录" rightTitle="联系客服" path="customerService" />-->
|
||||
<Header title="邀请记录" />
|
||||
<div class="content overflow-y-auto">
|
||||
<div class="title">已邀请: {{ state.total || 0 }}人</div>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="myShare">
|
||||
<Header title="分享记录" rightTitle="联系客服" path="customerService" />
|
||||
<Header title="分享记录" />
|
||||
<div class="content overflow-y-auto">
|
||||
<!-- <div class="title">已推广人数-{{ state.inviteInfo.userCount || 0 }}人</div> -->
|
||||
<!-- <div class="listBox" v-if="state.inviteList.length > 0"> -->
|
||||
|
||||
@@ -46,17 +46,10 @@
|
||||
<!-- <div class="gift" v-if="item.couponDesc">{{ item.couponDesc }}</div> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="tips">
|
||||
*如提示【交易失败】【账户风险】等,可重新发起订单,或在15分钟后重试支付。如支付未到账,请
|
||||
<span @click="$router.push('customerService')">反馈客服订单号</span>
|
||||
</div>
|
||||
<div class="tips">*如提示【交易失败】【账户风险】等,可重新发起订单,或在15分钟后重试支付。</div>
|
||||
<Loading class="loading" v-if="state.amountList.length == 0" />
|
||||
<div class="bottomBox" v-if="state.amountList.length">
|
||||
<div class="nowPay" @click="showPay(true)">¥{{ state.amountList[state.selectIndex].money / 100 }}/立即支付</div>
|
||||
<div class="customerService">
|
||||
支付问题反馈,点击联系
|
||||
<span @click="$router.push('customerService')">在线客服</span>
|
||||
</div>
|
||||
</div>
|
||||
<RechargeBox ref="rechargeBoxRef" :is-open="state.isRecharge" @closePay="state.isRecharge = false" />
|
||||
</div>
|
||||
@@ -281,15 +274,6 @@ const showPay = (flag: boolean) => {
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.customerService {
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
color: rgba(220, 220, 220, 1);
|
||||
span {
|
||||
color: rgba(249, 193, 66, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.user {
|
||||
|
||||
@@ -85,13 +85,9 @@
|
||||
</p>
|
||||
<p class="withdrawRule">2、每次提现收取{{ state.handlingFee }}%手续费。</p>
|
||||
<p class="withdrawRule">3、支持银行卡或USDT提现,收款账户卡号与姓名一致,到账时间未72小时内</p>
|
||||
<p class="withdrawRule">4、申请提现后请随时关注收款账户进款通知,长时间未到账,请及时联系客服</p>
|
||||
<p class="withdrawRule">4、申请提现后请随时关注收款账户进款通知,长时间未到账请耐心等待</p>
|
||||
<div class="footer">
|
||||
<div class="withdrawBtn" @click="confirm">立即提现</div>
|
||||
<p class="mess">
|
||||
提现中如有问题,请联系
|
||||
<span @click="$router.push('/customerService')">在线客服</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -320,19 +316,6 @@ const confirm = async () => {
|
||||
left: 50%;
|
||||
transform: translate(-50%, 0);
|
||||
}
|
||||
.mess {
|
||||
width: 100%;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
position: fixed;
|
||||
bottom: 43px;
|
||||
left: 50%;
|
||||
transform: translate(-50%, 0);
|
||||
color: rgb(255, 255, 255, 0.8);
|
||||
span {
|
||||
color: rgba(255, 212, 96, 1);
|
||||
}
|
||||
}
|
||||
.radios {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -213,7 +213,7 @@ const goBack = async () => {
|
||||
};
|
||||
|
||||
const nearbySlides = SHORT_VIDEO_NEARBY_SLIDES;
|
||||
/** keep-alive 缓存期间置 false,暂停播放器,避免跳客服/明细等二级页时后台继续播 */
|
||||
/** keep-alive 缓存期间置 false,暂停播放器,避免跳明细等二级页时后台继续播 */
|
||||
const isPageActive = ref(true);
|
||||
const showDramaCardPayPopup = ref(false);
|
||||
const showCoinPayPopup = ref(false);
|
||||
|
||||
Reference in New Issue
Block a user