修复部分bug部分页面的调整

This commit is contained in:
X1627315083
2025-06-11 15:08:17 +08:00
parent c266967f16
commit 8b107857ad
20 changed files with 547 additions and 228 deletions

BIN
dist.7z

Binary file not shown.

View File

@@ -749,13 +749,17 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.generalModel_state .generalModel_state_item .ant-picker-range,
.generalModel_state .generalModel_state_item .ant-select-selector,
.generalModel_state .generalModel_state_item .range_picker {
height: 2.5rem !important;
height: 5rem !important;
border-radius: 1rem;
padding: calc(2rem - 1px * 2) !important;
padding-right: 3rem !important;
padding-left: 2rem !important;
box-sizing: content-box;
background-color: #f3f3f3;
background-color: #fff;
width: calc(100% - 4rem);
width: 100%;
box-sizing: border-box;
display: flex;
align-items: center;
border: 1px solid #000;
}
.generalModel_state .generalModel_state_item .ant-picker-input > input {
@@ -766,7 +770,8 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
}
.generalModel_state .generalModel_state_item .ant-select-lg .ant-select-selector .ant-select-selection-item {
height: 100%;
display: inline-block;
display: flex;
align-items: center;
overflow: hidden;
line-height: 2.7rem;
}
@@ -2179,63 +2184,53 @@ textarea:focus {
top: 0rem;
border: 1px solid #dcdfe6;
}
.collection_modal_body .input_border .generage_btn_box,
.design_detail_modal_component .input_border .generage_btn_box,
.library_page .input_border .generage_btn_box,
.productImg_content .input_border .generage_btn_box,
.poseTransfer .input_border .generage_btn_box,
.scaleImage_modal .input_border .generage_btn_box,
.accountEdit_page .input_border .generage_btn_box,
.generalMenu_printModel_upload .input_border .generage_btn_box,
.generate .input_border .generage_btn_box {
.generage_btn_box {
position: relative;
display: flex;
align-items: center;
}
.collection_modal_body .input_border .generage_btn_box .generage_btn,
.design_detail_modal_component .input_border .generage_btn_box .generage_btn,
.library_page .input_border .generage_btn_box .generage_btn,
.productImg_content .input_border .generage_btn_box .generage_btn,
.poseTransfer .input_border .generage_btn_box .generage_btn,
.scaleImage_modal .input_border .generage_btn_box .generage_btn,
.accountEdit_page .input_border .generage_btn_box .generage_btn,
.generalMenu_printModel_upload .input_border .generage_btn_box .generage_btn,
.generate .input_border .generage_btn_box .generage_btn {
.generage_btn_box .fi-bs-magic-wand {
margin-right: 1rem;
display: flex;
cursor: pointer;
transition: all 0.3s;
position: relative;
z-index: 4;
width: 4rem;
align-items: center;
background-color: #fff;
justify-content: center;
}
.generage_btn_box .fi-bs-magic-wand.fi-br-loading {
height: 100%;
background-color: rgba(0, 0, 0, 0);
}
.generage_btn_box .fi-bs-magic-wand.active {
transform: rotate(180deg);
}
.generage_btn_box .fi-bs-magic-wand.forbidden {
cursor: no-drop;
}
.generage_btn_box .generage_btn {
margin-left: 2rem;
display: flex;
font-size: 1.8rem;
padding: 1rem 2rem;
box-sizing: content-box;
justify-content: center;
}
.generage_btn_box .generage_btn {
width: 10rem;
}
.collection_modal_body .input_border .generage_btn_box .icon-xiala,
.design_detail_modal_component .input_border .generage_btn_box .icon-xiala,
.library_page .input_border .generage_btn_box .icon-xiala,
.productImg_content .input_border .generage_btn_box .icon-xiala,
.poseTransfer .input_border .generage_btn_box .icon-xiala,
.scaleImage_modal .input_border .generage_btn_box .icon-xiala,
.accountEdit_page .input_border .generage_btn_box .icon-xiala,
.generalMenu_printModel_upload .input_border .generage_btn_box .icon-xiala,
.generate .input_border .generage_btn_box .icon-xiala {
.generage_btn_box .icon-xiala {
margin-left: 1rem;
transition: all 0.3s;
cursor: pointer;
}
.collection_modal_body .input_border .generage_btn_box .icon-xiala.active,
.design_detail_modal_component .input_border .generage_btn_box .icon-xiala.active,
.library_page .input_border .generage_btn_box .icon-xiala.active,
.productImg_content .input_border .generage_btn_box .icon-xiala.active,
.poseTransfer .input_border .generage_btn_box .icon-xiala.active,
.scaleImage_modal .input_border .generage_btn_box .icon-xiala.active,
.accountEdit_page .input_border .generage_btn_box .icon-xiala.active,
.generalMenu_printModel_upload .input_border .generage_btn_box .icon-xiala.active,
.generate .input_border .generage_btn_box .icon-xiala.active {
.generage_btn_box .icon-xiala.active {
transform: rotate(180deg);
}
.collection_modal_body .input_border .generage_btn_box .content,
.design_detail_modal_component .input_border .generage_btn_box .content,
.library_page .input_border .generage_btn_box .content,
.productImg_content .input_border .generage_btn_box .content,
.poseTransfer .input_border .generage_btn_box .content,
.scaleImage_modal .input_border .generage_btn_box .content,
.accountEdit_page .input_border .generage_btn_box .content,
.generalMenu_printModel_upload .input_border .generage_btn_box .content,
.generate .input_border .generage_btn_box .content {
.generage_btn_box .content {
position: absolute;
top: 100%;
width: calc(100% - 2rem);
@@ -2247,15 +2242,7 @@ textarea:focus {
margin-top: 0.2rem;
margin-left: 2rem;
}
.collection_modal_body .input_border .generage_btn_box .content > div,
.design_detail_modal_component .input_border .generage_btn_box .content > div,
.library_page .input_border .generage_btn_box .content > div,
.productImg_content .input_border .generage_btn_box .content > div,
.poseTransfer .input_border .generage_btn_box .content > div,
.scaleImage_modal .input_border .generage_btn_box .content > div,
.accountEdit_page .input_border .generage_btn_box .content > div,
.generalMenu_printModel_upload .input_border .generage_btn_box .content > div,
.generate .input_border .generage_btn_box .content > div {
.generage_btn_box .content > div {
background: #cccccc;
line-height: 2;
font-size: 1.8rem;
@@ -2264,44 +2251,12 @@ textarea:focus {
overflow: hidden;
text-overflow: ellipsis;
}
.collection_modal_body .input_border .generage_btn_box .content > div.active,
.design_detail_modal_component .input_border .generage_btn_box .content > div.active,
.library_page .input_border .generage_btn_box .content > div.active,
.productImg_content .input_border .generage_btn_box .content > div.active,
.poseTransfer .input_border .generage_btn_box .content > div.active,
.scaleImage_modal .input_border .generage_btn_box .content > div.active,
.accountEdit_page .input_border .generage_btn_box .content > div.active,
.generalMenu_printModel_upload .input_border .generage_btn_box .content > div.active,
.generate .input_border .generage_btn_box .content > div.active {
.generage_btn_box .content > div.active {
background-color: #616161;
}
.collection_modal_body .input_border .generage_btn_box .content > div:hover,
.design_detail_modal_component .input_border .generage_btn_box .content > div:hover,
.library_page .input_border .generage_btn_box .content > div:hover,
.productImg_content .input_border .generage_btn_box .content > div:hover,
.poseTransfer .input_border .generage_btn_box .content > div:hover,
.scaleImage_modal .input_border .generage_btn_box .content > div:hover,
.accountEdit_page .input_border .generage_btn_box .content > div:hover,
.generalMenu_printModel_upload .input_border .generage_btn_box .content > div:hover,
.generate .input_border .generage_btn_box .content > div:hover {
.generage_btn_box .content > div:hover {
background: #999999;
}
.collection_modal_body .input_border .generage_btn,
.design_detail_modal_component .input_border .generage_btn,
.library_page .input_border .generage_btn,
.productImg_content .input_border .generage_btn,
.poseTransfer .input_border .generage_btn,
.scaleImage_modal .input_border .generage_btn,
.accountEdit_page .input_border .generage_btn,
.generalMenu_printModel_upload .input_border .generage_btn,
.generate .input_border .generage_btn {
margin-left: 2rem;
display: flex;
font-size: 1.8rem;
padding: 1rem 2rem;
box-sizing: content-box;
justify-content: center;
}
.hideChecked {
user-select: none;
-moz-user-select: none;

View File

@@ -824,13 +824,19 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
text-align: left;
}
.ant-picker-range,.ant-select-selector,.range_picker{
height: 2.5rem !important;
height: 5rem !important;
border-radius: 1rem;
padding: calc(2rem - 1px * 2) !important;
// padding: 0 calc(2rem - 1px * 2) !important;
padding-right: 3rem !important;
padding-left: 2rem !important;
box-sizing: content-box;
background-color: #f3f3f3;
background-color: #fff;
width: calc(100% - 4rem);
width: 100%;
box-sizing: border-box;
// width: calc(100% - 3rem);
display: flex;
align-items: center;
border: 1px solid #000;
}
.ant-picker-input > input{
@@ -841,9 +847,8 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-select-selector{
.ant-select-selection-item{
height: 100%;
// display: flex;
display: inline-block;
// align-items: center;
display: flex;
align-items: center;
//文字超出隐藏
overflow: hidden;
line-height: 2.7rem;
@@ -2111,63 +2116,84 @@ textarea:focus{
// color: red;
// width: 100%;
// }
.generage_btn_box{
position: relative;
display: flex;
align-items: center;
.generage_btn{
width: 10rem;
}
.icon-xiala{
margin-left: 1rem;
transition: all .3s;
cursor: pointer;
&.active{
transform: rotate(180deg);
}
}
.content{
position: absolute;
top: 100%;
width: calc(100% - 2rem);
left: 0rem;
text-align: center;
border-radius: calc(1rem* 1.2);
overflow: hidden;
z-index: 3;
margin-top: .2rem;
margin-left: 2rem;
>div{
background: #cccccc;
line-height: 2;
font-size: 1.8rem;
cursor: pointer;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
&.active{
background-color: #616161;
}
}
>div:hover{
background: #999999;
}
}
}
}
.generage_btn_box{
position: relative;
display: flex;
align-items: center;
.fi-bs-magic-wand{
margin-right:1rem;
display: flex;
cursor: pointer;
transition: all .3s;
position: relative;
z-index: 4;
width: 4rem;
align-items: center;
background-color: #fff;
justify-content: center;
&.fi-br-loading{
height: 100%;
background-color: rgba(0, 0, 0, 0);
}
.generage_btn{
// margin: 0 auto;
margin-left: 2rem;
display: flex;
font-size: 1.8rem;
padding: 1rem 2rem;
box-sizing: content-box;
justify-content: center;
&.active{
transform: rotate(180deg);
}
&.forbidden{
cursor: no-drop;
}
}
.generage_btn{
// margin: 0 auto;
margin-left: 2rem;
display: flex;
font-size: 1.8rem;
padding: 1rem 2rem;
box-sizing: content-box;
justify-content: center;
}
.generage_btn{
width: 10rem;
}
.icon-xiala{
margin-left: 1rem;
transition: all .3s;
cursor: pointer;
&.active{
transform: rotate(180deg);
}
}
.content{
position: absolute;
top: 100%;
width: calc(100% - 2rem);
left: 0rem;
text-align: center;
border-radius: calc(1rem* 1.2);
overflow: hidden;
z-index: 3;
margin-top: .2rem;
margin-left: 2rem;
>div{
background: #cccccc;
line-height: 2;
font-size: 1.8rem;
cursor: pointer;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
&.active{
background-color: #616161;
}
}
>div:hover{
background: #999999;
}
}
}
.hideChecked{
user-select: none;
-moz-user-select: none;

View File

@@ -139,6 +139,7 @@ import { BrushStore } from "../store/BrushStore";
import { OperationType } from "../utils/layerHelper";
import { inject } from "vue";
import VerticalSlider from "./VerticalSlider.vue";
import SvgIcon from "@/component/Canvas/SvgIcon/index.vue";
const props = defineProps({
activeTool: {

View File

@@ -6,7 +6,6 @@ import {
defineAsyncComponent,
shallowRef,
provide,
defineExpose,
} from "vue";
import { CanvasManager } from "./managers/CanvasManager";
import { LayerManager } from "./managers/LayerManager";
@@ -128,7 +127,6 @@ onMounted(async () => {
canvasHeight.value = canvasContainerRef.value.clientWidth;
canvasWidth.value = canvasContainerRef.value.clientHeight;
}
console.log(12312)
// 创建管理器实例
canvasManager = new CanvasManager(canvasRef.value, {
width: canvasContainerRef.value.clientWidth - layerWidth.value, // 初始化的时候需要减去侧边栏宽度

View File

@@ -1,12 +1,16 @@
<template>
<div class="c-svg">
<svg
<!-- <svg
:class="svgClass"
v-bind="$attrs"
:style="{ color: color, fontSize: size + 'px' }"
>
<use :href="iconName"></use>
</svg>
</svg> -->
<img
:class="svgClass"
v-bind="$attrs"
:style="{ color: color, fontSize: size + 'px' }" :src='iconName' alt="">
</div>
</template>
@@ -26,7 +30,12 @@ const props = defineProps({
default: 16,
},
});
const iconName = computed(() => `#icon-${props.name}`);
const iconName = computed(() => {
console.log(require(`@/assets/icons/${props.name}.svg`))
return require(`@/assets/icons/${props.name}.svg`)
return imgUrl
});
// const iconName = computed(() => `#icon-${props.name}`);
const svgClass = computed(() => {
if (props.name) return `svg-icon icon-${props.name}`;
return "svg-icon";

View File

@@ -81,7 +81,7 @@ export default defineComponent({
tcxToColor:'',
})
watch(()=>colorData.selectColor,async (newVal,oldVal)=>{
if(!newVal?.name && newVal.rgba && newVal.rgba?.r){
if(newVal.rgba && newVal.rgba?.r){
let data:any = await getColorName(newVal.rgba)
newVal.name = data.name
newVal.tcx = data.tcx

View File

@@ -171,7 +171,7 @@ export default defineComponent({
ifSingle:editPrintElementData.overallSingle,
level2Type:data.level2Type,
location,
minIOPath:data.minIOPath,
minIOPath:data.minIOPath || data.originalUrl,
path:data.url,
priority:editPrintElementData.printZIndex,
scale,

View File

@@ -433,7 +433,9 @@ export default defineComponent({
</script>
<style lang="less" scoped>
.molepositon{
width: 30rem;
// width: 30rem;
// width: calc(66 * .470rem);
width: calc(66 * .457rem);
height: 66rem;
display: flex;
flex-direction: column;

View File

@@ -339,7 +339,6 @@ export default defineComponent({
font-weight: 500;
color: #000;
margin-bottom: .5rem;
line-height: 1.3rem;
width: 100%;
overflow: hidden;
white-space: nowrap;

View File

@@ -311,7 +311,6 @@ export default defineComponent({
}
const getImageStrength = (num) => {
let imageStrength = num == 100? 95 :num
console.log(num)
return imageStrength;
};
const getPoseTransformData = ()=>{
@@ -332,7 +331,7 @@ export default defineComponent({
SERIES_DESIGN:"design",
TO_PRODUCT_IMAGE:"toProductImage",
RELIGHT:"relight",
POSE_TRANSFORM:"poseTransfer"
POSE_TRANSFER:"poseTransfer"
}
return {
"buildType": buildTypeCorresponding[operationsData.buildType],
@@ -383,7 +382,12 @@ export default defineComponent({
if (rv) {
operations.loadingShow = false
cancelDsign()
emit('getContentList')
let porjectData = operationsData.objectList.find(item => item.id === operationsData.projectData)
let project = {
value:porjectData?.id,
label:porjectData?.name,
}
emit('getContentList',project)
}
}).catch((error) => {
operations.loadingShow = false

View File

@@ -9,7 +9,7 @@
</div>
</div>
<div class="searchObject generalModel_state">
<div class="generalModel_state_item smail">
<div class="generalModel_state_item smail" style="margin-right: 1rem;">
<span>Project :</span>
<a-select
v-model:value="projectData"
@@ -34,7 +34,8 @@
</div>
</div>
<div class="createCloud">
<div class="gallery_btn" @click="createClound">Create</div>
<div class="gallery_btn" style="margin-right: 2rem;" @click="pagination">Search</div>
<div class="gallery_btn white" @click="createClound">Create</div>
</div>
</div>
<div class="contentList">
@@ -55,13 +56,13 @@
</td>
</tr>
</div>
<a-pagination style="text-align: center;" v-model:current="currentPage" :total="total" show-less-items />
<a-pagination style="text-align: center;" @change="pagination" v-model:current="currentPage" :total="total" show-less-items />
</div>
<createCloud ref="createCloud" :cloudList="generateList.seriesDesign" @getContentList="submitGetContentList"></createCloud>
</div>
</template>
<script lang="ts">
import { defineComponent,computed,ref,onMounted,nextTick,createVNode,toRefs, reactive, onBeforeUnmount} from 'vue'
import { defineComponent,computed,ref,onMounted,nextTick,createVNode,toRefs, reactive, onBeforeUnmount, inject} from 'vue'
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import { Https } from "@/tool/https";
import { useStore } from "vuex";
@@ -76,6 +77,7 @@ export default defineComponent({
emits:['retrieve'],
setup(props,{emit}) {
const store = useStore();
const router = useRouter()
const route = useRoute()
const data = reactive({
pageType:'list',
@@ -85,6 +87,7 @@ export default defineComponent({
selectObject:computed(()=>store.state.Workspace.probjects),//选择的项目
projectData:null as any,//批量id
createData:null as any,
settingGetHistory:inject('settingGetHistory') as any,
generateList:{
seriesDesign:[
{
@@ -227,6 +230,14 @@ export default defineComponent({
dataDom.createCloud.init(data.createData,obj)
}
const createData = ()=>{
store.commit("createProbject");
store.commit("clearAllData");
store.commit("clearAllCollection");
store.commit("setAllBoardDataChoose",{});
store.commit("clearShowSketchboard",{});
store.commit("clearAllCollection");
}
const detailIamge = (item:any)=>{
//去除里面的T2025-04-17T13:45:43
if(item.process == '100.00%' || item.status == 1){
@@ -236,31 +247,50 @@ export default defineComponent({
size:10,
buildType:item.buildType,
}
createData()
Https.axiosPost(Https.httpUrls.getDesignCloudResult,value).then((rv)=>{
console.log(rv)
if(rv.design && rv.design.length > 0){
if(item.buildType == 'design'){
store.commit('addDesignCollectionList',rv.design)
emit('retrieve','design')
}else if(rv.toProductImage && rv.toProductImage.length > 0){
router.push(`/home?history=${item.projectId}&source=batch`)
}else if(item.buildType == 'toProductImage'){
store.commit('setCloudList',{str:'toProduct',list:rv.toProductImage})
emit('retrieve','toProduct')
}else if(rv.relight && rv.relight.length > 0){
router.push(`/home/tools?tools=toProduct&id=${item.projectId}&source=batch`)
}else if(item.buildType == 'relight'){
store.commit('setCloudList',{str:'relight',list:rv.relight})
emit('retrieve','relight')
}else if(rv.poseTransfer && rv.poseTransfer.length > 0){
router.push(`/home/tools?tools=${item.buildType}&id=${item.projectId}&source=batch`)
}else if(item.buildType == 'poseTransfer'){
store.commit('setCloudList',{str:'poseTransfer',list:rv.poseTransfer})
emit('retrieve','poseTransfer')
router.push(`/home/tools?tools=${item.buildType}&id=${item.projectId}&source=batch`)
}
// if(rv.design && rv.design.length > 0){
// store.commit('addDesignCollectionList',rv.design)
// emit('retrieve','design')
// }else if(rv.toProductImage && rv.toProductImage.length > 0){
// store.commit('setCloudList',{str:'toProduct',list:rv.toProductImage})
// emit('retrieve','toProduct')
// }else if(rv.relight && rv.relight.length > 0){
// store.commit('setCloudList',{str:'relight',list:rv.relight})
// emit('retrieve','relight')
// }else if(rv.poseTransfer && rv.poseTransfer.length > 0){
// store.commit('setCloudList',{str:'poseTransfer',list:rv.poseTransfer})
// emit('retrieve','poseTransfer')
// }
data.isGetContentList = false
})
}
}
const pagination = ()=>{
data.isGetContentList = true
getContentList()
}
let time = null as any
const getContentList = ()=>{
if(data.isGetContentList){
clearTimeout(time)
let value = {
page:data.currentPage,
size:data.pageSize,
projectId: data.projectData.id,
projectId: data.projectData?.value,
}
Https.axiosPost(Https.httpUrls.cloudPage,value).then((rv)=>{
data.contentList = rv.content
@@ -268,7 +298,7 @@ export default defineComponent({
let arr = rv.content
let result = arr.some((item:any) => (item.process !== '100.00%' && item.status !== 1));
if(!result)data.isGetContentList = false
setTimeout(()=>{
time = setTimeout(()=>{
getContentList()
},1500)
})
@@ -298,9 +328,16 @@ export default defineComponent({
})
},1000)
}
const submitGetContentList = ()=>{
const submitGetContentList = (project:any)=>{
data.isGetContentList = true
if(project){
data.projectData = project
}else{
data.projectData = null
}
data.currentPage = 1
getContentList()
if(data.settingGetHistory)data.settingGetHistory()
}
const handleChange = (event:any,value:any)=>{
data.createData = value
@@ -311,9 +348,12 @@ export default defineComponent({
onMounted(()=>{
data.isGetContentList = true
if(route.query?.id){
data.projectData.value = route.query?.id
data.projectData.label = route.query?.name
data.projectData = {
value:route.query?.id,
label:route.query?.name,
}
}
getContentList()
// if(route.query?.type == 'creation')dataDom.createCloud.init(data.projectData)
})
return{
@@ -325,6 +365,7 @@ export default defineComponent({
submitGetContentList,
handleChange,
getHistoryProjectList,
pagination,
}
},
provide() {

View File

@@ -106,7 +106,10 @@ export default defineComponent({
})
watch(()=>data.selectObject.id,(newValue,oldValue)=>{
if(newValue && (data.selectObject.httpType == 'SERIES_DESIGN' || data.selectObject.httpType == 'SINGLE_DESIGN')){
getChatHistory(newValue)
data.chatList = []
nextTick(()=>{
getChatHistory(newValue)
})
}
})
const inputText = (e:any)=>{
@@ -168,6 +171,8 @@ export default defineComponent({
}
emit('chatChange',{type:eventData.type,module:getData})
}else if(eventData.type == "design_control_signal"){
emit('chatChange',{type:eventData.type,design:true})
}
//emit('chatChange',{type:JSON.parse(event.data).status})
};
@@ -182,6 +187,7 @@ export default defineComponent({
};
}
const getChatHistory = (objectId:number)=>{
if(!data.isFinish)return
let value = {
projectId:objectId,
page:1,

View File

@@ -28,11 +28,17 @@
<div>Setting</div>
</div> -->
<div class="collectionBox">
<MoodboardUpload ref="moodBoard" v-if="openType == 'moodBoard'"></MoodboardUpload>
<PrintboardUpload ref="printBoard" v-if="openType == 'printBoard'"></PrintboardUpload>
<ColorboardUpload ref="colorBoard" v-if="openType == 'colorBoard'"></ColorboardUpload>
<SketchboardUpload ref="sketchBoard" v-if="openType == 'sketchBoard'"></SketchboardUpload>
<mannequin ref="mannequin" v-if="openType == 'mannequin'"></mannequin>
<MoodboardUpload ref="moodBoard" v-if="openType == 'moodBoard' || collectionStep == 1"></MoodboardUpload>
<PrintboardUpload ref="printBoard" v-if="openType == 'printBoard' || collectionStep == 2"></PrintboardUpload>
<ColorboardUpload ref="colorBoard" v-if="openType == 'colorBoard' || collectionStep == 3"></ColorboardUpload>
<SketchboardUpload ref="sketchBoard" v-if="openType == 'sketchBoard' || collectionStep == 4"></SketchboardUpload>
<mannequin ref="mannequin" v-if="openType == 'mannequin' || collectionStep == 5"></mannequin>
</div>
<div class="collection_page">
<i v-show="collectionStep > 1" class="fi fi-rr-arrow-small-left" @click="lastStep()"></i>
<i v-if="collectionStep < 5" class="fi fi-rr-arrow-small-right Guide_1_8" @click.stop="nextStep()"></i>
<i v-else class="fi fi-rr-check Guide_1_14" @click.stop="cleardata()"></i>
</div>
</div>
<div class="mark_loading" v-show="isShowMark">
@@ -66,6 +72,7 @@ export default defineComponent({
habitSetStyle:false,
isShowMark:false,
openType:'',
collectionStep:1,
selectObject:computed(()=>store.state.Workspace.probjects),//选择的项目
})
let driver__:any = computed(()=>{
@@ -82,12 +89,15 @@ export default defineComponent({
const init = (value:any)=>{
data.habitSetStyle = true
data.openType = value
const keys = Object.keys(dataDom);
data.collectionStep = keys.indexOf(value) + 1; // 1
nextTick(()=>{
dataDom[value].openSetData()
})
}
let cleardata = ()=>{
data.habitSetStyle = false
data.collectionStep = 1
if(data.openType)store.dispatch('setAllBoardData',{type:data.openType})
saveProject(data.openType)
}
@@ -104,11 +114,32 @@ export default defineComponent({
})
})
}
let lastStep = ()=>{
data.collectionStep = data.collectionStep - 1
setOpenSetData()
}
let nextStep = ()=>{
data.collectionStep = data.collectionStep + 1
setOpenSetData()
}
const setOpenSetData = ()=>{
if(data.openType)store.dispatch('setAllBoardData',{type:data.openType})
saveProject(data.openType)
const keys = Object.keys(dataDom);
const key = keys[data.collectionStep - 1];
data.openType = key
nextTick(()=>{
dataDom[key].openSetData()
})
}
return{
...toRefs(dataDom),
...toRefs(data),
cleardata,
init,
lastStep,
nextStep,
}
},
provide() {
@@ -125,6 +156,32 @@ export default defineComponent({
width: 100%;
height: 100%;
position: relative;
> .collection_page{
left: 50%;
transform: translateX(-50%);
bottom: -4rem;
display: flex;
position: absolute;
.fi-rr-arrow-small-left{
margin-right: calc(10rem*1.2);
}
.fi{
cursor: pointer;
display: flex;
height: 100%;
}
.fi::before{
padding: 5px;
border-radius: 50%;
color: rgba(0, 0, 0, 0.55);
border: solid 2px rgba(0, 0, 0, 0.25);
transition: 1s all;
}
.fi:hover.fi::before{
border: solid 2px rgba(0, 0, 0, 0.55);
color: rgba(0, 0, 0, 1);
}
}
.collectionBox{
width: 100%;
height: 100%;

View File

@@ -31,7 +31,6 @@
<span v-if="scaleImageList[scaleImageIndex]?.resultType == 'ToProductImage'">{{$t('ProductImg.MagicTools')}}</span>
<span v-if="scaleImageList[scaleImageIndex]?.resultType == 'Relight'">{{$t('ProductImg.relightingTool')}}</span>
</div>
<div v-show="scaleImageList[scaleImageIndex]?.resultType == 'ToProductImage'" class="productImg_content_item_title productImg_content_item_title_similarity">
<span>{{$t('ProductImg.Similarity')}}</span>
</div>
@@ -72,7 +71,7 @@
</a-slider>
<input type="number" readonly v-model="productimgBrightenValue">
</div>
<div class="input_border productImg_content_item_generate">
<div class="input_border productImg_content_item_generate" v-show="scaleImageList[scaleImageIndex]?.resultType != 'PoseTransfer'">
<div class="input_box">
<div class="input_box_btnBox">
<input
@@ -92,7 +91,37 @@
></textarea>
</div>
</div>
<div class="productImg_content_item_generate_btn input_border">
<div class="transferPose" v-show="scaleImageList[scaleImageIndex]?.resultType == 'PoseTransfer'">
<div class="head">
<div class="text">Choose pose</div>
</div>
<div class="imgBox" v-mousewheel>
<div class="item" v-for="item in poseList" @click="selectPose(item)">
<img :src="item.firstFrame"
alt=""
@mouseenter.stop="gifPlay($event,item)"
@mouseleave.stop="gifPause($event,item)"
>
<a-checkbox v-model:checked="item.isChecked"></a-checkbox>
</div>
</div>
</div>
<div class="generage_btn_box" style="margin-left: auto;">
<div class="generage_btn started_btn" v-show="!generateSuccess.productimgIsProductimg">
<i class="fi fi-bs-magic-wand" style="background-color: #000; font-size: 2.3rem; flex: 1;margin: 0;" @click="getPrductimg()"></i>
<div class="icon iconfont icon-xiala" v-show="scaleImageList[scaleImageIndex]?.resultType == 'PoseTransfer'" :class="{active:speedState}" @click.stop="openSpeed"></div>
<div class="content" v-show="speedState">
<div v-for="item in speedList" :key="item.value" :class="{active:item.value == speedData.value}" @click="setSpeed(item)" :title="item.title">{{ item.label }}</div>
</div>
</div>
<div class="generage_btn started_btn" v-show="generateSuccess.productimgIsProductimg && !generateSuccess.productimgRemProductimg">
<i class="fi fi-br-loading" ></i>
</div>
<div class="generage_btn started_btn" v-show="generateSuccess.productimgRemProductimg" @click="removeProductimg">
{{$t('Generate.Close')}}
</div>
</div>
<!-- <div class="productImg_content_item_generate_btn input_border">
<div class="input_box">
<div v-show="!generateSuccess.productimgIsProductimg" class="generage_btn started_btn" @click.stop="getPrductimg">
{{ $t('Generate.Generate') }}
@@ -104,16 +133,25 @@
{{$t('Generate.Close')}}
</div>
</div>
</div>
</div> -->
</div>
</div>
<div class="scaleImage_content_imgBox" :class="{active:isComparison}">
<img v-if="isComparison" :src="scaleImageList[scaleImageIndex]?.sourceUrl">
<img v-if="isComparison" :src="scaleImageList[scaleImageIndex]?.sourceUrl || generateSuccess?.productImage">
<div class="loadBox" v-show="generateSuccess">
<div class="load" v-show="generateSuccess.productimgIsProductimg">
<a-spin size="large" class="content_img_flex"></a-spin>
</div>
<img v-show="!generateSuccess.productimgIsProductimg" :src="generateSuccess?.newData?.designOutfitUrl || generateSuccess?.designOutfitUrl || generateSuccess?.url">
<div class="imgBox" v-show="!generateSuccess.productimgIsProductimg">
<img v-show="scaleImageList[scaleImageIndex]?.resultType !='PoseTransfer'" :src="generateSuccess?.newData?.designOutfitUrl || generateSuccess?.designOutfitUrl || generateSuccess?.url" alt="">
<img
v-show="scaleImageList[scaleImageIndex]?.resultType == 'PoseTransfer'"
:src="generateSuccess.newData?.firstFrameUrl || generateSuccess.firstFrameUrl"
alt=""
@mouseenter.stop="gifPlay($event,generateSuccess.newData || generateSuccess)"
@mouseleave.stop="gifPause($event,generateSuccess.newData || generateSuccess)"
>
</div>
</div>
<div class="img_operate_block" v-if="isLike">
@@ -148,7 +186,7 @@ import { defineComponent, h, ref ,toRefs,createVNode,reactive, computed} from "v
import { Https } from "@/tool/https";
import { Modal } from "ant-design-vue";
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import { downloadIamge } from "@/tool/util";
import { downloadIamge,getMinioUrl } from "@/tool/util";
import { useI18n } from "vue-i18n";
import { useStore } from "vuex";
import UpgradePlan from "@/component/HomePage/UpgradePlan.vue";
@@ -194,7 +232,39 @@ setup(props:any,{emit}) {
productimgRelightDirectionList:props.productData.RelightDirectionList,
selectObject:computed(()=>store.state.Workspace.probjects),//选择的项目
generateSuccess:null as any,//生成成功后返回的数据
poseList:[],
selectPose:null as any,
})
let speed = reactive({
speedList:[
{
title:'Generate high-quality images',
label:'High',
value:'',
},{
title:'Generate using Wanxiang',
label:'WX',
value:'wx',
},
],
speedState:false,
speedData:{
title:'Generate high-quality images',
label:'High',
value:'',
},
})
const openSpeed = ()=>{
speed.speedState = !speed.speedState
if(speed.speedState){
document.addEventListener('click',openSpeed)
}else{
document.removeEventListener('click',openSpeed)
}
}
const setSpeed = (item:any)=>{
speed.speedData = item
}
let scaleImage: any = ref(false);
let isShowMark = ref(false)
let loadingShow = ref(false)
@@ -226,11 +296,19 @@ setup(props:any,{emit}) {
elementId:scaleImageList.value[scaleImageIndex.value].designItemId || scaleImageList.value[scaleImageIndex.value].id,
elementType:'ToProductImage',
}
}else if(scaleImageList.value[scaleImageIndex.value]?.resultType == 'TransferPose'){
}else if(scaleImageList.value[scaleImageIndex.value]?.resultType == 'PoseTransfer'){
}
return obj
}
const getPoseTransformData = ()=>{
return {
poseId:productimg.selectPose,
projectId:productimg.selectObject.id,
productImage:getMinioUrl(scaleImageList.value[scaleImageIndex.value].sourceUrl),
modelName:speed.speedData.value,
}
}
let getPrductimg = ()=>{
let obj = getData()
let imageStrength = productimg.productimgSimilarity == 100? 95 :productimg.productimgSimilarity
@@ -250,18 +328,25 @@ setup(props:any,{emit}) {
let url = Https.httpUrls.relight
if(scaleImageList.value[scaleImageIndex.value]?.resultType == 'ToProductImage'){
url = Https.httpUrls.toProduct
}else if(scaleImageList.value[scaleImageIndex.value]?.resultType == 'TransferPose'){
}else if(scaleImageList.value[scaleImageIndex.value]?.resultType == 'PoseTransfer'){
url = Https.httpUrls.poseTransform
data = getPoseTransformData()
}
// setPrductimg([{taskId:"f785fbbf-425c-4d9b-b4d0-0f38f480c64e-83"}])
// return
productimg.generateSuccess.isShowMark = true
Https.axiosPost(url, data).then(
(rv) => {
productimg.generateSuccess.isShowMark = false
scaleImageList.value[scaleImageIndex.value].imgUrl = '/image/loading.gif'
let arr:any = []
rv.forEach((item:any)=>{
arr.push(item.taskId)
})
if(scaleImageList.value[scaleImageIndex.value]?.resultType != 'PoseTransfer'){
rv.forEach((item:any)=>{
arr.push(item.taskId)
})
}else{
arr.push(rv)
}
if(productimg.generateSuccess?.isIndex || productimg.generateSuccess?.isIndex == 0)emit('setGenerateAwait',{index:productimg.generateSuccess.isIndex,listType:productimg.generateSuccess.listType})
setPrductimg(arr)
productimg.isGenerate = true
@@ -300,14 +385,22 @@ setup(props:any,{emit}) {
let url = Https.httpUrls.relightResult
if(scaleImageList.value[scaleImageIndex.value]?.resultType == 'ToProductImage'){
url = Https.httpUrls.toProductImageResult
}else if(scaleImageList.value[scaleImageIndex.value]?.resultType == 'TransferPose'){
}else if(scaleImageList.value[scaleImageIndex.value]?.resultType == 'PoseTransfer'){
url = Https.httpUrls.poseTransformResult
data = {
taskId:dataList[0],
}
}
// url = Https.httpUrls.poseTransformResult
// data = {taskId:'f785fbbf-425c-4d9b-b4d0-0f38f480c64e-83'}
productimg.generateSuccess.prductimgTime = setInterval(()=>{
if(!state)return
state = false
Https.axiosPost(url, data).then(
(rv) => {
if(scaleImageList.value[scaleImageIndex.value]?.resultType == 'PoseTransfer'){
rv = [rv]
}
state = true
if(productimg.generateSuccess.productimgIsProductimg){//防止取消后有正在执行的获取状态
// generateProceedList = rv.filter((item:any)=>item.status != 'Success' && item.status != 'Fail' && item.status != 'Invalid')
@@ -316,6 +409,7 @@ setup(props:any,{emit}) {
// let id = productimg.generateSuccess?.designItemId || rv[0].id
// rv[0].id = id
// let listType = productimg.generateSuccess.listType
rv[0].sourceUrl = productimg.generateSuccess.sourceUrl
rv[0].designOutfitUrl = rv[0].url
productimg.generateSuccess.newData = rv[0]
if(productimg.generateSuccess?.scaleImage){
@@ -327,7 +421,7 @@ setup(props:any,{emit}) {
}else if(rv[0].status == 'Fail'){
isEnd = true
}
generateProceedList = data
generateProceedList = rv
if(isEnd){
store.state.store.dispatch('getCredits')
clearInterval(productimg.generateSuccess.prductimgTime)
@@ -351,7 +445,7 @@ setup(props:any,{emit}) {
delete productimg.generateSuccess.remPrductimgTime
delete productimg.generateSuccess.prductimgTime
});
},1000)
},scaleImageList.value[scaleImageIndex.value]?.resultType == 'PoseTransfer'?20000:1000)
}
let removeProductimg = ()=>{
productimg.generateSuccess.productimgIsProductimg = false
@@ -361,13 +455,20 @@ setup(props:any,{emit}) {
delete productimg.generateSuccess.productimgRemProductimg
delete productimg.generateSuccess.prductimgTime
if(generateProceedList){
// let str = generateProceedList.map((obj:any) => obj.taskId).join(',');
let str = generateProceedList.join(',')
// let str = generateProceedList.length > 1?generateProceedList.join(',')
let data = {
uniqueId:str,
uniqueId:generateProceedList,
userId:userDetail.value.userId,
type:scaleImageList.value[scaleImageIndex.value]?.resultType
}
if(scaleImageList.value[scaleImageIndex.value]?.resultType == 'PoseTransfer'){
// data = {
// uniqueId:data.waitList,
// userId:store.state.UserHabit.userDetail.userId,
// timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
// type: 'PoseTransferation'
// }
}
Https.axiosGet(Https.httpUrls.generateStopWaiting, {params:data}).then(
(rv) => {
generateProceedList = []
@@ -379,6 +480,7 @@ setup(props:any,{emit}) {
let setCove = ()=>{
let data = {
...JSON.parse(JSON.stringify(productimg.generateSuccess.newData)),
sourceUrl:productimg.generateSuccess.newData.sourceUrl || scaleImageList.value[scaleImageIndex.value].sourceUrl,
oldId:productimg.generateSuccess.id,
status:productimg.generateSuccess.status,
listType:productimg.generateSuccess.listType,
@@ -390,12 +492,25 @@ setup(props:any,{emit}) {
delete productimg.generateSuccess.listType
}
let setAdd = ()=>{
const getPoseList = ()=>{
Https.axiosGet(Https.httpUrls.getAllPose).then((rv)=>{
rv[0].isChecked = true
productimg.selectPose = rv[0]?.id || 1
productimg.poseList = rv
})
}
const gifPlay = (e:any,item:any)=>{
e.target.src = item.gif || item.gifUrl//使用gif图片
}
const gifPause = (e:any,item:any)=>{
e.target.src = item.firstFrame || item.firstFrameUrl//静态图片
}
return {
t,
...toRefs(productimg),
...toRefs(speed),
openSpeed,
setSpeed,
scaleImage,
isShowMark,
loadingShow,
@@ -410,7 +525,9 @@ setup(props:any,{emit}) {
getPrductimg,
removeProductimg,
setCove,
setAdd,
getPoseList,
gifPlay,
gifPause,
};
},
data() {
@@ -455,6 +572,9 @@ methods: {
this.generateSuccess.remPrductimgTime = this.generateSuccess.remPrductimgTime?this.generateSuccess.remPrductimgTime:null
this.generateSuccess.prductimgTime = this.generateSuccess.prductimgTime?this.generateSuccess.prductimgTime:null
this.scaleImage = true
if(this.poseList.length == 0){
this.getPoseList()
}
// if(status == 'edit'){
// this.generateSuccess = {
// ...list[index],
@@ -635,6 +755,7 @@ overflow: visible !important;
margin-bottom: 6rem;
}
}
.scaleImage_content{
display: flex;
justify-content: center;
@@ -647,7 +768,7 @@ overflow: visible !important;
left: 0;
z-index: 9;
.productImg_left{
width: 100%;
width: 24rem;
display: flex;
height: 100%;
flex-direction: column;
@@ -665,6 +786,45 @@ overflow: visible !important;
justify-content: space-around;
margin-top: 0;
}
.transferPose{
display: flex;
flex-direction: column;
> .imgBox{
flex: 1;
max-height: 45rem;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-between;
width: 100%;
overflow: hidden;
overflow-x: auto;
> .item{
margin-right: 1rem;
width: calc(100% / 1.2 - .5rem);
cursor: pointer;
overflow: hidden;
display: flex;
justify-content: center;
flex-shrink: 0;
height: 25rem;
position: relative;
:deep(.ant-checkbox-wrapper){
position: absolute;
top: 2rem;
right: 2rem;
}
> img{
width: 80%;
object-fit: contain;
}
}
> .upload_item{
border: none;
}
}
}
.productImg_content_item_similarity{
padding-bottom: 2.4rem;
display: flex;
@@ -692,6 +852,9 @@ overflow: visible !important;
min-width: 40rem;
align-items: center;
justify-content: center;
> .imgBox{
height: 100%;
}
}
img{

View File

@@ -103,6 +103,11 @@
likeDesignCollectionList,
'like'
)">
<img class="content_img"
v-if="design.resultType == 'PoseTransfer'"
:src="design.firstFrameUrl" alt=""
@mouseenter.stop="gifPlay($event,design)"
@mouseleave.stop="gifPause($event,design)" >
<img class="content_img" v-show="!design?.generateAwait" :src="design.designOutfitUrl||design.url"
:key="design.designOutfitUrl" designType="like" :index="index"/>
<a-spin v-show="design?.generateAwait" size="large"></a-spin>
@@ -115,7 +120,7 @@
<div class="icon iconfont icon-jushoucanggift icon_like">
</div>
</div>
<div class="item" v-show="design.resultType == 'ToProductImage'" @click="setEditDesignType(likeDesignCollectionList,index,'TransferPose','add','like')">
<div class="item" v-show="design.resultType == 'ToProductImage'" @click="setEditDesignType(likeDesignCollectionList,index,'PoseTransfer','add','like')">
<div class="text">Transfer Pose</div>
<div class="icon iconfont icon-jushoucanggift icon_like"></div>
</div>
@@ -168,6 +173,11 @@
designCollectionList,
'disLike'
)">
<img class="content_img"
v-if="design.resultType == 'PoseTransfer'"
:src="design.firstFrameUrl" alt=""
@mouseenter.stop="gifPlay($event,design)"
@mouseleave.stop="gifPause($event,design)" >
<img class="content_img" v-show="!design?.generateAwait" :src="design.designOutfitUrl || design.url" designType="disLike" :index="index"/>
<a-spin v-show="design?.generateAwait" size="large"></a-spin>
</div>
@@ -179,7 +189,7 @@
<div class="icon iconfont icon-jushoucang icon_like">
</div>
</div>
<div class="item" v-show="design.resultType == 'ToProductImage'" @click="setEditDesignType(designCollectionList,index,'TransferPose','add','disLike')">
<div class="item" v-show="design.resultType == 'ToProductImage'" @click="setEditDesignType(designCollectionList,index,'PoseTransfer','add','disLike')">
<div class="text">Transfer Pose</div>
<div class="icon iconfont icon-jushoucanggift icon_like"></div>
</div>
@@ -647,8 +657,8 @@ export default defineComponent({
index: posiitonData.value.generateElList.length,
userLikeSortId:value.designItemId||value.id
});
setDesignItemStyle()
}
setDesignItemStyle()
setSystemDesigner(100)
// moveItem('disLike');
})
@@ -704,6 +714,7 @@ export default defineComponent({
dataDom.editDesignType.isComparison = true
}
const addGenerateImg = (data:any)=>{
console.log(data)
if(!data.id)return
let obj = {
id:data.id,
@@ -716,6 +727,8 @@ export default defineComponent({
elementId:data.elementId,
elementType:data.elementType,
userGroupId:data.userGroupId || data.id,
firstFrameUrl:data.firstFrameUrl,
gifUrl:data.gifUrl,
}
let list = []
if(data.listType == 'disLike'){
@@ -760,13 +773,29 @@ export default defineComponent({
let data = {
toProductImageResultId:[(design.designItemId || design.id)],
projectId: store.state.Workspace.probjects.id,
}
} as any
let params = {} as any
if(type == 'ToProductImage' || type == 'Relight'){
if(str == 'like'){
url = Https.httpUrls.productImageLike
}else{
url = Https.httpUrls.productImageUnLike
}
}else if(type == 'PoseTransfer'){
url = Https.httpUrls.poselikeOrDisike
if(str == 'like'){
params = {
likeOrDislike:'like',
transformedId:design.id,
projectId:store.state.Workspace.probjects.id,
}
}else{
params = {
likeOrDislike:'dislike',
transformedId:design.id,
projectId:store.state.Workspace.probjects.id,
}
}
}else{
if(str == 'like'){
url = Https.httpUrls.productImageLike
@@ -775,7 +804,7 @@ export default defineComponent({
}
}
designData.likeLoading = true;
Https.axiosPost(url, data).then(
Https.axiosPost(url, data,{params:params.likeOrDislike?params:''}).then(
(rv) => {
if(str == 'like'){
let value:any = {
@@ -863,6 +892,12 @@ export default defineComponent({
list[data.index].generateAwait = true;
}
const gifPlay = (e:any,item:any)=>{
e.target.src = item.gif || item.gifUrl//使用gif图片
}
const gifPause = (e:any,item:any)=>{
e.target.src = item.firstFrame || item.firstFrameUrl//静态图片
}
return {
store,
...toRefs(editDesignType),
@@ -915,6 +950,8 @@ export default defineComponent({
setNoDesignLike,
upDataLikeListType,
setGenerateAwait,
gifPlay,
gifPause,
};
},
data() {
@@ -985,6 +1022,12 @@ export default defineComponent({
}
});
this.observerData.observer.observe(this.$refs.rightContentBlockBox);
if(this.designCollectionList?.length > 0){
nextTick(()=>{
this.setDesignItemStyle()
this.setShowHide('recycleDomHidden')
})
}
},
directives:{
mousewheel:{
@@ -1743,7 +1786,8 @@ export default defineComponent({
.designPage_left_content {
height: 100%;
width: 55rem;
width: 50rem;
// width: 55rem;
overflow: hidden;
// transition: all .3s;
padding-right: 1.2rem;
@@ -1804,7 +1848,7 @@ export default defineComponent({
color: #fff;
flex-direction: column;
&.active{
right: 43rem;
right: 53rem;
transform: translate(0, -50%);
}
}
@@ -1862,7 +1906,7 @@ export default defineComponent({
margin-left: 2rem;
}
.right_content_body {
width: 45rem;
width: 55rem;
// width: 55rem;
.right_content_img_block{
@@ -1986,11 +2030,9 @@ export default defineComponent({
}
}
.content_img {
// max-width: 100%;
width: 100%;
height: 100%;
// max-height: 100%;
object-fit: contain;
// object-fit: contain;
object-fit: cover;
}
.btn{

View File

@@ -7,7 +7,7 @@
<router-view v-if="(openType && openType != 'history' && !routeQuery.id) || $route.path != '/home'" @setTask="setTask">
</router-view>
<div v-else-if="routeQuery.id || openType == 'history'" class="function">
<design ref="design"></design>
<design :key="componentKey" ref="design"></design>
</div>
<div v-else class="function">
<newPorject ref="newPorject" @newProject=newProject></newPorject>
@@ -38,6 +38,7 @@ export default defineComponent({
const route = useRoute()
const data = reactive({
openType:'',
componentKey:null,
isShowMark:false,
routeQuery:{} as any,
selectObject:computed(()=>store.state.Workspace.probjects) as any,//选择的项目
@@ -57,6 +58,7 @@ export default defineComponent({
watch(() => route.query,
(query:any, oldQuery:any) => {
data.routeQuery = query
if(query.history)data.componentKey = query.history
const key = Object.keys(query)?.[0]
if(key){
data.openType = Object.keys(query)[0]
@@ -66,11 +68,14 @@ export default defineComponent({
}
// if((query.history || query.id) != (oldQuery.history || oldQuery.id)){
// }
if(query.history && query.history != query.history){
}
nextTick(()=>{
if(query.history || query.id){
if(data.openType == 'tools')data.isShowMark = true
data.dataLoad = true
createData()
if(query?.source != 'batch')createData()
if(query.type == 'Works'){
getWorks(query.id || query.history)
}else{
@@ -268,6 +273,9 @@ export default defineComponent({
dataDom.design.openSetData()
})
}
}).catch(()=>{
data.isShowMark = false
data.dataLoad = false
})
}
const getCanvasData = (str:any)=>{

View File

@@ -63,7 +63,7 @@
</div>
</div>
</div>
<div class="generate input_border">
<div class="generage_btn_box" style="margin-left: auto;">
<!-- <div class="generage_btn started_btn" v-show="!isGenerate" @click="getgenerate">
{{ $t('Generate.Generate') }}
</div> -->

View File

@@ -16,7 +16,7 @@
<poseTransfer v-if="openType == 'poseTransfer'" ref="poseTransfer"></poseTransfer>
<deReconstruction v-if="openType == 'deReconstruction'" ref="deReconstruction"></deReconstruction>
<patternMaking3D v-if="openType == 'patternMaking3D'" ref="patternMaking3D"></patternMaking3D>
<canvasUpload v-if="openType == 'canvasUpload'" ref="canvasUpload" :config="editorConfig"></canvasUpload>
<canvasUpload v-if="openType == 'canvasUpload'" ref="canvasUpload" :config="ceditorConfig"></canvasUpload>
</div>
</div>
</template>

View File

@@ -37,10 +37,10 @@
<span :title="childItem.name" v-show="!childItem.editName">{{ childItem.name }}</span>
<textarea v-model="historyData.historyTextarea" v-show="childItem.editName" @click.stop></textarea>
</div>
<div class="type">{{ childItem.process.replace('_', ' ').toLowerCase().replace(/\b\w/g, char => char.toUpperCase()) }}</div>
<div class="type">{{ childItem.process.replace(/_/g, ' ').toLowerCase().replace(/\b\w/g, char => char.toUpperCase()) }}</div>
<div class="time">{{ childItem.updateTime.replace('T', ' ') }}</div>
<div class="btn">
<i class="fi fi-br-menu-dots-vertical" v-show="!childItem.editName" @click.stop="editHistory(childItem,index,$event)"></i>
<i class="fi fi-br-menu-dots-vertical" v-show="!childItem.editName" @click.stop="editHistory(childItem,index,$event,item.list)"></i>
<i class="fi fi-br-check" v-show="childItem.editName" @click.stop="accomplishHistory(childItem,index,$event)"></i>
<div class="operation" v-show="historyData.selectHistoryIndex == index">
<div class="item" @click.stop="editName(childItem)">
@@ -543,7 +543,7 @@ export default defineComponent({
homeMainData.historyData.isNoData = true
});
}
const editHistory = (item,index,el)=>{
const editHistory = (item,index,el,list)=>{
if(homeMainData.historyData.selectHistoryIndex == -1){
let top = el.target.parentNode.parentNode.getBoundingClientRect().top
let parentTop = el.target.parentNode.parentNode.parentNode.offsetTop
@@ -551,6 +551,10 @@ export default defineComponent({
let operation = el.target.parentNode.querySelector('.operation')
homeMainData.historyData.selectHistoryIndex = index
//判断弹窗是加载按钮上面还是下面
if(list.length == 1){
operation.classList.add('activeLeft')
return
}
if((parentTop+parentHeight)/2 < top){//加在按钮上面
operation.classList.add('active')
}else{
@@ -1087,6 +1091,10 @@ export default defineComponent({
top: auto;
bottom: 3rem;
}
&.activeLeft{
bottom: 0;
right: 3rem;
}
> .item{
padding: .8rem;
color: #52525b;