|
|
@@ -0,0 +1,810 @@
|
|
|
+<template>
|
|
|
+ <div class="mySwiper">
|
|
|
+ <div class="swiper-content" :class="{ windowHorizontal: !windowVertical, horizontal: !isVertical }">
|
|
|
+ <div class="top">
|
|
|
+ <div class="top-btn left" @click="back">
|
|
|
+ <img src="../../assets/icon-tuichu.png" alt="" />
|
|
|
+ <span>退出展馆</span>
|
|
|
+ </div>
|
|
|
+ <div class="top-right">
|
|
|
+ <div class="top-btn submit" v-if="!isVertical || !windowVertical">
|
|
|
+ <img src="../../assets/icon-tupian.png" alt="" />
|
|
|
+ <span>{{ assets.length }}</span>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="top-btn submit"
|
|
|
+ @click="like(info)"
|
|
|
+ v-if="(!isVertical || !windowVertical) && info.publish"
|
|
|
+ >
|
|
|
+ <img v-if="info.liked" src="../../assets/icon-dianzan3.png" alt="" />
|
|
|
+ <img v-else src="../../assets/icon-dianzan4.png" alt="" />
|
|
|
+ <span>{{ info.likes }}</span>
|
|
|
+ </div>
|
|
|
+ <div @click="share" class="top-btn submit" v-if="(!isVertical || !windowVertical) && info.publish">
|
|
|
+ <img src="../../assets/icon-fenxiang1.png" alt="" />
|
|
|
+ <span>分享</span>
|
|
|
+ </div>
|
|
|
+ <div class="top-btn submit" @click="submit" v-if="isMine">
|
|
|
+ <img src="../../assets/icon-fabu.png" alt="" />
|
|
|
+ <span>发布</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="bottom">
|
|
|
+ <div class="btn" @click="addCollections" v-if="isMine">
|
|
|
+ <img src="../../assets/icon-bianjicangpin.png" alt="" />
|
|
|
+ <span>编辑藏品</span>
|
|
|
+ </div>
|
|
|
+ <div class="btn" v-if="inApp" @click="isVertical = !isVertical">
|
|
|
+ <img src="../../assets/icon-qiehuanhengping.png" alt="" />
|
|
|
+ <span>切换{{ isVertical || windowVertical ? '横屏' : '竖屏' }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="btns" v-if="isVertical && windowVertical && info.publish">
|
|
|
+ <div class="btn">
|
|
|
+ <img src="../../assets/icon-tupian.png" alt="" />
|
|
|
+ <span>{{ assets.length }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="btn" @click="like(info)">
|
|
|
+ <img v-if="info.liked" src="../../assets/icon-dianzan3.png" alt="" />
|
|
|
+ <img v-else src="../../assets/icon-dianzan4.png" alt="" />
|
|
|
+ <span>{{ info.likes }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="btn" @click="share">
|
|
|
+ <img src="../../assets/icon-fenxiang1.png" alt="" />
|
|
|
+ <span>分享</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <post ref="post" :info="info"></post>
|
|
|
+
|
|
|
+ <div class="user-bg">
|
|
|
+ <div
|
|
|
+ class="user-bg-img"
|
|
|
+ :style="{
|
|
|
+ 'background-image': getBg()
|
|
|
+ }"
|
|
|
+ ></div>
|
|
|
+ <div class="user">
|
|
|
+ <div class="icon">
|
|
|
+ <van-image
|
|
|
+ :src="info.pic || require('../../assets/icon-tianjiacangping.png')"
|
|
|
+ :width="picWidth"
|
|
|
+ :height="picWidth"
|
|
|
+ fit="cover"
|
|
|
+ radius="8"
|
|
|
+ />
|
|
|
+ <van-uploader v-if="isMine" class="avatar" :after-read="afterRead" result-type="file" />
|
|
|
+ </div>
|
|
|
+ <div class="user-content">
|
|
|
+ <div class="name">
|
|
|
+ <div>{{ info.nickname }}</div>
|
|
|
+ <div>的展馆</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="sub-box">
|
|
|
+ <div class="sub" @click="goEdit">
|
|
|
+ <span>{{ info.introduction || '介绍一下展馆主题吧' }}</span>
|
|
|
+ <img src="../../assets/icon-jieshaozhanguan.png" v-if="isMine" alt="" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="img-bg">
|
|
|
+ <div class="bg" :style="{ 'background-image': `url(${info.showroomBg})` }"></div>
|
|
|
+ <div class="imgs" v-if="assets.length === 0 && isMine">
|
|
|
+ <div class="icon">
|
|
|
+ <van-image
|
|
|
+ :src="require('../../assets/icon-tianjiacangping1.png')"
|
|
|
+ @click="addCollections"
|
|
|
+ :width="picWidth"
|
|
|
+ :height="picWidth"
|
|
|
+ fit="coevr"
|
|
|
+ radius="8"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="imgs" v-for="(item, index) in showList" :key="index" :style="getStyle(item.length)">
|
|
|
+ <div class="icon" v-for="(img, imgIndex) in item" :key="imgIndex" @click="goCollection(img)">
|
|
|
+ <van-image :src="img.pic" :width="picWidth" :height="picWidth" fit="coevr" radius="8" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+// import required modules
|
|
|
+import { watch, ref, computed } from 'vue';
|
|
|
+import { useWindowSize } from '@vant/use';
|
|
|
+import product from '../../mixins/product';
|
|
|
+import room from '../../mixins/room';
|
|
|
+import Post from './Post.vue';
|
|
|
+let fromRoute = null;
|
|
|
+let inApp = /#cordova#/i.test(navigator.userAgent);
|
|
|
+export default {
|
|
|
+ name: 'Hall',
|
|
|
+ inject: ['setKeeps'],
|
|
|
+ components: {
|
|
|
+ Post
|
|
|
+ },
|
|
|
+ setup() {
|
|
|
+ const { width, height } = useWindowSize();
|
|
|
+
|
|
|
+ console.log(width.value); // -> 窗口宽度
|
|
|
+ console.log(height.value); // -> 窗口高度
|
|
|
+
|
|
|
+ const windowVertical = computed(() => {
|
|
|
+ if (width.value > height.value) {
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ return { windowVertical, width, height };
|
|
|
+ },
|
|
|
+ mixins: [product, room],
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ isVertical: true,
|
|
|
+ roomId: 0,
|
|
|
+ info: {},
|
|
|
+ assets: [],
|
|
|
+ distances: [0, 0, 0, 0],
|
|
|
+ swiperRef: null,
|
|
|
+ inApp,
|
|
|
+ isEdit: false
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ showList() {
|
|
|
+ let assets = [...this.assets];
|
|
|
+ let list = [];
|
|
|
+ for (let i = 0; i <= Math.floor(assets.length / this.groupNum); i++) {
|
|
|
+ list.push(assets.slice(i * this.groupNum, (i + 1) * this.groupNum));
|
|
|
+ }
|
|
|
+ return list.filter(item => {
|
|
|
+ return item.length > 0;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ groupNum() {
|
|
|
+ if (!this.isVertical) {
|
|
|
+ return 4;
|
|
|
+ } else if (!this.windowVertical) {
|
|
|
+ return 4;
|
|
|
+ } else {
|
|
|
+ return 18;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ isMine() {
|
|
|
+ return this.isLogin && this.$store.state.userInfo.id === this.info.userId;
|
|
|
+ },
|
|
|
+ bgParallax() {
|
|
|
+ return (
|
|
|
+ '-' +
|
|
|
+ ((this.isVertical ? this.width : this.height) * ((this.showList.length || 1) - 1) +
|
|
|
+ (this.isVertical && this.windowVertical ? 280 : 418))
|
|
|
+ );
|
|
|
+ },
|
|
|
+ picWidth() {
|
|
|
+ if (!this.isVertical) {
|
|
|
+ return '35vw';
|
|
|
+ } else if (!this.windowVertical) {
|
|
|
+ return '35vh';
|
|
|
+ } else {
|
|
|
+ return '15vh';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ if (this.$route.query.id) {
|
|
|
+ this.roomId = this.$route.query.id;
|
|
|
+ this.getDetail();
|
|
|
+ }
|
|
|
+ this.emitter.on('setIntroduction', e => {
|
|
|
+ this.info.introduction = e;
|
|
|
+ this.isEdit = true;
|
|
|
+ });
|
|
|
+ this.emitter.on('setAssets', assets => {
|
|
|
+ this.assets = assets;
|
|
|
+ this.isEdit = true;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ beforeRouteEnter(to, from) {
|
|
|
+ fromRoute = from;
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getStyle(num = 1) {
|
|
|
+ if (!this.isVertical) {
|
|
|
+ return {
|
|
|
+ height: num * 49 + 'vw',
|
|
|
+ paddingBottom: num == 4 ? '26.5vw' : '10vw'
|
|
|
+ };
|
|
|
+ } else if (!this.windowVertical) {
|
|
|
+ return {
|
|
|
+ width: num * 49 + 'vh',
|
|
|
+ paddingRight: num == 4 ? '26.5vh' : '10vh'
|
|
|
+ };
|
|
|
+ } else {
|
|
|
+ return {
|
|
|
+ width: Math.round(num / 2) * 22 + 'vh',
|
|
|
+ paddingRight: Math.round(num / 2) == 9 ? '23vh' : '10vh'
|
|
|
+ };
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getBg() {
|
|
|
+ if (!this.isVertical || !this.windowVertical) {
|
|
|
+ return `url(${this.info.headBg})`;
|
|
|
+ } else {
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getImgWidth(num = 1) {
|
|
|
+ if (!this.isVertical) {
|
|
|
+ return num * 49 + 'vw';
|
|
|
+ } else if (!this.windowVertical) {
|
|
|
+ return num * 49 + 'vh';
|
|
|
+ } else {
|
|
|
+ return Math.round(num / 2) * 22 + 'vh';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getRight(num = 1) {
|
|
|
+ if (!this.isVertical) {
|
|
|
+ return '36vw';
|
|
|
+ } else if (!this.windowVertical) {
|
|
|
+ return num == 4 ? '26.5vh' : '10vh';
|
|
|
+ } else {
|
|
|
+ return Math.round(num / 2) == 9 ? '23vh' : '10vh';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ share() {
|
|
|
+ this.getDetail().then(res => {
|
|
|
+ this.$refs.post.init();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getDetail() {
|
|
|
+ this.$toast.loading({
|
|
|
+ message: '加载中...',
|
|
|
+ forbidClick: true
|
|
|
+ });
|
|
|
+ return this.$http.get('/showroom/get/' + this.roomId).then(res => {
|
|
|
+ this.$toast.clear();
|
|
|
+ this.info = res;
|
|
|
+ this.assets =
|
|
|
+ res.collections.map(item => {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ id: item.collectionId
|
|
|
+ };
|
|
|
+ }) || [];
|
|
|
+ // this.assets = [...res.collections, ...res.collections, ...res.collections, ...res.collections];
|
|
|
+ return Promise.resolve(res);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ back() {
|
|
|
+ let _this = this;
|
|
|
+ this.$dialog.confirm({ title: '提示', message: '确定要退出展馆吗?' }).then(() => {
|
|
|
+ this.isEdit = false;
|
|
|
+ if (_this.isMine) {
|
|
|
+ _this.backPage();
|
|
|
+ } else {
|
|
|
+ _this.$router.push('/home');
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ backPage() {
|
|
|
+ if (this.$store.state.loginBackUrl) {
|
|
|
+ this.$router.replace(this.$store.state.loginBackUrl);
|
|
|
+ } else if (
|
|
|
+ !fromRoute.name ||
|
|
|
+ fromRoute.name === 'hall' ||
|
|
|
+ fromRoute.name === 'userRegister' ||
|
|
|
+ fromRoute.name === 'userLogin'
|
|
|
+ ) {
|
|
|
+ this.$router.replace('/home');
|
|
|
+ } else {
|
|
|
+ this.$router.back();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ afterRead(e) {
|
|
|
+ this.$toast.loading({
|
|
|
+ message: '加载中...',
|
|
|
+ forbidClick: true
|
|
|
+ });
|
|
|
+ this.updateFile(e, 500).then(img => {
|
|
|
+ this.$toast.clear();
|
|
|
+ this.info.pic = img;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ addCollections() {
|
|
|
+ this.$router.push(
|
|
|
+ '/productAdd?ids=' +
|
|
|
+ this.assets
|
|
|
+ .map(item => {
|
|
|
+ return item.id;
|
|
|
+ })
|
|
|
+ .join(',') +
|
|
|
+ '&maxCollection=' +
|
|
|
+ this.info.maxCollection
|
|
|
+ );
|
|
|
+ },
|
|
|
+ setSwiperRef(ref) {
|
|
|
+ console.log(ref);
|
|
|
+ this.swiperRef = ref;
|
|
|
+ },
|
|
|
+ submit() {
|
|
|
+ let form = {
|
|
|
+ ...this.info,
|
|
|
+ collections: [...this.assets].map(item => {
|
|
|
+ return {
|
|
|
+ showroomId: this.roomId,
|
|
|
+ collectionId: item.id
|
|
|
+ };
|
|
|
+ }),
|
|
|
+ publish: true
|
|
|
+ };
|
|
|
+
|
|
|
+ this.$toast.loading({
|
|
|
+ message: '加载中...',
|
|
|
+ forbidClick: true
|
|
|
+ });
|
|
|
+ this.$http
|
|
|
+ .post('/showroom/update', form, { body: 'json' })
|
|
|
+ .then(res => {
|
|
|
+ this.$toast.success('保存成功');
|
|
|
+ setTimeout(() => {
|
|
|
+ this.getDetail().then(res => {
|
|
|
+ this.emitter.emit('updateList', res);
|
|
|
+ });
|
|
|
+ this.backPage();
|
|
|
+ }, 1000);
|
|
|
+ })
|
|
|
+ .catch(e => {
|
|
|
+ this.$toast(e.error);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ goEdit() {
|
|
|
+ if (this.isMine) {
|
|
|
+ this.$router.push('/hallEdit?message=' + (this.info.introduction || ''));
|
|
|
+ }
|
|
|
+ },
|
|
|
+ goCollection(info) {
|
|
|
+ if (!this.isMine) {
|
|
|
+ this.$router.push('/productDetail/' + info.collectionId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ beforeRouteLeave(to, from, next) {
|
|
|
+ if (to.path === '/store' && this.isEdit) {
|
|
|
+ next(false);
|
|
|
+ setTimeout(() => {
|
|
|
+ this.back();
|
|
|
+ }, 100);
|
|
|
+ } else {
|
|
|
+ if (!to.meta.isHall) {
|
|
|
+ this.setKeeps(['Hall'], false);
|
|
|
+ } else {
|
|
|
+ this.setKeeps(['Hall']);
|
|
|
+ }
|
|
|
+ next();
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less" scoped>
|
|
|
+.mySwiper {
|
|
|
+ background-color: #1c1c1c;
|
|
|
+ overflow: auto;
|
|
|
+ width: 100vw;
|
|
|
+ height: 100vh;
|
|
|
+}
|
|
|
+.swiper-content {
|
|
|
+ position: relative;
|
|
|
+ .flex();
|
|
|
+ align-items: stretch;
|
|
|
+ & > div {
|
|
|
+ flex-shrink: 0;
|
|
|
+ }
|
|
|
+ height: 100vh;
|
|
|
+}
|
|
|
+.user-bg {
|
|
|
+ background-size: 100% 100%;
|
|
|
+ z-index: 1;
|
|
|
+ position: relative;
|
|
|
+ .user-bg-img {
|
|
|
+ position: absolute;
|
|
|
+ z-index: 0;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ background-size: auto 100%;
|
|
|
+ }
|
|
|
+}
|
|
|
+.user {
|
|
|
+ width: 130px;
|
|
|
+ padding: 23vh 0 0 30px;
|
|
|
+ position: absolute;
|
|
|
+ left: 0;
|
|
|
+ background-image: none;
|
|
|
+ .icon {
|
|
|
+ position: relative;
|
|
|
+ .van-image {
|
|
|
+ transition: transform ease-in-out 0.3s;
|
|
|
+ }
|
|
|
+ .avatar {
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ bottom: 0;
|
|
|
+ opacity: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .name {
|
|
|
+ font-size: 24px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 30px;
|
|
|
+ padding-top: 6px;
|
|
|
+ & > div {
|
|
|
+ display: -webkit-box;
|
|
|
+ -webkit-box-orient: vertical;
|
|
|
+ -webkit-line-clamp: 2;
|
|
|
+ overflow: hidden;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .sub {
|
|
|
+ padding-top: 20px;
|
|
|
+ font-size: 12px;
|
|
|
+ color: rgba(255, 255, 255, 0.6);
|
|
|
+ line-height: 17px;
|
|
|
+
|
|
|
+ .flex();
|
|
|
+ img {
|
|
|
+ width: 16px;
|
|
|
+ height: 16px;
|
|
|
+ display: block;
|
|
|
+ margin-left: 6px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .user-content {
|
|
|
+ flex-grow: 1;
|
|
|
+ overflow: hidden;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.mySwiper {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ background: #000;
|
|
|
+}
|
|
|
+.img-bg {
|
|
|
+ .flex();
|
|
|
+ align-items: flex-start;
|
|
|
+ position: relative;
|
|
|
+ overflow: hidden;
|
|
|
+
|
|
|
+ .bg {
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ bottom: 0;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ position: absolute;
|
|
|
+ z-index: 0;
|
|
|
+ background-size: auto 100%;
|
|
|
+ }
|
|
|
+}
|
|
|
+.imgs {
|
|
|
+ // box-sizing: border-box;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ // align-items: center;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ // padding: 0 10vw;
|
|
|
+ // width: 259vh;
|
|
|
+ height: 45vh;
|
|
|
+ padding: 0 10vh 0 23vh;
|
|
|
+ margin-top: 20vh;
|
|
|
+ min-width: calc(100vw - 33vh);
|
|
|
+ .icon {
|
|
|
+ padding: 3vh 0;
|
|
|
+
|
|
|
+ .flex();
|
|
|
+ justify-content: center;
|
|
|
+ width: 22vh;
|
|
|
+ box-sizing: border-box;
|
|
|
+ img {
|
|
|
+ width: 110px;
|
|
|
+ height: 110px;
|
|
|
+ display: block;
|
|
|
+ }
|
|
|
+ .van-image {
|
|
|
+ transition: transform ease-in-out 0.3s;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.bottom {
|
|
|
+ position: fixed;
|
|
|
+ bottom: 120px;
|
|
|
+ left: 30px;
|
|
|
+ z-index: 20;
|
|
|
+ .bottom(0px);
|
|
|
+ .flex();
|
|
|
+ .btn {
|
|
|
+ transition: transform ease-in-out 0.3s;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn + .btn {
|
|
|
+ margin-left: 40px;
|
|
|
+ }
|
|
|
+ img {
|
|
|
+ width: 48px;
|
|
|
+ height: 48px;
|
|
|
+ display: block;
|
|
|
+ }
|
|
|
+ span {
|
|
|
+ font-size: 12px;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 17px;
|
|
|
+ margin-top: 4px;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.btns {
|
|
|
+ .bottom(0px);
|
|
|
+ background-color: #181818;
|
|
|
+ height: 56px;
|
|
|
+ position: fixed;
|
|
|
+ bottom: 0;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ z-index: 21;
|
|
|
+ .flex();
|
|
|
+
|
|
|
+ .btn {
|
|
|
+ .flex();
|
|
|
+ width: 33%;
|
|
|
+ justify-content: center;
|
|
|
+ img {
|
|
|
+ width: 18px;
|
|
|
+ height: 18px;
|
|
|
+ display: block;
|
|
|
+ }
|
|
|
+ span {
|
|
|
+ font-size: 14px;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 24px;
|
|
|
+ margin-left: 3px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.top {
|
|
|
+ position: fixed;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ z-index: 20;
|
|
|
+ right: 0;
|
|
|
+ height: 44px;
|
|
|
+
|
|
|
+ .flex();
|
|
|
+ justify-content: space-between;
|
|
|
+ .top-btn {
|
|
|
+ .flex();
|
|
|
+ padding: 2px 10px;
|
|
|
+ border-radius: 100px;
|
|
|
+ min-width: 76px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ justify-content: center;
|
|
|
+ img {
|
|
|
+ width: 18px;
|
|
|
+ height: 18px;
|
|
|
+ }
|
|
|
+
|
|
|
+ span {
|
|
|
+ font-size: 14px;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 24px;
|
|
|
+ margin-left: 4px;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.submit {
|
|
|
+ background-color: fade(#fff, 30%);
|
|
|
+ margin-right: 16px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .top-right {
|
|
|
+ .flex();
|
|
|
+ }
|
|
|
+}
|
|
|
+.windowHorizontal {
|
|
|
+ .user {
|
|
|
+ width: 95vh;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ position: relative;
|
|
|
+ padding: 22vh 0 0 60px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ .sub-box {
|
|
|
+ position: absolute;
|
|
|
+ bottom: 0px;
|
|
|
+ left: calc(35vh + 70px);
|
|
|
+ .sub {
|
|
|
+ padding-top: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .name {
|
|
|
+ margin-left: 10px;
|
|
|
+ padding-top: 0;
|
|
|
+ font-size: 6.4vh;
|
|
|
+ line-height: 8vh;
|
|
|
+ & > div {
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .imgs {
|
|
|
+ height: 44.6vh;
|
|
|
+ flex-direction: row;
|
|
|
+ padding: 0 23vh;
|
|
|
+ min-width: calc(100vw - 128vh);
|
|
|
+ .icon {
|
|
|
+ // padding: 15vh 0;
|
|
|
+ padding: 0 0;
|
|
|
+ width: 49vh;
|
|
|
+ padding-bottom: 4vh;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .bottom {
|
|
|
+ bottom: 60px;
|
|
|
+ left: 60px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .parallax-bg-img {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ transition: transform ease-in-out 0.3s;
|
|
|
+ background-size: 410px 100%, 100vw 100%;
|
|
|
+ background-repeat: no-repeat, repeat-x;
|
|
|
+ background-position: 0 0, 410px 0;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.horizontal {
|
|
|
+ padding-top: 0;
|
|
|
+ // padding-right: 32px;
|
|
|
+ flex-direction: column;
|
|
|
+ .user-content {
|
|
|
+ overflow: inherit;
|
|
|
+ }
|
|
|
+ .parallax-bg {
|
|
|
+ width: 100%;
|
|
|
+ height: 600%;
|
|
|
+ }
|
|
|
+ .parallax-bg-img {
|
|
|
+ width: 600vh;
|
|
|
+ height: 100vw;
|
|
|
+ transform: rotate(90deg) translateX(-100vw);
|
|
|
+ transform-origin: left bottom;
|
|
|
+ }
|
|
|
+ .user-bg-img {
|
|
|
+ height: 100vw;
|
|
|
+ width: calc(95vw + 1px);
|
|
|
+ transform: rotate(90deg) translateX(-100vw);
|
|
|
+ transform-origin: left bottom;
|
|
|
+ }
|
|
|
+
|
|
|
+ .bg {
|
|
|
+ width: 600vh;
|
|
|
+ height: 100vw;
|
|
|
+ transform: rotate(90deg) translateX(-100vw);
|
|
|
+ transform-origin: left bottom;
|
|
|
+ }
|
|
|
+
|
|
|
+ // .user-bg {
|
|
|
+ // transform: rotate(90deg) translate(-50%, 55%);
|
|
|
+ // transform-origin: bottom;
|
|
|
+ // }
|
|
|
+
|
|
|
+ .user {
|
|
|
+ padding: 60px calc(100vw - 35vw - 23vw) 0;
|
|
|
+ height: 95vw;
|
|
|
+ width: 32vw;
|
|
|
+ position: relative;
|
|
|
+ box-sizing: border-box;
|
|
|
+ .van-image {
|
|
|
+ transform: rotate(90deg);
|
|
|
+ }
|
|
|
+ .name {
|
|
|
+ font-size: 6.4vw;
|
|
|
+ line-height: 8vw;
|
|
|
+ width: 168px;
|
|
|
+ padding-top: 0;
|
|
|
+ transform: rotate(90deg) translate(-13vw, -13vw);
|
|
|
+ transform-origin: left bottom;
|
|
|
+ }
|
|
|
+ .sub {
|
|
|
+ width: 168px;
|
|
|
+ padding-top: 0;
|
|
|
+ transform-origin: left bottom;
|
|
|
+ transform: rotate(90deg) translate(-17.3vw, 0px);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .img-bg {
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: flex-end;
|
|
|
+ padding-right: 18vw;
|
|
|
+ }
|
|
|
+ .imgs {
|
|
|
+ width: 44.6vw;
|
|
|
+ padding: 23vw 0;
|
|
|
+ margin-top: 0;
|
|
|
+ .icon {
|
|
|
+ height: 49vw;
|
|
|
+ width: auto;
|
|
|
+ }
|
|
|
+ .van-image {
|
|
|
+ transform: rotate(90deg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .bottom {
|
|
|
+ top: 60px;
|
|
|
+ left: 49px;
|
|
|
+ .flex-col();
|
|
|
+ .btn {
|
|
|
+ transform: rotate(90deg) translateX(-10px);
|
|
|
+ }
|
|
|
+ .btn + .btn {
|
|
|
+ margin-left: 0;
|
|
|
+ margin-top: 40px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .top {
|
|
|
+ // transform: rotate(90deg) translate(calc(100vh - 100vw), 3px);
|
|
|
+ // width: 100vh;
|
|
|
+ // transform-origin: bottom;
|
|
|
+ top: 0;
|
|
|
+ bottom: 0;
|
|
|
+ left: auto;
|
|
|
+ height: 100vh;
|
|
|
+ width: 40px;
|
|
|
+ flex-direction: column;
|
|
|
+ right: 5px;
|
|
|
+ .top-btn {
|
|
|
+ height: auto;
|
|
|
+ white-space: nowrap;
|
|
|
+
|
|
|
+ &.left {
|
|
|
+ transform: rotate(90deg) translateX(50%);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .top-right {
|
|
|
+ transform: rotate(90deg) translateX(-50%);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // .user {
|
|
|
+ // padding: calc(21vw - 110px) 100px 0 30px;
|
|
|
+ // }
|
|
|
+ // /deep/.swiper-wrapper {
|
|
|
+ // height: calc(100vw - 20vw);
|
|
|
+ // }
|
|
|
+ // &.mySwiper {
|
|
|
+ // padding-top: 20vw;
|
|
|
+ // }
|
|
|
+ // .imgs {
|
|
|
+ // height: 50vw;
|
|
|
+ // }
|
|
|
+}
|
|
|
+</style>
|