From b8aa16ee1bd825e9798b9c749a1b8877844882fb Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期四, 29 五月 2025 13:43:27 +0800
Subject: [PATCH] Merge branch 'dev-ui' of http://120.26.58.240:8888/r/LifePaymentFront into dev-ui

---
 apps/taro/src/app.config.ts                                            |    8 +
 apps/taro/src/pages/mine/index.vue                                     |    8 +
 packages/components/src/constants/img.ts                               |    1 
 apps/taro/src/subpackages/my/promotionQrcode/promotionQrcode.config.ts |    3 
 apps/taro/src/constants/router.ts                                      |    2 
 apps/taro/src/subpackages/my/shareQrcode/shareQrcode.vue               |    2 
 apps/taro/src/subpackages/my/promotionQrcode/promotionQrcode.vue       |   37 ++++++
 packages/components/src/components/Result/ResultWithoutBG.vue          |   47 +++++++
 apps/taro/src/subpackages/my/applyAgent/applyAgent.vue                 |    5 
 apps/taro/src/subpackages/my/applyResult/applyResult.config.ts         |    3 
 packages/components/src/styles/components.scss                         |   44 +++++++
 packages/components/src/index.ts                                       |    1 
 apps/taro/src/subpackages/my/promotionQrcode/InnerPage.vue             |  110 ++++++++++++++++++
 apps/taro/src/constants/img.ts                                         |    3 
 packages/components/src/components/Result/Result.vue                   |    1 
 apps/taro/src/subpackages/my/applyResult/applyResult.vue               |   25 ++++
 packages/components/src/views/Mine/ShareQrcodeView.vue                 |    7 
 17 files changed, 301 insertions(+), 6 deletions(-)

diff --git a/apps/taro/src/app.config.ts b/apps/taro/src/app.config.ts
index bd61f41..1e5d61c 100644
--- a/apps/taro/src/app.config.ts
+++ b/apps/taro/src/app.config.ts
@@ -111,7 +111,13 @@
     },
     {
       root: 'subpackages/my',
-      pages: ['shareQrcode/shareQrcode', 'dashboard/dashboard', 'applyAgent/applyAgent'],
+      pages: [
+        'shareQrcode/shareQrcode',
+        'dashboard/dashboard',
+        'applyAgent/applyAgent',
+        'applyResult/applyResult',
+        'promotionQrcode/promotionQrcode',
+      ],
     },
   ],
   // preloadRule: {
diff --git a/apps/taro/src/constants/img.ts b/apps/taro/src/constants/img.ts
index c1a6036..6e700ad 100644
--- a/apps/taro/src/constants/img.ts
+++ b/apps/taro/src/constants/img.ts
@@ -6,7 +6,10 @@
     HomePageBg: `${OssBasePath}/lifePayment/assets/common/icon-home-page-bg.png`,
     DataPageBg: `${OssBasePath}/lifePayment/assets/common/icon-data-page-bg.png`,
     MinePageBg: `${OssBasePath}/lifePayment/assets/common/icon-mine-page-bg.png`,
+    PromotionQrcodePageBg: `${OssBasePath}/lifePayment/assets/common/icon-promotion-qrcode-page-bg.png`,
     PhoneBillRechargePageBg: `${OssBasePath}/lifePayment/assets/common/icon-phoneBillRecharge-page-bg.png`,
+
+    PromotionQrcodeContentBG: `${OssBasePath}/lifePayment/assets/common/icon-promotion-qrcode-content-bg.png`,
   },
   mine: {
     // Bg: `${OssBasePath}/matchMakingMini/assets/mine/icon-bg.png`,
diff --git a/apps/taro/src/constants/router.ts b/apps/taro/src/constants/router.ts
index 617bded..5ab7836 100644
--- a/apps/taro/src/constants/router.ts
+++ b/apps/taro/src/constants/router.ts
@@ -24,6 +24,8 @@
   editPhoneUserAccount = '/subpackages/userAccount/editPhoneUserAccount/editPhoneUserAccount',
   editElectricUserAccount = '/subpackages/userAccount/editElectricUserAccount/editElectricUserAccount',
   shareQrcode = '/subpackages/my/shareQrcode/shareQrcode',
+  promotionQrcode = '/subpackages/my/promotionQrcode/promotionQrcode',
   dashboard = '/subpackages/my/dashboard/dashboard',
   applyAgent = '/subpackages/my/applyAgent/applyAgent',
+  applyResult = '/subpackages/my/applyResult/applyResult',
 }
diff --git a/apps/taro/src/pages/mine/index.vue b/apps/taro/src/pages/mine/index.vue
index ca824f6..e379d80 100644
--- a/apps/taro/src/pages/mine/index.vue
+++ b/apps/taro/src/pages/mine/index.vue
@@ -24,8 +24,13 @@
           <ListItemV2 :icon="IconMineDataBoard" title="鏁版嵁鐪嬫澘" @click="goDashboard"></ListItemV2>
           <ListItemV2
             :icon="IconMinePromotion"
-            title="鎺ㄥ箍浜岀淮鐮�"
+            title="娓犻亾浜岀淮鐮�"
             @click="goShareQrcode"
+          ></ListItemV2>
+          <ListItemV2
+            :icon="IconMinePromotion"
+            title="鎺ㄥ箍浜岀淮鐮�"
+            @click="goPromotionQrcode"
           ></ListItemV2>
         </template>
         <ListItemV2
@@ -100,6 +105,7 @@
 const goOrderManage = useAccessLogin(() => goPage(RouterPath.order));
 const goUserAccountList = useAccessLogin(() => goPage(RouterPath.userAccountList));
 const goShareQrcode = useAccessLogin(() => goPage(RouterPath.shareQrcode));
+const goPromotionQrcode = useAccessLogin(() => goPage(RouterPath.promotionQrcode));
 const goDashboard = useAccessLogin(() => goPage(RouterPath.dashboard));
 
 async function goLogout() {
diff --git a/apps/taro/src/subpackages/my/applyAgent/applyAgent.vue b/apps/taro/src/subpackages/my/applyAgent/applyAgent.vue
index 66c9529..da2982f 100644
--- a/apps/taro/src/subpackages/my/applyAgent/applyAgent.vue
+++ b/apps/taro/src/subpackages/my/applyAgent/applyAgent.vue
@@ -11,6 +11,7 @@
 
 <script setup lang="ts">
 import { PageLayout } from '@/components';
+import { RouterPath } from '@/constants';
 import { ApplyAgentView } from '@life-payment/components';
 import { goBack } from '@/utils';
 import type { ComponentExposed } from 'vue-component-type-helpers';
@@ -27,6 +28,8 @@
 }
 
 function submit() {
-  goBack();
+  RouteHelper.navigateTo({
+    url: RouterPath.applyResult,
+  });
 }
 </script>
diff --git a/apps/taro/src/subpackages/my/applyResult/applyResult.config.ts b/apps/taro/src/subpackages/my/applyResult/applyResult.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/taro/src/subpackages/my/applyResult/applyResult.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+  disableScroll: true,
+});
diff --git a/apps/taro/src/subpackages/my/applyResult/applyResult.vue b/apps/taro/src/subpackages/my/applyResult/applyResult.vue
new file mode 100644
index 0000000..56d16be
--- /dev/null
+++ b/apps/taro/src/subpackages/my/applyResult/applyResult.vue
@@ -0,0 +1,25 @@
+<template>
+  <PageLayout title="绔嬪嵆鐢宠" class="applyAgent-page-wrapper" hasBgColor :needAuth="false">
+    <ResultWithoutBG
+      remark="鎴戜滑鐨勮繍钀ヤ汉鍛樹細鍦�5涓伐浣滄棩鍐呰仈绯绘偍娌熼�氫唬鐞嗕簨瀹滐紝璇蜂繚鎸佺數璇濈晠閫�!"
+      tips="娉細鎴愬姛鎷涘嫙浠g悊鍟嗭紝杩樻湁鏈�楂�1000鍏冨鍔憋紝璇﹁璇峰挩璇細16505012333"
+      title="鎻愪氦鎴愬姛"
+      @generate="generate"
+    ></ResultWithoutBG>
+  </PageLayout>
+</template>
+
+<script setup lang="ts">
+import { PageLayout } from '@/components';
+import { ResultWithoutBG } from '@life-payment/components';
+
+defineOptions({
+  name: 'applyAgent',
+});
+
+function generate() {
+  RouteHelper.navigateTo({
+    url: RouterPath.promotionQrcode,
+  });
+}
+</script>
diff --git a/apps/taro/src/subpackages/my/promotionQrcode/InnerPage.vue b/apps/taro/src/subpackages/my/promotionQrcode/InnerPage.vue
new file mode 100644
index 0000000..c464a25
--- /dev/null
+++ b/apps/taro/src/subpackages/my/promotionQrcode/InnerPage.vue
@@ -0,0 +1,110 @@
+<template>
+  <ContentView>
+    <div class="promotion-qrcode-content" :style="barStyle">
+      <div
+        class="promotion-qrcode-content-qrcode"
+        :style="{ backgroundImage: `url(${OssAssets.common.PromotionQrcodeContentBG})` }"
+      >
+        <ShareQrcodeView :channles-num="userChannles[0]?.channlesNum" :size="148" />
+        <div class="promotion-qrcode-content-qrcode-tips">闀挎寜浜岀淮鐮佸垎浜ソ鍙�</div>
+      </div>
+      <div class="promotion-qrcode-content-btn">鐐瑰嚮涓嬭浇浜岀淮鐮�</div>
+    </div>
+  </ContentView>
+</template>
+
+<script setup lang="ts">
+import { ShareQrcodeView, ResultWithoutBG } from '@life-payment/components';
+import { useLifeRechargeContext } from '@life-payment/core-vue';
+import { isWeb } from '@/utils/env';
+import { useSystemStore } from '@/stores/modules/system';
+import { CSSProperties } from 'vue';
+import { OssAssets } from '@/constants';
+
+defineOptions({
+  name: 'InnerPage',
+});
+
+// const { virtualUserInfo } = useUser();
+const { blLifeRecharge } = useLifeRechargeContext();
+
+const userChannles = computed(() =>
+  (blLifeRecharge.accountModel.userChannles ?? []).filter(
+    (x) => x.switchType !== blLifeRecharge.constants.LifePaySwitchTypeEnum.寰俊灏忕▼搴�
+  )
+);
+
+const channlesType = ref(userChannles.value[0]?.channlesNum ?? '');
+
+watch(userChannles, (val) => {
+  channlesType.value = val?.[0]?.channlesNum ?? '';
+});
+
+const systemStore = useSystemStore();
+
+const barStyle = computed(
+  () =>
+    ({
+      paddingTop: systemStore.info.statusBarHeight + 'px',
+      backgroundImage: `url(${OssAssets.common.PromotionQrcodeContentBG})`,
+    } as CSSProperties)
+);
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.promotion-qrcode-page-wrapper {
+  .promotion-qrcode-content {
+    margin-top: 306px;
+    width: 100%;
+    height: 788px;
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+  }
+
+  .promotion-qrcode-content-qrcode {
+    width: 432px;
+    height: 432px;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+    position: relative;
+  }
+
+  .promotion-qrcode-content-qrcode-tips {
+    font-size: 32px;
+    font-weight: bold;
+    position: absolute;
+    bottom: -22px;
+    background: linear-gradient(0.25turn, #63654c 0%, #101f23 39%, #101f23 55%, #0082d3 100%);
+    -webkit-background-clip: text;
+    -webkit-text-fill-color: transparent;
+  }
+
+  .promotion-qrcode-content-btn {
+    width: 432px;
+    height: 96px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    background-color: boleGetCssVar('color', 'primary');
+    margin-top: 70px;
+    border-radius: 12px;
+    font-size: 38px;
+    font-weight: 500;
+    color: #ffffff;
+  }
+
+  .share-qrcode-view {
+    margin-top: 60px;
+    padding: 0;
+  }
+}
+</style>
diff --git a/apps/taro/src/subpackages/my/promotionQrcode/promotionQrcode.config.ts b/apps/taro/src/subpackages/my/promotionQrcode/promotionQrcode.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/taro/src/subpackages/my/promotionQrcode/promotionQrcode.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+  disableScroll: true,
+});
diff --git a/apps/taro/src/subpackages/my/promotionQrcode/promotionQrcode.vue b/apps/taro/src/subpackages/my/promotionQrcode/promotionQrcode.vue
new file mode 100644
index 0000000..6547e85
--- /dev/null
+++ b/apps/taro/src/subpackages/my/promotionQrcode/promotionQrcode.vue
@@ -0,0 +1,37 @@
+<template>
+  <PageLayoutWithBg class="promotion-qrcode-page-wrapper">
+    <template #navigationBar>
+      <TransparentNavigationBar :title="'鎺ㄥ箍浜岀淮鐮�'" :is-absolute="false">
+      </TransparentNavigationBar>
+    </template>
+    <template #bg>
+      <img :src="OssAssets.common.PromotionQrcodePageBg" class="promotion-qrcode-page-bg" />
+    </template>
+    <InnerPage />
+  </PageLayoutWithBg>
+</template>
+
+<script setup lang="ts">
+import InnerPage from './InnerPage.vue';
+import { OssAssets } from '@/constants';
+
+defineOptions({
+  name: 'shareQrcode',
+});
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.promotion-qrcode-page-wrapper {
+  .promotion-qrcode-page-bg {
+    position: fixed;
+    z-index: -1;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    object-fit: cover;
+  }
+}
+</style>
diff --git a/apps/taro/src/subpackages/my/shareQrcode/shareQrcode.vue b/apps/taro/src/subpackages/my/shareQrcode/shareQrcode.vue
index de62774..d7220d9 100644
--- a/apps/taro/src/subpackages/my/shareQrcode/shareQrcode.vue
+++ b/apps/taro/src/subpackages/my/shareQrcode/shareQrcode.vue
@@ -1,5 +1,5 @@
 <template>
-  <PageLayout title="鎺ㄥ箍浜岀淮鐮�" class="shareQrcode-page-wrapper" hasBorder>
+  <PageLayout title="娓犻亾浜岀淮鐮�" class="shareQrcode-page-wrapper" hasBorder>
     <InnerPage />
   </PageLayout>
 </template>
diff --git a/packages/components/src/components/Result/Result.vue b/packages/components/src/components/Result/Result.vue
index 6c8b33d..d52da9c 100644
--- a/packages/components/src/components/Result/Result.vue
+++ b/packages/components/src/components/Result/Result.vue
@@ -31,6 +31,7 @@
 <script setup lang="ts">
 import { computed } from 'vue';
 import { OssAssets } from '../../constants/img';
+import { Button as NutButton } from '@nutui/nutui-taro';
 
 defineOptions({
   name: 'Result',
diff --git a/packages/components/src/components/Result/ResultWithoutBG.vue b/packages/components/src/components/Result/ResultWithoutBG.vue
new file mode 100644
index 0000000..09f3e2e
--- /dev/null
+++ b/packages/components/src/components/Result/ResultWithoutBG.vue
@@ -0,0 +1,47 @@
+<template>
+  <div class="result-without-bg-wrapper" v-bind="$attrs">
+    <div class="result-without-bg-content">
+      <img class="result-without-bg-content-icon" :src="OssAssets.result.Successv2" />
+      <div class="result-without-bg-content-title">{{ title }}</div>
+      <div class="result-without-bg-content-remark">
+        <slot name="remark">{{ remark }} </slot>
+      </div>
+    </div>
+    <div class="result-without-bg-wrapper-actions">
+      <slot name="actions">
+        <div class="chunk-form-actions">
+          <nut-button class="recharge-button" type="primary" @click="emit('generate')">
+            <div class="recharge-button-inner">
+              <div class="recharge-button-text">鐢熸垚鎴戠殑鎺ㄥ箍鐮�</div>
+            </div>
+          </nut-button>
+        </div>
+      </slot>
+    </div>
+    <div class="result-without-bg-wrapper-tips">
+      <slot name="tips">{{ tips }} </slot>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { OssAssets } from '../../constants/img';
+import { Button as NutButton } from '@nutui/nutui-taro';
+
+defineOptions({
+  name: 'ResultWithoutBG',
+});
+
+type Props = {
+  title?: string;
+  type?: 'success' | 'fail';
+  tips?: string;
+  remark?: string;
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+
+const emit = defineEmits<{
+  (e: 'generate'): void;
+}>();
+</script>
diff --git a/packages/components/src/constants/img.ts b/packages/components/src/constants/img.ts
index d03668b..b47b00e 100644
--- a/packages/components/src/constants/img.ts
+++ b/packages/components/src/constants/img.ts
@@ -25,6 +25,7 @@
 
   result: {
     Success: `${OssBasePath}/lifePayment/assets/common/icon-result-success.png`,
+    Successv2: `${OssBasePath}/lifePayment/assets/common/icon-result-successv2.png`,
     Fail: `${OssBasePath}/lifePayment/assets/common/icon-result-fail.png`,
   },
 };
diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts
index e6b38ac..2b7329a 100644
--- a/packages/components/src/index.ts
+++ b/packages/components/src/index.ts
@@ -6,6 +6,7 @@
 export { default as RechargeResultView } from './views/RechargeResultView/RechargeResultView.vue';
 export { default as Result } from './components/Result/Result.vue';
 export { default as ResultWithTips } from './components/Result/ResultWithTips.vue';
+export { default as ResultWithoutBG } from './components/Result/ResultWithoutBG.vue';
 export { default as PhoneOrder } from './views/Order/components/PhoneOrder.vue';
 export { default as ElectricOrder } from './views/Order/components/ElectricOrder.vue';
 export { default as GasOrder } from './views/Order/components/GasOrder.vue';
diff --git a/packages/components/src/styles/components.scss b/packages/components/src/styles/components.scss
index b89132d..c49e509 100644
--- a/packages/components/src/styles/components.scss
+++ b/packages/components/src/styles/components.scss
@@ -483,3 +483,47 @@
     }
   }
 }
+
+.result-without-bg-wrapper {
+  margin-top: 32px;
+  padding: 0 40px;
+
+  .result-without-bg-content {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex-direction: column;
+
+    .result-without-bg-content-icon {
+      width: 320px;
+      height: 320px;
+      margin-bottom: 22px;
+    }
+
+    .result-without-bg-content-title {
+      font-size: 48px;
+      color: boleGetCssVar('text-color', 'primary');
+      font-weight: bold;
+      margin-bottom: 12px;
+      line-height: 68px;
+    }
+
+    .result-without-bg-content-remark {
+      font-size: 32px;
+      line-height: 48px;
+      color: boleGetCssVar('text-color', 'regular');
+      font-weight: 500;
+      text-align: center;
+      padding: 0 32px;
+      margin-bottom: 120px;
+    }
+  }
+
+  .result-without-bg-wrapper-tips {
+    font-size: 30px;
+    line-height: 48px;
+    color: #ff9e25;
+    margin-top: 26px;
+    padding: 0 20px;
+  }
+}
diff --git a/packages/components/src/views/Mine/ShareQrcodeView.vue b/packages/components/src/views/Mine/ShareQrcodeView.vue
index 49d3a60..9a3df1d 100644
--- a/packages/components/src/views/Mine/ShareQrcodeView.vue
+++ b/packages/components/src/views/Mine/ShareQrcodeView.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="share-qrcode-view">
-    <qrcode-vue :value="link" :size="200"></qrcode-vue>
+    <qrcode-vue :value="link" :size="size"></qrcode-vue>
   </div>
 </template>
 
@@ -15,9 +15,12 @@
 
 type Props = {
   channlesNum?: string;
+  size?: number;
 };
 
-const props = withDefaults(defineProps<Props>(), {});
+const props = withDefaults(defineProps<Props>(), {
+  size: 200,
+});
 
 const { blLifeRecharge } = useLifeRechargeContext();
 

--
Gitblit v1.9.1