Compare commits
10 Commits
8a34b8049e
...
613f1f27f8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
613f1f27f8 | ||
|
|
448294cd66 | ||
|
|
562c9df86f | ||
|
|
1adf4f18c2 | ||
|
|
42dfaa8a1a | ||
|
|
b4242614ea | ||
|
|
0f5eb95cef | ||
|
|
83dbd6bd41 | ||
|
|
f35274310e | ||
|
|
5d0de60498 |
@@ -146,8 +146,7 @@ export function getTryOnEffectStyleList(styleId: string | number) {
|
|||||||
|
|
||||||
// 选择顾客
|
// 选择顾客
|
||||||
interface CustomerInfo {
|
interface CustomerInfo {
|
||||||
name: string
|
vipId: string
|
||||||
email: string
|
|
||||||
}
|
}
|
||||||
export const customerCheckin = (data: CustomerInfo) => {
|
export const customerCheckin = (data: CustomerInfo) => {
|
||||||
return request({
|
return request({
|
||||||
|
|||||||
@@ -156,6 +156,11 @@ export const useGenerateStore = defineStore({
|
|||||||
for (const key in data) {
|
for (const key in data) {
|
||||||
this.customizeInfo[key] = data[key]
|
this.customizeInfo[key] = data[key]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
uploadCustomizeInfoDemo(data: object) {
|
||||||
|
for (const key in data) {
|
||||||
|
this.customizeInfoDemo[key] = data[key]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
clearCustomerInfo() {
|
clearCustomerInfo() {
|
||||||
this.customerInfo = {
|
this.customerInfo = {
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ export const useOverallStore = defineStore({
|
|||||||
// 全局loading
|
// 全局loading
|
||||||
setLoading(data:boolean){
|
setLoading(data:boolean){
|
||||||
this.loading = data
|
this.loading = data
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -26,10 +26,18 @@ const clickSwitchVIPID = ()=>{
|
|||||||
.then(() => {
|
.then(() => {
|
||||||
MyEvent.emit('clear-generate-state')
|
MyEvent.emit('clear-generate-state')
|
||||||
MyEvent.emit('clearAllCache')
|
MyEvent.emit('clearAllCache')
|
||||||
router.push('/stylist/customer')
|
router.push({ name: 'customer', query: { demo: 1 } })
|
||||||
})
|
})
|
||||||
.catch(() => {})
|
.catch(() => {})
|
||||||
}
|
}
|
||||||
|
const openFlow = (path:string,flowType:string)=>{
|
||||||
|
if(flowType == 'clientId')return clickSwitchVIPID()
|
||||||
|
if(flowType == 'main'){
|
||||||
|
router.push({ name: path })
|
||||||
|
}else{
|
||||||
|
router.push({ name: path, query: { demo: 1 } })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(()=>{
|
onMounted(()=>{
|
||||||
emit('view-type', 1)
|
emit('view-type', 1)
|
||||||
@@ -51,16 +59,16 @@ defineExpose({})
|
|||||||
Explore
|
Explore
|
||||||
</div>
|
</div>
|
||||||
<div class="navList">
|
<div class="navList">
|
||||||
<div class="item" @click="()=>router.push('/stylist/index')">
|
<div class="item" @click="openFlow('index','main')">
|
||||||
<img src="@/assets/images/nav1.png" alt="">
|
<img src="@/assets/images/nav1.png" alt="">
|
||||||
</div>
|
</div>
|
||||||
<div class="item" @click="()=>router.push('/workshop/recommended')">
|
<div class="item" @click="openFlow('recommended','reinventing')">
|
||||||
<img src="@/assets/images/nav2.png" alt="">
|
<img src="@/assets/images/nav2.png" alt="">
|
||||||
</div>
|
</div>
|
||||||
<div class="item" @click="()=>router.push('/stylist/index')">
|
<div class="item" @click="openFlow('index','stylist')">
|
||||||
<img src="@/assets/images/nav3.png" alt="">
|
<img src="@/assets/images/nav3.png" alt="">
|
||||||
</div>
|
</div>
|
||||||
<div class="item" @click="clickSwitchVIPID">
|
<div class="item" @click="openFlow('','clientId')">
|
||||||
<img src="@/assets/images/nav4.png" alt="">
|
<img src="@/assets/images/nav4.png" alt="">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ const { isLoading } = toRefs(data);
|
|||||||
<div class="info">Do you have any suggestions<br /> for this outfit? </div>
|
<div class="info">Do you have any suggestions<br /> for this outfit? </div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content" state='2' v-else>
|
<div class="content" state='2' v-else>
|
||||||
<div class="title">Congratulation!</div>
|
<div class="title">Done!</div>
|
||||||
<div class="info">Your feedback will be very<br /> helpful to us.</div>
|
<div class="info">Your feedback will be very<br /> helpful to us.</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="feedbackForm" v-if="feedbackForm.state == 1">
|
<div class="feedbackForm" v-if="feedbackForm.state == 1">
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
<button class="sandblasted-blurred" @click="handleUploadFace">
|
<button class="sandblasted-blurred" @click="handleUploadFace">
|
||||||
<span>Upload Face</span>
|
<span>Upload Face</span>
|
||||||
</button>
|
</button>
|
||||||
<button class="sandblasted-blurred" @click="handleFinish"><span>Finish</span></button>
|
<button class="sandblasted-blurred" @click="handleFinish" v-if="!isDemo"><span>Finish</span></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<footer-navigation is-placeholder />
|
<footer-navigation is-placeholder />
|
||||||
|
|||||||
@@ -83,10 +83,10 @@ const sendPrefilledMessage = () => {
|
|||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
sessionId.value = Math.floor(Date.now() / 1000).toString()
|
sessionId.value = Math.floor(Date.now() / 1000).toString()
|
||||||
generateStore.setSessionId(sessionId.value)
|
generateStore.setSessionId(sessionId.value)
|
||||||
sendPrefilledMessage()
|
|
||||||
})
|
})
|
||||||
|
|
||||||
onActivated(() => {
|
onActivated(() => {
|
||||||
|
sendPrefilledMessage()
|
||||||
noticeListRef.value?.scrollToBottom()
|
noticeListRef.value?.scrollToBottom()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
<template v-else>
|
<template v-else>
|
||||||
<div class="form-container">
|
<div class="form-container">
|
||||||
<div class="back-container flex flex-center" @click="handleChangeMode('entry')">
|
<div class="back-container flex flex-center" @click="handleChangeMode('entry')">
|
||||||
<van-icon name="arrow-left" color="#fff" />
|
<van-icon name="arrow-left" color="#fff" />
|
||||||
</div>
|
</div>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<div class="form-title">Entry ID</div>
|
<div class="form-title">Entry ID</div>
|
||||||
@@ -26,9 +26,14 @@
|
|||||||
<div class="glass-form">
|
<div class="glass-form">
|
||||||
<div class="form-field">
|
<div class="form-field">
|
||||||
<label class="field-label">VIP ID</label>
|
<label class="field-label">VIP ID</label>
|
||||||
<input v-model="customerData.name" type="text" placeholder="Enter your ID" class="form-input" />
|
<input
|
||||||
|
v-model="customerData.vipId"
|
||||||
|
type="text"
|
||||||
|
placeholder="Enter your ID"
|
||||||
|
class="form-input"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-field email">
|
<!-- <div class="form-field email">
|
||||||
<label class="field-label">Email Address</label>
|
<label class="field-label">Email Address</label>
|
||||||
<input
|
<input
|
||||||
v-model="customerData.email"
|
v-model="customerData.email"
|
||||||
@@ -36,7 +41,7 @@
|
|||||||
placeholder="Enter your email"
|
placeholder="Enter your email"
|
||||||
class="form-input"
|
class="form-input"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div> -->
|
||||||
<button class="confirm-btn" @click="handleConfirm">Confirm</button>
|
<button class="confirm-btn" @click="handleConfirm">Confirm</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="copyright">Powered by AiDLab for Lane Crawford</div>
|
<div class="copyright">Powered by AiDLab for Lane Crawford</div>
|
||||||
@@ -45,7 +50,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref } from 'vue'
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import { useGenerateStore, useUserInfoStore } from '@/stores'
|
import { useGenerateStore, useUserInfoStore } from '@/stores'
|
||||||
import { showToast } from 'vant'
|
import { showToast } from 'vant'
|
||||||
@@ -66,12 +71,12 @@ const handleChangeMode = (mode: PageMode) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const customerData = ref({
|
const customerData = ref({
|
||||||
name: '',
|
vipId: ''
|
||||||
email: ''
|
// email: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
const handleConfirm = async () => {
|
const handleConfirm = async () => {
|
||||||
if (customerData.value.name === '' || customerData.value.email === '') {
|
if (customerData.value.vipId === '') {
|
||||||
showToast({
|
showToast({
|
||||||
message: 'please input name and email',
|
message: 'please input name and email',
|
||||||
position: 'top'
|
position: 'top'
|
||||||
@@ -124,7 +129,7 @@ const handleConfirm = async () => {
|
|||||||
font-size: 5.6rem;
|
font-size: 5.6rem;
|
||||||
width: 32.5rem;
|
width: 32.5rem;
|
||||||
height: 8.1rem;
|
height: 8.1rem;
|
||||||
border: .2rem solid #fff;
|
border: 0.2rem solid #fff;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@@ -133,7 +138,7 @@ const handleConfirm = async () => {
|
|||||||
}
|
}
|
||||||
.entry-btn {
|
.entry-btn {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
border: .2rem solid #fff;
|
border: 0.2rem solid #fff;
|
||||||
bottom: 10.3rem;
|
bottom: 10.3rem;
|
||||||
right: 5.5rem;
|
right: 5.5rem;
|
||||||
height: 9rem;
|
height: 9rem;
|
||||||
@@ -146,7 +151,7 @@ const handleConfirm = async () => {
|
|||||||
.back-container {
|
.back-container {
|
||||||
width: 7.3rem;
|
width: 7.3rem;
|
||||||
height: 7.3rem;
|
height: 7.3rem;
|
||||||
border: .2rem solid #fff;
|
border: 0.2rem solid #fff;
|
||||||
border-radius: 1.8rem;
|
border-radius: 1.8rem;
|
||||||
font-size: 4.3rem;
|
font-size: 4.3rem;
|
||||||
background: rgba(0, 0, 0, 0.2);
|
background: rgba(0, 0, 0, 0.2);
|
||||||
@@ -184,12 +189,15 @@ const handleConfirm = async () => {
|
|||||||
|
|
||||||
.glass-form {
|
.glass-form {
|
||||||
height: 84.8rem;
|
height: 84.8rem;
|
||||||
border: .2rem solid #ffffff;
|
border: 0.2rem solid #ffffff;
|
||||||
border-radius: 4.7rem;
|
border-radius: 4.7rem;
|
||||||
margin: 0 14.2rem;
|
margin: 0 14.2rem;
|
||||||
padding: 8.2rem 7.9rem;
|
padding: 8.2rem 7.9rem;
|
||||||
margin-top: 7.5rem;
|
margin-top: 7.5rem;
|
||||||
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
|
||||||
background: radial-gradient(
|
background: radial-gradient(
|
||||||
100% 100% at 0% 0%,
|
100% 100% at 0% 0%,
|
||||||
@@ -215,7 +223,7 @@ const handleConfirm = async () => {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: 10rem;
|
height: 10rem;
|
||||||
line-height: 10rem;
|
line-height: 10rem;
|
||||||
border: .2rem solid #fff;
|
border: 0.2rem solid #fff;
|
||||||
border-radius: 7rem;
|
border-radius: 7rem;
|
||||||
padding: 0 5.5rem;
|
padding: 0 5.5rem;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
@@ -240,7 +248,7 @@ const handleConfirm = async () => {
|
|||||||
font-size: 4rem;
|
font-size: 4rem;
|
||||||
font-family: 'satoshiRegular';
|
font-family: 'satoshiRegular';
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
box-shadow: 0 .2rem 8px rgba(0, 0, 0, 0.2);
|
box-shadow: 0 0.2rem 8px rgba(0, 0, 0, 0.2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.copyright {
|
.copyright {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Continue按钮 -->
|
<!-- Continue按钮 -->
|
||||||
<div class="continue-button" @click="handleContinue">Continue</div>
|
<div class="continue-button" @click="handleContinue" v-if="!$route.query?.demo">Continue</div>
|
||||||
<van-dialog
|
<van-dialog
|
||||||
class="video-dialog"
|
class="video-dialog"
|
||||||
:show-confirm-button="false"
|
:show-confirm-button="false"
|
||||||
@@ -101,6 +101,7 @@ const swiperRef = ref<any>(null)
|
|||||||
const showVideo = ref<boolean>(false)
|
const showVideo = ref<boolean>(false)
|
||||||
const videoRef = ref<any>(null)
|
const videoRef = ref<any>(null)
|
||||||
|
|
||||||
|
|
||||||
const handleChangeCurrent = (index: number) => {
|
const handleChangeCurrent = (index: number) => {
|
||||||
currentChoosed.value = stylists.value[index].id
|
currentChoosed.value = stylists.value[index].id
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user