Files
aida_front/src/component/HomePage/collectionModal.vue

406 lines
12 KiB
Vue
Raw Normal View History

2023-01-06 16:00:15 +08:00
<template>
<div v-if="showCollectionModal">
2023-11-23 15:31:40 +08:00
<a-modal class="modal_component collection_modal Guide_1_2"
2023-01-06 16:00:15 +08:00
v-model:visible="showCollectionModal"
:footer="null"
2023-09-25 10:09:00 +08:00
width="65%"
2023-01-06 16:00:15 +08:00
:maskClosable="false"
:centered="true"
2023-08-05 12:52:56 +08:00
:closable="false"
2023-10-20 17:21:45 +08:00
wrapClassName="#app"
2023-11-28 16:21:00 +08:00
:keyboard="false"
2023-01-06 16:00:15 +08:00
>
2023-08-05 12:52:56 +08:00
<div class="collection_title">
<div class="collection_title_text">
2023-10-30 17:26:36 +08:00
<div v-show="collectionStep === 1">{{ $t('collectionModal.Moodboard') }}</div>
<div v-show="collectionStep === 2">{{ $t('collectionModal.Printboard') }}</div>
<div v-show="collectionStep === 3">{{ $t('collectionModal.Colorboard') }}</div>
<div v-show="collectionStep === 4">{{ $t('collectionModal.Sketchboard') }}</div>
2023-08-23 17:50:09 +08:00
<!-- <div v-show="collectionStep === 5">Markets Sketch</div> -->
2023-10-31 16:04:40 +08:00
<div class="collection_title_text_intro" v-show="collectionStep === 1">{{ $t('collectionModal.MoodCollection') }}</div>
<div class="collection_title_text_intro" v-show="collectionStep === 2">{{ $t('collectionModal.PrinCollection') }}</div>
<div class="collection_title_text_intro" v-show="collectionStep === 3">{{ $t('collectionModal.ColorCollection') }}</div>
<div class="collection_title_text_intro" v-show="collectionStep === 4">{{ $t('collectionModal.SketchCollection') }}</div>
2023-08-05 12:52:56 +08:00
</div>
2023-10-20 17:21:45 +08:00
<div class="collection_progress">
<a-progress :strokeWidth= 13 strokeColor="#341e57" type="circle" :percent="collectionStep*25" :format="percent => `${collectionStep}/4`" />
2023-08-05 12:52:56 +08:00
</div>
</div>
2023-11-23 15:31:40 +08:00
<div class="collection_closeIcon" :class="[driver__.driver?'hideEvents':'']">
2023-08-05 12:52:56 +08:00
<!-- <div class="header_right_block" @click.stop="">
<div class="header_cancel_button" >Cancel</div>
</div> -->
2023-11-23 15:31:40 +08:00
<i class="fi fi-rr-cross-small" @click.stop="cancelDsign()"></i>
2023-08-05 12:52:56 +08:00
</div>
2023-11-23 11:15:10 +08:00
<div class="collection_page" :class="[driver__.driver?'hideEvents':'']">
2023-08-05 12:52:56 +08:00
<!-- <div v-if="collectionStep < 5" class="next_step_button" @click.stop="nextStep()">Next Step</div> -->
<!-- <div v-else class="next_step_button" @click.stop="finishCollection()">Finish</div> -->
<i v-show="collectionStep > 1" class="fi fi-rr-arrow-small-left" @click="lastStep()"></i>
2023-11-23 15:31:40 +08:00
<i v-if="collectionStep < 4" class="fi fi-rr-arrow-small-right Guide_1_8" @click.stop="nextStep()"></i>
2023-08-23 17:50:09 +08:00
<!-- <i v-else class="fi fi-rr-arrow-small-right" @click.stop="finishCollection()"></i> -->
2023-11-23 15:31:40 +08:00
<i v-else class="fi fi-rr-check Guide_1_14" @click.stop="finishCollection()"></i>
2023-08-05 12:52:56 +08:00
<!-- <span class="icon iconfont icon-fanhui header_icon_fanhui" @click="lastStep()"></span> -->
</div>
2023-01-06 16:00:15 +08:00
<div class="collection_modal_body">
<MoodboardUpload ref="MoodboardUpload" v-show="collectionStep === 1"></MoodboardUpload>
<PrintboardUpload ref="PrintboardUpload" v-show="collectionStep === 2"></PrintboardUpload>
<ColorboardUpload ref="ColorboardUpload" v-show="collectionStep === 3"></ColorboardUpload>
<SketchboardUpload ref="SketchboardUpload" v-show="collectionStep === 4"></SketchboardUpload>
2023-08-23 17:50:09 +08:00
<!-- <MarketingSketchUpload ref="MarketingSketchUpload" v-show="collectionStep === 5"></MarketingSketchUpload> -->
2023-01-06 16:00:15 +08:00
</div>
2023-11-24 16:18:44 +08:00
<div class="mark_loading" v-show="isShowMark">
<a-spin size="large" />
</div>
2023-01-06 16:00:15 +08:00
</a-modal>
</div>
</template>
<script lang="ts">
2023-11-23 11:15:10 +08:00
import { defineComponent ,createVNode, ref, computed,provide } from 'vue'
2023-08-05 12:52:56 +08:00
import Generate from '@/component/HomePage/Generate.vue'
2023-01-06 16:00:15 +08:00
import MoodboardUpload from '@/component/HomePage/MoodboardUpload.vue'
import PrintboardUpload from '@/component/HomePage/PrintboardUpload.vue'
import ColorboardUpload from '@/component/HomePage/ColorboardUpload.vue'
import SketchboardUpload from '@/component/HomePage/SketchboardUpload.vue'
import MarketingSketchUpload from '@/component/HomePage/MarketingSketchUpload.vue'
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import { Modal,message } from 'ant-design-vue';
2023-11-24 16:18:44 +08:00
import { Https } from "@/tool/https";
2023-01-06 16:00:15 +08:00
import {useStore} from 'vuex'
2023-11-23 11:15:10 +08:00
import { openGuide,driverObj__ } from "@/tool/guide";
2023-09-25 10:09:00 +08:00
import GO from "@/tool/GO";
2023-10-30 17:26:36 +08:00
import { useI18n } from 'vue-i18n'
2023-01-06 16:00:15 +08:00
export default defineComponent({
components:{
2023-08-05 12:52:56 +08:00
Generate,
2023-01-06 16:00:15 +08:00
MoodboardUpload,
PrintboardUpload,
ColorboardUpload,
SketchboardUpload,
MarketingSketchUpload
},
2023-11-22 15:41:46 +08:00
setup(){
const store = useStore()
2023-10-30 17:26:36 +08:00
let {t} = useI18n()
2023-11-23 11:15:10 +08:00
let driver__:any = computed(()=>{
return store.state.Guide.guide
})
2023-12-11 14:30:16 +08:00
let workspace:any = computed(()=>{
return store.state.Workspace.workspace
})
2023-11-23 11:15:10 +08:00
provide('driver__',driver__)
2023-11-24 16:18:44 +08:00
let isShowMark = ref(false)
2023-10-30 17:26:36 +08:00
return {
2023-11-23 11:15:10 +08:00
driver__,
2023-12-11 14:30:16 +08:00
workspace,
2023-10-30 17:26:36 +08:00
t,
2023-11-24 16:18:44 +08:00
isShowMark,
2023-10-30 17:26:36 +08:00
}
},
2023-11-22 15:41:46 +08:00
2023-01-06 16:00:15 +08:00
data(){
return{
showCollectionModal:false,
collectionStep:1,
store:useStore()
}
},
methods:{
nextStep(){
2023-11-16 17:23:17 +08:00
let colorBoards = this.store.state.UploadFilesModule.colorBoards
2023-09-25 10:09:00 +08:00
if(this.collectionStep == 1){
let disposeMoodboard = this.store.state.UploadFilesModule.disposeMoodboard
let moodboard = this.store.state.UploadFilesModule.moodboard
if(moodboard.length > 1){
if (!disposeMoodboard || disposeMoodboard.length == 0) {
2023-11-16 17:23:17 +08:00
message.info(this.$t('collectionModal.jsContent1'))
2023-09-25 10:09:00 +08:00
return
}
}
2023-11-16 17:23:17 +08:00
}
if(this.collectionStep == 3){
if(colorBoards.length >= 1){
}else{
message.info(this.$t('collectionModal.jsContent3'))
return
}
2023-09-25 10:09:00 +08:00
}
2023-11-23 15:42:36 +08:00
if(this.driver__.driver){
driverObj__.moveNext()
}
2023-11-16 17:23:17 +08:00
this.collectionStep = this.collectionStep + 1
2023-01-06 16:00:15 +08:00
},
lastStep(){
this.collectionStep = this.collectionStep - 1
},
changeCollectionModal(type:boolean){
this.showCollectionModal = type
},
recollection(){
setTimeout(()=>{
2023-08-23 17:50:09 +08:00
let childredCom = ['MoodboardUpload','PrintboardUpload','ColorboardUpload','SketchboardUpload']
// let childredCom = ['MoodboardUpload','PrintboardUpload','ColorboardUpload','SketchboardUpload','MarketingSketchUpload']
2023-01-06 16:00:15 +08:00
for(let child of childredCom){
let childRef:any = this.$refs[child]
childRef.recollection()
}
},200)
},
//取消
cancelDsign(){
let _this = this
Modal.confirm({
2023-10-30 17:26:36 +08:00
title: this.$t('collectionModal.jsContent2'),
2023-01-06 16:00:15 +08:00
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
2023-08-05 12:52:56 +08:00
mask:false,
2023-11-27 16:25:32 +08:00
centered:true,
2023-01-06 16:00:15 +08:00
onOk() {
2023-09-25 10:09:00 +08:00
GO.id = 0
2023-01-06 16:00:15 +08:00
_this.showCollectionModal = false
_this.store.commit('clearAllData')
_this.collectionStep = 1
}
});
},
2023-12-11 14:30:16 +08:00
isPin(list:any){
this.workspace
let numTop = 0
let numBottom = 0
let top:any
let bottom:any
if(this.workspace.sexEnum.name == "Female"){
top = ['Outwear','Blouse']
bottom = ['Dress','Trousers','Skirt']
}else{
top = ['Outwear','Tops']
bottom = ['Bottoms']
}
console.log(this.workspace);
2023-01-06 16:00:15 +08:00
2023-12-11 14:30:16 +08:00
list.forEach((item:any,index:number) => {
console.log(item);
top.forEach((positionItem:any) => {
if(item.category == positionItem && item.pin){
numTop++
}else{
numBottom++
}
});
});
if(numTop >= 8 || numBottom >= 8){
// message.warning(this.t('SketchboardUpload.jsContent1'));
return
}
},
2023-01-06 16:00:15 +08:00
//完成
finishCollection(){
2023-11-24 16:18:44 +08:00
this.isShowMark = true
let sketchList = this.store.state.UploadFilesModule.sketchboard
let arr:any = []
sketchList.forEach((item:any) => {
let obj = {
designType:item.resData.designType,
2023-11-29 09:56:48 +08:00
isPin:item.pin ? 1 : 0,
2023-11-24 16:18:44 +08:00
level2Type:item.category,
2023-11-29 09:56:48 +08:00
sketchBoardId:item.id?item.id:item.resData.id
2023-11-24 16:18:44 +08:00
}
arr.push(obj)
});
let data = {sketchBoards:arr}
2023-12-11 14:30:16 +08:00
// console.log(this.position);
this.isPin(sketchList)
2023-11-27 11:11:07 +08:00
let elList = document.querySelectorAll('.img_block_item_sketch img')
Https.axiosPost(Https.httpUrls.sketchBoardsBoundingBox, data)
.then((rv: any) => {
this.isShowMark = false
this.store.commit('clearAllId')
2023-11-29 09:56:48 +08:00
this.store.commit('setShowSketchboard',rv)
2023-11-27 11:11:07 +08:00
GO.id = 0
this.showCollectionModal =false
this.collectionStep = 1
this.$emit('finishCollection')
if(this.driver__.driver){
driverObj__.moveNext()
}
})
.catch((res) => {
2023-11-27 16:25:32 +08:00
this.isShowMark = false
2023-11-27 11:11:07 +08:00
});
2023-11-23 15:54:02 +08:00
2023-11-24 16:18:44 +08:00
2023-01-06 16:00:15 +08:00
}
}
})
</script>
<style lang="less" scoped>
.collection_modal{
2023-08-05 12:52:56 +08:00
// max-width: 120rem;
.collection_title,.collection_closeIcon,.collection_page{
position: absolute;
}
.collection_title{
top: 4rem;
display: flex;
2023-11-27 16:25:32 +08:00
font-size: var(--aida-fsize2);
2023-08-05 12:52:56 +08:00
font-weight: 900;
color: rgba(0,0,0,.65);
2023-10-30 17:26:36 +08:00
z-index: 2;
2023-08-05 12:52:56 +08:00
align-items: center;
2023-10-20 17:21:45 +08:00
.collection_progress{
width: 8rem;
height: 8rem;
>div{
width: 100% !important;
height: 100% !important;
:deep(.ant-progress-inner){
width: 100% !important;
height: 100% !important;
}
}
}
2023-08-05 12:52:56 +08:00
.collection_title_text{
margin-right: 4rem;
}
.collection_title_text_intro{
2023-11-27 16:25:32 +08:00
font-size: var(--aida-fsize1-4);
2023-08-05 12:52:56 +08:00
font-weight: 400;
color: rgba(0,0,0,.45);
}
2023-09-25 10:09:00 +08:00
2023-08-05 12:52:56 +08:00
}
.collection_closeIcon{
top: 2rem;
right: 2rem;
cursor: pointer;
width: 4rem;
height: 4rem;
display: flex;
align-items: center;
justify-content: center;
.fi-rr-cross-small::before{
padding: .2rem;
border-radius: 5px;
border: solid 2px rgba(0, 0, 0, 0.25);
transition: 1s all;
color: rgba(0, 0, 0, 0.55);
}
&.collection_closeIcon:hover .fi-rr-cross-small::before{
border: solid 2px rgba(0, 0, 0, 0.55);
color: rgba(0, 0, 0, 1);
}
}
.collection_page{
left: 50%;
transform: translateX(-50%);
bottom: 3rem;
2023-11-23 11:15:10 +08:00
display: flex;
2023-08-05 12:52:56 +08:00
.fi-rr-arrow-small-left{
margin-right: 10rem;
}
.fi{
cursor: pointer;
2023-11-23 11:15:10 +08:00
display: flex;
height: 100%;
2023-08-05 12:52:56 +08:00
}
.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);
}
}
2023-01-06 16:00:15 +08:00
.header_icon_fanhui{
margin-right: 1rem;
font-size: 2rem;
cursor: pointer;
}
.header_right_block{
display: flex;
align-items: center;
position: absolute;
right: 2.1rem;
height: 100%;
.next_step_button{
padding: 0 1.2rem;
height: 3.2rem;
background: #343579;
font-size: 1.4rem;
color: #FFFFFF;
line-height: 3.2rem;
margin-right: 1.6rem;
white-space: nowrap;
cursor: pointer;
}
.header_cancel_button{
padding: 0 2.1rem;
height: 3.2rem;
background: #E4E5EB;
font-size: 1.4rem;
color: #030303;
line-height: 3.2rem;
white-space: nowrap;
cursor: pointer;
}
}
.collection_modal_body{
height: 100%;
2023-08-21 10:55:39 +08:00
background-color: #fff;
2023-01-06 16:00:15 +08:00
}
}
</style>
2023-08-05 12:52:56 +08:00
<style lang="less">
2023-09-12 10:11:27 +08:00
.collection_modal,.layout_modal{
2023-08-21 10:55:39 +08:00
// max-width: 1200px ;
2023-09-25 10:09:00 +08:00
// max-width: 1150px ;
2023-08-05 12:52:56 +08:00
.ant-modal-content{
2023-10-20 17:21:45 +08:00
border-radius: 1rem;
2023-08-05 12:52:56 +08:00
overflow: hidden;
.ant-modal-header{
background-color: #fff;
border-bottom: none;
}
.ant-modal-body{
padding: 8rem 5rem !important;
2023-08-21 10:55:39 +08:00
// height: calc(65vh - 6.4rem);
2023-08-23 17:50:09 +08:00
height: 65rem;
2023-08-05 12:52:56 +08:00
}
2023-09-25 10:09:00 +08:00
//进度完成字体颜色
.ant-progress-circle.ant-progress-status-success .ant-progress-text{
color: #000;
}
.ant-progress-circle .ant-progress-text{
color:rgba(0, 0, 0, 0.55);
2023-10-20 17:21:45 +08:00
font-size: 1.6rem;
2023-09-25 10:09:00 +08:00
}
2023-08-05 12:52:56 +08:00
}
}
2023-10-20 17:21:45 +08:00
// .ant-progress-circle .ant-progress-inner{
// width: 8rem !important;
// height: 8rem !important;
// }
2023-08-05 12:52:56 +08:00
</style>