Browse Source

feat: 导览

潮流
jiannibang 4 years ago
parent
commit
6727db4bc2
  1. 22
      src/assets/images/map/hands.svg
  2. 57
      src/base/ShopItem/ShopItem.vue
  3. 93
      src/components/BrandScroll/BrandScroll.vue
  4. 2
      src/components/CarouselWithIntro/CarouselWithIntro.vue
  5. 10
      src/components/Map/Map.vue
  6. 3
      src/components/PublicComponent/SearchBar.vue
  7. 7
      src/components/Search/Search.vue
  8. 2
      src/composables/useStartNavi.js
  9. 3
      src/views/Activities/Activities.vue
  10. 225
      src/views/Guide/Guide.vue
  11. 3
      src/views/Guide/grid.svg
  12. 3
      src/views/Guide/gridActive.svg
  13. 14
      src/views/Guide/list.js
  14. 3
      src/views/Guide/row.svg
  15. 3
      src/views/Guide/rowActive.svg
  16. 3
      src/views/Mall/Mall.vue
  17. 7
      src/views/Member/Member.vue
  18. 3
      src/views/Movie/Movie.vue
  19. 3
      src/views/Parking/Parking.vue

22
src/assets/images/map/hands.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

57
src/base/ShopItem/ShopItem.vue

@ -1,5 +1,5 @@
<template> <template>
<div class="group-item" @click="handleShop">
<div :class="{ 'group-item': true, isRow }" @click="handleShop">
<div class="logo-wrapper"> <div class="logo-wrapper">
<img loading="lazy" :src="config.sourceUrl + shop.logoUrl" alt="" class="shop-logo" /> <img loading="lazy" :src="config.sourceUrl + shop.logoUrl" alt="" class="shop-logo" />
</div> </div>
@ -13,7 +13,8 @@
<script setup> <script setup>
const props = defineProps({ const props = defineProps({
shop: Object, shop: Object,
config: Object
config: Object,
isRow: Boolean
}) })
const emits = defineEmits(['click']) const emits = defineEmits(['click'])
@ -24,16 +25,16 @@ function handleShop() {
<style lang="scss" scoped> <style lang="scss" scoped>
.group-item { .group-item {
width: 212px;
height: 220px;
background: rgba(255, 255, 255, 0.4);
width: 230px;
height: 200px;
background: rgba(255, 255, 255, 0.6);
border-radius: 8px; border-radius: 8px;
overflow: hidden; overflow: hidden;
} }
.logo-wrapper { .logo-wrapper {
width: 212px;
height: 180px;
padding: 15px 31px;
width: 230px;
height: 160px;
padding: 20px 55px;
background-color: #fff; background-color: #fff;
} }
.shop-logo { .shop-logo {
@ -45,15 +46,18 @@ function handleShop() {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
padding: 13px 12px;
height: 40px;
padding: 0 12px;
} }
.shop-name { .shop-name {
font-weight: 700; font-weight: 700;
font-size: 12px;
line-height: 14px;
font-family: 'font_bold';
color: rgba(0, 0, 0, 0.6);
font-size: 14px;
line-height: 16px;
color: rgba(0, 0, 0, 0.8);
flex: 1;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
} }
.name-right { .name-right {
display: flex; display: flex;
@ -69,4 +73,29 @@ function handleShop() {
margin-right: 8px; margin-right: 8px;
height: 14px; height: 14px;
} }
.group-item {
&.isRow {
display: flex;
width: 460px;
height: 76px;
padding-left: 12px;
align-items: center;
.logo-wrapper {
width: 64px;
height: 64px;
flex: 0 0 64px;
padding: 7px;
}
.name {
flex: 1;
padding: 0 24px;
.shop-name {
font-weight: 700;
font-size: 18px;
line-height: 21px;
color: rgba(0, 0, 0, 0.8);
}
}
}
}
</style> </style>

93
src/components/BrandScroll/BrandScroll.vue

@ -1,10 +1,12 @@
<template> <template>
<ScrollView class="brand-scroll" :list="list">
<ScrollView ref="scroll" :class="['brand-scroll', $route.path === '/guide' ? 'guide' : 'brand']" scrollbar :list="list">
<div class="brand-content"> <div class="brand-content">
<div class="groups" v-for="item of list" v-show="item.shopList.length" :key="item.name"> <div class="groups" v-for="item of list" v-show="item.shopList.length" :key="item.name">
<h1 class="info">{{ item.name }}</h1>
<TransitionGroup name="zoom" mode="out-in" tag="div" class="group">
<ShopItem :config="config" :shop="shop" @click="handleShop(shop)" v-for="shop of item.shopList" :key="shop.shopId" />
<h1 class="info">
{{ item.name }}<span class="meta">/ {{ item.shopList.length }}</span>
</h1>
<TransitionGroup name="zoom" mode="out-in" tag="div" :class="{ group: true, isRow }">
<ShopItem :config="config" :isRow="isRow" :shop="shop" @click="handleShop(shop)" v-for="shop of item.shopList" :key="shop.shopId" />
</TransitionGroup> </TransitionGroup>
</div> </div>
</div> </div>
@ -12,41 +14,102 @@
</template> </template>
<script setup> <script setup>
import { ref, nextTick, watch } from 'vue'
import ShopItem from '@/base/ShopItem/ShopItem.vue' import ShopItem from '@/base/ShopItem/ShopItem.vue'
import ScrollView from '@/base/ScrollView/ScrollView.vue' import ScrollView from '@/base/ScrollView/ScrollView.vue'
defineProps({
const scroll = ref(null)
const props = defineProps({
list: Array, list: Array,
config: Object
config: Object,
isRow: Boolean
}) })
const emits = defineEmits(['click']) const emits = defineEmits(['click'])
function handleShop(item) { function handleShop(item) {
emits('click', item) emits('click', item)
} }
watch(
() => props.isRow,
() =>
nextTick(() => {
scroll.value.refresh()
})
)
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.brand-scroll { .brand-scroll {
overflow: hidden; overflow: hidden;
height: 1255px; height: 1255px;
margin-left: 170px;
margin-left: 68px;
&.guide {
height: 770px;
}
&.brand {
height: 1512px;
}
:deep(.bscroll-vertical-scrollbar) {
top: 102px !important;
width: 48px !important;
background: center / 6px 250px no-repeat url(@/assets/images/scrollBar.png);
border-radius: 6px;
opacity: 1 !important;
height: 250px !important;
&::after {
position: absolute;
content: '';
left: 0;
top: 120px;
margin: auto;
width: 48px;
height: 61px;
background: center / cover no-repeat url(@/assets/images/scrollHand.png);
}
.bscroll-indicator {
height: 95px !important;
width: 6px !important;
left: 0;
right: 0;
margin: auto;
background: #ffffff !important;
border-radius: 6px !important;
border: none !important;
}
}
} }
.brand-content { .brand-content {
padding-top: 20px;
padding-top: 40px;
padding-bottom: 180px; padding-bottom: 180px;
} }
.info { .info {
font-weight: 700;
font-size: 24px;
font-family: 'font_bold';
font-weight: 900;
font-size: 32px;
line-height: 38px;
color: rgba(0, 0, 0, 0.8); color: rgba(0, 0, 0, 0.8);
padding-bottom: 20px;
padding-bottom: 24px;
display: flex;
align-items: baseline;
.meta {
margin-left: 12px;
font-weight: 500;
font-size: 20px;
line-height: 23px;
color: rgba(0, 0, 0, 0.6);
}
} }
.group { .group {
display: grid; display: grid;
grid-template-columns: repeat(3, 212px);
grid-template-columns: 1fr 1fr 1fr 1fr;
gap: 24px 8px; gap: 24px 8px;
margin-bottom: 24px;
margin-bottom: 40px;
padding-right: 68px;
}
.isRow {
&.group {
grid-template-columns: 1fr 1fr;
gap: 8px 24px;
}
} }
</style> </style>

2
src/components/CarouselWithIntro/CarouselWithIntro.vue

@ -24,7 +24,7 @@
</template> </template>
<script setup> <script setup>
import { ref, computed, defineAsyncComponent } from 'vue'
import { ref, computed } from 'vue'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { useStore } from '@/store/root' import { useStore } from '@/store/root'
import EffectFade from '@/components/EffectFade/EffectFade.vue' import EffectFade from '@/components/EffectFade/EffectFade.vue'

10
src/components/Map/Map.vue

@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<!-- 地图容器 --> <!-- 地图容器 -->
<div id="mapContainer" />
<div id="mapContainer" :class="$route.path === '/guide' ? 'guide' : ''" />
<!-- 地图弹框 --> <!-- 地图弹框 -->
<div id="shopInfo" class="boxShop boxShop2" :style="{ backgroundImage: `url(${require('@/assets/images/map/map-dialog.png')})` }"> <div id="shopInfo" class="boxShop boxShop2" :style="{ backgroundImage: `url(${require('@/assets/images/map/map-dialog.png')})` }">
@ -42,11 +42,15 @@ function handleDetail() {
#mapContainer { #mapContainer {
position: absolute; position: absolute;
top: 0;
top: 118px;
left: 0; left: 0;
height: 920px;
height: 642px;
width: 1080px; width: 1080px;
z-index: 10; z-index: 10;
overflow: hidden;
&.guide {
top: 408px;
}
} }
#shopInfo { #shopInfo {

3
src/components/PublicComponent/SearchBar.vue

@ -1,6 +1,6 @@
<template> <template>
<div class="row"> <div class="row">
<div class="back" v-if="$route.path !== '/index'" @click="() => $router.push('/')"></div>
<div class="back" v-if="$route.path !== '/index'" @click="() => $router.push('/index')"></div>
<div class="bar" @click="handleSearch"> <div class="bar" @click="handleSearch">
<div class="icon"></div> <div class="icon"></div>
<div class="stick"></div> <div class="stick"></div>
@ -23,6 +23,7 @@ const handleSearch = () => store.SET_SHOW_SEARCH(true)
right: 68px; right: 68px;
height: 100px; height: 100px;
display: flex; display: flex;
z-index: 100;
.back { .back {
width: 130px; width: 130px;
height: 100px; height: 100px;

7
src/components/Search/Search.vue

@ -53,14 +53,10 @@ import { list } from './tabs'
import { useSearchShop } from '@/composables/useSearchShop' import { useSearchShop } from '@/composables/useSearchShop'
import { useFacilityNav } from '@/composables/useFacilityNav' import { useFacilityNav } from '@/composables/useFacilityNav'
import { useStatistics } from '@/composables/useStatistics' import { useStatistics } from '@/composables/useStatistics'
import View from '@/layouts/View.vue'
import Dialog from '@/layouts/Dialog.vue' import Dialog from '@/layouts/Dialog.vue'
import ScrollView from '@/base/ScrollView/ScrollView.vue'
import QuestionList from '@/components/QuestionList/QuestionList.vue'
import FacilityItem from '@/base/FacilityItem/FacilityItem.vue' import FacilityItem from '@/base/FacilityItem/FacilityItem.vue'
import Tabs from '@/components/Tabs/Tabs.vue' import Tabs from '@/components/Tabs/Tabs.vue'
import SearchResultList from '@/components/SearchResultList/SearchResultList.vue' import SearchResultList from '@/components/SearchResultList/SearchResultList.vue'
const QuestionClassify = defineAsyncComponent(() => import('@/components/QuestionClassify/QuestionClassify.vue'))
const KeyboardByLetter = defineAsyncComponent(() => import('@/components/KeyboardByLetter/KeyboardByLetter.vue')) const KeyboardByLetter = defineAsyncComponent(() => import('@/components/KeyboardByLetter/KeyboardByLetter.vue'))
const KeyboardByWritten = defineAsyncComponent(() => import('@/components/KeyboardByWritten/KeyboardByWritten.vue')) const KeyboardByWritten = defineAsyncComponent(() => import('@/components/KeyboardByWritten/KeyboardByWritten.vue'))
const Voice = defineAsyncComponent(() => import('@/components/Voice/Voice.vue')) const Voice = defineAsyncComponent(() => import('@/components/Voice/Voice.vue'))
@ -109,9 +105,6 @@ const clear = () => {
function setSearch() { function setSearch() {
showVoice.value && store.SET_SHOW_VOICE(false) showVoice.value && store.SET_SHOW_VOICE(false)
} }
function setVoice() {
!showVoice.value && store.SET_SHOW_VOICE(true)
}
function close() { function close() {
store.SET_SHOW_SEARCH(false) store.SET_SHOW_SEARCH(false)

2
src/composables/useStartNavi.js

@ -1,4 +1,4 @@
import { onMounted, onBeforeUnmount, ref, computed } from 'vue'
import { onMounted, onBeforeUnmount, ref } from 'vue'
export const useStartNavi = (shop, currentFloor, setPauseRefFn) => { export const useStartNavi = (shop, currentFloor, setPauseRefFn) => {
const pathShopList = ref([]) const pathShopList = ref([])

3
src/views/Activities/Activities.vue

@ -21,5 +21,4 @@ function _getActivityList(type) {
} }
</script> </script>
<style lang="scss" scoped>
</style>
<style lang="scss" scoped></style>

225
src/views/Guide/Guide.vue

@ -1,15 +1,14 @@
<template> <template>
<View title="地图导览" sub-title="map guide" :show-input="false">
<View>
<Teleport to="body"> <Teleport to="body">
<div class="floors-list animate__fast animate__animated animate__fadeInRight">
<div class="floors-list animate__fast animate__animated animate__fadeIn">
<div <div
@click="handleFloor(item, index)" @click="handleFloor(item, index)"
:class="{ active: floorIdx === index }"
:class="{ active: floorIdx === index, current: currentFloor.floorCode === item.floorCode }"
class="floors-item" class="floors-item"
v-for="(item, index) of currentBuildingFloorsList" v-for="(item, index) of currentBuildingFloorsList"
:key="item.floorCode" :key="item.floorCode"
> >
<img src="../../assets/images/guide/guide_zhong.png" v-if="currentFloor.floorCode === item.floorCode" class="current" alt="" />
{{ item.floor }} {{ item.floor }}
</div> </div>
</div> </div>
@ -23,22 +22,24 @@
<span class="map-name">{{ switchLanguage(item, 'name') }}</span> <span class="map-name">{{ switchLanguage(item, 'name') }}</span>
</div> </div>
</div> </div>
<div class="facility-list">
<FacilityItem class="margin" @click="_handleFacility(item)" :facility="item" v-for="item of facilityList" :key="item.title" />
</div>
<img src="../../assets/images/map/hands.svg" alt="" class="hands" /> <img src="../../assets/images/map/hands.svg" alt="" class="hands" />
</div> </div>
</Teleport> </Teleport>
<div class="shop-list-wrapper"> <div class="shop-list-wrapper">
<ScrollView class="shop-scroll" :list="selectedShopList">
<TransitionGroup name="zoom" tag="div" class="shop-content">
<ShopItem @click="handleShop(item)" :shop="item" :config="config" v-for="item of selectedShopList" :key="item.shopId" />
</TransitionGroup>
</ScrollView>
<BrandScroll @click="handleShop" :list="selectedShopList" :isRow="isRow" :config="config" />
<div class="switch">
<div :class="{ btn: true, active: !isRow }" @click="isRow = false">
<img v-if="isRow" src="./grid.svg" />
<img v-else src="./gridActive.svg" />
</div>
<div :class="{ btn: true, active: isRow }" @click="isRow = true">
<img v-if="!isRow" src="./row.svg" />
<img v-else src="./rowActive.svg" />
</div>
</div>
</div> </div>
</View> </View>
<MockInput class="position" />
</template> </template>
<script setup> <script setup>
@ -46,25 +47,24 @@ import { ref, watch, onBeforeUnmount } from 'vue'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { useStore } from '@/store/root' import { useStore } from '@/store/root'
import { list, RESET, DIRECTION, ACTIVITY_BRAND } from './list' import { list, RESET, DIRECTION, ACTIVITY_BRAND } from './list'
import { useFacilityNav } from '@/composables/useFacilityNav'
import View from '@/layouts/View.vue' import View from '@/layouts/View.vue'
import ScrollView from '@/base/ScrollView/ScrollView.vue'
import FacilityItem from '@/base/FacilityItem/FacilityItem.vue'
import { hideMapDialog } from '@/composables/useInitMap' import { hideMapDialog } from '@/composables/useInitMap'
import MockInput from '@/components/MockInput/MockInput.vue'
import ShopItem from '@/base/ShopItem/ShopItem.vue'
import { getBrandListByFormat } from '@/http/brand/api'
import BrandScroll from '@/components/BrandScroll/BrandScroll.vue'
const shopList = ref([])
const isRow = ref(false)
const store = useStore() const store = useStore()
const { currentBuildingFloorsList, currentFloor, shopList, config, facilityList } = storeToRefs(store)
const { _handleFacility } = useFacilityNav()
const { currentBuildingFloorsList, currentFloor, config } = storeToRefs(store)
try { try {
window.Map_QM?.showFloor?.(currentFloor.value.floorOrder) window.Map_QM?.showFloor?.(currentFloor.value.floorOrder)
} catch (error) { } catch (error) {
console.log('error: ', error) console.log('error: ', error)
} }
getBrandListByFormat().then(({ data }) => {
shopList.value = data.list
})
const selectedShopList = ref([]) const selectedShopList = ref([])
const idle = ref(null) const idle = ref(null)
@ -131,7 +131,10 @@ function handleFloor(item, index) {
window.Map_QM.showFloor(item.floorOrder) window.Map_QM.showFloor(item.floorOrder)
idle.value = requestIdleCallback(() => { idle.value = requestIdleCallback(() => {
floorIdx.value = index floorIdx.value = index
selectedShopList.value = shopList.value.filter(shop => shop.floor === item.floor)
selectedShopList.value = shopList.value.map(brand => ({
...brand,
shopList: brand.shopList.filter(shop => shop.floor === item.floor)
}))
}) })
} }
@ -140,7 +143,10 @@ function filterAboutCurrentInfo() {
cancelIdleCallback(idle.value) cancelIdleCallback(idle.value)
idle.value = requestIdleCallback(() => { idle.value = requestIdleCallback(() => {
floorIdx.value = currentBuildingFloorsList.value.findIndex(item => item.floorCode === currentFloor.value.floorCode) floorIdx.value = currentBuildingFloorsList.value.findIndex(item => item.floorCode === currentFloor.value.floorCode)
selectedShopList.value = shopList.value.filter(item => item.floor === currentFloor.value.floor)
selectedShopList.value = shopList.value.map(brand => ({
...brand,
shopList: brand.shopList.filter(shop => shop.floor === currentFloor.value.floor)
}))
}) })
} }
@ -166,38 +172,54 @@ watch(
<style lang="scss" scoped> <style lang="scss" scoped>
.floors-list { .floors-list {
position: absolute; position: absolute;
right: 4px;
top: 320px;
left: 0;
right: 0;
top: 1050px;
height: 100px;
z-index: 60; z-index: 60;
display: flex;
background: linear-gradient(113.71deg, #435acd 0%, #749cf3 100%);
.floors-item { .floors-item {
flex: 1;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: flex-end;
justify-content: center;
position: relative; position: relative;
margin-bottom: 12px;
min-width: 98px;
height: 48px;
border-radius: 8px;
height: 100px;
font-family: 'Montserrat';
font-style: normal;
font-weight: 700; font-weight: 700;
font-family: 'font_bold';
padding-left: 56px;
padding-right: 21px;
font-size: 18px;
line-height: 21px;
color: var(--color-black-opacity-6);
font-size: 28px;
line-height: 96%;
/* identical to box height, or 27px */
text-align: center;
/* W/100% */
color: #ffffff;
transition: all 0.5s; transition: all 0.5s;
.current {
&.current {
background: rgba(0, 0, 0, 0.1);
&::after {
position: absolute; position: absolute;
top: 50%;
left: 24px;
transform: translateY(-50%);
width: 16px;
left: 0;
right: 0;
bottom: 0;
height: 20px;
display: flex;
content: '您在本层';
background: linear-gradient(99.5deg, #f0b92b 0%, #f9d556 100%);
font-weight: 700;
font-size: 12px;
color: rgba(0, 0, 0, 0.8);
align-items: center;
justify-content: center;
}
} }
&.active { &.active {
background: var(--color-linear-lightgoldenyellow);
color: var(--color-black-opacity-8);
font-size: 24px;
font-family: 'font_bold';
background: linear-gradient(180deg, rgba(255, 255, 255, 0.8) 0%, #ffffff 100%);
color: rgba(0, 0, 0, 0.8);
} }
} }
} }
@ -206,80 +228,39 @@ watch(
width: 1080px; width: 1080px;
height: 914px; height: 914px;
left: 0px; left: 0px;
top: 1006px;
top: 1150px;
background: linear-gradient(180deg, rgba(0, 0, 0, 0.1) 0%, rgba(0, 0, 0, 0) 100%); background: linear-gradient(180deg, rgba(0, 0, 0, 0.1) 0%, rgba(0, 0, 0, 0) 100%);
.shop-scroll {
height: 914px;
overflow: hidden;
margin-left: 170px;
}
}
.position {
.switch {
display: flex;
position: absolute; position: absolute;
left: 170px;
top: 968px;
}
.shop-content {
display: grid;
grid-template-columns: repeat(4, 212px);
gap: 24px 8px;
padding-top: 134px;
padding-bottom: 24px;
padding-right: 40px;
}
.shop-item {
top: 35px;
right: 68px;
.btn {
display: flex; display: flex;
align-items: center;
margin-bottom: 6px;
padding: 12px 0;
}
.logo-wrapper {
flex-shrink: 0;
width: 48px; width: 48px;
height: 48px; height: 48px;
background-color: var(--color-white-opacity);
background: rgba(255, 255, 255, 0.4);
border-radius: 8px; border-radius: 8px;
padding: 4px;
margin-right: 24px;
.logo {
width: 100%;
height: 100%;
object-fit: contain;
justify-content: center;
align-items: center;
img {
width: 24px;
height: 24px;
} }
&.active {
background: #ffffff;
} }
.shop-right {
flex: 1;
} }
.name-info {
display: flex;
align-items: center;
justify-content: space-between;
.btn + .btn {
margin-left: 8px;
} }
.name {
font-weight: 700;
font-size: 14px;
color: var(--color-black-opacity-6);
font-family: 'font_bold';
padding-bottom: 6px;
} }
.house-num {
font-weight: 700;
font-family: 'font_bold';
font-size: 14px;
line-height: 200%;
color: var(--color-black-opacity-4);
}
.industry {
display: flex;
align-items: center;
font-size: 12px;
color: var(--color-black-opacity-4);
.shop-scroll {
height: 914px;
overflow: hidden;
margin-left: 170px;
} }
.industru-icon {
margin-left: 8px;
width: 14px;
} }
.control-area { .control-area {
@ -288,45 +269,39 @@ watch(
align-items: flex-start; align-items: flex-start;
justify-content: space-between; justify-content: space-between;
height: 104px; height: 104px;
left: 170px;
right: 24px; right: 24px;
top: 854px;
top: 952px;
z-index: 51; z-index: 51;
.hands { .hands {
position: fixed; position: fixed;
top: 37px;
right: 170px;
top: 408px;
right: 68px;
width: 246px; width: 246px;
height: 80px;
z-index: 51; z-index: 51;
} }
} }
.map-control-wrapper { .map-control-wrapper {
display: flex; display: flex;
margin-right: 35px;
} }
.map-item { .map-item {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
margin-right: 16px;
margin-left: 12px;
} }
.map-icon { .map-icon {
margin-bottom: 6px;
width: 44px;
margin-bottom: 8px;
width: 52px;
} }
.map-name { .map-name {
font-weight: 700;
font-size: 12px; font-size: 12px;
color: var(--color-black-opacity-4);
transform: scale(0.83);
}
.facility-list {
display: flex;
align-items: flex-start;
}
.margin {
margin-right: 16px;
line-height: 14px;
text-align: center;
color: rgba(0, 0, 0, 0.6);
} }
</style> </style>

3
src/views/Guide/grid.svg

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3 3H11V11H3V3ZM3 13H11V21H3V13ZM13 3H21V11H13V3ZM13 13H21V21H13V13ZM15 5V9H19V5H15ZM15 15V19H19V15H15ZM5 5V9H9V5H5ZM5 15V19H9V15H5Z" fill="black" fill-opacity="0.4"/>
</svg>

After

Width:  |  Height:  |  Size: 280 B

3
src/views/Guide/gridActive.svg

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3 3H11V11H3V3ZM3 13H11V21H3V13ZM13 3H21V11H13V3ZM13 13H21V21H13V13ZM15 5V9H19V5H15ZM15 15V19H19V15H15ZM5 5V9H9V5H5ZM5 15V19H9V15H5Z" fill="black" fill-opacity="0.8"/>
</svg>

After

Width:  |  Height:  |  Size: 280 B

14
src/views/Guide/list.js

@ -3,12 +3,6 @@ export const DIRECTION = '我的方向'
export const ACTIVITY_BRAND = '活动品牌' export const ACTIVITY_BRAND = '活动品牌'
export const list = [ export const list = [
{
name: RESET,
nameEn: 'reset',
icon: require('@/assets/images/guide/reset.svg'),
iconActive: require('@/assets/images/guide/reset_active.svg')
},
{ {
name: DIRECTION, name: DIRECTION,
nameEn: 'direction', nameEn: 'direction',
@ -16,9 +10,9 @@ export const list = [
iconActive: require('@/assets/images/guide/direction_active.svg') iconActive: require('@/assets/images/guide/direction_active.svg')
}, },
{ {
name: ACTIVITY_BRAND,
nameEn: 'activity',
icon: require('@/assets/images/guide/brand-icon.svg'),
iconActive: require('@/assets/images/guide/brand-icon_active.svg')
name: RESET,
nameEn: 'reset',
icon: require('@/assets/images/guide/reset.svg'),
iconActive: require('@/assets/images/guide/reset_active.svg')
} }
] ]

3
src/views/Guide/row.svg

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3 4H21V6H3V4ZM3 11H21V13H3V11ZM3 18H21V20H3V18Z" fill="black" fill-opacity="0.4"/>
</svg>

After

Width:  |  Height:  |  Size: 196 B

3
src/views/Guide/rowActive.svg

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3 4H21V6H3V4ZM3 11H21V13H3V11ZM3 18H21V20H3V18Z" fill="black" fill-opacity="0.8"/>
</svg>

After

Width:  |  Height:  |  Size: 196 B

3
src/views/Mall/Mall.vue

@ -17,5 +17,4 @@ getMallInfoList().then(({ data }) => {
}) })
</script> </script>
<style lang="scss" scoped>
</style>
<style lang="scss" scoped></style>

7
src/views/Member/Member.vue

@ -5,8 +5,8 @@
</template> </template>
<script setup> <script setup>
import { ref, defineAsyncComponent } from 'vue'
import { getActivityList, getMemberBenefits } from '@/http/api'
import { ref } from 'vue'
import { getMemberBenefits } from '@/http/api'
import View from '@/layouts/View.vue' import View from '@/layouts/View.vue'
import CarouselWithIntro from '@/components/CarouselWithIntro/CarouselWithIntro.vue' import CarouselWithIntro from '@/components/CarouselWithIntro/CarouselWithIntro.vue'
@ -19,5 +19,4 @@ function _getMemberBenefits() {
} }
</script> </script>
<style lang="scss" scoped>
</style>
<style lang="scss" scoped></style>

3
src/views/Movie/Movie.vue

@ -17,5 +17,4 @@ getCinemaInfo().then(({ data }) => {
}) })
</script> </script>
<style lang="scss" scoped>
</style>
<style lang="scss" scoped></style>

3
src/views/Parking/Parking.vue

@ -16,5 +16,4 @@ getParkingList().then(({ data }) => {
}) })
</script> </script>
<style lang="scss" scoped>
</style>
<style lang="scss" scoped></style>

Loading…
Cancel
Save