Compare commits

..

2 Commits

Author SHA1 Message Date
李志鹏
3826e553b1 Merge branch 'main' of http://18.167.251.121:10003/aidlab/lanecarford_front
All checks were successful
git提交控制 AiDA WEB-Node.js main 分支构建部署 / build (20.19.0) (push) Has been skipped
2025-12-29 14:50:33 +08:00
李志鹏
8cb77593f8 更改viewtype方式 2025-12-29 14:48:54 +08:00
15 changed files with 496 additions and 550 deletions

View File

@@ -1,6 +1,6 @@
<template> <template>
<div class="routeCache" :view-type="viewType"> <div class="routeCache" :view-type="viewType">
<router-view v-slot="{ Component, route }" @view-type="changeViewType"> <router-view v-slot="{ Component, route }">
<keep-alive :include="cachedViews"> <keep-alive :include="cachedViews">
<component :is="Component" :key="route.name" /> <component :is="Component" :key="route.name" />
</keep-alive> </keep-alive>
@@ -14,6 +14,13 @@ import { useRoute } from 'vue-router'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import MyEvent from '@/utils/myEvent' import MyEvent from '@/utils/myEvent'
const props = defineProps({
viewType: {
type: String,
default: ''
}
})
const route = useRoute() const route = useRoute()
// 缓存的组件名称列表 // 缓存的组件名称列表
@@ -59,17 +66,6 @@ onMounted(() => {
MyEvent.add('clearAllCache', clearCache) MyEvent.add('clearAllCache', clearCache)
}) })
//根据viewType设置布局风格样式
const viewType = ref(0)
const changeViewType = (v: number) => {
viewType.value = v
}
const router = useRouter()
watch(
() => router.currentRoute.value,
() => (viewType.value = 0)
)
// 暴露方法供外部使用 // 暴露方法供外部使用
defineExpose({ defineExpose({
clearCache, clearCache,

View File

@@ -12,7 +12,6 @@
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import MyEvent from '@/utils/myEvent' import MyEvent from '@/utils/myEvent'
const router = useRouter() const router = useRouter()
const emit = defineEmits(['view-type'])
const query = computed(() => router.currentRoute.value.query) const query = computed(() => router.currentRoute.value.query)
const visitRecordId = computed(() => query.value.visitRecordId) // 访问记录ID const visitRecordId = computed(() => query.value.visitRecordId) // 访问记录ID
import { useGenerateStore, useHGenerateStore } from '@/stores' import { useGenerateStore, useHGenerateStore } from '@/stores'
@@ -22,9 +21,6 @@
// 是否单选模式 // 是否单选模式
isChooseOne: { type: Boolean, default: false } isChooseOne: { type: Boolean, default: false }
}) })
onMounted(() => {
emit('view-type', 1)
})
const list = reactive([]) const list = reactive([])
const size = ref(10) const size = ref(10)
const page = computed(() => Math.ceil(list.length / size.value) + 1) const page = computed(() => Math.ceil(list.length / size.value) + 1)

View File

@@ -7,16 +7,8 @@
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
const styleUrl = computed(() => router.currentRoute.value.query.styleUrl) const styleUrl = computed(() => router.currentRoute.value.query.styleUrl)
const emit = defineEmits(['view-type'])
watch(
() => router.currentRoute.value,
() => emit('view-type', 1)
)
const isChooseOne = computed(() => route.query.flowType === FlowType.HISTORY) const isChooseOne = computed(() => route.query.flowType === FlowType.HISTORY)
onMounted(() => {
emit('view-type', 1)
})
</script> </script>
<template> <template>

View File

@@ -2,10 +2,7 @@
import { ref, onMounted } from 'vue' import { ref, onMounted } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
const router = useRouter() const router = useRouter()
const emit = defineEmits(['view-type'])
onMounted(() => {
emit('view-type', 1)
})
const onExit = () => { const onExit = () => {
console.log('exit') console.log('exit')
} }

View File

@@ -7,9 +7,6 @@ import { FlowType } from '@/types/enum'
//const props = defineProps({ //const props = defineProps({
//}) //})
const emit = defineEmits([
'viewType'
])
// const data = reactive({ // const data = reactive({
// }) // })
@@ -22,9 +19,6 @@ const historicalReview = ()=>{
router.push(`/workshop/creation?flowType=${FlowType.HISTORY}`) router.push(`/workshop/creation?flowType=${FlowType.HISTORY}`)
} }
onMounted(()=>{
emit('viewType', 1)
})
onUnmounted(()=>{ onUnmounted(()=>{
}) })
defineExpose({}) defineExpose({})

View File

@@ -12,9 +12,6 @@ const hGenerateStore = useHGenerateStore()
//const props = defineProps({ //const props = defineProps({
//}) //})
const emit = defineEmits([
'view-type'
])
const navList = ref([]) const navList = ref([])
const navDisabledList = ref([]) const navDisabledList = ref([])
@@ -36,7 +33,6 @@ const openFlow = (item: any)=>{
} }
onMounted(()=>{ onMounted(()=>{
emit('view-type', 1)
let nav = [ let nav = [
{ {
path: 'selectStyle', path: 'selectStyle',

View File

@@ -19,7 +19,7 @@
<template> <template>
<div class="workshop"> <div class="workshop">
<header-title @clickProfile="handleClickProfile" /> <header-title @clickProfile="handleClickProfile" />
<RouteCache /> <RouteCache view-type="1" />
<footer-navigation v-if="notShowFooter" /> <footer-navigation v-if="notShowFooter" />
<template> <template>
<profile ref="profileRef" /> <profile ref="profileRef" />

View File

@@ -4,14 +4,10 @@
import router from '@/router' import router from '@/router'
import { FormatDate } from '@/utils/tools' import { FormatDate } from '@/utils/tools'
import { getCustomerPhotos, deleteCustomerPhoto } from '@/api/workshop' import { getCustomerPhotos, deleteCustomerPhoto } from '@/api/workshop'
const emit = defineEmits(['view-type'])
import { showConfirmDialog } from 'vant' import { showConfirmDialog } from 'vant'
import { useGenerateStore } from '@/stores' import { useGenerateStore } from '@/stores'
const generateStore = useGenerateStore() const generateStore = useGenerateStore()
onMounted(() => {
emit('view-type', 1)
})
const loading = ref(false) const loading = ref(false)
const finish = ref(false) const finish = ref(false)
const list = reactive([]) const list = reactive([])

View File

@@ -10,7 +10,6 @@ import gradientButton from '@/components/gradientButton.vue'
const router = useRouter() const router = useRouter()
//const props = defineProps({ //const props = defineProps({
//}) //})
const emit = defineEmits(['view-type'])
let data = reactive({ let data = reactive({
modelList: modelList:
[ [
@@ -120,7 +119,6 @@ const handleSubmit = ()=>{
} }
onMounted(() => { onMounted(() => {
emit('view-type', 1)
if (!generateStore.originalTryOn.id) { if (!generateStore.originalTryOn.id) {
startGenerate() startGenerate()
} }

View File

@@ -1,55 +1,55 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive, onMounted, inject } from 'vue' import { ref, reactive, onMounted, inject } from 'vue'
import router from '@/router' import router from '@/router'
import { showConfirmDialog, showToast } from 'vant' import { showConfirmDialog, showToast } from 'vant'
import { useUserInfoStore, useOverallStore } from '@/stores' import { useUserInfoStore, useOverallStore } from '@/stores'
import { LogOut } from '@/api/login' import { LogOut } from '@/api/login'
import { getCustomerList, type CustomerListParams, customerCheckin } from '@/api/workshop' import { getCustomerList, type CustomerListParams, customerCheckin } from '@/api/workshop'
import MyEvent from '@/utils/myEvent' import MyEvent from '@/utils/myEvent'
import { encryptPassword } from '@/utils/tools' import { encryptPassword } from '@/utils/tools'
import { updateUserInfo } from '@/api/login' import { updateUserInfo } from '@/api/login'
const props = defineProps<{ const props = defineProps<{
isCustomer?: boolean isCustomer?: boolean
}>() }>()
const userInfoStore = useUserInfoStore() const userInfoStore = useUserInfoStore()
const overallStore = useOverallStore() const overallStore = useOverallStore()
const emit = defineEmits(['selected-customer']) const emit = defineEmits(['selected-customer'])
const show = ref(false) const show = ref(false)
const isEdit = ref(false) const isEdit = ref(false)
const form = reactive({ const form = reactive({
name: { msg: '', value: '' }, name: { msg: '', value: '' },
email: { msg: '', value: '' }, email: { msg: '', value: '' },
password: { show: true, msg: '', value: '' } password: { show: true, msg: '', value: '' }
}) })
const open = () => { const open = () => {
form.name.value = userInfoStore.state.userInfo.username form.name.value = userInfoStore.state.userInfo.username
form.email.value = userInfoStore.state.userInfo.email form.email.value = userInfoStore.state.userInfo.email
form.password.value = '' form.password.value = ''
isEdit.value = false isEdit.value = false
show.value = true show.value = true
} }
const close = () => { const close = () => {
show.value = false show.value = false
} }
const onEditItem = (item) => { const onEditItem = (item) => {
if (!form[item]) return if (!form[item]) return
form[item].edit = true form[item].edit = true
} }
const onSaveItem = (item) => { const onSaveItem = (item) => {
if (!form[item]) return if (!form[item]) return
form[item].edit = false form[item].edit = false
} }
const switchCustomer = () => { const switchCustomer = () => {
// console.log('switchCustomer') // console.log('switchCustomer')
handleShowPopup(true) handleShowPopup(true)
} }
const edit = () => { const edit = () => {
form.password.value = '' form.password.value = ''
isEdit.value = true isEdit.value = true
} }
const confirm = () => { const confirm = () => {
if (!isEdit.value) return if (!isEdit.value) return
const password = form.password.value const password = form.password.value
const params = { const params = {
@@ -78,8 +78,8 @@ const confirm = () => {
form.password.value = '' form.password.value = ''
isEdit.value = false isEdit.value = false
}) })
} }
const logout = () => { const logout = () => {
showConfirmDialog({ showConfirmDialog({
title: 'Log out', title: 'Log out',
message: 'Are you sure you want to log out?', message: 'Are you sure you want to log out?',
@@ -93,23 +93,23 @@ const logout = () => {
}) })
}) })
.catch(() => {}) .catch(() => {})
} }
const showSwitchCustomerPopup = ref(false) const showSwitchCustomerPopup = ref(false)
const custmerParams = ref<CustomerListParams>({ const custmerParams = ref<CustomerListParams>({
current: 1, current: 1,
size: 5, size: 5,
desc: true desc: true
}) })
const customerList = ref<any[]>([]) const customerList = ref<any[]>([])
const pager = reactive({ const pager = reactive({
loading: false, loading: false,
noMore: false, noMore: false,
total: null as number | null total: null as number | null
}) })
const customerListEl = ref<HTMLElement | null>(null) const customerListEl = ref<HTMLElement | null>(null)
const loadCustomers = async (reset = false) => { const loadCustomers = async (reset = false) => {
if (pager.loading) return if (pager.loading) return
if (reset) { if (reset) {
custmerParams.value.current = 1 custmerParams.value.current = 1
@@ -153,31 +153,31 @@ const loadCustomers = async (reset = false) => {
} finally { } finally {
pager.loading = false pager.loading = false
} }
} }
const onScroll = (e: Event) => { const onScroll = (e: Event) => {
const el = e.target as HTMLElement const el = e.target as HTMLElement
if (!el) return if (!el) return
if (pager.loading || pager.noMore) return if (pager.loading || pager.noMore) return
if (el.scrollTop + el.clientHeight >= el.scrollHeight - 50) { if (el.scrollTop + el.clientHeight >= el.scrollHeight - 50) {
loadCustomers(false) loadCustomers(false)
} }
} }
// 打开customer选择时关闭profile弹窗 如果不是点击confirem关闭则重新打开profile弹窗 // 打开customer选择时关闭profile弹窗 如果不是点击confirem关闭则重新打开profile弹窗
const handleShowPopup = (flag: boolean) => { const handleShowPopup = (flag: boolean) => {
showSwitchCustomerPopup.value = flag showSwitchCustomerPopup.value = flag
if (props.isCustomer) return if (props.isCustomer) return
show.value = !flag show.value = !flag
if (flag) { if (flag) {
loadCustomers(true) loadCustomers(true)
} }
} }
const handleChangeChecked = (item) => { const handleChangeChecked = (item) => {
customerList.value.forEach((customer) => { customerList.value.forEach((customer) => {
customer.checked = customer.vipId === item.vipId customer.checked = customer.vipId === item.vipId
}) })
} }
const handleSelectCustomer = () => { const handleSelectCustomer = () => {
const selectedCustomer = customerList.value.find((customer) => customer.checked) const selectedCustomer = customerList.value.find((customer) => customer.checked)
if (selectedCustomer) { if (selectedCustomer) {
emit('selected-customer', selectedCustomer) emit('selected-customer', selectedCustomer)
@@ -191,22 +191,22 @@ const handleSelectCustomer = () => {
}) })
} }
showSwitchCustomerPopup.value = false showSwitchCustomerPopup.value = false
} }
const handleFetchCustomerList = () => { const handleFetchCustomerList = () => {
loadCustomers(true) loadCustomers(true)
} }
MyEvent.add('update-customer-list', handleFetchCustomerList) MyEvent.add('update-customer-list', handleFetchCustomerList)
// const openSwitchCustomerPopup = (flag = true) => { // const openSwitchCustomerPopup = (flag = true) => {
// showSwitchCustomerPopup.value = flag // showSwitchCustomerPopup.value = flag
// } // }
onMounted(() => { onMounted(() => {
handleFetchCustomerList() handleFetchCustomerList()
}) })
defineExpose({ open, close, handleShowPopup }) defineExpose({ open, close, handleShowPopup })
</script> </script>
<template> <template>
@@ -331,11 +331,11 @@ defineExpose({ open, close, handleShowPopup })
</template> </template>
<style scoped lang="less"> <style scoped lang="less">
.van-popup { .van-popup {
max-height: 90%; max-height: 90%;
--van-popup-round-radius: 7.8rem; --van-popup-round-radius: 7.8rem;
} }
.profile { .profile {
margin: 6.5rem 0; margin: 6.5rem 0;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@@ -444,9 +444,9 @@ defineExpose({ open, close, handleShowPopup })
margin-top: 17.8rem; margin-top: 17.8rem;
} }
} }
} }
.van-popup.user-popup { .van-popup.user-popup {
height: 116.1rem; height: 116.1rem;
color: #181725; color: #181725;
border-top-left-radius: 7.8rem; border-top-left-radius: 7.8rem;
@@ -516,5 +516,5 @@ defineExpose({ open, close, handleShowPopup })
box-sizing: border-box; box-sizing: border-box;
text-align: center; text-align: center;
} }
} }
</style> </style>

View File

@@ -3,10 +3,7 @@
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useGenerateStore } from '@/stores' import { useGenerateStore } from '@/stores'
const generateStore = useGenerateStore() const generateStore = useGenerateStore()
const emit = defineEmits(['view-type'])
onMounted(() => {
emit('view-type', 1)
})
const router = useRouter() const router = useRouter()
const clickNext = () => { const clickNext = () => {
generateStore.updatePhotoInfo({}) generateStore.updatePhotoInfo({})

View File

@@ -6,9 +6,7 @@ import { useGenerateStore } from '@/stores'
const router = useRouter() const router = useRouter()
//const props = defineProps({ //const props = defineProps({
//}) //})
const emit = defineEmits([
'view-type'
])
const generateStore = useGenerateStore() const generateStore = useGenerateStore()
let data = reactive({ let data = reactive({
modelList: modelList:
@@ -45,9 +43,7 @@ let data = reactive({
const setSelectedModelId = (item)=>{ const setSelectedModelId = (item)=>{
generateStore.selectModel(item) generateStore.selectModel(item)
} }
onMounted(()=>{
emit('view-type', 1)
})
const toProduct = ()=>{ const toProduct = ()=>{
router.push({ path: 'product' }) router.push({ path: 'product' })
} }

View File

@@ -13,9 +13,6 @@ const router = useRouter()
const route = useRoute() const route = useRoute()
//const props = defineProps({ //const props = defineProps({
//}) //})
const emit = defineEmits([
'view-type'
])
const generateStore = useGenerateStore() const generateStore = useGenerateStore()
const userInfoStore = useUserInfoStore() const userInfoStore = useUserInfoStore()
const hGenerateStore = useHGenerateStore() const hGenerateStore = useHGenerateStore()
@@ -139,7 +136,6 @@ const styleListInit = ()=>{
onMounted(()=>{ onMounted(()=>{
// generateStore.clearProductData() // generateStore.clearProductData()
emit('view-type', 1)
// if(!data.styleList[0]?.id)getRequestOutfitList(0) // if(!data.styleList[0]?.id)getRequestOutfitList(0)
if(getGenerateTime)clearTimeout(getGenerateTime) if(getGenerateTime)clearTimeout(getGenerateTime)
const taskIdList = data.styleList const taskIdList = data.styleList

View File

@@ -4,10 +4,6 @@
import { useGenerateStore } from '@/stores' import { useGenerateStore } from '@/stores'
import { IsHistoryFlow } from '@/types/enum' import { IsHistoryFlow } from '@/types/enum'
const generateStore = useGenerateStore() const generateStore = useGenerateStore()
const emit = defineEmits(['view-type'])
onMounted(() => {
emit('view-type', 1)
})
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
const query = computed(() => route.query) const query = computed(() => route.query)

View File

@@ -7,10 +7,6 @@
const generateStore = useGenerateStore() const generateStore = useGenerateStore()
const hGenerateStore = useHGenerateStore() const hGenerateStore = useHGenerateStore()
const emit = defineEmits(['view-type'])
onMounted(() => {
emit('view-type', 1)
})
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
const query = computed(() => route.query) const query = computed(() => route.query)