feat(aigc): add template, recharge & points pages

This commit adds the full AIGC feature set including template usage flow, points recharge and transaction ledger pages, along with all supporting components, styles and data files. It also updates the home page navigation and registers all new pages in the project's pages configuration.
This commit is contained in:
duanshuwen
2026-07-05 19:34:55 +08:00
parent f47f68e19b
commit b381c712df
37 changed files with 1840 additions and 1 deletions

View File

@@ -0,0 +1,42 @@
<template>
<view
class="upload-template-preview"
:style="{ '--upload-accent': template.accent || '#0a4d46' }"
>
<image class="upload-template-image" :src="template.cover" mode="aspectFill" />
<view class="upload-template-shade" />
<view class="upload-template-copy">
<text class="upload-template-badge">{{ version.label || "图片版" }}</text>
<text class="upload-template-title">{{ template.title }}</text>
<text class="upload-template-desc">{{ previewDesc }}</text>
</view>
</view>
</template>
<script setup>
import { computed } from "vue";
const props = defineProps({
template: {
type: Object,
default: () => ({}),
},
version: {
type: Object,
default: () => ({}),
},
});
const previewDesc = computed(() => {
if (props.template.desc) {
return props.template.desc;
}
return "上传一张清晰半身照,生成旅行内容";
});
</script>
<style scoped lang="scss">
@import "./styles/index.scss";
</style>

View File

@@ -0,0 +1,85 @@
.upload-template-preview {
position: relative;
height: 286px;
overflow: hidden;
border-radius: 0 0 26px 26px;
background: var(--upload-accent, #0a4d46);
color: #ffffff;
}
.upload-template-image {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
display: block;
}
.upload-template-shade {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: linear-gradient(
180deg,
rgba(8, 22, 28, 0.04) 0%,
rgba(8, 22, 28, 0.16) 46%,
rgba(8, 22, 28, 0.72) 100%
);
}
.upload-template-copy {
position: absolute;
z-index: 1;
right: 16px;
bottom: 92px;
left: 16px;
min-width: 0;
color: #ffffff;
}
.upload-template-badge {
height: 20px;
display: inline-flex;
align-items: center;
max-width: 130px;
overflow: hidden;
padding: 0 8px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.72);
color: #172033;
font-size: 9px;
line-height: 20px;
font-weight: 900;
letter-spacing: 0.7px;
text-overflow: ellipsis;
white-space: nowrap;
}
.upload-template-title,
.upload-template-desc {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.upload-template-title {
margin-top: 10px;
color: #ffffff;
font-size: 24px;
line-height: 30px;
font-weight: 900;
}
.upload-template-desc {
margin-top: 6px;
color: rgba(255, 255, 255, 0.78);
font-size: 12px;
line-height: 18px;
font-weight: 800;
}