页面调整
This commit is contained in:
@@ -3,12 +3,19 @@
|
||||
<div class="canvasBox" ref="canvasBox">
|
||||
<editCanvas v-if="canvasLoad" ref="editCanvas"
|
||||
:config="canvasConfig"
|
||||
:clothingImageUrl="modelUrl"
|
||||
:clothingImageUrl="changeImageUrl"
|
||||
@changeCanvas="changeCanvas"
|
||||
:clothing-image-opts="{
|
||||
imageMode:'contains',
|
||||
}"
|
||||
></editCanvas>
|
||||
>
|
||||
<template #customTools="{ toolButtonProps }">
|
||||
<div class="custom-tool-btn" :class="{active:isHiddenModel}" @click="setHiddenmodel()">
|
||||
<i class="fi fi-rr-eye"></i>
|
||||
<div class="tool-tooltip">Hidden model</div>
|
||||
</div>
|
||||
</template>
|
||||
</editCanvas>
|
||||
</div>
|
||||
<div class="mark_loading" v-show="isShowMark">
|
||||
<a-spin size="large" />
|
||||
@@ -24,12 +31,26 @@ import { useStore } from "vuex";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import canvasGeneral from "@/tool/canvasGeneralCopy";
|
||||
import editCanvas from "@/component/Canvas/CanvasEditor/index.vue";
|
||||
import defaultModel from "@/assets/images/homePage/defaultModel.png"
|
||||
import FemaleAdultModel from "@/assets/images/homePage/FemaleAdultModel.png"
|
||||
import FemaleChildModel from "@/assets/images/homePage/FemaleChildModel.png"
|
||||
import MaleAdultModel from "@/assets/images/homePage/MaleAdultModel.png"
|
||||
import MaleChildModel from "@/assets/images/homePage/MaleChildModel.png"
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
editCanvas,
|
||||
},
|
||||
props:{
|
||||
selectSexAge:{
|
||||
type:Object,
|
||||
default:()=>{
|
||||
return {
|
||||
sex:'',
|
||||
age:'',
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
emits:['setGenerateImg','setCanvasJSON'],
|
||||
setup(props,{emit}) {
|
||||
const { t } = useI18n();
|
||||
@@ -40,10 +61,11 @@ export default defineComponent({
|
||||
const createProbject = inject('createProbject',()=>{})
|
||||
const data = reactive({
|
||||
canvasLoad:false,
|
||||
isHiddenModel:true,
|
||||
canvasConfig:{},
|
||||
modelUrl:'',
|
||||
probjects:computed(()=>store.state.Workspace.probjects),
|
||||
undoStack:0,
|
||||
changeImageUrl:'',
|
||||
})
|
||||
const dataDom = reactive({
|
||||
editCanvas:null,
|
||||
@@ -52,19 +74,31 @@ export default defineComponent({
|
||||
const openSetData = ()=>{
|
||||
// dataDom.canvasContent.openSetData()
|
||||
}
|
||||
const addImage = async (value)=>{
|
||||
if(!data?.probjects?.id){
|
||||
await createProbject()
|
||||
|
||||
const setFixedImg = ()=>{
|
||||
let sex = props.selectSexAge.value
|
||||
let age = props.selectSexAge.age
|
||||
let changeImageUrl = ''
|
||||
if(sex == 'Male' && age == 'Adult'){
|
||||
changeImageUrl = MaleAdultModel
|
||||
}else if(sex == 'Male' && age == 'Child'){
|
||||
changeImageUrl = MaleChildModel
|
||||
}else if(sex == 'Female' && age == 'Adult'){
|
||||
changeImageUrl = FemaleAdultModel
|
||||
}else if(sex == 'Female' && age == 'Child'){
|
||||
changeImageUrl = FemaleChildModel
|
||||
}
|
||||
// dataDom.editCanvas.addImageToLayer(value.imgUrl)
|
||||
dataDom.editCanvas.addImageToLayer(value.url)
|
||||
changeImageUrl = new URL(changeImageUrl, import.meta.url).href
|
||||
return changeImageUrl
|
||||
}
|
||||
const addBottomImage = (value)=>{
|
||||
dataDom.editCanvas.changeFixedImage(value)
|
||||
const changeFixedImage = async ()=>{
|
||||
await nextTick()
|
||||
data.changeImageUrl = setFixedImg()
|
||||
dataDom.editCanvas.changeFixedImage(data.changeImageUrl, {
|
||||
imageMode: "contains", // 设置底图包含在画布内
|
||||
});
|
||||
}
|
||||
const getData = async ()=>{
|
||||
console.log(dataDom.editCanvas.getCanvasManager().commandManager)
|
||||
// if(dataDom.editCanvas.getState())
|
||||
dataDom.editCanvas.exportImage({isContainBg:false,isContainFixed:false}).then((rv)=>{
|
||||
emit('setGenerateImg',rv)
|
||||
})
|
||||
@@ -75,7 +109,6 @@ export default defineComponent({
|
||||
const setCanvas = (url)=>{
|
||||
return new Promise((res,rev)=>{
|
||||
let img = new Image()
|
||||
console.log(url)
|
||||
img.onload = ()=>{
|
||||
let wH = [1,1]
|
||||
let domHeight = dataDom.canvasBox.offsetHeight - 200
|
||||
@@ -99,16 +132,26 @@ export default defineComponent({
|
||||
emit('setCanvasJSON',getCanvasJSON())
|
||||
},5000)
|
||||
}
|
||||
const setHiddenmodel = ()=>{
|
||||
data.isHiddenModel = !data.isHiddenModel
|
||||
let index = dataDom.editCanvas.layers.findIndex((item)=>item.type == "fixed")
|
||||
let layerId = dataDom.editCanvas.layers[index].id
|
||||
let canvasManager = dataDom.editCanvas.getCanvasManager()
|
||||
canvasManager?.layerManager?.toggleLayerVisibility(layerId);
|
||||
}
|
||||
const addImage = (url)=>{
|
||||
dataDom.editCanvas.addImageToLayer(url.url,{imageMode:'contains'})
|
||||
}
|
||||
onMounted(() => {
|
||||
nextTick(()=>{
|
||||
let url = new URL(defaultModel, import.meta.url).href
|
||||
data.modelUrl = url
|
||||
setCanvas(url).then(()=>{
|
||||
data.changeImageUrl = setFixedImg()
|
||||
setCanvas(data.changeImageUrl).then(()=>{
|
||||
})
|
||||
})
|
||||
});
|
||||
onBeforeUnmount(()=>{
|
||||
data.canvasLoad = false
|
||||
data.isHiddenModel = true
|
||||
// canvasGeneral.canvasClear()
|
||||
})
|
||||
return {
|
||||
@@ -116,10 +159,12 @@ export default defineComponent({
|
||||
...toRefs(dataDom),
|
||||
isShowMark,
|
||||
openSetData,
|
||||
addImage,
|
||||
getData,
|
||||
getCanvasJSON,
|
||||
changeCanvas,
|
||||
changeFixedImage,
|
||||
setHiddenmodel,
|
||||
addImage,
|
||||
};
|
||||
},
|
||||
data(prop) {
|
||||
@@ -150,5 +195,65 @@ export default defineComponent({
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.custom-tool-btn {
|
||||
position: relative;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: none;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
font-size: 16px;
|
||||
color: #333;
|
||||
transition: all 0.2s ease;
|
||||
i{
|
||||
font-size: 3rem;
|
||||
display: flex;
|
||||
}
|
||||
&.active{
|
||||
background-color: #e6f7ff;
|
||||
color: #1890ff;
|
||||
}
|
||||
}
|
||||
.custom-tool-btn:hover {
|
||||
background-color: #f0f0f0;
|
||||
&.active{
|
||||
background-color: #e6f7ff;
|
||||
color: #1890ff;
|
||||
}
|
||||
}
|
||||
.custom-tool-btn:hover .tool-tooltip {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.tool-tooltip {
|
||||
display: none;
|
||||
position: absolute;
|
||||
left: 100%;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
background-color: rgba(0, 0, 0, 0.7);
|
||||
color: white;
|
||||
padding: 4px 8px;
|
||||
border-radius: 4px;
|
||||
margin-left: 8px;
|
||||
white-space: nowrap;
|
||||
font-size: 12px;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.tool-tooltip:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: 100%;
|
||||
margin-top: -5px;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
border-color: transparent rgba(0, 0, 0, 0.7) transparent transparent;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -17,11 +17,11 @@
|
||||
<div class="generalModel_state_item smail" style="margin-right: 0">
|
||||
<a-select
|
||||
ref="select"
|
||||
v-model:value="sex"
|
||||
v-model:value="sexId"
|
||||
:options="sexList"
|
||||
size="large"
|
||||
:fieldNames="{ label: 'name', value: 'value' }"
|
||||
style="width:10rem"
|
||||
:fieldNames="{ label: 'name', value: 'id' }"
|
||||
style="width:13rem"
|
||||
@change="sexChange"
|
||||
>
|
||||
<template #suffixIcon
|
||||
@@ -37,7 +37,7 @@
|
||||
</selectList>
|
||||
</div>
|
||||
<div class="canvas itemBox">
|
||||
<canvasBox @setGenerateImg="setGenerateImg" @setCanvasJSON="setCanvasJSON" ref="canvasBox"></canvasBox>
|
||||
<canvasBox @setGenerateImg="setGenerateImg" :selectSexAge="selectSexAge" @setCanvasJSON="setCanvasJSON" ref="canvasBox"></canvasBox>
|
||||
<!-- <canvasUpload :config="ceditorConfig" clothingImageUrl="https://www.minio-api.aida.com.hk/aida-sys-image/models/female/2e4815b9-1191-419d-94ed-5771239ca4a5.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20250608%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250608T161025Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=a4374c0954d11c2490ef3b86a1924cf6d423ed8ac56023b3c3ccabcdf0672620"></canvasUpload> -->
|
||||
</div>
|
||||
<div class="finished itemBox">
|
||||
@@ -48,7 +48,7 @@
|
||||
</div>
|
||||
<div class="content">
|
||||
<img v-if="generateImg?.[0]?.url" :src="generateImg?.[0]?.url" alt="">
|
||||
<sketchCategory v-if="generateImg?.[0]?.url" v-model:disignTypeList="sketchCatecoryList" :item="generateImg[0]" :isSpread="false"></sketchCategory>
|
||||
<sketchCategory v-if="generateImg?.[0]?.url" v-model:disignTypeList="sketchCatecoryList" :item="generateImg[0]" :isSetSketchCategory="true" :isSpread="false"></sketchCategory>
|
||||
</div>
|
||||
<div class="btnBottom" @click="getCanvasData">
|
||||
<div class="gallery_btn">{{ $t('DeReconstruction.Download') }}</div>
|
||||
@@ -61,6 +61,7 @@ import { defineComponent,computed,ref,provide,nextTick,createVNode,toRefs, react
|
||||
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
|
||||
import { Https } from "@/tool/https";
|
||||
import { useStore } from "vuex";
|
||||
import { downloadIamge,getMinioUrl } from "@/tool/util";
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import selectList from '@/component/DetailCopy/detailLeft/module/selectList.vue'
|
||||
import sketchCategory from "@/component/HomePage/sketchCategory.vue";
|
||||
@@ -76,37 +77,49 @@ export default defineComponent({
|
||||
emits:[],
|
||||
setup(props,{emit}) {
|
||||
const store = useStore();
|
||||
const {t} = useI18n()
|
||||
const data = reactive({
|
||||
sketchCatecoryList:computed(()=>{
|
||||
return store.state.Workspace.probjects.positionList
|
||||
}),
|
||||
sketchCatecoryList:[],
|
||||
segmentationType:'product',
|
||||
segmentationTypeList:[{value:'product',name:'product'},{value:'sketch',name:'sketch'}],
|
||||
generateImg:computed(()=>store.state.HomeStoreModule.deReconstruction) as any,
|
||||
selectObject:computed(()=>store.state.Workspace.probjects),//选择的项目
|
||||
sexList:[
|
||||
|
||||
],
|
||||
// sexList:computed(()=>store.state.UserHabit.sex.value),
|
||||
femalePosition:computed(()=>store.state.UserHabit.FemalePosition),//男性衣服位置
|
||||
malePosition:computed(()=>store.state.UserHabit.MalePosition),//女性衣服位置
|
||||
sex:'Male',
|
||||
sexId:1,
|
||||
ceditorConfig:{
|
||||
width: 800,
|
||||
height: 600,
|
||||
backgroundColor: "#f8f8f8",
|
||||
},
|
||||
defaultModel:'',
|
||||
selectSexAge:{},
|
||||
})
|
||||
const createProbject:any = inject('createProbject',()=>{}) as any
|
||||
const setIsShowMark:any = inject('setIsShowMark')
|
||||
const dataDom = reactive({
|
||||
canvasBox:null as any,
|
||||
})
|
||||
const selectImgItem = (data:any)=>{
|
||||
console.log(data)
|
||||
const selectImgItem = async (value:any)=>{
|
||||
// getSegmentation(data)
|
||||
getSegmentation(data)
|
||||
if(!data.selectObject?.id)await createProbject()
|
||||
getSegmentation(value)
|
||||
|
||||
}
|
||||
const canvasAddImg = (list:any)=>{
|
||||
console.log(list)
|
||||
list.segmentedImages.forEach((url:any) => {
|
||||
list.imgUrl = url
|
||||
dataDom.canvasBox.addImage({url})
|
||||
});
|
||||
}
|
||||
const getSegmentation = (value:any)=>{
|
||||
console.log(value)
|
||||
let segmentationType = ''
|
||||
if(value.designType == "Library"){
|
||||
segmentationType = 'sketch'
|
||||
@@ -191,7 +204,13 @@ export default defineComponent({
|
||||
}
|
||||
const setCanvasJSON = (canvasJSON)=>{
|
||||
if(!canvasJSON)return
|
||||
let blob = new Blob([canvasJSON], { type: "application/json" });
|
||||
let canvasData = JSON.parse(canvasJSON)
|
||||
console.log(canvasData)
|
||||
canvasData.canvas.objects.forEach((objectsItem:any) => {
|
||||
if(objectsItem.type == 'image')objectsItem.minioUrl = getMinioUrl(objectsItem.src)
|
||||
|
||||
});
|
||||
let blob = new Blob([JSON.stringify(canvasData)], { type: "application/json" });
|
||||
let formData = new FormData();
|
||||
formData.append("file", blob, "data.json");
|
||||
formData.append("module", "deReconstruction");
|
||||
@@ -201,7 +220,6 @@ export default defineComponent({
|
||||
};
|
||||
Https.axiosPost(Https.httpUrls.exportSave, formData, config).then(
|
||||
(rv) => {
|
||||
console.log(rv)
|
||||
}
|
||||
);
|
||||
}
|
||||
@@ -209,9 +227,39 @@ export default defineComponent({
|
||||
dataDom.canvasBox.setCanvas(str)
|
||||
}
|
||||
const getCanvasData = ()=>{
|
||||
let data = dataDom.canvasBox.getCanvasData()
|
||||
return data
|
||||
downloadIamge(data.generateImg[0].url,'downloadIamge')
|
||||
}
|
||||
const sexChange = ()=>{
|
||||
data.selectSexAge = data.sexList.filter((item)=>item.id == data.sexId)[0]
|
||||
store.commit('setProbject',{sex:data.selectSexAge.value})
|
||||
if(data.selectSexAge.value == 'Male'){
|
||||
data.sketchCatecoryList = data.malePosition
|
||||
}else{
|
||||
data.sketchCatecoryList = data.femalePosition
|
||||
}
|
||||
if(dataDom.canvasBox?.canvasLoad)dataDom.canvasBox.changeFixedImage()
|
||||
}
|
||||
onMounted(()=>{
|
||||
let sexList = store.state.UserHabit.sex.value
|
||||
let id = 0
|
||||
data.sexList = []
|
||||
sexList.forEach((item:any,index) => {
|
||||
let obj = {
|
||||
age:'Adult',
|
||||
name:item.name,
|
||||
value:item.value,
|
||||
id:index + 1,
|
||||
} as any
|
||||
id = index+1;
|
||||
data.sexList.push(obj)
|
||||
});
|
||||
data.sexList.push({age:'Child',name:t('DeReconstruction.Girls'),value:'Female',id:id+=1})
|
||||
data.sexList.push({age:'Child',name:t('DeReconstruction.Boys'),value:'Male',id:id+=1})
|
||||
data.sex = data.sexList[0].value
|
||||
data.selectSexAge = data.sexList[0]
|
||||
data.sexId = 1
|
||||
sexChange()
|
||||
})
|
||||
return{
|
||||
...toRefs(dataDom),
|
||||
...toRefs(data),
|
||||
@@ -223,6 +271,7 @@ export default defineComponent({
|
||||
getCanvasData,
|
||||
setCanvas,
|
||||
setCanvasJSON,
|
||||
sexChange,
|
||||
}
|
||||
},
|
||||
provide() {
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
<download ref="download"></download>
|
||||
</div>
|
||||
<collection ref="collection" :isNext="false"></collection>
|
||||
<scaleImage ref="scaleImage"></scaleImage>
|
||||
<scaleImage ref="scaleImage" :maxWidth="'100rem'"></scaleImage>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts">
|
||||
@@ -141,7 +141,7 @@ export default defineComponent({
|
||||
}
|
||||
const createProbject:any = inject('createProbject',()=>{}) as any
|
||||
const setSelectModel = async (item:any)=>{
|
||||
if(!data.selectObject.id)await createProbject()
|
||||
if(!data.selectObject?.id)await createProbject()
|
||||
data.isShowMark = true
|
||||
if(!item.threeDSimpleId)return
|
||||
const value = {
|
||||
@@ -165,7 +165,7 @@ export default defineComponent({
|
||||
})
|
||||
}
|
||||
const setSelectPrint = async (item:any)=>{
|
||||
if(!data.selectObject.id)await createProbject()
|
||||
if(!data.selectObject?.id)await createProbject()
|
||||
let patternMaking3DData = {
|
||||
collectionElementId:item.id,
|
||||
url:item.imgUrl,
|
||||
@@ -239,7 +239,7 @@ export default defineComponent({
|
||||
}
|
||||
const setPrint = async (item:any)=>{
|
||||
if(dataDom.threeBox){
|
||||
if(!data.selectObject.id)await createProbject()
|
||||
if(!data.selectObject?.id)await createProbject()
|
||||
dataDom.threeBox.addMaterial(item)
|
||||
const stateData = {
|
||||
printMinioUrl:getMinioUrl(item.imgUrl || item.url)
|
||||
@@ -262,7 +262,7 @@ export default defineComponent({
|
||||
if(!data[str])return
|
||||
value[str] = data[str]
|
||||
Https.axiosPost(Https.httpUrls.saveModuleContent, value).then((rv)=>{
|
||||
if(rv.boundingBox)store.commit('setShowSketchboard',rv.boundingBox)
|
||||
if(rv?.boundingBox)store.commit('setShowSketchboard',rv.boundingBox)
|
||||
})
|
||||
})
|
||||
},2000)
|
||||
|
||||
@@ -18,12 +18,12 @@
|
||||
<div class="" v-if="item.status == 'uploading'" style="display: flex;align-items: center;">
|
||||
<a-spin size="large" />
|
||||
</div>
|
||||
<img v-show="item.status != 'uploading'" :src="item.designOutfitUrl || item.imgUrl || item.url" alt="">
|
||||
<div v-show="item.status != 'uploading'" class="btnBox">
|
||||
<img v-show="item.designOutfitUrl || item.imgUrl || item.url" :src="item.designOutfitUrl || item.imgUrl || item.url" alt="">
|
||||
<div v-show="item.designOutfitUrl || item.imgUrl || item.url" class="btnBox">
|
||||
<div :class="{active:item.isChecked}">
|
||||
<i class="fi fi-br-check"></i>
|
||||
</div>
|
||||
<div @click.stop="setUploadDelete(item,index)">
|
||||
<div @click.stop="setUploadDelete(item,index)" v-if="source != 'design'">
|
||||
<i class="fi fi-rr-trash icon_delete"></i>
|
||||
</div>
|
||||
</div>
|
||||
@@ -97,7 +97,7 @@
|
||||
</div>
|
||||
<div class="likeBox">
|
||||
<div class="element">
|
||||
<div class="title"><i class="fi fi-rs-comments"></i><span>{{$t('poseTransfer.InputVideo')}}</span></div>
|
||||
<div class="title"><i class="fi fi-rs-comments"></i><span>{{$t('poseTransfer.LikeVideo')}}</span></div>
|
||||
<div class="content">
|
||||
<generalDrag ref="generalDragLeft" :list="likeList" :isLike="true" :isVideo="true" @setBtn="likeSetBtn"></generalDrag>
|
||||
</div>
|
||||
@@ -142,6 +142,10 @@ export default defineComponent({
|
||||
type:Boolean,
|
||||
default:false,
|
||||
},
|
||||
source:{
|
||||
type:String,
|
||||
default:'',
|
||||
},
|
||||
},
|
||||
emits:[],
|
||||
setup(props,{emit}) {
|
||||
@@ -253,10 +257,29 @@ export default defineComponent({
|
||||
dataDom.generalDragRight.setItemPosition()
|
||||
},200)
|
||||
}
|
||||
const getgenerate = ()=>{
|
||||
if(!data.selectImg.minioUrl)return
|
||||
const getgenerate = async ()=>{
|
||||
if(!data.selectImg.minioUrl)return message.info(t('ProductImg.jsContent2'))
|
||||
if(data.isGenerate)return
|
||||
await new Promise((res,reject)=>{
|
||||
Modal.confirm({
|
||||
title: t('poseTransfer.jsContent1'),
|
||||
icon: createVNode(ExclamationCircleOutlined),
|
||||
okText: 'Yes',
|
||||
cancelText: 'No',
|
||||
mask:false,
|
||||
centered:true,
|
||||
onOk() {
|
||||
res()
|
||||
},
|
||||
cancel(){
|
||||
reject()
|
||||
}
|
||||
});
|
||||
}).then(()=>{
|
||||
|
||||
}).catch(()=>{
|
||||
return
|
||||
})
|
||||
data.isGenerate = true
|
||||
// data.remGenerateTime = setTimeout(()=>{
|
||||
// },10000)
|
||||
@@ -265,12 +288,15 @@ export default defineComponent({
|
||||
projectId:store.state.Workspace.probjects.id,
|
||||
productImage:data.selectImg.minioUrl,
|
||||
modelName:speed.speedData.value,
|
||||
isDefaultLike:false,//表示是否生成就like
|
||||
parentId:data.selectImg?.parentId,//parentId 添加在指定父级里面
|
||||
userLikeSortId:null,//是否进行排序
|
||||
}
|
||||
Https.axiosPost(Https.httpUrls.poseTransform,value).then((rv)=>{
|
||||
data.remGenerate = true
|
||||
data.noLikeList.unshift({taskId:rv,parentId:data.selectImg.parentId})
|
||||
data.noLikeList.unshift({taskId:rv.taskId,parentId:data.selectImg.parentId})
|
||||
console.log(data.noLikeList)
|
||||
setGenerate(rv)
|
||||
setGenerate([rv.taskId])
|
||||
}).catch((res:any)=>{
|
||||
data.isGenerate = false
|
||||
clearInterval(data.remGenerateTime)
|
||||
@@ -285,7 +311,7 @@ export default defineComponent({
|
||||
if(!data.isGenerate || !data.remGenerate)return
|
||||
if(!state)return
|
||||
state = false
|
||||
Https.axiosPost(Https.httpUrls.poseTransformResult,{taskId:list}).then(
|
||||
Https.axiosPost(Https.httpUrls.poseTransformResult,list).then(
|
||||
(rv) => {
|
||||
rv=[rv]
|
||||
state = true
|
||||
@@ -408,7 +434,14 @@ export default defineComponent({
|
||||
}
|
||||
const noLikeSetBtn = (id:any,str:string)=>{
|
||||
if(str == 'delete'){
|
||||
data.noLikeList = data.noLikeList.filter((v:any) => v.id != id);
|
||||
let value = {
|
||||
id,
|
||||
projectId:store.state.Workspace.probjects.id
|
||||
}
|
||||
Https.axiosGet(Https.httpUrls.generateDeleteResult,{params:value}).then(()=>{
|
||||
let index = data.noLikeList.findIndex((v:any) => v.id == id)
|
||||
data.noLikeList.splice(index,1)
|
||||
})
|
||||
}else{
|
||||
data.noLikeList.forEach((item:any,index:any)=>{
|
||||
if(item.id == id && id){
|
||||
@@ -496,19 +529,28 @@ export default defineComponent({
|
||||
store.commit('setUploadElement',storeData)
|
||||
})
|
||||
}
|
||||
watch(()=>store.state.HomeStoreModule.uploadElement.length,(newVal,oldVal)=>{
|
||||
if(props.isDesignPage)return
|
||||
data.fileList = store.state.HomeStoreModule.uploadElement
|
||||
})
|
||||
watch(()=>store.state.Workspace.probjects.id,(newVal,oldVal)=>{
|
||||
nextTick(()=>{
|
||||
data.fileList = store.state.HomeStoreModule.uploadElement
|
||||
let list = store.state.HomeStoreModule.poseTransfer.list
|
||||
let taskIdList = list.filter((item:any)=>!item.id)
|
||||
let taskIdList = list.filter((item:any)=>!item.videoUrl)
|
||||
if(taskIdList.length > 0){
|
||||
data.isGenerate = true
|
||||
data.remGenerate = true
|
||||
console.log(taskIdList)
|
||||
setGenerate(taskIdList[0].taskId)
|
||||
setGenerate([taskIdList[0].taskId])
|
||||
}
|
||||
})
|
||||
},{immediate: true })
|
||||
onBeforeUnmount(()=>{
|
||||
clearInterval(data.generateTime)
|
||||
clearInterval(data.remGenerateTime)
|
||||
data.isGenerate = false
|
||||
data.remGenerate = false
|
||||
})
|
||||
return{
|
||||
...toRefs(speed),
|
||||
...toRefs(dataDom),
|
||||
@@ -813,7 +855,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
> .designPage{
|
||||
padding-left: 4rem;
|
||||
margin-right: 4rem;
|
||||
}
|
||||
> .noLikeBox{
|
||||
padding-left: 2.3rem;
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
<div class="modal_title_text_intro"></div>
|
||||
</div> -->
|
||||
<div class="productImg_content_bottom">
|
||||
<div class="productImg_left" :class="{active:button.left}">
|
||||
<div class="productImg_left generalModel_state" :class="{active:button.left}">
|
||||
<!-- <div class="productImg_content_item_title productImg_content_item_title_menu">
|
||||
<generalMenu class="productImg_content_item_title_menubtn" :class="{hideEvents:driver__.driver}" :dataList="productimgMenuList" @setprintModel="setproduct" :item="productimgMenu"></generalMenu>
|
||||
</div> -->
|
||||
<div class="selectImg">
|
||||
<div class="selectImg" style="margin-bottom:2rem">
|
||||
<div class="head">
|
||||
<div class="text">{{$t('ProductImg.SelectCollection')}}</div>
|
||||
<div class="text">{{source == 'design'?$t('ProductImg.DesignSelectCollection'):productimgMenu.value == 'ToProductImage'?$t('ProductImg.SelectCollection'):$t('ProductImg.SelectCollectionRelight')}}</div>
|
||||
</div>
|
||||
<div class="imgBox" v-mousewheel>
|
||||
<!-- <div class="item" :class="[item?.isChecked?'active':'']" v-for="item in selectList[productimgMenu.value]" @click="setGenerate(item)">
|
||||
@@ -28,7 +28,7 @@
|
||||
<div :class="{active:item.isChecked}">
|
||||
<i class="fi fi-br-check"></i>
|
||||
</div>
|
||||
<div @click.stop="setUploadDelete(item,index)">
|
||||
<div @click.stop="setUploadDelete(item,index)" v-if="source != 'design'">
|
||||
<i class="fi fi-rr-trash icon_delete"></i>
|
||||
</div>
|
||||
</div>
|
||||
@@ -61,30 +61,31 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-show="productimgMenu.value == 'ToProductImage'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<div v-show="productimgMenu.value == 'ToProductImage' && speedData.value != 'flux'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<span>{{$t('ProductImg.Similarity')}}</span>
|
||||
</div>
|
||||
<div v-show="productimgMenu.value == 'ToProductImage'" class="productImg_content_item_similarity">
|
||||
<div v-show="productimgMenu.value == 'ToProductImage' && speedData.value != 'flux'" class="productImg_content_item_similarity">
|
||||
<a-slider class="system_silder"
|
||||
v-model:value="similarity"
|
||||
@afterChange="setSimilarity"
|
||||
:tooltipVisible="false"
|
||||
:step="5"
|
||||
:max="70"
|
||||
>
|
||||
</a-slider>
|
||||
<input type="number" readonly v-model="similarity">
|
||||
<input style="margin-left: 2rem;" type="number" readonly v-model="similarity">
|
||||
</div>
|
||||
<div v-show="productimgMenu.value == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<span>{{$t('ProductImg.SelectionFunction')}}</span>
|
||||
</div>
|
||||
<div v-show="productimgMenu.value == 'Relight'" class="productImg_content_item_Direction">
|
||||
<a-select style="width: 100%;" v-model:value="speedData.value" :options="speedList" :field-names="{ label: 'relightLabel', value: 'value' }"></a-select>
|
||||
<div v-show="productimgMenu.value == 'Relight'" class="productImg_content_item_Direction generalModel_state_item">
|
||||
<a-select size="large" style="width: 100%;" v-model:value="speedData.value" :options="speedList" :field-names="{ label: 'relightLabel', value: 'value' }"></a-select>
|
||||
</div>
|
||||
<div v-show="productimgMenu.value == 'Relight' && speedData.value != 'flux'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<span>{{$t('ProductImg.RelightDirection')}}</span>
|
||||
</div>
|
||||
<div v-show="productimgMenu.value == 'Relight' && speedData.value != 'flux'" class="productImg_content_item_Direction">
|
||||
<a-select style="width: 100%;" v-model:value="RelightDirection" :options="RelightDirectionList"></a-select>
|
||||
<div v-show="productimgMenu.value == 'Relight' && speedData.value != 'flux'" class="productImg_content_item_Direction generalModel_state_item">
|
||||
<a-select size="large" style="width: 100%;" v-model:value="RelightDirection" :options="RelightDirectionList"></a-select>
|
||||
</div>
|
||||
<div v-show="productimgMenu.value == 'Relight' && speedData.value != 'flux'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<span>{{$t('ProductImg.Highlight')}}</span>
|
||||
@@ -98,7 +99,7 @@
|
||||
:step="0.1"
|
||||
>
|
||||
</a-slider>
|
||||
<input type="number" readonly v-model="brightenValue">
|
||||
<input style="margin-left: 2rem;" type="number" readonly v-model="brightenValue">
|
||||
</div>
|
||||
<div class="input_border productImg_content_item_generate">
|
||||
<div class="input_box">
|
||||
@@ -111,6 +112,7 @@
|
||||
/> -->
|
||||
<textarea
|
||||
class="textarea"
|
||||
ref="textarea"
|
||||
@input="ifMaximumLength"
|
||||
:placeholder="productimgMenu.value == 'Relight'?$t('ProductImg.relightInput'):$t('ProductImg.productInput')"
|
||||
@keydown.enter.prevent="getPrductimg()"
|
||||
@@ -119,6 +121,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="selectText" v-show="productimgMenu.value == 'ToProductImage' && speedData.value == 'flux'">
|
||||
<div :title="$t('poseTransfer.hint')" @click="()=>{searchName[productimgMenu.value] = $t('poseTransfer.hint');ifMaximumLength()}">{{ $t('poseTransfer.hint') }}</div>
|
||||
</div>
|
||||
<div class="productImg_content_item_generate_btn input_border">
|
||||
<div class="generage_btn_box ">
|
||||
<div v-show="!isProductimg" class="generage_btn started_btn">
|
||||
@@ -143,7 +148,7 @@
|
||||
<div class="productImg_right_item_box generalScroll">
|
||||
<div class="content_header_left">
|
||||
<i class="fi fi-rs-comments"></i><span class="content_header_des">
|
||||
{{ $t('ProductImg.SelectedDesign') }}
|
||||
{{source == 'design'?$t('ProductImg.DesignSelectedDesign'):$t('ProductImg.SelectedDesign')}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content">
|
||||
@@ -163,11 +168,11 @@
|
||||
<div class="productImg_right_item_box right generalScroll">
|
||||
<div class="content_header_left">
|
||||
<i class="fi fi-rs-comments"></i><span class="content_header_des">
|
||||
{{ $t('ProductImg.productImageDrafts') }}
|
||||
{{source == 'design'?$t('ProductImg.DesignproductImageDrafts'):$t('ProductImg.productImageDrafts')}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content">
|
||||
<generalDrag ref="generalDragRight" :type="productimgMenu.value" :isCopy="!isDesignPage" @setBtn="generateSetBtn" :list="generateList" :showMark="isShowMark"></generalDrag>
|
||||
<generalDrag ref="generalDragRight" :type="productimgMenu.value" :isCopy="!isDesignPage" @setBtn="generateSetBtn" :list="generateList[productimgMenu.value]" :showMark="isShowMark"></generalDrag>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -217,6 +222,10 @@ export default defineComponent({
|
||||
return {}
|
||||
}
|
||||
},
|
||||
source:{
|
||||
type:String,
|
||||
default:'',
|
||||
},
|
||||
productimgMenu:{
|
||||
type:Object,
|
||||
default:()=>{
|
||||
@@ -252,11 +261,14 @@ export default defineComponent({
|
||||
remProductimg:false,//是否出现取消按钮
|
||||
isProductimg:false,//开始生成
|
||||
selectProductimgList:[],
|
||||
generateList:[],
|
||||
generateList:{
|
||||
ToProductImage:computed(()=>store.state.HomeStoreModule.toProductImageList.list),
|
||||
Relight:computed(()=>store.state.HomeStoreModule.relightList.list),
|
||||
},
|
||||
selectObject:computed(()=>store.state.Workspace.probjects),//选择的项目
|
||||
likeList:{
|
||||
ToProductImage:computed(()=>store.state.HomeStoreModule.toProductImageList),
|
||||
Relight:computed(()=>store.state.HomeStoreModule.relightList),
|
||||
ToProductImage:computed(()=>store.state.HomeStoreModule.toProductImageList.likedList),
|
||||
Relight:computed(()=>store.state.HomeStoreModule.relightList.likedList),
|
||||
} as any,
|
||||
similarity:30,
|
||||
brightenValue:1,
|
||||
@@ -265,6 +277,7 @@ export default defineComponent({
|
||||
left:false,
|
||||
right:false,
|
||||
},
|
||||
textarea:null as any,
|
||||
})
|
||||
let speed = reactive({
|
||||
speedList:[
|
||||
@@ -288,17 +301,14 @@ export default defineComponent({
|
||||
value:'flux',
|
||||
},
|
||||
})
|
||||
//watch立即执行一次
|
||||
watch(()=>productImgData.selectObject.id,(newVal,oldVal)=>{
|
||||
createProbject.generateList = []
|
||||
},{immediate: true })
|
||||
watch(() => route.query.id,
|
||||
(query:any, oldQuery:any) => {
|
||||
if(oldQuery && query != oldQuery){
|
||||
productImgData.generateList = []
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
// watch(() => route.query.id,
|
||||
// (query:any, oldQuery:any) => {
|
||||
// if(oldQuery && query != oldQuery){
|
||||
// productImgData.generateList = []
|
||||
// }
|
||||
// },
|
||||
// );
|
||||
watch(()=>store.state.HomeStoreModule.uploadElement.length,(newVal,oldVal)=>{
|
||||
if(props.isDesignPage)return
|
||||
productImgData.fileList[props.productimgMenu.value] = store.state.HomeStoreModule.uploadElement
|
||||
@@ -360,11 +370,11 @@ export default defineComponent({
|
||||
let arr = store.state.UploadFilesModule.cloudList
|
||||
if(props.productimgMenu.value == 'ToProductImage'){
|
||||
let list = JSON.parse(JSON.stringify(arr.toProduct)) || []
|
||||
productImgData.generateList.unshift(...list)
|
||||
productImgData.generateList[props.productimgMenu.value].unshift(...list)
|
||||
store.commit('clearCloudList','ToProductImage')
|
||||
}else if(props.productimgMenu.value == 'Relight'){
|
||||
let list = JSON.parse(JSON.stringify(arr.relight)) || []
|
||||
productImgData.generateList.unshift(...list)
|
||||
productImgData.generateList[props.productimgMenu.value].unshift(...list)
|
||||
store.commit('clearCloudList','relight')
|
||||
}
|
||||
|
||||
@@ -383,7 +393,7 @@ export default defineComponent({
|
||||
item.imgUrl = item.url
|
||||
});
|
||||
let value = {
|
||||
list: rv,
|
||||
likedList: rv,
|
||||
str:'add',
|
||||
index:-1,
|
||||
}
|
||||
@@ -466,6 +476,7 @@ export default defineComponent({
|
||||
})
|
||||
}
|
||||
let likeFile = (item:any,str:any,index:any) =>{
|
||||
console.log(item)
|
||||
let url
|
||||
let data = {
|
||||
toProductImageResultId:[item.id],
|
||||
@@ -480,8 +491,10 @@ export default defineComponent({
|
||||
Https.axiosPost(url, data).then(
|
||||
(rv) => {
|
||||
if(str == 'like'){
|
||||
if(rv?.sort)item.oldSort = rv.sort
|
||||
if(rv?.id)item.userLikeSortId = rv.id
|
||||
let value = {
|
||||
list:[item],
|
||||
likedList:[item],
|
||||
str:'add',
|
||||
index:-1,
|
||||
}
|
||||
@@ -490,14 +503,14 @@ export default defineComponent({
|
||||
}else{
|
||||
store.commit("setRelightList", value);
|
||||
}
|
||||
productImgData.generateList.splice(index,1)
|
||||
productImgData.generateList[props.productimgMenu.value].splice(index,1)
|
||||
}else{
|
||||
let value = {
|
||||
list:[item],
|
||||
likedList:[item],
|
||||
str:'splice',
|
||||
index:index,
|
||||
}
|
||||
productImgData.generateList.push(item)
|
||||
productImgData.generateList[props.productimgMenu.value].push(item)
|
||||
if(props.productimgMenu.value == 'ToProductImage'){
|
||||
store.commit("setToProductImage", value);
|
||||
}else{
|
||||
@@ -524,17 +537,20 @@ export default defineComponent({
|
||||
"taskId": "",
|
||||
"toProductImageRecordId": 0,
|
||||
"url": "",
|
||||
parentId:null,
|
||||
}
|
||||
if(productImgData.fileList[props.productimgMenu.value]){
|
||||
productImgData.fileList[props.productimgMenu.value].forEach((item:any)=>{
|
||||
console.log(item)
|
||||
if(item.isChecked){
|
||||
if(item.resultType == 'Design'){
|
||||
obj.elementId = item.designOutfitId
|
||||
obj.elementType = 'DesignOutfit'
|
||||
}else{
|
||||
obj.elementId = item.id
|
||||
obj.elementType = item.type || 'ProductElement'
|
||||
obj.elementType = item.resultType || 'ProductElement'
|
||||
}
|
||||
obj.parentId = item?.parentId || item?.userLikeSortId,
|
||||
selectArr.push(JSON.parse(JSON.stringify(obj)))
|
||||
}
|
||||
})
|
||||
@@ -553,6 +569,8 @@ export default defineComponent({
|
||||
direction:RelightDirection.value,
|
||||
brightenValue:productImgData.brightenValue,
|
||||
imageStrength:(100 - imageStrength)/100,
|
||||
|
||||
isDefaultLike:false,//表示是否生成就like
|
||||
}
|
||||
productImgData.isProductimg = true
|
||||
// remPrductimgTime = setTimeout(()=>{
|
||||
@@ -571,7 +589,7 @@ export default defineComponent({
|
||||
rv.forEach((item:any)=>{
|
||||
arr.push(item.taskId)
|
||||
})
|
||||
productImgData.generateList.unshift(...rv)
|
||||
productImgData.generateList[props.productimgMenu.value].unshift(...rv)
|
||||
setPrductimg(arr)
|
||||
}
|
||||
).catch(res=>{
|
||||
@@ -621,17 +639,14 @@ export default defineComponent({
|
||||
rv.forEach((element:any) => {
|
||||
if(element.status == 'Success'){
|
||||
element.imgUrl = element.url
|
||||
// if(!productImgData.generateList[props.productimgMenu.value]){
|
||||
// productImgData.generateList[props.productimgMenu.value] = []
|
||||
// }
|
||||
let index = productImgData.generateList.findIndex((obj:any) => obj.taskId === element.taskId);
|
||||
productImgData.generateList[index] = element
|
||||
let index = productImgData.generateList[props.productimgMenu.value].findIndex((obj:any) => obj.taskId === element.taskId);
|
||||
productImgData.generateList[props.productimgMenu.value][index] = element
|
||||
// productImgData.generateList[props.productimgMenu.value].unshift(element)
|
||||
data = data.filter((item:any) => item !== element.taskId);
|
||||
}else if(element.status == 'Fail'){
|
||||
message.info(t('ProductImg.jsContent3'))
|
||||
let index = productImgData.generateList.findIndex((obj:any) => obj.taskId === element.taskId);
|
||||
productImgData.generateList.splice(index,1)
|
||||
let index = productImgData.generateList[props.productimgMenu.value].findIndex((obj:any) => obj.taskId === element.taskId);
|
||||
productImgData.generateList[props.productimgMenu.value].splice(index,1)
|
||||
data = data.filter((item:any) => item !== element.taskId);
|
||||
}
|
||||
});
|
||||
@@ -648,7 +663,7 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
).catch(res=>{
|
||||
productImgData.generateList.filter((item:any)=>item.status == 'Success')
|
||||
productImgData.generateList[props.productimgMenu.value].filter((item:any)=>item.status == 'Success')
|
||||
clearInterval(prductimgTime)
|
||||
clearInterval(remPrductimgTime)
|
||||
productImgData.isProductimg = false
|
||||
@@ -671,10 +686,10 @@ export default defineComponent({
|
||||
Https.axiosGet(Https.httpUrls.generateStopWaiting, {params:data}).then(
|
||||
(rv) => {
|
||||
generateProceedList = []
|
||||
productImgData.generateList = productImgData.generateList.filter((item:any)=>item.status == 'Success')
|
||||
productImgData.generateList[props.productimgMenu.value] = productImgData.generateList[props.productimgMenu.value].filter((item:any)=>item.status == 'Success')
|
||||
}
|
||||
).catch(res=>{
|
||||
productImgData.generateList = productImgData.generateList.filter((item:any)=>item.status == 'Success')
|
||||
productImgData.generateList[props.productimgMenu.value] = productImgData.generateList[props.productimgMenu.value].filter((item:any)=>item.status == 'Success')
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -747,13 +762,24 @@ export default defineComponent({
|
||||
}
|
||||
const generateSetBtn = (id:any,str:string)=>{
|
||||
if(str == 'delete'){
|
||||
productImgData.generateList = productImgData.generateList.filter((v:any) => v.id != id);
|
||||
let type = 'ToProductImage'
|
||||
if(props.productimgMenu.value == 'Relight')type = 'Relight'
|
||||
let value = {
|
||||
type,
|
||||
id,
|
||||
projectId:productImgData.selectObject.id
|
||||
}
|
||||
Https.axiosGet(Https.httpUrls.historyDeleteResult,{params:value}).then(()=>{
|
||||
let index = productImgData.generateList[props.productimgMenu.value].findIndex((v:any) => v.id == id)
|
||||
productImgData.generateList[props.productimgMenu.value].splice(index,1)
|
||||
})
|
||||
// productImgData.generateList[props.productimgMenu.value] = productImgData.generateList[props.productimgMenu.value].filter((v:any) => v.id != id);
|
||||
}else{
|
||||
productImgData.generateList.forEach((item:any,index:number)=>{
|
||||
productImgData.generateList[props.productimgMenu.value].forEach((item:any,index:number)=>{
|
||||
if(item.id == id){
|
||||
let selectStr = ''
|
||||
str == 'zoom'?selectStr = 'zoom':selectStr ='like'
|
||||
setLikeZoom(item,str,index,productImgData.generateList)
|
||||
setLikeZoom(item,str,index,productImgData.generateList[props.productimgMenu.value])
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -778,8 +804,9 @@ export default defineComponent({
|
||||
setItemPosition()
|
||||
})
|
||||
}
|
||||
const ifMaximumLength = (event:any)=>{
|
||||
let textarea = event.target as HTMLTextAreaElement;
|
||||
const ifMaximumLength = async ()=>{
|
||||
await nextTick()
|
||||
let textarea = productImgData.textarea;
|
||||
const scrollTop = textarea.scrollTop;
|
||||
// 2. 计算单行高度
|
||||
const lineHeight = parseInt(getComputedStyle(textarea).lineHeight) || 20; // 默认20px
|
||||
@@ -803,6 +830,28 @@ export default defineComponent({
|
||||
speed.speedState = false
|
||||
document.removeEventListener('click',openSpeed)
|
||||
}
|
||||
//watch立即执行一次
|
||||
watch(()=>productImgData.selectObject.id,(newVal,oldVal)=>{
|
||||
createProbject.generateList = []
|
||||
let list = []
|
||||
if(props?.productimgMenu.value == "ToProductImage"){
|
||||
list = store.state.HomeStoreModule.toProductImageList.list || []
|
||||
}else{
|
||||
list = store.state.HomeStoreModule.relightList.list || []
|
||||
}
|
||||
let taskIdList = list.filter((item:any)=>!item?.url)
|
||||
if(taskIdList.length > 0){
|
||||
let arr:any = []
|
||||
taskIdList.forEach((item:any)=>{
|
||||
arr.push(item.taskId)
|
||||
})
|
||||
productImgData.isProductimg = true
|
||||
productImgData.remProductimg = true
|
||||
productImgData.isShowMark = false
|
||||
console.log(taskIdList)
|
||||
setPrductimg(arr)
|
||||
}
|
||||
},{immediate: true })
|
||||
return {
|
||||
upload,
|
||||
driver__,
|
||||
@@ -1103,6 +1152,8 @@ export default defineComponent({
|
||||
flex-direction: column;
|
||||
padding-right: 3.8rem;
|
||||
width: 39rem;
|
||||
align-items: stretch;
|
||||
flex-wrap: nowrap;
|
||||
&.active{
|
||||
width: 0;
|
||||
padding: 0;
|
||||
@@ -1154,19 +1205,29 @@ export default defineComponent({
|
||||
}
|
||||
.productImg_content_item_Direction{
|
||||
padding-bottom: 1rem;
|
||||
:deep(.ant-select){
|
||||
margin-right: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
.selectText{
|
||||
margin-bottom: 2rem;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
> div{
|
||||
background: #efeff1;
|
||||
width: 100%;
|
||||
font-size: 1.6rem;
|
||||
.ant-select-selector::after{
|
||||
line-height: 1;
|
||||
margin-right: 1.2rem;
|
||||
border-radius: 1.6rem;
|
||||
cursor: pointer;
|
||||
padding: 1.2rem;
|
||||
white-space: nowrap; /* 文本不换行 */
|
||||
overflow: hidden; /* 溢出部分隐藏 */
|
||||
text-overflow: ellipsis; /* 显示省略号 */
|
||||
&:hover{
|
||||
background: #f5f5f5;
|
||||
}
|
||||
.ant-select-selector .ant-select-selection-item{
|
||||
line-height: 1;
|
||||
}
|
||||
.ant-select-selector{
|
||||
height: auto;
|
||||
padding: 1rem 1rem;
|
||||
box-shadow: none !important;
|
||||
border: calc(0.1rem* 1.2) solid #F1F1F1;
|
||||
&:first-child{
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1265,6 +1326,6 @@ export default defineComponent({
|
||||
|
||||
}
|
||||
.designPage{
|
||||
padding-left: 4rem;
|
||||
margin-right: 4rem;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user