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>
<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">
<component :is="Component" :key="route.name" />
</keep-alive>
@@ -14,6 +14,13 @@ import { useRoute } from 'vue-router'
import { useRouter } from 'vue-router'
import MyEvent from '@/utils/myEvent'
const props = defineProps({
viewType: {
type: String,
default: ''
}
})
const route = useRoute()
// 缓存的组件名称列表
@@ -59,17 +66,6 @@ onMounted(() => {
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({
clearCache,

View File

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

View File

@@ -7,16 +7,8 @@
const router = useRouter()
const route = useRoute()
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)
onMounted(() => {
emit('view-type', 1)
})
</script>
<template>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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