From b206cae02508091aa6336714e3e7d58061175701 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com>
Date: Wed, 24 Dec 2025 10:09:25 +0800
Subject: [PATCH 1/9] 1
---
src/views/Workshop/profile.vue | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/views/Workshop/profile.vue b/src/views/Workshop/profile.vue
index ae7eafa..a600ea0 100644
--- a/src/views/Workshop/profile.vue
+++ b/src/views/Workshop/profile.vue
@@ -19,7 +19,7 @@ const isEdit = ref(false)
const form = reactive({
name: { msg: '', value: userInfoStore.state.userInfo.username },
email: { msg: '', value: userInfoStore.state.userInfo.email },
- password: { show: false, msg: '', value: userInfoStore.state.userInfo.password }
+// password: { show: false, msg: '', value: userInfoStore.state.userInfo.password }
})
const open = () => {
isEdit.value = false
@@ -45,6 +45,11 @@ const edit = () => {
}
const confirm = () => {
overallStore.setLoading(true)
+ const params = {
+ username: form.name.value,
+ email: form.email.value,
+ }
+ console.log(params)
setTimeout(() => {
overallStore.setLoading(false)
isEdit.value = false
@@ -186,7 +191,7 @@ defineExpose({ open, close, openSwitchCustomerPopup })
Profile
-
+
+
From 59c864fef3b5f9c006c5873983512059d06ab279 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com>
Date: Mon, 29 Dec 2025 10:20:46 +0800
Subject: [PATCH 6/9] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=AD=97=E4=BD=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/MyList.vue | 26 ++++++++++++++++---
src/views/Workshop/creation/creation-list.vue | 7 ++++-
src/views/Workshop/library.vue | 19 +++++++++-----
3 files changed, 40 insertions(+), 12 deletions(-)
diff --git a/src/components/MyList.vue b/src/components/MyList.vue
index 425bee6..4aad281 100644
--- a/src/components/MyList.vue
+++ b/src/components/MyList.vue
@@ -3,6 +3,7 @@
const props = defineProps({
loading: { default: false, type: Boolean },
finish: { default: false, type: Boolean },
+ empty: { default: false, type: Boolean },
pel: { default: () => {}, type: Function }
})
const emit = defineEmits(['load'])
@@ -23,12 +24,13 @@
})
-
+
@@ -40,12 +42,28 @@
> .footer {
width: 100%;
font-size: 3rem;
- color: #000;
+ color: #a1a1a1;
text-align: center;
margin: var(--my-list-footer-margin, 0);
> .placeholder {
height: 1px;
}
+ > .empty {
+ font-size: 4rem;
+ }
+ }
+ &.empty {
+ > .footer {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ height: 100%;
+ padding: 0;
+ margin: 0;
+ > .empty {
+ margin-bottom: 5rem;
+ }
+ }
}
}
diff --git a/src/views/Workshop/creation/creation-list.vue b/src/views/Workshop/creation/creation-list.vue
index b5cc31d..2a336ad 100644
--- a/src/views/Workshop/creation/creation-list.vue
+++ b/src/views/Workshop/creation/creation-list.vue
@@ -268,7 +268,12 @@
-
+
0)
if (res === 0) return
- console.log(obj,i)
+ console.log(obj, i)
deleteCustomerPhoto(obj.visitRecordId)
.then(() => {
list.splice(i, 1)
@@ -68,7 +68,12 @@
Library
-
+
![]()
@@ -115,18 +120,18 @@
}
> .title {
- font-family: satoshiRegular;
- font-size: 9rem;
+ font-family: satoshiBold;
+ font-size: 8.9rem;
text-align: left;
line-height: 124%;
- margin: 5rem;
+ margin: 5rem 9.1rem;
}
> .list {
flex: 1;
overflow: hidden;
- margin: 0 3rem;
+ margin: 0 4.5rem;
> .my-list {
- padding: 0 3.8rem;
+ padding: 0 4.5rem;
--my-list-footer-margin: 2rem 0;
> .item {
position: relative;
From 9c41bf4711b34de221c4caa8ff52ac1a3599f482 Mon Sep 17 00:00:00 2001
From: zhangyahui
Date: Mon, 29 Dec 2025 10:46:00 +0800
Subject: [PATCH 7/9] =?UTF-8?q?style:=20=E6=A0=B7=E5=BC=8F=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9.=20bugfix:=20customer=E9=80=89=E6=8B=A9=E9=A1=B5?=
=?UTF-8?q?=E9=9D=A2=E5=BC=B9=E7=AA=97=E8=A7=A6=E5=8F=91=E9=94=99=E8=AF=AF?=
=?UTF-8?q?.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/Workshop/profile.vue | 9 +++--
src/views/login/WelcomePage.vue | 1 +
src/views/login/customer.vue | 70 ++++++++++++++++-----------------
src/views/stylist/dressfor.vue | 13 +++---
src/views/stylist/index.vue | 4 +-
src/views/stylist/sex.vue | 5 ++-
6 files changed, 54 insertions(+), 48 deletions(-)
diff --git a/src/views/Workshop/profile.vue b/src/views/Workshop/profile.vue
index ff71137..3d088fd 100644
--- a/src/views/Workshop/profile.vue
+++ b/src/views/Workshop/profile.vue
@@ -147,6 +147,7 @@ const onScroll = (e: Event) => {
// 打开customer选择时关闭profile弹窗 如果不是点击confirem关闭则重新打开profile弹窗
const handleShowPopup = (flag: boolean) => {
showSwitchCustomerPopup.value = flag
+ if(props.isCustomer) return
show.value = !flag
if (flag) {
loadCustomers(true)
@@ -178,15 +179,15 @@ const handleFetchCustomerList = () => {
}
MyEvent.add('update-customer-list', handleFetchCustomerList)
-const openSwitchCustomerPopup = (flag = true) => {
- showSwitchCustomerPopup.value = flag
-}
+// const openSwitchCustomerPopup = (flag = true) => {
+// showSwitchCustomerPopup.value = flag
+// }
onMounted(() => {
handleFetchCustomerList()
})
-defineExpose({ open, close, openSwitchCustomerPopup })
+defineExpose({ open, close, handleShowPopup })
diff --git a/src/views/login/WelcomePage.vue b/src/views/login/WelcomePage.vue
index 75c2c50..e7ecf31 100644
--- a/src/views/login/WelcomePage.vue
+++ b/src/views/login/WelcomePage.vue
@@ -55,6 +55,7 @@ const goToLogin = () => {
.title {
font-family: 'satoshiMedium';
line-height: 120%;
+ font-size: 11rem;
// letter-spacing: -0.02em;
}
.subtitle {
diff --git a/src/views/login/customer.vue b/src/views/login/customer.vue
index 23d660a..c83541d 100644
--- a/src/views/login/customer.vue
+++ b/src/views/login/customer.vue
@@ -74,7 +74,7 @@
import { ref, computed } from 'vue'
import { useRouter } from 'vue-router'
import { useGenerateStore, useUserInfoStore } from '@/stores'
-import { showToast } from 'vant'
+import { showToast, closeToast } from 'vant'
import { customerCheckin, createCustomer, type CreateCustomerParams } from '@/api/workshop'
import Profile from '../Workshop/profile.vue'
import MyEvent from '@/utils/myEvent'
@@ -86,6 +86,7 @@ const handleOpenProfile = () => {
const router = useRouter()
const generateStore = useGenerateStore()
+const loading = ref(false)
type PageMode = 'form' | 'entry' | 'create'
const pageMode = ref('entry')
@@ -104,50 +105,45 @@ const customerData = ref({
})
const handleConfirm = async () => {
- if (pageMode.value === 'form') {
- if (customerData.value.nickname === '') {
- showToast({
- message: 'please input the nickname'
- })
- return
- }
+ if (loading.value) return
+ const nickname = (customerData.value.nickname || '').trim()
+ const vipId = (customerData.value.vipId || '').trim()
- customerCheckin({ nickname: customerData.value.nickname }).then((res) => {
- useUserInfoStore().resetGenerateParams()
- generateStore.setCustomerInfo(res)
- MyEvent.emit('clear-generate-state')
- router.push('/workshop/home')
- })
- } else {
- if (customerData.value.vipId === '') {
- showToast({
- message: 'please input the VIP ID'
- })
- return
- }
- if (customerData.value.nickname === '') {
- showToast({
- message: 'please input the nickname'
- })
- return
- }
+ if (!nickname) {
+ showToast({ message: 'please input the nickname' })
+ return
+ }
- createCustomer({
- nickname: customerData.value.nickname,
- vipId: customerData.value.vipId
- } as CreateCustomerParams).then((res) => {
- showToast({
- message: 'Customer created successfully'
- })
- handleBack()
+ if (pageMode.value === 'create' && !vipId) {
+ showToast({ message: 'please input the VIP ID' })
+ return
+ }
+
+ loading.value = true
+ showToast({ message: 'Processing...', duration: 0, type: 'loading' })
+ try {
+ if (pageMode.value === 'create') {
+ await createCustomer({ nickname, vipId } as CreateCustomerParams)
+ showToast({ message: 'Customer created successfully' })
MyEvent.emit('update-customer-list')
- })
+ }
+
+ const res = await customerCheckin({ nickname })
+ useUserInfoStore().resetGenerateParams()
+ generateStore.setCustomerInfo(res)
+ MyEvent.emit('clear-generate-state')
+ router.push('/workshop/home')
+ } catch (err: any) {
+ showToast({ message: err?.message || 'Operation failed' })
+ } finally {
+ loading.value = false
+ closeToast()
}
}
const handleShowPopup = (flag: Boolean) => {
// showPopup.value = flag
- profileRef.value.openSwitchCustomerPopup(flag)
+ profileRef.value.handleShowPopup(flag)
}
const handleSelectCustomer = (value) => {
diff --git a/src/views/stylist/dressfor.vue b/src/views/stylist/dressfor.vue
index c276fba..e75eeeb 100644
--- a/src/views/stylist/dressfor.vue
+++ b/src/views/stylist/dressfor.vue
@@ -220,7 +220,7 @@ onUnmounted(() => {
background-size: cover;
background-position: center;
background-repeat: no-repeat;
- padding: 6rem 0 0 0;
+ padding: 15.9rem 0 0 0;
.content {
.loading-container {
:deep(.loading-image) {
@@ -229,10 +229,11 @@ onUnmounted(() => {
animation: none;
}
:deep(.loading-shadow) {
+ background-color: #000;
width: 9.2rem;
height: 2.4rem;
filter: blur(6px);
- opacity: 0.5;
+ opacity: 0.2;
margin: 2.4rem 0 0;
// background-color: #d9d9d9;
}
@@ -247,8 +248,10 @@ onUnmounted(() => {
font-weight: 700;
line-height: 1.12;
background: #b3b3b3;
- background: linear-gradient(120deg, #b3b3b3 1%, rgba(0, 0, 0, 0) 48%),
- linear-gradient(344deg, #b3b3b2 16%, #000000 66%);
+ background: radial-gradient(80.79% 50% at 50% 50%, #d1c7c2 0%, rgba(255, 255, 255, 0) 100%),
+ radial-gradient(99.56% 93.08% at 99.56% 93.08%, #e6e6e6 0%, #000000 100%)
+ /* warning: gradient uses a rotation that is not supported by CSS and may not behave as expected */,
+ linear-gradient(120.09deg, #b3b3b3 0%, rgba(255, 255, 255, 0) 35.41%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
@@ -325,7 +328,7 @@ onUnmounted(() => {
text-align: center;
border-radius: 4.6rem;
padding: 0 2.15rem;
- &.active{
+ &.active {
background-color: #f5f5f5;
}
}
diff --git a/src/views/stylist/index.vue b/src/views/stylist/index.vue
index 8544b66..5ab31e4 100644
--- a/src/views/stylist/index.vue
+++ b/src/views/stylist/index.vue
@@ -166,7 +166,7 @@ const handleContinue = () => {
display: flex;
flex-direction: column;
padding: 2rem;
- padding-top: 6rem;
+ padding-top: 10rem;
}
.header {
@@ -178,6 +178,8 @@ const handleContinue = () => {
color: white;
line-height: 96%;
font-family: 'satoshiBold';
+ letter-spacing: -0.04rem;
+ margin-bottom: 3.2rem;
}
.sub-title{
font-family: 'satoshiRegular';
diff --git a/src/views/stylist/sex.vue b/src/views/stylist/sex.vue
index 1bf1cc1..90b8cfb 100644
--- a/src/views/stylist/sex.vue
+++ b/src/views/stylist/sex.vue
@@ -59,11 +59,14 @@ const handleSelect = (value: string) => {
font-weight: 700;
font-size: 11rem;
line-height: 106%;
+ letter-spacing: -0.02rem;
+ margin-bottom: 4.6rem;
}
.desc {
font-family: 'satoshiRegular';
- font-size: 4rem;
+ font-size: 6rem;
line-height: 132%;
+ letter-spacing: 0.02rem;
}
.select-list {
display: flex;
From 8af7092f56779e18d80845bfe233abbae525b848 Mon Sep 17 00:00:00 2001
From: zhangyahui
Date: Mon, 29 Dec 2025 11:24:01 +0800
Subject: [PATCH 8/9] =?UTF-8?q?style:=20=E9=80=89=E6=8B=A9=E9=A1=BE?=
=?UTF-8?q?=E5=AE=A2=E5=BC=B9=E7=AA=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/Workshop/profile.vue | 887 +++++++++++++++++----------------
1 file changed, 444 insertions(+), 443 deletions(-)
diff --git a/src/views/Workshop/profile.vue b/src/views/Workshop/profile.vue
index bfe74f2..00d180e 100644
--- a/src/views/Workshop/profile.vue
+++ b/src/views/Workshop/profile.vue
@@ -1,159 +1,159 @@
-
-
-
+
+
+ Powered by AiDLab for Lane Crawford
+
+
+
+
+
+
+
+
+
+
From 9da2cd9dc2ae4cb1dbcd593577514f7a9c5940ac Mon Sep 17 00:00:00 2001
From: zhangyahui
Date: Mon, 29 Dec 2025 13:04:26 +0800
Subject: [PATCH 9/9] =?UTF-8?q?chore:=20retry=E5=9B=BE=E6=A0=87?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/assets/icons/reTry.svg | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/src/assets/icons/reTry.svg b/src/assets/icons/reTry.svg
index 230cd29..b5bb72e 100644
--- a/src/assets/icons/reTry.svg
+++ b/src/assets/icons/reTry.svg
@@ -1,9 +1,7 @@
-
+
+
\ No newline at end of file