fix: metadata

This commit is contained in:
zzc
2026-02-03 05:14:31 +08:00
parent 7d0b79bd16
commit b2b59cb61a
3 changed files with 142 additions and 107 deletions

View File

@@ -46,7 +46,7 @@
>
<view class="item-image-box">
<image
:src="item.imageUrl"
:src="getThumbUrl(item.imageUrl)"
mode="aspectFill"
class="item-image"
/>
@@ -115,6 +115,10 @@ const getTagClass = (tag) => {
return map[tag] || "tag-gold";
};
const getThumbUrl = (url) => {
return `${url}?imageView2/1/w/340/h/600/q/80`;
};
const loadData = async () => {
if (loading.value || !hasMore.value) return;
@@ -145,14 +149,9 @@ const loadData = async () => {
};
const loadMore = () => {
console.log(666666666);
loadData();
};
const goBack = () => {
uni.navigateBack();
};
const goDetail = (item) => {
// 传递数据到详情页
const data = encodeURIComponent(JSON.stringify(item));

View File

@@ -13,7 +13,9 @@
<view class="step-num-wrap">
<view class="step-line" v-if="idx > 0"></view>
<view class="step-num">
<text v-if="activeTool === tool.type && showPanel">{{ tool.icon }}</text>
<text v-if="activeTool === tool.type && showPanel">{{
tool.icon
}}</text>
<text v-else>{{ tool.step }}</text>
</view>
</view>
@@ -62,12 +64,17 @@
fontSize: fontSize + 'rpx',
lineHeight: fontSize * 1.5 + 'rpx',
}"
>{{ targetName + "\n " + blessingText.content }}</text
>{{
(targetName || "") + "\n " + (blessingText.content || "")
}}</text
>
</view>
<view
class="user"
:style="{ left: 160 + userOffsetX + 'rpx', bottom: 40 - userOffsetY + 'rpx' }"
:style="{
left: 160 + userOffsetX + 'rpx',
bottom: 40 - userOffsetY + 'rpx',
}"
@touchstart.stop="handleUserTouchStart"
@touchmove.stop="handleUserTouchMove"
@touchend.stop="handleUserTouchEnd"
@@ -113,7 +120,12 @@
<!-- 弹出编辑面板 -->
<view class="panel-container" :class="{ show: showPanel }">
<view class="panel-mask" @tap="closePanel"></view>
<view class="panel-content" :class="{ 'glass-effect': activeTool === 'text' || activeTool === 'position' }">
<view
class="panel-content"
:class="{
'glass-effect': activeTool === 'text' || activeTool === 'position',
}"
>
<view class="panel-handle" @tap="closePanel"></view>
<!-- 标题选择区 -->
@@ -130,14 +142,23 @@
:class="{ selected: title?.id === currentTitle?.id }"
@tap="selectTitle(title)"
>
<image :src="title.imageUrl" class="title-cover" mode="aspectFit" />
<view v-if="title?.id === currentTitle?.id" class="tpl-check"></view>
<image
:src="title.imageUrl"
class="title-cover"
mode="aspectFit"
/>
<view v-if="title?.id === currentTitle?.id" class="tpl-check"
></view
>
</view>
</view>
<view v-if="loadingTitles" class="loading-more">加载中...</view>
<view v-else-if="!hasMoreTitles && titles.length > 0" class="no-more">没有更多了</view>
<view
v-else-if="!hasMoreTitles && titles.length > 0"
class="no-more"
>没有更多了</view
>
</view>
</view>
<!-- 模板区 -->
@@ -154,7 +175,11 @@
:class="{ selected: tpl?.id === currentTemplate?.id }"
@tap="applyTemplate(tpl)"
>
<image :src="tpl.imageUrl" class="tpl-cover" mode="aspectFill" />
<image
:src="tpl.imageUrl"
class="tpl-cover"
mode="aspectFill"
/>
<view class="tpl-name">{{ tpl.name }}</view>
<view v-if="tpl?.id === currentTemplate?.id" class="tpl-check"
></view
@@ -168,7 +193,6 @@
>没有更多了</view
>
</view>
</view>
<!-- 文字编辑 -->
@@ -193,7 +217,11 @@
<text class="refresh-icon"></text> 换一批
</view>
</view>
<scroll-view scroll-x class="greeting-scroll" show-scrollbar="false">
<scroll-view
scroll-x
class="greeting-scroll"
show-scrollbar="false"
>
<view class="greeting-list">
<view
v-for="(text, index) in displayedGreetings"
@@ -272,7 +300,9 @@
:style="{ background: color }"
@tap="selectedColor = color"
>
<view v-if="selectedColor === color" class="color-check"></view>
<view v-if="selectedColor === color" class="color-check"
></view
>
</view>
</view>
</view>
@@ -284,7 +314,7 @@
<text>调整位置</text>
</view>
<view class="form-item" style="margin-top: 20rpx;">
<view class="form-item" style="margin-top: 20rpx">
<text class="label">祝福语气泡 (上下)</text>
<slider
:value="bubbleOffsetY"
@@ -342,7 +372,9 @@
:style="{ background: color }"
@tap="signatureColor = color"
>
<view v-if="signatureColor === color" class="color-check"></view>
<view v-if="signatureColor === color" class="color-check"
></view
>
</view>
</view>
</view>
@@ -408,9 +440,9 @@ const titleState = ref({
const titleStyle = computed(() => {
return {
transform: `translate(${titleState.value.offsetX}rpx, ${titleState.value.offsetY}rpx) scale(${titleState.value.scale})`,
top: '40rpx',
pointerEvents: 'auto',
transition: 'none'
top: "40rpx",
pointerEvents: "auto",
transition: "none",
};
});
@@ -560,7 +592,7 @@ const fontList = [
name: "中圆",
family: "ZhongYuan",
url: "https://file.lihailezzc.com/ddcd9621740449a29c329f573bc1d0c5.woff2", // 示例地址
}
},
];
const selectedFont = ref(fontList[0]);
const loadedFonts = ref(new Set()); // 记录已加载的字体
@@ -966,7 +998,9 @@ const saveByCanvas = async (save = true) => {
const [bgImg, avatarImg, titleImg] = await Promise.all([
loadCanvasImage(currentTemplate?.value?.imageUrl),
loadCanvasImage(userAvatar.value),
currentTitle.value ? loadCanvasImage(currentTitle.value.imageUrl) : Promise.resolve(null),
currentTitle.value
? loadCanvasImage(currentTitle.value.imageUrl)
: Promise.resolve(null),
]);
ctx.drawImage(bgImg, 0, 0, W, H);
@@ -1670,7 +1704,7 @@ function drawRoundRect(ctx, x, y, w, h, r, color) {
overflow: hidden;
}
.position-section{
.position-section {
margin-bottom: 40rpx;
}
.greeting-card.active .greeting-text {
@@ -1783,7 +1817,8 @@ function drawRoundRect(ctx, x, y, w, h, r, color) {
.btn.secondary {
background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
color: #333;
box-shadow: 0 8rpx 20rpx rgba(0, 0, 0, 0.05),
box-shadow:
0 8rpx 20rpx rgba(0, 0, 0, 0.05),
inset 0 0 0 2rpx #eee;
}

View File

@@ -28,10 +28,10 @@
</view>
</view>
<view class="row-2" v-if="isLoggedIn">
<text class="arrow-icon"></text>
<text class="stats-text"
<!-- <text class="arrow-icon"></text> -->
<!-- <text class="stats-text"
>已发送 <text class="num">3</text> 条新春祝福</text
>
> -->
</view>
<view class="row-2" v-else>
<text class="stats-text">点击登录解锁更多功能</text>
@@ -153,6 +153,7 @@ const defaultAvatarUrl =
const userInfo = computed(() => ({
nickName: userStore.userInfo.nickName || "点击登录",
avatarUrl: userStore.userInfo.avatarUrl || defaultAvatarUrl,
isVip: userStore.userInfo.isVip || false,
}));
const isLoggedIn = computed(() => !!userStore.userInfo.nickName);