zhb 2 miesięcy temu
rodzic
commit
5e46cd558d

+ 40 - 21
pages/activities/components/ActivityCard.vue

@@ -5,24 +5,20 @@
             <view v-if="config.hot" class="btn-tag-star">
                 <uni-icons type="star-filled" size="16" color="#ffd700"></uni-icons>
             </view>
-
             <!-- 图片区域 -->
             <view class="img crm-cursor" @click="handleClick">
                 <image :src="imageSrc" mode="widthFix" />
-                <!-- <view v-if="config.imageTitle" class="imgTitle">{{ t(config.imageTitle) }}</view> -->
             </view>
-
             <!-- 内容区域 -->
             <view class="content">
                 <view class="content-box">
                     <view v-if="config.time" class="time">{{ config.time }}</view>
                     <view class="title" @click="handleClick">{{ t(config.title) }}</view>
                     <view v-if="config.description" class="des crm-one-font">{{ t(config.description) }}</view>
-
                     <!-- 按钮区域 -->
                     <view class="bottom">
                         <template v-for="(btn, index) in config.buttons" :key="index">
-                            <span v-if="shouldShowButton(btn)" :class="['btn', getButtonType(btn)]"
+                            <text v-if="shouldShowButton(btn)" :class="['btn', getButtonType(btn)]"
                                 @click="handleButtonClick(btn)">
                                 {{ t(btn.text) }}
                                 <template v-if="btn.suffix && state[btn.suffix]">
@@ -31,10 +27,10 @@
                                 <template v-if="btn.suffixText">
                                     {{ t(btn.suffixText) }}
                                 </template>
-                            </span>
-                            <span v-else-if="btn.elseType && btn.condition" :class="['btn', btn.elseType]">
+                            </text>
+                            <text v-else-if="btn.elseType && btn.condition" :class="['btn', btn.elseType]">
                                 {{ t(btn.text) }}
-                            </span>
+                            </text>
                         </template>
                     </view>
                 </view>
@@ -48,7 +44,6 @@ import { computed } from 'vue'
 import { useI18n } from 'vue-i18n'
 
 const { t, locale } = useI18n()
-
 const props = defineProps<{
     config: any
     state?: Record<string, any>
@@ -58,6 +53,7 @@ const emit = defineEmits(['action'])
 
 // 图片源
 const imageSrc = computed(() => {
+
     if (typeof props.config.image === 'object') {
         const lang = locale.value || 'en'
         return props.config.image[lang] || props.config.image.default
@@ -90,11 +86,36 @@ const shouldShowButton = (btn: any): boolean => {
         return false
     }
 }
+// 判断按钮是否灰色
+const shouldClassCondition = (btn: any): boolean => {
+    if (!btn.classCondition) return true
+    if (!props.state) return false
+
+    try {
+        const conditionStr = btn.classCondition
+        const evalStr = conditionStr.replace(/([a-zA-Z_][a-zA-Z0-9_.]*)/g, (match) => {
+            if (match.includes('.')) {
+                const parts = match.split('.')
+                let value: any = props.state
+                for (const part of parts) {
+                    value = value?.[part]
+                }
+                return JSON.stringify(value)
+            }
+            return JSON.stringify(props.state[match])
+        })
+        const fn = new Function(`return ${evalStr}`)
+        return fn()
+    } catch (error) {
+        console.error('按钮条件评估失败:', error, btn.condition)
+        return false
+    }
+}
 
 // 获取按钮类型
 const getButtonType = (btn: any): string => {
     if (btn.type === 'dynamic') {
-        return shouldShowButton(btn) ? 'red' : 'gray'
+        return shouldShowButton(btn) && shouldClassCondition(btn) ? 'red' : 'red gray'
     }
     return btn.type
 }
@@ -128,7 +149,6 @@ const handleButtonClick = (btn: any) => {
     position: relative;
     margin-bottom: px2rpx(20);
     padding: 0;
-    // overflow: hidden;
     aspect-ratio: 3 / 4;
 
     .btn-tag-star {
@@ -241,25 +261,24 @@ const handleButtonClick = (btn: any) => {
                 white-space: nowrap;
                 letter-spacing: px2rpx(1);
                 text-transform: uppercase;
+                padding: px2rpx(8) px2rpx(16);
+                box-sizing: border-box;
+                cursor: pointer;
 
                 &.red {
                     width: 100%;
                     background-color: var(--color-secondary);
-                    border: 1px solid #333333;
-                }
-
-                &.gray {
-                    padding: px2rpx(8) px2rpx(16);
-                    font-size: px2rpx(11);
-                    background-color: var(--color-navy-200);
-                    border: 1px solid var(--color-sky-100);
                 }
 
                 &.check {
-                    padding: px2rpx(8) px2rpx(16);
                     font-size: px2rpx(11);
                     background-color: var(--color-error);
                 }
+
+                &.gray {
+                    cursor: not-allowed;
+                    background-color: var(--color-navy-200);
+                }
             }
         }
     }
@@ -296,7 +315,7 @@ const handleButtonClick = (btn: any) => {
     .active-box {
 
         .title {
-            width: px2rpx(200)  !important;
+            width: px2rpx(200) !important;
         }
     }
 }

+ 3 - 3
pages/activities/composables/useActivityActions.ts

@@ -134,15 +134,15 @@ export function useActivityActions(
     }
 
     const toTaskList = () => {
-        uni.navigateTo({ url: '/pages/customer/task/list' })
+        uni.navigateTo({ url: '/pages/customer/task-list' })
     }
 
     const goSurplusTaskList = () => {
-        uni.navigateTo({ url: '/pages/customer/surplus/list' })
+        uni.navigateTo({ url: '/pages/customer/surplus-list' })
     }
 
     const goMonthlyTaskList = () => {
-        uni.navigateTo({ url: '/pages/customer/monthly/list' })
+        uni.navigateTo({ url: '/pages/customer/monthly-list' })
     }
 
     const toDocumentary = () => {

+ 75 - 80
pages/activities/composables/useActivityData.ts

@@ -1,11 +1,11 @@
 import { ref, reactive, computed, onMounted, onUnmounted } from 'vue'
 import { useI18n } from 'vue-i18n'
-import {activityApi} from '@/service/activity'
-import {customApi} from '@/service/custom'
+import { activityApi } from '@/service/activity'
+import { customApi } from '@/service/custom'
 import Config from '@/config/index'
 import type { ActivityState, PagerInfo, AccountInfo } from '../types/activity'
-
-const { Code, Host80 } = Config
+import useUserStore from "@/stores/use-user-store";
+const { Code, Host05 } = Config
 
 // 国家列表
 const countries = [
@@ -21,28 +21,20 @@ const countries = [
 
 export function useActivityData() {
     const { t, locale } = useI18n()
-    
+    const userStore = useUserStore();
     // ==================== 用户信息 ====================
-    const userInfo = computed(() => {
-        try {
-            return JSON.parse(uni.getStorageSync('user') || '{}')
-        } catch {
-            return { customInfo: {} }
-        }
-    })
-    
-    const country = computed(() => userInfo.value.customInfo?.country || '')
-    const myCid = computed(() => userInfo.value.customInfo?.cId || '')
-    
+    const country = computed(() => userStore?.userInfo?.customInfo?.country || '')
+    const myCid = computed(() => userStore?.userInfo?.customInfo?.cId || '')
+
     // ==================== 加载状态 ====================
     const pictLoading = ref(false)
     const flag = ref(false)
-    
+
     // ==================== 活动数据 ====================
     const tableData = ref<any[]>([])
     const tableDataGive = ref<any[]>([])
     const singleData = ref<any>({})
-    
+
     // 分页
     const pagerInfo = ref<PagerInfo>({
         row: 10,
@@ -50,11 +42,19 @@ export function useActivityData() {
         pageTotal: 0,
         rowTotal: 0
     })
-    
+
     // 账户列表
     const loginOptions = ref<AccountInfo[]>([])
     const loginOptions1 = ref<AccountInfo[]>([])
-    
+
+    // 判断匠鑫活动是否报名结束
+    const timeExpireJx = (endTime: string) => {
+        if (!endTime) return false
+        const endTime1 = endTime.replace(/-/g, '/').split(' ')[0]
+        const now = getCurrentTime(2).getTime()
+        const end = new Date(endTime1).getTime()
+        return now < end
+    }
     // ==================== 活动特定状态 ====================
     const activityState = reactive<ActivityState>({
         tableDataNewYear24Flag: false,
@@ -96,25 +96,26 @@ export function useActivityData() {
         country: country.value,
         lang: locale.value,
         isGuoQin: false,
-        isSupportedCountry: false
+        isSupportedCountry: false,
+        timeExpireJx: timeExpireJx
     })
-    
+
     // 交易大赛参数
     const tableDataCptFlagCode = ref('')
-    
+
     // 新年庆典数据
     const NewYear24DataBalance = ref('')
     const NewYear24Data = ref({ balance: 0, income: 0 })
-    
+
     // 定时器
     const interval = ref<any>(null)
-    
+
     // ==================== 计算属性 ====================
     // 是否支持的国家
     const isSupportedCountry = computed(() => {
         return countries.includes(country.value)
     })
-    
+
     // 国庆节判断
     const isGuoQin = computed(() => {
         const startTime1 = '2024/10/01 00:00:00'
@@ -127,7 +128,7 @@ export function useActivityData() {
         const start = new Date(startTime1).getTime()
         return now > start && now < end
     })
-    
+
     // ==================== 工具函数 ====================
     // 获取当前时间(带时区)
     const getCurrentTime = (timezone: number = 2) => {
@@ -135,12 +136,12 @@ export function useActivityData() {
         const nowDate = new Date().getTime()
         return new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000)
     }
-    
+
     // 时间补0
     const getzero = (time: number) => {
         return time > 9 ? time : '0' + time
     }
-    
+
     // 时间格式转换
     const timeConvert = (val: string) => {
         if (!val) return ''
@@ -152,7 +153,7 @@ export function useActivityData() {
         if (date < 10) date = '0' + date
         return year + '年' + month + '月' + date + '日'
     }
-    
+
     // 货币符号
     const groupCurrency = (type: string) => {
         const map: Record<string, string> = {
@@ -163,7 +164,7 @@ export function useActivityData() {
         }
         return map[type] || ': $'
     }
-    
+
     // 账户类型名称
     const groupTypeName = (type: string) => {
         const map: Record<string, string> = {
@@ -177,7 +178,7 @@ export function useActivityData() {
         }
         return map[type] ? t(map[type]) : ''
     }
-    
+
     // 判断活动是否在有效期内
     const overdue = (startTime: string, endTime: string) => {
         if (!startTime || !endTime) return false
@@ -188,21 +189,13 @@ export function useActivityData() {
         const end = new Date(endTime1).getTime()
         return start < now && now < end
     }
-    
-    // 判断匠鑫活动是否报名结束
-    const timeExpireJx = (endTime: string) => {
-        if (!endTime) return false
-        const endTime1 = endTime.replace(/-/g, '/').split(' ')[0]
-        const now = getCurrentTime(2).getTime()
-        const end = new Date(endTime1).getTime()
-        return now < end
-    }
-    
+
+
     // 判断是否在9月30日之后
     const isAfterSeptember30 = () => {
         return true // 根据实际需求修改
     }
-    
+
     // ==================== API 请求函数 ====================
     // 获取账户信息
     const getDateList = async () => {
@@ -217,13 +210,13 @@ export function useActivityData() {
             console.error('获取账户信息失败', error)
         }
     }
-    
+
     // 获取活动列表
     const searchFunc = async (page: number = 1) => {
         if (flag.value) return
         flag.value = true
         pictLoading.value = true
-        
+
         try {
             const res = await activityApi.ActivityExtensionIist({
                 hot: '',
@@ -234,7 +227,7 @@ export function useActivityData() {
                     row: pagerInfo.value.row
                 }
             })
-            
+
             if (res.code == Code.StatusOK) {
                 tableData.value = res.data
                 pagerInfo.value.rowTotal = res.page.rowTotal
@@ -249,7 +242,7 @@ export function useActivityData() {
             flag.value = false
         }
     }
-    
+
     // 获取赠送活动列表
     const searchFunc1 = async () => {
         pictLoading.value = true
@@ -261,7 +254,9 @@ export function useActivityData() {
                 }
             })
             if (res.code == Code.StatusOK) {
-                tableDataGive.value = res.data
+                tableDataGive.value = res.data.map((i) => {
+                    return { ...i, image: Host05 + i.coverUrl }
+                })
                 pagerInfo.value.rowTotal = res.page.rowTotal
                 pagerInfo.value.pageTotal = res.page.pageTotal
             } else {
@@ -273,7 +268,7 @@ export function useActivityData() {
             pictLoading.value = false
         }
     }
-    
+
     // 获取单个活动详情
     const getSingle = async (id: string) => {
         try {
@@ -287,7 +282,7 @@ export function useActivityData() {
             console.error('获取活动详情失败', error)
         }
     }
-    
+
     // 获取赠送活动详情
     const getSingle1 = async (id: string) => {
         try {
@@ -301,7 +296,7 @@ export function useActivityData() {
             console.error('获取赠送活动详情失败', error)
         }
     }
-    
+
     // 2023迎新活动数据
     const Activity23HundredInfo = async () => {
         try {
@@ -313,7 +308,7 @@ export function useActivityData() {
                     const nowTime = getCurrentTime(2).getTime()
                     const startTime = new Date(activityState.tableData2.activityStartTime.replace(/-/g, '/')).getTime()
                     const endTime = new Date(activityState.tableData2.activityEndTime.replace(/-/g, '/')).getTime()
-                    
+
                     if (nowTime < endTime && nowTime > startTime) {
                         if (activityState.tableData2.status == 2 && activityState.tableData2.activityStatus == 0) {
                             activityState.isTransform = 1
@@ -327,7 +322,7 @@ export function useActivityData() {
                     } else {
                         activityState.isTransform = 2
                     }
-                    
+
                     if (activityState.tableData2.status == 2 && activityState.tableData2.activityStatus == 2) {
                         activityState.isTransform = null
                         if (activityState.tableData2.realizationStatus == 0) {
@@ -354,7 +349,7 @@ export function useActivityData() {
             console.error('获取2023迎新活动数据失败', error)
         }
     }
-    
+
     // 2023匠鑫活动数据
     const Activity23JiangxinInfo = async () => {
         try {
@@ -384,7 +379,7 @@ export function useActivityData() {
             console.error('获取2023匠鑫活动数据失败', error)
         }
     }
-    
+
     // 2023匠鑫活动数据Vip
     const Activity23JiangxinInfoVip = async () => {
         try {
@@ -414,7 +409,7 @@ export function useActivityData() {
             console.error('获取2023匠鑫活动数据Vip失败', error)
         }
     }
-    
+
     // 2023年中赠金活动数据-10
     const Activity24nianzhongInfo = async () => {
         try {
@@ -433,7 +428,7 @@ export function useActivityData() {
             console.error('获取年中赠金活动数据失败', error)
         }
     }
-    
+
     // 2023年中赠金活动数据-20
     const Activity24nianzhongTwoInfo = async () => {
         try {
@@ -452,7 +447,7 @@ export function useActivityData() {
             console.error('获取年中赠金活动数据-20失败', error)
         }
     }
-    
+
     // 交易大赛数据-参数
     const GetActivityCptCode = async () => {
         try {
@@ -469,7 +464,7 @@ export function useActivityData() {
             console.error('获取交易大赛参数失败', error)
         }
     }
-    
+
     // 交易大赛数据
     const ActivityCptInfo = async (code: string) => {
         try {
@@ -484,7 +479,7 @@ export function useActivityData() {
             console.error('获取交易大赛数据失败', error)
         }
     }
-    
+
     // 24精英杯活动
     const Activity24JYBInfoVip = async () => {
         try {
@@ -514,7 +509,7 @@ export function useActivityData() {
             console.error('获取24精英杯活动数据失败', error)
         }
     }
-    
+
     // 24无忧交易
     const ActivityNoWorriesInfo = async () => {
         try {
@@ -526,7 +521,7 @@ export function useActivityData() {
                     const nowTime = getCurrentTime(2).getTime()
                     const startTime = new Date(activityState.tableDataNoWorries.compensateTime.replace(/-/g, '/')).getTime()
                     const endTime = new Date(activityState.tableDataNoWorries.revokeTime.replace(/-/g, '/')).getTime()
-                    
+
                     if (nowTime < endTime && nowTime > startTime &&
                         (activityState.tableDataNoWorries.status == 0 || activityState.tableDataNoWorries.status == 3) &&
                         activityState.tableDataNoWorries.compensateStatus == 2 &&
@@ -547,7 +542,7 @@ export function useActivityData() {
             console.error('获取无忧交易数据失败', error)
         }
     }
-    
+
     // CWG 现金嘉年华-新任务
     const ActivitYdepositRaffleAim = async () => {
         try {
@@ -564,7 +559,7 @@ export function useActivityData() {
             console.error('获取新任务数据失败', error)
         }
     }
-    
+
     // CWG 现金嘉年华-抽奖次数
     const ActivitYdepositRaffleinfo = async () => {
         try {
@@ -578,7 +573,7 @@ export function useActivityData() {
             console.error('获取抽奖次数失败', error)
         }
     }
-    
+
     // 抽奖活动是否到期
     const isRaffleOpen = () => {
         const endTime1 = '2025/9/30 23:59:59'
@@ -586,14 +581,14 @@ export function useActivityData() {
         const now = getCurrentTime(2).getTime()
         const end = new Date(endTime1).getTime()
         const start = new Date(startTime1).getTime()
-        
+
         if (now < end && start < now) {
             activityState.choujiaClose = true
             ActivitYdepositRaffleAim()
             ActivitYdepositRaffleinfo()
         }
     }
-    
+
     // 新年庆典是否到期
     const isNewYear24Open = () => {
         const endTime1 = '2025/3/31 23:59:59'
@@ -601,12 +596,12 @@ export function useActivityData() {
         const now = getCurrentTime(2).getTime()
         const end = new Date(endTime1).getTime()
         const start = new Date(startTime1).getTime()
-        
+
         if (now < end && start < now) {
             ActivityNewYear24()
         }
     }
-    
+
     // 新年庆典数据
     const ActivityNewYear24 = async () => {
         try {
@@ -621,7 +616,7 @@ export function useActivityData() {
             console.error('获取新年庆典数据失败', error)
         }
     }
-    
+
     // 限时活动
     const ActivityRequiteInfo = async () => {
         try {
@@ -635,7 +630,7 @@ export function useActivityData() {
             console.error('获取限时活动数据失败', error)
         }
     }
-    
+
     // 获取活动显示信息
     const getActivityShowsInfo = async () => {
         try {
@@ -655,7 +650,7 @@ export function useActivityData() {
             activityState.monthlyGive = false
         }
     }
-    
+
     // 20赠金是否到期
     const is20Open = () => {
         const endTime1 = '2023/04/30 23:59:59'
@@ -665,7 +660,7 @@ export function useActivityData() {
             activityState.anshiClose = false
         }
     }
-    
+
     // 20赠金活动数据
     const getActivityPercentageGiveInfo = async () => {
         try {
@@ -678,7 +673,7 @@ export function useActivityData() {
             console.error('获取20赠金活动数据失败', error)
         }
     }
-    
+
     // 刷新所有活动数据
     const refreshAllActivities = () => {
         is20Open()
@@ -696,21 +691,21 @@ export function useActivityData() {
         ActivityRequiteInfo()
         getActivityShowsInfo()
     }
-    
+
     // 分页处理
     const handlePageChange = (page: number) => {
         pagerInfo.value.current = page
         searchFunc(page)
         searchFunc1()
     }
-    
+
     // 清理定时器
     onUnmounted(() => {
         if (interval.value) {
             clearInterval(interval.value)
         }
     })
-    
+
     return {
         // 状态
         pictLoading,
@@ -725,13 +720,13 @@ export function useActivityData() {
         tableDataCptFlagCode,
         NewYear24DataBalance,
         NewYear24Data,
-        
+
         // 计算属性
         country,
         myCid,
         isSupportedCountry,
         isGuoQin,
-        
+
         // 工具函数
         getCurrentTime,
         getzero,
@@ -741,7 +736,7 @@ export function useActivityData() {
         overdue,
         timeExpireJx,
         isAfterSeptember30,
-        
+
         // API函数
         getDateList,
         searchFunc,

+ 51 - 447
pages/activities/config/activityConfigs.ts

@@ -1,37 +1,8 @@
 // 静态活动配置
 export const staticActivityConfigs = [
+
     {
-        id: 'NewYear24',
-        title: 'news_add_field1.NewYear24.item1',
-        description: 'news_add_field1.NewYear24.item2',
-        image: '/static/images/cwg-menu-icons-13.jpg',
-        showCondition: 'tableDataNewYear24Flag',
-        hot: true,
-        buttons: [
-            {
-                type: 'red',
-                text: 'news_add_field1.NewYear24.item4',
-                action: 'openCalculator'
-            },
-            {
-                type: 'red',
-                text: 'news_add_field1.NewYear24.item9',
-                action: 'toSingle',
-                params: ['NewYear24']
-            },
-            {
-                type: 'check',
-                text: 'news_add_field1.NewYear24.item3',
-                action: 'openPdf',
-                pdf: {
-                    cn: '/pdf/pdf3/pdf-cn.pdf',
-                    zhHant: '/pdf/pdf3/pdf-zhHant.pdf',
-                    default: '/pdf/pdf3/pdf-en.pdf'
-                }
-            }
-        ]
-    },
-    {
+        // CWG Markets 月赏礼遇
         id: 'monthlyGift',
         title: 'MonthlyActivities.item1',
         description: 'MonthlyActivities.item1_1',
@@ -43,7 +14,7 @@ export const staticActivityConfigs = [
                 type: 'dynamic',
                 text: 'news_add_field1.activities10_trading_aoyun.item3',
                 action: 'openSurplusActivityDialog1',
-                condition: 'monthlyGive'
+                classCondition: 'monthlyGive'
             },
             {
                 type: 'check',
@@ -65,6 +36,7 @@ export const staticActivityConfigs = [
         ]
     },
     {
+        // 赠金活动
         id: 'bonusGift',
         title: 'surplusList.item1',
         description: 'surplusList.item2',
@@ -75,7 +47,7 @@ export const staticActivityConfigs = [
                 type: 'dynamic',
                 text: 'news_add_field1.activities10_trading_aoyun.item3',
                 action: 'openSurplusActivityDialog',
-                condition: 'surplusGive'
+                classCondition: 'surplusGive'
             },
             {
                 type: 'check',
@@ -105,242 +77,7 @@ export const staticActivityConfigs = [
         ]
     },
     {
-        id: 'cashCarnival',
-        title: 'wallet.item8',
-        description: 'wallet.item9',
-        image: '/static/images/cash-carnival.webp',
-        imageTitle: 'wallet.item8',
-        showCondition: 'choujiaClose',
-        hot: true,
-        onClick: 'toSingle',
-        onClickParams: ['23jnhcj'],
-        buttons: [
-            {
-                type: 'red',
-                text: 'wallet.item10',
-                action: 'toHistoryLuckyDraw',
-                suffix: 'LuckyDrawsNumber',
-                suffixText: 'wallet.item11'
-            },
-            {
-                type: 'check',
-                text: 'wallet.item12',
-                action: 'toOpenTask'
-            },
-            {
-                type: 'dynamic',
-                text: 'wallet.item13',
-                action: 'toNewTask',
-                condition: 'newTask',
-                elseType: 'gray'
-            },
-            {
-                type: 'check',
-                text: 'wallet.item14',
-                action: 'toTaskList'
-            },
-            {
-                type: 'check',
-                text: 'wallet.item15',
-                action: 'openPdf',
-                pdf: {
-                    dynamic: true,
-                    langMap: {
-                        ar: '/pdf/pdf5/ar.pdf',
-                        cn: '/pdf/pdf5/cn.pdf',
-                        de: '/pdf/pdf5/en.pdf',
-                        en: '/pdf/pdf5/en.pdf',
-                        es: '/pdf/pdf5/es.pdf',
-                        fa: '/pdf/pdf5/en.pdf',
-                        id: '/pdf/pdf5/en.pdf',
-                        ko: '/pdf/pdf5/ko.pdf',
-                        ms: '/pdf/pdf5/en.pdf',
-                        pt: '/pdf/pdf5/pt.pdf',
-                        th: '/pdf/pdf5/th.pdf',
-                        tr: '/pdf/pdf5/en.pdf',
-                        vn: '/pdf/pdf5/vn.pdf',
-                        zhHant: '/pdf/pdf5/zhHant.pdf'
-                    }
-                }
-            }
-        ]
-    },
-    {
-        id: 'noWorries',
-        title: 'news_add_field1.activitiesNoWorries.item1',
-        description: 'news_add_field1.activitiesNoWorries.item2',
-        image: '/static/images/jihua.png',
-        showCondition: 'tableDataNoWorriesFlag',
-        hot: true,
-        onClick: 'toSingle',
-        onClickParams: ['NoWorries'],
-        buttons: [
-            {
-                type: 'red',
-                text: 'news_add_field1.activitiesNoWorries.item3',
-                action: 'toApplyNoWorriesOpen',
-                condition: 'tableDataNoWorries === true'
-            },
-            {
-                type: 'red',
-                text: 'news_add_field1.activitiesNoWorries.item4',
-                action: 'toRealizationNoWorries',
-                condition: 'isRealizationNoWorries === 1',
-                elseType: 'gray'
-            },
-            {
-                type: 'check',
-                text: 'news_add_field1.activitiesNoWorries.item5',
-                action: 'toSingle',
-                params: ['NoWorries']
-            }
-        ]
-    },
-    {
-        id: 'standardRewards',
-        title: 'news_add_field1.activities10_trading_aoyun.item5',
-        description: 'news_add_field1.activities10_trading_aoyun.item6',
-        image: '/static/images/trading-rewards.webp',
-        showCondition: 'standard',
-        buttons: [
-            {
-                type: 'red',
-                text: 'news_add_field1.activities10_trading_aoyun.item3',
-                action: 'toActivity24Trading'
-            },
-            {
-                type: 'check',
-                text: 'news_add_field1.activities10_trading_aoyun.item4',
-                action: 'openPdf',
-                pdf: {
-                    dynamic: true,
-                    langMap: {
-                        ar: '/pdf/pdf1/ar.pdf',
-                        cn: '/pdf/pdf1/cn.pdf',
-                        de: '/pdf/pdf1/en.pdf',
-                        en: '/pdf/pdf1/en.pdf',
-                        es: '/pdf/pdf1/es.pdf',
-                        fa: '/pdf/pdf1/en.pdf',
-                        id: '/pdf/pdf1/en.pdf',
-                        ko: '/pdf/pdf1/ko.pdf',
-                        ms: '/pdf/pdf1/en.pdf',
-                        pt: '/pdf/pdf1/pt.pdf',
-                        th: '/pdf/pdf1/th.pdf',
-                        tr: '/pdf/pdf1/en.pdf',
-                        vn: '/pdf/pdf1/vn.pdf',
-                        zhHant: '/pdf/pdf1/zhHant.pdf'
-                    }
-                }
-            }
-        ]
-    },
-    {
-        id: 'bonus10',
-        title: 'news_add_field1.activities10_trading_aoyun.item1',
-        description: 'news_add_field1.activities10_trading_aoyun.item2_1',
-        image: '/static/images/10-bonus.webp',
-        showCondition: '!isAfterSeptember30() && !isSupportedCountry',
-        buttons: [
-            {
-                type: 'red',
-                text: 'news_add_field1.activities10_trading_aoyun.item3',
-                action: 'toActivity24nianzhong'
-            },
-            {
-                type: 'check',
-                text: 'news_add_field1.activities10_trading_aoyun.item4',
-                action: 'openPdf',
-                pdf: {
-                    dynamic: true,
-                    path: '/pdf/pdf4/{lang}.pdf'
-                }
-            }
-        ]
-    },
-    {
-        id: 'bonus100',
-        title: 'news_add_field1.activities10_trading_aoyun.item1_2',
-        description: 'news_add_field1.activities10_trading_aoyun.item2_12',
-        image: '/static/images/100-bonus.webp',
-        showCondition: '!isAfterSeptember30() && isSupportedCountry',
-        buttons: [
-            {
-                type: 'red',
-                text: 'news_add_field1.activities10_trading_aoyun.item3',
-                action: 'toActivity24nianzhong'
-            },
-            {
-                type: 'check',
-                text: 'news_add_field1.activities10_trading_aoyun.item4',
-                action: 'openPdf',
-                pdf: {
-                    dynamic: true,
-                    path: '/pdf/pdf4/100Bonus-{lang}.pdf'
-                }
-            }
-        ]
-    },
-    {
-        id: 'welcome2023',
-        title: 'news_add_field1.activities.item8',
-        description: '',
-        image: {
-            cn: '/static/images/23ActiveCn.jpg',
-            zhHant: '/static/images/23ActiveCn1.jpg',
-            default: '/static/images/23ActiveEn.jpg'
-        },
-        showCondition: 'tableData2Flag',
-        hot: true,
-        onClick: 'toSingle',
-        onClickParams: ['23yx'],
-        buttons: [
-            {
-                type: 'red',
-                text: 'news_add_field1.activities.item4',
-                action: 'toApply23Open',
-                condition: 'tableData2 === true'
-            },
-            {
-                type: 'gray',
-                text: 'news_add_field1.activities.item4',
-                condition: 'tableData2 === false'
-            },
-            {
-                type: 'gray',
-                text: 'news_add_field1.activities.item5',
-                condition: 'typeof tableData2 === "object"'
-            },
-            {
-                type: 'red',
-                text: 'news_add_field1.activities.item9',
-                action: 'toTransform',
-                condition: 'isTransform === 1'
-            },
-            {
-                type: 'gray',
-                text: 'news_add_field1.activities.item9',
-                condition: 'isTransform === 2'
-            },
-            {
-                type: 'red',
-                text: 'news_add_field1.activities.item0',
-                action: 'toRealization',
-                condition: 'isRealization === 1'
-            },
-            {
-                type: 'gray',
-                text: 'news_add_field1.activities.item0',
-                condition: 'isRealization === 2'
-            },
-            {
-                type: 'check',
-                text: 'news_add_field1.activities.item7',
-                action: 'toSingle',
-                params: ['23yx']
-            }
-        ]
-    },
-    {
+        // 交易大赛
         id: 'tradingCompetition',
         title: 'news_add_field1.activitiesJYDS2025.item1',
         description: 'news_add_field1.activitiesJYDS2025.item2',
@@ -354,12 +91,7 @@ export const staticActivityConfigs = [
                 type: 'red',
                 text: 'news_add_field1.activitiesJYDS.item3',
                 action: 'toApplyCptOpen',
-                condition: 'tableDataCpt.signStatus === 0'
-            },
-            {
-                type: 'gray',
-                text: 'news_add_field1.activitiesJYDS.item3_1',
-                condition: 'tableDataCpt.signStatus === 1'
+                classCondition: 'tableDataCpt.signStatus === 0'
             },
             {
                 type: 'check',
@@ -375,176 +107,48 @@ export const staticActivityConfigs = [
             }
         ]
     },
-    {
-        id: 'eliteCup24',
-        title: 'news_add_field1.activitiesJYB.item1',
-        description: 'news_add_field1.activitiesJYB.item2',
-        image: '/static/images/jyb.jpg',
-        showCondition: 'tableData3FlagJYB',
-        onClick: 'toSingle',
-        onClickParams: ['24JYB'],
-        buttons: [
-            {
-                type: 'red',
-                text: 'news_add_field1.activitiesJYB.item3',
-                action: 'toApply24JYBOpenVip',
-                condition: 'tableData3JYB.show === 1 && timeExpireJx(tableData3JYB.applicationEndTime)'
-            },
-            {
-                type: 'gray',
-                text: 'news_add_field1.activitiesJYB.item3',
-                action: 'openDialog',
-                params: ['dialogChinaUnionPayJX'],
-                condition: 'tableData3JYB.show === 1 && !timeExpireJx(tableData3JYB.applicationEndTime)'
-            },
-            {
-                type: 'red',
-                text: 'news_add_field1.activitiesJYB.item4',
-                action: 'toRealization24JYBVip',
-                condition: 'isRealizationJxJYB === 1'
-            },
-            {
-                type: 'gray',
-                text: 'news_add_field1.activitiesJYB.item4',
-                condition: 'isRealizationJxJYB === 2'
-            },
-            {
-                type: 'check',
-                text: 'news_add_field1.activitiesJYB.item5',
-                action: 'toSingle',
-                params: ['24JYB']
-            }
-        ]
-    },
-    {
-        id: 'jiangxinCollege',
-        title: 'news_add_field1.activitiesJX.item1',
-        description: 'news_add_field1.activitiesJX.item2',
-        image: '/static/images/hd_img_100.png',
-        showCondition: 'tableData3Flag',
-        hot: true,
-        onClick: 'toSingle',
-        onClickParams: ['23jx'],
-        buttons: [
-            {
-                type: 'red',
-                text: 'news_add_field1.activitiesJX.item3',
-                action: 'toApply23JxOpen',
-                condition: 'tableData3.show === 1 && timeExpireJx(tableData3.applicationEndTime)'
-            },
-            {
-                type: 'gray',
-                text: 'news_add_field1.activitiesJX.item3',
-                action: 'openDialog',
-                params: ['dialogChinaUnionPayJX'],
-                condition: 'tableData3.show === 1 && !timeExpireJx(tableData3.applicationEndTime)'
-            },
-            {
-                type: 'red',
-                text: 'news_add_field1.activitiesJX.item4',
-                action: 'toRealizationJx',
-                condition: 'isRealizationJx === 1'
-            },
-            {
-                type: 'gray',
-                text: 'news_add_field1.activitiesJX.item4',
-                condition: 'isRealizationJx === 2'
-            },
-            {
-                type: 'check',
-                text: 'news_add_field1.activitiesJX.item5',
-                action: 'toSingle',
-                params: ['23jx']
-            }
-        ]
-    },
-    {
-        id: 'jiangxinCollegeVip',
-        title: 'news_add_field1.activitiesJX.item1',
-        description: 'news_add_field1.activitiesJX.item2',
-        image: '/static/images/hd_img_100_1.png',
-        showCondition: 'tableData3FlagVip',
-        onClick: 'toSingle',
-        onClickParams: ['23jxVip'],
-        buttons: [
-            {
-                type: 'red',
-                text: 'news_add_field1.activitiesJX.item3',
-                action: 'toApply23JxOpenVip',
-                condition: 'tableData3Vip.show === 1 && timeExpireJx(tableData3Vip.applicationEndTime)'
-            },
-            {
-                type: 'gray',
-                text: 'news_add_field1.activitiesJX.item3',
-                action: 'openDialog',
-                params: ['dialogChinaUnionPayJX'],
-                condition: 'tableData3Vip.show === 1 && !timeExpireJx(tableData3Vip.applicationEndTime)'
-            },
-            {
-                type: 'red',
-                text: 'news_add_field1.activitiesJX.item4',
-                action: 'toRealizationJxVip',
-                condition: 'isRealizationJxVip === 1'
-            },
-            {
-                type: 'gray',
-                text: 'news_add_field1.activitiesJX.item4',
-                condition: 'isRealizationJxVip === 2'
-            },
-            {
-                type: 'check',
-                text: 'news_add_field1.activitiesJX.item5',
-                action: 'toSingle',
-                params: ['23jxVip']
-            }
-        ]
-    },
-    {
-        id: 'midYearBonus10',
-        title: 'news_add_field1.activitiesNZ.item1',
-        description: 'news_add_field1.activitiesNZ.item2',
-        image: '/static/images/hd_10_500.jpg',
-        showCondition: 'tableData4Flag',
-        hot: true,
-        onClick: 'toSingle',
-        onClickParams: ['23nz'],
-        buttons: [
-            {
-                type: 'red',
-                text: 'news_add_field1.activitiesNZ.item3',
-                action: 'toActivity24nianzhong',
-                condition: 'tableData4.show === 1'
-            },
-            {
-                type: 'check',
-                text: 'news_add_field1.activitiesNZ.item5',
-                action: 'toSingle',
-                params: ['23nz']
-            }
-        ]
-    },
-    {
-        id: 'midYearBonus20',
-        title: 'news_add_field1.activitiesNZTwo.item1',
-        description: 'news_add_field1.activitiesNZTwo.item2',
-        image: '/static/images/hd_10_500_20.png',
-        showCondition: 'tableData4TwoFlag',
-        hot: true,
-        onClick: 'toSingle',
-        onClickParams: ['23nzTwo'],
-        buttons: [
-            {
-                type: 'red',
-                text: 'news_add_field1.activitiesNZTwo.item3',
-                action: 'toActivity24nianzhong',
-                condition: 'tableData4Two.show === 1'
-            },
-            {
-                type: 'check',
-                text: 'news_add_field1.activitiesNZTwo.item5',
-                action: 'toSingle',
-                params: ['23nzTwo']
-            }
-        ]
-    }
+    // {
+    //     id: 'eliteCup24',
+    //     title: 'news_add_field1.activitiesJYB.item1',
+    //     description: 'news_add_field1.activitiesJYB.item2',
+    //     image: '/static/images/jyb.jpg',
+    //     showCondition: 'tableData3FlagJYB',
+    //     onClick: 'toSingle',
+    //     onClickParams: ['24JYB'],
+    //     buttons: [
+    //         {
+    //             type: 'red',
+    //             text: 'news_add_field1.activitiesJYB.item3',
+    //             action: 'toApply24JYBOpenVip',
+    //             condition: 'tableData3JYB.show === 1',
+    //             and: 'timeExpireJx(tableData3JYB.applicationEndTime)'
+    //         },
+    //         {
+    //             type: 'gray',
+    //             text: 'news_add_field1.activitiesJYB.item3',
+    //             action: 'openDialog',
+    //             params: ['dialogChinaUnionPayJX'],
+    //             condition: 'tableData3JYB.show === 1',
+    //             and: '!timeExpireJx(tableData3JYB.applicationEndTime)'
+    //         },
+    //         {
+    //             type: 'red',
+    //             text: 'news_add_field1.activitiesJYB.item4',
+    //             action: 'toRealization24JYBVip',
+    //             condition: 'isRealizationJxJYB === 1'
+    //         },
+    //         {
+    //             type: 'gray',
+    //             text: 'news_add_field1.activitiesJYB.item4',
+    //             condition: 'isRealizationJxJYB === 2'
+    //         },
+    //         {
+    //             type: 'check',
+    //             text: 'news_add_field1.activitiesJYB.item5',
+    //             action: 'toSingle',
+    //             params: ['24JYB']
+    //         }
+    //     ]
+    // },
+
 ]

+ 7 - 4
pages/activities/content.vue

@@ -21,8 +21,7 @@
                     !ActivitySingleNewYear24">
                     <view class="img">
                         <cwg-image :lazy="false"
-                            :a='imgUrl + (singleData.activityImage ? singleData.activityImage : singleData.coverImage)'
-                            src="https://file.44a5c8109e4.com/file//444/info/b5a55df62bdb407792c5bbcd7766631c.png">
+                            src="imgUrl + (singleData.activityImage ? singleData.activityImage : singleData.coverImage)">
                         </cwg-image>
                     </view>
                     <view v-html="singleData.content" />
@@ -1042,7 +1041,7 @@ import Config from "@/config/index"
 import { useI18n } from 'vue-i18n'
 const { t, locale } = useI18n()
 
-const { Code, Host80 } = Config
+const { Code, Host05 } = Config
 const isZh = computed(() => ['cn', 'zhHant'].includes(locale.value))
 // ==================== 路由参数 ====================
 const myId = ref('')
@@ -1050,7 +1049,7 @@ const type = ref('')
 const active = ref('')
 
 // ==================== 响应式数据 ====================
-const imgUrl = Host80
+const imgUrl = Host05
 const imgContent = ref('https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg')
 const singleData = ref<any>([])
 
@@ -1435,7 +1434,11 @@ onUnmounted(() => {
     line-height: 2;
 
     .img {
+        display: flex;
+        align-items: center;
+        justify-content: center;
         margin-bottom: 20px;
+
     }
 }
 

+ 124 - 128
pages/activities/index.vue

@@ -23,17 +23,17 @@
 
                                 <!-- 遍历静态活动配置 -->
                                 <ActivityCard v-for="activity in visibleStaticActivities" :key="activity.id"
-                                    :config="activity" :state="activityState" :lang="lang"
+                                    :config="activity" :state="activityState" :lang="locale"
                                     @action="handleActivityAction" />
 
                                 <!-- 动态活动列表 -->
                                 <ActivityCard v-for="item in tableData" :key="'dynamic-' + item.id"
-                                    :config="createDynamicConfig(item)" :state="activityState" :lang="lang"
+                                    :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="lang"
+                                    :config="createGiveConfig(item)" :state="activityState" :lang="locale"
                                     @action="handleActivityAction" />
                             </uni-row>
 
@@ -97,7 +97,7 @@ import { useActivityActions } from './composables/useActivityActions'
 import { staticActivityConfigs } from './config/activityConfigs'
 import Config from '@/config/index'
 
-const { t } = useI18n()
+const { t, locale } = useI18n()
 const { Host80 } = Config
 
 // ==================== 数据逻辑 ====================
@@ -108,7 +108,6 @@ const {
     pagerInfo,
     loginOptions,
     activityState,
-    lang,
     country,
     isSupportedCountry,
     isGuoQin,
@@ -291,7 +290,7 @@ const createDynamicConfig = (item: any) => {
         id: item.id,
         title: item.title,
         description: item.subTitle,
-        image: Host80 + item.coverImage,
+        image: item.image,
         time: item.deliveryTime?.split(' ')[0],
         hot: item.hot,
         onClick: 'toSingle',
@@ -324,7 +323,7 @@ const createGiveConfig = (item: any) => {
         id: item.id,
         title: item.title,
         description: item.subTitle,
-        image: Host80 + item.coverUrl,
+        image: item.image,
         time: item.revokeDate?.split(' ')[0],
         hot: item.hot,
         onClick: 'toSingle',
@@ -333,8 +332,7 @@ const createGiveConfig = (item: any) => {
             {
                 type: item.valid === 1 ? 'red' : 'gray',
                 text: 'Custom.Activity.Apply',
-                action: 'toActivity24nianzhong',
-                condition: item.valid === 1
+                action: 'toActivity24nianzhong'
             },
             {
                 type: 'check',
@@ -426,123 +424,123 @@ const handleDialogAction = (action: string, data?: any) => {
 
 // ==================== 活动操作处理 ====================
 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)
-    //         }
-    //         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)
-    // }
+    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)
+            }
+            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)
+    }
 }
 
 // ==================== 生命周期 ====================
@@ -566,10 +564,8 @@ onReachBottom(() => {
 @import "@/uni.scss";
 
 .custom_activities {
-    height: 100vh;
     display: flex;
     flex-direction: column;
-    background-color: #f5f5f5;
 
     .crm-title-box {
         padding: 20rpx 30rpx;

+ 5 - 4
pages/customer/withdrawal.vue

@@ -29,7 +29,7 @@
             </view>
             <view v-if="step3" class="reselect-btn">
               <button class="s-btn reselect" type="primary" @click="showTable">{{ t('Custom.Deposit.Reselect')
-                }}</button>
+              }}</button>
             </view>
           </view>
         </view>
@@ -41,6 +41,7 @@
           <view class="card-top">
             <!-- 注意事项 -->
             <view v-if="!isStep3" class="step3-attention">
+              {{ introduce.value }}
               <view class="tips" v-if="(introduce.introduce || introduce.enIntroduce)">
                 <view>
                   <rich-text class="attention" :nodes="isZh ? introduce.introduce : introduce.enIntroduce" />
@@ -120,7 +121,7 @@
                     <text>{{ t('Custom.Withdraw.addBank') }}</text>
                     <text class="add-btn crm-cursor" @click="openAddBankCard('add_bankCard')">{{
                       t('Custom.Withdraw.addBank1')
-                    }}</text>
+                      }}</text>
                   </view>
                   <view class="add-back" v-else-if="channelData.type === 'CHANNEL_TYPE_CARD'">
                     <text>{{ t('PersonalManagement.Label.addCreditCard') }}</text>
@@ -1362,7 +1363,8 @@ function isShowStep3(row) {
   if (row.type === 'BANK_TELEGRAPHIC') tableData.International_Transfer = [row]
   if (row.type === 'CHANNEL_TYPE_CARD') tableData.CHANNEL_TYPE_CARD = [row]
   if (row.type === 'CHANNEL_TYPE_ALI_WALLET') tableData.CHANNEL_TYPE_ALI_WALLET = [row]
-  introduce.value = { introduce: row.introduce, enIntroduce: row.enIntroduce }
+  introduce.introduce = row.introduce
+  introduce.enIntroduce = row.enIntroduce
 }
 //更换支付方式
 function showTable() {
@@ -1799,7 +1801,6 @@ onMounted(() => {
       line-height: 1.8;
       font-size: px2rpx(12);
       color: #909399;
-      background-color: #f9f9f9;
       padding: px2rpx(12);
       border-radius: px2rpx(4);
       border-left: px2rpx(2) solid #409eff;