zhb 2 달 전
부모
커밋
7bfeb7cace

+ 1 - 1
components/cwg-dont-active-popup.vue

@@ -5,8 +5,8 @@
                 t('Custom.Withdraw.item9') }}</view>
         </view>
         <template #footer>
-            <button type="primary" @click="tosubmitConfirm">{{ t('Btn.Confirm') }}</button>
             <button @click="visible = false">{{ t('Btn.Cancel') }}</button>
+            <button type="primary" @click="tosubmitConfirm">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>

+ 2 - 10
components/cwg-check-popup.vue → components/cwg-error-popup.vue

@@ -1,16 +1,12 @@
 <template>
     <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :show-footers="true">
-        <view class="popup-content" v-if="isSuccess">
-            <view class="icon"><cwg-icon name="verified" :size="80" color="#009933" /></view>
-            <view class="des1">{{ t('ApplicationDialog.Des1') }}</view>
-        </view>
-        <view class="popup-content" v-else>
+        <view class="popup-content">
             <view class="icon"><cwg-icon name="gy" :size="80" color="#eb3f57" /></view>
             <view class="des1">{{ responseMessage }}</view>
         </view>
         <template #footer>
-            <button type="primary" @click="closeDia">{{ t('Btn.Confirm') }}</button>
             <button @click="closeDia">{{ t('Btn.Cancel') }}</button>
+            <button type="primary" @click="closeDia">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>
@@ -24,10 +20,6 @@ const props = defineProps({
         type: Boolean,
         default: false
     },
-    isSuccess: {
-        type: Boolean,
-        default: true
-    },
     responseMessage: {
         type: String,
         default: ''

+ 198 - 0
components/cwg-function-disabled-popup.vue

@@ -0,0 +1,198 @@
+<template>
+    <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :show-footers="true">
+        <view class="popup-content">
+            <view class="icon">
+                <cwg-icon name="gy" :size="80" color="#eb3f57" />
+            </view>
+            <view class="des1">{{ t('news_add_field.Des.item1') }}</view>
+        </view>
+        <template #footer>
+            <button type="primary" @click="toHome">{{ t('Btn.Confirm') }}</button>
+        </template>
+    </cwg-popup>
+</template>
+
+<script setup>
+import { computed } from 'vue';
+import { useI18n } from 'vue-i18n';
+
+const props = defineProps({
+    visible: {
+        type: Boolean,
+        default: false
+    },
+    isSuccess: {
+        type: Boolean,
+        default: true
+    },
+    responseMessage: {
+        type: String,
+        default: ''
+    }
+});
+
+const emit = defineEmits(['update:visible', 'confirm']);
+
+const { t } = useI18n();
+
+// Watch for changes in visible prop and emit update event
+const visible = computed({
+    get: () => props.visible,
+    set: (value) => emit('update:visible', value)
+});
+const closeDia = () => {
+    visible.value = false;
+    emit('confirm');
+}
+const toHome = () => {
+    visible.value = false;
+    emit('confirm');
+}
+</script>
+
+<style lang="scss" scoped>
+.clause-popup {
+    width: 90%;
+    max-width: 800px;
+    max-height: 80vh;
+    overflow: hidden;
+
+    .clause-content {
+        padding: 20px;
+
+        scroll-view {
+            width: 100%;
+
+            h4 {
+                font-size: 16px;
+                font-weight: 600;
+                color: #303133;
+                margin-bottom: 12px;
+            }
+
+            ul {
+                margin-bottom: 20px;
+
+                li {
+                    margin-bottom: 8px;
+                    line-height: 1.5;
+                    color: #606266;
+                }
+            }
+
+            table {
+                margin: 16px 0;
+                width: 100%;
+                border-collapse: collapse;
+
+                th,
+                td {
+                    padding: 10px;
+                    text-align: center;
+                    border: 1px solid #dcdfe6;
+                    font-size: 14px;
+                }
+
+                th {
+                    background: #f5f7fa;
+                    font-weight: 600;
+                    color: #303133;
+                }
+
+                td {
+                    color: #606266;
+                }
+            }
+
+            // Handle v-html content
+            div {
+                line-height: 1.6;
+                color: #606266;
+
+                p {
+                    margin-bottom: 12px;
+                }
+
+                h1,
+                h2,
+                h3,
+                h4,
+                h5,
+                h6 {
+                    margin: 16px 0 8px 0;
+                    color: #303133;
+                }
+
+                ul,
+                ol {
+                    margin-left: 20px;
+                    margin-bottom: 12px;
+                }
+
+                li {
+                    margin-bottom: 4px;
+                }
+            }
+        }
+    }
+
+    .clause-footer {
+        padding: 16px 20px;
+        border-top: 1px solid #e4e7ed;
+        display: flex;
+        justify-content: center;
+
+        button {
+            min-width: 120px;
+            padding: 10px 20px;
+            border-radius: 4px;
+        }
+    }
+}
+
+// Responsive styles
+@media (max-width: 768px) {
+    .clause-popup {
+        width: 95%;
+        max-height: 85vh;
+
+        .clause-header {
+            padding: 12px 16px;
+
+            .clause-title {
+                font-size: 16px;
+            }
+        }
+
+        .clause-content {
+            padding: 16px;
+
+            scroll-view {
+                height: 50vh;
+
+                h4 {
+                    font-size: 14px;
+                }
+
+                table {
+
+                    th,
+                    td {
+                        padding: 8px;
+                        font-size: 12px;
+                    }
+                }
+            }
+        }
+
+        .clause-footer {
+            padding: 12px 16px;
+
+            button {
+                min-width: 100px;
+                padding: 8px 16px;
+            }
+        }
+    }
+}
+</style>

+ 40 - 22
components/cwg-popup.vue

@@ -13,13 +13,15 @@
             </view>
             <!-- 底部按钮区域 - 支持多种模式 -->
             <view class="dialog-footer" v-if="props.showFooters">
-<!--              底部-额外自定义插槽 -->
+                <!--              底部-额外自定义插槽 -->
                 <template v-if="slotName && slots[slotName]">
                     <slot :name="slotName" />
                 </template>
                 <!-- 自定义底部插槽 -->
                 <template v-if="slots.footer">
-                    <slot name="footer" />
+                    <view class="btn-content">
+                        <slot name="footer" />
+                    </view>
                 </template>
 
                 <!-- 无按钮模式:只显示一条线或不显示任何内容 -->
@@ -30,23 +32,23 @@
 
                 <!-- 单按钮模式 -->
                 <template v-else-if="footerType === 'single'">
-                  <view class="btn-content">
-                    <button class="single-btn" :class="singleBtnType" @click="handleSingleBtnClick">
-                      {{ singleBtnText || t('Common.Confirm') }}
-                    </button>
-                  </view>
+                    <view class="btn-content">
+                        <button class="single-btn" :class="singleBtnType" @click="handleSingleBtnClick">
+                            {{ singleBtnText || t('Common.Confirm') }}
+                        </button>
+                    </view>
                 </template>
 
                 <!-- 双按钮模式(默认) -->
                 <template v-else>
-                  <view class="btn-content">
-                    <button class="cancel-btn" @click="closeDialog">
-                      {{ cancelText || t('Common.Cancel') }}
-                    </button>
-                    <button class="confirm-btn" :class="confirmBtnType" @click="handleConfirm">
-                      {{ confirmText || t('Common.Confirm') }}
-                    </button>
-                  </view>
+                    <view class="btn-content">
+                        <button class="cancel-btn" @click="closeDialog">
+                            {{ cancelText || t('Common.Cancel') }}
+                        </button>
+                        <button class="confirm-btn" :class="confirmBtnType" @click="handleConfirm">
+                            {{ confirmText || t('Common.Confirm') }}
+                        </button>
+                    </view>
                 </template>
             </view>
         </view>
@@ -54,7 +56,7 @@
 </template>
 
 <script setup>
-import { ref, watch, computed,useSlots } from 'vue'
+import { ref, watch, computed, useSlots } from 'vue'
 import { useI18n } from 'vue-i18n'
 
 const { t } = useI18n()
@@ -142,7 +144,7 @@ const slots = useSlots()
 // 监听 visible 变化
 watch(() => props.visible, (val) => {
 
-  console.log(slots)
+    console.log(slots)
     if (val) {
         popupRef.value?.open()
     } else {
@@ -191,11 +193,6 @@ defineExpose({
     max-width: 90vw;
 }
 
-@media (min-width: 768px) {
-    :deep(.cwg-dialog) {
-        width: px2rpx(600) !important;
-    }
-}
 
 
 .dialog-header {
@@ -228,4 +225,25 @@ defineExpose({
     }
 }
 
+@media screen and (max-width: 768px) {
+    :deep(.cwg-dialog) {
+        width: px2rpx(600) !important;
+    }
+
+    .dialog-content {
+        padding: px2rpx(20) px2rpx(10);
+        max-height: 60vh;
+        overflow-y: auto;
+
+        // 自定义滚动条样式
+        &::-webkit-scrollbar {
+            width: px2rpx(6);
+        }
+
+        &::-webkit-scrollbar-thumb {
+            background-color: #ddd;
+            border-radius: px2rpx(3);
+        }
+    }
+}
 </style>

+ 187 - 0
components/cwg-success-popup.vue

@@ -0,0 +1,187 @@
+<template>
+    <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :show-footers="true">
+        <view class="popup-content">
+            <view class="icon">
+                <cwg-icon name="verified" :size="80" color="#009933" />
+            </view>
+            <view class="des1">{{ t('ApplicationDialog.Des1') }}</view>
+        </view>
+        <template #footer>
+            <button @click="closeDia">{{ t('Btn.Cancel') }}</button>
+            <button type="primary" @click="closeDia">{{ t('Btn.Confirm') }}</button>
+        </template>
+    </cwg-popup>
+</template>
+
+<script setup>
+import { computed } from 'vue';
+import { useI18n } from 'vue-i18n';
+
+const props = defineProps({
+    visible: {
+        type: Boolean,
+        default: false
+    },
+});
+
+const emit = defineEmits(['update:visible', 'confirm']);
+
+const { t } = useI18n();
+
+// Watch for changes in visible prop and emit update event
+const visible = computed({
+    get: () => props.visible,
+    set: (value) => emit('update:visible', value)
+});
+const closeDia = () => {
+    visible.value = false;
+    emit('confirm');
+}
+</script>
+
+<style lang="scss" scoped>
+.clause-popup {
+    width: 90%;
+    max-width: 800px;
+    max-height: 80vh;
+    overflow: hidden;
+
+    .clause-content {
+        padding: 20px;
+
+        scroll-view {
+            width: 100%;
+
+            h4 {
+                font-size: 16px;
+                font-weight: 600;
+                color: #303133;
+                margin-bottom: 12px;
+            }
+
+            ul {
+                margin-bottom: 20px;
+
+                li {
+                    margin-bottom: 8px;
+                    line-height: 1.5;
+                    color: #606266;
+                }
+            }
+
+            table {
+                margin: 16px 0;
+                width: 100%;
+                border-collapse: collapse;
+
+                th,
+                td {
+                    padding: 10px;
+                    text-align: center;
+                    border: 1px solid #dcdfe6;
+                    font-size: 14px;
+                }
+
+                th {
+                    background: #f5f7fa;
+                    font-weight: 600;
+                    color: #303133;
+                }
+
+                td {
+                    color: #606266;
+                }
+            }
+
+            // Handle v-html content
+            div {
+                line-height: 1.6;
+                color: #606266;
+
+                p {
+                    margin-bottom: 12px;
+                }
+
+                h1,
+                h2,
+                h3,
+                h4,
+                h5,
+                h6 {
+                    margin: 16px 0 8px 0;
+                    color: #303133;
+                }
+
+                ul,
+                ol {
+                    margin-left: 20px;
+                    margin-bottom: 12px;
+                }
+
+                li {
+                    margin-bottom: 4px;
+                }
+            }
+        }
+    }
+
+    .clause-footer {
+        padding: 16px 20px;
+        border-top: 1px solid #e4e7ed;
+        display: flex;
+        justify-content: center;
+
+        button {
+            min-width: 120px;
+            padding: 10px 20px;
+            border-radius: 4px;
+        }
+    }
+}
+
+// Responsive styles
+@media (max-width: 768px) {
+    .clause-popup {
+        width: 95%;
+        max-height: 85vh;
+
+        .clause-header {
+            padding: 12px 16px;
+
+            .clause-title {
+                font-size: 16px;
+            }
+        }
+
+        .clause-content {
+            padding: 16px;
+
+            scroll-view {
+                height: 50vh;
+
+                h4 {
+                    font-size: 14px;
+                }
+
+                table {
+
+                    th,
+                    td {
+                        padding: 8px;
+                        font-size: 12px;
+                    }
+                }
+            }
+        }
+
+        .clause-footer {
+            padding: 12px 16px;
+
+            button {
+                min-width: 100px;
+                padding: 8px 16px;
+            }
+        }
+    }
+}
+</style>

+ 227 - 0
pages/customer/components/CheckPopup.vue

@@ -0,0 +1,227 @@
+<template>
+  <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true" :showClose="false">
+    <view class="popup-content">
+      <view class="icon">
+        <cwg-icon name="loading" :size="64" color="#1e2a3a" />
+      </view>
+      <view class="des1">{{ t('news_add_field.ApplicationDialog.Des31') }}</view>
+      <view class="des2">
+        <text>{{ t('news_add_field.ApplicationDialog.Des32') }}</text>
+        <text>{{ t('news_add_field.ApplicationDialog.Des33') }}</text>
+        <text class="crm-cursor" @click="toHistory">{{ t('news_add_field.ApplicationDialog.Des34') }}</text>
+        <text>{{ t('news_add_field.ApplicationDialog.Des35') }}</text>
+      </view>
+      <view class="GoPay" v-if="goPayLink">
+        <view class="GoPay-btn">
+          <button type="primary" @click="GoPayBtn">{{ t('Label.item3') }}</button>
+        </view>
+        <view class="GoPay-con">{{ t('Label.item4') }}</view>
+        <view class="GoPay-copy">
+          <text class="link-text">{{ goPayLink }}</text>
+          <view class="btn">
+            <text class="crm-cursor" @click="CopyShareLink('custom_link')">{{ t('Ib.Index.Copy') }}</text>
+          </view>
+        </view>
+      </view>
+    </view>
+    <template #footer>
+      <button @click="close">{{ t('Btn.Cancel') }}</button>
+      <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+    </template>
+  </cwg-popup>
+</template>
+
+<script setup>
+import { computed, ref } from 'vue';
+import { useI18n } from 'vue-i18n';
+
+const props = defineProps({
+  visible: { type: Boolean, default: false },
+  success: { type: Boolean, default: true },
+  errorMsg: { type: String, default: '' },
+  goPayLink: { type: String, default: '' },
+  isWaiting: { type: Boolean, default: false }
+});
+const emit = defineEmits(['update:visible', 'close', 'toHistory', 'goPay', 'copy']);
+
+const { t } = useI18n();
+const visible = computed({
+  get: () => props.visible,
+  set: (val) => emit('update:visible', val)
+});
+const close = () => {
+  visible.value = false;
+  emit('close');
+};
+//支付历史
+const toHistory = () => {
+  uni.navigateTo({ url: "/pages/customer/history" })
+}
+// 去支付
+const GoPayBtn = () => {
+  window.open(props.goPayLink)
+}
+// 复制分享链接
+const CopyShareLink = (link) => {
+  uni.setClipboardData({
+    data: props.goPayLink,
+    success: function () {
+      uni.showToast({
+        title: t('Ib.Index.CopySuccess'),
+        icon: 'success',
+        duration: 2000
+      });
+    }
+  });
+  emit('copy');
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/uni.scss";
+
+.popup-content {
+  text-align: center;
+  max-width: 500px;
+  margin: 0 auto;
+
+  .icon {
+    margin-bottom: 24px;
+    animation: pulse 1.5s ease-in-out infinite;
+  }
+
+  .des1 {
+    font-size: 20px;
+    font-weight: bold;
+    color: #1e2a3a;
+    margin: 0 0 20px 0;
+    line-height: 1.4;
+  }
+
+  .des2 {
+    font-size: 14px;
+    color: #606266;
+    margin-bottom: 24px;
+    line-height: 1.6;
+    text-align: left;
+
+    text {
+      display: inline-block;
+      margin-right: 4px;
+    }
+
+    .crm-cursor {
+      color: #409eff;
+      text-decoration: underline;
+      transition: color 0.3s;
+      cursor: pointer;
+
+      &:hover {
+        color: #66b1ff;
+      }
+    }
+  }
+
+  .GoPay {
+    margin-top: 24px;
+    background-color: #f5f7fa;
+    border-radius: 8px;
+    padding: 20px;
+    text-align: left;
+
+    .GoPay-btn {
+      margin-bottom: 16px;
+
+      button {
+        width: 100%;
+        height: 44px;
+        border-radius: 6px;
+        font-size: 16px;
+      }
+    }
+
+    .GoPay-con {
+      font-size: 14px;
+      color: #606266;
+      margin-bottom: 16px;
+      line-height: 1.5;
+    }
+
+    .GoPay-copy {
+      display: flex;
+      align-items: center;
+      gap: 12px;
+      background-color: #ffffff;
+      border: 1px solid #e4e7ed;
+      border-radius: 6px;
+      padding: 12px;
+
+      .link-text {
+        flex: 1;
+        font-size: 14px;
+        color: #303133;
+        word-break: break-all;
+        line-height: 1.4;
+      }
+
+      .btn {
+        min-width: 80px;
+        text-align: right;
+
+        .crm-cursor {
+          display: inline-block;
+          padding: 6px 12px;
+          background-color: #f0f9eb;
+          color: #67c23a;
+          border-radius: 4px;
+          font-size: 14px;
+          transition: all 0.3s;
+          cursor: pointer;
+
+          &:hover {
+            background-color: #e6f7ff;
+            color: #409eff;
+          }
+        }
+      }
+    }
+  }
+}
+
+@keyframes pulse {
+  0% {
+    transform: scale(1);
+  }
+
+  50% {
+    transform: scale(1.05);
+  }
+
+  100% {
+    transform: scale(1);
+  }
+}
+
+@media (max-width: 768px) {
+  .popup-content {
+    padding: 20px 16px;
+
+    .des1 {
+      font-size: 18px;
+    }
+
+    .des2 {
+      font-size: 13px;
+    }
+
+    .GoPay {
+      padding: 16px;
+
+      .GoPay-btn button {
+        height: 40px;
+        font-size: 14px;
+      }
+    }
+  }
+}
+</style>

+ 43 - 0
pages/customer/components/ChinaUnionPayPopup.vue

@@ -0,0 +1,43 @@
+<template>
+  <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true">
+    <view class="popup-content">
+      <view class="des1">{{ t('news_add_field1.deposit.item64') }}</view>
+    </view>
+    <template #footer>
+      <button @click="close">{{ t('Btn.Cancel') }}</button>
+      <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+    </template>
+  </cwg-popup>
+</template>
+
+<script setup>
+import { computed } from 'vue';
+import { useI18n } from 'vue-i18n';
+
+const props = defineProps({
+  visible: { type: Boolean, default: false }
+});
+const emit = defineEmits(['update:visible']);
+
+const { t } = useI18n();
+const visible = computed({
+  get: () => props.visible,
+  set: (val) => emit('update:visible', val)
+});
+const close = () => { visible.value = false; };
+</script>
+
+<style lang="scss" scoped>
+@import "@/uni.scss";
+
+.popup-content {
+  padding: px2rpx(20);
+  text-align: center;
+
+  .des1 {
+    font-size: px2rpx(16);
+    line-height: 1.6;
+    margin: px2rpx(30) 0 px2rpx(50);
+  }
+}
+</style>

+ 185 - 0
pages/customer/components/Clause20Popup.vue

@@ -0,0 +1,185 @@
+<template>
+    <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true"
+        custom-class="clause-popup" :title="title">
+        <view class="popup-content">
+            <scroll-view scroll-y class="clause-content">
+                <view>
+                    <view v-if="country === 'CN'">
+                        <view class="intro" v-t="'news_add_field1.deposit.item7'"></view>
+                        <view class="list">
+                            <view class="list-item">
+                                <text v-t="'news_add_field1.deposit.item8'"></text>
+                                <view class="sub-list">
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item9'"></view>
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item10'"></view>
+                                </view>
+                            </view>
+                            <view class="list-item">
+                                <text v-t="'news_add_field1.deposit.item11'"></text>
+                                <view class="sub-list">
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item12'"></view>
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item13'"></view>
+                                </view>
+                            </view>
+                            <view class="list-item">
+                                <text v-t="'news_add_field1.deposit.item14'"></text>
+                                <view class="sub-list">
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item15'"></view>
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item16'"></view>
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item17'"></view>
+                                </view>
+                            </view>
+                            <view class="list-item">
+                                <text v-t="'news_add_field1.deposit.item18'"></text>
+                                <view class="sub-list">
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item19'"></view>
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item20'"></view>
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item21'"></view>
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item22'"></view>
+                                </view>
+                            </view>
+                        </view>
+                        <view class="h4" v-t="'news_add_field1.deposit.item23'"></view>
+                        <view class="list">
+                            <view class="list-item" v-t="'news_add_field1.deposit.item24'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item25'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item26'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item27'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item28'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item29'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item30'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item31'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item32'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item33'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item34'"></view>
+                        </view>
+                    </view>
+                    <view v-else>
+                        <view class="intro" v-t="'news_add_field1.deposit.item35'"></view>
+                        <view class="list">
+                            <view class="list-item">
+                                <text v-t="'news_add_field1.deposit.item36'"></text>
+                                <view class="sub-list">
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item37'"></view>
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item38'"></view>
+                                </view>
+                            </view>
+                            <view class="list-item">
+                                <text v-t="'news_add_field1.deposit.item39'"></text>
+                                <view class="sub-list">
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item40'"></view>
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item41'"></view>
+                                </view>
+                            </view>
+                            <view class="list-item">
+                                <text v-t="'news_add_field1.deposit.item42'"></text>
+                                <view class="sub-list">
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item43'"></view>
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item44'"></view>
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item45'"></view>
+                                </view>
+                            </view>
+                            <view class="list-item">
+                                <text v-t="'news_add_field1.deposit.item46'"></text>
+                                <view class="sub-list">
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item47'"></view>
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item48'"></view>
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item49'"></view>
+                                    <view class="list-item" v-t="'news_add_field1.deposit.item50'"></view>
+                                </view>
+                            </view>
+                        </view>
+                        <view class="h4" v-t="'news_add_field1.deposit.item51'"></view>
+                        <view class="list">
+                            <view class="list-item" v-t="'news_add_field1.deposit.item52'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item53'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item54'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item55'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item56'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item57'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item58'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item59'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item60'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item61'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item62'"></view>
+                            <view class="list-item" v-t="'news_add_field1.deposit.item63'"></view>
+                        </view>
+                    </view>
+                </view>
+            </scroll-view>
+        </view>
+        <template #footer>
+            <button @click="close">{{ t('Btn.Cancel') }}</button>
+            <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+        </template>
+    </cwg-popup>
+</template>
+
+<script setup>
+import { computed } from 'vue';
+import { useI18n } from 'vue-i18n';
+import { useUserStore } from '@/stores/user';
+// 用户信息
+const userStore = useUserStore()
+const userInfo = computed(() => userStore.userInfo)
+const props = defineProps({
+    visible: { type: Boolean, default: false }
+});
+const emit = defineEmits(['update:visible']);
+
+const { t } = useI18n();
+const visible = computed({
+    get: () => props.visible,
+    set: (val) => emit('update:visible', val)
+});
+const country = computed(() => {
+    return userInfo.value.customInfo.country;
+});
+const title = computed(() => {
+    return country.value == 'CN' ? 'CWG 20%赠金入会礼' : '20% CASH BACK BONUS';
+});
+const close = () => { visible.value = false; };
+</script>
+
+<style lang="scss" scoped>
+@import "@/uni.scss";
+
+.clause-popup {
+    width: 90%;
+    max-width: 800px;
+
+    .clause-content {
+        height: px2rpx(400);
+        overflow-y: auto;
+        padding: px2rpx(20);
+        line-height: 1.6;
+
+        .intro {
+            font-size: px2rpx(14);
+            margin-bottom: px2rpx(16);
+        }
+
+        .h4 {
+            font-size: px2rpx(16);
+            font-weight: bold;
+            margin: px2rpx(20) 0 px2rpx(12);
+        }
+
+        .list {
+            .list-item {
+                font-size: px2rpx(14);
+                margin-bottom: px2rpx(10);
+
+                .sub-list {
+                    margin-left: px2rpx(15);
+                    margin-top: px2rpx(6);
+
+                    .list-item {
+                        margin-bottom: px2rpx(8);
+                    }
+                }
+            }
+        }
+    }
+}
+</style>

+ 126 - 0
pages/customer/components/ClauseNZPopup.vue

@@ -0,0 +1,126 @@
+<template>
+  <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true" custom-class="clause-popup"
+    :title="title">
+    <view class="popup-content">
+      <scroll-view scroll-y class="clause-content">
+        <view>
+          <view class="h4"><text v-t="'news_add_field1.activitiesNZ.item8'"></text>{{ startDate }} - {{ endDate }}
+          </view>
+          <view class="h4" v-t="'news_add_field1.activitiesNZ.item10'"></view>
+          <view class="list">
+            <view class="list-item" v-for="i in 5" :key="i" v-t="`news_add_field1.activitiesNZ.item1${i}`"></view>
+            <view class="list-item">
+              <view class="table-container">
+                <view class="table">
+                  <view class="tr">
+                    <view class="th" v-for="th in 7" :key="th" v-t="`news_add_field1.activitiesNZ.item${30 + th}1`">
+                    </view>
+                  </view>
+                  <view class="tr" v-for="r in 4" :key="r">
+                    <view class="td" v-for="c in 7" :key="c" v-t="`news_add_field1.activitiesNZ.item${30 + r}${c}`">
+                    </view>
+                  </view>
+                </view>
+              </view>
+            </view>
+            <view class="list-item" v-for="i in 5" :key="i" v-t="`news_add_field1.activitiesNZ.item2${i}`"></view>
+          </view>
+        </view>
+      </scroll-view>
+    </view>
+    <template #footer>
+      <button @click="close">{{ t('Btn.Cancel') }}</button>
+      <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+    </template>
+  </cwg-popup>
+</template>
+
+<script setup>
+import { computed } from 'vue';
+import { useI18n } from 'vue-i18n';
+
+const props = defineProps({
+  visible: { type: Boolean, default: false },
+  startDate: { type: String, default: '' },
+  endDate: { type: String, default: '' },
+  title: { type: String, default: '' }
+});
+const emit = defineEmits(['update:visible']);
+
+const { t } = useI18n();
+const visible = computed({
+  get: () => props.visible,
+  set: (val) => emit('update:visible', val)
+});
+const close = () => { visible.value = false; };
+</script>
+
+<style lang="scss" scoped>
+@import "@/uni.scss";
+
+.clause-popup {
+  width: 90%;
+  max-width: 800px;
+
+  .clause-content {
+    padding: px2rpx(20);
+    max-height: px2rpx(500);
+    overflow-y: auto;
+    text-align: left;
+    line-height: 1.6;
+
+    .h4 {
+      font-size: px2rpx(16);
+      font-weight: bold;
+      margin: px2rpx(16) 0;
+    }
+
+    .list {
+      .list-item {
+        margin-bottom: px2rpx(12);
+      }
+    }
+
+    .table-container {
+      width: 100%;
+      overflow-x: auto;
+      margin: px2rpx(16) 0;
+
+      .table {
+        width: 100%;
+        border-collapse: collapse;
+
+        .tr {
+          display: flex;
+          border-bottom: 1px solid #e4e7ed;
+
+          &:last-child {
+            border-bottom: none;
+          }
+        }
+
+        .th,
+        .td {
+          flex: 1;
+          padding: px2rpx(8);
+          text-align: center;
+          border-right: 1px solid #e4e7ed;
+
+          &:last-child {
+            border-right: none;
+          }
+        }
+
+        .th {
+          font-weight: bold;
+          background-color: #f5f7fa;
+        }
+
+        .td {
+          background-color: #ffffff;
+        }
+      }
+    }
+  }
+}
+</style>

+ 126 - 0
pages/customer/components/ClauseNZTwoPopup.vue

@@ -0,0 +1,126 @@
+<template>
+  <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true" custom-class="clause-popup"
+    :title="title">
+    <view class="popup-content">
+      <scroll-view scroll-y class="clause-content">
+        <view>
+          <view class="h4"><text v-t="'news_add_field1.activitiesNZTwo.item8'"></text>{{ startDate }} - {{ endDate }}
+          </view>
+          <view class="h4" v-t="'news_add_field1.activitiesNZTwo.item10'"></view>
+          <view class="list">
+            <view class="list-item" v-for="i in 5" :key="i" v-t="`news_add_field1.activitiesNZTwo.item1${i}`"></view>
+            <view class="list-item">
+              <view class="table-container">
+                <view class="table">
+                  <view class="tr">
+                    <view class="th" v-for="th in 7" :key="th" v-t="`news_add_field1.activitiesNZTwo.item${30 + th}1`">
+                    </view>
+                  </view>
+                  <view class="tr" v-for="r in 4" :key="r">
+                    <view class="td" v-for="c in 7" :key="c" v-t="`news_add_field1.activitiesNZTwo.item${30 + r}${c}`">
+                    </view>
+                  </view>
+                </view>
+              </view>
+            </view>
+            <view class="list-item" v-for="i in 5" :key="i" v-t="`news_add_field1.activitiesNZTwo.item2${i}`"></view>
+          </view>
+        </view>
+      </scroll-view>
+    </view>
+    <template #footer>
+      <button @click="close">{{ t('Btn.Cancel') }}</button>
+      <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+    </template>
+  </cwg-popup>
+</template>
+
+<script setup>
+import { computed } from 'vue';
+import { useI18n } from 'vue-i18n';
+
+const props = defineProps({
+  visible: { type: Boolean, default: false },
+  startDate: { type: String, default: '' },
+  endDate: { type: String, default: '' },
+  title: { type: String, default: '' }
+});
+const emit = defineEmits(['update:visible']);
+
+const { t } = useI18n();
+const visible = computed({
+  get: () => props.visible,
+  set: (val) => emit('update:visible', val)
+});
+const close = () => { visible.value = false; };
+</script>
+
+<style lang="scss" scoped>
+@import "@/uni.scss";
+
+.clause-popup {
+  width: 90%;
+  max-width: 800px;
+
+  .clause-content {
+    padding: px2rpx(20);
+    max-height: px2rpx(500);
+    overflow-y: auto;
+    text-align: left;
+    line-height: 1.6;
+
+    .h4 {
+      font-size: px2rpx(16);
+      font-weight: bold;
+      margin: px2rpx(16) 0;
+    }
+
+    .list {
+      .list-item {
+        margin-bottom: px2rpx(12);
+      }
+    }
+
+    .table-container {
+      width: 100%;
+      overflow-x: auto;
+      margin: px2rpx(16) 0;
+
+      .table {
+        width: 100%;
+        border-collapse: collapse;
+
+        .tr {
+          display: flex;
+          border-bottom: 1px solid #e4e7ed;
+
+          &:last-child {
+            border-bottom: none;
+          }
+        }
+
+        .th,
+        .td {
+          flex: 1;
+          padding: px2rpx(10);
+          text-align: center;
+          border-right: 1px solid #e4e7ed;
+
+          &:last-child {
+            border-right: none;
+          }
+        }
+
+        .th {
+          font-weight: bold;
+          background-color: #f5f7fa;
+        }
+
+        .td {
+          background-color: #ffffff;
+        }
+      }
+    }
+  }
+}
+</style>

+ 88 - 0
pages/customer/components/ClauseNewListPopup.vue

@@ -0,0 +1,88 @@
+<template>
+  <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true" custom-class="clause-popup"
+    :title="title">
+    <view class="popup-content">
+      <scroll-view scroll-y class="clause-content">
+        <view v-html="content"></view>
+      </scroll-view>
+    </view>
+    <template #footer>
+      <button @click="close">{{ t('Btn.Cancel') }}</button>
+      <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+    </template>
+  </cwg-popup>
+</template>
+
+<script setup>
+import { computed } from 'vue';
+import { useI18n } from 'vue-i18n';
+
+const props = defineProps({
+  visible: { type: Boolean, default: false },
+  content: { type: String, default: '' },
+  title: { type: String, default: '' }
+});
+const emit = defineEmits(['update:visible']);
+
+const { t } = useI18n();
+const visible = computed({
+  get: () => props.visible,
+  set: (val) => emit('update:visible', val)
+});
+const close = () => { visible.value = false; };
+</script>
+
+<style lang="scss" scoped>
+@import "@/uni.scss";
+
+.clause-popup {
+  width: 90%;
+  max-width: 800px;
+
+  .clause-content {
+    height: px2rpx(400);
+    overflow-y: auto;
+    padding: px2rpx(20);
+    line-height: 1.6;
+
+    view {
+      :deep(*) {
+        max-width: 100%;
+        box-sizing: border-box;
+      }
+
+      :deep(p) {
+        margin-bottom: px2rpx(12);
+      }
+
+      :deep(ul),
+      :deep(ol) {
+        margin-left: px2rpx(20);
+        margin-bottom: px2rpx(12);
+
+        :deep(li) {
+          margin-bottom: px2rpx(6);
+        }
+      }
+
+      :deep(table) {
+        width: 100%;
+        border-collapse: collapse;
+        margin: px2rpx(16) 0;
+
+        :deep(th),
+        :deep(td) {
+          border: 1px solid #e4e7ed;
+          padding: px2rpx(8);
+          text-align: center;
+        }
+
+        :deep(th) {
+          font-weight: bold;
+          background-color: #f5f7fa;
+        }
+      }
+    }
+  }
+}
+</style>

+ 156 - 0
pages/customer/components/ClausePopup.vue

@@ -0,0 +1,156 @@
+<template>
+    <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true"
+        custom-class="clause-popup">
+        <view class="popup-content">
+            <scroll-view scroll-y class="clause-content" :style="{ height: px2rpx(400) + 'px' }">
+                <view class="content" :style="{ lineHeight: 1.5, textAlign: 'left' }" id="Agreement"
+                    v-if="country == 'CN'">
+                    <view class="list" v-if="isGuoQin">
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item1'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item2'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item3'"></view>
+                        <view class="list-item">
+                            <view class="list sub-list">
+                                <view class="list-item" v-t="'news_add_field.CWGActivity_1.item31'"></view>
+                                <view class="list-item" v-t="'news_add_field.CWGActivity_1.item32'"></view>
+                            </view>
+                        </view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item4'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item5'"></view>
+                        <view class="list-item">
+                            <view class="list sub-list">
+                                <view class="list-item" v-t="'news_add_field.CWGActivity_1.item51'"></view>
+                            </view>
+                        </view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item6'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item7'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item8'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item9_1'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item9'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item10'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item11'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item12'"></view>
+                    </view>
+                    <view class="list" v-else>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item1'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item2'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item3'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item4'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item5'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item6'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item7'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item8'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item9_1'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item9'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item10'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item11'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item11_1'"></view>
+                        <view class="list-item">
+                            <view class="list sub-list">
+                                <view class="list-item" v-t="'news_add_field.CWGActivity.item111'"></view>
+                                <view class="list-item" v-t="'news_add_field.CWGActivity.item112'"></view>
+                                <view class="list-item" v-t="'news_add_field.CWGActivity.item113'"></view>
+                                <view class="list-item" v-t="'news_add_field.CWGActivity.item114'"></view>
+                            </view>
+                        </view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item12'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity.item13'"></view>
+                    </view>
+                </view>
+                <view class="content" :style="{ lineHeight: 1.5, textAlign: 'left' }" id="Agreement"
+                    v-if="country != 'CN'">
+                    <view class="list">
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item1'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item2'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item3'"></view>
+                        <view class="list-item">
+                            <view class="list sub-list">
+                                <view class="list-item" v-t="'news_add_field.CWGActivity_1.item31'"></view>
+                                <view class="list-item" v-t="'news_add_field.CWGActivity_1.item32'"></view>
+                            </view>
+                        </view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item4'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item5'"></view>
+                        <view class="list-item">
+                            <view class="list sub-list">
+                                <view class="list-item" v-t="'news_add_field.CWGActivity_1.item51'"></view>
+                            </view>
+                        </view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item6'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item7'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item8'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item9_1'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item9'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item10'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item11'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item12'"></view>
+                        <view class="list-item" v-t="'news_add_field.CWGActivity_1.item13'"></view>
+                    </view>
+                </view>
+            </scroll-view>
+        </view>
+        <template #footer>
+            <button @click="close">{{ t('Btn.Cancel') }}</button>
+            <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+        </template>
+    </cwg-popup>
+</template>
+
+<script setup>
+import { computed } from 'vue';
+import { useI18n } from 'vue-i18n';
+import { useUserStore } from '@/stores/user';
+// 用户信息
+const userStore = useUserStore()
+const userInfo = computed(() => userStore.userInfo)
+const props = defineProps({
+    visible: { type: Boolean, default: false },
+    title: String,
+    content: { type: String, default: '' }, // HTML
+    items: { type: Array, default: () => [] },
+    isGuoQin: { type: Boolean, default: false }
+});
+const emit = defineEmits(['update:visible']);
+
+const { t } = useI18n();
+
+const country = computed(() => {
+    return userInfo.value.customInfo.country;
+});
+const visible = computed({
+    get: () => props.visible,
+    set: (val) => emit('update:visible', val)
+});
+const close = () => { visible.value = false; };
+</script>
+
+<style lang="scss" scoped>
+@import "@/uni.scss";
+
+.clause-popup {
+    width: 90%;
+    max-width: 800px;
+
+    .clause-content {
+        padding: px2rpx(20);
+        height: px2rpx(400);
+        overflow-y: auto;
+        text-align: left;
+        line-height: 1.6;
+
+        .list {
+            .list-item {
+                margin-bottom: px2rpx(8);
+
+                .sub-list {
+                    margin-left: px2rpx(20);
+
+                    .list-item {
+                        margin-bottom: px2rpx(6);
+                    }
+                }
+            }
+        }
+    }
+}
+</style>

+ 125 - 0
pages/customer/components/DealResultPopup.vue

@@ -0,0 +1,125 @@
+<template>
+  <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true" :title="title">
+    <view class="popup-content">
+      <uni-forms ref="formRef" :model="formData" :rules="rules" label-position="top">
+        <uni-forms-item :label="t('PersonalManagement.Label.PinCode')" prop="pin" v-if="type === 3">
+          <input type="password" v-model="formData.pin" placeholder="{{ t('placeholder.input') }}" />
+        </uni-forms-item>
+        <uni-forms-item :label="t('PersonalManagement.Label.OtpCode')" prop="otp" v-if="type === 4">
+          <input type="text" v-model="formData.otp"
+            :placeholder="$i18n.locale === 'es' ? 'Código de 6 dígitos' : t('placeholder.input')" />
+        </uni-forms-item>
+        <template v-if="type === 6">
+          <uni-forms-item :label="t('ImproveImmediately.Label.CountryRegionOfResidence')" prop="country">
+            <input type="text" v-model="formData.country" placeholder="{{ t('placeholder.input') }}" />
+          </uni-forms-item>
+          <uni-forms-item :label="t('ImproveImmediately.Label.ProvinceRegion')" prop="state">
+            <input type="text" v-model="formData.state" placeholder="{{ t('placeholder.input') }}" />
+          </uni-forms-item>
+          <uni-forms-item :label="t('ImproveImmediately.Label.City')" prop="city">
+            <input type="text" v-model="formData.city" placeholder="{{ t('placeholder.input') }}" />
+          </uni-forms-item>
+          <uni-forms-item :label="t('ImproveImmediately.Label.DetailedAddress')" prop="address">
+            <input type="text" v-model="formData.address" placeholder="{{ t('placeholder.input') }}" />
+          </uni-forms-item>
+          <uni-forms-item :label="t('ImproveImmediately.Label.ZipCode')" prop="zipCode">
+            <input type="text" v-model="formData.zipCode" placeholder="{{ t('placeholder.input') }}" />
+          </uni-forms-item>
+        </template>
+        <uni-forms-item :label="t('PersonalManagement.Label.Phone')" prop="phone" v-if="type === 7">
+          <input type="tel" v-model="formData.phone" placeholder="{{ t('placeholder.input') }}" />
+        </uni-forms-item>
+      </uni-forms>
+    </view>
+    <template #footer>
+      <button @click="cancel">{{ t('Btn.Cancel') }}</button>
+      <button type="primary" @click="submit">{{ t('Btn.Confirm') }}</button>
+    </template>
+  </cwg-popup>
+</template>
+
+<script setup>
+import { ref, computed } from 'vue';
+import { useI18n } from 'vue-i18n';
+
+const props = defineProps({
+  visible: { type: Boolean, default: false },
+  title: { type: String, default: '' },
+  type: { type: Number, default: 0 }, // 3: pin, 4: otp, 6: address, 7: phone
+  initialData: { type: Object, default: () => ({}) }
+});
+const emit = defineEmits(['update:visible', 'submit']);
+
+const { t } = useI18n();
+const visible = computed({
+  get: () => props.visible,
+  set: (val) => emit('update:visible', val)
+});
+
+const formData = ref({ ...props.initialData });
+const rules = ref({}); // 按需添加
+const formRef = ref(null);
+
+const cancel = () => { visible.value = false; };
+const submit = async () => {
+  if (formRef.value) {
+    try {
+      await formRef.value.validate();
+      visible.value = false;
+      emit('submit', formData.value);
+    } catch (error) {
+      console.error('Form validation failed:', error);
+    }
+  } else {
+    visible.value = false;
+    emit('submit', formData.value);
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+@import "@/uni.scss";
+
+.popup-content {
+  padding: px2rpx(20);
+
+  input {
+    width: 100%;
+    height: px2rpx(40);
+    padding: 0 px2rpx(12);
+    border: 1px solid #dcdfe6;
+    border-radius: px2rpx(4);
+    font-size: px2rpx(14);
+    transition: border-color 0.3s;
+
+    &:focus {
+      outline: none;
+      border-color: #409eff;
+      box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.2);
+    }
+  }
+
+  :deep(.uni-forms-item) {
+    margin-bottom: px2rpx(16);
+
+    :deep(.uni-forms-item__label) {
+      font-size: px2rpx(14);
+      color: #606266;
+      margin-bottom: px2rpx(8);
+    }
+
+    :deep(.uni-forms-item__error) {
+      font-size: px2rpx(12);
+      color: #f56c6c;
+      margin-top: px2rpx(4);
+    }
+  }
+}
+
+.title {
+  font-size: px2rpx(18);
+  font-weight: bold;
+  margin-bottom: px2rpx(20);
+  text-align: center;
+}
+</style>

+ 54 - 0
pages/customer/components/KycPopup.vue

@@ -0,0 +1,54 @@
+<template>
+    <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true" :showClose="false">
+        <view class="popup-content">
+            <view class="icon">
+                <cwg-icon name="verified" :size="80" color="#009933" />
+            </view>
+            <view class="des2">{{ t('ApplicationDialog.Des11') }}</view>
+            <QrCode :text="qrText" />
+        </view>
+        <template #footer>
+            <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+        </template>
+    </cwg-popup>
+</template>
+
+<script setup>
+import { computed } from 'vue';
+import { useI18n } from 'vue-i18n';
+import QrCode from '@/components/QrCode.vue'; // 假设存在
+
+const props = defineProps({
+    visible: { type: Boolean, default: false },
+    qrText: { type: String, default: '' }
+});
+const emit = defineEmits(['update:visible']);
+
+const { t } = useI18n();
+const visible = computed({
+    get: () => props.visible,
+    set: (val) => emit('update:visible', val)
+});
+const close = () => { visible.value = false; };
+</script>
+
+<style lang="scss" scoped>
+@import "@/uni.scss";
+
+.popup-content {
+    text-align: center;
+    padding: px2rpx(20);
+}
+
+.icon {
+    font-size: px2rpx(48);
+    margin-bottom: px2rpx(16);
+}
+
+.des1,
+.des2 {
+    font-size: px2rpx(18);
+    font-weight: bold;
+    margin: px2rpx(20) 0;
+}
+</style>

+ 53 - 0
pages/customer/components/NewYear24Popup.vue

@@ -0,0 +1,53 @@
+<template>
+    <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true">
+        <view class="popup-content">
+            <view class="des1">
+                <text>{{ t('news_add_field1.NewYear24.itemT1') }}</text>
+                <text class="myRED">${{ data.balance }}</text>
+                <text>{{ t('news_add_field1.NewYear24.itemT2') }}</text>
+                <text class="myRED">${{ data.income }}</text>!
+            </view>
+        </view>
+        <template #footer>
+            <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+        </template>
+    </cwg-popup>
+</template>
+
+<script setup>
+import { computed } from 'vue';
+import { useI18n } from 'vue-i18n';
+
+const props = defineProps({
+    visible: { type: Boolean, default: false },
+    data: { type: Object, default: () => ({ balance: 0, income: 0 }) }
+});
+const emit = defineEmits(['update:visible']);
+
+const { t } = useI18n();
+const visible = computed({
+    get: () => props.visible,
+    set: (val) => emit('update:visible', val)
+});
+const close = () => { visible.value = false; };
+</script>
+
+<style lang="scss" scoped>
+@import "@/uni.scss";
+
+.popup-content {
+    padding: px2rpx(20);
+    text-align: center;
+
+    .des1 {
+        font-size: px2rpx(16);
+        line-height: 1.6;
+        margin: px2rpx(30) 0 px2rpx(50);
+    }
+
+    .myRED {
+        color: #f56c6c;
+        font-weight: bold;
+    }
+}
+</style>

+ 71 - 0
pages/customer/components/VietnamNoticePopup.vue

@@ -0,0 +1,71 @@
+<template>
+    <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true" :width="'60%'">
+        <view class="popup-content">
+            <view class="des1">
+                <view><text class="bold">Quý khách hàng thân mến:</text></view>
+                <view>Trước khi giao dịch, chúng tôi xin nhắc nhở bạn rằng:</view>
+                <view>1. Vì có những rủi ro nhất định trong giao dịch, bạn nên đầu tư thích hợp theo kinh nghiệm giao
+                    dịch và thu nhập liên quan của mình, thay vì sử dụng tiền vay từ người khác.</view>
+                <view>2. Dựa trên sự điều chỉnh đối với hệ thống kiểm soát rủi ro của ngân hàng, kênh nạp tiền có thể
+                    không được hỗ trợ hoặc hạn mức giao dịch có thể không chính xác khi bạn sẵn sàng nạp tiền (đặc biệt
+                    là vào ban đêm tại địa phương của bạn), vì vậy bạn nên sắp xếp vị thế giao dịch của mình và khoảng
+                    thời gian nạp tiền sao cho hợp lý để tránh những tổn thất không đáng có do bất kỳ sự chậm trễ nào
+                    trong việc nhận tiền nạp.</view>
+                <view>Không bao giờ tiết lộ thông tin cá nhân nhạy cảm cho người gọi đến. CWG sẽ không bao giờ yêu cầu
+                    bất kỳ thông tin cá nhân nhạy cảm nào từ bạn qua điện thoại hoặc email cũng như không cung cấp bất
+                    kỳ lời khuyên đầu tư nào.</view>
+                <view>Trong trường hợp có bất kỳ vấn đề gì với khoản tiền nạp của bạn, vui lòng liên hệ với trung tâm
+                    dịch vụ khách hàng chính thức của chúng tôi bất kỳ lúc nào.</view>
+                <view><text class="bold">Trân trọng,</text></view>
+            </view>
+        </view>
+        <template #footer>
+            <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+        </template>
+    </cwg-popup>
+</template>
+
+<script setup>
+import { computed } from 'vue';
+import { useI18n } from 'vue-i18n';
+
+const props = defineProps({
+    visible: { type: Boolean, default: false }
+});
+const emit = defineEmits(['update:visible']);
+
+const { t } = useI18n();
+const visible = computed({
+    get: () => props.visible,
+    set: (val) => emit('update:visible', val)
+});
+const close = () => { visible.value = false; };
+</script>
+
+<style lang="scss" scoped>
+@import "@/uni.scss";
+
+.popup-content {
+    padding: px2rpx(20);
+
+    .des1 {
+        font-size: px2rpx(16);
+        line-height: 1.8;
+        margin: px2rpx(20) 0 px2rpx(30);
+        text-align: left;
+        max-width: 100%;
+
+        view {
+            margin-bottom: px2rpx(20);
+
+            &:last-child {
+                margin-bottom: 0;
+            }
+        }
+
+        .bold {
+            font-weight: bold;
+        }
+    }
+}
+</style>

+ 400 - 0
pages/customer/components/cwg-check-confirm-popup.vue

@@ -0,0 +1,400 @@
+<template>
+  <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true" :showClose="false">
+    <view class="popup-content">
+      <view class="info-section">
+        <cwg-label-line-value :label="t('Custom.Deposit.Title1')" :value="login" v-if="login" />
+        <cwg-label-line-value :label="t('Custom.Deposit.Title2')"
+          :value="locale == 'cn' ? channelData.name : channelData.enName" v-if="channelData.code" />
+        <cwg-label-line-value :label="t('news_add_field.Label.Title4')" :value="selectCodes" v-if="code" />
+        <cwg-label-line-value :label="t('Custom.Deposit.Title3')" :value="params.amount + ' ' + channelData.currency"
+          v-if="params.amount" />
+        <cwg-label-line-value :label="t('Label.Name')" :value="userName" v-if="channelData.confirmName" />
+      </view>
+
+      <view class="form-section" v-if="(channelData.confirmAreaCode || channelData.confirmPhone)">
+        <uni-forms ref="formRef" :model="formData" :rules="rules" label-position="top">
+          <uni-forms-item :label="t('placeholder.phone')"
+            v-if="channelData.confirmAreaCode && channelData.confirmPhone">
+            <view class="phone-input-group">
+              <view class="area-code-input">
+                <input type="text" v-model="formData.confirmAreaCode" placeholder="+86" />
+              </view>
+              <view class="phone-separator">-</view>
+              <view class="phone-input">
+                <input type="tel" v-model="formData.confirmPhone" placeholder="{{ t('placeholder.phone') }}" />
+              </view>
+            </view>
+          </uni-forms-item>
+          <uni-forms-item :label="t('placeholder.phone')" v-else-if="channelData.confirmPhone">
+            <input type="tel" v-model="formData.confirmPhone" placeholder="{{ t('placeholder.phone') }}" />
+          </uni-forms-item>
+          <uni-forms-item :label="t('placeholder.phone')" v-else-if="channelData.confirmAreaCode">
+            <input type="text" v-model="formData.confirmAreaCode" placeholder="{{ t('placeholder.phone') }}" />
+          </uni-forms-item>
+        </uni-forms>
+      </view>
+
+      <view class="merchant-info">
+        <view v-if="locale === 'cn'">
+          <view>商户:CWG Markets Ltd</view>
+          <view>指定独立代表和/或分销商</view>
+          <view>注册地址:瓦努阿图,波特维拉,Govant大厦,Kumul公路1276号,1楼</view>
+          <view>CWG Markets Ltd 负责与本网站相关的营销、分销和客户支持服务。</view>
+        </view>
+        <!-- Traditional Chinese -->
+        <view v-else-if="locale === 'zhHant'">
+          <view>商戶:CWG Markets Ltd</view>
+          <view>指定獨立代表和/或分銷商</view>
+          <view>註冊地址:瓦努阿圖,波特維拉,Govant大廈,Kumul公路1276號,1樓</view>
+          <view>CWG Markets Ltd 負責與本網站相關的行銷、分銷和客戶支援服務。</view>
+        </view>
+        <!-- English -->
+        <view v-else-if="locale === 'en'">
+          <view>Merchant: CWG Markets Ltd</view>
+          <view>Appointed Independent Representative and/or Distributor</view>
+          <view>Registered Address: 1276 Kumul Highway, Govant Building, 1st Floor, Port Vila, Vanuatu</view>
+          <view>CWG Markets Ltd is responsible for marketing, distribution, and customer support services related to
+            this
+            website.</view>
+        </view>
+        <!-- Vietnamese -->
+        <view v-else-if="locale === 'vn'">
+          <view>Người bán: CWG Markets Ltd</view>
+          <view>Đại diện độc lập được bổ nhiệm và/hoặc nhà phân phối</view>
+          <view>Địa chỉ đăng ký: 1276 Kumul Highway, Tòa nhà Govant, Tầng 1, Port Vila, Vanuatu</view>
+          <view>CWG Markets Ltd chịu trách nhiệm về tiếp thị, phân phối và dịch vụ hỗ trợ khách hàng liên quan đến trang
+            web này.</view>
+        </view>
+        <!-- Thai -->
+        <view v-else-if="locale === 'th'">
+          <view>พาณิชย์: CWG Markets Ltd</view>
+          <view>ตัวแทนอิสระและ/หรือตัวแทนจำหน่ายที่ได้รับการแต่งตั้ง</view>
+          <view>ที่อยู่ที่จดทะเบียน: 1276 Kumul Highway, Govant Building, ชั้น 1, Port Vila, Vanuatu</view>
+          <view>CWG Markets Ltd รับผิดชอบการตลาด การจัดจำหน่าย และบริการสนับสนุนลูกค้าที่เกี่ยวข้องกับเว็บไซต์นี้</view>
+        </view>
+        <!-- Arabic -->
+        <view v-else-if="locale === 'ar'">
+          <view>التاجر: CWG Markets Ltd</view>
+          <view>الممثل المستقل المعين و/أو الموزع</view>
+          <view>العنوان المسجل: 1276 كوميول هايوي، مبنى جوفانت، الطابق الأول، بورت فيلا، فانواتو</view>
+          <view>تتحمل شركة CWG Markets Ltd مسؤولية التسويق والتوزيع وخدمات دعم العملاء المتعلقة بهذا الموقع.</view>
+        </view>
+        <!-- German -->
+        <view v-else-if="locale === 'de'">
+          <view>Händler: CWG Markets Ltd</view>
+          <view>Bestellter unabhängiger Vertreter und/oder Distributor</view>
+          <view>Registrierte Adresse: 1276 Kumul Highway, Govant Building, 1. Etage, Port Vila, Vanuatu</view>
+          <view>CWG Markets Ltd ist verantwortlich für Marketing, Vertrieb und Kundenservice im Zusammenhang mit dieser
+            Website.</view>
+        </view>
+        <!-- Spanish -->
+        <view v-else-if="locale === 'es'">
+          <view>Comerciante: CWG Markets Ltd</view>
+          <view>Representante independiente y/o distribuidor designado</view>
+          <view>Dirección registrada: 1276 Kumul Highway, Govant Building, 1er Piso, Port Vila, Vanuatu</view>
+          <view>CWG Markets Ltd es responsable de marketing, distribución y servicios de atención al cliente
+            relacionados
+            con este sitio web.</view>
+        </view>
+        <!-- Indonesian -->
+        <view v-else-if="locale === 'id'">
+          <view>Pedagang: CWG Markets Ltd</view>
+          <view>Perwakilan Independen yang Ditunjuk dan/atau Distributor</view>
+          <view>Alamat Terdaftar: 1276 Kumul Highway, Gedung Govant, Lantai 1, Port Vila, Vanuatu</view>
+          <view>CWG Markets Ltd bertanggung jawab atas pemasaran, distribusi, dan layanan dukungan pelanggan terkait
+            dengan situs web ini.</view>
+        </view>
+        <!-- Malaysian -->
+        <view v-else-if="locale === 'ms'">
+          <view>Pedagang: CWG Markets Ltd</view>
+          <view>Wakil Bebas yang Ditetapkan dan/atau Pengedar</view>
+          <view>Alamat Didaftarkan: 1276 Kumul Highway, Bangunan Govant, Tingkat 1, Port Vila, Vanuatu</view>
+          <view>CWG Markets Ltd bertanggungjawab ke atas pemasaran, pengedaran, dan perkhidmatan sokongan pelanggan yang
+            berkaitan dengan laman web ini.</view>
+        </view>
+        <!-- Korean -->
+        <view v-else-if="locale === 'ko'">
+          <view>상인: CWG Markets Ltd</view>
+          <view>지정된 독립 대표자 및/또는 유통업체</view>
+          <view>등록된 주소: 1276 Kumul Highway, Govant Building, 1층, Port Vila, Vanuatu</view>
+          <view>CWG Markets Ltd는 이 웹사이트와 관련된 마케팅, 배급 및 고객 지원 서비스를 담당합니다.</view>
+        </view>
+        <!-- Brazilian Portuguese -->
+        <view v-else-if="locale === 'pt'">
+          <view>Mercante: CWG Markets Ltd</view>
+          <view>Representante Independente nomeado e/ou Distribuidor</view>
+          <view>Endereço Registrado: 1276 Kumul Highway, Govant Building, 1º Andar, Port Vila, Vanuatu</view>
+          <view>CWG Markets Ltd é responsável pelo marketing, distribuição e serviços de atendimento ao cliente
+            relacionados a este site.</view>
+        </view>
+        <!-- Persian -->
+        <view v-else-if="locale === 'fa'">
+          <view>تاجر: CWG Markets Ltd</view>
+          <view>نماینده مستقل و/یا توزیع‌کننده منصوب</view>
+          <view>آدرس ثبت‌شده: 1276 Kumul Highway, ساختمان Govant, طبقه اول، Port Vila، وانواتو</view>
+          <view>CWG Markets Ltd مسئول بازاریابی، توزیع و خدمات پشتیبانی مشتریان مرتبط با این وب‌سایت است.</view>
+        </view>
+        <!-- Turkish -->
+        <view v-else-if="locale === 'tr'">
+          <view>Tüccar: CWG Markets Ltd</view>
+          <view>Atanmış Bağımsız Temsilci ve/veya Distribütör</view>
+          <view>Kayıtlı Adres: 1276 Kumul Highway, Govant Building, 1. Kat, Port Vila, Vanuatu</view>
+          <view>CWG Markets Ltd, bu web sitesiyle ilgili pazarlama, dağıtım ve müşteri destek hizmetlerinden sorumludur.
+          </view>
+        </view>
+        <!-- Fallback to English -->
+        <view v-else>
+          <view>Merchant: CWG Markets Ltd</view>
+          <view>Appointed Independent Representative and/or Distributor</view>
+          <view>Registered Address: 1276 Kumul Highway, Govant Building, 1st Floor, Port Vila, Vanuatu</view>
+          <view>CWG Markets Ltd is responsible for marketing, distribution, and customer support services related to
+            this
+            website.</view>
+        </view>
+      </view>
+    </view>
+    <template #footer>
+      <button @click="cancel">{{ t('Btn.Cancel') }}</button>
+      <button type="primary" @click="submit">{{ t('Btn.Confirm') }}</button>
+    </template>
+  </cwg-popup>
+</template>
+
+<script setup>
+import { ref, computed } from 'vue';
+import { useI18n } from 'vue-i18n';
+
+const props = defineProps({
+  visible: { type: Boolean, default: false },
+  login: String,
+  channelData: Object,
+  code: String,
+  selectCodes: String,
+  params: Object,
+  userName: String,
+  // 其他可能需要的 props
+});
+const emit = defineEmits(['update:visible', 'confirm', 'cancel']);
+
+const { t, locale } = useI18n();
+const visible = computed({
+  get: () => props.visible,
+  set: (val) => emit('update:visible', val)
+});
+
+const formData = ref({
+  confirmAreaCode: '',
+  confirmPhone: ''
+});
+
+const rules = ref({
+  confirmAreaCode: {
+    rules: [
+      {
+        required: true,
+        errorMessage: t('vaildate.select.empty')
+      }
+    ]
+  },
+  confirmPhone: {
+    rules: [
+      {
+        required: true,
+        errorMessage: t('vaildate.select.empty')
+      },
+      {
+        pattern: /^1[3-9]\d{9}$/,
+        errorMessage: t('vaildate.phone.format')
+      }
+    ]
+  }
+});
+
+const formRef = ref(null);
+
+const cancel = () => {
+  visible.value = false;
+  emit('cancel');
+};
+
+const submit = async () => {
+  if (formRef.value) {
+    try {
+      await formRef.value.validate();
+      visible.value = false;
+      emit('confirm', formData.value);
+    } catch (error) {
+      console.error('Form validation failed:', error);
+    }
+  } else {
+    visible.value = false;
+    emit('confirm', formData.value);
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+@import "@/uni.scss";
+
+.popup-content {
+  .info-section {
+    margin-bottom: px2rpx(24);
+    padding: px2rpx(20);
+    background-color: #f8f9fa;
+    border-radius: px2rpx(8);
+    border: 1px solid #e9ecef;
+
+    :deep(.cwg-label-line-value) {
+      margin-bottom: px2rpx(12);
+
+      &:last-child {
+        margin-bottom: 0;
+      }
+    }
+  }
+
+  .form-section {
+    margin-bottom: px2rpx(24);
+    padding: px2rpx(20);
+    background-color: #ffffff;
+    border-radius: px2rpx(8);
+    border: 1px solid #e9ecef;
+
+    :deep(.uni-forms) {
+      width: 100%;
+
+      :deep(.uni-forms-item) {
+        margin-bottom: px2rpx(16);
+
+        :deep(.uni-forms-item__label) {
+          font-size: px2rpx(14);
+          color: #606266;
+          margin-bottom: px2rpx(8);
+        }
+
+        :deep(.uni-forms-item__error) {
+          font-size: px2rpx(12);
+          color: #f56c6c;
+          margin-top: px2rpx(4);
+        }
+      }
+    }
+
+    .phone-input-group {
+      display: flex;
+      align-items: center;
+      gap: px2rpx(12);
+
+      .area-code-input {
+        flex: 0 0 px2rpx(100);
+
+        input {
+          width: 100%;
+          height: px2rpx(40);
+          padding: 0 px2rpx(12);
+          border: 1px solid #dcdfe6;
+          border-radius: px2rpx(4);
+          font-size: px2rpx(14);
+          transition: border-color 0.3s;
+
+          &:focus {
+            outline: none;
+            border-color: #409eff;
+            box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.2);
+          }
+        }
+      }
+
+      .phone-separator {
+        font-size: px2rpx(16);
+        color: #909399;
+        user-select: none;
+      }
+
+      .phone-input {
+        flex: 1;
+
+        input {
+          width: 100%;
+          height: px2rpx(40);
+          padding: 0 px2rpx(12);
+          border: 1px solid #dcdfe6;
+          border-radius: px2rpx(4);
+          font-size: px2rpx(14);
+          transition: border-color 0.3s;
+
+          &:focus {
+            outline: none;
+            border-color: #409eff;
+            box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.2);
+          }
+        }
+      }
+    }
+
+    input {
+      width: 100%;
+      height: px2rpx(40);
+      padding: 0 px2rpx(12);
+      border: 1px solid #dcdfe6;
+      border-radius: px2rpx(4);
+      font-size: px2rpx(14);
+      transition: border-color 0.3s;
+
+      &:focus {
+        outline: none;
+        border-color: #409eff;
+        box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.2);
+      }
+    }
+  }
+
+  .merchant-info {
+    padding: px2rpx(16);
+    background-color: #f5f7fa;
+    border-radius: px2rpx(8);
+    font-size: px2rpx(13);
+    line-height: 1.6;
+    text-align: left;
+    color: #606266;
+
+    view {
+      margin-bottom: px2rpx(8);
+
+      &:last-child {
+        margin-bottom: 0;
+      }
+    }
+  }
+}
+
+@media (max-width: 768px) {
+  .popup-content {
+
+    .info-section,
+    .form-section {
+      padding: px2rpx(16);
+    }
+
+    .form-section {
+      .phone-input-group {
+        gap: px2rpx(8);
+
+        .area-code-input {
+          flex: 0 0 px2rpx(80);
+        }
+
+        input {
+          height: px2rpx(36);
+          font-size: px2rpx(13);
+        }
+      }
+    }
+
+    .merchant-info {
+      padding: px2rpx(12);
+      font-size: px2rpx(12);
+    }
+  }
+}
+</style>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1070 - 279
pages/customer/deposit.vue


+ 3 - 3
pages/ib/components/BonusAgreementPopup.vue

@@ -1,5 +1,5 @@
 <template>
-    <cwg-popup v-model:visible="visible" type="center" :title="title" :mask-click="false" :showFooter="false">
+    <cwg-popup v-model:visible="visible" type="center" :title="title" :mask-click="false" :showFooters="false">
         <view class="popup-content clause-popup">
             <view class="clause-content" id="Agreement">
                 <scroll-view scroll-y="true" style="height: 60vh;">
@@ -76,9 +76,9 @@
                     </view>
                 </scroll-view>
             </view>
-            <view class="clause-footer">
+            <template #footer>
                 <button type="primary" @click="visible = false">{{ t('Btn.Confirm') }}</button>
-            </view>
+            </template>
         </view>
     </cwg-popup>
 </template>

+ 2 - 6
static/scss/global/global.scss

@@ -1165,11 +1165,9 @@ uni-content {
 }
 
 .popup-content {
-    padding: px2rpx(30) px2rpx(20);
+    // padding: px2rpx(30) px2rpx(20);
     text-align: center;
     min-width: px2rpx(250);
-    max-width: 80%;
-    margin: 0 auto;
 
     @media screen and (max-width: 991px) {
         min-width: 80%;
@@ -1219,8 +1217,7 @@ uni-content {
     // 双按钮模式
     &:not(:has(button:only-child)):has(button) {
       display: flex;
-      //justify-content: center;
-      justify-content: space-around;
+      justify-content: center;
       gap: px2rpx(20);
     }
 
@@ -1327,7 +1324,6 @@ uni-content {
 // 适配不同屏幕尺寸(媒体查询中的 750rpx 保持不变)
 @media (max-width: 750rpx) {
     .popup-content {
-        padding: px2rpx(20) px2rpx(16);
 
         .icon {
             .iconfont {

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.