This commit is contained in:
李志鹏
2025-11-20 16:40:21 +08:00
6 changed files with 51 additions and 22 deletions

View File

@@ -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({

View File

@@ -5,6 +5,15 @@ export const useOverallStore = defineStore({
state: () => { state: () => {
return { return {
loading:false, loading:false,
/**
* 流程类型
* main: 主流程
* reinventing: 魔改
* stylist: 查看设计师
* clientId: 切换客户
*
*/
flowType:'',
} }
}, },
getters: { getters: {
@@ -14,6 +23,9 @@ export const useOverallStore = defineStore({
// 全局loading // 全局loading
setLoading(data:boolean){ setLoading(data:boolean){
this.loading = data this.loading = data
},
setFlowType(data:string){
this.flowType = data
} }
} }
}) })

View File

@@ -3,6 +3,7 @@ import { onMounted, onUnmounted, reactive, toRefs, computed, onActivated } from
import HeaderTitle from '@/components/HeaderTitle.vue' import HeaderTitle from '@/components/HeaderTitle.vue'
import FooterNavigation from '@/components/FooterNavigation.vue' import FooterNavigation from '@/components/FooterNavigation.vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useOverallStore } from '@/stores'
const router = useRouter() const router = useRouter()
import { showConfirmDialog } from 'vant' import { showConfirmDialog } from 'vant'
import MyEvent from '@/utils/myEvent' import MyEvent from '@/utils/myEvent'
@@ -13,6 +14,7 @@ const emit = defineEmits([
'view-type' 'view-type'
]) ])
const overallStore = useOverallStore()
// const data = reactive({ // const data = reactive({
// }) // })
@@ -30,6 +32,11 @@ const clickSwitchVIPID = ()=>{
}) })
.catch(() => {}) .catch(() => {})
} }
const openFlow = (path:string,flowType:string)=>{
if(flowType == 'clientId')return clickSwitchVIPID
overallStore.setFlowType(flowType)
router.push(path)
}
onMounted(()=>{ onMounted(()=>{
emit('view-type', 1) emit('view-type', 1)
@@ -51,16 +58,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('/stylist/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('/workshop/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('/stylist/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>

View File

@@ -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()
}) })

View File

@@ -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 {

View File

@@ -34,7 +34,7 @@
</div> </div>
<!-- Continue按钮 --> <!-- Continue按钮 -->
<div class="continue-button" @click="handleContinue">Continue</div> <div class="continue-button" @click="handleContinue" v-if="overallStore.flowType == 'main'">Continue</div>
<van-dialog <van-dialog
class="video-dialog" class="video-dialog"
:show-confirm-button="false" :show-confirm-button="false"
@@ -61,6 +61,7 @@ import male from '@/assets/images/male.png'
import female from '@/assets/images/female.png' import female from '@/assets/images/female.png'
import HeaderTitle from '@/components/HeaderTitle.vue' import HeaderTitle from '@/components/HeaderTitle.vue'
import FooterNavigation from '@/components/FooterNavigation.vue' import FooterNavigation from '@/components/FooterNavigation.vue'
import { useOverallStore } from '@/stores'
const router = useRouter() const router = useRouter()
const userInfoStore = useUserInfoStore() const userInfoStore = useUserInfoStore()
@@ -101,6 +102,8 @@ 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 overallStore = useOverallStore()
const handleChangeCurrent = (index: number) => { const handleChangeCurrent = (index: number) => {
currentChoosed.value = stylists.value[index].id currentChoosed.value = stylists.value[index].id
} }