1
This commit is contained in:
@ -209,8 +209,7 @@ async saveCurrentImage() {
|
|||||||
title: '生成图片中...',
|
title: '生成图片中...',
|
||||||
mask: true
|
mask: true
|
||||||
});
|
});
|
||||||
|
try {
|
||||||
try {
|
|
||||||
// 获取 Canvas 节点
|
// 获取 Canvas 节点
|
||||||
const query = tt.createSelectorQuery();
|
const query = tt.createSelectorQuery();
|
||||||
const canvasNode = await new Promise((resolve, reject) => {
|
const canvasNode = await new Promise((resolve, reject) => {
|
||||||
@ -252,29 +251,32 @@ async saveCurrentImage() {
|
|||||||
ctx.fillStyle = '#FF19A0';
|
ctx.fillStyle = '#FF19A0';
|
||||||
ctx.textAlign = 'center';
|
ctx.textAlign = 'center';
|
||||||
|
|
||||||
// 绘制证书标题
|
// 绘制证书标题 - 增加顶部间距
|
||||||
const title = currentItem.title || '为爱续航证书';
|
const title = currentItem.title || '为爱续航证书';
|
||||||
ctx.fillText(title, this.canvasWidth / 2, 50);
|
ctx.fillText(title, this.canvasWidth / 2, 65); // 从50改为65,增加间距
|
||||||
|
|
||||||
// 绘制英文标题
|
// 绘制英文标题
|
||||||
ctx.font = '12px sans-serif';
|
ctx.font = '12px sans-serif';
|
||||||
const titleEn = currentItem.title_en || 'Certificate of Love Endurance';
|
const titleEn = currentItem.title_en || 'Certificate of Love Endurance';
|
||||||
ctx.fillText(titleEn, this.canvasWidth / 2, 70);
|
ctx.fillText(titleEn, this.canvasWidth / 2, 85); // 从70改为85,增加间距
|
||||||
|
|
||||||
// 绘制用户名
|
// 绘制用户名
|
||||||
ctx.font = '16px sans-serif';
|
ctx.font = '16px sans-serif';
|
||||||
const userName = this.userName || '周佳佳';
|
const userName = this.userName || '周佳佳';
|
||||||
ctx.fillText(userName, this.canvasWidth / 2, 100);
|
ctx.fillText(userName, this.canvasWidth / 2, 110); // 从100改为110,增加间距
|
||||||
|
|
||||||
// 绘制描述文本
|
// 绘制描述文本
|
||||||
ctx.font = '12px sans-serif';
|
ctx.font = '12px sans-serif';
|
||||||
ctx.fillStyle = '#333333';
|
ctx.fillStyle = '#333333';
|
||||||
ctx.textAlign = 'left';
|
ctx.textAlign = 'left';
|
||||||
const description = `您累计捐赠${currentItem.source_value || 0}克粮,为毛孩子奉献爱心,点燃希望,感谢您的捐赠让世界变得更温暖。`;
|
const description = `您累计捐赠${currentItem.source_value || 0}克粮,为毛孩子奉献爱心,点燃希望,感谢您的捐赠让世界变得更温暖。`;
|
||||||
this.wrapText(ctx, description, 20, 130, this.canvasWidth - 40, 16);
|
this.wrapText(ctx, description, 20, 140, this.canvasWidth - 40, 16); // 从130改为140,增加间距
|
||||||
|
|
||||||
// 绘制结尾文字
|
// 绘制结尾文字
|
||||||
ctx.fillText('特发此证,以表谢忱!', 20, 200);
|
ctx.font = '12px sans-serif';
|
||||||
|
ctx.fillStyle = '#333333';
|
||||||
|
ctx.textAlign = 'left';
|
||||||
|
ctx.fillText('特发此证,以表谢忱!', 20, 180); // 从200改为180,向上移动
|
||||||
|
|
||||||
// 绘制证书编号
|
// 绘制证书编号
|
||||||
ctx.font = '10px sans-serif';
|
ctx.font = '10px sans-serif';
|
||||||
@ -334,6 +336,7 @@ async saveCurrentImage() {
|
|||||||
});
|
});
|
||||||
console.error('生成证书图片失败:', error);
|
console.error('生成证书图片失败:', error);
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
generateCertificateTemplate() {
|
generateCertificateTemplate() {
|
||||||
// 使用存储的证书信息
|
// 使用存储的证书信息
|
||||||
|
|||||||
@ -62,21 +62,21 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="line" />
|
<view class="line" />
|
||||||
<view class="itemWrapper" @click="toPublicBenefit">
|
<view class="itemWrapper" @click="toDogTraining">
|
||||||
<text class="titlWrapper">关爱宠物,传递温情</text>
|
<text class="titlWrapper">狗狗训练</text>
|
||||||
<view class="content">公益助力</view>
|
<view class="content">上门服务</view>
|
||||||
<view class="tips">帮我找个家</view>
|
<view class="tips">上门训犬、寄养、喂猫、遛狗</view>
|
||||||
<view class="itemImg">
|
<view class="itemImg">
|
||||||
<image class="menu-img-sm" :src="`${imgPrefix}h-public.png`" mode="aspectFill" />
|
<image class="menu-img-sm" :src="`${imgPrefix}home-dogTraining.png`" mode="aspectFill" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="secondMenu">
|
<view class="secondMenu">
|
||||||
<scroll-view class="scrollWrapper" scroll-x enable-flex
|
<scroll-view class="scrollWrapper" :scroll-x="secondMenuItemList.length > 4" enable-flex
|
||||||
:scroll-with-animation="false"
|
:scroll-with-animation="false"
|
||||||
@scroll="onSecondMenuScroll">
|
@scroll="onSecondMenuScroll">
|
||||||
<view class="secondMenuInner">
|
<view class="secondMenuInner" :class="{ 'no-scroll': secondMenuItemList.length <= 4 }">
|
||||||
<view class="itemWrapper" v-for="(item, i) in secondMenuItemList" :key="i"
|
<view class="itemWrapper" v-for="(item, i) in secondMenuItemList" :key="i"
|
||||||
@click="handleNav(item)">
|
@click="handleNav(item)">
|
||||||
<view class="imgWrapper">
|
<view class="imgWrapper">
|
||||||
@ -92,19 +92,19 @@
|
|||||||
</view>
|
</view>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
|
|
||||||
<view class="custom-indicator">
|
<view class="custom-indicator" v-if="secondMenuItemList.length > 4">
|
||||||
<view class="itemLine" :class="{ active: secondMenuIndicatorIndex === 0 }"></view>
|
<view class="itemLine" :class="{ active: secondMenuIndicatorIndex === 0 }"></view>
|
||||||
<view class="itemLine" :class="{ active: secondMenuIndicatorIndex === 1 }"></view>
|
<view class="itemLine" :class="{ active: secondMenuIndicatorIndex === 1 }"></view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="thirdMenu">
|
<view class="thirdMenu">
|
||||||
<view class="itemWrapper" @click="toDogTraining">
|
<view class="itemWrapper" @click="toPublicBenefit">
|
||||||
<view>
|
<view>
|
||||||
<view class="title">上门服务</view>
|
<view class="title">公益助力</view>
|
||||||
<view class="tips">训犬寄养、喂猫遛狗</view>
|
<view class="tips">帮我找个家</view>
|
||||||
</view>
|
</view>
|
||||||
<image class="third-icon1" :src="`${imgPrefix}h-door.png`" mode="aspectFill" />
|
<image class="third-icon" :src="`${imgPrefix}home-publicBenefit.png`" mode="aspectFill" />
|
||||||
</view>
|
</view>
|
||||||
<view class="itemWrapper" @click="toJoin">
|
<view class="itemWrapper" @click="toJoin">
|
||||||
<view>
|
<view>
|
||||||
@ -188,11 +188,6 @@ export default {
|
|||||||
img: `${imgPrefix}home-openVip.png`,
|
img: `${imgPrefix}home-openVip.png`,
|
||||||
naviUrl: "/pages/richText/member-interests"
|
naviUrl: "/pages/richText/member-interests"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: "健康顾问",
|
|
||||||
tips: "宠物健康智能助手",
|
|
||||||
img: `${imgPrefix}healthConsultant.png`,
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
walletInfo: {}, // 钱包信息
|
walletInfo: {}, // 钱包信息
|
||||||
secondMenuIndicatorIndex: 0, // 第二排菜单指示器当前页 0=第一页 1=第二页
|
secondMenuIndicatorIndex: 0, // 第二排菜单指示器当前页 0=第一页 1=第二页
|
||||||
@ -250,14 +245,9 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
toDogTraining() {
|
toDogTraining() {
|
||||||
uni.showToast({
|
uni.navigateTo({
|
||||||
title: '敬请期待',
|
url: '/pageHome/service/index'
|
||||||
icon: 'none',
|
});
|
||||||
duration: 2000
|
|
||||||
});
|
|
||||||
// uni.navigateTo({
|
|
||||||
// url: '/pageHome/service/index'
|
|
||||||
// });
|
|
||||||
},
|
},
|
||||||
// 我的钱包
|
// 我的钱包
|
||||||
buyService() {
|
buyService() {
|
||||||
@ -385,13 +375,8 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.menu-img-sm {
|
.menu-img-sm {
|
||||||
width: 160rpx;
|
width: 120rpx;
|
||||||
height: 160rpx;
|
height: 164rpx;
|
||||||
}
|
|
||||||
.third-icon1{
|
|
||||||
width: 96rpx;
|
|
||||||
height: 120rpx;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.second-icon,
|
.second-icon,
|
||||||
@ -616,9 +601,13 @@ export default {
|
|||||||
|
|
||||||
.scrollWrapper {
|
.scrollWrapper {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
height: auto; /* 由内容撑开;小程序 scroll-view 横向滚动时默认可能不随内容计算高度 */
|
||||||
|
min-height: 220rpx; /* 兜底:约等于 padding-top + 图标 + 标题 + 副标题 */
|
||||||
display: flex;
|
display: flex;
|
||||||
|
align-items: flex-start; /* 不拉伸子项,高度由内容决定 */
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
padding: 32rpx 0 20rpx 0;
|
padding-top: 24rpx;
|
||||||
|
padding-bottom: 24rpx;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
|
||||||
.secondMenuInner {
|
.secondMenuInner {
|
||||||
@ -626,6 +615,16 @@ export default {
|
|||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
width: 937.5rpx; /* 5 * 187.5 一屏4个共5项 */
|
width: 937.5rpx; /* 5 * 187.5 一屏4个共5项 */
|
||||||
|
|
||||||
|
&.no-scroll {
|
||||||
|
width: 100%; /* 四项时一屏排满,不滚动 */
|
||||||
|
|
||||||
|
.itemWrapper {
|
||||||
|
flex: 1;
|
||||||
|
width: 0; /* 均分宽度,避免被 menuBody padding 裁切 */
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.itemWrapper {
|
.itemWrapper {
|
||||||
@ -654,7 +653,7 @@ export default {
|
|||||||
|
|
||||||
.custom-indicator {
|
.custom-indicator {
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-top:-150rpx;
|
margin-top: 12rpx;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin-bottom: 20rpx;
|
margin-bottom: 20rpx;
|
||||||
gap: 12rpx;
|
gap: 12rpx;
|
||||||
|
|||||||
Reference in New Issue
Block a user