赞
踩
最近遇到一个类似钉钉时刻的需求,如图所示:
代码:
- <template>
- <!-- <van-pull-refresh v-model="refreshLoading" @refresh="onRefresh"> -->
- <div class="sign-wrap">
- <div class="meeting-sign-wraper" :class="{ isMember: !memberFlag }">
- <!-- <div class="close_box" @click="close"><img src="../img/x.svg" alt="" /></div> -->
- <div class="screen-guide" @click="jump">
- <span>投屏指引</span>
- <img src="../img/箭头.svg" alt="" />
- </div>
- <div v-if="waitSignData && waitSignData.beginTime" class="sign-top">
- <div v-if="memberFlag" class="meeting-name">{{ waitSignData.title || '会议室签到' }}</div>
- <div class="meeting-time">
- <div class="time left">
- <div>{{ momentTime(waitSignData.beginTime) }}</div>
- <p>{{ todayDate }}</p>
- </div>
- <div class="center">
- <div class="line"></div>
- <div class="middle">{{ diffTime(waitSignData) }}</div>
- <div class="line"></div>
- </div>
- <div class="time right">
- <div>{{ momentTime(waitSignData.endTime) }}</div>
- <p>{{ todayDate }}</p>
- </div>
- </div>
- <div class="meeting-users" v-if="waitSignData.members && memberFlag">
- <span>参会人:</span>
- <span v-for="(item, index) in membersList" :key="index">
- <span>{{ item }}</span>
- <span v-if="index != membersList.length - 1">、</span>
- </span>
- <span v-if="waitSignData.members">{{
- waitSignData.members.length > 0 ? `等${waitSignData.members.length}人` : `无`
- }}</span>
- </div>
- <div class="meeting-id">
- <!-- <span>会议ID:8007157101</span> -->
- <span>会议室:{{ waitSignData.room }}</span>
- </div>
- <div class="btn-box">
- <div v-if="memberFlag" class="btn" :class="{ active: isActive }" @click="signClick">
- {{ isActiveTxt }}
- </div>
- <div v-if="!memberFlag" class="no-sign">
- <img src="../img/提示.svg" alt="" />
- <span>您不是本次会议参会人,无法签到!</span>
- </div>
- </div>
- </div>
- <div v-if="!(waitSignData && waitSignData.beginTime)">
- <div v-if="!signOut" class="no-waitSign">
- <img src="../img/白色提示.svg" alt="" />
- <span>暂无预约</span>
- </div>
- </div>
- <div class="sign-content" ref="signContent">
- <img v-show="btnFlag" class="img-line" src="../img/线.svg" alt="" @click="handleClick" />
- <img v-show="!btnFlag" class="img-down" src="../img/下拉.svg" alt="" @click="handleClick" />
- <div class="sign-content-wrap" ref="contentWrap">
- <ul class="scroll-box">
- <li>
- <div class="date">{{ todayDate }}</div>
- <div class="time-kedu-box">
- <div class="m-s-header-container scroll-wrapper">
- <table
- class="transform-element scroll-content"
- :style="{
- transform: `translateX(${translateX}px)`,
- width: itemWidth * timeList.length + leftPadding + 'px',
- }"
- >
- <tr>
- <th :style="{ width: 0 + 'px' }"></th>
- <th
- :style="{ width: itemWidth + 'px' }"
- v-for="(item, index) in timeList"
- :key="item.name"
- >
- <div class="header-item">
- {{ item.name }}
- </div>
- </th>
- </tr>
-
- <div
- v-if="isToday"
- :style="{
- left: timeLeftValue + 'px',
- }"
- class="current-time-line"
- ></div>
-
- <div
- v-for="(lis, index) in timestampList"
- :key="index"
- :style="{
- width: positionWidth(lis) + 'px',
- left: timeToPosition(momentTime(lis.beginTime)) + 'px',
- right: 0 - timeToPosition(momentTime(lis.endTime)) + 'px',
- }"
- class="m-s-activity overflow-hidden"
- ></div>
- </table>
-
- <!-- <button
- @click.stop="translateHandle(1, $event)"
- class="translate-handle translate-left"
- >
- <i class="el-icon-arrow-left"></i>
- </button>
- <button
- @click.stop="translateHandle(2, $event)"
- class="translate-handle translate-right"
- >
- <i class="el-icon-arrow-right"></i>
- </button> -->
- </div>
- </div>
- <div class="time-content">
- <div class="content-box" v-for="(item, index) in meetingData" :key="index">
- <div class="content-top">
- <div class="time left">{{ momentTime(item.beginTime) }}</div>
- <div class="line"></div>
- <div class="middle">{{ diffTime(item) }}</div>
- <div class="line"></div>
- <div class="time right">{{ momentTime(item.endTime) }}</div>
- </div>
- <div class="content-bottom">
- 主持人:<span>{{ item.sponsorName }}</span>
- </div>
- </div>
- </div>
- </li>
- </ul>
- </div>
- </div>
- </div>
- </div>
- <!-- </van-pull-refresh> -->
- </template>
-
- <script>
- import moment from 'moment';
- import BScroll from '@better-scroll/core';
- import { meetingList, waitSign, meetingSign } from '../api';
- let currentTimer = null;
- import { closeWindow } from '@/utils/jsBridge';
- export default {
- props: {
- defaultDate: {
- type: String,
- default: moment().format('YYYY-MM-DD'),
- },
- },
- data() {
- return {
- btnFlag: true,
- memberFlag: true, // 是否为参会人
- signOut: false, // 已签退
- isActive: false, // 待签到
- isActiveTxt: '会议室签到',
- timeStart: 0,
- timeEnd: 24,
- itemWidth: 28 / 4, //会议时间间隔宽度
- translateX: 0, //横向滚动距离
- max_translateX: 0, //最大可滚动距离
- currentTimeLeftValue: 0,
- currentTime: '00:00',
- currentTimeValue: 0,
- activeDate: {}, //默认日期
- meetingData: [],
- waitSignData: {},
- todayDate: moment().format('YYYY/MM/DD'),
- roomCode: '',
- refreshLoading: false,
- scroll: ''
- };
- },
- watch: {
- defaultDate(val) {
- if (val) {
- this.activeDate = moment(val);
- }
- },
- meetingData() {
- this.$nextTick(() => {
- this.scroll.refresh()
- })
- }
- },
- created() {
- this.roomCode = this.getQueryString('roomCode');
-
- this.getCurrentTime();
- clearInterval(currentTimer);
- currentTimer = setInterval(this.getCurrentTime, 1e3 * 60);
- this.activeDate = this.defaultDate ? moment(this.defaultDate) : moment();
- },
- async mounted() {
- this.init();
- this.initScroll();
- this.initYZScroll();
- await this.waitSign();
- await this.meetingList();
- },
- beforeDestroy() {
- clearInterval(currentTimer);
- },
- computed: {
- timestampList() {
- let arrList = [];
- let mtList = [];
- let waitList = [];
- if (this.meetingData.length > 0) {
- mtList = this.meetingData.map((el) => {
- return {
- beginTime: el.beginTime,
- endTime: el.endTime,
- };
- });
- }
- if (this.waitSignData && this.waitSignData.beginTime) {
- waitList.push({
- beginTime: this.waitSignData.beginTime,
- endTime: this.waitSignData.endTime,
- });
- }
- return [...waitList ,...mtList];
- },
- membersList() {
- let arr = this.waitSignData.members || [];
- if (arr.length < 5) {
- return arr;
- }
- return arr.slice(0, 4);
- },
- timeDiff() {
- return (this.timeEnd - this.timeStart) * 4;
- },
- timeList() {
- const timeList = [];
- for (let i = 0; i < this.timeDiff; i++) {
- const item = {};
- if (i % 4 == 0) {
- // item.name = `${Math.floor(i / 4)}:00`;
- item.name = `${Math.floor(i / 4)}`;
- } else {
- item.name = `${Math.floor(i / 4)}:${(i % 4) * 15}`;
- }
- item.time = i / 4;
- timeList.push(item);
- }
- return timeList;
- },
- leftPadding() {
- return this.itemWidth;
- },
- isToday() {
- return moment().format('YYYY-MM-DD') === this.activeDate.format('YYYY-MM-DD');
- },
- isPast() {
- return (
- moment(this.activeDate.format('YYYY-MM-DD')).unix() <
- moment(moment().format('YYYY-MM-DD')).unix()
- );
- },
- maxWidth() {
- return this.itemWidth * this.timeList.length + this.leftPadding;
- },
- timeLeftValue() {
- return this.isToday
- ? this.currentTimeLeftValue
- : this.isPast
- ? this.maxWidth
- : this.leftPadding;
- },
- timeValue() {
- return this.isToday ? this.currentTimeValue : this.isPast ? this.timeList.length - 1 : -1;
- },
- },
- methods: {
- onRefresh() {
- Promise.all([this.meetingList(), this.waitSign()])
- .then((result) => (this.refreshLoading = false))
- .catch((e) => console.log(e));
- },
- close() {
- closeWindow();
- },
- userAgent() {
- const userAgent = window.navigator.userAgent.toLocaleLowerCase();
- if (!userAgent.includes('360teams')) {
- this.$router.push({ path: '/meetingSignWX', query: { roomCode: this.roomCode } });
- }
- },
- getQueryString(name) {
- var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
- var r = window.location.search.substr(1).match(reg);
- if (r != null) return unescape(decodeURI(r[2]));
- return null;
- },
- momentTime(time) {
- return moment(time).format('HH:mm');
- },
- diffTime(item) {
- let diffVal = moment(item.endTime).diff(moment(item.beginTime), 'minute');
- return `${Math.floor(diffVal / 60)}小时${diffVal % 60 || 0}分钟`;
- },
- // 已预约会议列表
- async meetingList() {
- let params = {
- roomCode: this.roomCode,
- };
- let res = await meetingList(params);
- let { code, data, msg } = res || {};
- if (code === 0) {
- this.meetingData = data;
- } else {
- this.meetingData = [];
- }
- },
- // 查询当前待签到的会议信息
- async waitSign() {
- let params = {
- roomCode: this.roomCode,
- };
- let res = await waitSign(params);
- let { code, data, msg } = res || {};
- if (code === 0) {
- this.waitSignData = data;
- this.isActive = this.waitSignData.checkStatus;
- this.memberFlag = this.waitSignData.memberFlag;
- if (this.waitSignData.checkStatus === 0) {
- this.isActiveTxt = '会议室签到';
- } else {
- this.isActiveTxt = '会议室签退';
- }
- } else {
- this.$toast.fail(msg);
- this.waitSignData = {};
- this.isActive = !this.isActive;
- // this.handleClick();
- }
- },
- initScroll() {
- let vm = this;
- this.$nextTick(() => {
- let bs = new BScroll('.scroll-wrapper', {
- startX: vm.translateX,
- click: true,
- scrollX: true,
- scrollY: false, // 忽略竖直方向的滚动
- eventPassthrough: 'vertical',
- bounce: {
- left: false,
- right: false,
- },
- });
- });
- },
- initYZScroll() {
- let vm = this;
- this.$nextTick(() => {
- this.scroll = new BScroll('.scroll-box', {
- probeType: 3,
- click: true,
- scrollX: false,
- scrollY: true,
- bounce: {
- top: false,
- bottom: false,
- },
- });
- });
- },
- handleClick() {
- this.btnFlag = !this.btnFlag;
- if (this.btnFlag) {
- if (this.$refs.signContent && this.$refs.contentWrap) {
- this.$refs.signContent.style.top = '44%';
- this.$refs.contentWrap.style.height = '360px';
- }
- } else {
- if (this.$refs.signContent && this.$refs.contentWrap) {
- this.$refs.signContent.style.top = '13%';
- this.$refs.contentWrap.style.height = '570px';
- }
- }
- },
- jump() {
- this.$router.push({ name: 'screenGuide' });
- },
- // 会议签到或签退
- async signClick() {
- if (!this.isActive) {
- let res = await meetingSign({
- roomCode: this.roomCode,
- id: this.waitSignData.id || '',
- sign: true,
- });
- let { code, data, msg } = res || {};
- if (code === 0) {
- this.isActive = !this.isActive;
- this.isActiveTxt = '会议室签退';
- this.$toast.success('已签到!');
- } else if (code === 12058) {
- // 未认证
- this.$toast.fail(msg);
- } else {
- this.$toast.fail(msg);
- this.meetingList();
- this.waitSign();
- }
- } else {
- this.$dialog
- .confirm({
- title: '',
- message: '是否确定释放本会议室?',
- })
- .then(async () => {
- let res = await meetingSign({
- roomCode: this.roomCode,
- id: this.waitSignData.id || '',
- sign: false,
- });
- let { code, data, msg } = res || {};
- if (code === 0) {
- this.waitSignData = {};
- // this.signOut = true;
- this.isActive = !this.isActive;
- this.isActiveTxt = '会议室签到';
- this.$toast.success('已签退!');
- // this.handleClick();
- } else if (code === 12058) {
- // 未认证
- this.$toast.fail(msg);
- } else {
- this.$toast.fail(msg);
- this.meetingList();
- this.waitSign();
- }
- })
- .catch(() => {});
- }
- },
- //左翻右翻操作
- translateHandle(type, e) {
- //内层宽度
- const INNER_WIDTH = this.maxWidth;
- //外层宽度
- const OUTER_WIDTH = e.target.parentNode.offsetWidth;
- // 步长
- const STEP = this.itemWidth * 4;
- //内外宽度差,最大可移动距离
- const MAX = INNER_WIDTH - OUTER_WIDTH;
- if (type == 1) {
- if (this.translateX < 0) {
- this.translateX +=
- this.translateX + STEP + this.leftPadding < 0 ? STEP : 0 - this.translateX;
- }
- } else {
- if (MAX + this.translateX > 0) {
- this.translateX -=
- MAX + this.translateX > STEP + this.leftPadding ? STEP : MAX + this.translateX;
- }
- }
- },
- init() {
- const outerWidth = document.querySelector('.m-s-header-container').offsetWidth;
- const innerWidth = document.querySelector(
- '.m-s-header-container .transform-element',
- ).offsetWidth;
- this.max_translateX = innerWidth > outerWidth ? innerWidth - outerWidth : 0;
- if (this.isToday) {
- let hour = new Date().getHours();
- let posit;
- if (hour <= 2) {
- this.translateX = 0;
- } else {
- posit = (hour - 2) * 4 * this.itemWidth;
- this.translateX = 0 - (this.max_translateX > posit ? posit : this.max_translateX);
- }
- } else {
- this.translateX =
- 0 -
- (this.max_translateX > this.itemWidth * 36 ? this.itemWidth * 36 : this.max_translateX);
- }
- },
- // 当前时间分割标记
- getCurrentTime() {
- const D = new Date();
- const NOW_HOURS = D.getHours();
- const NOW_MINUTES = D.getMinutes();
- this.currentTime = `${NOW_HOURS}:${NOW_MINUTES > 9 ? NOW_MINUTES : '0' + NOW_MINUTES}`;
- // 当前时间/15分钟所得数
- this.currentTimeValue = NOW_HOURS * 4 + Math.floor(NOW_MINUTES / 15);
- // 当前时间/15分钟*每一列的宽度
- this.currentTimeLeftValue = this.itemWidth * (NOW_HOURS * 4 + NOW_MINUTES / 15);
- },
- timeToPosition(time) {
- if (time) {
- const [H, M] = time.split(':');
- return (
- parseInt(H) * 4 * this.itemWidth + (parseInt(M) / 15) * this.itemWidth
- );
- }
- },
- positionWidth(item) {
- let diffVal = moment(item.endTime).diff(moment(item.beginTime), 'minute');
- let m = diffVal / 15 * this.itemWidth;
- return m;
- }
- },
- };
- </script>
-
- <style scoped lang="scss">
- .van-pull-refresh {
- height: 100%;
- }
- .sign-wrap {
- height: 100%;
- background: #ffffff;
- .meeting-sign-wraper {
- position: relative;
- height: 100%;
- padding: 0px 30px;
- padding-top: 35px;
- background: url('../img/蓝.svg') no-repeat;
- // background-size: 375px;
- background-size: contain;
- &.isMember {
- background: url('../img/灰.svg') no-repeat;
- background-size: contain;
- }
-
- .close_box {
- width: 40px;
- height: 26px;
- opacity: 0.6;
- background: rgba(255, 255, 255, 0);
- border: 1px solid #ffffff;
- border-radius: 14px;
- color: #ffffff;
- display: flex;
- align-items: center;
- justify-content: center;
- line-height: 26px;
- position: fixed;
- top: 10px;
- right: 10px;
-
- img {
- width: 9px;
- height: 9px;
- }
- }
-
- .screen-guide {
- width: 84px;
- height: 31px;
- background: #ff7d00;
- border-radius: 16px 0px 0px 16px;
- box-shadow: 0px 1px 6px 0px #e5b07e;
- position: fixed;
- top: 44%;
- right: -1px;
- z-index: 1000;
- display: flex;
- align-items: center;
- justify-content: center;
- cursor: pointer;
-
- span {
- font-size: 13px;
- font-family: PingFangSC, PingFangSC-Regular;
- font-weight: 400;
- color: #ffffff;
- line-height: 17px;
- margin-right: 5px;
- }
-
- img {
- width: 9px;
- height: 9px;
- }
- }
-
- .sign-top {
- .meeting-name {
- font-size: 19px;
- font-family: PingFangSC, PingFangSC-Semibold;
- font-weight: 600;
- color: #ffffff;
- line-height: 27px;
- margin-bottom: 12px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- .meeting-time {
- display: flex;
- align-items: center;
- justify-content: space-between;
- .time {
- > div {
- font-size: 25px;
- font-family: DINAlternate, DINAlternate-Bold;
- font-weight: 700;
- color: #ffffff;
- line-height: 29px;
- }
- > p {
- opacity: 0.7;
- font-size: 12px;
- font-family: PingFangSC, PingFangSC-Regular;
- font-weight: 400;
- color: #ffffff;
- line-height: 17px;
- }
- &.left {
- margin-right: 17px;
- }
- &.right {
- margin-left: 17px;
- }
- }
- .center {
- display: flex;
- align-items: center;
- justify-content: center;
- }
- .line {
- width: 30px;
- height: 1px;
- background: #b0c5ff;
- margin: 0px 5px;
- }
- .middle {
- width: 80px;
- height: 23px;
- opacity: 0.6;
- background: #4273f6;
- border-radius: 3px;
- font-size: 12px;
- font-family: PingFangSC, PingFangSC-Regular;
- font-weight: 400;
- color: #ffffff;
- line-height: 17px;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- }
- .meeting-users {
- font-size: 14px;
- font-family: PingFangSC, PingFangSC-Regular;
- font-weight: 400;
- color: #ffffff;
- line-height: 17px;
- margin-top: 12px;
- }
- .meeting-id {
- font-size: 14px;
- font-family: PingFangSC, PingFangSC-Regular;
- font-weight: 400;
- color: #ffffff;
- line-height: 17px;
- margin-top: 8px;
- }
- .btn-box {
- display: flex;
- align-items: center;
- justify-content: center;
- // margin-top: 15px;
- position: fixed;
- left: 50%;
- top: 30%;
- transform: translateX(-50%);
- .btn {
- width: 208px;
- height: 40px;
- background: #4273f6;
- border-radius: 22px;
- box-shadow: 0px 3px 5px 0px #0347e6;
- font-size: 16px;
- font-family: PingFangSC, PingFangSC-Regular;
- font-weight: 400;
- color: #ffffff;
- line-height: 16px;
- display: flex;
- align-items: center;
- justify-content: center;
-
- &.active {
- background: #ff7d00;
- box-shadow: 0px 3px 5px 0px #e5b07e;
- }
- }
-
- .no-sign {
- width: 268px;
- height: 32px;
- background: #ffffff;
- border-radius: 4px;
- font-size: 14px;
- font-family: PingFangSC, PingFangSC-Regular;
- font-weight: 400;
- color: #ff7d00;
- display: flex;
- align-items: center;
- justify-content: center;
-
- > img {
- width: 17px;
- margin-right: 7px;
- }
- }
- }
- }
- .no-waitSign {
- display: flex;
- align-items: center;
- justify-content: center;
- position: fixed;
- left: 50%;
- top: 20%;
- transform: translateX(-50%);
- > img {
- width: 17px;
- margin-right: 7px;
- }
- > span {
- font-size: 14px;
- font-family: PingFangSC, PingFangSC-Regular;
- font-weight: 400;
- color: #ffffff;
- }
- }
- .sign-content {
- position: fixed;
- top: 44%;
- left: 50%;
- transform: translateX(-50%);
- width: 343px;
- background: #ffffff;
- border-radius: 8px;
- box-shadow: 0px 2px 5px 0px #e6e6e6;
- transition: all 0.3s;
-
- > div {
- padding: 12px 20px;
- overflow: hidden;
- max-height: 586px;
- height: 360px;
- &::-webkit-scrollbar {
- display: none;
- }
- }
-
- > img {
- position: absolute;
- top: -8%;
- left: 50%;
- transform: translateX(-50%);
- z-index: 999;
-
- &.img-line {
- width: 28px;
- }
- &.img-down {
- width: 22px;
- }
- }
-
- ul {
- overflow: hidden;
- height: 100%;
- li {
- padding-bottom: 30px;
- .date {
- font-size: 15px;
- font-family: PingFangSC, PingFangSC-Medium;
- font-weight: 500;
- color: #5f6368;
- line-height: 20px;
- margin-bottom: 6px;
- }
- .time-kedu-box {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- overflow-x: auto;
- overflow-y: hidden;
- position: relative;
- height: 35px;
- &::-webkit-scrollbar {
- display: none;
- }
-
- .kedu-wrap {
- width: 29px;
- flex: 0 0 29px;
- margin-right: 2px;
- }
- }
- .time-content {
- .content-box {
- border-bottom: 1px solid #dedede;
- padding: 8px 10px;
- &:last-child {
- border-bottom: 0px;
- }
- .content-top {
- display: flex;
- align-items: center;
- justify-content: center;
- .time {
- font-size: 22px;
- font-family: DINAlternate, DINAlternate-Bold;
- font-weight: 700;
- color: #202124;
- line-height: 26px;
-
- &.left {
- margin-right: 17px;
- }
- &.right {
- margin-left: 10px;
- }
- }
- .line {
- width: 30px;
- height: 1px;
- background: #f0f0f0;
- margin: 0px 5px;
- }
- .middle {
- width: 82px;
- height: 23px;
- background: #f7f7f7;
- border-radius: 3px;
- font-size: 12px;
- font-family: PingFangSC, PingFangSC-Regular;
- font-weight: 400;
- color: #5f6368;
- line-height: 17px;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- }
- .content-bottom {
- font-size: 12px;
- font-family: PingFangSC, PingFangSC-Regular;
- font-weight: 400;
- color: #9a9a9a;
- line-height: 17px;
- margin-top: 7px;
-
- span {
- color: #202124;
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- .transform-element {
- transition: transform 0.5s;
- }
- table {
- width: 100%;
- table-layout: fixed;
- border-collapse: collapse;
- }
- .m-s-header-container,
- .m-s-body-container {
- width: 100%;
- }
- .m-s-header-container {
- touch-action: none;
- height: 100%;
- position: relative;
- z-index: 10;
- white-space: nowrap;
- overflow: hidden;
- .translate-handle {
- position: absolute;
- top: 3px;
- z-index: 10;
- display: block;
- width: 20px;
- height: 20px;
- color: #4273f6;
- background-color: #fff;
- border-radius: 50%;
- border: none;
- box-shadow: 0px 0px 8px 0px #edeff1;
- * {
- pointer-events: none;
- }
- }
-
- .translate-left {
- left: 0;
- }
- .translate-right {
- right: 0;
- }
- tr {
- .header-item {
- position: absolute;
- bottom: -20px;
- left: 0;
- float: left;
- color: #90959d;
- font-weight: 400;
- font-size: 10px;
- // line-height: 35px;
- text-align: center;
- transform: translateX(-50%);
- // transform: scale(0.8);
- }
- th {
- position: relative;
- height: 18px;
- border: none;
- background: #f7f7f7;
- }
- th:not(:nth-child(4n + 2)) {
- .header-item {
- display: none;
- }
- }
- th:nth-child(4n + 2) {
- border-left: 2px solid #ffffff;
- }
- th:last-child {
- border-right: 2px solid #ffffff;
- }
- }
- }
-
- .scroll-wrapper {
- .scroll-content {
- display: inline-block;
- }
- }
-
- .current-time-line {
- position: absolute;
- top: 0px;
- left: 0px;
- z-index: 100;
- // width: 1px;
- height: 18px;
- border-left: 1px dotted #f35b4e;
- }
- .m-s-activity {
- position: absolute;
- top: 0;
- display: flex;
- align-items: center;
- height: 100%;
- color: #6d88d0;
- z-index: 200;
- background: rgba(107,147,255,0.80);
- width: 100%;
- }
- </style>
- <style>
- .van-icon {
- font: normal normal normal 36px 'vant-icon' !important;
- }
- </style>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。