diff --git a/src/pages-aigc/agreement/agreement.vue b/src/pages-aigc/agreement/agreement.vue
new file mode 100644
index 0000000..20568f6
--- /dev/null
+++ b/src/pages-aigc/agreement/agreement.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+ {{ loading ? "协议加载中..." : "协议内容加载失败" }}
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-aigc/agreement/styles/index.scss b/src/pages-aigc/agreement/styles/index.scss
new file mode 100644
index 0000000..ac4f7d0
--- /dev/null
+++ b/src/pages-aigc/agreement/styles/index.scss
@@ -0,0 +1,54 @@
+.aigc-agreement-page {
+ width: 100%;
+ height: 100vh;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ background: #ffffff;
+}
+
+.aigc-agreement-scroll {
+ height: 0;
+ flex: 1 1 auto;
+ min-height: 0;
+ background: #ffffff;
+}
+
+.aigc-agreement-document {
+ min-height: 100%;
+ padding: 20px 16px calc(24px + env(safe-area-inset-bottom));
+ box-sizing: border-box;
+}
+
+.aigc-agreement-state {
+ min-height: 240px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding: 24px;
+ color: #7b8798;
+ font-size: 14px;
+ line-height: 22px;
+ box-sizing: border-box;
+}
+
+.aigc-agreement-retry {
+ width: 120px;
+ height: 42px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin: 16px 0 0;
+ padding: 0;
+ border-radius: 999px;
+ background: #102942;
+ color: #ffffff;
+ font-size: 14px;
+ line-height: 20px;
+ font-weight: 800;
+}
+
+.aigc-agreement-retry::after {
+ border: 0;
+}
diff --git a/src/pages-aigc/components/AigcTopBar/index.vue b/src/pages-aigc/components/AigcTopBar/index.vue
index 833f382..aa5de12 100644
--- a/src/pages-aigc/components/AigcTopBar/index.vue
+++ b/src/pages-aigc/components/AigcTopBar/index.vue
@@ -10,8 +10,7 @@
-
- {{ rechargeLabel }}
+
{{ displayPoints }}
积分
@@ -37,10 +36,6 @@ const props = defineProps({
type: [Number, String],
default: 0,
},
- rechargeLabel: {
- type: String,
- default: "充值",
- },
showActions: {
type: Boolean,
default: true,
@@ -52,7 +47,7 @@ const props = defineProps({
},
});
-const emit = defineEmits(["back", "history", "recharge"]);
+const emit = defineEmits(["back", "history"]);
const statusBarHeight = ref(0);
const navHeight = ref(52);
diff --git a/src/pages-aigc/components/AigcTopBar/styles/index.scss b/src/pages-aigc/components/AigcTopBar/styles/index.scss
index 06a67df..8dfcc55 100644
--- a/src/pages-aigc/components/AigcTopBar/styles/index.scss
+++ b/src/pages-aigc/components/AigcTopBar/styles/index.scss
@@ -18,6 +18,7 @@
}
.aigc-nav-row {
+ position: relative;
height: var(--aigc-nav-height);
display: flex;
align-items: center;
@@ -53,12 +54,15 @@
}
.aigc-topbar-actions {
- flex: 1 1 auto;
+ position: absolute;
+ left: 50%;
+ transform: translateX(-50%);
+ flex: 0 0 auto;
width: auto;
min-width: 0;
height: 36px;
display: grid;
- grid-template-columns: minmax(0, 1fr) 36px;
+ grid-template-columns: auto 36px;
align-items: center;
gap: 6px;
border-radius: 999px;
@@ -68,7 +72,7 @@
}
.aigc-history-button,
-.aigc-wallet-button {
+.aigc-points-display {
height: 36px;
min-width: 0;
display: flex;
@@ -94,29 +98,15 @@
justify-content: center;
}
-.aigc-wallet-button {
- justify-content: space-between;
- gap: 6px;
- padding: 0 8px;
+.aigc-points-display {
+ min-width: 84px;
+ max-width: 112px;
+ justify-content: center;
+ padding: 0 12px;
background: #102942;
color: #ffffff;
}
-.aigc-wallet-label {
- height: 24px;
- flex: 0 0 auto;
- display: inline-flex;
- align-items: center;
- padding: 0 8px;
- border-radius: 999px;
- background: rgba(32, 207, 117, 0.18);
- color: #50e093;
- font-size: 10px;
- line-height: 24px;
- font-weight: 900;
- white-space: nowrap;
-}
-
.aigc-wallet-points {
min-width: 0;
display: inline-flex;
diff --git a/src/pages-aigc/detail/detail.vue b/src/pages-aigc/detail/detail.vue
index 3c7834e..830a0fd 100644
--- a/src/pages-aigc/detail/detail.vue
+++ b/src/pages-aigc/detail/detail.vue
@@ -1,6 +1,6 @@
-
+
@@ -22,7 +22,7 @@
+ @cancel="handleClosePointDialog" />
@@ -239,13 +239,6 @@ const handleBack = () => {
}
};
-const handleRecharge = () => {
- uni.navigateTo({
- url: "/pages-aigc/recharge/recharge",
- fail: () => showPlaceholderToast("打开充值页面失败"),
- });
-};
-
const getMediaFileExtension = (url, mediaType) => {
const pathname = String(url || "").split(/[?#]/)[0];
const matchedExtension = pathname.match(/\.([a-z0-9]{2,5})$/i)?.[1]?.toLowerCase();
@@ -572,11 +565,6 @@ const handleClosePointDialog = () => {
pointDialogVisible.value = false;
};
-const handlePointRecharge = () => {
- pointDialogVisible.value = false;
- handleRecharge();
-};
-
const handleChangeTemplate = () => {
uni.navigateTo({
url: "/pages-aigc/home/home",
diff --git a/src/pages-aigc/home/components/AigcConsentDialog/index.vue b/src/pages-aigc/home/components/AigcConsentDialog/index.vue
index 3331d68..9e4187a 100644
--- a/src/pages-aigc/home/components/AigcConsentDialog/index.vue
+++ b/src/pages-aigc/home/components/AigcConsentDialog/index.vue
@@ -13,13 +13,24 @@
温馨提示
- {{ content }}
+ {{ content }}
- {{ defaultContentPrefix }}
-
- 《{{ ruleName }}》
-
- {{ defaultContentSuffix }}
+
+ 体验权益
+ {{ experienceContent }}
+
+
+
+ 服务说明
+ {{ serviceContent }}
+
+ 请您在使用前仔细阅读
+
+ 《{{ ruleName }}》
+
+ {{ ruleConsentSuffix }}
+
+
@@ -66,16 +77,19 @@ const props = defineProps({
},
});
-const emit = defineEmits(["update:visible", "cancel", "agree", "ruleClick"]);
+const emit = defineEmits(["update:visible", "cancel", "agree"]);
const popupRef = ref(null);
-const defaultContentPrefix = computed(
+const experienceContent =
+ "当前体验版本赠送 400 积分,可生成 1 张高清旅行图片和 1 段 5 秒内动效视频。如需更多生成额度,敬请期待后续版本上线。";
+
+const serviceContent = computed(
() =>
- `欢迎使用【${props.companyName}】提供的AI内容升级服务。本服务通过人工智能技术(AIGC)将您上传的照片或视频与景区场景模板进行创意优化,为您生成具有特定风格的旅行内容。请您仔细阅读`
+ `欢迎使用【${props.companyName}】提供的 AI 内容升级服务。本服务将通过人工智能技术(AIGC),对您上传的照片或视频进行处理,并结合景区场景模板,为您生成具有特定风格的旅行图片或视频内容。`
);
-const defaultContentSuffix =
- ",您点击“我同意”等进行下一步操作的行为均视为您同意受本规则约束。如您不同意,您可以直接关闭页面。";
+const ruleConsentSuffix =
+ "。点击“我同意”并继续操作,即表示您已阅读、理解并同意遵守相关规则;如您不同意,可点击“取消”并退出本服务。";
const close = () => {
popupRef.value?.close();
@@ -93,7 +107,15 @@ const handleAgree = () => {
};
const handleRuleClick = () => {
- emit("ruleClick");
+ uni.navigateTo({
+ url: "/pages-aigc/agreement/agreement",
+ fail: () => {
+ uni.showToast({
+ title: "打开用户规则失败",
+ icon: "none",
+ });
+ },
+ });
};
const syncPopupVisible = async (visible) => {
diff --git a/src/pages-aigc/home/components/AigcConsentDialog/styles/index.scss b/src/pages-aigc/home/components/AigcConsentDialog/styles/index.scss
index 67e1dcf..f1ad0d6 100644
--- a/src/pages-aigc/home/components/AigcConsentDialog/styles/index.scss
+++ b/src/pages-aigc/home/components/AigcConsentDialog/styles/index.scss
@@ -31,6 +31,28 @@
text-align: justify;
}
+.aigc-consent-section + .aigc-consent-section {
+ margin-top: 18px;
+}
+
+.aigc-consent-section-title,
+.aigc-consent-paragraph {
+ display: block;
+}
+
+.aigc-consent-section-title {
+ margin-bottom: 6px;
+ color: #172033;
+ font-size: 16px;
+ line-height: 24px;
+ font-weight: 900;
+ text-align: left;
+}
+
+.aigc-consent-paragraph + .aigc-consent-paragraph {
+ margin-top: 10px;
+}
+
.aigc-consent-rule {
color: #18bd78;
font-weight: 900;
diff --git a/src/pages-aigc/home/components/GiftPointsToast/index.vue b/src/pages-aigc/home/components/GiftPointsToast/index.vue
index 6874620..bfadc11 100644
--- a/src/pages-aigc/home/components/GiftPointsToast/index.vue
+++ b/src/pages-aigc/home/components/GiftPointsToast/index.vue
@@ -1,5 +1,5 @@
-
+
{{ title }}
{{ message }}
@@ -9,14 +9,20 @@
diff --git a/src/pages-aigc/recharge/components/BalanceCard/styles/index.scss b/src/pages-aigc/recharge/components/BalanceCard/styles/index.scss
deleted file mode 100644
index 53085c0..0000000
--- a/src/pages-aigc/recharge/components/BalanceCard/styles/index.scss
+++ /dev/null
@@ -1,60 +0,0 @@
-.balance-card {
- min-height: 116px;
- display: grid;
- grid-template-columns: 1fr 78px;
- align-items: center;
- gap: 12px;
- padding: 18px;
- border-radius: 22px;
- background: #172951;
- color: #ffffff;
- box-sizing: border-box;
-}
-
-.balance-copy {
- min-width: 0;
-}
-
-.balance-label,
-.balance-value,
-.balance-rule {
- display: block;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-.balance-label {
- color: rgba(255, 255, 255, 0.66);
- font-size: 11px;
- line-height: 15px;
- font-weight: 800;
-}
-
-.balance-value {
- margin: 4px 0;
- color: #ffffff;
- font-size: 34px;
- line-height: 39px;
- font-weight: 900;
-}
-
-.balance-rule {
- color: rgba(255, 255, 255, 0.66);
- font-size: 11px;
- line-height: 15px;
- font-weight: 800;
-}
-
-.balance-ledger {
- height: 34px;
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: 999px;
- background: rgba(255, 255, 255, 0.14);
- color: #ffffff;
- font-size: 12px;
- line-height: 34px;
- font-weight: 900;
-}
diff --git a/src/pages-aigc/recharge/components/CustomAmountCard/index.vue b/src/pages-aigc/recharge/components/CustomAmountCard/index.vue
deleted file mode 100644
index d63de17..0000000
--- a/src/pages-aigc/recharge/components/CustomAmountCard/index.vue
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
- 自选金额
-
-
-
-
- 请输入整数金额
-
-
-
-
-
-
-
diff --git a/src/pages-aigc/recharge/components/CustomAmountCard/styles/index.scss b/src/pages-aigc/recharge/components/CustomAmountCard/styles/index.scss
deleted file mode 100644
index 7cfd912..0000000
--- a/src/pages-aigc/recharge/components/CustomAmountCard/styles/index.scss
+++ /dev/null
@@ -1,84 +0,0 @@
-.custom-card {
- min-height: 90px;
- display: grid;
- grid-template-columns: minmax(0, 1fr) 118px;
- grid-template-rows: 28px auto;
- column-gap: 14px;
- row-gap: 2px;
- align-items: center;
- margin-top: 12px;
- padding: 14px 16px;
- border: 1.5px solid transparent;
- border-radius: 18px;
- background: rgba(255, 255, 255, 0.8);
- box-sizing: border-box;
-}
-
-.custom-card.is-selected {
- border-color: #20cf75;
-}
-
-.custom-title {
- grid-column: 1;
- grid-row: 1;
- display: block;
- overflow: hidden;
- color: #172033;
- font-size: 14px;
- line-height: 28px;
- font-weight: 900;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-.custom-input-wrap {
- grid-column: 2;
- grid-row: 1 / 3;
- height: 56px;
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 8px;
- padding: 0 0 0 18px;
- border-left: 1px solid rgba(82, 96, 115, 0.12);
- color: #172033;
- font-size: 17px;
- line-height: 56px;
- font-weight: 900;
- box-sizing: border-box;
-}
-
-.custom-currency {
- flex: 0 0 auto;
-}
-
-.custom-input {
- width: 52px;
- height: 56px;
- min-height: 56px;
- border: 0;
- background: transparent;
- color: #172033;
- font-size: 18px;
- line-height: 56px;
- font-weight: 900;
-}
-
-.custom-hint {
- grid-column: 1;
- grid-row: 2;
- min-width: 0;
- display: grid;
- gap: 1px;
- color: #7a8596;
- font-size: 11px;
- line-height: 15px;
- font-weight: 800;
-}
-
-.custom-hint text {
- display: block;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
diff --git a/src/pages-aigc/recharge/components/RechargeFooter/index.vue b/src/pages-aigc/recharge/components/RechargeFooter/index.vue
deleted file mode 100644
index 436e73b..0000000
--- a/src/pages-aigc/recharge/components/RechargeFooter/index.vue
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/pages-aigc/recharge/components/RechargeFooter/styles/index.scss b/src/pages-aigc/recharge/components/RechargeFooter/styles/index.scss
deleted file mode 100644
index d1228c9..0000000
--- a/src/pages-aigc/recharge/components/RechargeFooter/styles/index.scss
+++ /dev/null
@@ -1,79 +0,0 @@
-.recharge-footer {
- position: sticky;
- bottom: 12px;
- display: flex;
- flex-direction: column;
- gap: 12px;
- margin-top: 16px;
- padding: 12px;
- border-radius: 20px;
- background: rgba(255, 255, 255, 0.9);
- box-shadow: 0 10px 24px rgba(18, 48, 56, 0.1);
- box-sizing: border-box;
-}
-
-.recharge-agreement {
- display: flex;
- align-items: center;
- box-sizing: border-box;
-}
-
-.recharge-agreement.is-disabled {
- opacity: 0.56;
-}
-
-.recharge-agreement-text,
-.recharge-agreement-link {
- font-size: 14px;
- line-height: 24px;
-}
-
-.recharge-agreement-text {
- color: #667386;
-}
-
-.recharge-agreement-link {
- color: $theme-color-600;
- font-weight: 700;
-}
-
-.recharge-payment-row {
- display: grid;
- grid-template-columns: minmax(0, 1fr) 142px;
- align-items: center;
- gap: 10px;
-}
-
-.recharge-gain {
- min-width: 0;
- overflow: hidden;
- color: #667386;
- font-size: 12px;
- line-height: 18px;
- font-weight: 800;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-.recharge-gain-value {
- color: #172033;
- font-weight: 900;
-}
-
-.recharge-pay-button {
- height: 46px;
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: 999px;
- background: #000000;
- color: #ffffff;
- font-size: 14px;
- line-height: 46px;
- font-weight: 900;
- white-space: nowrap;
-}
-
-.recharge-pay-button.is-disabled {
- opacity: 0.48;
-}
diff --git a/src/pages-aigc/recharge/components/RechargePackageList/index.vue b/src/pages-aigc/recharge/components/RechargePackageList/index.vue
deleted file mode 100644
index 2cd7530..0000000
--- a/src/pages-aigc/recharge/components/RechargePackageList/index.vue
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
- 优惠充值
-
-
-
-
- {{ item.rechargePoints }}积分
- 充值金额
-
-
- ¥{{ formatPrice(item.rechargeAmount) }}
-
-
-
-
-
-
-
-
diff --git a/src/pages-aigc/recharge/components/RechargePackageList/styles/index.scss b/src/pages-aigc/recharge/components/RechargePackageList/styles/index.scss
deleted file mode 100644
index 5d54315..0000000
--- a/src/pages-aigc/recharge/components/RechargePackageList/styles/index.scss
+++ /dev/null
@@ -1,71 +0,0 @@
-.package-section {
- margin-top: 18px;
-}
-
-.package-title {
- display: block;
- margin-bottom: 10px;
- color: #172033;
- font-size: 15px;
- line-height: 20px;
- font-weight: 900;
-}
-
-.package-list {
- display: grid;
- gap: 10px;
-}
-
-.package-card {
- height: 74px;
- display: grid;
- grid-template-columns: 1fr auto;
- align-items: center;
- gap: 8px;
- padding: 12px 14px;
- border: 1.5px solid transparent;
- border-radius: 18px;
- background: rgba(255, 255, 255, 0.82);
- text-align: left;
- box-sizing: border-box;
-}
-
-.package-card.is-selected {
- border-color: #20cf75;
- background: rgba(255, 255, 255, 0.72);
-}
-
-.package-copy {
- min-width: 0;
-}
-
-.package-points,
-.package-origin,
-.package-price {
- display: block;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-.package-points {
- color: #172033;
- font-size: 16px;
- line-height: 22px;
- font-weight: 900;
-}
-
-.package-origin {
- margin-top: 6px;
- color: #7a8596;
- font-size: 11px;
- line-height: 15px;
- font-weight: 800;
-}
-
-.package-price {
- color: #12a765;
- font-size: 16px;
- line-height: 22px;
- font-weight: 900;
-}
diff --git a/src/pages-aigc/recharge/recharge.vue b/src/pages-aigc/recharge/recharge.vue
deleted file mode 100644
index f585a0b..0000000
--- a/src/pages-aigc/recharge/recharge.vue
+++ /dev/null
@@ -1,294 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/pages-aigc/recharge/styles/index.scss b/src/pages-aigc/recharge/styles/index.scss
deleted file mode 100644
index 75317db..0000000
--- a/src/pages-aigc/recharge/styles/index.scss
+++ /dev/null
@@ -1,31 +0,0 @@
-.aigc-recharge-page {
- position: relative;
- display: flex;
- flex-direction: column;
- width: 100vw;
- height: 100vh;
- min-height: 812px;
- overflow: hidden;
- color: #172033;
- background:
- radial-gradient(
- 130% 78% at 0% 0%,
- rgba(255, 249, 226, 0.76),
- rgba(255, 249, 226, 0) 42%
- ),
- linear-gradient(180deg, #effaf5 0%, #f4fbf7 58%, #eef8ff 100%);
- box-sizing: border-box;
-}
-
-.aigc-recharge-content {
- flex: 1 1 auto;
- min-height: 0;
- overflow-y: auto;
- padding: 24px 12px;
- scrollbar-width: none;
- box-sizing: border-box;
-}
-
-.aigc-recharge-content::-webkit-scrollbar {
- display: none;
-}
diff --git a/src/pages-aigc/useTemplate/components/GenerateConfirmPanel/index.vue b/src/pages-aigc/useTemplate/components/GenerateConfirmPanel/index.vue
index 0894429..272e135 100644
--- a/src/pages-aigc/useTemplate/components/GenerateConfirmPanel/index.vue
+++ b/src/pages-aigc/useTemplate/components/GenerateConfirmPanel/index.vue
@@ -26,13 +26,6 @@
>
开始生成
-
- 充值积分
-
@@ -49,7 +42,7 @@ defineProps({
},
});
-const emit = defineEmits(["generate", "recharge"]);
+const emit = defineEmits(["generate"]);