feat: 选择文字

This commit is contained in:
2025-06-27 17:44:10 +08:00
parent aa9d74c2d1
commit 23ad49d333
8 changed files with 124 additions and 20 deletions
@@ -1,5 +1,6 @@
.word-picker {
padding: 28rpx;
background-color: #ffffff;
.word-picker-title {
font-size: 32rpx;
@@ -9,4 +10,70 @@
margin-bottom: 28rpx;
}
.nav-class {
// background-color: red;
// width: 890rpx;
}
.tab-class {
// width: 220rpx;
// flex-basis: auto !important;
// display: inline-block;
}
.tab-active-class {
color: #93d333;
}
.wrap-class {
margin-bottom: 28rpx;
// background-color: blue;
}
.word-list-wrapper {
padding: 28rpx 0;
overflow-y: auto;
height: 500rpx;
.word-list {
display: grid;
grid-template-columns: repeat(7, 72rpx);
grid-template-rows: repeat(20, 72rpx);
gap: 24rpx;
justify-content: center;
// box-shadow: 0 0 -10rpx rgba(0, 0, 0, 0.2);
// align-items: flex-start;
.word-item {
width: 72rpx;
height: 72rpx;
border-radius: 16rpx;
background: rgba(240, 240, 240, 1);
box-shadow: 3.9px 3.9px 5.2px rgba(0, 0, 0, 0.15);
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #141414;
}
}
.word-item-empty {
height: 28rpx;
width: 100%;
}
}
.selected-words {
padding: 28rpx;
font-size: 28rpx;
color: #141414;
.selected-words-text {
font-weight: bold;
color: #93d333;
}
}
}
@@ -23,7 +23,12 @@ Component({
selectedWords: [],
},
lifetimes: {
attached() { },
ready() {
// setTimeout(() => {
// console.log('111');
// this.selectComponent('#tabs').resize();
// }, 1000);
},
},
/**
* 组件的方法列表
@@ -3,15 +3,20 @@
bind:close="onClose"
round
position="bottom"
custom-style="height: 60%"
custom-style="height: 65%"
custom-class="word-picker">
<view class="word-picker-title">请选择文字</view>
<van-tabs
id="tabs"
animated
color="#ff1a34"
color="#93d333"
ellipsis="{{false}}"
line-width="90rpx"
nav-class="nav-class"
tab-class="tab-class"
wrap-class="wrap-class"
swipeable
tab-active-class="tab-active-class"
swipeable="{{true}}"
active="{{currentTab}}"
bind:change="onTabChange">
<van-tab
@@ -19,20 +24,24 @@
wx:for-index="wordIndex"
wx:key="wordIndex"
title="{{wordList[wordIndex].categoryName}}">
<view class="word-list-wrapper">
<view class="word-list">
<view
class="word-item"
wx:for="{{wordList[wordIndex].words}}"
wx:key="index"
data-word="{{item}}"
bind:tap="onWordClick">
<text class="word-item-text">{{item}}</text>
<!-- <text class="word-item-icon icon-success"></text> -->
</view>
</view>
<view class="word-item-empty"></view>
</view>
</van-tab>
</van-tabs>
<view class="selected-words">
<text class="selected-words-title">已选文字:</text>
已选文字:
<text
class="selected-word-text"
wx:for="{{selectedWords}}"
+2 -1
View File
@@ -11,6 +11,7 @@
"word-card": "../../components/word-card/word-card",
"color-picker": "../../components/color-picker/color-picker",
"introduction-popup": "../../components/introduction-popup/introduction-popup",
"toy-button": "../../ui/button/button"
"toy-button": "../../ui/button/button",
"word-picker": "../../components/word-picker/word-picker"
}
}
+1 -1
View File
@@ -12,7 +12,7 @@ page {
}
}
.setting-wrapper {
.wrapper {
background-color: #ffffff;
border-radius: 20rpx;
padding: 24rpx;
+19 -1
View File
@@ -15,6 +15,8 @@ Page({
currentKey: 0,
currentColor: '',
showIntroductionPopup: false,
showSelectWordPopup: false, // 选择文字弹窗
selectedWords: [] as string[],
},
onLoad() {
@@ -287,5 +289,21 @@ Page({
}));
console.log('cardList:', cardList);
this.drawCanvas(cardList);
}
},
openSelectWordPopup() {
this.setData({
showSelectWordPopup: true,
});
},
closeSelectWordPopup() {
this.setData({
showSelectWordPopup: false,
});
},
onSelectWord(e: WechatMiniprogram.CustomEvent) {
const { words } = e.detail;
this.setData({
selectedWords: words,
});
},
});
+7 -3
View File
@@ -1,5 +1,5 @@
<view class="page-container">
<view class="setting-wrapper">
<view class="wrapper">
<text class="wrapper-title">自定义涂鸦卡</text>
<view class="word-input-box">
<word-input bind:onConfirm="onConfirmInput" width="420rpx" />
@@ -58,11 +58,11 @@
class="wrapper {{cardList.length > 0 ? '' : 'hidden'}}">
<text class="wrapper-title">预览打印效果</text>
<view id="canvasWrapper" class="canvas-wrapper">
<canvas
<!-- <canvas
type="2d"
id="canvasContent"
class="canvas-content"
style="width:{{boxWidth}}px;height:{{boxHeight}}px" />
style="width:{{boxWidth}}px;height:{{boxHeight}}px" /> -->
</view>
</view>
<view class="empty"></view>
@@ -71,6 +71,10 @@
currentColor="{{currentColor}}"
bind:onClose="onCloseColorPopup"
bind:onChange="onChangeColor" />
<word-picker
show="{{showSelectWordPopup}}"
bind:onClose="closeSelectWordPopup"
bind:onSelect="onSelectWord" />
</view>
<view class="btn-area">
<toy-button
+1 -1
View File
@@ -42,7 +42,7 @@ wx-button:not([size=mini]) {
}
&--green {
background: rgb(147, 211, 51);
background: #93d333;
box-shadow: 0px 10rpx 4rpx rgba(121, 185, 21, 1);
&.disabled {