|
@@ -8,65 +8,44 @@
|
|
|
@refresh="onRefresh"
|
|
@refresh="onRefresh"
|
|
|
pageType="light"
|
|
pageType="light"
|
|
|
>
|
|
>
|
|
|
- <div class="filter-bg" :style="{ backgroundImage: `url(${bgImg})` }"></div>
|
|
|
|
|
- <div class="welcom">
|
|
|
|
|
- <div class="left">
|
|
|
|
|
- <div class="text1">WELCOME</div>
|
|
|
|
|
- <div class="text2" :class="{ text3: isLogin }">{{ isLogin ? `${userInfo.nickname}!` : '探索者!' }}</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <van-image
|
|
|
|
|
- width="38"
|
|
|
|
|
- height="38"
|
|
|
|
|
- :radius="32"
|
|
|
|
|
- :class="{ activeAvatar: isLogin && userInfo.useCollectionPic }"
|
|
|
|
|
- :src="isLogin ? userInfo.avatar : require('@assets/img_default_photo.png')"
|
|
|
|
|
- ></van-image>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
- <swiper pagination :space-between="16" class="mySwiper" :autoplay="{ delay: 3500 }" v-if="banners.length > 0">
|
|
|
|
|
|
|
+ <swiper :space-between="16" class="mySwiper" :autoplay="{ delay: 3500 }" v-if="banners.length > 0">
|
|
|
<swiper-slide v-for="item in banners" :key="item.id">
|
|
<swiper-slide v-for="item in banners" :key="item.id">
|
|
|
<product-small :info="item"></product-small>
|
|
<product-small :info="item"></product-small>
|
|
|
</swiper-slide>
|
|
</swiper-slide>
|
|
|
</swiper>
|
|
</swiper>
|
|
|
|
|
|
|
|
- <!-- <div class="tabs" v-if="!empty">
|
|
|
|
|
- <div class="tab" :class="{ active: active === 0 }" @click="active = 0">数字藏品</div>
|
|
|
|
|
- <div class="tab" :class="{ active: active === 1 }" @click="active = 1">产品新闻端</div>
|
|
|
|
|
- </div> -->
|
|
|
|
|
|
|
+ <div class="search">
|
|
|
|
|
+ <van-button type="primary" size="small" :icon="require('@assets/png-chuangjianfangjian.png')">
|
|
|
|
|
+ 创建房间</van-button
|
|
|
|
|
+ >
|
|
|
|
|
|
|
|
- <div class="list-top">
|
|
|
|
|
- <van-badge :dot="isNewCollections" :offset="[-35, 15]">
|
|
|
|
|
- <div class="text1" :class="{ active: active === 0 }" @click="changeActive(0)">数字文创</div>
|
|
|
|
|
- </van-badge>
|
|
|
|
|
- <van-badge :dot="isNewNews" :offset="[-35, 15]">
|
|
|
|
|
- <div class="text1" :class="{ active: active === 1 }" @click="changeActive(1)">绿洲头条</div>
|
|
|
|
|
- </van-badge>
|
|
|
|
|
|
|
+ <van-search v-model="search" left-icon=" " show-action placeholder="输入房间号码" action-text="搜索" />
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- <swiper class="listSwiper" autoHeight @swiper="setSwiperRef" @slideChange="changeSwiper">
|
|
|
|
|
- <swiper-slide>
|
|
|
|
|
- <product-large
|
|
|
|
|
- v-for="(item, index) in products"
|
|
|
|
|
- :key="index"
|
|
|
|
|
- v-model:info="products[index].obj"
|
|
|
|
|
- :type="item.type"
|
|
|
|
|
- ></product-large
|
|
|
|
|
- ></swiper-slide>
|
|
|
|
|
- <swiper-slide>
|
|
|
|
|
- <news-small
|
|
|
|
|
- v-for="(item, index) in news"
|
|
|
|
|
- :key="index"
|
|
|
|
|
- v-model:info="news[index].obj"
|
|
|
|
|
- type="light"
|
|
|
|
|
- ></news-small>
|
|
|
|
|
- <!-- <product-large
|
|
|
|
|
- v-for="(item, index) in news"
|
|
|
|
|
- :key="index"
|
|
|
|
|
- v-model:info="news[index].obj"
|
|
|
|
|
- :type="item.type"
|
|
|
|
|
- ></product-large> -->
|
|
|
|
|
- </swiper-slide>
|
|
|
|
|
- </swiper>
|
|
|
|
|
|
|
+ <div class="room-list">
|
|
|
|
|
+ <div class="room-title">房间列表</div>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="tab-content">
|
|
|
|
|
+ <van-tabs swipeable sticky v-model:active="active" shrink line-width="34px" line-height="2px">
|
|
|
|
|
+ <van-tab title="对局大厅">
|
|
|
|
|
+ <div class="van-list">
|
|
|
|
|
+ <room-info v-for="i in 10" :key="i"></room-info>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </van-tab>
|
|
|
|
|
+ <van-tab title="我的房间">
|
|
|
|
|
+ <div class="van-list">
|
|
|
|
|
+ <room-info></room-info>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </van-tab>
|
|
|
|
|
+ <template #nav-right>
|
|
|
|
|
+ <van-tabs class="tabs" v-model:active="type" type="card">
|
|
|
|
|
+ <van-tab title="QQ区"></van-tab>
|
|
|
|
|
+ <van-tab title="微信区"></van-tab>
|
|
|
|
|
+ </van-tabs>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </van-tabs>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
</van-pull-refresh>
|
|
</van-pull-refresh>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
@@ -83,11 +62,9 @@ import SwiperCore, { Pagination, Autoplay } from 'swiper';
|
|
|
SwiperCore.use([Pagination, Autoplay]);
|
|
SwiperCore.use([Pagination, Autoplay]);
|
|
|
|
|
|
|
|
import banner from '../mixins/banner';
|
|
import banner from '../mixins/banner';
|
|
|
-import ProductLarge from '../components/product/productLarge.vue';
|
|
|
|
|
import ProductSmall from '../components/product/productSmall.vue';
|
|
import ProductSmall from '../components/product/productSmall.vue';
|
|
|
import { mapState } from 'vuex';
|
|
import { mapState } from 'vuex';
|
|
|
-import NewsInfo from '../components/product/NewsInfo';
|
|
|
|
|
-import NewsSmall from '../components/product/NewsSmall.vue';
|
|
|
|
|
|
|
+import RoomInfo from '../components/RoomInfo.vue';
|
|
|
|
|
|
|
|
export default {
|
|
export default {
|
|
|
name: 'home',
|
|
name: 'home',
|
|
@@ -96,168 +73,42 @@ export default {
|
|
|
components: {
|
|
components: {
|
|
|
Swiper,
|
|
Swiper,
|
|
|
SwiperSlide,
|
|
SwiperSlide,
|
|
|
- ProductLarge,
|
|
|
|
|
ProductSmall,
|
|
ProductSmall,
|
|
|
- NewsSmall
|
|
|
|
|
|
|
+ RoomInfo
|
|
|
},
|
|
},
|
|
|
computed: {
|
|
computed: {
|
|
|
- ...mapState(['userInfo']),
|
|
|
|
|
- isNewCollections() {
|
|
|
|
|
- let products = [...this.products];
|
|
|
|
|
- let flag = false;
|
|
|
|
|
- products.forEach(item => {
|
|
|
|
|
- if (item.createdAt) {
|
|
|
|
|
- if (this.dayjs().isBefore(this.dayjs(item.createdAt, 'YYYY-MM-DD HH:mm:ss').add(6, 'hours'))) {
|
|
|
|
|
- flag = true;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- return flag;
|
|
|
|
|
- },
|
|
|
|
|
- isNewNews() {
|
|
|
|
|
- let news = [...this.news];
|
|
|
|
|
- let flag = false;
|
|
|
|
|
- news.forEach(item => {
|
|
|
|
|
- if (item.createdAt) {
|
|
|
|
|
- if (this.dayjs().isBefore(this.dayjs(item.createdAt, 'YYYY-MM-DD HH:mm:ss').add(6, 'hours'))) {
|
|
|
|
|
- flag = true;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- return flag;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ ...mapState(['userInfo'])
|
|
|
},
|
|
},
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
banners: [],
|
|
banners: [],
|
|
|
- products: [],
|
|
|
|
|
|
|
+ scrollTop: 0,
|
|
|
|
|
+ search: '',
|
|
|
active: 0,
|
|
active: 0,
|
|
|
- news: [],
|
|
|
|
|
- loading: false,
|
|
|
|
|
- finished: false,
|
|
|
|
|
- page: 0,
|
|
|
|
|
- empty: false,
|
|
|
|
|
- bgImg: '',
|
|
|
|
|
- swiperRef: null,
|
|
|
|
|
- scrollTop: 0
|
|
|
|
|
|
|
+ type: 0
|
|
|
};
|
|
};
|
|
|
},
|
|
},
|
|
|
mounted() {
|
|
mounted() {
|
|
|
- if (window.cordova && StatusBar && StatusBar.isVisible) {
|
|
|
|
|
- StatusBar.styleDefault();
|
|
|
|
|
- }
|
|
|
|
|
this.getInit();
|
|
this.getInit();
|
|
|
- setTimeout(() => {
|
|
|
|
|
- this.showTips();
|
|
|
|
|
- }, 500);
|
|
|
|
|
|
|
|
|
|
- this.$nextTick(() => {
|
|
|
|
|
- this.$el.parentNode.childNodes[1].className = this.$el.parentNode.childNodes[1].className.replace(
|
|
|
|
|
- / bgBack/,
|
|
|
|
|
- ''
|
|
|
|
|
- );
|
|
|
|
|
- });
|
|
|
|
|
// this.$http.get('sysConfig/get/home_bg').then(res => {
|
|
// this.$http.get('sysConfig/get/home_bg').then(res => {
|
|
|
// this.bgImg = res.value || '';
|
|
// this.bgImg = res.value || '';
|
|
|
// });
|
|
// });
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
- changeSwiper() {
|
|
|
|
|
- console.log(this.swiperRef.activeIndex);
|
|
|
|
|
- this.active = this.swiperRef.activeIndex;
|
|
|
|
|
- },
|
|
|
|
|
- showTips() {
|
|
|
|
|
- let inApp = /#cordova#/i.test(navigator.userAgent);
|
|
|
|
|
- let inIos = /iPhone|iPad|iPod/i.test(navigator.userAgent);
|
|
|
|
|
- if (inApp && '1' !== window.localStorage.getItem('AppTips')) {
|
|
|
|
|
- (inIos
|
|
|
|
|
- ? Promise.resolve()
|
|
|
|
|
- : this.$dialog
|
|
|
|
|
- .confirm({
|
|
|
|
|
- title: 'RAEX宇宙服务协议和隐私政策',
|
|
|
|
|
- message: `在您使用我的各项服务之前,请务必审慎阅读、充分理解<a href="javascript:void(0)" onclick="goFetch('/agreement?page=service')" >《用户隐私协议》</a>、<a href="javascript:void(0)" onclick="goFetch('/agreement')" >《隐私政策》</a>的条款。并且我们会申请获取您的设备信息,以向您提供安全风控服务。同时您应特别注意前述协议中免除或者限制我们责任的条款、对您权利进行限制的条款。如您已详细阅读并同意RAEX宇宙用户协议、隐私政策,请点击【同意并继续】开始使用我们的服务。`,
|
|
|
|
|
- confirmButtonText: '同意并继续',
|
|
|
|
|
- cancelButtonText: '不同意',
|
|
|
|
|
- allowHtml: true
|
|
|
|
|
- })
|
|
|
|
|
- .then(() => {
|
|
|
|
|
- return this.$dialog.confirm({
|
|
|
|
|
- title: '温馨提示',
|
|
|
|
|
- message:
|
|
|
|
|
- '收集个人信息为我们向您提供服务所必须哦。我们仅会将您的个人信息用于为您提供服务,若不同意此协议,我们将无法为您提供服务并退出应用。',
|
|
|
|
|
- confirmButtonText: '同意',
|
|
|
|
|
- cancelButtonText: '不同意'
|
|
|
|
|
- });
|
|
|
|
|
- })
|
|
|
|
|
- )
|
|
|
|
|
- .then(() => {
|
|
|
|
|
- window.localStorage.setItem('AppTips', '1');
|
|
|
|
|
- try {
|
|
|
|
|
- window.cordova.plugins.UmengPlugin.initPush(deviceToken => {
|
|
|
|
|
- console.log('deviceToken=' + deviceToken);
|
|
|
|
|
- });
|
|
|
|
|
- } catch (e) {}
|
|
|
|
|
- })
|
|
|
|
|
- .catch(() => {
|
|
|
|
|
- navigator.app.exitApp();
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
- if (!window.localStorage.getItem('AppTips') && !inIos && inApp) {
|
|
|
|
|
- this.$dialog
|
|
|
|
|
- .confirm({
|
|
|
|
|
- title: 'RAEX宇宙服务协议和隐私政策',
|
|
|
|
|
- message: `在您使用我的各项服务之前,请务必审慎阅读、充分理解<a href="javascript:void(0)" onclick="goFetch('/agreement?page=service')" >《用户隐私协议》</a>、<a href="javascript:void(0)" onclick="goFetch('/agreement')" >《隐私政策》</a>的条款。并且我们会申请获取您的设备信息,以向您提供安全风控服务。同时您应特别注意前述协议中免除或者限制我们责任的条款、对您权利进行限制的条款。如您已详细阅读并同意RAEX宇宙用户协议、隐私政策,请点击【同意并继续】开始使用我们的服务。`,
|
|
|
|
|
- confirmButtonText: '同意并继续',
|
|
|
|
|
- cancelButtonText: '不同意',
|
|
|
|
|
- allowHtml: true
|
|
|
|
|
- })
|
|
|
|
|
- .then(() => {
|
|
|
|
|
- return this.$dialog.confirm({
|
|
|
|
|
- title: '温馨提示',
|
|
|
|
|
- message:
|
|
|
|
|
- '收集个人信息为我们向您提供服务所必须哦。我们仅会将您的个人信息用于为您提供服务,若不同意此协议,我们将无法为您提供服务并退出应用。',
|
|
|
|
|
- confirmButtonText: '同意',
|
|
|
|
|
- cancelButtonText: '不同意'
|
|
|
|
|
- });
|
|
|
|
|
- })
|
|
|
|
|
- .then(() => {
|
|
|
|
|
- window.localStorage.setItem('AppTips', '1');
|
|
|
|
|
- try {
|
|
|
|
|
- window.cordova.plugins.UmengPlugin.initPush(deviceToken => {
|
|
|
|
|
- console.log('deviceToken=' + deviceToken);
|
|
|
|
|
- });
|
|
|
|
|
- } catch (e) {}
|
|
|
|
|
- })
|
|
|
|
|
- .catch(() => {
|
|
|
|
|
- navigator.app.exitApp();
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
getInit() {
|
|
getInit() {
|
|
|
this.$toast.loading({
|
|
this.$toast.loading({
|
|
|
message: '加载中...',
|
|
message: '加载中...',
|
|
|
forbidClick: true
|
|
forbidClick: true
|
|
|
});
|
|
});
|
|
|
- return Promise.all([
|
|
|
|
|
- this.getBanner(),
|
|
|
|
|
- this.getProduct().then(res => {
|
|
|
|
|
- this.products = res.filter(item => {
|
|
|
|
|
- return item.type === 'collection';
|
|
|
|
|
- });
|
|
|
|
|
- this.news = res.filter(item => {
|
|
|
|
|
- return item.type === 'news';
|
|
|
|
|
- });
|
|
|
|
|
- })
|
|
|
|
|
- ]).then(() => {
|
|
|
|
|
|
|
+ return Promise.all([this.getBanner()]).then(() => {
|
|
|
this.$toast.clear();
|
|
this.$toast.clear();
|
|
|
return Promise.resolve();
|
|
return Promise.resolve();
|
|
|
});
|
|
});
|
|
|
// this.getNews();
|
|
// this.getNews();
|
|
|
},
|
|
},
|
|
|
getProduct() {
|
|
getProduct() {
|
|
|
- return this.$http.get('/collection/recommend').then(res => {
|
|
|
|
|
- return Promise.resolve(res);
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ return Promise.resolve();
|
|
|
},
|
|
},
|
|
|
getBanner() {
|
|
getBanner() {
|
|
|
return this.$http
|
|
return this.$http
|
|
@@ -280,81 +131,6 @@ export default {
|
|
|
return Promise.resolve();
|
|
return Promise.resolve();
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
|
- getList() {
|
|
|
|
|
- if (this.page === 0) {
|
|
|
|
|
- this.list = [];
|
|
|
|
|
- }
|
|
|
|
|
- this.$http
|
|
|
|
|
- .post(
|
|
|
|
|
- '/collection/all',
|
|
|
|
|
- {
|
|
|
|
|
- page: 0,
|
|
|
|
|
- size: 20,
|
|
|
|
|
- query: {
|
|
|
|
|
- onShelf: true,
|
|
|
|
|
- del: false
|
|
|
|
|
- },
|
|
|
|
|
- sort: 'createdAt,desc'
|
|
|
|
|
- },
|
|
|
|
|
- { body: 'json' }
|
|
|
|
|
- )
|
|
|
|
|
- .then(res => {
|
|
|
|
|
- this.list = [...this.list, ...res.content];
|
|
|
|
|
- if (!this.finished) {
|
|
|
|
|
- this.page = this.page + 1;
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- },
|
|
|
|
|
- getMiner() {
|
|
|
|
|
- this.$http
|
|
|
|
|
- .post(
|
|
|
|
|
- '/user/all',
|
|
|
|
|
- {
|
|
|
|
|
- page: 0,
|
|
|
|
|
- query: { minter: true },
|
|
|
|
|
- size: 5,
|
|
|
|
|
- sort: 'sales,desc'
|
|
|
|
|
- },
|
|
|
|
|
- { body: 'json' }
|
|
|
|
|
- )
|
|
|
|
|
- .then(res => {
|
|
|
|
|
- this.miners = res.content;
|
|
|
|
|
- // console.log(this.miners);
|
|
|
|
|
- });
|
|
|
|
|
- },
|
|
|
|
|
- getNews() {
|
|
|
|
|
- if (this.page === 0) {
|
|
|
|
|
- this.news = [];
|
|
|
|
|
- }
|
|
|
|
|
- this.loading = true;
|
|
|
|
|
- this.finished = false;
|
|
|
|
|
- this.empty = false;
|
|
|
|
|
- this.$http
|
|
|
|
|
- .post(
|
|
|
|
|
- '/news/all',
|
|
|
|
|
- {
|
|
|
|
|
- page: this.page,
|
|
|
|
|
- size: 20,
|
|
|
|
|
- query: {
|
|
|
|
|
- del: false
|
|
|
|
|
- },
|
|
|
|
|
- sort: 'sort,asc;createdAt,desc'
|
|
|
|
|
- },
|
|
|
|
|
- { body: 'json' }
|
|
|
|
|
- )
|
|
|
|
|
- .then(res => {
|
|
|
|
|
- this.news = [...this.news, ...res.content];
|
|
|
|
|
- this.empty = res.empty;
|
|
|
|
|
- this.loading = false;
|
|
|
|
|
- this.finished = res.last;
|
|
|
|
|
- if (!this.finished) {
|
|
|
|
|
- this.page = this.page + 1;
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- },
|
|
|
|
|
- setSwiperRef(ref) {
|
|
|
|
|
- this.swiperRef = ref;
|
|
|
|
|
- },
|
|
|
|
|
onRefresh() {
|
|
onRefresh() {
|
|
|
this.getInit().then(() => {
|
|
this.getInit().then(() => {
|
|
|
this.isLoading = false;
|
|
this.isLoading = false;
|
|
@@ -362,10 +138,6 @@ export default {
|
|
|
// setTimeout(() => {
|
|
// setTimeout(() => {
|
|
|
|
|
|
|
|
// }, 1000);
|
|
// }, 1000);
|
|
|
- },
|
|
|
|
|
- changeActive(active) {
|
|
|
|
|
- this.active = active;
|
|
|
|
|
- this.swiperRef.slideTo(active, 300);
|
|
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
activated() {
|
|
activated() {
|
|
@@ -373,12 +145,6 @@ export default {
|
|
|
if (window.cordova && StatusBar && StatusBar.isVisible) {
|
|
if (window.cordova && StatusBar && StatusBar.isVisible) {
|
|
|
StatusBar.styleDefault();
|
|
StatusBar.styleDefault();
|
|
|
}
|
|
}
|
|
|
- this.$nextTick(() => {
|
|
|
|
|
- this.$el.parentNode.childNodes[1].className = this.$el.parentNode.childNodes[1].className.replace(
|
|
|
|
|
- / bgBack/,
|
|
|
|
|
- ''
|
|
|
|
|
- );
|
|
|
|
|
- });
|
|
|
|
|
this.changeScroll(this.scrollTop || 0);
|
|
this.changeScroll(this.scrollTop || 0);
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
@@ -401,42 +167,14 @@ export default {
|
|
|
.darkBg {
|
|
.darkBg {
|
|
|
background-color: #181818;
|
|
background-color: #181818;
|
|
|
}
|
|
}
|
|
|
-.top {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- padding: 9px 16px;
|
|
|
|
|
- background-color: @bg;
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- .logo {
|
|
|
|
|
- width: 74px;
|
|
|
|
|
- height: 26px;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .search {
|
|
|
|
|
- flex-grow: 1;
|
|
|
|
|
- background-color: @bg3;
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- margin-left: 10px;
|
|
|
|
|
- padding: 4px 20px;
|
|
|
|
|
- border-radius: 21px;
|
|
|
|
|
- img {
|
|
|
|
|
- width: 16px;
|
|
|
|
|
- height: 16px;
|
|
|
|
|
- margin-right: 10px;
|
|
|
|
|
- }
|
|
|
|
|
- font-size: 14px;
|
|
|
|
|
- color: @text3;
|
|
|
|
|
- line-height: 24px;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
.home {
|
|
.home {
|
|
|
// background-color: @bg3;
|
|
// background-color: @bg3;
|
|
|
position: relative;
|
|
position: relative;
|
|
|
z-index: 1;
|
|
z-index: 1;
|
|
|
- background-color: #f5f7fa;
|
|
|
|
|
|
|
+ background-color: @bg;
|
|
|
padding-top: var(--safe-top);
|
|
padding-top: var(--safe-top);
|
|
|
|
|
+ padding-bottom: calc(var(--safe-bottom) + 100px);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
::v-deep(.mySwiper) {
|
|
::v-deep(.mySwiper) {
|
|
@@ -466,98 +204,79 @@ export default {
|
|
|
// .swiper-slide {
|
|
// .swiper-slide {
|
|
|
// width: 255px;
|
|
// width: 255px;
|
|
|
// }
|
|
// }
|
|
|
-
|
|
|
|
|
-.list {
|
|
|
|
|
- padding: 12px 0 100px;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.welcom {
|
|
|
|
|
|
|
+/deep/.search {
|
|
|
|
|
+ padding: 8px 16px;
|
|
|
|
|
+ .van-button {
|
|
|
|
|
+ flex-shrink: 0;
|
|
|
|
|
+ }
|
|
|
.flex();
|
|
.flex();
|
|
|
- align-items: flex-end;
|
|
|
|
|
- padding: 12px 16px 0;
|
|
|
|
|
- .left {
|
|
|
|
|
|
|
+ .van-search__action {
|
|
|
|
|
+ background: linear-gradient(315deg, @prim2 0%, @prim 100%);
|
|
|
|
|
+ color: #1a1c2b;
|
|
|
|
|
+ height: 32px;
|
|
|
|
|
+ line-height: 32px;
|
|
|
|
|
+ }
|
|
|
|
|
+ .van-search {
|
|
|
|
|
+ padding: 0 0 0 12px;
|
|
|
|
|
+ height: 32px;
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+ overflow: hidden;
|
|
|
flex-grow: 1;
|
|
flex-grow: 1;
|
|
|
- .text1 {
|
|
|
|
|
- font-size: 12px;
|
|
|
|
|
- font-weight: bold;
|
|
|
|
|
- color: @text0;
|
|
|
|
|
- line-height: 24px;
|
|
|
|
|
- }
|
|
|
|
|
- .text2 {
|
|
|
|
|
- font-size: 24px;
|
|
|
|
|
- font-weight: bold;
|
|
|
|
|
- color: @text0;
|
|
|
|
|
- line-height: 32px;
|
|
|
|
|
- letter-spacing: 2px;
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- &.text3 {
|
|
|
|
|
- letter-spacing: 0px;
|
|
|
|
|
- font-weight: normal;
|
|
|
|
|
- font-family: SourceHanSans-Medium;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ .van-search__content {
|
|
|
|
|
+ background: #25283d;
|
|
|
|
|
+ height: 32px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-.listSwiper {
|
|
|
|
|
- padding-bottom: 100px;
|
|
|
|
|
-}
|
|
|
|
|
-.tabs {
|
|
|
|
|
- .flex();
|
|
|
|
|
- font-size: 14px;
|
|
|
|
|
- color: fade(@text0, 60%);
|
|
|
|
|
- line-height: 24px;
|
|
|
|
|
- padding: 0 16px;
|
|
|
|
|
|
|
|
|
|
- .tab + .tab {
|
|
|
|
|
- margin-left: 20px;
|
|
|
|
|
|
|
+.room-list {
|
|
|
|
|
+ padding: 16px 0;
|
|
|
|
|
+ .room-title {
|
|
|
|
|
+ font-size: 16px;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ color: #ffffff;
|
|
|
|
|
+ line-height: 22px;
|
|
|
|
|
+ padding: 0 16px;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- .tab {
|
|
|
|
|
- position: relative;
|
|
|
|
|
- &.active {
|
|
|
|
|
- font-weight: bold;
|
|
|
|
|
- color: @text0;
|
|
|
|
|
-
|
|
|
|
|
- &::after {
|
|
|
|
|
- content: '';
|
|
|
|
|
- height: 2px;
|
|
|
|
|
- background-color: #fff;
|
|
|
|
|
- width: 18px;
|
|
|
|
|
- position: absolute;
|
|
|
|
|
- bottom: -2px;
|
|
|
|
|
- left: 50%;
|
|
|
|
|
- transform: translateX(-50%);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+}
|
|
|
|
|
+.tab-content {
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ padding-top: 2px;
|
|
|
|
|
+ /deep/.van-sticky--fixed {
|
|
|
|
|
+ padding-top: var(--safe-top);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+/deep/.tabs {
|
|
|
|
|
+ width: 107px;
|
|
|
|
|
+ right: 16px;
|
|
|
|
|
+ top: 12px;
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ .van-tabs__nav--card {
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ height: 18px;
|
|
|
|
|
+ .van-tab {
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
|
+ }
|
|
|
|
|
+ border-width: 0;
|
|
|
|
|
+ .van-tab--card {
|
|
|
|
|
+ border-width: 0;
|
|
|
|
|
+ color: #6a6d83;
|
|
|
|
|
+ border-radius: 2px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ .van-tab--card.van-tab--active {
|
|
|
|
|
+ background: linear-gradient(225deg, @prim2 0%, @prim 100%);
|
|
|
|
|
+ color: #1a1c2b;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.list-top {
|
|
|
|
|
- .flex();
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- .text1 {
|
|
|
|
|
- font-size: 16px;
|
|
|
|
|
- color: @text3;
|
|
|
|
|
- line-height: 24px;
|
|
|
|
|
- padding: 8px 40px 16px;
|
|
|
|
|
-
|
|
|
|
|
- &.active {
|
|
|
|
|
- color: #000000;
|
|
|
|
|
- font-weight: bold;
|
|
|
|
|
- position: relative;
|
|
|
|
|
|
|
+.van-list {
|
|
|
|
|
+ padding: 10px 16px 16px;
|
|
|
|
|
+ min-height: var(--app-height);
|
|
|
|
|
|
|
|
- &::after {
|
|
|
|
|
- content: '';
|
|
|
|
|
- position: absolute;
|
|
|
|
|
- width: 24px;
|
|
|
|
|
- height: 2px;
|
|
|
|
|
- background: #3ab200;
|
|
|
|
|
- border-radius: 1px;
|
|
|
|
|
- bottom: 10px;
|
|
|
|
|
- left: 50%;
|
|
|
|
|
- transform: translateX(-50%);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ .room + .room {
|
|
|
|
|
+ margin-top: 16px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
</style>
|
|
</style>
|