画布选择图片改为多选

This commit is contained in:
X1627315083
2025-09-17 14:01:58 +08:00
parent 1183460db4
commit 5b163af1ff
11 changed files with 50 additions and 21 deletions

View File

@@ -2106,7 +2106,7 @@ textarea:focus {
.generalMenu_printModel_upload .input_border .input_box_btnBox .upload_item .upload_file_item,
.generate .input_border .input_box_btnBox .upload_item .upload_file_item {
position: absolute;
left: 0;
left: 1rem;
top: 50%;
transform: translateY(-50%);
height: 4.7rem;
@@ -2207,7 +2207,7 @@ textarea:focus {
cursor: pointer;
transition: all 0.3s;
position: relative;
width: 4rem;
width: 3rem;
display: flex;
min-height: 3rem;
justify-content: center;

View File

@@ -2105,7 +2105,7 @@ textarea:focus{
width: 4.7rem;
.upload_file_item{
position: absolute;
left: 0;
left: 1rem;
top: 50%;
transform: translateY(-50%);
height: 4.7rem;
@@ -2150,7 +2150,7 @@ textarea:focus{
cursor: pointer;
transition: all .3s;
position: relative;
width: 4rem;
width: 3rem;
align-items: center;
justify-content: center;

View File

@@ -340,7 +340,7 @@ onMounted(async () => {
props.redGreenImageUrl
) {
canvasManager.canvas.fill = "#fff"; // 设置画布背景色为白色 // 初始化红绿图模式管理器
redGreenModeManager = new toolManagerRedGreenModeManager({
redGreenModeManager = new RedGreenModeManager({
canvas: canvasManager.canvas,
canvasManager,
layerManager,

View File

@@ -56,6 +56,9 @@
<span class="image-name">{{ item.name || "未命名" }}</span>
</div>
</div>
<div class="image-select" v-show="selectList.includes(item.url)">
<i class="fi fi-sr-check-circle"></i>
</div>
</div>
</div>
@@ -70,6 +73,7 @@
<div class="image-count">
{{ $t("Canvas.general") }} {{ filteredImages.length }} {{ $t("Canvas.PicturesInTotal") }}
</div>
<div class="image-submit gallery_btn" @click="confirm">{{ $t("Canvas.confirm") }}</div>
</div>
</div>
</div>
@@ -103,6 +107,7 @@ const emits = defineEmits(["select"]);
// 响应式数据
const showPanel = ref(false);
const selectedCategory = ref(t("Canvas.all"));
const selectList = ref([])
// 计算属性:获取所有分类
const categories = computed(() => {
@@ -152,8 +157,12 @@ const filteredImages = computed(() => {
// 处理图片点击
const handleImageClick = (item) => {
emits("select", item);
showPanel.value = false;
// 已选中,取消选中
if(selectList.value.includes(item.url)){
selectList.value = selectList.value.filter(url => url !== item.url)
}else{
selectList.value.push(item.url)
}
};
// 处理图片加载错误
@@ -162,6 +171,12 @@ const handleImageError = (event) => {
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZjVmNWY1Ii8+PHRleHQgeD0iNTAlIiB5PSI1MCUiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgZmlsbD0iIzk5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZHk9Ii4zZW0iPuWbvueJh+WKoOi9veWksei0pe+8jOivt+ajgOafpeWbvueJh+i3r+W+hDwvdGV4dD48L3N2Zz4=";
event.target.alt = "图片加载失败";
};
//提交选中的T图片
const confirm = ()=>{
emits("select", selectList.value);
showPanel.value = false;
}
</script>
<style scoped lang="less">
@@ -368,10 +383,11 @@ const handleImageError = (event) => {
.image-item {
cursor: pointer;
border-radius: 8px;
overflow: hidden;
// overflow: hidden;
transition: all 0.2s ease;
background-color: #fff;
border: 1px solid rgba(0, 0, 0, 0.05);
position: relative;
&:hover {
transform: translateY(-4px);
@@ -414,6 +430,17 @@ const handleImageError = (event) => {
transition: opacity 0.2s ease;
}
.image-select{
position: absolute;
bottom: 0;
right: 0;
z-index: 2;
transform: translate(50%,50%);
i{
font-size: 2.5rem;
}
}
.image-name {
font-size: 14px;
font-weight: 500;

View File

@@ -19,10 +19,6 @@
<template #customToolsBottom="{ toolButtonProps }">
<!-- 也可以直接使用普通的按钮 -->
<div class="custom-tool-btn" :class="{active:currentView === 'redGreenExample'}" @click="editFront('redGreenExample')">
<i class="fi fi-sr-layers"></i>
<div class="tool-tooltip">{{ $t('Canvas.editFrontBack') }}</div>
</div>
<div class="custom-tool-btn" :class="{active:currentView === 'redGreenExample'}" style="margin-top: auto;" @click="editFront('redGreenExample')">
<SvgIcon name="CHelp" size="30" />
<div class="tool-tooltip">{{ $t('Canvas.help') }}</div>

View File

@@ -50,6 +50,7 @@
@paste="onPaste"
></textarea>
<i class="fi fi-rr-followcollection"></i>
<i class="fi fi-br-upload" :class="{ Guide_1_2_6:type_.type2 == 'Printboard'}" :title="$t('Generate.uploadTitle')" v-show="!isTextarea && upload.level1Type !== 'Moodboard' && scene?.value != 'Slogan' && scene?.value != 'Logo'">
<a-upload
class="search_upImg"

View File

@@ -295,15 +295,17 @@ export default defineComponent({
})
let obj = {
value:'mannquin',
type:'Mannquin',
type:data.locale == "ENGLISH"?'Mannquin':'模特',
imgList:list
}
if(list.length > 0){
data.canvasSelectList.push(obj)
}
}
const handleImageSelect = (value:any)=>{
dataDom.editCanvas.addImageToLayer(value.url)
const handleImageSelect = (list:any)=>{
list.forEach(item => {
dataDom.editCanvas.addImageToLayer(item)
});
}
const saveCanvas = ()=>{
let canvasJSON = dataDom.editCanvas.getJSON()

View File

@@ -5,7 +5,7 @@
<div class="titleText">{{$t('Habit.generationSetting')}}</div>
</div>
<div class="projectName marginBottom" v-if="show.title">
<div class="text">{{$t('Habit.ProjectName')}}: <span style="color: red;">*</span></div>
<div class="text">{{$t('Habit.ProjectName')}}: </div>
<div class="input">
<input type="text" v-model="selectObject.name">
</div>
@@ -196,10 +196,10 @@ export default defineComponent({
return `${value}%`;
}
const complete = ()=>{
if(!data.selectObject.name){
message.info(t('PrintboardUpload.jsContent7'))
return
}
// if(!data.selectObject.name){
// message.info(t('PrintboardUpload.jsContent7'))
// return
// }
console.log(data.selectObject)
let value = {
name:data.selectObject.name,

View File

@@ -1282,6 +1282,7 @@ export default {
editFrontBack:'编辑服装前片后片',
help:'帮助',
back:'返回',
confirm:'确定',
},
speedList:{
High:'高级',

View File

@@ -1284,6 +1284,7 @@ export default {
editFrontBack:'Edit the front and back sections',
help:'Help',
back:'Back',
confirm:'Confirm',
},
speedList:{
High:'High',

View File

@@ -5,7 +5,7 @@
<div class="left">
<div class="title">
<!-- <span>AiDA</span> -->
<img src="@/assets/images/homePage/aidaIcon.png" alt="">
<img src="@/assets/images/homePage/aidaIcon.png" alt="" @click="()=>$router.push('/home')">
<svg @click="()=>leftShow=!leftShow" class="leftShowOrHide" xmlns="http://www.w3.org/2000/svg" width="2rem" height="2rem" fill="currentColor" viewBox="0 0 24 24" data-v-1c7326d6=""><path fill-rule="evenodd" d="M6 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h2V5H6Zm4 0v14h8a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-8ZM3 6a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3V6Z" clip-rule="evenodd" data-v-1c7326d6=""></path></svg>
</div>
<div class="newObj" @click="newProject">
@@ -1437,6 +1437,7 @@ export default defineComponent({
}
> img{
width: 2.7rem;
cursor: pointer;
}
> svg{
cursor: pointer;