|
@@ -0,0 +1,558 @@
|
|
|
|
+<template>
|
|
|
|
+ <div class="background">
|
|
|
|
+ <div class="top">
|
|
|
|
+ <div class="back" @click="to_list">
|
|
|
|
+ <img :src="get_icon('back')" alt="<">
|
|
|
|
+ <span>返 回</span>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="time">{{ time }} s</div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="body">
|
|
|
|
+ <div class="left">
|
|
|
|
+ <img :src="wine.picture" alt="picture">
|
|
|
|
+ <div class="desc">{{ wine.describe }}</div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="right">
|
|
|
|
+ <div class="right-top">
|
|
|
|
+ <div class="header">
|
|
|
|
+ <div class="text-info">
|
|
|
|
+ <h1 class="wine-name">{{ wine.name }}<small>{{ wine.degree }}°</small></h1>
|
|
|
|
+ <div class="info">
|
|
|
|
+ <h3 v-if="!$utils.loginCount.status">¥<span class="wine-price">{{ wine.price_in_yuan }}</span>/两</h3>
|
|
|
|
+ <h3 v-else>
|
|
|
|
+ ¥<span class="wine-price line-through">{{ wine.price_in_yuan }}</span><span class="wine-price">{{ wine.price_for_vip }}</span>/两
|
|
|
|
+ </h3>
|
|
|
|
+ <div class="remain">
|
|
|
|
+ 剩余:<span :style="`color: ${color_of_remain};`">{{ wine.remain_in_weight }}</span> 两
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="count-tip">请选择购买份额</div>
|
|
|
|
+ </div>
|
|
|
|
+ <div v-if="$utils.loginCount.status" class="vip-qrcode">
|
|
|
|
+ <div class="vip_count">
|
|
|
|
+ <span class="count_left">用户名: </span>
|
|
|
|
+ <span class="count_right">{{$utils.loginCount.user}}</span>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="vip_count">
|
|
|
|
+ <span class="count_left">会员等级:</span>
|
|
|
|
+ <span class="count_right">{{$utils.loginCount.desc}}</span>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="vip_count">
|
|
|
|
+ <span class="count_left">折扣:</span>
|
|
|
|
+ <span class="count_right">{{$utils.loginCount.discount / 100}}折</span>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="vip_count">
|
|
|
|
+ <span class="count_left">余额:</span>
|
|
|
|
+ <span class="count_right">{{$utils.loginCount.remain / 100}}元</span>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div v-else class="vip-qrcode">
|
|
|
|
+ <img class="qrcode-img" :src="qrcode" alt="QrCode">
|
|
|
|
+ <span class="qrcode-text">扫码成为会员</span>
|
|
|
|
+ <span class="qrcode-text">享受更多优惠</span>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="count-items">
|
|
|
|
+ <span :class="class_of(c)" v-for="c in selectList" :key="c" @click="try_choose(c)">{{ c }} 两</span>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="button" @click="try_buy">
|
|
|
|
+ ¥<span class="price"> {{ cash() }} </span>元 确认购买
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="showModal" v-show="show">
|
|
|
|
+ <div class="modal">
|
|
|
|
+ <div class="modal_title">是否退出会员登录?</div>
|
|
|
|
+ <div class="btn_flex">
|
|
|
|
+ <div class="flex_item blue" @click="onsubmit">确认</div>
|
|
|
|
+ <div class="flex_item warn" @click="cancel">取消</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="showModal" v-show="showType">
|
|
|
|
+ <div class="modal">
|
|
|
|
+ <div class="modal_title">会员余额不足,请充值!</div>
|
|
|
|
+ <div class="btn_flex">
|
|
|
|
+ <div class="flex_item blue" @click="showType = false">确认</div>
|
|
|
|
+ <div class="flex_item green" @click="qrPay">扫码支付</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+let Timer = null, Index = 0, LightTimer = null, LightEpoch = 6;
|
|
|
|
+export default {
|
|
|
|
+ name: "WineDetailPage",
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ wine: {
|
|
|
|
+ id: 0, name: "", price: 0, density: 0, picture: "", describe: "", remain: 0, vpp: 0,
|
|
|
|
+ price_in_yuan: 0, remain_in_weight: 0, cell: 0, degree: 0
|
|
|
|
+ },
|
|
|
|
+ selectList: [2, 3, 4, 5, 6, 7, 8, 9, 10],
|
|
|
|
+ time: this.$utils.ParamMap.DetailTimeOut,
|
|
|
|
+ selected: 1,
|
|
|
|
+ qrcode: this.$utils.VipQrcode,
|
|
|
|
+ user: {uid: "xxx", level: 0, discount: 100, desc: "普通用户", cash: 0},
|
|
|
|
+ show: false,
|
|
|
|
+ showType: false
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ Start(index) {
|
|
|
|
+ if (index !== undefined) {
|
|
|
|
+ Index = index;
|
|
|
|
+ this.wine = this.$utils.Wines[index];
|
|
|
|
+ this.selected = 2;
|
|
|
|
+ this.spark_light();
|
|
|
|
+ }
|
|
|
|
+ this.user = {uid: "xxx", level: 0, discount: 100, desc: "普通用户", cash: 0};
|
|
|
|
+ this.time = this.$utils.ParamMap.DetailTimeOut;
|
|
|
|
+ this.clear_timer();
|
|
|
|
+ Timer = setInterval(() => {
|
|
|
|
+ if (--this.time === 0) {
|
|
|
|
+ this.onsubmit()
|
|
|
|
+ }
|
|
|
|
+ }, 1000);
|
|
|
|
+ },
|
|
|
|
+ Over() {
|
|
|
|
+ this.clear_timer();
|
|
|
|
+ if (LightTimer !== null) {
|
|
|
|
+ clearInterval(LightTimer);
|
|
|
|
+ LightTimer = null;
|
|
|
|
+ setTimeout(() => this.$utils.Android("lightOff", Index), 200);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ spark_light() {
|
|
|
|
+ let epoch = LightEpoch;
|
|
|
|
+ this.$utils.Android("lightOn", Index);
|
|
|
|
+ LightTimer = setInterval(() => {
|
|
|
|
+ if (--epoch === 0) {
|
|
|
|
+ clearInterval(LightTimer);
|
|
|
|
+ LightTimer = null;
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ this.$utils.Android(epoch % 2 === 0 ? "lightOn" : "lightOff", Index);
|
|
|
|
+ }, 1000);
|
|
|
|
+ },
|
|
|
|
+ get_icon(name) {
|
|
|
|
+ return `${process.env.BASE_URL}icon/${name}.svg`;
|
|
|
|
+ },
|
|
|
|
+ to_list() {
|
|
|
|
+ if(this.$utils.loginCount.status) {
|
|
|
|
+ this.show = true
|
|
|
|
+ } else {
|
|
|
|
+ this.$emit("detail2list");
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ onsubmit() {
|
|
|
|
+ this.show = false;
|
|
|
|
+ this.$utils.loginCount = {
|
|
|
|
+ status: false,
|
|
|
|
+ desc: "",
|
|
|
|
+ device: "",
|
|
|
|
+ discount: 0,
|
|
|
|
+ level: 0,
|
|
|
|
+ remain: 0,
|
|
|
|
+ user: "",
|
|
|
|
+ useraccount: '',
|
|
|
|
+ currvpdm: '',
|
|
|
|
+ userid: ''
|
|
|
|
+ }
|
|
|
|
+ this.$emit("detail2list");
|
|
|
|
+ },
|
|
|
|
+ cancel() {
|
|
|
|
+ this.show = false;
|
|
|
|
+ },
|
|
|
|
+ clear_timer() {
|
|
|
|
+ if (Timer !== null) clearInterval(Timer);
|
|
|
|
+ Timer = null;
|
|
|
|
+ },
|
|
|
|
+ class_of(count) {
|
|
|
|
+ if (count > this.wine.remain_in_weight) return "item disabled";
|
|
|
|
+ if (count === this.selected) return "item selected";
|
|
|
|
+ return "item";
|
|
|
|
+ },
|
|
|
|
+ try_choose(count) {
|
|
|
|
+ if (count > this.wine.remain_in_weight) return;
|
|
|
|
+ this.selected = count;
|
|
|
|
+ },
|
|
|
|
+ // 扫码支付
|
|
|
|
+ qrPay() {
|
|
|
|
+ this.showType = false;
|
|
|
|
+ this.$utils.payType = 2;
|
|
|
|
+ this.$emit("detail2pay", Index);
|
|
|
|
+ },
|
|
|
|
+ try_buy() {
|
|
|
|
+ if(this.$utils.loginCount.status) {
|
|
|
|
+ this.$utils.EventBus["debug"]("detail page try buy called");
|
|
|
|
+ this.$utils.Wines[Index].weight = this.selected;
|
|
|
|
+ this.$utils.Wines[Index].w10g = this.selected * 500;
|
|
|
|
+ this.$utils.Wines[Index].volume = this.$utils.Weight2Volume(this.selected, this.wine.density);
|
|
|
|
+ this.$utils.Wines[Index].pulse = this.$utils.Weight2Pulse(this.selected, this.wine.density, this.wine.vpp);
|
|
|
|
+ this.$utils.Wines[Index].cash = Math.floor((Math.floor(this.wine.price * this.$utils.loginCount.discount / 1000) / 100) * this.selected * 100)
|
|
|
|
+ this.$utils.EventBus["debug"](`name: ${this.$utils.Wines[Index].name}, weight: ${this.$utils.Wines[Index].weight}, cash: ${this.$utils.Wines[Index].cash}`);
|
|
|
|
+ // this.$emit("detail2pay", Index);
|
|
|
|
+ // this.$utils.SendWss({event: 'vipConsume', data: {
|
|
|
|
+ // device: this.$utils.deviceId,
|
|
|
|
+ // user: this.$utils.loginCount.user,
|
|
|
|
+ // cell: Index,
|
|
|
|
+ // cash: this.$utils.Wines[Index].cash,
|
|
|
|
+ // weight: this.$utils.Wines[Index].weight
|
|
|
|
+ // }})
|
|
|
|
+ if(this.$utils.loginCount.remain / 100 < this.$utils.Wines[Index].cash) {
|
|
|
|
+ this.showType = true
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ this.$utils.EventBus["debug"]("detail page try buy called");
|
|
|
|
+ this.$utils.Wines[Index].weight = this.selected;
|
|
|
|
+ this.$utils.Wines[Index].w10g = this.selected * 500;
|
|
|
|
+ this.$utils.Wines[Index].volume = this.$utils.Weight2Volume(this.selected, this.wine.density);
|
|
|
|
+ this.$utils.Wines[Index].pulse = this.$utils.Weight2Pulse(this.selected, this.wine.density, this.wine.vpp);
|
|
|
|
+ this.$utils.Wines[Index].cash = this.wine.price * this.selected;
|
|
|
|
+ this.$utils.EventBus["debug"](`name: ${this.$utils.Wines[Index].name}, weight: ${this.$utils.Wines[Index].weight}, cash: ${this.$utils.Wines[Index].cash}`);
|
|
|
|
+ this.$utils.payType = 2;
|
|
|
|
+ this.$emit("detail2pay", Index);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ _vipConsume(info) {
|
|
|
|
+ if(info.status) {
|
|
|
|
+ if(info.data.status) {
|
|
|
|
+ this._onOrderPayed(info.data.data)
|
|
|
|
+ } else {
|
|
|
|
+ this.$utils.EventBus["ShowAlert"]({
|
|
|
|
+ title: "温馨提示", subtitle: "支付失败", color: "deepskyblue", icon: this.get_icon("finish"),
|
|
|
|
+ button: {need: true, text: "返 回 列 表", countdown: 10}, callback: () => this.$emit("out2list")
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ _onOrderPayed(volume) {
|
|
|
|
+ if (volume === undefined) {
|
|
|
|
+ volume = this.$utils.Weight2Volume(this.$utils.Wines[Index].weight, this.$utils.Wines[Index].density);
|
|
|
|
+ }
|
|
|
|
+ this.$utils.Wines[Index].remain -= volume;
|
|
|
|
+ this.$utils.Wines[Index].remain_in_weight = this.$utils.Volume2Weight(this.$utils.Wines[Index].remain, this.$utils.Wines[Index].density);
|
|
|
|
+ this.$utils.EventBus["debug"](`out volume[${volume}], remain volume[${this.$utils.Wines[Index].remain}], remain weight[${this.$utils.Wines[Index].remain_in_weight}]`);
|
|
|
|
+ this.$emit('detail2out', Index)
|
|
|
|
+ },
|
|
|
|
+ _onVipUserFind(info) {
|
|
|
|
+ this.user = {...info, status: true};
|
|
|
|
+ },
|
|
|
|
+ // toFixedTwo(num) {
|
|
|
|
+ // if (typeof num !== 'number' || Number.isNaN(num)) return num
|
|
|
|
+ // num = num.toFixed(2); // 转换为字符串格式的两位小数
|
|
|
|
+ // return Number(num.slice(0, num.length - 1))
|
|
|
|
+ // },
|
|
|
|
+ cash() {
|
|
|
|
+ if(this.$utils.loginCount.status) {
|
|
|
|
+ return Math.floor((Math.floor(this.wine.price * this.$utils.loginCount.discount / 1000) / 100) * this.selected * 100) /100
|
|
|
|
+ }
|
|
|
|
+ return (this.wine.price * this.selected / 100).toFixed(2);
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ mounted() {
|
|
|
|
+ this.$utils.SockEventMap["vipUserFind"] = this._onVipUserFind;
|
|
|
|
+ this.$utils.SockEventMap["vipConsume"] = this._vipConsume;
|
|
|
|
+ },
|
|
|
|
+ computed: {
|
|
|
|
+ color_of_remain() {
|
|
|
|
+ if (this.wine.remain > this.$utils.ParamMap.WarnLine) return "green";
|
|
|
|
+ else if (this.wine.remain > this.$utils.ParamMap.DangerLine) return "goldenrod";
|
|
|
|
+ return "red";
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<style scoped>
|
|
|
|
+.background {
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+ padding: 40px 30px;
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: column;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.top {
|
|
|
|
+ width: 100%;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ align-items: center;
|
|
|
|
+ font-size: 20px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.back {
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.back > img {
|
|
|
|
+ width: 20px;
|
|
|
|
+ height: 20px;
|
|
|
|
+ margin-right: 2px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.time {
|
|
|
|
+ color: dimgray;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.body {
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: calc(100% - 75px);
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-around;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.left {
|
|
|
|
+ width: 500px;
|
|
|
|
+ height: 100%;
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: column;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.left > img {
|
|
|
|
+ width: 455px;
|
|
|
|
+ height: 650px;
|
|
|
|
+ border-radius: 6px;
|
|
|
|
+ object-fit: cover;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.desc {
|
|
|
|
+ margin-top: 20px;
|
|
|
|
+ text-indent: 2em;
|
|
|
|
+ font-size: 1.2em;
|
|
|
|
+ word-break: break-all;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+ display: -webkit-box;
|
|
|
|
+ -webkit-line-clamp: 4;
|
|
|
|
+ -webkit-box-orient: vertical;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.right {
|
|
|
|
+ width: calc(100% - 550px);
|
|
|
|
+ height: 100%;
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: column;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.right-top {
|
|
|
|
+ width: 100%;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.header {
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 240px;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ align-items: start;
|
|
|
|
+ margin-bottom: 15px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.text-info {
|
|
|
|
+ height: 100%;
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: column;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ align-items: start;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.wine-name {
|
|
|
|
+ margin-block-start: 0;
|
|
|
|
+ font-size: 34px;
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: flex-end;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.wine-name > small {
|
|
|
|
+ font-size: 24px;
|
|
|
|
+ margin-left: 20px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.info {
|
|
|
|
+ width: 100%;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ align-items: flex-end;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+h3 {
|
|
|
|
+ color: red;
|
|
|
|
+ margin-block-start: 0;
|
|
|
|
+ margin-block-end: 0;
|
|
|
|
+ font-size: 24px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.wine-price {
|
|
|
|
+ font-size: 38px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.remain {
|
|
|
|
+ margin-left: 50px;
|
|
|
|
+ color: rgba(0, 0, 0, .4);
|
|
|
|
+ font-size: 22px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.count-tip {
|
|
|
|
+ font-size: 20px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.vip-qrcode {
|
|
|
|
+ width: 200px;
|
|
|
|
+ height: 240px;
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: column;
|
|
|
|
+ align-items: center;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.qrcode-img {
|
|
|
|
+ width: 200px;
|
|
|
|
+ height: 200px;
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+ border: 1px solid black;
|
|
|
|
+ padding: 5px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.qrcode-text {
|
|
|
|
+ color: gray;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.count-items {
|
|
|
|
+ width: 100%;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+ padding: 10px 8px 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.item {
|
|
|
|
+ width: 30%;
|
|
|
|
+ height: 70px;
|
|
|
|
+ margin-bottom: 20px;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ align-items: center;
|
|
|
|
+ font-size: 25px;
|
|
|
|
+ font-weight: bold;
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+ border: 1px solid transparent;
|
|
|
|
+ border-radius: 4px;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ transition: all 100ms;
|
|
|
|
+ background-color: rgba(0, 0, 0, .06);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.disabled {
|
|
|
|
+ color: gray;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.selected {
|
|
|
|
+ color: #ff5000;
|
|
|
|
+ border: 1px solid #ff5000 !important;
|
|
|
|
+ background-color: rgba(255, 80, 0, .05);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.button {
|
|
|
|
+ width: 80%;
|
|
|
|
+ margin-left: 10%;
|
|
|
|
+ height: 60px;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ align-items: center;
|
|
|
|
+ font-size: 24px;
|
|
|
|
+ font-weight: bold;
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+ border-radius: 50px;
|
|
|
|
+ background: linear-gradient(90deg, rgb(255, 119, 0), rgb(255, 73, 0));
|
|
|
|
+ box-shadow: rgba(255, 119, 0, 0.2) 0 9px 13px 0;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ color: whitesmoke;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.button:active {
|
|
|
|
+ transform: scale(0.99);
|
|
|
|
+ box-shadow: 1px 2px 4px lightgray;
|
|
|
|
+}
|
|
|
|
+.vip_count {
|
|
|
|
+ width: 100%;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+}
|
|
|
|
+.count_left {
|
|
|
|
+ width: 40%;
|
|
|
|
+}
|
|
|
|
+.count_right {
|
|
|
|
+ flex: 1;
|
|
|
|
+ color: #007BFF;
|
|
|
|
+}
|
|
|
|
+.line-through {
|
|
|
|
+ color: #AAAAAA;
|
|
|
|
+ opacity: 0.7;
|
|
|
|
+ font-size: 18px;
|
|
|
|
+ text-decoration: line-through;
|
|
|
|
+}
|
|
|
|
+.showModal {
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 100%;
|
|
|
|
+ position: absolute;
|
|
|
|
+ background: rgba(0, 0, 0, .4);
|
|
|
|
+ /*top: 50%;*/
|
|
|
|
+ /*left: 50%;*/
|
|
|
|
+ /*transform: translate(-50%, -50%);*/
|
|
|
|
+ /*background: ;*/
|
|
|
|
+}
|
|
|
|
+.modal {
|
|
|
|
+ width: 400px;
|
|
|
|
+ height: 300px;
|
|
|
|
+ background: #fff;
|
|
|
|
+ box-shadow: 0 0 12px rgba(0, 0, 0, .12);
|
|
|
|
+ position: absolute;
|
|
|
|
+ top: 50%;
|
|
|
|
+ left: 50%;
|
|
|
|
+ transform: translate(-50%, -50%);
|
|
|
|
+ border-radius: 6px;
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+ padding: 10px;
|
|
|
|
+}
|
|
|
|
+.modal_title {
|
|
|
|
+ text-align: center;
|
|
|
|
+ padding-top: 30px;
|
|
|
|
+ font-size: 28px;
|
|
|
|
+ font-weight: bold;
|
|
|
|
+}
|
|
|
|
+.btn_flex {
|
|
|
|
+ width: 300px;
|
|
|
|
+ height: 60px;
|
|
|
|
+ display: flex;
|
|
|
|
+ position: absolute;
|
|
|
|
+ border-radius: 10px;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+ left: 50%;
|
|
|
|
+ bottom: 0;
|
|
|
|
+ transform: translate(-50%, -50%);
|
|
|
|
+}
|
|
|
|
+.flex_item {
|
|
|
|
+ width: 50%;
|
|
|
|
+ height: 100%;
|
|
|
|
+ color: #fff;
|
|
|
|
+ line-height: 60px;
|
|
|
|
+ text-align: center;
|
|
|
|
+ font-size: 24px;
|
|
|
|
+ font-weight: 500;
|
|
|
|
+}
|
|
|
|
+.blue {
|
|
|
|
+ background: #409EFF;
|
|
|
|
+}
|
|
|
|
+.warn {
|
|
|
|
+ background: #EEBE77;
|
|
|
|
+}
|
|
|
|
+.green {
|
|
|
|
+ background: #72c140;
|
|
|
|
+}
|
|
|
|
+</style>
|