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:
@@ -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>
|
||||
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user