2023-11-28-用户指引功能

This commit is contained in:
X1627315083
2023-11-28 16:21:00 +08:00
parent d206509d93
commit 1987ed7f15
26 changed files with 658 additions and 212 deletions

View File

@@ -2,11 +2,13 @@
<div>
<!-- designDetailShow -->
<a-modal class="design_detail_modal_component Guide_1_18"
:class="[driver__.driver?'hideEvents':'']"
v-model:visible="designDetailShow"
:footer="null"
width="65%"
:maskClosable="false"
:centered="true"
:keyboard="false"
:closable="false"
>
<div class="design_title_text">
@@ -58,11 +60,11 @@
<i v-show="revocationShow>1" class="icon iconfont icon-chehui" @click="revocation"></i>
<i v-show="oppositeRevocationShow>=1" class="icon iconfont icon-fanchehui" @click="oppositeRevocation"></i>
</div>
<div v-show="ifSubmit" class="subitOkPreviewBtn" @click="submit">
<div v-show="ifSubmit" class="subitOkPreviewBtn Guide_1_26" @click="submit">
{{ $t('DesignDetail.Submit') }}
</div>
</div>
<div class="detail_modal_body_category Guide_1_20" :class="[driver__.driver?'hideEvents':'']">
<div class="detail_modal_body_category">
<div v-show="designOrder" class="detail_modal_right_top scroll_style">
<div class="clothes_detail_item clothes_detail_item_apparel">
<div class="clothes_item_header">
@@ -72,7 +74,7 @@
</div>
<img :src="designItemDetail?.clothes?.[currentIndex]?.path" alt="" class="centent" @click="openCurrent(1)">
</div>
<div class="clothes_detail_item clothes_detail_item_print">
<div class="clothes_detail_item clothes_detail_item_print Guide_1_20" :class="[driver__.driver?'showEvents':'']">
<div class="clothes_item_header">
<i class="fi fi-rs-comments"></i>
<div>{{ $t('DesignDetail.CurrentPrint') }}</div>
@@ -294,6 +296,11 @@ export default defineComponent({
let DesignDetailAlter:any = this.$refs.DesignDetailAlter
DesignDetailAlter.init(num)
if(num ==2 ){
if(this.driver__.driver){
nextTick().then(()=>{
driverObj__.moveNext();
})
}
}
},
@@ -569,7 +576,11 @@ export default defineComponent({
this.closeModal()
this.store.commit('setDesignCollectionList',designCollectionList)
this.store.commit('setLikeDesignCollectionList',likeDesignCollectionList)
if(this.driver__.driver){
nextTick().then(()=>{
driverObj__.moveNext();
})
}
}
).catch(res=>{
this.loadingShow = false
@@ -651,6 +662,7 @@ export default defineComponent({
},
clothesOpen(index:any){
this.clothesDetail('',index)
},
clothesOpenActive(index:any){
this.designItemDetail.clothes.forEach((item:any)=>{
@@ -688,6 +700,11 @@ export default defineComponent({
this.store.commit('setDesignPreviewData',data)
let DesignDetailAlter:any = this.$refs.DesignDetailAlter
DesignDetailAlter.changePlace()
if(this.driver__.driver){
nextTick().then(()=>{
driverObj__.moveNext();
})
}
},
//重新设计
redesignItem(){
@@ -852,6 +869,7 @@ export default defineComponent({
position: relative;
height: 80%;
display: inline-block;
width: 100%;
.detail_modal_model{
z-index: 1;
position: relative;

View File

@@ -12,8 +12,8 @@
</div>
<div
@click.stop="open(2)"
class="switch_type_item"
:class="[openClick == 2 ? 'select_swtich' : '']"
class="switch_type_item Guide_1_21"
:class="[openClick == 2 ? 'select_swtich' : '',driver__.driver?'showEvents':'']"
>
<span>{{ $t('DesignDetailAlter.Library') }}</span>
</div>
@@ -96,7 +96,7 @@
</div>
</div>
</div>
<div v-show="openClick == 2" class="detail_Library_item">
<div v-show="openClick == 2" class="detail_Library_item Guide_1_22" :class="[driver__.driver?'showEvents':'']">
<div class="material_content_body scroll_style">
<div class="content_img_item" v-for="(file) in clothesList" :key="file.id" :class="{active:selectCode !== 'Moodboard'}">
<div class="content_img_item_block" :class="{active:file?.checked}">
@@ -267,6 +267,7 @@ import { Sketch, Chrome} from '@ans1998/vue3-color'
import {getUploadUrl,rgbToHsv} from '@/tool/util'
import DesignDetailEnd from './DesignDetailEnd.vue';
import { getCookie } from "@/tool/cookie";
import { openGuide,driverObj__ } from "@/tool/guide";
import { useI18n } from 'vue-i18n';
export default defineComponent({
props: ["msg"],
@@ -278,6 +279,7 @@ export default defineComponent({
let type_ = ref(1);
let select = ref(false);
let current = inject('current')//父组件传过来的数据
let driver__ = inject('driver__')//父组件传过来的数据
let openClick = ref(1);
let searchPictureName = ref('')
//模型印花
@@ -324,6 +326,7 @@ export default defineComponent({
selectColor,
selectColorList,
workspace,
driver__,
t,
}
},
@@ -638,6 +641,11 @@ export default defineComponent({
minIOPath:imgData.minIOPath,
path:imgData?.url
}]
if(this.driver__.driver){
nextTick().then(()=>{
driverObj__.moveNext();
})
}
// console.log(this.current.printObject,imgData);
}
@@ -672,6 +680,11 @@ export default defineComponent({
this.openClick = num;
if(num ==2 ){
this.getLibraryList()
if(this.driver__.driver){
nextTick().then(()=>{
driverObj__.moveNext();
})
}
}
},
@@ -1417,7 +1430,11 @@ export default defineComponent({
flex-direction: row-reverse;
.vc-chrome-color-wrap{
// width: 3.6rem;
margin-left: 2rem;
width: auto;
.vc-chrome-active-color{
border-radius: 50%;
}
.vc-chrome-active-color,.vc-checkerboard{
width: 3rem;
height: 3rem;

View File

@@ -85,7 +85,7 @@
</div>
</div>
<div v-show="type_ == 1 || type_ == 3" @click.stop="setPreview" class="subitOkPreviewBtn">{{ $t('DesignDetailEnd.preview') }}</div>
<div v-if="type_ == 2 && current?.printObject?.prints?.[0]?.path != null" @click.stop="setPrint" class="subitOkPreviewBtn">{{ $t('DesignDetailEnd.Layout') }}</div>
<div v-if="type_ == 2 && current?.printObject?.prints?.[0]?.path != null" @click.stop="setPrint" class="subitOkPreviewBtn Guide_1_23">{{ $t('DesignDetailEnd.Layout') }}</div>
<div v-else-if="type_ == 2 && current?.printObject?.prints?.[0]?.path == null" @click.stop="setPreview" class="subitOkPreviewBtn">{{ $t('DesignDetailEnd.preview') }}</div>
<DesignPrintOperation ref="DesignPrintOperation"></DesignPrintOperation>
@@ -96,7 +96,7 @@
</div>
</template>
<script>
import { defineComponent,computed,ref, h ,inject} from 'vue'
import { defineComponent,computed,ref, nextTick,h ,inject} from 'vue'
import Draggable from 'vuedraggable'
import { Https } from "@/tool/https";
import { useStore } from "vuex";
@@ -104,6 +104,7 @@ import { Sketch} from '@ans1998/vue3-color'
import DesignPrintOperation from './DesignPrintOperation.vue';
import DesignPrintOperationMobile from './DesignPrintOperationMobile.vue';
import { message,Upload} from 'ant-design-vue';
import { openGuide,driverObj__ } from "@/tool/guide";
import {isMoible} from '@/tool/util'
import { useI18n } from 'vue-i18n';
@@ -118,6 +119,8 @@ export default defineComponent({
let current = inject('current')//父组件传过来的数据
let setRevocation = inject('setRevocation')//父组件传过来的数据
let sketchImg = ref({})
let driver__ = inject('driver__')//父组件传过来的数据
//印花
let overallSingle = ref(false)
let systemDesignerPercentage = ref(30)
@@ -134,6 +137,7 @@ export default defineComponent({
current,
setRevocation,
sketchImg,
driver__,
type_,
overallSingle,
systemDesignerPercentage,
@@ -180,6 +184,11 @@ export default defineComponent({
if(this.current?.printObject?.prints?.[0]?.path){
let DesignPrintOperation = isMoible() ? this.$refs.DesignPrintOperationMobile : this.$refs.DesignPrintOperation
DesignPrintOperation.init()
if(this.driver__.driver){
nextTick().then(()=>{
driverObj__.moveNext();
})
}
}else{
message.info(this.t('DesignDetailEnd.jsContent1'));
}

View File

@@ -1,13 +1,15 @@
<template>
<div>
<a-modal
class="designOpenrtion_modal"
class="designOpenrtion_modal Guide_1_24"
:class="[driver__.driver?'hideEvents':'']"
v-model:visible="designOpenrtion"
:footer="null"
width="65%"
:maskClosable="false"
:centered="true"
:closable="false"
:keyboard="false"
:mask="true"
>
<div class="designOpenrtion_content">
@@ -56,7 +58,7 @@
<img :src="designOpenrtionList[0].path">
</div>
</div>
<div class="subitOkPreviewBtn" @click.stop="setPreview">{{ $t('DesignPrintOperation.preview') }}</div>
<div class="subitOkPreviewBtn Guide_1_25" @click.stop="setPreview">{{ $t('DesignPrintOperation.preview') }}</div>
</div>
</div>
<div class="designOpenrtion_centent" id="designOpenrtionCentent">
@@ -104,6 +106,7 @@
import { defineComponent, h,createVNode, ref ,computed, inject,nextTick} from "vue";
import { LoadingOutlined } from "@ant-design/icons-vue";
import { useStore } from "vuex";
import { openGuide,driverObj__ } from "@/tool/guide";
import { Https } from "@/tool/https";
import { Modal,message } from 'ant-design-vue';
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
@@ -114,6 +117,7 @@ export default defineComponent({
let designOpenrtion = ref(false);
let designOpenrtionList = ref([])
let current = inject('current')//父组件传过来的数据
let driver__ = inject('driver__')
let setRevocation = inject('setRevocation')//父组件传过来的数据
let overallSingle = ref(false)
let systemDesignerPercentage = ref(0)
@@ -160,6 +164,7 @@ export default defineComponent({
overallSingle,
systemDesignerPercentage,
current,
driver__,
printAmount,
printZIndex,
printStyleList,
@@ -652,6 +657,11 @@ export default defineComponent({
this.loadingShow = false
this.designOpenrtion = false
// this.closeModal()
if(this.driver__.driver){
nextTick().then(()=>{
driverObj__.moveNext();
})
}
}
).catch(res=>{
this.loadingShow = false

View File

@@ -8,6 +8,7 @@
:maskClosable="false"
:centered="true"
:closable="false"
:keyboard="false"
:mask="true"
>
<div class="designOpenrtion_content">

View File

@@ -5,6 +5,7 @@
:title="collectionName"
width="80%"
:maskClosable="false"
:keyboard="false"
:centered="true"
>
<template #closeIcon>

View File

@@ -1,7 +1,7 @@
<template>
<div class="habit">
<div v-show="openType.habit" class="habit_mask"></div>
<div class="habit_button" @click.stop="setOpenType('habit')" >
<div class="habit_button Guide_1_27" @click.stop="setOpenType('habit')" >
{{ $t('Habit.Workspace') }}
<i class="fi fi-bs-angle-down"></i>
</div>
@@ -95,7 +95,7 @@
<div class="habit_System_Designer_text">{{ $t('Habit.Designer') }}</div>
</div>
</div>
<div class="habit_model">
<div class="habit_model Guide_1_28">
<a-dropdown placement="bottomRight"
trigger="['click']"
@click.stop="setOpenType('model')"
@@ -107,7 +107,7 @@
</a-button>
</a-dropdown>
</div>
<div id="modelShow" class="habit_model_show" v-fade="openType.model">
<div id="modelShow" class="habit_model_show Guide_1_29" :class="[driver__.driver?'showEvents':'']" v-fade="openType.model">
<div class="habit_btn">
<div class="model_current">
<div class="model_text">{{ $t('Habit.Current') }}</div>
@@ -153,12 +153,13 @@
</template>
<script lang="ts">
import { useStore } from "vuex";
import { defineComponent, createVNode, ref,Ref} from "vue";
import { defineComponent, createVNode,nextTick, computed,ref,Ref} from "vue";
import { UserOutlined, DownOutlined } from "@ant-design/icons-vue";
import { Https } from "@/tool/https";
import type { MenuProps } from "ant-design-vue";
import { Modal,message,Upload} from 'ant-design-vue';
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import { openGuide,driverObj__ } from "@/tool/guide";
import { useI18n } from "vue-i18n";
export default defineComponent({
components: {
@@ -166,8 +167,9 @@ export default defineComponent({
UserOutlined,
},
setup(){
const store = useStore();
let workspaceItem:any = ref({
id:1,
id:'',
id_:1,
workSpaceName:"工作台1",
putName:false,
@@ -189,6 +191,9 @@ export default defineComponent({
addWorkspace:false,
sex:false
})
let driver__:any = computed(()=>{
return store.state.Guide.guide
})
let workspace:any = ref({
});
@@ -200,11 +205,11 @@ export default defineComponent({
])
const {t} = useI18n()
return{
systemSeleves,
mannequins,
openType,
driver__,
workspace,
workspaceItem,
workspaceItemName,
@@ -224,13 +229,13 @@ export default defineComponent({
let data = this.workspaceItem
delete data.isLastIndex
this.putWorkspace(data,'')
// this.getDetail(this.workspaceItem.id)
this.store.commit("setWorkspace", this.workspaceItem);
}
}
},
'workspaceItem.id_':{
handler(newVal:any,oldVal:any){
this.workspace.workspaceList.forEach((v:any)=>{
if(v.id == this.workspaceItem.id_){
this.workspaceItem = v
@@ -239,7 +244,7 @@ export default defineComponent({
if(v.id == oldVal){
delete v.isLastIndex
this.putWorkspace(v,newVal)
// this.getDetail(newVal)
this.getDetail(newVal)
}
})
this.getMannequins()
@@ -264,21 +269,12 @@ export default defineComponent({
// })
}
},
// 'workspa,ceItem.sex':{
// handler(newVal:any,oldVal:any){
// console.log(oldVal);
'workspaceItem.sex':{
handler(newVal:any,oldVal:any){
// console.log(this.workspaceItem);
// if(oldVal){
// console.log(oldVal);
// if(newVal != oldVal){
// console.log(this.workspaceItem.position);
// this.workspaceItem.position = this.singleTypeList[0].label
// }
// }
// }
// },
}
},
workspaceItem:{
handler(newVal:any,oldVal:any){
this.store.commit("setWorkspace", this.workspaceItem);
@@ -292,6 +288,7 @@ export default defineComponent({
},
mounted() {
this.getworkspace()
this.getSex()
},
directives:{
fade:{
@@ -336,7 +333,6 @@ export default defineComponent({
this.sex = rv
}
})
this.getPosition('')
},
async getPosition(str:any){
let params
@@ -379,23 +375,21 @@ export default defineComponent({
v.overallSingle = true
}
v.putName = false
if(v.id == rv.id){
if(v.id == (this.workspaceItem.id?this.workspaceItem.id:rv.id)){
this.workspaceItem = v
console.log(this.workspaceItem);
this.setMannequinsSex()
this.getPosition('')
}
});
this.workspace.id = rv.id
this.workspace.workspaceList = rv.page.content
this.getSex()
}
})
},
getDetail(id:any){//
Https.axiosGet(Https.httpUrls.workspaceDetail,{params:{id:id}}).then((rv: any) => {
if (rv) {
this.getworkspace()
// this.getworkspace()
}
})
},
@@ -422,7 +416,7 @@ export default defineComponent({
Https.axiosPost(Https.httpUrls.workspacesaveOrUpdate,data).then((rv: any) => {
if (rv) {
if(index){
this.getDetail(index)
// this.getDetail(index)
}else{
this.getworkspace()
}
@@ -558,15 +552,28 @@ export default defineComponent({
// this.workspaceItem.mannequinId = item.id
// this.workspaceItem.mannequinType = str
// this.workspaceItem.mannequinUrl = item.presignedUrl
let id
console.log(id , item.id);
if(this.workspaceItem.sexEnum.name == 'Female'){
id = this.workspaceItem.mannequinFemaleId
this.workspaceItem.femalePresignedUrl = item.presignedUrl
this.workspaceItem.mannequinFemaleType = str
this.workspaceItem.mannequinFemaleId = item.id
}else if(this.workspaceItem.sexEnum.name == 'Male'){
id = this.workspaceItem.mannequinMaleId
this.workspaceItem.malePresignedUrl = item.presignedUrl
this.workspaceItem.mannequinMaleType = str
this.workspaceItem.mannequinMaleId = item.id
}
if(id != item.id){
if(this.driver__.driver){
this.openType.habit = false
nextTick().then(()=>{
driverObj__.moveNext();
})
}
}
this.workspaceItem.mannequinUrl = item.presignedUrl
this.workspaceItem.mannequinType = str
this.workspaceItem.mannequinId = item.id
@@ -586,6 +593,13 @@ export default defineComponent({
setOpenType(v:string){
if(v == 'habit'){
this.openType.habit = !this.openType.habit
if(this.driver__.driver){
nextTick().then(()=>{
// driverObj__.moveNext();
driverObj__.moveTo(28);
})
}
}else if(v == 'workspace'){
this.openType.singleton = false
this.openType.sex = false
@@ -599,6 +613,11 @@ export default defineComponent({
this.openType.sex = false
this.openType.model = !this.openType.model
this.getMannequins()
if(this.driver__.driver){
nextTick().then(()=>{
driverObj__.moveNext();
})
}
}else if(v == 'singleton'){
this.openType.singleton = !this.openType.singleton
this.openType.workspace = false
@@ -607,6 +626,7 @@ export default defineComponent({
this.openType.sex = !this.openType.sex
this.openType.workspace = false
this.openType.singleton = false
}
let mask = document.getElementsByClassName("habit_mask")[0]
mask.addEventListener("click", this.documentClick,true);
@@ -682,6 +702,7 @@ export default defineComponent({
transition: all .3s;
transform: scale(0.75)translateY(10%);
display: none;
overflow: inherit !important;
&.active{
opacity: 1;
transform: scale(0.75)translateY(0%);