zhb vor 1 Monat
Ursprung
Commit
5c905547da

+ 3 - 3
composables/useMenuSplit.ts

@@ -108,12 +108,12 @@ export function useMenuSplit(handleClick1: (item: MenuItem) => void) {
                 }
                 return
             } else {
-                handleClick1(item)
+                shouldShowLanguageMenu.value && handleClick1(item)
                 router.push(item.path)
                 return
             }
             // #endif
-            handleClick1(item)
+            shouldShowLanguageMenu.value && handleClick1(item)
             router.push(item.path)
             return
         }
@@ -141,7 +141,7 @@ export function useMenuSplit(handleClick1: (item: MenuItem) => void) {
             return
         }
         // 内部页面跳转
-        handleClick1(subItem)
+        shouldShowLanguageMenu.value && handleClick1(subItem)
         router.push(subItem.path)
 
     }

+ 2159 - 593
pages/activities/index.vue

@@ -2,55 +2,158 @@
     <cwg-page-wrapper class="create-page" :isHeaderFixed="true">
         <view class="custom_activities">
             <view class="info-card">
-                <view class="content-title">
-                    <view v-t="'Home.page_customer.item6'"></view>
-                </view>
-
+                <cwg-header :title="t('Home.page_customer.item6')" />
                 <!-- 主要内容 -->
                 <view class="main-content">
                     <scroll-view class="tab" scroll-y :scroll-top="scrollTop" @scrolltolower="loadMore"
                         refresher-enabled :refresher-triggered="refreshing" @refresherrefresh="onRefresh">
-
                         <!-- 加载状态 -->
                         <view class="table-loading-mask">
                             <uni-loading v-if="pictLoading" />
                         </view>
                         <view class="activity-list" v-if="!pictLoading">
-                            <uni-row class="demo-uni-row uni-row1">
-                                <!-- 遍历静态活动配置 -->
-                                <ActivityCard v-for="activity in visibleStaticActivities" :key="activity.id"
-                                    :config="activity" :state="activityState" :lang="locale"
-                                    @action="handleActivityAction" />
-
-                                <!-- 动态活动列表 -->
-                                <ActivityCard v-for="item in tableData" :key="'dynamic-' + item.id"
-                                    :config="createDynamicConfig(item)" :state="activityState" :lang="locale"
-                                    @action="handleActivityAction" />
-
-                                <!-- 赠送活动列表 -->
-                                <ActivityCard v-for="item in tableDataGive" :key="'give-' + item.id"
-                                    :config="createGiveConfig(item)" :state="activityState" :lang="locale"
-                                    @action="handleActivityAction" />
-                            </uni-row>
-
-
+                            <!-- CWG Markets 月赏礼遇 -->
+                            <view class="activity-card" v-if="country == 'CN'">
+                                <view class="btn-tag-star"><i class="el-icon-star-on"></i></view>
+                                <view class="card-content">
+                                    <view class="card-image crm-cursor">
+                                        <image class="img" src="/static/images/yue.jpg" alt="" />
+                                    </view>
+                                    <view class="card-body">
+                                        <view class="card-title">
+                                            <text class="title-text crm-cursor crm-one-font"><text
+                                                    v-t="'MonthlyActivities.item1'"></text></text>
+                                        </view>
+                                        <view class="card-description crm-one-font">
+                                            <text v-t="''"></text>
+                                        </view>
+                                        <view class="card-actions">
+                                            <text
+                                                :class="['action-btn', monthlyGive ? 'primary crm-cursor' : 'disabled']"
+                                                @click="openSurplusActivityDialog1()"><text
+                                                    v-t="'news_add_field1.activities10_trading_aoyun.item3'"></text></text>
+                                            <cwg-link type="pdf" class="action-btn secondary crm-cursor" target="_blank"
+                                                title="wallet.item15" :url="`pdf/pdf13/CWG Prime cwnus-cn.pdf`" />
+                                            <cwg-link type="pdf" class="action-btn secondary crm-cursor" target="_blank"
+                                                title="Transfer.item7"
+                                                :url="`pdf/pdf13/CWG Markets Prime Bonus Application Pcocess-cn.pdf`" />
+                                            <text class="action-btn secondary crm-cursor"
+                                                @click="goMonthlyTaskList()"><text v-t="'wallet.item14'"></text></text>
+                                        </view>
+                                    </view>
+                                </view>
+                            </view>
+                            <!-- 赠金活动 -->
+                            <view class="activity-card">
+                                <view class="btn-tag-star"><i class="el-icon-star-on"></i></view>
+                                <view class="card-content">
+                                    <view class="card-image crm-cursor">
+                                        <image class="img" src="/static/images/su.png" alt="" />
+                                    </view>
+                                    <view class="card-body">
+                                        <view class="card-title">
+                                            <text class="title-text crm-cursor crm-one-font"><text
+                                                    v-t="'surplusList.item1'"></text></text>
+                                        </view>
+                                        <view class="card-description crm-one-font">
+                                            <text v-t="'surplusList.item2'"></text>
+                                        </view>
+                                        <view class="card-actions">
+                                            <text
+                                                :class="['action-btn', surplusGive ? 'primary crm-cursor' : 'disabled']"
+                                                @click="openSurplusActivityDialog()"><text
+                                                    v-t="'news_add_field1.activities10_trading_aoyun.item3'"></text></text>
+                                            <cwg-link type="pdf" class="action-btn secondary crm-cursor" target="_blank"
+                                                title="wallet.item15"
+                                                :url="`pdf/pdf12/CWG Prime Bonuc-${locale}.pdf`" />
+                                            <cwg-link type="pdf"
+                                                v-if="locale == 'cn' || locale == 'zhHant' || locale == 'en'"
+                                                class="action-btn secondary crm-cursor" target="_blank"
+                                                title="Transfer.item7"
+                                                :url="`pdf/pdf12/CWG Markets Prime Bonus Application Process-${locale}.pdf`" />
+                                            <cwg-link type="pdf" v-else class="action-btn secondary crm-cursor"
+                                                target="_blank" title="Transfer.item7"
+                                                :url="`pdf/pdf12/CWG Markets Prime Bonus Application Process-en.pdf`" />
+                                            <text class="action-btn secondary crm-cursor"
+                                                @click="goSurplusTaskList()"><text v-t="'wallet.item14'"></text></text>
+                                        </view>
+                                    </view>
+                                </view>
+                            </view>
+                            <!-- 交易大赛 -->
+                            <view class="activity-card" v-if="tableDataCptFlag">
+                                <view class="btn-tag-star"><i class="el-icon-star-on"></i></view>
+                                <view class="card-content">
+                                    <view class="card-image crm-cursor" @click="toSingle('23xinjia')">
+                                        <image class="img" src="/static/images/banner.jpg" alt="" />
+                                    </view>
+                                    <view class="card-body">
+                                        <view class="card-title">
+                                            <text class="title-text crm-cursor crm-one-font"
+                                                @click="toSingle('23xinjia')"><text
+                                                    v-t="'news_add_field1.activitiesJYDS2025.item1'"></text></text>
+                                        </view>
+                                        <view class="card-description crm-one-font">
+                                            <text v-t="'news_add_field1.activitiesJYDS2025.item2'"></text>
+                                        </view>
+                                        <view class="card-actions">
+                                            <text class="action-btn primary crm-cursor" @click="toApplyCptOpen()"
+                                                v-if="tableDataCpt.signStatus == 0"><text
+                                                    v-t="'news_add_field1.activitiesJYDS.item3'"></text></text>
+                                            <text class="action-btn disabled crm-cursor"
+                                                v-if="tableDataCpt.signStatus == 1"><text
+                                                    v-t="'news_add_field1.activitiesJYDS.item3_1'"></text></text>
+                                            <text class="action-btn secondary crm-cursor"
+                                                @click="toSingle('23xinjia')"><text
+                                                    v-t="'news_add_field1.activitiesJYDS.item4'"></text></text>
+                                            <text class="action-btn secondary crm-cursor"
+                                                @click="toOpenSingle(tableDataCpt.pageAddress)"><text
+                                                    v-t="'news_add_field1.activitiesJYDS.item4_1'"></text></text>
+                                        </view>
+                                    </view>
+                                </view>
+                            </view>
+                            <!-- 赠送活动列表2 -->
+                            <view class="activity-card" v-for="(item, index) in tableDataGive" :key="index + 'give'">
+                                <view class="btn-tag-star" v-if="item.hot">
+                                    <i class="el-icon-star-on"></i>
+                                </view>
+                                <view class="card-content">
+                                    <view class="card-image crm-cursor" @click="toSingle('newList', item.id)">
+                                        <image class="img" :src="imgUrl + item.coverUrl" alt="" />
+                                    </view>
+                                    <view class="card-body">
+                                        <view class="card-title">
+                                            <text class="title-text crm-cursor crm-one-font"
+                                                @click="toSingle('newList', item.id)">{{ item.title }}</text>
+                                            <text class="card-time">{{ item.revokeDate.split(" ")[0] }}</text>
+                                        </view>
+                                        <view class="card-description crm-one-font">{{ item.subTitle }}</view>
+                                        <view class="card-actions">
+                                            <text class="action-btn primary crm-cursor" @click="toActivity24nianzhong()"
+                                                v-if="item.valid == 1"><text
+                                                    v-t="'Custom.Activity.Apply'"></text></text>
+                                            <text class="action-btn disabled crm-cursor" v-else><text
+                                                    v-t="'Custom.Activity.Apply'"></text></text>
+                                            <text class="action-btn secondary crm-cursor"
+                                                @click="toSingle('newList', item.id)"><text
+                                                    v-t="'Custom.Activity.Single'"></text></text>
+                                        </view>
+                                    </view>
+                                </view>
+                            </view>
                         </view>
-
-
-
                         <!-- 加载更多状态 -->
                         <view v-if="loadingMore" class="loading-more">
                             <uni-icons type="spinner-cycle" size="20" color="#999" class="spin"></uni-icons>
                             <text>{{ t('common.loadingMore') }}</text>
                         </view>
-
                         <!-- 没有更多数据 -->
                         <view v-if="!hasMore && tableData.length > 0" class="no-more">
                             <text>{{ t('common.noMore') }}</text>
                         </view>
                     </scroll-view>
                 </view>
-
                 <!-- 分页 -->
                 <!-- <view class="crm_pagination" v-if="pagerInfo.rowTotal">
                     <view class="pagination">
@@ -72,635 +175,2098 @@
                         </view>
                     </view>
                 </view> -->
-
-                <!-- 所有弹窗组件 -->
-                <ActivityDialogs :visible="dialogState" :form-data="formData" :login-options="loginOptions"
-                    :surplus-options="surplusOptions" @update:visible="updateDialogVisible"
-                    @action="handleDialogAction" />
             </view>
         </view>
+
+
+        <!--弹出框-->
+        <cwg-popup v-model:visible="dialogChinaUnionPay" type="center" :mask-click="false" :show-footers="true">
+            <view class="dia-content">
+                <view class="des1" style="font-size: 16px; line-height: 1.6; margin: 30px 0 50px"
+                    v-html="t('news_add_field1.activities.item11')"></view>
+            </view>
+            <template #footer>
+                <button type="primary" @click="toTransformActive">{{ t('Btn.Confirm') }}</button>
+                <button @click="dialogChinaUnionPay = false">{{ t('Btn.Cancel') }}</button>
+            </template>
+        </cwg-popup>
+        <!-- 23匠鑫活动过期弹出框 -->
+        <cwg-popup v-model:visible="dialogChinaUnionPayJX" type="center" :mask-click="false" :show-footers="true">
+            <view class="dia-content">
+                <view class="des1" style="font-size: 16px; line-height: 1.6; margin: 30px 0 50px"
+                    v-html="t('news_add_field1.activitiesJX.item24')"></view>
+            </view>
+            <template #footer>
+                <button type="primary" @click="dialogChinaUnionPayJX = false">{{ t('Btn.Confirm') }}</button>
+                <button @click="dialogChinaUnionPayJX = false">{{ t('Btn.Cancel') }}</button>
+            </template>
+        </cwg-popup>
+
+        <!--弹出框-->
+        <cwg-popup v-model:visible="dialogChinaUnionPay1" type="center" :mask-click="false" :show-footers="true">
+            <view class="dia-content">
+                <view class="des1" style="font-size: 16px; line-height: 1.6; margin: 30px 0 50px"
+                    v-html="t('news_add_field1.activities.item12')"></view>
+            </view>
+            <template #footer>
+                <button type="primary" @click="toRealizationActive">{{ t('Btn.Confirm') }}</button>
+                <button @click="dialogChinaUnionPay1 = false">{{ t('Btn.Cancel') }}</button>
+            </template>
+        </cwg-popup>
+
+        <!--23活动申请弹出-->
+        <cwg-popup v-model:visible="dialogDealResult" type="center" :mask-click="false" :show-footers="true">
+            <view class="dia-content">
+                <view class="content" style="font-size: 14px; text-align: left">
+                    <form :rules="rules" :model="dialogDealResult_form" label-position="top">
+                        <view class="form-item">
+                            <view class="form-label">{{ t('Label.TradingAccount') }}</view>
+                            <picker mode="selector" :range="loginOptions" :range-key="'label'"
+                                @change="onDialogDealResultLoginChange">
+                                <view class="picker-input">
+                                    {{ dialogDealResult_form.login || t('placeholder.choose') }}
+                                </view>
+                            </picker>
+                        </view>
+                    </form>
+
+                </view>
+            </view>
+            <template #footer>
+                <button type="primary" @click="toApply23">{{ t('Btn.Confirm') }}</button>
+                <button @click="toApply23Cancel">{{ t('Btn.Cancel') }}</button>
+            </template>
+        </cwg-popup>
+
+        <!--23匠鑫活动申请弹出-->
+        <cwg-popup v-model:visible="dialogDealResultJx" type="center" :mask-click="false" :show-footers="true">
+            <view class="dia-content">
+                <view class="content" style="font-size: 14px; text-align: left">
+                    <form :rules="rules" :model="dialogDealResultJx_form" label-position="top">
+                        <view class="form-item">
+                            <view class="form-label">{{ t('Label.TradingAccount') }}</view>
+                            <picker mode="selector" :range="loginOptions" :range-key="'label'"
+                                @change="onDialogDealResultJxLoginChange">
+                                <view class="picker-input">
+                                    {{ dialogDealResultJx_form.login || t('placeholder.choose') }}
+                                </view>
+                            </picker>
+                        </view>
+                    </form>
+
+                </view>
+            </view>
+            <template #footer>
+                <button type="primary" @click="toApply23Jx">{{ t('Btn.Confirm') }}</button>
+                <button @click="toApply23JxCancel">{{ t('Btn.Cancel') }}</button>
+            </template>
+        </cwg-popup>
+
+        <!--23匠鑫活动申请弹出-->
+        <cwg-popup v-model:visible="dialogDealResultJxVip" type="center" :mask-click="false" :show-footers="true">
+            <view class="dia-content">
+                <view class="content" style="font-size: 14px; text-align: left">
+                    <form :rules="rules" :model="dialogDealResultJx_formVip" label-position="top">
+                        <view class="form-item">
+                            <view class="form-label">{{ t('Label.TradingAccount') }}</view>
+                            <picker mode="selector" :range="loginOptions" :range-key="'label'"
+                                @change="onDialogDealResultJxVipLoginChange">
+                                <view class="picker-input">
+                                    {{ dialogDealResultJx_formVip.login || t('placeholder.choose') }}
+                                </view>
+                            </picker>
+                        </view>
+                    </form>
+
+                </view>
+            </view>
+            <template #footer>
+                <button type="primary" @click="toApply23JxVip">{{ t('Btn.Confirm') }}</button>
+                <button @click="toApply23JxCancelVip">{{ t('Btn.Cancel') }}</button>
+            </template>
+        </cwg-popup>
+
+        <!--交易大赛活动申请弹出-->
+        <cwg-popup v-model:visible="dialogDealResultCpt" type="center" :mask-click="false" :show-footers="true">
+            <view class="dia-content">
+                <view class="content" style="font-size: 14px; text-align: left">
+                    <form :rules="rules" :model="dialogDealResultCpt_form" label-position="top">
+                        <view class="form-item">
+                            <view class="form-label">{{ t('Label.TradingAccount') }}</view>
+                            <picker mode="selector" :range="loginOptions" :range-key="'label'"
+                                @change="onDialogDealResultCptLoginChange">
+                                <view class="picker-input">
+                                    {{ dialogDealResultCpt_form.login || t('placeholder.choose') }}
+                                </view>
+                            </picker>
+                        </view>
+                        <view class="form-item">
+                            <view class="form-label">{{ t('Documentary.console.item20') }}</view>
+                            <input class="form-input" v-model="dialogDealResultCpt_form.nickname" type="text" />
+                        </view>
+                        <view class="form-item">
+                            <view class="form-label">{{ t('news_add_field1.activitiesJYDS.item4_3') }}</view>
+                            <input class="form-input" v-model="dialogDealResultCpt_form.recipient" type="text" />
+                        </view>
+                        <view class="form-item">
+                            <view class="form-label">{{ t('news_add_field1.activitiesJYDS.item4_2') }}</view>
+                            <input class="form-input" v-model="dialogDealResultCpt_form.mobile" type="text" />
+                        </view>
+                        <view class="form-item">
+                            <view class="form-label">{{ t('Shop.Address.DetailedAddress') }}</view>
+                            <input class="form-input" v-model="dialogDealResultCpt_form.address" type="text" />
+                        </view>
+                        <div v-html="t('news_add_field1.activitiesJYDS.item4_4')"></div>
+                    </form>
+
+                </view>
+            </view>
+            <template #footer>
+                <button type="primary" @click="toApplyCpt">{{ t('Btn.Confirm') }}</button>
+                <button @click="toApplyCptCancel">{{ t('Btn.Cancel') }}</button>
+            </template>
+        </cwg-popup>
+
+        <!--任务提示弹出框-->
+        <cwg-popup v-model:visible="dialogNewTask" :title="t('wallet.item16')" type="center" :mask-click="false"
+            :show-footers="true">
+            <view class="dia-content">
+                <view class="des1" style="font-size: 14px; line-height: 1.6; margin: 30px 0 50px">
+                    <span v-html="t('wallet.item17')"></span>{{ newTaskList.endTime }}
+                    <span v-html="t('wallet.item18')"></span>{{ newTaskList.tradeVolume }}
+                    <span v-html="t('wallet.item19')"></span>{{ newTaskList.raffleNumber }}
+                    <span v-html="t('wallet.item20')"></span>
+                </view>
+
+            </view>
+            <template #footer>
+                <button type="primary" @click="dialogNewTask = false">{{ t('Btn.Confirm') }}</button>
+                <button @click="dialogNewTask = false">{{ t('Home.msg.item3') }}</button>
+            </template>
+        </cwg-popup>
+
+        <!--抽奖弹出框-->
+        <cwg-popup v-model:visible="dialogNewTaskDraw" :title="t('wallet.item65')" type="center" :mask-click="false"
+            :show-footers="true" width="800px">
+            <view class="dia-content">
+                <DrawLotteryRaffle :curLuckyDrawTimesF="LuckyDrawsNumber"></DrawLotteryRaffle>
+
+            </view>
+            <template #footer>
+                <button @click="closedialogNewTaskDraw">{{ t('Home.msg.item3') }}</button>
+            </template>
+        </cwg-popup>
+
+        <!--24精英杯活动申请弹出-->
+        <cwg-popup v-model:visible="dialogDealResultJxJYB" type="center" :mask-click="false" :show-footers="true">
+            <view class="dia-content">
+                <view class="content" style="font-size: 14px; text-align: left">
+                    <form :rules="rules" :model="dialogDealResultJx_formJYB" label-position="top">
+                        <view class="form-item">
+                            <view class="form-label">{{ t('Label.TradingAccount') }}</view>
+                            <picker mode="selector" :range="loginOptions" :range-key="'label'"
+                                @change="onDialogDealResultJxJYBLoginChange">
+                                <view class="picker-input">
+                                    {{ dialogDealResultJx_formJYB.login || t('placeholder.choose') }}
+                                </view>
+                            </picker>
+                        </view>
+                    </form>
+
+                </view>
+            </view>
+            <template #footer>
+                <button type="primary" @click="toApply24JYBVip">{{ t('Btn.Confirm') }}</button>
+                <button @click="toApply24JYBCancelVip">{{ t('Btn.Cancel') }}</button>
+            </template>
+        </cwg-popup>
+
+        <!--24无忧交易申请弹出-->
+        <cwg-popup v-model:visible="dialogDealResultNoWorries" type="center" :mask-click="false" :show-footers="true">
+            <view class="dia-content">
+                <view class="content" style="font-size: 14px; text-align: left">
+                    <form :rules="rules" :model="dialogDeal_formNoWorries" label-position="top">
+                        <view class="form-item">
+                            <view class="form-label">{{ t('Label.TradingAccount') }}</view>
+                            <picker mode="selector" :range="loginOptions" :range-key="'label'"
+                                @change="onDialogDeal_formNoWorriesLoginChange">
+                                <view class="picker-input">
+                                    {{ dialogDeal_formNoWorries.login || t('placeholder.choose') }}
+                                </view>
+                            </picker>
+                        </view>
+                    </form>
+
+                </view>
+            </view>
+            <template #footer>
+                <button type="primary" @click="toApplyNoWorries">{{
+                    t('news_add_field1.activitiesNoWorries.item6_1') }}</button>
+                <button @click="toApplyNoWorriesCancel">{{ t('news_add_field1.activitiesNoWorries.item6_2')
+                    }}</button>
+            </template>
+        </cwg-popup>
+
+        <!--盈利转换弹出框-->
+        <cwg-popup v-model:visible="dialogNoWorries" type="center" :mask-click="false" :show-footers="true">
+            <view class="dia-content">
+                <view class="des1" style="font-size: 16px; line-height: 1.6; margin: 30px 0 50px"
+                    v-html="t('news_add_field1.activitiesNoWorries.item7')"></view>
+
+            </view>
+            <template #footer>
+                <button type="primary" @click="realizationNoWorries">{{
+                    t('news_add_field1.activitiesNoWorries.item6_1') }}</button>
+                <button @click="dialogNoWorries = false">{{ t('news_add_field1.activitiesNoWorries.item6_2')
+                }}</button>
+            </template>
+        </cwg-popup>
+
+        <!--申请成功弹出框-->
+        <cwg-popup v-model:visible="dialogNoWorriesApply" type="center" :mask-click="false" :show-footers="true">
+            <view class="dia-content">
+                <view class="des1" style="font-size: 16px; line-height: 1.6; margin: 30px 0 50px"
+                    v-html="t('news_add_field1.activitiesNoWorries.item6')"></view>
+
+            </view>
+            <template #footer>
+                <button type="primary" @click="dialogNoWorriesApply = false">{{
+                    t('news_add_field1.activitiesNoWorries.item6_1') }}</button>
+                <button @click="dialogNoWorriesApply = false">{{ t('news_add_field1.activitiesNoWorries.item6_2')
+                    }}</button>
+            </template>
+        </cwg-popup>
+
+        <!--收益模拟器弹出框-->
+        <cwg-popup v-model:visible="openCalculatorFlag" :title="t('news_add_field1.NewYear24.item4')" type="center"
+            :mask-click="false" :show-footers="true">
+            <view class="dia-content NewYear_calculator">
+                <view class="content">
+                    <view class="calculator-input">
+                        <view class="input-prefix">{{ t('news_add_field1.NewYear24.item5') }}</view>
+                        <input class="input-field" v-model="NewYear24DataBalance" type="digit" />
+                    </view>
+                    <view class="tip">
+                        <span v-html="t('news_add_field1.NewYear24.item6')"></span>
+                        <span class="red">${{ NewYear24Data.balance }}</span>
+                        <span v-html="t('news_add_field1.NewYear24.item7')"></span>
+                        <span class="red">${{ NewYear24Data.income }}</span>
+                        <span v-html="t('news_add_field1.NewYear24.item8')"></span>
+                    </view>
+                </view>
+
+            </view>
+            <template #footer>
+                <button type="primary" @click="calculateIncome">{{ t('news_add_field1.NewYear24.item8_1')
+                }}</button>
+                <button @click="openCalculatorFlag = false">{{ t('news_add_field1.NewYear24.item8_2') }}</button>
+            </template>
+        </cwg-popup>
+
+        <!-- Surplus活动弹框 -->
+        <cwg-popup v-model:visible="dialogSurplusActivity" :title="t('surplusList.item1')" type="center"
+            :mask-click="false" :show-footers="true" width="600px">
+            <view class="dia-content">
+                <view class="content" style="padding: 20px">
+                    <view class="form-item">
+                        <view class="form-label">{{
+                            t('Custom.Deposit.Title1') }}:</view>
+                        <cwg-combox :clearable="false" v-model:value="valueInfo" :options="loginComboxOptions"
+                            :placeholder="t('placeholder.choose')" @change="handleValueInfoChange" />
+                    </view>
+                    <view class="form-item">
+                        <view class="form-label">{{
+                            t('surplusList.item3') }}:</view>
+                        <cwg-combox :class="{ disabled: surplusActivityLoading }" :clearable="false"
+                            v-model:value="selectedSurplusActivity" :options="surplusActivityOptions"
+                            :placeholder="t('placeholder.choose')" />
+                    </view>
+                </view>
+            </view>
+            <template #footer>
+                <button @click="closeSurplusActivityDialog">{{ t('Btn.Cancel') }}</button>
+                <button type="primary" @click="confirmSurplusActivity"
+                    :disabled="!selectedSurplusActivity || !valueInfo">
+                    {{ t('Btn.Confirm') }}
+                </button>
+            </template>
+        </cwg-popup>
+
+        <!-- 月赏礼遇活动弹框 -->
+        <cwg-popup v-model:visible="dialogSurplusActivity1" :title="t('MonthlyActivities.item1')" type="center"
+            :mask-click="false" :show-footers="true" width="600px">
+            <view class="dia-content">
+                <view class="content" style="padding: 20px; font-size: 16px">
+                    <strong v-html="t('MonthlyActivities.item8')"></strong>
+                </view>
+            </view>
+            <template #footer>
+                <button @click="closeSurplusActivityDialog1">{{ t('Btn.Cancel') }}</button>
+                <button type="primary" @click="confirmSurplusActivity1">{{ t('Btn.Confirm') }}</button>
+            </template>
+        </cwg-popup>
     </cwg-page-wrapper>
 </template>
 
 <script setup lang="ts">
-import { ref, computed, onMounted } from 'vue'
+import { ref, reactive, computed, onMounted, onUnmounted, watch } from 'vue'
 import { onLoad, onPullDownRefresh, onReachBottom } from '@dcloudio/uni-app'
 import { useI18n } from 'vue-i18n'
 import ActivityCard from './components/ActivityCard.vue'
 import ActivityDialogs from './components/ActivityDialogs.vue'
-import { useActivityData } from './composables/useActivityData'
-import { useActivityActions } from './composables/useActivityActions'
-import { staticActivityConfigs } from './config/activityConfigs'
+import { activityApi } from "@/service/activity"
+import { customApi } from "@/service/custom"
 import Config from '@/config/index'
+// import Drawer from "@/views/global/Drawer"
+// import DrawLotteryRaffle from "@/views/customer/DrawLotteryRaffle"
+// import ActivitiesContent from "@/views/customer/ActivitiesContent24"
+import useUserStore from "@/stores/use-user-store";
+const userStore = useUserStore();
+import { isAfterJuly28 } from "@/utils/dateUtils"
+import { useConfirm } from '@/hooks/useConfirm'
 
+const confirm = useConfirm()
 const { t, locale } = useI18n()
-const { Host80 } = Config
-
-// ==================== 数据逻辑 ====================
-const {
-    pictLoading,
-    tableData,
-    tableDataGive,
-    pagerInfo,
-    loginOptions,
-    activityState,
-    country,
-    isSupportedCountry,
-    isGuoQin,
-    overdue,
-    timeExpireJx,
-    isAfterSeptember30,
-    refreshAllActivities,
-    handlePageChange
-} = useActivityData()
-
-// ==================== 操作逻辑 ====================
-const {
-    // 弹窗状态
-    dialogChinaUnionPay,
-    dialogChinaUnionPay1,
-    dialogChinaUnionPayJX,
-    dialogDealResult,
-    dialogDealResultJx,
-    dialogDealResultJxVip,
-    dialogDealResultCpt,
-    dialogDealResultJxJYB,
-    dialogDealResultNoWorries,
-    dialogNoWorries,
-    dialogNoWorriesApply,
-    dialogNewTask,
-    dialogNewTaskDraw,
-    dialogSurplusActivity,
-    dialogSurplusActivity1,
-    openCalculatorFlag,
-
-    // 表单数据
-    dialogDealResult_form,
-    dialogDealResultJx_form,
-    dialogDealResultJx_formVip,
-    dialogDealResultJx_formJYB,
-    dialogDealResultCpt_form,
-    dialogDeal_formNoWorries,
-    selectedAccount,
-    valueInfo,
-    surplusActivityOptions,
-    surplusActivityLoading,
-    selectedSurplusActivity,
-
-    // 页面跳转
-    toSingle,
-    toDeposit,
-    toActivity24nianzhong,
-    toActivity24Trading,
-    toHistoryLuckyDraw,
-    toTaskList,
-    goSurplusTaskList,
-    goMonthlyTaskList,
-    toDocumentary,
-    backActivity,
-
-    // PDF打开
-    openPdf,
-
-    // 活动操作
-    toApply23Open,
-    toApply23,
-    toApply23Cancel,
-    toTransform,
-    toTransformActive,
-    toRealization,
-    toRealizationActive,
-    toApply23Jx,
-    toApply23JxCancel,
-    toApply23JxVip,
-    toApply23JxCancelVip,
-    toRealizationJx,
-    toRealizationJxVip,
-    toApplyCpt,
-    toApplyCptCancel,
-    toApply24JYBVip,
-    toApply24JYBCancelVip,
-    toRealization24JYBVip,
-    toApplyNoWorries,
-    toApplyNoWorriesCancel,
-    realizationNoWorries,
-    getSurplusActivityOptions,
-    confirmSurplusActivity,
-    confirmSurplusActivity1,
-    closedialogNewTaskDraw,
-    toOpenSingle,
-    cashBack,
-    calculateIncome
-} = useActivityActions(activityState, loginOptions, ref(''), refreshAllActivities)
-
-// ==================== 分页相关 ====================
-const refreshing = ref(false)
-const loadingMore = ref(false)
-const scrollTop = ref(0)
-const hasMore = ref(true)
-
-// 计算显示的页码
-const visiblePages = computed(() => {
-    const maxVisible = 5
-    const half = Math.floor(maxVisible / 2)
-    let start = Math.max(1, pagerInfo.value.current - half)
-    let end = Math.min(pagerInfo.value.pageTotal, start + maxVisible - 1)
-
-    if (end - start + 1 < maxVisible) {
-        start = Math.max(1, end - maxVisible + 1)
-    }
-
-    return Array.from({ length: end - start + 1 }, (_, i) => start + i)
+let { Code, Host05 } = Config
+
+// 国家列表
+const countries = [
+    "DZ", "AO", "BJ", "BW", "BF", "CM", "CG", "CD", "CI", "DJ", "EG", "ET",
+    "GA", "GM", "GH", "GN", "KE", "MG", "MW", "ML", "MR", "MA", "MZ", "NA",
+    "NE", "NG", "RW", "SN", "SL", "SO", "ZA", "SS", "SD", "TZ", "TG", "TN",
+    "UG", "ZM", "ZW", "LS", "BH", "IR", "IQ", "IL", "JO", "KW", "LB", "OM",
+    "PS", "QA", "SA", "SY", "TR", "AE", "YE", "AR", "BO", "BR", "CL", "CO",
+    "EC", "GY", "PY", "PE", "SR", "UY", "VE", "BZ", "CR", "SV", "GT", "HN",
+    "NI", "PA", "AU", "CA", "AL", "AD", "AM", "AT", "AZ", "BY", "BE", "BA",
+    "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "GE", "DE", "GR", "HU",
+    "IS", "IE", "IT", "XK", "LV", "LI", "LT", "LU", "MT", "MD", "MC", "ME",
+    "NL", "MK", "NO", "PL", "PT", "RO", "RU", "SM", "RS", "SK", "SI", "ES",
+    "SE", "CH", "UA", "VA",
+]
+
+// ==================== 响应式数据 ====================
+const monthlyGive = ref(false) // 是否可以参加CWG Markets 月赏礼遇活动
+const selectedAccount = ref<any>(null)
+const valueInfo = ref<any>(null)
+const loginOptions1 = ref<any[]>([])
+const standard = ref(true)
+const limitedStatus = ref<any>(null)
+const flag = ref(false)
+const pictLoading = ref(false)
+const openType = ref("")
+const dialogInfoTradingAdd = ref(false) //新增
+const imgUrl = ref(Host05)
+const show = ref(false)
+const dialogTableVisible = ref(false)
+const formInfo = ref({}) //传给弹窗的值
+const information = ref<any>({})
+const hot = ref("")
+const singleData = ref({})
+const anshiClose = ref(true)
+const tableData1 = ref<any>({}) //20赠金活动
+const interval = ref<any>(null) //倒计时方法
+const isCountDown = ref("") //倒计时
+const isCashBack = ref(false) //返现按钮
+const tableData2 = ref<any>(true) //2023迎新活动
+const tableData2Flag = ref(false) //2023迎新活动
+const isTransform = ref<any>(null) //转换按钮
+const isRealization = ref<any>(null) //变现按钮
+const dialogChinaUnionPay = ref(false)
+const dialogChinaUnionPay1 = ref(false)
+const loginOptions = ref<any[]>([])
+const dialogDealResult = ref(false)
+const dialogDealResult_form = reactive({ login: "" })
+const tableData3Flag = ref(false) //匠鑫学院cwg活动
+const tableData3 = ref<any>(true) //匠鑫学院cwg活动
+const isRealizationJx = ref<any>(null) //变现按钮
+const dialogDealResultJx = ref(false)
+const dialogDealResultJx_form = reactive({ login: "" })
+const dialogChinaUnionPayJX = ref(false)
+const tableData3FlagVip = ref(false) //匠鑫学院cwg活动
+const tableData3Vip = ref<any>(true) //匠鑫学院cwg活动
+const isRealizationJxVip = ref<any>(null) //变现按钮
+const dialogDealResultJxVip = ref(false)
+const dialogDealResultJx_formVip = reactive({ login: "" })
+const dialogChinaUnionPayJXVip = ref(false)
+const tableData3FlagJYB = ref(false) //24精英杯cwg活动
+const tableData3JYB = ref<any>(true) //24精英杯cwg活动
+const isRealizationJxJYB = ref<any>(null) //变现按钮
+const dialogDealResultJxJYB = ref(false)
+const dialogDealResultJx_formJYB = reactive({ login: "" })
+const dialogChinaUnionPayJXJYB = ref(false)
+const tableData4Flag = ref(false) //年中赠金活动
+const tableData4 = ref<any>(true) //年中赠金活动
+const tableData4TwoFlag = ref(false) //年中赠金活动-20
+const tableData4Two = ref<any>(true) //年中赠金活动-20
+const tableDataCptFlag = ref(false) //交易大赛活动
+const tableDataCpt = ref<any>(true) //交易大赛活动
+const dialogDealResultCpt = ref(false)
+const dialogDealResultCpt_form = reactive({
+    login: "",
+    address: "",
+    cptId: "",
+    mobile: "",
+    nickname: "",
+    recipient: "",
+})
+const dialogChinaUnionPayCpt = ref(false)
+const tableDataCptFlagCode = ref("")
+
+//CWG 现金嘉年华-抽奖
+const newTask = ref(false) //新任务
+const newTaskList = ref({ endTime: "", tradeVolume: "", raffleNumber: "" }) //新任务列表
+const dialogNewTask = ref(false) //新任务弹窗
+const dialogNewTaskDraw = ref(false) //打开抽奖弹窗
+const LuckyDrawsNumber = ref("0") //抽奖次数
+const choujiaClose = ref(false)
+
+const tableDataNoWorriesFlag = ref(false) //24无忧交易
+const tableDataNoWorries = ref<any>(false) //24无忧交易
+const isRealizationNoWorries = ref<any>(null) //变现按钮
+const dialogDealResultNoWorries = ref(false)
+const dialogDeal_formNoWorries = reactive({ login: "" })
+const dialogNoWorries = ref(false)
+const dialogNoWorriesApply = ref(false)
+
+const tableDataNewYear24Flag = ref(false) //24新年庆典
+const tableDataNewYear24 = ref<any>(false) //24新年庆典
+const openCalculatorFlag = ref(false)
+const NewYear24DataBalance = ref("")
+const NewYear24Data = reactive({
+    balance: 0,
+    income: 0,
+})
+
+const dialogSurplusActivity1 = ref(false) // CWG Markets 月赏礼遇活动弹框
+const surplusActivityOptions1 = ref<any[]>([]) // CWG Markets 月赏礼遇活动下拉框选项
+const selectedSurplusActivity1 = ref<any>(null) // 选中的CWG Markets 月赏礼遇活动
+const surplusActivityLoading1 = ref(false) // 加载状态
+const surplusGive1 = ref(false) // 是否可以参加CWG Markets 月赏礼遇活动
+
+// Surplus活动相关
+const dialogSurplusActivity = ref(false) // surplus活动弹框
+const surplusActivityOptions = ref<any[]>([]) // surplus活动下拉框选项
+const selectedSurplusActivity = ref<any>(null) // 选中的surplus活动
+const surplusActivityLoading = ref(false) // 加载状态
+const surplusGive = ref(false) // 是否可以参加surplus活动
+const activityShowsInfo = ref<any>(null) // 活动显示信息
+
+const tableData = ref<any[]>([])
+const search = reactive({
+    date: [] as any[],
+    startDate: "",
+    endDate: "",
+    type: 1,
+})
+//分页
+const pagerInfo = reactive({ row: 10, current: 1, pageTotal: 0, rowTotal: 0 })
+const tableDataGive = ref<any[]>([])
+
+// 验证规则
+const rules = reactive({
+    login: [
+        {
+            required: true,
+            message: t("vaildate.select.empty"),
+            trigger: "change",
+        },
+    ],
+    address: [
+        {
+            required: true,
+            message: t("vaildate.input.empty"),
+            trigger: "blur",
+        },
+    ],
+    mobile: [
+        {
+            required: true,
+            message: t("vaildate.input.empty"),
+            trigger: "blur",
+        },
+    ],
+    nickname: [
+        {
+            required: true,
+            message: t("vaildate.input.empty"),
+            trigger: "blur",
+        },
+    ],
+    recipient: [
+        {
+            required: true,
+            message: t("vaildate.input.empty"),
+            trigger: "blur",
+        },
+    ],
+})
+
+// ==================== 计算属性 ====================
+const country = computed(() => {
+    return userStore?.userInfo?.customInfo?.country
+})
+
+const myCid = computed(() => {
+    return userStore?.userInfo?.customInfo?.cId
+})
+
+const isSupportedCountry = computed(() => {
+    try {
+        const country = userStore?.userInfo?.customInfo?.country
+        return countries.includes(country)
+    } catch {
+        return false
+    }
 })
 
-// 上一页
-const handlePrevPage = () => {
-    if (pagerInfo.value.current > 1) {
-        handlePageChange(pagerInfo.value.current - 1)
-    }
-}
-
-// 下一页
-const handleNextPage = () => {
-    if (pagerInfo.value.current < pagerInfo.value.pageTotal) {
-        handlePageChange(pagerInfo.value.current + 1)
-    }
-}
-
-// 加载更多
-const loadMore = () => {
-    if (hasMore.value && !loadingMore.value && pagerInfo.value.current < pagerInfo.value.pageTotal) {
-        loadingMore.value = true
-        handlePageChange(pagerInfo.value.current + 1)
-        setTimeout(() => {
-            loadingMore.value = false
-        }, 500)
-    }
-}
-
-// 刷新
-const onRefresh = () => {
-    refreshing.value = true
-    refreshAllActivities()
-    setTimeout(() => {
-        refreshing.value = false
-        uni.stopPullDownRefresh()
-    }, 1000)
-}
-
-// ==================== 可见活动计算 ====================
-const visibleStaticActivities = computed(() => {
-    return staticActivityConfigs.filter(config => {
-        if (!config.showCondition) return true
-
-        switch (config.showCondition) {
-            case 'tableDataNewYear24Flag':
-                return activityState.tableDataNewYear24Flag
-            case "country === 'CN'":
-                return country.value === 'CN'
-            case 'choujiaClose':
-                return activityState.choujiaClose
-            case 'tableDataNoWorriesFlag':
-                return activityState.tableDataNoWorriesFlag
-            case 'standard':
-                return activityState.standard
-            case 'tableData2Flag':
-                return activityState.tableData2Flag
-            case 'tableDataCptFlag':
-                return activityState.tableDataCptFlag
-            case 'tableData3FlagJYB':
-                return activityState.tableData3FlagJYB
-            case '!isAfterSeptember30() && !isSupportedCountry':
-                return !isAfterSeptember30() && !isSupportedCountry.value
-            case '!isAfterSeptember30() && isSupportedCountry':
-                return !isAfterSeptember30() && isSupportedCountry.value
-            default:
-                return true
+const isGuoQin = computed(() => {
+    let flag = false
+    let startTime1 = "2024/10/01 00:00:00"
+    let endTime1 = "2024/10/07 23:59:59"
+    let timezone = 8
+    let offset_GMT = new Date().getTimezoneOffset()
+    let nowDate = new Date().getTime()
+    let now = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000).getTime()
+    let end = new Date(endTime1).getTime()
+    let start = new Date(startTime1).getTime()
+    if (now > start && now < end) {
+        flag = true
+    }
+    return flag
+})
+
+const showMonthlyActivity2026 = computed(() => {
+    let targetTime = "2026/01/01 00:00:00"
+    let timezone = 8
+    let offset_GMT = new Date().getTimezoneOffset()
+    let nowDate = new Date().getTime()
+    let now = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000).getTime()
+    let target = new Date(targetTime).getTime()
+    return now >= target
+})
+
+// ==================== 工具方法 ====================
+//时间补0
+const getzero = (time: number | string) => {
+    return time > "9" ? time : "0" + time
+}
+
+//时间格式转换
+const timeConvert = (val: string) => {
+    if (val) {
+        var datetime = new Date(val.replace(/-/g, "/"))
+        var year = datetime.getFullYear()
+        var month = datetime.getMonth() + 1
+        var date = datetime.getDate()
+        if (month < 10) {
+            month = "0" + month
         }
-    })
+        if (date < 10) {
+            date = "0" + date
+        }
+        var time = year + "年" + month + "月" + date + "日"
+        return time
+    }
+    return ""
+}
+
+//判断匠鑫活动是否报名结束
+const timeExpireJx = (endTime: string) => {
+    let endTime1 = endTime.replace(/-/g, "/").split(" ")[0]
+    let timezone = 2
+    let offset_GMT = new Date().getTimezoneOffset()
+    let nowDate = new Date().getTime()
+    let now = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000).getTime()
+    let end = new Date(endTime1).getTime()
+    return now < end
+}
+
+//判断活动是否结束
+const overdue = (startTime: string, endTime: string) => {
+    let startTime1 = startTime.replace(/-/g, "/").split(" ")[0]
+    let endTime1 = endTime.replace(/-/g, "/").split(" ")[0]
+    let timezone = 2
+    let offset_GMT = new Date().getTimezoneOffset()
+    let nowDate = new Date().getTime()
+    let now = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000).getTime()
+    let start = new Date(startTime1).getTime()
+    let end = new Date(endTime1).getTime()
+    return start < now && now < end
+}
+
+const isAfterJuly21 = () => {
+    const currentDate = new Date()
+    const july21 = new Date(currentDate.getFullYear(), 6, 21)
+    return currentDate >= july21
+}
+
+// 判断是否在9月30日晚上12点之后,用于隐藏特定活动
+const isAfterSeptember30 = () => {
+    return true
+}
+
+const standardTime = () => {
+    standard.value = false
+}
+
+const groupCurrency = (type: string) => {
+    if (type == "GBP") {
+        return ": £"
+    } else if (type == "USD") {
+        return ": $"
+    } else if (type == "EUR") {
+        return ": €"
+    } else if (type == "USC") {
+        return ": ¢"
+    } else {
+        return ": $"
+    }
+}
+
+const groupCurrency1 = (type: string) => {
+    if (type == "GBP") {
+        return "£"
+    } else if (type == "USD") {
+        return "$"
+    } else if (type == "EUR") {
+        return "€"
+    } else if (type == "USC") {
+        return "¢"
+    } else {
+        return "$"
+    }
+}
+
+const groupTypeName = (type: string) => {
+    if (type == "1") {
+        return t("AccountType.ClassicAccount")
+    } else if (type == "2") {
+        return t("AccountType.SeniorAccount")
+    } else if (type == "3") {
+        return isAfterJuly28() ? "--" : t("AccountType.AgencyAccount")
+    } else if (type == "5") {
+        return t("AccountType.SpeedAccount")
+    } else if (type == "6") {
+        return t("AccountType.SpeedAccount")
+    } else if (type == "7") {
+        return t("AccountType.StandardAccount")
+    } else if (type == "8") {
+        return t("AccountType.CentAccount")
+    }
+    return ""
+}
+
+// ==================== API 请求方法 ====================
+const loginComboxOptions = computed(() => {
+    return loginOptions1.value.map((item) => ({
+        text: item.label,
+        value: item.login
+    }))
 })
+//获取账户信息
+const getDateList = async () => {
+    let res = await customApi.DropdownlusActivityOptions({ platform: "" })
+    if (res.code == Code.StatusOK) {
+        // loginOptions1.value = res.data
+        loginOptions1.value = res.data.map(item => ({
+            ...item,
+            label: `${item.login} - ${groupTypeName(item.type)} - ${t('Custom.Deposit.AvailableBalance')}${groupCurrency(item.currency)}${item.balance}`
+        }))
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
 
-// ==================== 创建动态活动配置 ====================
-const createDynamicConfig = (item: any) => {
-    return {
-        id: item.id,
-        title: item.title,
-        description: item.subTitle,
-        image: item.image,
-        time: item.deliveryTime?.split(' ')[0],
-        hot: item.hot,
-        onClick: 'toSingle',
-        onClickParams: [item.id],
-        buttons: [
-            {
-                type: item.startTime && item.endTime && overdue(item.startTime, item.endTime) ? 'red' : 'gray',
-                text: 'Custom.Activity.Apply',
-                action: 'applications',
-                params: [item]
-            },
-            {
-                type: 'check',
-                text: 'Custom.Activity.List',
-                action: 'checkActivity',
-                params: [item]
-            },
-            {
-                type: 'check',
-                text: 'Custom.Activity.Single',
-                action: 'toSingle',
-                params: [item.id]
+//获取list
+const searchFunc = async () => {
+    if (flag.value) {
+        return
+    } else {
+        flag.value = true
+    }
+    pictLoading.value = true
+    let res = await activityApi.ActivityExtensionIist({
+        hot: hot.value,
+        tag: 1,
+        lang: ["cn", "zhHant"].indexOf(locale.value) !== -1 ? "cn" : "en",
+        page: {
+            current: pagerInfo.current,
+            row: pagerInfo.row,
+        },
+    })
+    if (res.code == Code.StatusOK) {
+        tableData.value = res.data
+        pagerInfo.rowTotal = res.page.rowTotal
+        pagerInfo.pageTotal = res.page.pageTotal
+        flag.value = false
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+        flag.value = false
+    }
+    pictLoading.value = false
+}
+
+//获取list-赠金活动列表
+const searchFunc1 = async () => {
+    pictLoading.value = true
+    let res = await activityApi.ActivityExtensionGiveList({
+        page: {
+            current: pagerInfo.current,
+            row: pagerInfo.row,
+        },
+    })
+    if (res.code == Code.StatusOK) {
+        tableDataGive.value = res.data
+        pagerInfo.rowTotal = res.page.rowTotal
+        pagerInfo.pageTotal = res.page.pageTotal
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+    pictLoading.value = false
+}
+
+//详情
+const getSingle = async (id: string) => {
+    let res = await activityApi.ActivitySingle({
+        id: id,
+    })
+    if (res.code == Code.StatusOK) {
+        singleData.value = res.data
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//获取客户申请活动列表
+const getApplyList = async () => {
+    let res = await activityApi.ActivityApplyList({
+        page: {
+            current: pagerInfo.current,
+            row: pagerInfo.row,
+        },
+    })
+    if (res.code == Code.StatusOK) {
+        pagerInfo.rowTotal = res.page.rowTotal
+        pagerInfo.pageTotal = res.page.pageTotal
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//20赠金活动数据
+const getActivityPercentageGiveInfo = async () => {
+    let res = await activityApi.ActivityPercentageGiveInfo({})
+    if (res.code == Code.StatusOK) {
+        tableData1.value = res.data
+        if (typeof tableData1.value == "object") {
+            let timezone = 2
+            let offset_GMT = new Date().getTimezoneOffset()
+            let nowDate = new Date().getTime()
+            let nowTime = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000)
+            let startTime = new Date(tableData1.value.activityStartTime.replace(/-/g, "/")).getTime()
+            if (nowTime < startTime) {
+                interval.value = setInterval(() => {
+                    let timezone = 2
+                    let offset_GMT = new Date().getTimezoneOffset()
+                    let nowDate = new Date().getTime()
+                    let nowTime = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000)
+                    let sec = 1000,
+                        min = 60 * sec,
+                        hour = min * 60,
+                        day = 24 * hour
+                    let time = startTime - nowTime
+                    let DAY = getzero(Math.floor(time / day))
+                    let HOUR = getzero(Math.floor((time % day) / hour))
+                    let MIN = getzero(Math.floor((time % hour) / min))
+                    let SEC = getzero(Math.floor((time % min) / sec))
+                    isCountDown.value = `${DAY}${t("Label.Day")}${HOUR}:${MIN}:${SEC}`
+                    if (nowTime >= startTime) {
+                        clearInterval(interval.value)
+                        getActivityPercentageGiveInfo()
+                    }
+                }, 1000)
+            } else if (nowTime > startTime && tableData1.value.status == 0) {
+                isCashBack.value = true
             }
-        ]
-    }
-}
-
-const createGiveConfig = (item: any) => {
-    return {
-        id: item.id,
-        title: item.title,
-        description: item.subTitle,
-        image: item.image,
-        time: item.revokeDate?.split(' ')[0],
-        hot: item.hot,
-        onClick: 'toSingle',
-        onClickParams: ['newList', item.id],
-        buttons: [
-            {
-                type: item.valid === 1 ? 'red' : 'gray',
-                text: 'Custom.Activity.Apply',
-                action: 'toActivity24nianzhong'
-            },
-            {
-                type: 'check',
-                text: 'Custom.Activity.Single',
-                action: 'toSingle',
-                params: ['newList', item.id]
+        }
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//返现
+const cashBack = async () => {
+    let res = await activityApi.ActivityPercentageGiveApply({})
+    if (res.code == Code.StatusOK) {
+        uni.showToast({ title: t("Msg.Application"), icon: "success" })
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//20赠金活动申请
+const toDeposit = () => {
+    uni.navigateTo({ url: "/pages/customer/deposit/index" })
+}
+
+//2023迎新活动数据
+const Activity23HundredInfo = async () => {
+    let res = await activityApi.Activity23HundredInfo({})
+    if (res.code == Code.StatusOK) {
+        tableData2.value = res.data
+        if (typeof tableData2.value == "object") {
+            tableData2Flag.value = true
+            let timezone = 2
+            let offset_GMT = new Date().getTimezoneOffset()
+            let nowDate = new Date().getTime()
+            let nowTime = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000)
+            let startTime = new Date(tableData2.value.activityStartTime.replace(/-/g, "/")).getTime()
+            let endTime = new Date(tableData2.value.activityEndTime.replace(/-/g, "/")).getTime()
+            if (nowTime < endTime && nowTime > startTime) {
+                if (tableData2.value.status == 2 && tableData2.value.activityStatus == 0) {
+                    isTransform.value = 1
+                } else if (
+                    tableData2.value.status == 2 &&
+                    (tableData2.value.activityStatus == 1 ||
+                        (tableData2.value.balanceStatus != 2 && tableData2.value.creditStatus != 2))
+                ) {
+                    isTransform.value = 2
+                } else if (tableData2.value.status == 2 && tableData2.value.activityStatus == 3) {
+                    isTransform.value = 2
+                }
+            } else {
+                isTransform.value = 2
+            }
+            if (tableData2.value.status == 2 && tableData2.value.activityStatus == 2) {
+                isTransform.value = null
+                if (tableData2.value.realizationStatus == 0) {
+                    isRealization.value = 1
+                } else if (
+                    tableData2.value.realizationStatus == 1 ||
+                    (tableData2.value.realizationCreditStatus != 2 && tableData2.value.realizationBalanceStatus != 2)
+                ) {
+                    isRealization.value = 2
+                } else if (tableData2.value.realizationStatus == 3) {
+                    isRealization.value = 2
+                }
+            } else {
+                isRealization.value = null
             }
-        ]
-    }
-}
-
-// ==================== 弹窗状态聚合 ====================
-const dialogState = {
-    dialogChinaUnionPay,
-    dialogChinaUnionPay1,
-    dialogChinaUnionPayJX,
-    dialogDealResult,
-    dialogDealResultJx,
-    dialogDealResultJxVip,
-    dialogDealResultCpt,
-    dialogDealResultJxJYB,
-    dialogDealResultNoWorries,
-    dialogNoWorries,
-    dialogNoWorriesApply,
-    dialogNewTask,
-    dialogNewTaskDraw,
-    dialogSurplusActivity,
-    dialogSurplusActivity1,
-    openCalculatorFlag
-}
-
-const formData = {
-    dialogDealResult_form,
-    dialogDealResultJx_form,
-    dialogDealResultJx_formVip,
-    dialogDealResultJx_formJYB,
-    dialogDealResultCpt_form,
-    dialogDeal_formNoWorries,
-    selectedAccount,
-    valueInfo,
-    selectedSurplusActivity
-}
-
-const surplusOptions = {
-    options: surplusActivityOptions,
-    loading: surplusActivityLoading
-}
-
-// 更新弹窗可见性
-const updateDialogVisible = (key: string, value: boolean) => {
-    const dialogMap: Record<string, any> = {
-        dialogChinaUnionPay,
-        dialogChinaUnionPay1,
-        dialogChinaUnionPayJX,
-        dialogDealResult,
-        dialogDealResultJx,
-        dialogDealResultJxVip,
-        dialogDealResultCpt,
-        dialogDealResultJxJYB,
-        dialogDealResultNoWorries,
-        dialogNoWorries,
-        dialogNoWorriesApply,
-        dialogNewTask,
-        dialogNewTaskDraw,
-        dialogSurplusActivity,
-        dialogSurplusActivity1,
-        openCalculatorFlag
-    }
-    if (dialogMap[key]) {
-        dialogMap[key].value = value
-    }
-}
-
-// 处理弹窗操作
-const handleDialogAction = (action: string, data?: any) => {
-    switch (action) {
-        case 'toApply23':
-            toApply23()
-            break
-        case 'toApply23Cancel':
-            toApply23Cancel()
-            break
-        case 'toTransformActive':
-            toTransformActive()
-            break
-        // ... 其他操作
-    }
-}
-
-// ==================== 活动操作处理 ====================
-const handleActivityAction = ({ type, params }: { type: string; params?: any[] }) => {
-    switch (type) {
-        case 'toSingle':
-            toSingle(...(params || []))
-            break
-        case 'openCalculator':
-            openCalculatorFlag.value = true
-            break
-        case 'openPdf':
-            openPdf(params?.[0] || type)
-            break
-        case 'openSurplusActivityDialog':
-            dialogSurplusActivity.value = true
-            break
-        case 'openSurplusActivityDialog1':
-            dialogSurplusActivity1.value = true
-            break
-        case 'goMonthlyTaskList':
-            goMonthlyTaskList()
-            break
-        case 'goSurplusTaskList':
-            goSurplusTaskList()
-            break
-        case 'toHistoryLuckyDraw':
-            toHistoryLuckyDraw()
-            break
-        case 'toOpenTask':
-            dialogNewTaskDraw.value = true
-            break
-        case 'toNewTask':
-            dialogNewTask.value = true
-            break
-        case 'toTaskList':
-            toTaskList()
-            break
-        case 'toApplyNoWorriesOpen':
-            dialogDealResultNoWorries.value = true
-            break
-        case 'toRealizationNoWorries':
-            dialogNoWorries.value = true
-            break
-        case 'toActivity24Trading':
-            toActivity24Trading()
-            break
-        case 'toActivity24nianzhong':
-            toActivity24nianzhong()
-            break
-        case 'toApply23Open':
-            toApply23Open()
-            break
-        case 'toTransform':
-            toTransform()
-            break
-        case 'toRealization':
-            toRealization()
-            break
-        case 'toApplyCptOpen':
-            dialogDealResultCpt.value = true
-            break
-        case 'toOpenSingle':
-            // 处理打开外部链接
-            break
-        case 'toApply24JYBOpenVip':
-            dialogDealResultJxJYB.value = true
-            break
-        case 'toRealization24JYBVip':
-            // 处理变现
-            break
-        case 'applications':
-            // 处理申请
-            break
-        case 'checkActivity':
-            // 处理查看活动
-            break
-        case 'openDialog':
-            if (params?.[0]) {
-                updateDialogVisible(params[0], true)
+        } else {
+            if (tableData2.value) {
+                tableData2Flag.value = true
             }
-            break
-        case 'cashBack':
-            // 处理返现
-            break
-        case 'toApply23JxOpen':
-            dialogDealResultJx.value = true
-            break
-        case 'toApply23JxOpenVip':
-            dialogDealResultJxVip.value = true
-            break
-        case 'toApplyCptOpen':
-            dialogDealResultCpt.value = true
-            break
-        case 'toApply24JYBOpenVip':
-            dialogDealResultJxJYB.value = true
-            break
-        case 'toApplyNoWorriesOpen':
-            dialogDealResultNoWorries.value = true
-            break
-        case 'toRealizationJx':
-            toRealizationJx()
-            break
-        case 'toRealizationJxVip':
-            toRealizationJxVip()
-            break
-        case 'toRealization24JYBVip':
-            toRealization24JYBVip()
-            break
-        case 'toRealizationNoWorries':
-            dialogNoWorries.value = true
-            break
-        case 'toOpenSingle':
-            toOpenSingle(params?.[0])
-            break
-        case 'cashBack':
-            cashBack()
-            break
-        default:
-            console.warn('未知操作类型:', type)
+        }
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+        tableData2.value = true
     }
 }
 
-// ==================== 生命周期 ====================
-onLoad(() => {
-    refreshAllActivities()
-})
+//获取交易账户的下拉列表
+const toApply23Open = async () => {
+    pictLoading.value = true
+    let res = await activityApi.Activity23Login({})
+    if (res.code == Code.StatusOK) {
+        loginOptions.value = res.data
+        dialogDealResult.value = true
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+    pictLoading.value = false
+}
 
-onPullDownRefresh(() => {
-    refreshAllActivities()
-    setTimeout(() => {
-        uni.stopPullDownRefresh()
-    }, 1000)
-})
+//2023迎新活动申请
+const toApply23 = async () => {
+    if (flag.value) {
+        return
+    } else {
+        flag.value = true
+    }
+    let res = await activityApi.Activity23HundredApply({
+        login: dialogDealResult_form.login,
+    })
+    if (res.code == Code.StatusOK) {
+        toApply23Cancel()
+        Activity23HundredInfo()
+        uni.showToast({ title: res.msg, icon: "success" })
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
 
-onReachBottom(() => {
-    loadMore()
-})
-</script>
+const toApply23Cancel = () => {
+    dialogDealResult_form.login = ""
+    dialogDealResult.value = false
+}
 
-<style scoped lang="scss">
-@import "@/uni.scss";
+//盈利转换
+const toTransform = () => {
+    dialogChinaUnionPay.value = true
+}
 
-.custom_activities {
-    display: flex;
-    flex-direction: column;
+const toTransformActive = async () => {
+    let res = await activityApi.Activity23HundredTransform({})
+    if (res.code == Code.StatusOK) {
+        dialogChinaUnionPay.value = false
+        Activity23HundredInfo()
+        uni.showToast({ title: res.msg, icon: "success" })
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
 
-    .crm-title-box {
-        padding: 20rpx 30rpx;
-        background-color: var(--color-white);
-        border-bottom: 1rpx solid #e5e5e5;
+//盈利变现
+const toRealization = () => {
+    dialogChinaUnionPay1.value = true
+}
 
-        .tit {
-            font-size: 32rpx;
-            font-weight: bold;
-            color: #333;
+const toRealizationActive = async () => {
+    let res = await activityApi.Activity23HundredRealization({})
+    if (res.code == Code.StatusOK) {
+        dialogChinaUnionPay1.value = false
+        Activity23HundredInfo()
+        uni.showToast({ title: res.msg, icon: "success" })
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//2023匠鑫活动数据
+const Activity23JiangxinInfo = async () => {
+    let res = await activityApi.Activity23JiangxinInfo({})
+    if (res.code == Code.StatusOK) {
+        tableData3.value = res.data
+        if (tableData3.value.show == 1) {
+            tableData3Flag.value = true
+        } else if (tableData3.value.show == 0) {
+            tableData3Flag.value = false
+        } else if (!tableData3.value.show) {
+            tableData3Flag.value = true
+            let timezone = 2
+            let offset_GMT = new Date().getTimezoneOffset()
+            let nowDate = new Date().getTime()
+            let nowTime = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000)
+            let endTime = tableData3.value.activityEndTime
+                ? new Date(tableData3.value.activityEndTime.replace(/-/g, "/")).getTime()
+                : null
+            if (
+                tableData3.value.status == 2 &&
+                tableData3.value.realizationStatus == 0 &&
+                endTime &&
+                nowTime > endTime
+            ) {
+                isRealizationJx.value = 1
+            } else {
+                isRealizationJx.value = 2
+            }
         }
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
     }
+}
 
-    .main-content {
-        flex: 1;
-        overflow: hidden;
+//获取交易账户的下拉列表
+const toApply23JxOpen = async () => {
+    pictLoading.value = true
+    let res = await activityApi.Activity23JxLogin({})
+    if (res.code == Code.StatusOK) {
+        loginOptions.value = res.data
+        dialogDealResultJx.value = true
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+    pictLoading.value = false
+}
 
-        .tab {
-            height: 100%;
-            padding-top: px2rpx(20);
+//2023迎新活动申请
+const toApply23Jx = async () => {
+    if (flag.value) {
+        return
+    } else {
+        flag.value = true
+    }
+    let res = await activityApi.Activity23JiangxinApply({
+        login: dialogDealResultJx_form.login,
+    })
+    if (res.code == Code.StatusOK) {
+        toApply23JxCancel()
+        Activity23JiangxinInfo()
+        uni.showToast({ title: res.msg, icon: "success" })
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+const toApply23JxCancel = () => {
+    dialogDealResultJx_form.login = ""
+    dialogDealResultJx.value = false
+}
+
+//盈利变现
+const toRealizationJx = async () => {
+    let res = await activityApi.Activity23JiangxinRealization({
+        id: tableData3.value.id,
+    })
+    if (res.code == Code.StatusOK) {
+        Activity23JiangxinInfo()
+        uni.showToast({ title: res.msg, icon: "success" })
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//2023匠鑫活动数据Vip
+const Activity23JiangxinInfoVip = async () => {
+    let res = await activityApi.Activity23JiangxinInfoVip({})
+    if (res.code == Code.StatusOK) {
+        tableData3Vip.value = res.data
+        if (tableData3Vip.value.show == 1) {
+            tableData3FlagVip.value = true
+        } else if (tableData3Vip.value.show == 0) {
+            tableData3FlagVip.value = false
+        } else if (!tableData3Vip.value.show) {
+            tableData3FlagVip.value = true
+            let timezone = 2
+            let offset_GMT = new Date().getTimezoneOffset()
+            let nowDate = new Date().getTime()
+            let nowTime = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000)
+            let endTime = tableData3Vip.value.activityEndTime
+                ? new Date(tableData3Vip.value.activityEndTime.replace(/-/g, "/")).getTime()
+                : null
+            if (
+                tableData3Vip.value.status == 2 &&
+                tableData3Vip.value.realizationStatus == 0 &&
+                endTime &&
+                nowTime > endTime
+            ) {
+                isRealizationJxVip.value = 1
+            } else {
+                isRealizationJxVip.value = 2
+            }
         }
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
     }
+}
 
-    .loading-mask {
-        position: absolute;
-        top: 0;
-        left: 0;
-        right: 0;
-        bottom: 0;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        background-color: rgba(255, 255, 255, 0.9);
-        z-index: 100;
-
-        .loading-content {
-            display: flex;
-            flex-direction: column;
-            align-items: center;
-            padding: 30rpx;
-            background-color: var(--color-white);
-            border-radius: 16rpx;
-            box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.1);
-
-            .loading-text {
-                margin-top: 20rpx;
-                font-size: 28rpx;
-                color: #666;
+//获取交易账户的下拉列表Vip
+const toApply23JxOpenVip = async () => {
+    pictLoading.value = true
+    let res = await activityApi.Activity23JxLoginVip({})
+    if (res.code == Code.StatusOK) {
+        loginOptions.value = res.data
+        dialogDealResultJxVip.value = true
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+    pictLoading.value = false
+}
+
+//2023迎新活动申请Vip
+const toApply23JxVip = async () => {
+    if (flag.value) {
+        return
+    } else {
+        flag.value = true
+    }
+    let res = await activityApi.Activity23JiangxinApplyVip({
+        login: dialogDealResultJx_formVip.login,
+    })
+    if (res.code == Code.StatusOK) {
+        toApply23JxCancelVip()
+        Activity23JiangxinInfoVip()
+        uni.showToast({ title: res.msg, icon: "success" })
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+const toApply23JxCancelVip = () => {
+    dialogDealResultJx_formVip.login = ""
+    dialogDealResultJxVip.value = false
+}
+
+//盈利变现Vip
+const toRealizationJxVip = async () => {
+    let res = await activityApi.Activity23JiangxinRealizationVip({
+        id: tableData3Vip.value.id,
+    })
+    if (res.code == Code.StatusOK) {
+        Activity23JiangxinInfoVip()
+        uni.showToast({ title: res.msg, icon: "success" })
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//2023年中赠金活动数据-10
+const Activity24nianzhongInfo = async () => {
+    let res = await activityApi.Activity23nianzhongInfo({})
+    if (res.code == Code.StatusOK) {
+        tableData4.value = res.data
+        if (tableData4.value.show == 1) {
+            tableData4Flag.value = true
+        } else if (tableData4.value.show == 0) {
+            tableData4Flag.value = false
+        }
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//2023年中赠金活动跳转
+const toActivity24nianzhong = () => {
+    uni.navigateTo({ url: "/pages/customer/deposit/index" })
+}
+
+//标准账户交易奖励跳转
+const toActivity24Trading = () => {
+    uni.navigateTo({ url: "/pages/customer/new/index" })
+}
+
+//2023年中赠金活动数据-20
+const Activity24nianzhongTwoInfo = async () => {
+    let res = await activityApi.Activity23nianzhongTwoInfo({})
+    if (res.code == Code.StatusOK) {
+        tableData4Two.value = res.data
+        if (tableData4Two.value.show == 1) {
+            tableData4TwoFlag.value = true
+        } else if (tableData4Two.value.show == 0) {
+            tableData4TwoFlag.value = false
+        }
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//交易大赛数据-参数
+const GetActivityCptCode = async () => {
+    let res = await activityApi.ActivityCptinfoGetCode({})
+    if (res.code == Code.StatusOK) {
+        tableDataCptFlagCode.value = res.data.code
+        if (tableDataCptFlagCode.value) {
+            ActivityCptInfo(tableDataCptFlagCode.value)
+        }
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//交易大赛数据
+const ActivityCptInfo = async (code: string) => {
+    let res = await activityApi.ActivityCptinfoCode({
+        infoCode: code,
+    })
+    if (res.code == Code.StatusOK) {
+        tableDataCpt.value = res.data
+        if (tableDataCpt.value == null) {
+            tableDataCptFlag.value = false
+        } else {
+            tableDataCptFlag.value = true
+        }
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//获取交易账户的下拉列表
+const toApplyCptOpen = async () => {
+    pictLoading.value = true
+    let res = await activityApi.ActivityCptInfoLogins({
+        cptId: tableDataCpt.value.id,
+    })
+    if (res.code == Code.StatusOK) {
+        loginOptions.value = res.data
+        dialogDealResultCpt.value = true
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+    pictLoading.value = false
+}
+
+//交易大赛申请
+const toApplyCpt = async () => {
+    if (flag.value) {
+        return
+    } else {
+        flag.value = true
+    }
+    let res = await activityApi.ActivityCptInfoAdd({
+        cptId: tableDataCpt.value.id,
+        login: dialogDealResultCpt_form.login,
+        nickname: dialogDealResultCpt_form.nickname,
+        mobile: dialogDealResultCpt_form.mobile,
+        address: dialogDealResultCpt_form.address,
+        recipient: dialogDealResultCpt_form.recipient,
+    })
+    if (res.code == Code.StatusOK) {
+        toApplyCptCancel()
+        GetActivityCptCode()
+        uni.showToast({ title: res.msg, icon: "success" })
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+const toApplyCptCancel = () => {
+    dialogDealResultCpt_form.login = ""
+    dialogDealResultCpt_form.nickname = ""
+    dialogDealResultCpt_form.mobile = ""
+    dialogDealResultCpt_form.address = ""
+    dialogDealResultCpt_form.recipient = ""
+    dialogDealResultCpt.value = false
+}
+
+const toOpenSingle = (pageAddress: string) => {
+    let link = ""
+    if (pageAddress.indexOf("html?") == -1) {
+        link = "?code=" + tableDataCptFlagCode.value
+    }
+    if (pageAddress.indexOf("html?") > -1 && pageAddress.indexOf("code") == -1) {
+        link = "&code=" + tableDataCptFlagCode.value
+    }
+    plus.runtime.openURL(imgUrl.value + pageAddress + link)
+}
+
+//CWG 现金嘉年华-新任务
+const ActivitYdepositRaffleAim = async () => {
+    let res = await activityApi.ActivitYdepositRaffleAim({})
+    if (res.code == Code.StatusOK) {
+        if (res.data == null) {
+            newTask.value = false
+        } else {
+            newTask.value = true
+            newTaskList.value = res.data
+        }
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//CWG 现金嘉年华-抽奖次数
+const ActivitYdepositRaffleinfo = async () => {
+    let res = await activityApi.ActivitYdepositRaffleinfo({})
+    if (res.code == Code.StatusOK) {
+        if (res.data == null) {
+            LuckyDrawsNumber.value = "0"
+        } else {
+            LuckyDrawsNumber.value = res.data.raffleResidueNumber || "0"
+        }
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//现金嘉年华跳转抽奖历史
+const toHistoryLuckyDraw = () => {
+    uni.navigateTo({ url: "/pages/customer/history/lucky/draw/index" })
+}
+
+//现金嘉年华跳转任务列表
+const toTaskList = () => {
+    uni.navigateTo({ url: "/pages/customer/task/list/index" })
+}
+
+const UtoTaskList = () => {
+    uni.navigateTo({ url: "/pages/customer/Utask/list/index" })
+}
+
+const goSurplusTaskList = () => {
+    uni.navigateTo({ url: "/pages/activities/surplus-list" })
+}
+
+const goMonthlyTaskList = () => {
+    uni.navigateTo({ url: "/pages/activities/monthly-list" })
+}
+
+const toOpenTask = () => {
+    dialogNewTaskDraw.value = true
+}
+
+//新任务弹窗
+const toNewTask = () => {
+    dialogNewTask.value = true
+}
+
+const closedialogNewTaskDraw = () => {
+    dialogNewTaskDraw.value = false
+    ActivitYdepositRaffleinfo()
+}
+
+//分页返回数据
+const handleCurrentChange = (val: number) => {
+    pagerInfo.current = val
+    searchFunc()
+    searchFunc1()
+}
+
+//20赠金是否到期-4月30号23:59:59的时候关闭申请
+const is20Open = () => {
+    let endTime1 = "2023/04/30 23:59:59"
+    let timezone = 2
+    let offset_GMT = new Date().getTimezoneOffset()
+    let nowDate = new Date().getTime()
+    let now = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000).getTime()
+    let end = new Date(endTime1).getTime()
+    if (now > end) {
+        anshiClose.value = false
+    }
+}
+
+//抽抽奖是否到期-2023-11-25 00:00:00-2023-12-31 23:59:59
+const isRaffleOpen = () => {
+    let endTime1 = "2025/9/30 23:59:59"
+    let startTime1 = "2025/7/1 00:00:00"
+    let timezone = 2
+    let offset_GMT = new Date().getTimezoneOffset()
+    let nowDate = new Date().getTime()
+    let now = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000).getTime()
+    let end = new Date(endTime1).getTime()
+    let start = new Date(startTime1).getTime()
+    if (now < end && start < now) {
+        choujiaClose.value = true
+        ActivitYdepositRaffleAim()
+        ActivitYdepositRaffleinfo()
+    }
+}
+
+//24精英杯活动
+const Activity24JYBInfoVip = async () => {
+    let res = await activityApi.Activity24JYBInfoVip({})
+    if (res.code == Code.StatusOK) {
+        tableData3JYB.value = res.data
+        if (tableData3JYB.value.show == 1) {
+            tableData3FlagJYB.value = true
+        } else if (tableData3JYB.value.show == 0) {
+            tableData3FlagJYB.value = false
+        } else if (!tableData3JYB.value.show) {
+            tableData3FlagJYB.value = true
+            let timezone = 2
+            let offset_GMT = new Date().getTimezoneOffset()
+            let nowDate = new Date().getTime()
+            let nowTime = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000)
+            let endTime = tableData3JYB.value.activityEndTime
+                ? new Date(tableData3JYB.value.activityEndTime.replace(/-/g, "/")).getTime()
+                : null
+            if (
+                tableData3JYB.value.status == 2 &&
+                tableData3JYB.value.realizationStatus == 0 &&
+                endTime &&
+                nowTime > endTime
+            ) {
+                isRealizationJxJYB.value = 1
+            } else {
+                isRealizationJxJYB.value = 2
             }
         }
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//获取交易账户的下拉列表Vip
+const toApply24JYBOpenVip = async () => {
+    pictLoading.value = true
+    let res = await activityApi.Activity24JYBLoginVip({})
+    if (res.code == Code.StatusOK) {
+        loginOptions.value = res.data
+        dialogDealResultJxJYB.value = true
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+    pictLoading.value = false
+}
+
+//24精英杯活动申请
+const toApply24JYBVip = async () => {
+    //this.$refs["dialogDealResultJx_formJYB"].validate
+    if (flag.value) {
+        return
+    } else {
+        flag.value = true
+    }
+    let res = await activityApi.Activity24JYBApplyVip({
+        login: dialogDealResultJx_formJYB.login,
+    })
+    if (res.code == Code.StatusOK) {
+        toApply24JYBCancelVip()
+        Activity24JYBInfoVip()
+        uni.showToast({ title: res.msg, icon: "success" })
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+const toApply24JYBCancelVip = () => {
+    dialogDealResultJx_formJYB.login = ""
+    dialogDealResultJxJYB.value = false
+}
+
+//24精英杯活动盈利变现
+const toRealization24JYBVip = async () => {
+    let res = await activityApi.Activity24JYBRealizationVip({
+        id: tableData3JYB.value.id,
+    })
+    if (res.code == Code.StatusOK) {
+        Activity24JYBInfoVip()
+        uni.showToast({ title: res.msg, icon: "success" })
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//24无忧交易
+const ActivityNoWorriesInfo = async () => {
+    let res = await activityApi.ActivityNoWorriesInfo({})
+    if (res.code == Code.StatusOK) {
+        tableDataNoWorries.value = res.data
+        if (typeof tableDataNoWorries.value == "object") {
+            tableDataNoWorriesFlag.value = true
+            let timezone = 2
+            let offset_GMT = new Date().getTimezoneOffset()
+            let nowDate = new Date().getTime()
+            let nowTime = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000)
+            let startTime = new Date(tableDataNoWorries.value.compensateTime.replace(/-/g, "/")).getTime()
+            let endTime = new Date(tableDataNoWorries.value.revokeTime.replace(/-/g, "/")).getTime()
+            if (
+                nowTime < endTime &&
+                nowTime > startTime &&
+                (tableDataNoWorries.value.status == 0 ||
+                    tableDataNoWorries.value.status == 3) &&
+                tableDataNoWorries.value.compensateStatus == 2 &&
+                tableDataNoWorries.value.activityStatus == 1
+            ) {
+                isRealizationNoWorries.value = 1
+            } else {
+                isRealizationNoWorries.value = null
+            }
+        } else {
+            if (tableDataNoWorries.value) {
+                tableDataNoWorriesFlag.value = true
+            }
+        }
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//获取交易账户的下拉列表
+const toApplyNoWorriesOpen = async () => {
+    pictLoading.value = true
+    let res = await activityApi.ActivityNoWorriesLogin({})
+    if (res.code == Code.StatusOK) {
+        loginOptions.value = res.data
+        dialogDealResultNoWorries.value = true
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+    pictLoading.value = false
+}
+
+//24无忧交易申请
+const toApplyNoWorries = async () => {
+    if (flag.value) {
+        return
+    } else {
+        flag.value = true
+    }
+    let res = await activityApi.ActivityNoWorriesApply({
+        login: dialogDeal_formNoWorries.login,
+    })
+    if (res.code == Code.StatusOK) {
+        dialogNoWorriesApply.value = true
+        toApplyNoWorriesCancel()
+        ActivityNoWorriesInfo()
+        uni.showToast({ title: res.msg, icon: "success" })
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
     }
+}
+
+const toApplyNoWorriesCancel = () => {
+    // this.$refs["dialogDeal_formNoWorries"] &&
+    //    this.$refs["dialogDeal_formNoWorries"].resetFields();
+    dialogDeal_formNoWorries.login = ""
+    dialogDealResultNoWorries.value = false
+}
+
+//盈利变现
+const toRealizationNoWorries = () => {
+    dialogNoWorries.value = true
+}
 
-    .loading-more,
-    .no-more {
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        padding: 30rpx;
-        font-size: 28rpx;
-        color: #999;
+//24无忧交易盈利变现
+const realizationNoWorries = async () => {
+    let res = await activityApi.ActivityNoWorriesRealization({
+        id: tableDataNoWorries.value.id,
+    })
+    if (res.code == Code.StatusOK) {
+        dialogNoWorries.value = false
+        ActivityNoWorriesInfo()
+        uni.showToast({ title: res.msg, icon: "success" })
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
     }
+}
 
-    .spin {
-        animation: spin 1s linear infinite;
+//24新年庆典
+const isNewYear24Open = () => {
+    let endTime1 = "2025/3/31 23:59:59"
+    let startTime1 = "2025/1/1 00:00:00"
+    let timezone = 2
+    let offset_GMT = new Date().getTimezoneOffset()
+    let nowDate = new Date().getTime()
+    let now = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000).getTime()
+    let end = new Date(endTime1).getTime()
+    let start = new Date(startTime1).getTime()
+    if (now < end && start < now) {
+        ActivityNewYear24()
     }
+}
 
-    @keyframes spin {
-        from {
-            transform: rotate(0deg);
+const ActivityNewYear24 = async () => {
+    let res = await activityApi.ActivityNewYear24({})
+    if (res.code == Code.StatusOK) {
+        tableDataNewYear24.value = res.data
+        if (typeof tableDataNewYear24.value == "object") {
+            tableDataNewYear24Flag.value = true
+        } else {
+            if (tableDataNewYear24.value) {
+                tableDataNewYear24Flag.value = true
+            }
         }
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
 
-        to {
-            transform: rotate(360deg);
+const openCalculator = () => {
+    openCalculatorFlag.value = true
+}
+
+const calculateIncome = () => {
+    NewYear24Data.balance = Number(NewYear24DataBalance.value) || 0
+    let rate = 0
+    tableDataNewYear24.value.details.forEach((item: any) => {
+        if (
+            NewYear24Data.balance > item.min &&
+            NewYear24Data.balance <= item.max
+        ) {
+            rate = item.rate
+        } else if (
+            NewYear24Data.balance > item.min &&
+            NewYear24Data.balance >= item.max &&
+            item.max == 0
+        ) {
+            rate = item.rate
         }
+    })
+    NewYear24Data.income = (
+        ((NewYear24Data.balance * rate) / 100 / 365) *
+        30
+    ).toFixed(2)
+}
+
+//限时活动
+const ActivityRequiteInfo = async () => {
+    let res = await activityApi.ActivityRequiteInfo({})
+    if (res.code == Code.StatusOK) {
+        limitedStatus.value = res.data
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+// 获取活动显示信息
+const getActivityShowsInfo = async () => {
+    try {
+        let res = await activityApi.ActivityShowsInfo()
+        if (res.code == Code.StatusOK) {
+            activityShowsInfo.value = res.data
+            surplusGive.value = res.data.surplusGive || false
+            monthlyGive.value = res.data.monthlyGive || false
+        } else {
+            uni.showToast({ title: res.msg, icon: "none" })
+            surplusGive.value = false
+            monthlyGive.value = false
+        }
+    } catch (error) {
+        uni.showToast({ title: "获取活动信息失败", icon: "none" })
+        surplusGive.value = false
+        monthlyGive.value = false
+    }
+}
+
+// 打开surplus活动弹框
+const openSurplusActivityDialog = async () => {
+    if (!surplusGive.value) {
+        return
     }
+    dialogSurplusActivity.value = true
+    surplusActivityLoading.value = true
+    selectedSurplusActivity.value = null
+}
 
-    .crm_pagination {
-        padding: 20rpx;
-        background-color: var(--color-white);
-        border-top: 1rpx solid #e5e5e5;
+const openSurplusActivityDialog1 = async () => {
+    if (!monthlyGive.value) {
+        return
+    }
+    dialogSurplusActivity1.value = true
+    surplusActivityLoading1.value = true
+    selectedSurplusActivity1.value = null
+    getMonthlyActivityOptions()
+}
 
-        .pagination {
-            display: flex;
-            align-items: center;
-            justify-content: center;
+const getSurplusActivityOptions = async () => {
+    let res = await activityApi.ActivitySurplusDepositAmount({
+        login: selectedAccount.value.login,
+        platform: selectedAccount.value.platform,
+    })
+    if (res.code == Code.StatusOK) {
+        surplusActivityOptions.value = res.data.map((item: any, index: number) => ({
+            id: index,
+            value: item.level,
+            text: `${t("AmountLabel.item1")}: ${item.amount} | ${t("AmountLabel.item2")}: ${item.needVolume}`,
+            giveFlag: item.giveFlag,
+        }))
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+    surplusActivityLoading.value = false
+}
 
-            .page-item {
+const getMonthlyActivityOptions = async () => {
+    let res = await activityApi.ActivityMonthlyDepositAmount({})
+    if (res.code == Code.StatusOK) {
+        surplusActivityOptions1.value = res.data.map((item: any, index: number) => ({
+            id: index,
+            value: item.level,
+            label: `${t("入金量")}: ${item.needAmount} | ${t("入金手数")}: ${item.needVolume}`,
+        }))
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+    surplusActivityLoading1.value = false
+}
+
+// 关闭surplus活动弹框
+const closeSurplusActivityDialog = () => {
+    dialogSurplusActivity.value = false
+    selectedSurplusActivity.value = null
+    surplusActivityOptions.value = []
+    valueInfo.value = null
+}
+
+// 确认参加surplus活动
+const confirmSurplusActivity = async () => {
+    surplusActivityLoading.value = true
+    let res = await activityApi.ActivitySurplusAdd({
+        login: selectedAccount.value.login,
+        platform: selectedAccount.value.platform,
+        level: selectedSurplusActivity.value,
+    })
+    if (res.code == Code.StatusOK) {
+        uni.showToast({ title: res.msg, icon: "success" })
+        closeSurplusActivityDialog()
+        surplusActivityLoading.value = false
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+// 关闭surplus活动弹框
+const closeSurplusActivityDialog1 = () => {
+    dialogSurplusActivity1.value = false
+    selectedSurplusActivity1.value = null
+    surplusActivityOptions1.value = []
+    valueInfo.value = null
+}
+
+const confirmSurplusActivity1 = async () => {
+    surplusActivityLoading1.value = true
+    let res = await activityApi.ActivityMonthlyAdd({})
+    if (res.code == Code.StatusOK) {
+        uni.showToast({ title: res.msg, icon: "success" })
+        closeSurplusActivityDialog1()
+        surplusActivityLoading1.value = false
+        getActivityShowsInfo()
+    } else {
+        uni.showToast({ title: res.msg, icon: "none" })
+    }
+}
+
+//搜索
+const handleSearch = () => {
+    pagerInfo.current = 1
+    searchFunc()
+    searchFunc1()
+}
+
+//新增
+const closeDiaAdd = () => {
+    dialogInfoTradingAdd.value = false
+}
+
+const closeAdd = (val: boolean) => {
+    dialogInfoTradingAdd.value = val
+}
+
+const confirmToReload = () => {
+    dialogInfoTradingAdd.value = false
+    searchFunc()
+}
+
+//申请列表弹出
+const checkActivity = (val: any) => {
+    information.value.id = val.id
+    information.value.title = val.title
+    openType.value = "activity_List"
+    dialogInfoTradingAdd.value = true
+}
+
+//申请活动弹出
+const applications = (val: any) => {
+    information.value.id = val.id
+    information.value.title = val.title
+    let loginType: any[] = []
+    val.loginTypes.forEach((item: any) => {
+        loginType.push(item.loginType)
+    })
+    let groupType: any[] = []
+    val.groupTypes.forEach((item: any) => {
+        groupType.push(item.groupType)
+    })
+    information.value.loginTypes = loginType
+    information.value.groupTypes = groupType
+    information.value.myType12 = 1
+    openType.value = "appl_activity"
+    dialogInfoTradingAdd.value = true
+}
+
+//详情
+const toSingle = (id: string, listID?: string) => {
+    if (
+        id == "20zj" ||
+        id == "23yx" ||
+        id == "23jx" ||
+        id == "23nz" ||
+        id == "23nzTwo" ||
+        id == "23jxVip" ||
+        id == "23xinjia" ||
+        id == "23jnhcj" ||
+        id == "23nz_zx" ||
+        id == "24JYB" ||
+        id == "NoWorries" ||
+        id == "NewYear24"
+    ) {
+        if (id == "23jx") {
+            uni.navigateTo({
+                url: `/pages/activities/content/index?id=&type=1&active=${id}&data1=${tableData3.value.show ? tableData3.value.activityStartTime : tableData3.value.showActivityStartTime}&data2=${tableData3.value.show ? tableData3.value.activityEndTime : tableData3.value.showActivityEndTime}&data3=${tableData3.value.show ? tableData3.value.applicationStartTime : tableData3.value.showApplicationStartTime}&data4=${tableData3.value.show ? tableData3.value.applicationEndTime : tableData3.value.showApplicationEndTime}`,
+            })
+        } else if (id == "23jxVip") {
+            uni.navigateTo({
+                url: `/pages/activities/content/index?id=&type=1&active=${id}&data1=${tableData3Vip.value.show ? tableData3Vip.value.activityStartTime : tableData3Vip.value.showActivityStartTime}&data2=${tableData3Vip.value.show ? tableData3Vip.value.activityEndTime : tableData3Vip.value.showActivityEndTime}&data3=${tableData3Vip.value.show ? tableData3Vip.value.applicationStartTime : tableData3Vip.value.showApplicationStartTime}&data4=${tableData3Vip.value.show ? tableData3Vip.value.applicationEndTime : tableData3Vip.value.showApplicationEndTime}`,
+            })
+        } else if (id == "24JYB") {
+            uni.navigateTo({
+                url: `/pages/activities/content/index?id=&type=1&active=${id}&data1=${tableData3JYB.value.show ? tableData3JYB.value.activityStartTime : tableData3JYB.value.showActivityStartTime}&data2=${tableData3JYB.value.show ? tableData3JYB.value.activityEndTime : tableData3JYB.value.showActivityEndTime}&data3=${tableData3JYB.value.show ? tableData3JYB.value.applicationStartTime : tableData3JYB.value.showApplicationStartTime}&data4=${tableData3JYB.value.show ? tableData3JYB.value.applicationEndTime : tableData3JYB.value.showApplicationEndTime}`,
+            })
+        } else if (id == "23nz") {
+            uni.navigateTo({
+                url: `/pages/activities/content/index?id=&type=1&active=${id}&data3=${tableData4.value.show ? tableData4.value.applicationStartTime : tableData4.value.showApplicationStartTime}&data4=${tableData4.value.show ? tableData4.value.applicationEndTime : tableData4.value.showApplicationEndTime}`,
+            })
+        } else if (id == "23nzTwo") {
+            uni.navigateTo({
+                url: `/pages/activities/content/index?id=&type=1&active=${id}&data3=${tableData4Two.value.show ? timeConvert(tableData4Two.value.applicationStartTime) : timeConvert(tableData4Two.value.showApplicationStartTime)}&data4=${tableData4Two.value.show ? timeConvert(tableData4Two.value.applicationEndTime) : timeConvert(tableData4Two.value.showApplicationEndTime)}`,
+            })
+        } else if (id == "NoWorries") {
+            uni.navigateTo({
+                url: `/pages/activities/content/index?id=&type=1&active=${id}`,
+            })
+        } else if (id == "NewYear24") {
+            uni.navigateTo({
+                url: `/pages/activities/content/index?id=&type=1&active=${id}`,
+            })
+        } else {
+            uni.navigateTo({
+                url: `/pages/activities/content/index?id=&type=1&active=${id}`,
+            })
+        }
+    } else if (id == "newList") {
+        uni.navigateTo({
+            url: `/pages/activities/content/index?id=${listID}&type=1&active=newList`,
+        })
+    } else {
+        uni.navigateTo({
+            url: `/pages/activities/content/index?id=${id}&type=1`,
+        })
+    }
+}
+
+const handleValueInfoChange = (value: any) => {
+    const selectedAccountObj = loginOptions1.value.find((item) => item.login === value)
+    console.log("选中的账户对象:", selectedAccountObj)
+    selectedAccount.value = selectedAccountObj
+    getSurplusActivityOptions()
+}
+
+// ==================== 监听器 ====================
+watch(NewYear24DataBalance, (newVal) => {
+    NewYear24Data.balance = Number(newVal) || 0
+})
+
+// ==================== 生命周期 ====================
+onMounted(() => {
+    getDateList()
+    // 2025-07-31 00:00:00 之后关闭 standard
+    const endTime = new Date("2025/07/31 00:00:00").getTime()
+    const timezone = 3
+    const offset_GMT = new Date().getTimezoneOffset()
+    const nowDate = new Date().getTime()
+    const now = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000).getTime()
+    if (now >= endTime) {
+        standard.value = false
+    }
+    is20Open()
+    searchFunc()
+    searchFunc1()
+    // getActivityPercentageGiveInfo()
+    Activity23HundredInfo()
+    // Activity23JiangxinInfo()
+    Activity23JiangxinInfoVip()
+    Activity24nianzhongInfo()
+    Activity24nianzhongTwoInfo()
+    GetActivityCptCode()
+    Activity24JYBInfoVip()
+    ActivityNoWorriesInfo()
+    isRaffleOpen()
+    isNewYear24Open()
+    ActivityRequiteInfo()
+    getActivityShowsInfo()
+})
+
+onUnmounted(() => {
+    if (interval.value) {
+        clearInterval(interval.value)
+    }
+})
+
+// UniApp 页面生命周期
+onLoad((options) => {
+    // 页面加载时的逻辑
+})
+
+onPullDownRefresh(() => {
+    // 下拉刷新
+    searchFunc()
+    searchFunc1()
+    uni.stopPullDownRefresh()
+})
+
+onReachBottom(() => {
+    // 上拉加载更多
+    if (pagerInfo.current < pagerInfo.pageTotal) {
+        pagerInfo.current++
+        searchFunc()
+    }
+})
+
+// ==================== 导出 ====================
+// 由于使用 <script setup>,所有顶层绑定都会自动暴露给模板
+</script>
+
+<style scoped lang="scss">
+@import "@/uni.scss";
+
+.custom_activities {
+    width: 100%;
+    height: 100%;
+
+    .main-content {
+        width: 100%;
+        height: calc(100% - 50px);
+        box-sizing: border-box;
+
+        .tab {
+            width: 100%;
+            height: calc(100% - 62px);
+            overflow-y: auto;
+            // padding: 0 10px;
+            box-sizing: border-box;
+        }
+
+        .activity-list {
+            display: grid;
+            grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
+            gap: 20px;
+            padding: 10px 0;
+        }
+
+        .activity-card {
+            background: #fff;
+            border-radius: 8px;
+            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+            overflow: hidden;
+            position: relative;
+            transition: transform 0.3s ease, box-shadow 0.3s ease;
+
+            &:hover {
+                transform: translateY(-2px);
+                box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+            }
+
+            .btn-tag-star {
+                position: absolute;
+                top: 4px;
+                left: -15px;
+                background: #eb3f57;
+                color: #fff;
+                transform: rotate(-45deg);
+                -ms-transform: rotate(-45deg);
+                -moz-transform: rotate(-45deg);
+                -webkit-transform: rotate(-45deg);
+                -o-transform: rotate(-45deg);
+                width: 60px;
+                text-align: center;
+                z-index: 9;
+                padding: 1px 0;
+            }
+
+            .card-content {
                 display: flex;
-                align-items: center;
-                padding: 0 20rpx;
-                height: 60rpx;
-                background-color: var(--color-white);
-                border: 1rpx solid #dcdfe6;
-                border-radius: 8rpx;
-                font-size: 28rpx;
-                color: #606266;
-                cursor: pointer;
-                margin: 0 10rpx;
+                flex-direction: column;
+                height: 100%;
+            }
 
-                &.disabled {
-                    opacity: 0.5;
-                    cursor: not-allowed;
-                    pointer-events: none;
+            .card-image {
+                width: 100%;
+                height: 180px;
+                overflow: hidden;
+
+                .img {
+                    width: 100%;
+                    height: 100%;
+                    object-fit: cover;
+                    transition: transform 0.3s ease;
+                }
+
+                &:hover .img {
+                    transform: scale(1.05);
+                }
+            }
+
+            .card-body {
+                padding: 16px;
+                flex: 1;
+                display: flex;
+                flex-direction: column;
+            }
+
+            .card-title {
+                display: flex;
+                justify-content: space-between;
+                align-items: flex-start;
+                margin-bottom: 12px;
+
+                .title-text {
+                    font-weight: bold;
+                    font-size: 16px;
+                    flex: 1;
+                    padding-right: 10px;
+                    box-sizing: border-box;
+                    color: #333;
+                }
+
+                .card-time {
+                    font-size: 12px;
+                    color: #999;
                 }
             }
 
-            .page-numbers {
+            .card-description {
+                font-size: 14px;
+                color: #666;
+                margin-bottom: 16px;
+                line-height: 1.4;
+                flex: 1;
+            }
+
+            .card-actions {
                 display: flex;
-                gap: 10rpx;
-
-                .page-number {
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    min-width: 60rpx;
-                    height: 60rpx;
-                    padding: 0 8rpx;
-                    background-color: var(--color-white);
-                    border: 1rpx solid #dcdfe6;
-                    border-radius: 8rpx;
-                    font-size: 28rpx;
-                    color: #606266;
-                    cursor: pointer;
-
-                    &.active {
-                        background-color: #cf1322;
-                        border-color: #007aff;
-                        color: #fff;
+                flex-wrap: wrap;
+                gap: 8px;
+            }
+
+            .action-btn {
+                padding: 6px 12px;
+                border-radius: 4px;
+                font-size: 14px;
+                text-align: center;
+                transition: all 0.3s ease;
+
+                &.primary {
+                    background: #eb3f57;
+                    color: #fff;
+                }
+
+                &.secondary {
+                    border: 1px solid #ddd;
+                    color: #666;
+
+                    &:hover {
+                        border-color: #eb3f57;
+                        color: #eb3f57;
                     }
                 }
+
+                &.disabled {
+                    background: #f5f5f5;
+                    color: #999;
+                    pointer-events: none;
+                    cursor: auto;
+                }
             }
         }
     }
 
-    .activity-list {
-        display: flex;
-        flex-direction: column;
-        flex-wrap: wrap;
-        gap: 20rpx;
+    .NewYear_calculator {
+        .content {
+            margin-bottom: 20px;
+        }
+
+        .tip {
+            margin-top: 20px;
+            margin-bottom: 20px;
+            font-size: 16px;
+        }
+
+        .red {
+            color: #eb3f57;
+        }
+    }
+}
+</style>
+
+<style lang="scss" scoped>
+#custom_activities {
+    .dialog_header_w.dialogNewTask {
+        .el-dialog__header {
+            font-weight: bold;
+        }
+    }
+
+    .dialog_header_w.dialogNewTaskcj {
+        border-radius: 10px;
+
+        .el-dialog__header {
+            padding-top: 30px;
+
+            .el-dialog__title {
+                font-weight: bold;
+                font-size: 28px;
+            }
+        }
     }
 }
 </style>

+ 13 - 6
pages/customer/components/PaymentMethodsList.vue

@@ -10,16 +10,22 @@
           <text class="title">{{ item.name }}</text>
           <view v-if="item.payTypeTags && item.payTypeTags.length > 0" class="pay-box">
             <view class="carousel-box">
-              <view class="carousel-track">
-                <!-- 原始图标 -->
+              <!-- 超过3个:轮播 -->
+              <view v-if="item.payTypeTags.length > 3" class="carousel-track carousel-animate">
                 <view v-for="(icon, index) in item.payTypeTags" :key="index" class="pay-icon-container">
                   <image class="pay-icon" :src="imgUrl + icon" mode="widthFix" />
                 </view>
-                <!-- 复制一份,实现无缝循环 -->
                 <view v-for="(icon, index) in item.payTypeTags" :key="`copy-${index}`" class="pay-icon-container">
                   <image class="pay-icon" :src="imgUrl + icon" mode="widthFix" />
                 </view>
               </view>
+
+              <!-- 小于等于3个:不轮播 -->
+              <view v-else class="carousel-track">
+                <view v-for="(icon, index) in item.payTypeTags" :key="index" class="pay-icon-container">
+                  <image class="pay-icon" :src="imgUrl + icon" mode="widthFix" />
+                </view>
+              </view>
             </view>
           </view>
         </view>
@@ -138,7 +144,6 @@ const handleClick = (item) => {
         margin-right: px2rpx(12);
       }
 
-      // 外层容器:固定显示 3 个位置
       .pay-box {
         width: px2rpx(32 * 3 + 8 * 2);
         flex-shrink: 0;
@@ -154,11 +159,13 @@ const handleClick = (item) => {
         display: flex;
         gap: px2rpx(8);
         width: max-content;
-        // ✅ 匀速无限循环
+      }
+
+      // 只有超过3个才加动画
+      .carousel-animate {
         animation: carousel 8s linear infinite;
       }
 
-      // ✅ 匀速移动:移动整整一倍长度(无缝)
       @keyframes carousel {
         0% {
           transform: translateX(0);

+ 3 - 1
pages/customer/trade-history.vue

@@ -134,7 +134,9 @@ const searchParams = ref({})
 const tableRef = ref(null)
 const handleSearch = (params) => {
     Object.assign(search, params)
-    search.login = Number(params.login)
+
+    // search.login = params.login && Number(params.login)
+    // console.log(params.login, 12);
     search.platform = loginOptions.find(item => item.value == params.login)?.platform || ''
     nextTick(() => {
         tableRef.value.refreshTable()

+ 2 - 1
pages/customer/trade-position.vue

@@ -140,7 +140,8 @@ const searchParams = ref({})
 const tableRef = ref(null)
 const handleSearch = (params) => {
     Object.assign(search, params)
-    search.login = Number(params.login)
+    // search.login = params.login && Number(params.login)
+    // console.log(params.login, 12);
     search.platform = loginOptions.find(item => item.value === params.login)?.platform || ''
     nextTick(() => {
         tableRef.value.refreshTable()