已添加62个文件
已删除42个文件
已修改7个文件
| | |
| | | import uView from "uview-ui"; |
| | | import store from './store/index.js' |
| | | import './uni.promisify.adaptor' |
| | | // import Vconsole from 'vconsole' |
| | | |
| | | Vue.config.productionTip = false |
| | | App.mpType = 'app' |
| | |
| | | |
| | | Vue.prototype.$baseUrl = 'http://192.168.1.54:10011/' |
| | | Vue.prototype.$store = store; |
| | | // Vue.prototype.$vConsole= new Vconsole() |
| | | |
| | | const app = new Vue({ |
| | | store, |
| | |
| | | }, |
| | | "pages": [ |
| | | { |
| | | "path": "pages/guide-page/guide-page", |
| | | "style": { |
| | | "app-plus": { |
| | | "titleNView": false |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/index/index", |
| | | "style": { |
| | | "navigationBarTitleText": "é¦é¡µ", |
| | | "navigationBarBackgroundColor": "#ffffff" |
| | | "navigationStyle": "custom", |
| | | "app-plus": { |
| | | "titleNView": false |
| | | } |
| | | } |
| | | }, |
| | | { |
| | |
| | | "style": { |
| | | "navigationBarTitleText": "æç", |
| | | "navigationBarBackgroundColor": "#ffffff" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/order/order", |
| | | "style": { |
| | | "navigationBarTitleText": "订å" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/message/message", |
| | | "style": { |
| | | "navigationBarTitleText": "æ¶æ¯" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/login/login", |
| | | "style": { |
| | | "app-plus": { |
| | | "titleNView": false |
| | | } |
| | | } |
| | | } |
| | | ], |
| | |
| | | "list": [ |
| | | { |
| | | "pagePath": "pages/index/index", |
| | | "iconPath": "static/tabbar/nav_jiancha@2x.png", |
| | | "selectedIconPath": "static/tabbar/nav_jiancha_sel@2x.png", |
| | | "text": "é¦é¡µ" |
| | | "iconPath": "static/tabbar/nav_home_sel@2x.png", |
| | | "selectedIconPath": "static/tabbar/nav_home_sel@2x1.png", |
| | | "text": "大å
" |
| | | }, |
| | | { |
| | | "pagePath": "pages/order/order", |
| | | "iconPath": "static/tabbar/nav_order@2x.png", |
| | | "selectedIconPath": "static/tabbar/nav_order@2x1.png", |
| | | "text": "订å" |
| | | }, |
| | | { |
| | | "pagePath": "pages/message/message", |
| | | "iconPath": "static/tabbar/nav_xiaoxi@2x.png", |
| | | "selectedIconPath": "static/tabbar/nav_xiaoxi@2x1.png", |
| | | "text": "æ¶æ¯" |
| | | }, |
| | | { |
| | | "pagePath": "pages/mine/mine", |
| | | "iconPath": "static/tabbar/nav_jiancha@2x.png", |
| | | "selectedIconPath": "static/tabbar/nav_jiancha_sel@2x.png", |
| | | "iconPath": "static/tabbar/nav_mine@2x.png", |
| | | "selectedIconPath": "static/tabbar/nav_mine@2x1.png", |
| | | "text": "æç" |
| | | } |
| | | ] |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="guide-page"> |
| | | <swiper class="guide-page__swiper" :current="current" circular @change="handleSwiperChange"> |
| | | <swiper-item v-for="(item, index) in guideList" :key="index"> |
| | | <view class="guide-page__slide"> |
| | | <image class="guide-page__image" :src="item.url" mode="heightFix"></image> |
| | | </view> |
| | | </swiper-item> |
| | | </swiper> |
| | | |
| | | <view class="guide-page__dots"> |
| | | <view |
| | | v-for="(item, index) in guideList" |
| | | :key="item.id" |
| | | class="guide-page__dot" |
| | | :class="{ 'guide-page__dot--active': current === index }" |
| | | ></view> |
| | | </view> |
| | | |
| | | <view class="guide-page__footer"> |
| | | <view class="guide-page__action"> |
| | | <button class="guide-page__button" hover-class="guide-page__button--hover" @click="jump">ç«å³ä½éª</button> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | current: 0, |
| | | guideList: [ |
| | | { id: 1, background: '#d9d9d9', url: '/static/image/background.png' }, |
| | | { id: 2, background: '#d9d9d9', url: '/static/image/background.png' }, |
| | | { id: 3, background: '#d9d9d9', url: '/static/image/background.png' }, |
| | | { id: 4, background: '#d9d9d9', url: '/static/image/background.png' } |
| | | ] |
| | | }; |
| | | }, |
| | | methods: { |
| | | handleSwiperChange(event) { |
| | | this.current = event.detail.current; |
| | | }, |
| | | jump() { |
| | | uni.navigateTo({ |
| | | url: '/pages/login/login' |
| | | }) |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .guide-page { |
| | | position: relative; |
| | | min-height: 100vh; |
| | | background: #d9d9d9; |
| | | |
| | | &__swiper { |
| | | height: 100vh; |
| | | } |
| | | |
| | | &__slide { |
| | | height: 100vh; |
| | | } |
| | | |
| | | &__image { |
| | | display: block; |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | &__footer { |
| | | position: absolute; |
| | | left: 0; |
| | | right: 0; |
| | | bottom: 0; |
| | | padding: 24rpx 0 calc(env(safe-area-inset-bottom) + 30rpx); |
| | | background: #ffffff; |
| | | } |
| | | |
| | | &__dots { |
| | | position: absolute; |
| | | left: 0; |
| | | right: 0; |
| | | bottom: calc(env(safe-area-inset-bottom) + 154rpx); |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | gap: 18rpx; |
| | | } |
| | | |
| | | &__dot { |
| | | width: 14rpx; |
| | | height: 14rpx; |
| | | border-radius: 50%; |
| | | background: rgba(255, 255, 255, 0.58); |
| | | transition: all 0.2s ease; |
| | | |
| | | &--active { |
| | | width: 18rpx; |
| | | height: 18rpx; |
| | | background: #ffffff; |
| | | box-shadow: 0 0 0 4rpx rgba(255, 255, 255, 0.18); |
| | | } |
| | | } |
| | | |
| | | &__action { |
| | | padding: 0 0 8rpx; |
| | | } |
| | | |
| | | &__button { |
| | | width: 330rpx; |
| | | height: 74rpx; |
| | | line-height: 74rpx; |
| | | border: 0; |
| | | border-radius: 999rpx; |
| | | background: linear-gradient(180deg, #2d7fff 0%, #2369f3 100%); |
| | | box-shadow: 0 16rpx 32rpx rgba(35, 105, 243, 0.24); |
| | | font-size: 30rpx; |
| | | font-weight: 600; |
| | | color: #ffffff; |
| | | padding: 0; |
| | | |
| | | &::after { |
| | | border: 0; |
| | | } |
| | | |
| | | &--hover { |
| | | opacity: 0.92; |
| | | transform: translateY(2rpx); |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <view style="padding: 40rpx;"> |
| | | <button @click="speak('订åå·²æ¶å°ï¼å¼å§ææ¥')">å¼å§ææ¥</button> |
| | | <view class="hall-page"> |
| | | <view class="hall-page__header" :style="{ paddingTop: statusBarHeight + 'px' }"> |
| | | <view class="hall-page__user-row"> |
| | | <view class="hall-page__user"> |
| | | <image class="hall-page__avatar" src="/static/image/login_bg@2x.png" mode="aspectFill"></image> |
| | | <text class="hall-page__name">æ±¤åæ°</text> |
| | | </view> |
| | | <view class="hall-page__status"> |
| | | <view class="hall-page__status-dot"></view> |
| | | <text class="hall-page__status-text">æ¥åä¸</text> |
| | | <text class="hall-page__status-arrow">â¼</text> |
| | | </view> |
| | | <view class="hall-page__user" style="opacity: 0;"> |
| | | <image class="hall-page__avatar" src="/static/image/login_bg@2x.png" mode="aspectFill"></image> |
| | | <text class="hall-page__name">æ±¤åæ°</text> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="hall-page__stats"> |
| | | <view v-for="item in stats" :key="item.label" class="hall-page__stat-item"> |
| | | <text class="hall-page__stat-value">{{ item.value }}</text> |
| | | <text class="hall-page__stat-label">{{ item.label }}</text> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="hall-page__tabs"> |
| | | <view v-for="tab in tabs" :key="tab.value" class="hall-page__tab" :class="{ 'hall-page__tab--active': activeTab === tab.value }" @click="activeTab = tab.value"> |
| | | <text class="hall-page__tab-text">{{ tab.label }}</text> |
| | | <text v-if="tab.count" class="hall-page__tab-count">{{ tab.count }}</text> |
| | | <view v-if="activeTab === tab.value" class="hall-page__tab-line"></view> |
| | | </view> |
| | | <view class="hall-page__filter" @click="toggleFilterPopup(true)"> |
| | | <text class="hall-page__filter-text" :class="{ 'hall-page__filter-text--active': showFilterPopup }">çé</text> |
| | | <image :src="showFilterPopup ? '/static/image/ic_shaixuan_sel@2x.png' : '/static/image/ic_shaixuan@2x.png'" mode="widthFix" class="hall-page__filter-icon"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view v-if="showFilterPopup" class="filter-popup" :style="{ top: headerHeight + 'px', bottom: tabbarHeight + 'px' }" @click="toggleFilterPopup(false)"> |
| | | <view class="filter-popup__panel" @click.stop> |
| | | <view v-for="section in filterSections" :key="section.key" class="filter-popup__section"> |
| | | <text class="filter-popup__title">{{ section.title }}</text> |
| | | <view class="filter-popup__options"> |
| | | <view |
| | | v-for="option in section.options" |
| | | :key="option" |
| | | class="filter-popup__option" |
| | | :class="{ 'filter-popup__option--active': selectedFilters[section.key] === option }" |
| | | @click="selectFilter(section.key, option)" |
| | | > |
| | | <text class="filter-popup__option-text">{{ option }}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="filter-popup__actions"> |
| | | <button class="filter-popup__button filter-popup__button--reset" hover-class="filter-popup__button--hover" @click="resetFilters">éç½®</button> |
| | | <button class="filter-popup__button filter-popup__button--confirm" hover-class="filter-popup__button--hover" @click="confirmFilters">确认</button> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <scroll-view class="hall-page__body" scroll-y :style="bodyStyle"> |
| | | <view v-if="currentOrderList.length" class="hall-page__list"> |
| | | <view v-for="item in currentOrderList" :key="item.id" class="order-card" @click="openDetailPopup(item)"> |
| | | <view class="order-card__head"> |
| | | <view class="order-card__time"> |
| | | <text class="order-card__time-main">{{ item.time }}</text> |
| | | <text class="order-card__time-sub">éè¾¾</text> |
| | | </view> |
| | | <view v-if="activeTab === 'hall'" class="order-card__price-wrap"> |
| | | <text v-if="item.serialNo" class="order-card__serial">#{{ item.serialNo }}</text> |
| | | <text class="order-card__price">{{ item.price }}</text> |
| | | </view> |
| | | <view v-else class="order-card__price-wrap order-card__price-wrap--serial-only"> |
| | | <text v-if="item.serialNo" class="order-card__serial">#{{ item.serialNo }}</text> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="order-card__meta"> |
| | | <view class="order-card__tags"> |
| | | <view v-for="tag in item.tags" :key="tag.text" class="order-card__tag-wrap"> |
| | | <image |
| | | v-if="getTagImage(tag.text)" |
| | | class="order-card__tag-icon" |
| | | :src="getTagImage(tag.text)" |
| | | mode="widthFix" |
| | | ></image> |
| | | <text v-else class="order-card__tag" :class="tag.type ? 'order-card__tag--' + tag.type : ''">{{ tag.text }}</text> |
| | | </view> |
| | | </view> |
| | | <text v-if="activeTab === 'hall'" class="order-card__extra">å«å æ¥Â¥{{ item.extra }}</text> |
| | | </view> |
| | | |
| | | <view class="order-card__route"> |
| | | <view class="order-card__route-side"> |
| | | <text class="order-card__distance-top">{{ item.distanceTop }}</text> |
| | | <view class="order-card__line"></view> |
| | | <text class="order-card__distance-bottom">{{ item.distanceBottom }}</text> |
| | | </view> |
| | | <view class="order-card__route-main"> |
| | | <view class="order-card__route-item"> |
| | | <view class="order-card__route-texts"> |
| | | <text class="order-card__route-title">{{ item.fromName }}</text> |
| | | <text class="order-card__route-desc">{{ item.fromAddress }}</text> |
| | | </view> |
| | | <image src="/static/image/ic_daohang@2x.png" mode="widthFix" class="order-card__nav"></image> |
| | | </view> |
| | | <view class="order-card__route-item order-card__route-item--destination"> |
| | | <view class="order-card__route-texts"> |
| | | <text class="order-card__route-title">{{ item.toName }}</text> |
| | | <text class="order-card__route-desc">{{ item.toAddress }}</text> |
| | | </view> |
| | | <image src="/static/image/ic_daohang@2x.png" mode="widthFix" class="order-card__nav"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="order-card__goods"> |
| | | <text class="order-card__goods-text">{{ item.goods }}</text> |
| | | <text class="order-card__goods-arrow">â</text> |
| | | </view> |
| | | |
| | | <view class="order-card__actions" :class="'order-card__actions--' + activeTab"> |
| | | <template v-if="activeTab === 'pickup'"> |
| | | <view class="order-card__icon-actions"> |
| | | <view class="order-card__icon-action" @click.stop="show = true"> |
| | | <image class="order-card__action-icon" src="/static/image/ic_cancle@2x.png" mode="aspectFit"></image> |
| | | <text class="order-card__action-text">åæ¶</text> |
| | | </view> |
| | | <view class="order-card__icon-action" @click.stop> |
| | | <image class="order-card__action-icon" src="/static/image/ic_call@2x.png" mode="aspectFit"></image> |
| | | <text class="order-card__action-text">èç³»</text> |
| | | </view> |
| | | </view> |
| | | <button class="order-card__button order-card__button--code" hover-class="order-card__button--hover" @click.stop="show1 = true">åè´§ç </button> |
| | | </template> |
| | | <template v-else-if="activeTab === 'delivering'"> |
| | | <view class="order-card__icon-actions order-card__icon-actions--single"> |
| | | <view class="order-card__icon-action" @click.stop> |
| | | <image class="order-card__action-icon" src="/static/image/ic_call@2x.png" mode="aspectFit"></image> |
| | | <text class="order-card__action-text">èç³»</text> |
| | | </view> |
| | | </view> |
| | | <button class="order-card__button order-card__button--code" hover-class="order-card__button--hover" @click.stop>åä»¶ç </button> |
| | | </template> |
| | | <button v-else class="order-card__button" hover-class="order-card__button--hover" @click.stop="openDetailPopup(item)">ç«å³æ¢å</button> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view v-else class="hall-page__empty"> |
| | | <image class="hall-page__empty-icon" src="/static/image/default_nodata_grey@2x.png" mode="aspectFit"></image> |
| | | </view> |
| | | </scroll-view> |
| | | |
| | | <!-- åæ¶è®¢å --> |
| | | <u-modal |
| | | :show="show" |
| | | showCancelButton |
| | | @cancel="show = false" |
| | | cancelColor="#666666" |
| | | confirmColor="#0055FF" |
| | | title="åæ¶è®¢å确认"> |
| | | <view style="text-align: center;color: #333333;font-size: 28rpx;font-weight: 400;"> |
| | | æ¨ä»æ¥è¿å¯åæ¶ X 次订åï¼æ¬¡æ°ç¨å°½å仿¥å°æ æ³æ¥åï¼æ¯å¦ç¡®è®¤åæ¶ï¼ |
| | | </view> |
| | | </u-modal> |
| | | |
| | | <!-- åè´§ç --> |
| | | <u-popup :show="show1" round="20" mode="bottom"> |
| | | <view class="qrcode"> |
| | | <view class="qrcode-title"> |
| | | <image src="/static/image/ic_close@2x.png" mode="widthFix" style="opacity: 0;"></image> |
| | | <text>åè´§ç </text> |
| | | <image src="/static/image/ic_close@2x.png" mode="widthFix" @click="show1 = false"></image> |
| | | </view> |
| | | <view class="qrcode-image"> |
| | | <image src="/static/logo.png" mode="widthFix"></image> |
| | | </view> |
| | | <view class="qrcode-btn" hover-class="qrcode-btn--hover" @click="show1 = false">å
³é</view> |
| | | </view> |
| | | </u-popup> |
| | | |
| | | <!-- 订å详æ
--> |
| | | <u-popup :show="showOrderDetail" round="20" mode="bottom" :overlayStyle="{ background: 'rgba(0, 0, 0, 0.32)' }" @close="showOrderDetail = false"> |
| | | <view class="order-detail" :style="{ height: 'calc(100vh - ' + statusBarHeight + 'px)' }"> |
| | | <scroll-view class="order-detail__scroll" scroll-y> |
| | | <view v-if="isStatusDetail" class="order-detail__map-section"> |
| | | <view class="order-detail__map"> |
| | | <image class="order-detail__map-image" mode="aspectFill"></image> |
| | | <view class="order-detail__map-bubble">{{ detailOrder.mapTips }}</view> |
| | | </view> |
| | | <view class="order-detail__status-bar"> |
| | | <view class="order-detail__status-left"> |
| | | <image class="order-detail__status-icon" mode="aspectFit"></image> |
| | | <text class="order-detail__status-name">{{ detailOrder.statusText }}</text> |
| | | </view> |
| | | <view class="order-detail__status-right"> |
| | | <text v-if="detailOrder.showCancelTag" class="order-detail__cancel-tag">åæ¶è®¢å</text> |
| | | <text class="order-detail__status-no">#{{ detailOrder.serialNo }}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="order-detail__content"> |
| | | <view class="order-detail__head"> |
| | | <view class="order-detail__time-wrap"> |
| | | <text class="order-detail__time">{{ detailOrder.time }}</text> |
| | | <text class="order-detail__time-sub">éè¾¾</text> |
| | | </view> |
| | | <view class="order-detail__price-wrap"> |
| | | <text class="order-detail__price">{{ detailOrder.price }}</text> |
| | | <text class="order-detail__extra">å«å æ¥Â¥{{ detailOrder.extra }}</text> |
| | | </view> |
| | | </view> |
| | | |
| | | <view v-if="isStatusDetail" class="order-detail__qrcode-section"> |
| | | <view class="order-detail__qrcode-box"> |
| | | <image class="order-detail__qrcode-image" src="/static/logo.png" mode="aspectFit"></image> |
| | | </view> |
| | | <text class="order-detail__qrcode-value">{{ detailOrder.qrcodeValue }}</text> |
| | | <text class="order-detail__qrcode-label">{{ detailOrder.qrcodeLabel }}</text> |
| | | </view> |
| | | |
| | | <view class="order-detail__tags"> |
| | | <view v-for="tag in detailOrder.tags" :key="tag.text" class="order-detail__tag-wrap"> |
| | | <image |
| | | v-if="getTagImage(tag.text)" |
| | | class="order-detail__tag-icon" |
| | | :src="getTagImage(tag.text)" |
| | | mode="widthFix" |
| | | ></image> |
| | | <text v-else class="order-detail__tag" :class="tag.type ? 'order-detail__tag--' + tag.type : ''">{{ tag.text }}</text> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="order-detail__route"> |
| | | <view class="order-detail__route-side"> |
| | | <text class="order-detail__distance-top">{{ detailOrder.distanceTop }}</text> |
| | | <view class="order-detail__line"></view> |
| | | <text class="order-detail__distance-bottom">{{ detailOrder.distanceBottom }}</text> |
| | | </view> |
| | | <view class="order-detail__route-main"> |
| | | <view class="order-detail__route-item"> |
| | | <view class="order-detail__route-texts"> |
| | | <text class="order-detail__route-title">{{ detailOrder.fromName }}</text> |
| | | <text class="order-detail__route-desc">{{ detailOrder.fromAddress }}</text> |
| | | </view> |
| | | <view class="order-detail__route-actions"> |
| | | <image class="order-detail__route-icon" src="/static/image/ic_c1all@2x.png" mode="aspectFit"></image> |
| | | <image class="order-detail__route-icon" src="/static/image/ic_daohang@2x.png" mode="aspectFit"></image> |
| | | </view> |
| | | </view> |
| | | <view class="order-detail__route-item order-detail__route-item--destination"> |
| | | <view class="order-detail__route-texts"> |
| | | <text class="order-detail__route-title">{{ detailOrder.toName }}</text> |
| | | <text class="order-detail__route-desc">{{ detailOrder.toAddress }}</text> |
| | | </view> |
| | | <view class="order-detail__route-actions"> |
| | | <image class="order-detail__route-icon order-detail__route-icon--phone" src="/static/image/ic_c1all@2x.png" mode="aspectFit"></image> |
| | | <image class="order-detail__route-icon" src="/static/image/ic_daohang@2x.png" mode="aspectFit"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="order-detail__section"> |
| | | <text class="order-detail__section-title">客æ·ä¿¡æ¯</text> |
| | | <view class="order-detail__customer"> |
| | | <text class="order-detail__customer-text">{{ detailOrder.customer.name }}ï¼ææºå·{{ detailOrder.customer.phone }}ï¼</text> |
| | | <image class="order-detail__customer-icon" src="/static/image/ic_c1all@2x.png" mode="aspectFit"></image> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="order-detail__section"> |
| | | <text class="order-detail__section-title">ç©åæ¸
åï¼å
±{{ detailOrder.goodsList.length }}ä»¶ï¼</text> |
| | | <view class="order-detail__goods-list"> |
| | | <view v-for="goods in detailOrder.goodsList" :key="goods.name" class="order-detail__goods-item"> |
| | | <text class="order-detail__goods-name">{{ goods.name }}</text> |
| | | <text class="order-detail__goods-count">x{{ goods.count }}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="order-detail__section order-detail__section--photos"> |
| | | <text class="order-detail__section-title">ç©åä¿¡æ¯</text> |
| | | <text class="order-detail__goods-category">{{ detailOrder.goodsCategory }}</text> |
| | | <view class="order-detail__photos"> |
| | | <view v-for="(photo, index) in detailOrder.photos" :key="index" class="order-detail__photo-item"> |
| | | <image class="order-detail__photo" :src="photo" mode="aspectFill"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </scroll-view> |
| | | |
| | | <view class="order-detail__footer"> |
| | | <view class="order-detail__cancel" @click="showOrderDetail = false"> |
| | | <image class="order-detail__cancel-icon" src="/static/image/ic_close2@2x.png" mode="aspectFit"></image> |
| | | </view> |
| | | <button v-if="!isStatusDetail" class="order-detail__confirm" hover-class="order-detail__confirm--hover">确认æ¢å</button> |
| | | <button v-else class="order-detail__confirm order-detail__confirm--status" hover-class="order-detail__confirm--hover"> |
| | | <image class="order-detail__confirm-icon" mode="aspectFit"></image> |
| | | <text>{{ detailPopupType === 'pickup' ? 'æç
§åè´§' : 'æç
§éè¾¾' }}</text> |
| | | </button> |
| | | </view> |
| | | </view> |
| | | </u-popup> |
| | | </view> |
| | | </template> |
| | | |
| | |
| | | export default { |
| | | data() { |
| | | return { |
| | | tts: null // åçTTS对象 |
| | | tts: null, |
| | | show: false, |
| | | show1: false, |
| | | showOrderDetail: false, |
| | | detailPopupType: 'hall', |
| | | statusBarHeight: 0, |
| | | headerHeight: 0, |
| | | tabbarHeight: 0, |
| | | scrollHeight: 0, |
| | | showFilterPopup: false, |
| | | activeTab: 'hall', |
| | | filterSections: [ |
| | | { key: 'sort', title: 'æåº', options: ['综åæåº', '离ææè¿'] }, |
| | | { key: 'level', title: 'ç©åç级', options: ['ä¸é', 'æ®éç©å', 'è´µéç©å', '大件ç©å', 'ç¹æ®ç©å', 'å
¶ä»ç©å'] }, |
| | | { key: 'distance', title: 'ä½ç½®èå´', options: ['ä¸é', '500m', '1km', '2km', '3km', '4km', '5km', '6km', '7km'] } |
| | | ], |
| | | selectedFilters: { |
| | | sort: '综åæåº', |
| | | level: 'ä¸é', |
| | | distance: 'ä¸é' |
| | | }, |
| | | detailOrder: { |
| | | time: '45åéå
', |
| | | price: 'Â¥20.5', |
| | | extra: '3.0', |
| | | serialNo: 1, |
| | | statusText: 'æ¢å大å
', |
| | | qrcodeValue: '767889', |
| | | qrcodeLabel: 'åè´§ç ', |
| | | mapTips: 'å©ä½3.2kmï¼çº¦4åé', |
| | | showCancelTag: false, |
| | | tags: [ |
| | | { text: 'æ éè¾¾', type: 'blue' }, |
| | | { text: 'è´µéç©å', type: 'orange' } |
| | | ], |
| | | distanceTop: '349m', |
| | | distanceBottom: '12.5km', |
| | | fromName: 'ä¸éå¿«è¿åç«æè°åº', |
| | | fromAddress: 'è²è±è·¯200å·è²è±äº§ä¸åFæ 401', |
| | | toName: 'ä½³èå·´é»é½å¸3æ10æ 301室', |
| | | toAddress: 'æ´åºæ¹è·¯ä¸æ¹å路交åå£è¥¿150ç±³', |
| | | customer: { |
| | | name: 'åå
ç', |
| | | phone: '2878' |
| | | }, |
| | | goodsList: [ |
| | | { name: 'å¤§ä»¶è¡æ', count: 1 }, |
| | | { name: 'ä¸ä»¶è¡æ', count: 2 }, |
| | | { name: 'å°ä»¶è¡æ', count: 3 }, |
| | | { name: 'èå
', count: 2 } |
| | | ], |
| | | goodsCategory: 'æä»¶', |
| | | photos: ['/static/logo.png', '/static/logo.png', '/static/logo.png'] |
| | | }, |
| | | stats: [ |
| | | { value: '4.2', label: 'æå¡å' }, |
| | | { value: '234.3', label: '仿¥é¢è®¡ä½£é' }, |
| | | { value: '13', label: '仿¥æ¥å' } |
| | | ], |
| | | tabs: [ |
| | | { label: 'æ¢å大å
', value: 'hall' }, |
| | | { label: 'å¾
åè´§', value: 'pickup', count: 2 }, |
| | | { label: 'é
éä¸', value: 'delivering', count: 2 } |
| | | ], |
| | | orderList: [ |
| | | { |
| | | id: 1, |
| | | time: '45åéå
', |
| | | price: 'Â¥20.5', |
| | | extra: '3.0', |
| | | tags: [ |
| | | { text: 'æéè¾¾', type: 'blue' }, |
| | | { text: 'è´µéç©å', type: 'orange' } |
| | | ], |
| | | distanceTop: '349m', |
| | | distanceBottom: '12.5km', |
| | | fromName: 'ä¸éå¿«è¿åç«æè°åº', |
| | | fromAddress: 'è²è±è·¯200å·è²è±äº§ä¸åFæ 401', |
| | | toName: 'ä½³èå·´é»é½å¸3æ10æ 301室', |
| | | toAddress: 'æ´åºæ¹è·¯ä¸æ¹å路交åå£è¥¿150ç±³', |
| | | goods: 'å¤§ä»¶è¡æ*1ãä¸ä»¶è¡æ*2ãå°ä»¶è¡æ*3ãèå
*1' |
| | | }, |
| | | { |
| | | id: 2, |
| | | time: '45åéå
', |
| | | price: 'Â¥20.5', |
| | | extra: '3.0', |
| | | tags: [ |
| | | { text: 'æéè¾¾', type: 'red' }, |
| | | { text: '大件ç©å', type: 'blue-light' } |
| | | ], |
| | | distanceTop: '349m', |
| | | distanceBottom: '12.5km', |
| | | fromName: 'ä¸éå¿«è¿åç«æè°åº(åè¥åç«å广åº', |
| | | fromAddress: 'è²è±è·¯200å·è²è±äº§ä¸åFæ 401', |
| | | toName: 'ä½³èå·´é»é½å¸3æ10æ 301室', |
| | | toAddress: 'æ´åºæ¹è·¯ä¸æ¹å路交åå£è¥¿150ç±³', |
| | | goods: 'å¤§ä»¶è¡æ*1' |
| | | }, |
| | | { |
| | | id: 3, |
| | | time: '45åéå
', |
| | | price: 'Â¥20.5', |
| | | extra: '3.0', |
| | | tags: [ |
| | | { text: 'æéè¾¾', type: 'red' }, |
| | | { text: '大件ç©å', type: 'blue-light' } |
| | | ], |
| | | distanceTop: '349m', |
| | | distanceBottom: '12.5km', |
| | | fromName: 'ä¸éå¿«è¿åç«æè°åº(åè¥åç«å广åº', |
| | | fromAddress: 'è²è±è·¯200å·è²è±äº§ä¸åFæ 401', |
| | | toName: 'ä½³èå·´é»é½å¸3æ10æ 301室', |
| | | toAddress: 'æ´åºæ¹è·¯ä¸æ¹å路交åå£è¥¿150ç±³', |
| | | goods: 'å¤§ä»¶è¡æ*1' |
| | | } |
| | | ], |
| | | pickupOrderList: [ |
| | | { |
| | | id: 101, |
| | | serialNo: 1, |
| | | statusText: 'å¾
åè´§', |
| | | qrcodeValue: '767889', |
| | | qrcodeLabel: 'åè´§ç ', |
| | | mapTips: 'å©ä½3.2kmï¼çº¦4åé', |
| | | showCancelTag: true, |
| | | time: '45åéå
', |
| | | price: 'Â¥20.5', |
| | | extra: '3.0', |
| | | tags: [ |
| | | { text: 'æ éè¾¾', type: 'blue' }, |
| | | { text: 'è´µéç©å', type: 'orange' } |
| | | ], |
| | | distanceTop: '349m', |
| | | distanceBottom: '12.5km', |
| | | fromName: 'ä¸éå¿«è¿åç«æè°åº', |
| | | fromAddress: 'è²è±è·¯200å·è²è±äº§ä¸åFæ 401', |
| | | toName: 'å°éæ å¿§å', |
| | | toAddress: 'æ´åºæ¹è·¯ä¸æ¹å路交åå£è¥¿150ç±³', |
| | | goods: 'å¤§ä»¶è¡æ*1ãä¸ä»¶è¡æ*2ãå°ä»¶è¡æ*3ãèå
*1' |
| | | } |
| | | ], |
| | | deliveringOrderList: [ |
| | | { |
| | | id: 201, |
| | | serialNo: 1, |
| | | statusText: 'é
éä¸', |
| | | qrcodeValue: '767889', |
| | | qrcodeLabel: 'åä»¶ç ', |
| | | mapTips: 'å©ä½3.2kmï¼çº¦4åé', |
| | | showCancelTag: false, |
| | | time: '45åéå
', |
| | | price: 'Â¥20.5', |
| | | extra: '3.0', |
| | | tags: [ |
| | | { text: 'æ éè¾¾', type: 'blue' }, |
| | | { text: 'è´µéç©å', type: 'orange' } |
| | | ], |
| | | distanceTop: '349m', |
| | | distanceBottom: '12.5km', |
| | | fromName: 'ä¸éå¿«è¿åç«æè°åº', |
| | | fromAddress: 'è²è±è·¯200å·è²è±äº§ä¸åFæ 401', |
| | | toName: 'å°éæ å¿§å', |
| | | toAddress: 'æ´åºæ¹è·¯ä¸æ¹å路交åå£è¥¿150ç±³', |
| | | goods: 'å¤§ä»¶è¡æ*1ãä¸ä»¶è¡æ*2ãå°ä»¶è¡æ*3ãèå
*1' |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | |
| | | onLoad() { |
| | | const systemInfo = uni.getSystemInfoSync() |
| | | const safeBottom = systemInfo.safeAreaInsets ? systemInfo.safeAreaInsets.bottom || 0 : 0 |
| | | const windowHeight = systemInfo.windowHeight || 0 |
| | | this.statusBarHeight = systemInfo.statusBarHeight || 0 |
| | | this.headerHeight = this.statusBarHeight + uni.upx2px(308) |
| | | this.tabbarHeight = uni.upx2px(100) + safeBottom |
| | | this.scrollHeight = Math.max(windowHeight - this.headerHeight, 0) |
| | | }, |
| | | |
| | | computed: { |
| | | isStatusDetail() { |
| | | return this.detailPopupType === 'pickup' || this.detailPopupType === 'delivering' |
| | | }, |
| | | |
| | | currentOrderList() { |
| | | const orderMap = { |
| | | hall: this.orderList, |
| | | pickup: this.pickupOrderList, |
| | | delivering: this.deliveringOrderList |
| | | } |
| | | |
| | | return orderMap[this.activeTab] || [] |
| | | }, |
| | | |
| | | bodyStyle() { |
| | | return { |
| | | marginTop: this.headerHeight + 'px', |
| | | height: this.scrollHeight + 'px' |
| | | } |
| | | } |
| | | }, |
| | | |
| | |
| | | }, |
| | | |
| | | methods: { |
| | | // ========== åå§åå®ååçè¯é³ ========== |
| | | openDetailPopup(item) { |
| | | this.detailPopupType = this.activeTab |
| | | this.detailOrder = { |
| | | ...this.detailOrder, |
| | | ...item, |
| | | customer: item.customer || this.detailOrder.customer, |
| | | goodsList: item.goodsList || this.detailOrder.goodsList, |
| | | goodsCategory: item.goodsCategory || this.detailOrder.goodsCategory, |
| | | photos: item.photos || this.detailOrder.photos |
| | | } |
| | | this.showOrderDetail = true |
| | | }, |
| | | |
| | | toggleFilterPopup(show) { |
| | | this.showFilterPopup = show |
| | | }, |
| | | |
| | | selectFilter(key, option) { |
| | | this.selectedFilters = { |
| | | ...this.selectedFilters, |
| | | [key]: option |
| | | } |
| | | }, |
| | | |
| | | resetFilters() { |
| | | this.selectedFilters = { |
| | | sort: '综åæåº', |
| | | level: 'ä¸é', |
| | | distance: 'ä¸é' |
| | | } |
| | | }, |
| | | |
| | | confirmFilters() { |
| | | this.showFilterPopup = false |
| | | }, |
| | | |
| | | getTagImage(tagText) { |
| | | const tagImageMap = { |
| | | 'æéè¾¾': '/static/image/ic_jisuda@2x.png', |
| | | 'æ éè¾¾': '/static/image/ic_biaosuda@2x.png' |
| | | } |
| | | |
| | | return tagImageMap[tagText] || '' |
| | | }, |
| | | |
| | | initTTS() { |
| | | if (uni.getSystemInfoSync().platform !== 'android') { |
| | | console.log('ä»
æ¯æå®å') |
| | |
| | | } |
| | | }, |
| | | |
| | | // ========== è¯é³ææ¥ï¼æ ¸å¿æ¹æ³ï¼ ========== |
| | | speak(text) { |
| | | if (!this.tts) { |
| | | uni.showToast({ |
| | |
| | | } |
| | | }, |
| | | |
| | | // åæ¢ææ¥ |
| | | stopSpeak() { |
| | | if (this.tts) this.tts.stop() |
| | | } |
| | | }, |
| | | |
| | | // 页é¢éæ¯æ¶å
³éè¯é³ |
| | | onUnload() { |
| | | if (this.tts) { |
| | | this.tts.stop() |
| | |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .hall-page { |
| | | position: relative; |
| | | height: 100vh; |
| | | background: #f5f6f8; |
| | | overflow: hidden; |
| | | |
| | | .qrcode { |
| | | padding: 36rpx 30rpx; |
| | | box-sizing: border-box; |
| | | .qrcode-title { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | image { |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | } |
| | | text { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #111111; |
| | | } |
| | | } |
| | | .qrcode-image { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin-top: 60rpx; |
| | | image { |
| | | width: 400rpx; |
| | | height: 400rpx; |
| | | } |
| | | } |
| | | .qrcode-btn { |
| | | width: 100%; |
| | | height: 88rpx; |
| | | line-height: 88rpx; |
| | | text-align: center; |
| | | background: #106EFA; |
| | | border-radius: 50rpx; |
| | | font-weight: bold; |
| | | font-size: 32rpx; |
| | | color: #FFFFFF; |
| | | margin-top: 68rpx; |
| | | |
| | | &--hover { |
| | | opacity: 0.92; |
| | | transform: translateY(2rpx); |
| | | } |
| | | } |
| | | } |
| | | |
| | | .order-detail { |
| | | display: flex; |
| | | flex-direction: column; |
| | | background: #ffffff; |
| | | border-top-left-radius: 28rpx; |
| | | border-top-right-radius: 28rpx; |
| | | overflow: hidden; |
| | | |
| | | &__scroll { |
| | | flex: 1; |
| | | min-height: 0; |
| | | } |
| | | |
| | | &__map-section { |
| | | background: #ffffff; |
| | | } |
| | | |
| | | &__map { |
| | | position: relative; |
| | | height: 330rpx; |
| | | background: linear-gradient(180deg, #eef5ff 0%, #dbe9ff 100%); |
| | | overflow: hidden; |
| | | } |
| | | |
| | | &__map-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | opacity: 0.2; |
| | | } |
| | | |
| | | &__map-bubble { |
| | | position: absolute; |
| | | left: 26rpx; |
| | | bottom: 44rpx; |
| | | padding: 12rpx 18rpx; |
| | | border-radius: 12rpx; |
| | | background: rgba(255, 255, 255, 0.96); |
| | | box-shadow: 0 10rpx 20rpx rgba(33, 92, 182, 0.08); |
| | | font-size: 26rpx; |
| | | font-weight: 500; |
| | | color: #2f6ff2; |
| | | } |
| | | |
| | | &__status-bar { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 0 24rpx; |
| | | height: 92rpx; |
| | | background: #d9e8ff; |
| | | } |
| | | |
| | | &__status-left, |
| | | &__status-right { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | &__status-icon { |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | margin-right: 12rpx; |
| | | border-radius: 6rpx; |
| | | background: #7ea7ef; |
| | | } |
| | | |
| | | &__status-name, |
| | | &__status-no { |
| | | font-size: 34rpx; |
| | | font-weight: 700; |
| | | color: #2b3139; |
| | | } |
| | | |
| | | &__cancel-tag { |
| | | padding: 8rpx 16rpx; |
| | | margin-right: 18rpx; |
| | | border: 2rpx solid #6ea6ff; |
| | | border-radius: 999rpx; |
| | | font-size: 24rpx; |
| | | color: #1d73ff; |
| | | background: rgba(255, 255, 255, 0.72); |
| | | } |
| | | |
| | | &__content { |
| | | padding: 28rpx 24rpx 36rpx; |
| | | } |
| | | |
| | | &__head { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: flex-start; |
| | | } |
| | | |
| | | &__time-wrap { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | &__time { |
| | | font-size: 42rpx; |
| | | font-weight: 700; |
| | | color: #ff8d27; |
| | | } |
| | | |
| | | &__time-sub { |
| | | margin-left: 8rpx; |
| | | font-size: 28rpx; |
| | | color: #a4a9b2; |
| | | } |
| | | |
| | | &__price-wrap { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: flex-end; |
| | | } |
| | | |
| | | &__price { |
| | | font-size: 44rpx; |
| | | font-weight: 700; |
| | | color: #ff3b30; |
| | | } |
| | | |
| | | &__extra { |
| | | margin-top: 6rpx; |
| | | font-size: 24rpx; |
| | | color: #a0a5af; |
| | | } |
| | | |
| | | &__tags { |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | gap: 10rpx; |
| | | margin-top: 14rpx; |
| | | } |
| | | |
| | | &__tag-wrap { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | &__tag-icon { |
| | | width: 108rpx; |
| | | height: 40rpx; |
| | | } |
| | | |
| | | &__tag { |
| | | padding: 4rpx 10rpx; |
| | | border-radius: 8rpx; |
| | | font-size: 22rpx; |
| | | line-height: 1.2; |
| | | border: 1rpx solid #2473f5; |
| | | color: #2473f5; |
| | | |
| | | &--orange { |
| | | border-color: #ff9c45; |
| | | background: #ff9c45; |
| | | color: #ffffff; |
| | | } |
| | | } |
| | | |
| | | &__route { |
| | | display: flex; |
| | | margin-top: 20rpx; |
| | | padding-bottom: 26rpx; |
| | | border-bottom: 1rpx solid #edf0f3; |
| | | } |
| | | |
| | | &__route-side { |
| | | width: 64rpx; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | &__distance-top, |
| | | &__distance-bottom { |
| | | font-size: 22rpx; |
| | | font-weight: 600; |
| | | color: #555b66; |
| | | text-align: center; |
| | | } |
| | | |
| | | &__line { |
| | | position: relative; |
| | | width: 4rpx; |
| | | flex: 1; |
| | | min-height: 92rpx; |
| | | margin: 10rpx 0; |
| | | border-radius: 999rpx; |
| | | background: #d8dbe1; |
| | | |
| | | &::before, |
| | | &::after { |
| | | content: ''; |
| | | position: absolute; |
| | | left: 50%; |
| | | transform: translateX(-50%); |
| | | width: 14rpx; |
| | | height: 14rpx; |
| | | border-radius: 50%; |
| | | background: #6a6f79; |
| | | } |
| | | |
| | | &::before { |
| | | top: -4rpx; |
| | | } |
| | | |
| | | &::after { |
| | | bottom: -4rpx; |
| | | } |
| | | } |
| | | |
| | | &__route-main { |
| | | flex: 1; |
| | | } |
| | | |
| | | &__route-item { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: flex-start; |
| | | gap: 18rpx; |
| | | |
| | | &--destination { |
| | | margin-top: 24rpx; |
| | | } |
| | | } |
| | | |
| | | &__route-texts { |
| | | flex: 1; |
| | | min-width: 0; |
| | | } |
| | | |
| | | &__route-title { |
| | | display: block; |
| | | font-size: 40rpx; |
| | | font-weight: 700; |
| | | color: #2d3139; |
| | | line-height: 1.3; |
| | | } |
| | | |
| | | &__route-desc { |
| | | display: block; |
| | | margin-top: 8rpx; |
| | | font-size: 28rpx; |
| | | color: #9ea4ae; |
| | | line-height: 1.4; |
| | | } |
| | | |
| | | &__route-actions { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 12rpx; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | &__route-icon, |
| | | &__customer-icon { |
| | | width: 48rpx; |
| | | height: 48rpx; |
| | | border: 2rpx dashed #c9ced6; |
| | | border-radius: 8rpx; |
| | | background: #f7f8fa; |
| | | } |
| | | |
| | | &__cancel-icon { |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | | } |
| | | |
| | | &__qrcode-section { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | padding: 34rpx 0 8rpx; |
| | | border-bottom: 1rpx solid #edf0f3; |
| | | } |
| | | |
| | | &__qrcode-box { |
| | | width: 260rpx; |
| | | height: 260rpx; |
| | | padding: 16rpx; |
| | | border: 2rpx solid #edf0f3; |
| | | border-radius: 12rpx; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | &__qrcode-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | &__qrcode-value { |
| | | margin-top: 18rpx; |
| | | font-size: 44rpx; |
| | | font-weight: 700; |
| | | color: #31363f; |
| | | } |
| | | |
| | | &__qrcode-label { |
| | | margin-top: 8rpx; |
| | | font-size: 26rpx; |
| | | color: #b0b4bc; |
| | | } |
| | | |
| | | &__section { |
| | | padding: 28rpx 0; |
| | | border-bottom: 1rpx solid #edf0f3; |
| | | |
| | | &--photos { |
| | | border-bottom: 0; |
| | | } |
| | | } |
| | | |
| | | &__section-title { |
| | | display: block; |
| | | font-size: 32rpx; |
| | | font-weight: 700; |
| | | color: #2b3139; |
| | | } |
| | | |
| | | &__customer { |
| | | margin-top: 28rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | gap: 20rpx; |
| | | } |
| | | |
| | | &__customer-text { |
| | | flex: 1; |
| | | font-size: 32rpx; |
| | | color: #41464f; |
| | | line-height: 1.5; |
| | | } |
| | | |
| | | &__goods-list { |
| | | margin-top: 22rpx; |
| | | } |
| | | |
| | | &__goods-item { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 10rpx 0; |
| | | } |
| | | |
| | | &__goods-name { |
| | | font-size: 32rpx; |
| | | color: #41464f; |
| | | } |
| | | |
| | | &__goods-count { |
| | | font-size: 30rpx; |
| | | color: #a1a6af; |
| | | } |
| | | |
| | | &__goods-category { |
| | | display: block; |
| | | margin-top: 24rpx; |
| | | font-size: 32rpx; |
| | | color: #41464f; |
| | | } |
| | | |
| | | &__photos { |
| | | display: flex; |
| | | gap: 16rpx; |
| | | margin-top: 22rpx; |
| | | } |
| | | |
| | | &__photo-item { |
| | | width: 120rpx; |
| | | height: 120rpx; |
| | | border-radius: 12rpx; |
| | | overflow: hidden; |
| | | background: #f3f5f8; |
| | | } |
| | | |
| | | &__photo { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | &__footer { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 18rpx; |
| | | padding: 18rpx 24rpx calc(env(safe-area-inset-bottom) + 18rpx); |
| | | background: #ffffff; |
| | | box-shadow: 0 -8rpx 24rpx rgba(16, 27, 49, 0.04); |
| | | } |
| | | |
| | | &__cancel { |
| | | width: 176rpx; |
| | | height: 100rpx; |
| | | border-radius: 50rpx; |
| | | background: #E5E5E5; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | &__confirm { |
| | | flex: 1; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | gap: 14rpx; |
| | | height: 100rpx; |
| | | line-height: 100rpx; |
| | | border-radius: 50rpx; |
| | | background: #106EFA; |
| | | font-size: 36rpx; |
| | | font-weight: 600; |
| | | color: #ffffff; |
| | | border: 0; |
| | | padding: 0; |
| | | |
| | | &::after { |
| | | border: 0; |
| | | } |
| | | |
| | | &--hover { |
| | | opacity: 0.92; |
| | | } |
| | | } |
| | | |
| | | &__confirm-icon { |
| | | width: 32rpx; |
| | | height: 32rpx; |
| | | flex-shrink: 0; |
| | | } |
| | | } |
| | | |
| | | &__header { |
| | | position: fixed; |
| | | left: 0; |
| | | top: 0; |
| | | right: 0; |
| | | z-index: 10; |
| | | background: linear-gradient(180deg, #2473f5 0%, #1e6fef 100%); |
| | | box-shadow: 0 12rpx 24rpx rgba(36, 115, 245, 0.08); |
| | | } |
| | | |
| | | &__user-row { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 20rpx 24rpx 0; |
| | | } |
| | | |
| | | &__user { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 14rpx; |
| | | } |
| | | |
| | | &__avatar { |
| | | width: 42rpx; |
| | | height: 42rpx; |
| | | border-radius: 50%; |
| | | border: 2rpx solid rgba(255, 255, 255, 0.7); |
| | | } |
| | | |
| | | &__name { |
| | | font-size: 28rpx; |
| | | font-weight: 500; |
| | | color: #ffffff; |
| | | } |
| | | |
| | | &__status { |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 10rpx 16rpx; |
| | | border-radius: 999rpx; |
| | | background: rgba(255, 255, 255, 0.16); |
| | | backdrop-filter: blur(10rpx); |
| | | } |
| | | |
| | | &__status-dot { |
| | | width: 14rpx; |
| | | height: 14rpx; |
| | | border-radius: 50%; |
| | | background: #32d74b; |
| | | margin-right: 10rpx; |
| | | } |
| | | |
| | | &__status-text, |
| | | &__status-arrow { |
| | | font-size: 24rpx; |
| | | color: #ffffff; |
| | | } |
| | | |
| | | &__status-arrow { |
| | | font-size: 18rpx; |
| | | margin-left: 8rpx; |
| | | } |
| | | |
| | | &__stats { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | padding: 34rpx 36rpx 28rpx; |
| | | } |
| | | |
| | | &__stat-item { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | min-width: 160rpx; |
| | | } |
| | | |
| | | &__stat-value { |
| | | font-size: 52rpx; |
| | | line-height: 1; |
| | | font-weight: 700; |
| | | color: #ffffff; |
| | | } |
| | | |
| | | &__stat-label { |
| | | margin-top: 12rpx; |
| | | font-size: 26rpx; |
| | | color: rgba(255, 255, 255, 0.86); |
| | | } |
| | | |
| | | &__tabs { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 88rpx; |
| | | padding: 0 18rpx; |
| | | background: #ffffff; |
| | | } |
| | | |
| | | &__tab { |
| | | position: relative; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 100%; |
| | | padding: 0 18rpx; |
| | | font-size: 32rpx; |
| | | color: #8b9099; |
| | | } |
| | | |
| | | &__tab--active { |
| | | color: #242933; |
| | | font-weight: 700; |
| | | } |
| | | |
| | | &__tab-text { |
| | | font-size: inherit; |
| | | color: inherit; |
| | | } |
| | | |
| | | &__tab-count { |
| | | margin-left: 6rpx; |
| | | font-size: 28rpx; |
| | | color: #8b9099; |
| | | } |
| | | |
| | | &__tab-line { |
| | | position: absolute; |
| | | left: 18rpx; |
| | | right: 18rpx; |
| | | bottom: 0; |
| | | height: 5rpx; |
| | | border-radius: 999rpx; |
| | | background: #2473f5; |
| | | } |
| | | |
| | | &__filter { |
| | | margin-left: auto; |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 6rpx; |
| | | padding-right: 10rpx; |
| | | } |
| | | |
| | | &__filter-text { |
| | | font-size: 28rpx; |
| | | color: #9aa1ab; |
| | | |
| | | &--active { |
| | | color: #106efa; |
| | | } |
| | | } |
| | | &__filter-icon { |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | } |
| | | |
| | | &__body { |
| | | box-sizing: border-box; |
| | | background-color: #F6F9FF; |
| | | } |
| | | |
| | | &__list { |
| | | padding: 22rpx 30rpx calc(22rpx + env(safe-area-inset-bottom)) 30rpx; |
| | | } |
| | | |
| | | &__empty { |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | height: 100%; |
| | | padding-bottom: env(safe-area-inset-bottom); |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | &__empty-icon { |
| | | width: 320rpx; |
| | | height: 320rpx; |
| | | } |
| | | } |
| | | |
| | | .filter-popup { |
| | | position: fixed; |
| | | left: 0; |
| | | right: 0; |
| | | z-index: 20; |
| | | background: rgba(0, 0, 0, 0.24); |
| | | |
| | | &__panel { |
| | | height: 100%; |
| | | padding: 22rpx 0 26rpx; |
| | | background: #ffffff; |
| | | border-bottom-left-radius: 28rpx; |
| | | border-bottom-right-radius: 28rpx; |
| | | box-sizing: border-box; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | &__section { |
| | | padding: 0 18rpx; |
| | | margin-bottom: 28rpx; |
| | | } |
| | | |
| | | &__title { |
| | | display: block; |
| | | margin-bottom: 20rpx; |
| | | font-size: 28rpx; |
| | | font-weight: 700; |
| | | color: #252b33; |
| | | } |
| | | |
| | | &__options { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | gap: 18rpx 20rpx; |
| | | } |
| | | |
| | | &__option { |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | width: 226rpx; |
| | | height: 74rpx; |
| | | border-radius: 10rpx; |
| | | background: #f5f5f5; |
| | | border: 2rpx solid transparent; |
| | | box-sizing: border-box; |
| | | |
| | | &--active { |
| | | background: #edf5ff; |
| | | border-color: #3d8cff; |
| | | } |
| | | } |
| | | |
| | | &__option-text { |
| | | font-size: 28rpx; |
| | | color: #4b515a; |
| | | |
| | | .filter-popup__option--active & { |
| | | font-weight: 600; |
| | | color: #2678ff; |
| | | } |
| | | } |
| | | |
| | | &__actions { |
| | | display: flex; |
| | | gap: 24rpx; |
| | | padding: 8rpx 18rpx 0; |
| | | } |
| | | |
| | | &__button { |
| | | flex: 1; |
| | | height: 92rpx; |
| | | line-height: 92rpx; |
| | | border-radius: 999rpx; |
| | | font-size: 34rpx; |
| | | font-weight: 700; |
| | | border: 0; |
| | | padding: 0; |
| | | |
| | | &::after { |
| | | border: 0; |
| | | } |
| | | |
| | | &--reset { |
| | | background: #ebebeb; |
| | | color: #777d86; |
| | | } |
| | | |
| | | &--confirm { |
| | | background: linear-gradient(180deg, #2d82ff 0%, #206ef6 100%); |
| | | color: #ffffff; |
| | | } |
| | | |
| | | &--hover { |
| | | opacity: 0.92; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .order-card { |
| | | margin-bottom: 20rpx; |
| | | padding: 20rpx; |
| | | border-radius: 24rpx; |
| | | background: #ffffff; |
| | | box-shadow: 0 10rpx 24rpx rgba(26, 44, 81, 0.04); |
| | | |
| | | &__head { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: flex-start; |
| | | } |
| | | |
| | | &__time-main { |
| | | font-size: 42rpx; |
| | | font-weight: 700; |
| | | color: #ff8d27; |
| | | } |
| | | |
| | | &__time-sub { |
| | | margin-left: 8rpx; |
| | | font-size: 28rpx; |
| | | color: #a3a8b2; |
| | | } |
| | | |
| | | &__price-wrap { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | gap: 8rpx; |
| | | |
| | | &--serial-only { |
| | | justify-content: flex-start; |
| | | min-width: 54rpx; |
| | | } |
| | | } |
| | | |
| | | &__serial { |
| | | font-size: 38rpx; |
| | | font-weight: 700; |
| | | line-height: 1; |
| | | color: #2c3139; |
| | | } |
| | | |
| | | &__price { |
| | | font-size: 44rpx; |
| | | font-weight: 700; |
| | | color: #ff3b30; |
| | | } |
| | | |
| | | &__meta { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | gap: 16rpx; |
| | | margin-top: 12rpx; |
| | | } |
| | | |
| | | &__extra { |
| | | flex-shrink: 0; |
| | | font-size: 24rpx; |
| | | color: #a0a5af; |
| | | } |
| | | |
| | | &__tags { |
| | | display: flex; |
| | | flex: 1; |
| | | flex-wrap: wrap; |
| | | gap: 10rpx; |
| | | } |
| | | |
| | | &__tag-wrap { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | &__tag-icon { |
| | | width: 108rpx; |
| | | height: 40rpx; |
| | | } |
| | | |
| | | &__tag { |
| | | padding: 4rpx 10rpx; |
| | | border-radius: 8rpx; |
| | | font-size: 22rpx; |
| | | line-height: 1.2; |
| | | border: 1rpx solid #2473f5; |
| | | color: #2473f5; |
| | | |
| | | &--orange { |
| | | border-color: #ff9c45; |
| | | background: #ff9c45; |
| | | color: #ffffff; |
| | | } |
| | | |
| | | &--red { |
| | | border-color: #ff6c57; |
| | | color: #ff6c57; |
| | | } |
| | | |
| | | &--blue-light { |
| | | border-color: #74a9ff; |
| | | color: #74a9ff; |
| | | } |
| | | } |
| | | |
| | | &__route { |
| | | display: flex; |
| | | margin-top: 20rpx; |
| | | } |
| | | |
| | | &__route-side { |
| | | width: 64rpx; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | &__distance-top, |
| | | &__distance-bottom { |
| | | font-size: 22rpx; |
| | | font-weight: 600; |
| | | color: #555b66; |
| | | text-align: center; |
| | | } |
| | | |
| | | &__line { |
| | | position: relative; |
| | | width: 4rpx; |
| | | flex: 1; |
| | | min-height: 86rpx; |
| | | margin: 10rpx 0; |
| | | border-radius: 999rpx; |
| | | background: #d8dbe1; |
| | | |
| | | &::before, |
| | | &::after { |
| | | content: ''; |
| | | position: absolute; |
| | | left: 50%; |
| | | transform: translateX(-50%); |
| | | width: 14rpx; |
| | | height: 14rpx; |
| | | border-radius: 50%; |
| | | background: #6a6f79; |
| | | } |
| | | |
| | | &::before { |
| | | top: -4rpx; |
| | | } |
| | | |
| | | &::after { |
| | | bottom: -4rpx; |
| | | } |
| | | } |
| | | |
| | | &__route-main { |
| | | flex: 1; |
| | | } |
| | | |
| | | &__route-item { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: flex-start; |
| | | gap: 16rpx; |
| | | |
| | | &--destination { |
| | | margin-top: 20rpx; |
| | | } |
| | | } |
| | | |
| | | &__route-texts { |
| | | flex: 1; |
| | | min-width: 0; |
| | | } |
| | | |
| | | &__route-title { |
| | | display: block; |
| | | font-size: 40rpx; |
| | | font-weight: 700; |
| | | color: #2d3139; |
| | | line-height: 1.3; |
| | | } |
| | | |
| | | &__route-desc { |
| | | display: block; |
| | | margin-top: 8rpx; |
| | | font-size: 28rpx; |
| | | color: #9ea4ae; |
| | | line-height: 1.4; |
| | | } |
| | | |
| | | &__nav { |
| | | width: 48rpx; |
| | | height: 48rpx; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | &__goods { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | height: 70rpx; |
| | | padding: 0 20rpx; |
| | | margin-top: 20rpx; |
| | | border-radius: 16rpx; |
| | | background: #f4f5f7; |
| | | } |
| | | |
| | | &__goods-text { |
| | | flex: 1; |
| | | font-size: 28rpx; |
| | | color: #7a818d; |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | &__goods-arrow { |
| | | margin-left: 12rpx; |
| | | font-size: 24rpx; |
| | | color: #a4a9b1; |
| | | } |
| | | |
| | | &__button { |
| | | margin-top: 24rpx; |
| | | width: 100%; |
| | | height: 88rpx; |
| | | line-height: 88rpx; |
| | | border-radius: 999rpx; |
| | | background: linear-gradient(180deg, #2b7fff 0%, #1f6ff3 100%); |
| | | font-size: 34rpx; |
| | | font-weight: 700; |
| | | color: #ffffff; |
| | | border: 0; |
| | | padding: 0; |
| | | |
| | | &::after { |
| | | border: 0; |
| | | } |
| | | |
| | | &--hover { |
| | | opacity: 0.92; |
| | | } |
| | | } |
| | | |
| | | &__actions { |
| | | margin-top: 24rpx; |
| | | |
| | | &--pickup, |
| | | &--delivering { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 22rpx; |
| | | } |
| | | } |
| | | |
| | | &__icon-actions { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 20rpx; |
| | | flex-shrink: 0; |
| | | |
| | | &--single { |
| | | gap: 0; |
| | | } |
| | | } |
| | | |
| | | &__icon-action { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | width: 74rpx; |
| | | } |
| | | |
| | | &__action-icon { |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | | border-radius: 8rpx; |
| | | background: #f7f8fa; |
| | | } |
| | | |
| | | &__action-text { |
| | | margin-top: 8rpx; |
| | | font-size: 26rpx; |
| | | line-height: 1; |
| | | color: #5b616b; |
| | | } |
| | | |
| | | &__button--code { |
| | | flex: 1; |
| | | margin-top: 0; |
| | | } |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="login-page"> |
| | | <image class="login-page__bg" src="/static/image/login_bg@2x.png" mode="aspectFill"></image> |
| | | <view></view> |
| | | |
| | | <view class="login-page__content"> |
| | | <view class="login-card"> |
| | | <view class="login-card__tabs"> |
| | | <view |
| | | v-for="item in tabs" |
| | | :key="item.value" |
| | | class="login-card__tab" |
| | | :style="{ |
| | | backgroundImage: returnBackgroundImg(item.value, activeTab === item.value) |
| | | }" |
| | | :class="{ 'login-card__tab--active': activeTab === item.value }" |
| | | @click="activeTab = item.value" |
| | | > |
| | | <text class="login-card__tab-text">{{ item.label }}</text> |
| | | <view v-if="activeTab === item.value" class="login-card__tab-line"></view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="login-card__form"> |
| | | <view v-if="activeTab === 'account'" class="login-card__group"> |
| | | <view class="login-card__field"> |
| | | <input v-model="form.mobile" class="login-card__input" type="number" placeholder="请è¾å
¥ææºå·" placeholder-style="color: #c5cad4;" /> |
| | | </view> |
| | | <view class="login-card__field"> |
| | | <input v-model="form.password" class="login-card__input" password placeholder="请è¾å
¥å¯ç " placeholder-style="color: #c5cad4;" /> |
| | | </view> |
| | | </view> |
| | | |
| | | <view v-else class="login-card__group"> |
| | | <view class="login-card__field"> |
| | | <input v-model="form.mobile" class="login-card__input" type="number" placeholder="请è¾å
¥ææºå·" placeholder-style="color: #c5cad4;" /> |
| | | </view> |
| | | <view class="login-card__field login-card__field--code"> |
| | | <input v-model="form.code" class="login-card__input" type="number" placeholder="请è¾å
¥éªè¯ç " placeholder-style="color: #c5cad4;" /> |
| | | <text class="login-card__code-btn">è·åéªè¯ç </text> |
| | | </view> |
| | | </view> |
| | | |
| | | <button class="login-card__submit" hover-class="login-card__submit--hover" @click="login">ç»å½</button> |
| | | </view> |
| | | |
| | | <view class="login-card__agreement"> |
| | | <view class="login-card__agreement-icon"></view> |
| | | <text class="login-card__agreement-text">ç»å½å³ä»£è¡¨æ¨åæ<text>ãç¨æ·åè®®ã</text>å<text>ãç¨æ·éç§æ¿çã</text></text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | activeTab: 'account', |
| | | tabs: [ |
| | | { label: 'è´¦å·ç»å½', value: 'account' }, |
| | | { label: 'éªè¯ç ç»å½', value: 'code' } |
| | | ], |
| | | form: { |
| | | mobile: '', |
| | | password: '', |
| | | code: '' |
| | | } |
| | | }; |
| | | }, |
| | | methods: { |
| | | returnBackgroundImg(value, active) { |
| | | if (value === 'account' && !active) { |
| | | return "url('/static/image/login_ic_account@2x.png')" |
| | | } else if (value === 'account' && active) { |
| | | return "url('/static/image/login_ic_account_sel@2x.png')" |
| | | } else if (value === 'code' && !active) { |
| | | return "url('/static/image/login_ic_code@2x.png')" |
| | | } else if (value === 'code' && active) { |
| | | return "url('/static/image/login_ic_code_sel@2x.png')" |
| | | } |
| | | }, |
| | | login() { |
| | | uni.switchTab({ |
| | | url: '/pages/index/index' |
| | | }) |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .login-page { |
| | | position: relative; |
| | | height: 100vh; |
| | | background: linear-gradient(180deg, #cfe6ff 0%, #a7c6ff 100%); |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | |
| | | &__bg { |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | right: 0; |
| | | bottom: 0; |
| | | width: 100vw; |
| | | height: 100vh; |
| | | } |
| | | |
| | | &__content { |
| | | position: relative; |
| | | z-index: 1; |
| | | height: 88vh; |
| | | box-sizing: border-box; |
| | | padding: 180rpx 40rpx 20rpx 40rpx; |
| | | } |
| | | } |
| | | |
| | | .login-card { |
| | | position: relative; |
| | | height: calc(100% - 15rpx); |
| | | box-sizing: border-box; |
| | | border-radius: 40rpx; |
| | | background: rgba(255, 255, 255, 0.95); |
| | | box-shadow: 0 24rpx 70rpx rgba(69, 124, 219, 0.16); |
| | | overflow: hidden; |
| | | |
| | | &__tabs { |
| | | display: flex; |
| | | align-items: stretch; |
| | | background: rgba(228, 236, 247, 0.8); |
| | | } |
| | | |
| | | &__tab { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 100rpx; |
| | | border-bottom-left-radius: 28rpx; |
| | | border-bottom-right-radius: 28rpx; |
| | | background-repeat: no-repeat; |
| | | background-size: 100% 100%; |
| | | position: relative; |
| | | |
| | | &--active { |
| | | flex: 1.3; |
| | | // background: #ffffff; |
| | | } |
| | | |
| | | .login-card__tab-line { |
| | | position: absolute; |
| | | bottom: 10rpx; |
| | | left: 50%; |
| | | transform: translate(0, -55%); |
| | | width: 36rpx; |
| | | height: 8rpx; |
| | | margin-top: 10rpx; |
| | | border-radius: 999rpx; |
| | | background: #1f74ff; |
| | | z-index: 999; |
| | | } |
| | | } |
| | | |
| | | &__tab-text { |
| | | font-size: 34rpx; |
| | | font-weight: 400; |
| | | color: #666666; |
| | | |
| | | .login-card__tab--active & { |
| | | color: #222222; |
| | | } |
| | | } |
| | | |
| | | &__tab-line { |
| | | width: 36rpx; |
| | | height: 8rpx; |
| | | margin-top: 10rpx; |
| | | border-radius: 999rpx; |
| | | background: #1f74ff; |
| | | } |
| | | |
| | | &__form { |
| | | padding: 46rpx 36rpx 0; |
| | | } |
| | | |
| | | &__group { |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 26rpx; |
| | | } |
| | | |
| | | &__field { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 96rpx; |
| | | padding: 0 34rpx; |
| | | border-radius: 48rpx; |
| | | background: #f3f6fb; |
| | | |
| | | &--code { |
| | | justify-content: space-between; |
| | | gap: 20rpx; |
| | | } |
| | | } |
| | | |
| | | &__input { |
| | | flex: 1; |
| | | height: 98rpx; |
| | | font-size: 30rpx; |
| | | color: #31343a; |
| | | background: transparent; |
| | | } |
| | | |
| | | &__code-btn { |
| | | flex-shrink: 0; |
| | | font-size: 26rpx; |
| | | font-weight: 600; |
| | | color: #1f74ff; |
| | | } |
| | | |
| | | &__submit { |
| | | margin-top: 40rpx; |
| | | width: 100%; |
| | | height: 98rpx; |
| | | line-height: 98rpx; |
| | | border: 0; |
| | | border-radius: 50rpx; |
| | | background: #106EFA; |
| | | font-size: 32rpx; |
| | | font-weight: 600; |
| | | color: #ffffff; |
| | | padding: 0; |
| | | |
| | | &::after { |
| | | border: 0; |
| | | } |
| | | |
| | | &--hover { |
| | | opacity: 0.94; |
| | | } |
| | | } |
| | | |
| | | &__agreement { |
| | | position: absolute; |
| | | left: 36rpx; |
| | | right: 36rpx; |
| | | bottom: calc(env(safe-area-inset-bottom) + 40rpx); |
| | | display: flex; |
| | | align-items: flex-start; |
| | | gap: 10rpx; |
| | | } |
| | | |
| | | &__agreement-icon { |
| | | position: relative; |
| | | flex-shrink: 0; |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | margin-top: 8rpx; |
| | | border-radius: 50%; |
| | | background: #1f74ff; |
| | | |
| | | &::after { |
| | | content: ''; |
| | | position: absolute; |
| | | left: 8rpx; |
| | | top: 4rpx; |
| | | width: 9rpx; |
| | | height: 13rpx; |
| | | border-right: 3rpx solid #ffffff; |
| | | border-bottom: 3rpx solid #ffffff; |
| | | transform: rotate(38deg); |
| | | } |
| | | } |
| | | |
| | | &__agreement-text { |
| | | font-size: 24rpx; |
| | | line-height: 1.6; |
| | | color: #555555; |
| | | text { |
| | | color: #106EFA; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | |
| | | }; |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | |
| | | }; |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #Wed Apr 22 17:09:11 CST 2026 |
| | | gradle.version=8.9 |
| | |
| | | |
| | | var isReady=false;var onReadyCallbacks=[]; |
| | | var isServiceReady=false;var onServiceReadyCallbacks=[]; |
| | | var __uniConfig = {"pages":["pages/index/index","pages/mine/mine"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"uni-app","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8"},"tabBar":{"color":"#999999","selectedColor":"#222222","borderStyle":"black","backgroundColor":"#fff","list":[{"pagePath":"pages/index/index","iconPath":"static/tabbar/nav_jiancha@2x.png","selectedIconPath":"static/tabbar/nav_jiancha_sel@2x.png","text":"é¦é¡µ"},{"pagePath":"pages/mine/mine","iconPath":"static/tabbar/nav_jiancha@2x.png","selectedIconPath":"static/tabbar/nav_jiancha_sel@2x.png","text":"æç"}]},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"é«éç«è¡æå¯å","compilerVersion":"5.06","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}}; |
| | | var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"é¦é¡µ","navigationBarBackgroundColor":"#ffffff"}},{"path":"/pages/mine/mine","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"æç","navigationBarBackgroundColor":"#ffffff"}}]; |
| | | var __uniConfig = {"pages":["pages/guide-page/guide-page","pages/index/index","pages/mine/mine","pages/order/order","pages/message/message","pages/login/login"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"uni-app","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8"},"tabBar":{"color":"#999999","selectedColor":"#222222","borderStyle":"black","backgroundColor":"#fff","list":[{"pagePath":"pages/index/index","iconPath":"static/tabbar/nav_home_sel@2x.png","selectedIconPath":"static/tabbar/nav_home_sel@2x1.png","text":"大å
"},{"pagePath":"pages/order/order","iconPath":"static/tabbar/nav_order@2x.png","selectedIconPath":"static/tabbar/nav_order@2x1.png","text":"订å"},{"pagePath":"pages/message/message","iconPath":"static/tabbar/nav_xiaoxi@2x.png","selectedIconPath":"static/tabbar/nav_xiaoxi@2x1.png","text":"æ¶æ¯"},{"pagePath":"pages/mine/mine","iconPath":"static/tabbar/nav_mine@2x.png","selectedIconPath":"static/tabbar/nav_mine@2x1.png","text":"æç"}]},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"é«éç«è¡æå¯å","compilerVersion":"5.07","entryPagePath":"pages/guide-page/guide-page","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}}; |
| | | var __uniRoutes = [{"path":"/pages/guide-page/guide-page","meta":{"isQuit":true},"window":{"titleNView":false}},{"path":"/pages/index/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationStyle":"custom","titleNView":false}},{"path":"/pages/mine/mine","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"æç","navigationBarBackgroundColor":"#ffffff"}},{"path":"/pages/order/order","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"订å"}},{"path":"/pages/message/message","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"æ¶æ¯"}},{"path":"/pages/login/login","meta":{},"window":{"titleNView":false}}]; |
| | | __uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); |
| | | __uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); |
| | | service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}}); |
| | |
| | | {"@platforms":["android","iPhone","iPad"],"id":"__UNI__965A7DA","name":"é«éç«è¡æå¯å","version":{"name":"1.0.0","code":"100"},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"Push":{},"UniNView":{"description":"UniNViewåçæ¸²æ"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#F8F8F8"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"icons":{"android":{"hdpi":""}},"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>","<uses-permission android:name=\"android.permission.INTERNET\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>"]},"apple":{"dSYMs":false},"plugins":{"push":{"unipush":{"version":"2","offline":true,"honor":{},"meizu":{},"mi":{},"vivo":{},"oppo":{},"hms":{}}},"audio":{"mp3":{"description":"Androidå¹³å°å½é³æ¯æMP3æ ¼å¼æä»¶"}}}},"uniStatistics":{"enable":false},"allowsInlineMediaPlayback":true,"safearea":{"background":"#fff","bottom":{"offset":"auto"}},"uni-app":{"compilerVersion":"5.06","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#999999","selectedColor":"#222222","borderStyle":"rgba(0,0,0,0.4)","backgroundColor":"#fff","list":[{"pagePath":"pages/index/index","iconPath":"static/tabbar/nav_jiancha@2x.png","selectedIconPath":"static/tabbar/nav_jiancha_sel@2x.png","text":"é¦é¡µ"},{"pagePath":"pages/mine/mine","iconPath":"static/tabbar/nav_jiancha@2x.png","selectedIconPath":"static/tabbar/nav_jiancha_sel@2x.png","text":"æç"}],"height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html"},"locale":"zh-Hans"} |
| | | {"@platforms":["android","iPhone","iPad"],"id":"__UNI__965A7DA","name":"é«éç«è¡æå¯å","version":{"name":"1.0.0","code":"100"},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"Push":{},"UniNView":{"description":"UniNViewåçæ¸²æ"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#F8F8F8"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"icons":{"android":{"hdpi":""}},"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>","<uses-permission android:name=\"android.permission.INTERNET\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>"]},"apple":{"dSYMs":false},"plugins":{"push":{"unipush":{"version":"2","offline":true,"honor":{},"meizu":{},"mi":{},"vivo":{},"oppo":{},"hms":{}}},"audio":{"mp3":{"description":"Androidå¹³å°å½é³æ¯æMP3æ ¼å¼æä»¶"}}}},"uniStatistics":{"enable":false},"allowsInlineMediaPlayback":true,"safearea":{"background":"#fff","bottom":{"offset":"auto"}},"uni-app":{"compilerVersion":"5.07","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#999999","selectedColor":"#222222","borderStyle":"rgba(0,0,0,0.4)","backgroundColor":"#fff","list":[{"pagePath":"pages/index/index","iconPath":"static/tabbar/nav_home_sel@2x.png","selectedIconPath":"static/tabbar/nav_home_sel@2x1.png","text":"大å
"},{"pagePath":"pages/order/order","iconPath":"static/tabbar/nav_order@2x.png","selectedIconPath":"static/tabbar/nav_order@2x1.png","text":"订å"},{"pagePath":"pages/message/message","iconPath":"static/tabbar/nav_xiaoxi@2x.png","selectedIconPath":"static/tabbar/nav_xiaoxi@2x1.png","text":"æ¶æ¯"},{"pagePath":"pages/mine/mine","iconPath":"static/tabbar/nav_mine@2x.png","selectedIconPath":"static/tabbar/nav_mine@2x1.png","text":"æç"}],"height":"50px"},"launch_path":"__uniappview.html"},"locale":"zh-Hans"} |