1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054 |
- <template>
- <view :style="colorStyle">
- <!-- #ifdef MP || APP -->
- <NavBar titleText="门店拼单" iconColor="#FFFFFF" textColor="#FFFFFF" :showBack="collage_uid == uid" :showHome="collage_uid != uid"></NavBar>
- <!-- #endif -->
- <view class="headerBg">
- <!-- #ifdef MP || APP -->
- <view :style="{ height: `${getHeight.barTop}px` }"></view>
- <view :style="{ height: `${getHeight.barHeight}px` }"></view>
- <!-- #endif -->
- <view class="inner">
- <image class="back" mode="aspectFit" :src="imgHost+'/statics/images/group-buy.png'"></image>
- <view class="text-box">
- <image :src="imgHost+'/statics/images/group-text.png'" class="text-image"></image>
- <view>一起拼单享满减活动</view>
- </view>
- </view>
- </view>
- <view class="content">
- <view class="top-placeholder"></view>
- <template v-if="status != -1">
- <view class="simple">
- <view class="seller">
- <view class="head acea-row">
- <view class="headCon">
- <text class="tag acea-row row-center-wrapper">{{delivery_type == 3 ? '配送' : '自提'}}</text>
- {{storeInfo.name || ''}}
- </view>
- <view>距您{{ storeInfo.range || 0 }}km</view>
- </view>
- <view>{{ storeInfo.address }}{{ storeInfo.detailed_address }}</view>
- </view>
- <view class="buyer acea-row row-middle">
- <view v-if="plainPartake.length" class="avatar-group">
- <template v-for="(item, index) in plainPartake">
- <image v-if="index <= 6" :key="item.userInfo.uid" class="avatar" :src="item.userInfo.avatar || '/static/images/f.png'" mode="aspectFill"></image>
- </template>
- <view v-if="plainPartake.length > 7" class="gengduo"><text class="iconfont icon-gengduo"></text></view>
- </view>
- <view>{{ plainPartake.length }}人已点单</view>
- <!-- #ifdef MP -->
- <view v-if="status != 2" class="btn acea-row row-center row-middle" @click="refresh">
- <text class="iconfont icon-ic_Refresh"></text>刷新
- </view>
- <!-- #endif -->
- <!-- #ifdef H5 -->
- <view v-if="status != 2 && $wechat.isWeixin()" class="btn acea-row row-center row-middle" @click="refresh">
- <text class="iconfont icon-ic_Refresh"></text>刷新
- </view>
- <!-- #endif -->
- </view>
- <view v-if="collage_uid == uid && status != 2" class="btn-box acea-row row-center">
- <view class="btn acea-row row-center row-middle" @click="onCancel">取消拼单</view>
- <!-- #ifdef MP -->
- <button class="btn acea-row row-center row-middle primary" hover-class="none" open-type="share">邀请好友</button>
- <!-- #endif -->
- <!-- #ifdef H5 -->
- <button v-if="$wechat.isWeixin()" class="btn acea-row row-center row-middle primary" hover-class="none" @tap="onShare">邀请好友</button>
- <!-- #endif -->
- </view>
- </view>
- <view v-if="collage_uid != uid" class="status">
- <view class="head">当前拼单进度</view>
- <view class="body">
- <view v-for="(item, index) in statusList" :key="item.value" :class="{ active: item.value == status }" class="item">
- <view class="number">{{ index + 1 }}</view>
- <view>{{ item.name }}</view>
- </view>
- </view>
- </view>
- <view v-if="collagePartake.length" class="choice">
- <view v-for="item in collagePartake" :key="item.userInfo.uid" class="wrapper">
- <view class="head acea-row row-middle">
- <view>
- <image class="avatar" :src="item.userInfo.avatar || '/static/images/f.png'" mode="aspectFill"></image>
- </view>
- <view class="name">
- <view class="acea-row row-middle inner">
- <view class="line1 nickname">{{ item.userInfo.nickname }}</view>
- <text v-if="item.userInfo.uid == uid">(我)</text>
- <text v-else-if="item.userInfo.uid == collage_uid">(发起人)</text>
- <text v-if="!item.goods.length" class="tips">尚未选购</text>
- </view>
- </view>
- <template v-if="status != 2">
- <button v-if="item.userInfo.uid == uid && item.goods.length" class="button remove" hover-class="none" @tap="onRemove">清空</button>
- <button v-if="item.userInfo.uid == uid && item.goods.length" class="button" hover-class="none" @tap="onChange">修改</button>
- <button v-if="item.userInfo.uid != uid && item.goods.length" class="button" hover-class="none" @tap="onCopy(item.userInfo.uid)">跟TA选一样</button>
- <button v-if="item.userInfo.uid == uid && !item.goods.length" class="button select" hover-class="none" @tap="onChange">立即选购</button>
- </template>
- </view>
- <view v-if="item.goods.length" class="body">
- <view v-for="goods in item.goods" :key="goods.id" :class="{ gray: !goods.is_true_stock }" class="item acea-row">
- <view>
- <image class="image" :src="goods.productInfo.attrInfo.image" mode="aspectFill"></image>
- </view>
- <view class="text">
- <view class="name line2">{{ goods.productInfo.store_name }}</view>
- <view class="attr line1">{{ goods.productInfo.attrInfo.suk }}</view>
- </view>
- <view>
- <BaseMoney :money="goods.truePrice" symbolSize="20" integerSize="32" decimalSize="20" color="#333333"></BaseMoney>
- <view class="number">共{{ goods.cart_num }}件</view>
- </view>
- </view>
- </view>
- </view>
- </view>
- <view v-if="collage_uid == uid && status != 2" class="footer">
- <view class="footer-wrap acea-row row-middle">
- <view class="total">
- 最终优惠价:<BaseMoney :money="total" symbolSize="28" integerSize="44" decimalSize="28"></BaseMoney>
- </view>
- <button class="btn" hover-class="none" @tap="setting">去结算</button>
- </view>
- </view>
- </template>
- <view v-else class="empty">
- <emptyPage title="该订单已被发起人取消,返回重新选购">
- <template v-slot:bottom>
- <view class="btn" @click="goStore">返回门店</view>
- </template>
- </emptyPage>
- </view>
- </view>
- <!-- 发送给朋友图片 -->
- <view class="share-box" v-if="H5ShareBox">
- <image :src="imgHost + '/statics/images/share-info.png'" @click="H5ShareBox = false">
- </image>
- </view>
- <tuiModal :show="dialogShow" padding="40rpx" radius="32rpx" custom>
- <view class="dialog">
- <view class="title">确定要结算吗?</view>
- <view class="info">结算后,其他人无法再加入或修改商品</view>
- <view class="btn-box acea-row">
- <view class="btn" @click="dialogShow = false">取消</view>
- <view class="btn primary" @click="getCollagePartake(onSettle)">确认</view>
- </view>
- </view>
- </tuiModal>
- </view>
- </template>
- <script>
- import home from '@/components/home';
- import NavBar from '@/components/NavBar.vue';
- import emptyPage from '@/components/emptyPage.vue';
- import tuiModal from '@/components/tui-modal/index.vue';
- import {
- getnearbyStore
- } from '@/api/new_store.js';
- import {
- getCollage,
- cancelCollage,
- settleCollage,
- getCollagePartake,
- emptyCollagePartake,
- duplicateCollagePartake
- } from '@/api/store.js'
- import colors from '@/mixins/color.js';
- import {
- mapGetters
- } from 'vuex';
- import {
- HTTP_REQUEST_URL
- } from '@/config/app';
- export default {
- components: {
- home,
- NavBar,
- emptyPage,
- tuiModal,
- },
- mixins: [colors],
- data() {
- return {
- getHeight: this.$util.getWXStatusHeight(),
- storeInfo: {},
- delivery_type: 2,
- where: {
- latitude: 0,
- longitude: 0,
- store_id: 0
- },
- collage_uid: 0,
- status: null,
- statusBarHeight: 0,
- navBarHeight: 0,
- collagePartake: [],
- isShowAuth: false,
- imgHost: HTTP_REQUEST_URL,
- statusList: [{
- name: '完成选购',
- value: 0,
- },
- {
- name: '提交订单',
- value: 1,
- },
- {
- name: '完成拼单',
- value: 2,
- }
- ],
- H5ShareBox: false,
- dialogShow: false,
- }
- },
- computed: {
- ...mapGetters(['uid', 'isLogin']),
- total() {
- return this.collagePartake.reduce((total, {
- sum_price
- }) => {
- return this.$util.$h.Add(total, sum_price);
- }, 0);
- },
- plainPartake() {
- let partake = this.collagePartake.filter(item => {
- return item.goods.length;
- });
- return partake;
- },
- canCheckUser() {
- return {
- status: this.status,
- collagePartake: this.collagePartake
- }
- }
- },
- watch: {
- canCheckUser(value) {
- if (value.status == 2 || !value.collagePartake.length) {
- return;
- }
- let hasUser = false;
- for (let partakeItem of this.collagePartake) {
- hasUser = this.uid == partakeItem.userInfo.uid;
- if (hasUser) {
- break;
- }
- }
- if (!hasUser) {
- this.$util.Tips({
- title: '请去个人中心登录'
- });
- }
- }
- },
- onLoad(options) {
- this.collage_id = options.collage_id;
- // #ifdef MP
- let {
- top,
- height
- } = uni.getMenuButtonBoundingClientRect();
- uni.getSystemInfo({
- success: (res) => {
- const {
- statusBarHeight
- } = res;
- this.statusBarHeight = statusBarHeight;
- this.navBarHeight = (top - statusBarHeight) * 2 + height;
- }
- });
- // #endif
- },
- onShow() {
- if (this.isLogin) {
- this.getLocation();
- } else {
- toLogin();
- }
- },
- methods: {
- getLocation() {
- // #ifdef H5
- if (this.$wechat.isWeixin()) {
- this.$wechat.location().then(res => {
- try {
- uni.setStorageSync('user_latitude', res.latitude);
- uni.setStorageSync('user_longitude', res.longitude);
- this.getCollage();
- this.getCollagePartake();
- } catch (e) {
- //TODO handle the exception
- }
- }).catch(() => {
- this.getCollage();
- this.getCollagePartake();
- });
- }
- // #endif
- // #ifdef MP
- uni.getLocation({
- type: 'gcj02',
- success: (res) => {
- try {
- uni.setStorageSync('user_latitude', res.latitude);
- uni.setStorageSync('user_longitude', res.longitude);
- } catch (e) {
- //TODO handle the exception
- }
- },
- fail: (err) => {
- this.$util.Tips({
- title: err
- });
- },
- complete: () => {
- this.getCollage();
- this.getCollagePartake();
- }
- });
- // #endif
- },
- // 授权回调
- onLoadFun() {
- this.isShowAuth = false;
- this.getLocation();
- },
- // 授权关闭
- authColse: function(e) {
- this.isShowAuth = e
- },
- getCollage() {
- getCollage({
- collage_id: this.collage_id
- }).then(res => {
- const {
- shipping_type,
- address_id,
- status,
- uid,
- store_id
- } = res.data.collage;
- this.delivery_type = shipping_type;
- this.address_id = address_id;
- this.status = status;
- this.collage_uid = uid;
- this.where.store_id = store_id;
- this.getnearbyStore();
- });
- },
- // 获取门店信息
- getnearbyStore() {
- try {
- this.where.latitude = uni.getStorageSync('user_latitude');
- this.where.longitude = uni.getStorageSync('user_longitude');
- } catch (e) {
- //TODO handle the exception
- }
- getnearbyStore(this.where).then(res => {
- this.storeInfo = res.data.info;
- // #ifdef H5
- if (this.$wechat.isWeixin()) {
- let configAppMessage = {
- desc: this.storeInfo.detailed_address,
- title: this.storeInfo.name,
- link: window.location.href,
- imgUrl: this.imgHost + '/statics/images/group-text.png',
- };
- this.$wechat.wechatEvevt(['updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareAppMessage', 'onMenuShareTimeline'], configAppMessage);
- }
- // #endif
- });
- },
- // 拼单商品信息
- getCollagePartake(callback) {
- this.dialogShow = false;
- if (!callback) {
- uni.showLoading({
- title: '加载中'
- });
- }
- getCollagePartake({
- collage_id: this.collage_id
- }).then(res => {
- this.collagePartake = res.data;
- if (!callback) {
- return uni.hideLoading();
- }
- let is_true_stock = true;
- for (let partakeItem of this.collagePartake) {
- if (!is_true_stock) {
- break;
- }
- for (let goodsItem of partakeItem.goods) {
- is_true_stock = goodsItem.is_true_stock;
- if (!is_true_stock) {
- break;
- }
- }
- }
- if (!is_true_stock) {
- return this.$util.Tips({
- title: '存在库存不足的商品,请检查'
- });
- }
- callback();
- }).catch(() => {
- uni.hideLoading();
- });
- },
- // 清空
- onRemove() {
- emptyCollagePartake({
- collage_id: this.collage_id
- }).then(res => {
- this.$util.Tips({
- title: '清空成功',
- success: () => {
- this.getCollagePartake();
- }
- });
- });
- },
- // 修改、立即选购
- onChange() {
- uni.navigateTo({
- url: `/pages/store/group_cart/index?id=${this.where.store_id}&collage_id=${this.collage_id}&delivery_type=${this.delivery_type}`
- });
- },
- // 跟TA选一样
- onCopy(c_uid) {
- duplicateCollagePartake({
- collage_id: this.collage_id,
- c_uid
- }).then(res => {
- this.$util.Tips({
- title: '跟TA选一样成功',
- success: () => {
- this.getCollagePartake();
- }
- });
- }).catch(err => {
- this.$util.Tips({
- title: err
- });
- });
- },
- // 取消拼单
- onCancel() {
- cancelCollage({
- collage_id: this.collage_id
- }).then(res => {
- this.$util.Tips({
- title: '取消拼单成功'
- }, {
- tab: 3
- });
- });
- },
- // 去结算
- onSettle() {
- if (!this.plainPartake.length) {
- return this.$util.Tips({
- title: '暂无人点单'
- });
- }
- settleCollage({
- collage_id: this.collage_id
- }).then(res => {
- uni.navigateTo({
- url: `/pages/goods/order_confirm/index?new=1&collage_id=${this.collage_id}&addressId=${this.address_id}&cartId=${res.data.cartIds}&delivery_type=${this.delivery_type}&store_id=${this.where.store_id}&store_name=${this.storeInfo.name}`
- });
- }).catch(err => {
- this.$util.Tips({
- title: err
- });
- });
- // uni.showModal({
- // title: '确定要结算吗?',
- // content: '结算后,其他人无法再加入或修改商品',
- // success: (res) => {
- // if (res.confirm) {
- // settleCollage({
- // collage_id: this.collage_id
- // }).then(res => {
- // uni.navigateTo({
- // url: `/pages/goods/order_confirm/index?new=1&collage_id=${this.collage_id}&addressId=${this.address_id}&cartId=${res.data.cartIds}&delivery_type=${this.delivery_type}&store_id=${this.where.store_id}&store_name=${this.storeInfo.name}`
- // });
- // }).catch(err => {
- // this.$util.Tips({
- // title: err
- // });
- // });
- // }
- // }
- // });
- },
- goStore() {
- uni.reLaunch({
- url: `/pages/store/home/index?id=${this.where.store_id}`
- })
- },
- goBack() {
- let pages = getCurrentPages();
- if (pages.length > 1) {
- uni.navigateBack();
- } else {
- this.goStore();
- }
- },
- // 刷新
- refresh() {
- this.getCollage();
- this.getCollagePartake();
- },
- onShare() {
- this.H5ShareBox = true;
- },
- setting() {
- this.dialogShow = true;
- }
- },
- }
- </script>
- <style>
- page {
- padding-bottom: 100rpx;
- padding-bottom: calc(100rpx + constant(safe-area-inset-bottom));
- padding-bottom: calc(100rpx + env(safe-area-inset-bottom));
- background-color: #F5F5F5;
- }
- </style>
- <style scoped lang="scss">
- .nav-bar {
- position: fixed;
- top: 0;
- right: 0;
- left: 0;
- z-index: 9;
- background-color: var(--view-theme);
- .content {
- position: relative;
- display: flex;
- justify-content: center;
- align-items: center;
- height: 100rpx;
- font-size: 30rpx;
- color: #FFFFFF;
- }
- .button {
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- display: flex;
- align-items: center;
- padding: 0 30rpx;
- background-color: transparent;
- font-size: 24rpx;
- color: #FFFFFF;
- }
- }
- .headerBg {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- background: linear-gradient(360deg, #F5F5F5 0%, rgba(245, 245, 245, 0) 100%), linear-gradient(-90deg, var(--view-gradient) 37%, var(--view-theme) 100%);
- background-position: left bottom;
- background-size: 100% 120rpx, 100% 100%;
- background-repeat: no-repeat;
- .inner {
- position: relative;
- height: 346rpx;
- }
- .back {
- position: absolute;
- top: 22rpx;
- right: 36rpx;
- width: 240rpx;
- height: 172rpx;
- }
- .text-box {
- position: absolute;
- bottom: 200rpx;
- left: 48rpx;
- font-size: 24rpx;
- color: rgba(255, 255, 255, 0.8);
- }
- .text-image {
- width: 322rpx;
- height: 46rpx;
- margin-bottom: 20rpx;
- }
- }
- .simple {
- position: relative;
- padding: 32rpx 24rpx;
- border-radius: 24rpx;
- margin: 0 20rpx;
- background: #FFFFFF;
- .seller {
- font-size: 22rpx;
- line-height: 30rpx;
- color: #999999;
- .head {
- margin-bottom: 12rpx;
- color: #666666;
- .headCon {
- flex: 1;
- min-width: 0;
- font-weight: 500;
- font-size: 28rpx;
- line-height: 30rpx;
- color: #333333;
- }
- }
- .tag {
- display: inline-flex;
- flex-wrap: nowrap;
- padding: 0 8rpx;
- border: 1rpx solid var(--view-theme);
- border-radius: 4rpx;
- margin-right: 10rpx;
- font-size: 20rpx;
- height: 30rpx;
- color: var(--view-theme);
- transform: rotateZ(360deg);
- vertical-align: middle;
- }
- }
- .buyer {
- height: 40rpx;
- margin-top: 32rpx;
- font-size: 24rpx;
- color: #888888;
- .avatar-group {
- margin-right: 10rpx;
- font-size: 0;
- .gengduo {
- display: inline-flex;
- justify-content: center;
- align-items: center;
- width: 40rpx;
- height: 40rpx;
- border-radius: 50%;
- margin-left: -12rpx;
- background-color: #EEEEEE;
- vertical-align: middle;
- .iconfont {
- font-size: 26rpx;
- color: #8E8E8E;
- }
- }
- }
- .avatar {
- width: 40rpx;
- height: 40rpx;
- border-radius: 50%;
- vertical-align: middle;
- +.avatar {
- margin-left: -12rpx;
- }
- }
- .btn {
- width: 88rpx;
- height: 32rpx;
- border: 1rpx solid #CCCCCC;
- border-radius: 16rpx;
- margin-left: 20rpx;
- font-size: 20rpx;
- color: #666666;
- .iconfont {
- margin-right: 8rpx;
- font-size: 16rpx;
- color: #666666;
- }
- }
- }
- .btn-box {
- margin-top: 32rpx;
- .btn {
- width: 200rpx;
- height: 72rpx;
- border-radius: 36rpx;
- background: #EEEEEE;
- font-size: 26rpx;
- color: #666666;
- +.btn {
- margin-left: 24rpx;
- }
- &.primary {
- background-color: var(--view-theme);
- color: #FFFFFF;
- }
- }
- }
- }
- .choice {
- .wrapper {
- border-radius: 24rpx;
- margin: 20rpx;
- background-color: #FFFFFF;
- }
- .head {
- height: 108rpx;
- padding: 0 24rpx;
- .name {
- flex: 1;
- min-width: 0;
- padding: 0 20rpx;
- font-size: 26rpx;
- color: #333333;
- .inner {
- display: inline-flex;
- max-width: 100%;
- }
- .nickname {
- flex: 1;
- min-width: 0;
- }
- .tips {
- font-size: 22rpx;
- color: #888888;
- }
- }
- }
- .avatar {
- display: block;
- width: 40rpx;
- height: 40rpx;
- border-radius: 50%;
- }
- .button {
- transform: rotateZ(360deg);
- height: 56rpx;
- padding: 0 24rpx;
- border: 1rpx solid #CCCCCC;
- border-radius: 28rpx;
- font-size: 24rpx;
- line-height: 56rpx;
- color: #333333;
- +.button {
- margin-left: 20rpx;
- }
- &.remove {
- color: #999999;
- }
- &.select {
- border-color: var(--view-theme);
- background-color: var(--view-minorColorT);
- color: var(--view-theme);
- }
- &.primary {
- border-color: var(--view-theme);
- background-color: var(--view-minorColorT);
- color: var(--view-theme);
- }
- }
- .body {
- position: relative;
- padding: 32rpx 24rpx;
- font-size: 24rpx;
- line-height: 34rpx;
- color: #333333;
- &::before {
- content: "";
- position: absolute;
- top: 0;
- right: 24rpx;
- left: 24rpx;
- border-top: 1rpx solid #F5F5F5;
- }
- .text {
- flex: 1;
- min-width: 0;
- padding: 0 20rpx;
- .name {
- font-size: 28rpx;
- color: #333333;
- }
- .attr {
- margin-top: 12rpx;
- font-size: 24rpx;
- color: #999999;
- }
- }
- }
- .item {
- margin-top: 32rpx;
- &:first-child {
- margin-top: 0;
- }
- &.gray {
- background-color: #EEEEEE;
- }
- }
- .image {
- width: 136rpx;
- height: 136rpx;
- border-radius: 16rpx;
- }
- .number {
- margin-top: 10rpx;
- text-align: right;
- color: #999999;
- }
- .total {
- display: flex;
- justify-content: flex-end;
- align-items: center;
- padding: 0 26rpx;
- margin-top: 30rpx;
- }
- .money {
- font-weight: 600;
- color: var(--view-theme);
- }
- }
- .footer {
- position: fixed;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 9;
- padding-bottom: constant(safe-area-inset-bottom);
- padding-bottom: env(safe-area-inset-bottom);
- background-color: #FFFFFF;
- .footer-wrap {
- padding: 12rpx 32rpx;
- }
- .total {
- flex: 1;
- min-width: 0;
- font-weight: 500;
- font-size: 28rpx;
- color: #333333;
- }
- .money {
- color: var(--view-theme);
- }
- .btn {
- width: 142rpx;
- height: 72rpx;
- border-radius: 36rpx;
- background: linear-gradient(-90deg, var(--view-gradient) 0%, var(--view-theme) 100%);
- font-weight: 500;
- font-size: 26rpx;
- line-height: 72rpx;
- color: #FFFFFF;
- }
- }
- .status {
- padding: 34rpx 0 32rpx;
- border-radius: 14rpx;
- margin: 20rpx 30rpx;
- background-color: #FFFFFF;
- .head {
- display: flex;
- justify-content: center;
- align-items: center;
- font-size: 28rpx;
- line-height: 28rpx;
- color: #333333;
- }
- .body {
- display: flex;
- .item {
- flex: 1;
- min-width: 0;
- margin-top: 40rpx;
- text-align: center;
- font-size: 24rpx;
- line-height: 24rpx;
- color: #888888;
- &:first-child .number::before {
- display: none;
- }
- &.active {
- color: #333333;
- .number {
- border-color: var(--view-theme);
- background-color: var(--view-theme);
- color: #FFFFFF;
- }
- }
- }
- .number {
- position: relative;
- display: inline-flex;
- justify-content: center;
- align-items: center;
- width: 36rpx;
- height: 36rpx;
- border: 1rpx solid #CCCCCC;
- border-radius: 50%;
- margin-bottom: 20rpx;
- &::before {
- content: "";
- position: absolute;
- top: 50%;
- right: 100%;
- width: 160rpx;
- height: 1rpx;
- border-top: 1rpx dashed #D8D8D8;
- margin-right: 18rpx;
- }
- }
- }
- }
- .empty {
- position: relative;
- border-radius: 24rpx;
- margin: 0 20rpx;
- background: #FFFFFF;
- .btn {
- transform: rotateZ(360deg);
- width: 500rpx;
- height: 88rpx;
- border: 1rpx solid var(--view-theme);
- border-radius: 44rpx;
- margin: 108rpx auto 0;
- text-align: center;
- font-weight: 500;
- font-size: 28rpx;
- line-height: 88rpx;
- color: var(--view-theme);
- }
- }
- .share-box {
- z-index: 1000;
- position: fixed;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- image {
- width: 100%;
- height: 100%;
- }
- }
- .dialog {
- .title {
- text-align: center;
- font-weight: 500;
- font-size: 32rpx;
- line-height: 52rpx;
- color: #333333;
- }
- .info {
- margin-top: 24rpx;
- text-align: center;
- font-size: 30rpx;
- line-height: 42rpx;
- color: #666666;
- }
- .btn-box {
- margin-top: 40rpx;
- }
- .btn {
- flex: 1;
- height: 72rpx;
- border-radius: 36rpx;
- border: 1rpx solid var(--view-theme);
- margin-left: 32rpx;
- text-align: center;
- font-weight: 500;
- font-size: 26rpx;
- line-height: 72rpx;
- color: var(--view-theme);
- transform: rotateZ(360deg);
- &:first-child {
- margin-left: 0;
- }
- &.primary {
- background: var(--view-theme);
- color: #FFFFFF;
- }
- }
- }
- .content {
- .top-placeholder {
- height: 194rpx;
- }
- }
- </style>
|