|
|
|
@ -6,8 +6,8 @@ |
|
|
|
</Transition> |
|
|
|
|
|
|
|
<!-- 区域列表 --> |
|
|
|
<Transition appear enter-active-class="animate__animated animate__fadeIn"> |
|
|
|
<Area v-if="floorIdx !== 6" :area-name="areaName" @change-area="changeAreas" /> |
|
|
|
<Transition appear enter-active-class="animate__animated animate__fadeIn" leave-active-class="animate__animated animate__fadeOut"> |
|
|
|
<Area v-if="floorIdx === 3 || floorIdx === 5" :area-name="areaName" @change-area="changeAreas" /> |
|
|
|
</Transition> |
|
|
|
|
|
|
|
<!-- 店铺列表 --> |
|
|
|
@ -27,6 +27,14 @@ |
|
|
|
</div> |
|
|
|
</ScrollView> |
|
|
|
<div class="faclists"> |
|
|
|
<Transition appear enter-active-class="animate__animated animate__fadeIn" leave-active-class="animate__animated animate__fadeOut"> |
|
|
|
<div v-if="showFoodIn" class="reset-dir" @click="handleMapIcon(foodIn, -1)"> |
|
|
|
<div class="top" :class="mapIdx === -1 && 'ac'"> |
|
|
|
<img :src="foodIn.icon" alt="" /> |
|
|
|
</div> |
|
|
|
<div class="txt">{{ switchLanguage(foodIn, 'name') }}</div> |
|
|
|
</div> |
|
|
|
</Transition> |
|
|
|
<div v-for="(item, index) in list" :key="item.name" class="reset-dir" @click="handleMapIcon(item, index)"> |
|
|
|
<div class="top" :class="mapIdx === index && 'ac'"> |
|
|
|
<img :src="item.icon" alt="" /> |
|
|
|
@ -73,7 +81,7 @@ |
|
|
|
|
|
|
|
<!-- 区域缩略图 --> |
|
|
|
<Transition appear enter-active-class="animate__animated animate__fadeIn"> |
|
|
|
<img v-if="floorIdx !== 6" class="area" :src="areaPic[areaName]" alt="" /> |
|
|
|
<img v-if="floorIdx === 3 || floorIdx === 5" class="area" :src="areaPic[areaName]" alt="" /> |
|
|
|
</Transition> |
|
|
|
|
|
|
|
<!-- 人行道等 --> |
|
|
|
@ -105,10 +113,11 @@ import ShopList from './ShopList.vue' |
|
|
|
import Place from './Place.vue' |
|
|
|
import ArtList from './ArtList.vue' |
|
|
|
import FloorPicList from './FloorPicList.vue' |
|
|
|
import { MapControl } from './list' |
|
|
|
const store = useRootStore() |
|
|
|
const { switchLanguage } = useSwitchLanguage() |
|
|
|
const { language, facilityList, artPlaceList, currentArtName } = toRefs(store) |
|
|
|
const { floorIdx, areaName, selectedShopList, changeFloor, changeArea, changeFoodShopList } = useGuideFilterShop() //筛选店铺 |
|
|
|
const { floorIdx, areaName, selectedShopList, changeFloor, changeArea, changeFoodShopList, showFoodIn } = useGuideFilterShop() //筛选店铺 |
|
|
|
const { handleMapIcon, list, mapIdx } = useGuideMapOperation(changeFloor, changeFoodShopList) //复位 位置等操作 |
|
|
|
const { handleFacility } = useFacilityNav() //公共设施导航 |
|
|
|
|
|
|
|
@ -123,14 +132,14 @@ getAreaPicList().then(({ data }) => { |
|
|
|
// 切换楼层 |
|
|
|
function changeFloors(floorOrder: number) { |
|
|
|
changeFloor(floorOrder) |
|
|
|
mapIdx.value = -1 |
|
|
|
mapIdx.value = -2 |
|
|
|
currentArtName.value && store.SET_CURRENT_ART_NAME('') |
|
|
|
} |
|
|
|
|
|
|
|
// 切换区域 |
|
|
|
function changeAreas(name: string) { |
|
|
|
changeArea(name) |
|
|
|
mapIdx.value = -1 |
|
|
|
mapIdx.value = -2 |
|
|
|
currentArtName.value && store.SET_CURRENT_ART_NAME('') |
|
|
|
} |
|
|
|
|
|
|
|
@ -158,6 +167,13 @@ function show(item: ArtPlace) { |
|
|
|
store.SET_CURRENT_ART_NAME(item.content.name) |
|
|
|
store.SET_SHOP(shop) |
|
|
|
} |
|
|
|
|
|
|
|
const foodIn = { |
|
|
|
name: MapControl.FOOD, |
|
|
|
nameEn: 'food', |
|
|
|
icon: require('@/assets/images/guide/food.svg'), |
|
|
|
iconActive: require('@/assets/images/guide/brand_active.svg') |
|
|
|
} |
|
|
|
</script> |
|
|
|
|
|
|
|
<style lang="scss" scoped> |
|
|
|
@ -240,7 +256,7 @@ function show(item: ArtPlace) { |
|
|
|
.line { |
|
|
|
width: 1px; |
|
|
|
height: 32px; |
|
|
|
margin: 0 32px 0 16px; |
|
|
|
margin: 8px 32px 0 16px; |
|
|
|
background: rgb(0 0 0 / 10%); |
|
|
|
} |
|
|
|
.myScroll { |
|
|
|
@ -339,24 +355,5 @@ function show(item: ArtPlace) { |
|
|
|
width: 256px; |
|
|
|
height: 100px; |
|
|
|
} |
|
|
|
|
|
|
|
.floor-pic-list { |
|
|
|
position: fixed; |
|
|
|
top: 232px; |
|
|
|
right: 50px; |
|
|
|
z-index: 998; |
|
|
|
.floor { |
|
|
|
width: 296px; |
|
|
|
height: 86px; |
|
|
|
padding: 3px 0; |
|
|
|
margin-bottom: 8px; |
|
|
|
background: linear-gradient(270deg, rgb(138 118 106 / 10%) 0%, rgb(138 118 106 / 0%) 100%); |
|
|
|
border-radius: 0 24px 24px 0; |
|
|
|
img { |
|
|
|
width: 200px; |
|
|
|
height: 80px; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
</style> |
|
|
|
|