Browse Source

add style

dev
刘嘉炜 1 week ago
parent
commit
8aeb96e27c
  1. 40
      package.json
  2. 5
      src/manifest.json
  3. 11
      src/pages.json
  4. 292
      src/pages/order/detail.vue
  5. 43
      src/styles/iconfonts.scss
  6. 99
      src/subpackage/order/components/detail/contact.vue
  7. 97
      src/subpackage/order/components/detail/goods.vue
  8. 0
      src/subpackage/order/components/detail/text_line.vue
  9. 118
      src/subpackage/order/components/detail/venue.vue
  10. 97
      src/subpackage/order/components/detail/verify.vue
  11. 212
      src/subpackage/order/pages/detail.vue
  12. 4
      vite.config.js

40
package.json

@ -37,22 +37,22 @@
"build:quickapp-webview-union": "uni build -p quickapp-webview-union" "build:quickapp-webview-union": "uni build -p quickapp-webview-union"
}, },
"dependencies": { "dependencies": {
"@dcloudio/uni-app": "3.0.0-4060420250429001",
"@dcloudio/uni-app-harmony": "3.0.0-4060420250429001",
"@dcloudio/uni-app-plus": "3.0.0-4060420250429001",
"@dcloudio/uni-components": "3.0.0-4060420250429001",
"@dcloudio/uni-h5": "3.0.0-4060420250429001",
"@dcloudio/uni-mp-alipay": "3.0.0-4060420250429001",
"@dcloudio/uni-mp-baidu": "3.0.0-4060420250429001",
"@dcloudio/uni-mp-harmony": "3.0.0-4060420250429001",
"@dcloudio/uni-mp-jd": "3.0.0-4060420250429001",
"@dcloudio/uni-mp-kuaishou": "3.0.0-4060420250429001",
"@dcloudio/uni-mp-lark": "3.0.0-4060420250429001",
"@dcloudio/uni-mp-qq": "3.0.0-4060420250429001",
"@dcloudio/uni-mp-toutiao": "3.0.0-4060420250429001",
"@dcloudio/uni-mp-weixin": "3.0.0-4060420250429001",
"@dcloudio/uni-mp-xhs": "3.0.0-4060420250429001",
"@dcloudio/uni-quickapp-webview": "3.0.0-4060420250429001",
"@dcloudio/uni-app": "3.0.0-4060620250520001",
"@dcloudio/uni-app-harmony": "3.0.0-4060620250520001",
"@dcloudio/uni-app-plus": "3.0.0-4060620250520001",
"@dcloudio/uni-components": "3.0.0-4060620250520001",
"@dcloudio/uni-h5": "3.0.0-4060620250520001",
"@dcloudio/uni-mp-alipay": "3.0.0-4060620250520001",
"@dcloudio/uni-mp-baidu": "3.0.0-4060620250520001",
"@dcloudio/uni-mp-harmony": "3.0.0-4060620250520001",
"@dcloudio/uni-mp-jd": "3.0.0-4060620250520001",
"@dcloudio/uni-mp-kuaishou": "3.0.0-4060620250520001",
"@dcloudio/uni-mp-lark": "3.0.0-4060620250520001",
"@dcloudio/uni-mp-qq": "3.0.0-4060620250520001",
"@dcloudio/uni-mp-toutiao": "3.0.0-4060620250520001",
"@dcloudio/uni-mp-weixin": "3.0.0-4060620250520001",
"@dcloudio/uni-mp-xhs": "3.0.0-4060620250520001",
"@dcloudio/uni-quickapp-webview": "3.0.0-4060620250520001",
"jsonc-parser": "^3.3.1", "jsonc-parser": "^3.3.1",
"uni-ajax": "^2.5.1", "uni-ajax": "^2.5.1",
"vue": "^3.4.21", "vue": "^3.4.21",
@ -60,10 +60,10 @@
}, },
"devDependencies": { "devDependencies": {
"@dcloudio/types": "^3.4.8", "@dcloudio/types": "^3.4.8",
"@dcloudio/uni-automator": "3.0.0-4060420250429001",
"@dcloudio/uni-cli-shared": "3.0.0-4060420250429001",
"@dcloudio/uni-stacktracey": "3.0.0-4060420250429001",
"@dcloudio/vite-plugin-uni": "3.0.0-4060420250429001",
"@dcloudio/uni-automator": "3.0.0-4060620250520001",
"@dcloudio/uni-cli-shared": "3.0.0-4060620250520001",
"@dcloudio/uni-stacktracey": "3.0.0-4060620250520001",
"@dcloudio/vite-plugin-uni": "3.0.0-4060620250520001",
"@vue/runtime-core": "^3.4.21", "@vue/runtime-core": "^3.4.21",
"sass": "^1.89.0", "sass": "^1.89.0",
"vite": "5.2.8" "vite": "5.2.8"

5
src/manifest.json

@ -67,7 +67,10 @@
"setting" : { "setting" : {
"urlCheck" : false "urlCheck" : false
}, },
"usingComponents" : true
"usingComponents" : true,
"optimization": {
"subPackages": true
}
}, },
"uniStatistics": { "uniStatistics": {
"enable": false "enable": false

11
src/pages.json

@ -11,13 +11,20 @@
"style": { "style": {
"navigationBarTitleText": "订单列表" "navigationBarTitleText": "订单列表"
} }
},
}
],
"subpackages": [
{ {
"path": "pages/order/detail",
"root": "subpackage/order",
"pages": [
{
"path": "pages/detail",
"style": { "style": {
"navigationBarTitleText": "订单详情" "navigationBarTitleText": "订单详情"
} }
} }
]
}
], ],
"globalStyle": { "globalStyle": {
"navigationBarTextStyle": "#FFFFFF", "navigationBarTextStyle": "#FFFFFF",

292
src/pages/order/detail.vue

@ -1,292 +0,0 @@
<script setup>
import { onLoad } from '@dcloudio/uni-app';
import { reactive, ref } from "vue";
import textLine from "./modules/text_line.vue";
const isShowSpecificTime = ref(false);
onLoad(() => {
});
</script>
<template>
<view class="order-detail">
<view class="od-box od-header">
<view class="oh-stadium">
<image class="os-logo"></image>
<view class="os-name">MJ体育(天空篮球从云店)</view>
<view class="os-status">已核销</view>
</view>
<view class="oh-line">订单编号123456789012</view>
<view class="oh-line">创建时间2019-06-06 12:00:06</view>
</view>
<!-- 场次信息 -->
<view class="od-box od-venue-info">
<view class="od-title">场次信息</view>
<text-line label="预定项目:">羽毛球</text-line>
<text-line label="预定日期:">2019年05月17日(周五)</text-line>
<view class="soi-booking-info">
<view class="sbi-name">预定场次</view>
<view class="sbi-time-range">
<block v-for="(e, i) in 3" :key=i>
<view class="str-item">{{ e.name || '几号馆' }} {{ e.time || '时间段' }}</view>
</block>
</view>
</view>
<view class="vmm-line" v-if='isShowSpecificTime'>
<view>具体场次</view>
<view>
<view v-for="(e,i) in 3" :key="i">{{ 'venue_name' }} {{ 'duration' }} ({{ 0 }})</view>
</view>
</view>
<view class="soi-fold-btn" @click="isShowSpecificTime = !isShowSpecificTime">
<view class="sfb-txt">{{ isShowSpecificTime ? '收起' : '查看具体场次' }}</view>
<text class="sfb-icon" :class="[ isShowSpecificTime ? 'rotate' :'' ]">&#xe695;</text>
</view>
<view class="vvm-total">
<view>小计{{0}}</view>
<view>{{ 0}}</view>
</view>
</view>
<!-- 二维码 -->
<view class="od-box od-code">
<image class="oc-code-img"></image>
<view class="oc-tip">点击二维码可放大查看</view>
</view>
<!-- 支付信息 -->
<view class="od-box od-payment">
<view class="od-title">支付信息</view>
<text-line label="支付方式:">抖音支付</text-line>
<text-line label="支付时间:">2019年6月18日 10:30:40</text-line>
<text-line label="交易号:">3532463457445848657</text-line>
</view>
<!-- 抖音商品信息 -->
<view class="od-box od-goods">
<view class="og-title">抖音商品信息</view>
<view class="og-info">
<image class="oi-pic"></image>
<view class="oi-desc">
<view class="od-name">羽毛球订场200元代金券欧轩运营</view>
<view class="od-price">¥ 9.9</view>
</view>
<text class="oi-icon">&#xe695;</text>
</view>
<view class="og-bottom">
<view class="ob-lines">
<view class="ol-item">
<text-line label="订单编号:">3107858392102658852</text-line>
</view>
<view class="ol-item">
<text-line label="核销券码:">3107858392102658852</text-line>
</view>
</view>
<view class="ob-status">已核销</view>
</view>
</view>
</view>
</template>
<style lang="scss" scoped>
.order-detail{
padding: 24upx;
.od-box{
background-color: #fff;
border-radius: 20upx;
&+ .od-box{
margin-top: 24upx;
}
}
.od-title{
@include flcw(28upx, 40upx, #9A9A9D);
}
.od-header{
padding: 28upx 28upx 32upx;
.oh-stadium{
margin-bottom: 14upx;
@include ctf;
.os-logo{
flex-shrink: 0;
margin-right: 10upx;
width: 34upx;
height: 34upx;
background: skyblue;
}
.os-name{
flex-grow: 1;
@include flcw(28upx, 40upx, #333, 500);
@include tHide;
}
.os-status{
flex-shrink: 0;
margin-left: 10upx;
max-width: 160upx;
@include tHide;
@include flcw(28upx, 40upx, $mColor);
}
}
.oh-line{
@include flcw(24upx, 34upx, #9A9A9D);
@include tHide;
}
}
.od-code{
padding-top: 26upx;
font-size: 0;
.oc-code-img{
display: block;
margin: 0 auto;
width: 278upx;
height: 278upx;
background: skyblue;
}
.oc-tip{
text-align: center;
@include flcw(24upx, 56upx, #666666);
}
}
.od-goods{
padding: 28upx 16upx 30upx 28upx;
.og-title{
@include flcw(28upx, 40upx, #333, 500);
}
.og-info{
margin-top: 24upx;
@include ctf;
.oi-pic{
flex-shrink: 0;
margin-right: 24upx;
width: 136upx;
height: 136upx;
background: skyblue;
}
.oi-desc{
flex-grow: 1;
align-self: stretch;
display: flex;
flex-wrap: wrap;
flex-direction: column;
justify-content: space-between;
.od-name{
@include flcw(26upx, 36upx, #333, 500);
@include tHide(2);
}
.od-price{
@include flcw(26upx, 36upx, #333, 500);
@include tHide;
}
}
@include rightArrow;
.oi-icon{
margin-left: 20upx;
flex-shrink: 0;
font-size: 40upx;
font-family: rightArrow;
color: #333;
}
}
.og-bottom{
margin-top: 36upx;
@include ctf(space-between);
.ob-lines{
flex-grow: 1;
.ol-item + .ol-item{
margin-top: 24upx;
}
}
.ob-status{
flex-shrink: 0;
margin-left: 10upx;
max-width: 160upx;
@include flcw(28upx, 40upx, $mColor);
@include tHide;
}
}
}
.od-payment{
padding: 30upx;
.od-title{
margin-bottom: 20upx;
}
}
.od-venue-info{
padding: 30upx;
.od-title{
margin-bottom: 20upx;
}
.soi-booking-info{
display: flex;
.sbi-name{
flex-shrink: 0;
flex-grow: 0;
@include flcw(28upx, 52upx, #9A9A9D);
}
.sbi-time-range{
flex-grow: 1;
display: flex;
flex-wrap: wrap;
.str-item{
flex-shrink: 0;
margin-right: 12upx;
max-width: 500upx;
@include flcw(28upx, 52upx, #333);
@include tHide;
}
}
}
.vmm-line{
display: flex;
>view{
font-size: 28upx;
line-height: 52upx;
&:first-child{
flex-shrink: 0;
color: #9a9a9d;
}
&+view{
flex-grow: 1;
>view{
width: 100%;
@include flcw(28upx, 52upx, #333);
@include tHide;
}
}
}
}
.soi-fold-btn{
padding-bottom: 20upx;
margin: 20upx auto 0;
@include ctf(center);
.sfb-txt{
margin-right: 12upx;
flex-grow: 0;
flex-shrink: 0;
@include flcw(24upx, 34upx, #9a9a9d);
}
@include rightArrow;
.sfb-icon{
flex-shrink: 0;
font-family: rightArrow;
font-size: 20upx;
color: #9A9A9D;
&.rotate{
transform: rotateZ(-90deg);
}
}
}
.vvm-total{
margin-top: 16upx;
padding-top: 28upx;
border-top: 1px solid #D8D8D8;
@include ctf(space-between);
>view{
max-width: 50%;
@include tHide;
@include flcw(28upx, 40upx, #333);
}
}
}
}
</style>

43
src/styles/iconfonts.scss

@ -11,3 +11,46 @@
src: url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAKUAAsAAAAABlQAAAJIAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACCcApQYQE2AiQDCAsGAAQgBYRnBy8bnAXILrBt2JMiLSOMDeBm+nYdAQ4hgmiMNXt3iEhS7TSyaDJJlEIUq4QKIZGS/H8US9Z/a9nydAUeFU+pVX2zV7N3fXdy+eYowj4Ij3G47t9hEQrJXDfc8CCqkees7DI36lL+BvTAC0Jf0jr1Zq3jAX08IHnA9GKlEWYyHuQM0ytf0EBcIlBrzr6hpfPbOkyeO5LDtBG6O8gK4zwKHJjgYUWBuWqhcujKIh6ggnQ59A3cR5+PX5ZjgqQi0yWrZ2c+vM6MGb4r78if3C3XAs9LqEDGFFCIze70smHRxA+rdY8YgI1F8FVZBi5xaLtgf53Orwf9UHgm0UmPmkvwWH21AT2TnkW0Ff12v3/1dNEVqOeL5+sOenp87cx0G40v+153ff07zv9qNDoNOESe9DG/16+Cf+3739ZUfxN1BXxuMKorckb1TtzBHzHuDCQWESGVJpErk7aT6GpNjP+0v9XPVEvbmZWheoK3Sl+GrNoAVbgJVKizgErVFlFr0tn6Om2MYVFqMOIRIDR7QdLoBVmzN6pwA1To9ItKzf5RazvYrc5IeCdMjpCPbg8jT+fKmiVSW6WglTpcl2gSFxGM4dL8Yjl3QTnxHHOKdrAsolCxzvCcnkdpqtGwjsmT+VDEbC8sqKa3zHs6gxOMOATxIVcPini0nArIUvy+KhJoSTl4INVMs0IE1aMl8xYHUBeGfFDHg1xTaAssE0JBCtMy6JwPI6mUhkzzsBjxiHnhhKSxbcGQ1FDD/Pam7Nf2QC1tTWEGZBWHzLoDAAAA') format('woff2'); src: url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAKUAAsAAAAABlQAAAJIAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACCcApQYQE2AiQDCAsGAAQgBYRnBy8bnAXILrBt2JMiLSOMDeBm+nYdAQ4hgmiMNXt3iEhS7TSyaDJJlEIUq4QKIZGS/H8US9Z/a9nydAUeFU+pVX2zV7N3fXdy+eYowj4Ij3G47t9hEQrJXDfc8CCqkees7DI36lL+BvTAC0Jf0jr1Zq3jAX08IHnA9GKlEWYyHuQM0ytf0EBcIlBrzr6hpfPbOkyeO5LDtBG6O8gK4zwKHJjgYUWBuWqhcujKIh6ggnQ59A3cR5+PX5ZjgqQi0yWrZ2c+vM6MGb4r78if3C3XAs9LqEDGFFCIze70smHRxA+rdY8YgI1F8FVZBi5xaLtgf53Orwf9UHgm0UmPmkvwWH21AT2TnkW0Ff12v3/1dNEVqOeL5+sOenp87cx0G40v+153ff07zv9qNDoNOESe9DG/16+Cf+3739ZUfxN1BXxuMKorckb1TtzBHzHuDCQWESGVJpErk7aT6GpNjP+0v9XPVEvbmZWheoK3Sl+GrNoAVbgJVKizgErVFlFr0tn6Om2MYVFqMOIRIDR7QdLoBVmzN6pwA1To9ItKzf5RazvYrc5IeCdMjpCPbg8jT+fKmiVSW6WglTpcl2gSFxGM4dL8Yjl3QTnxHHOKdrAsolCxzvCcnkdpqtGwjsmT+VDEbC8sqKa3zHs6gxOMOATxIVcPini0nArIUvy+KhJoSTl4INVMs0IE1aMl8xYHUBeGfFDHg1xTaAssE0JBCtMy6JwPI6mUhkzzsBjxiHnhhKSxbcGQ1FDD/Pam7Nf2QC1tTWEGZBWHzLoDAAAA') format('woff2');
} }
} }
// iconfont 添加好友 (&#xe60d;)
@mixin addFriend {
@font-face {
font-family: 'addFriend';
src: url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAANAAAsAAAAABygAAAL0AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACCcAqCHIIXATYCJAMICwYABCAFhGcHNxtaBsgOJVWbiOAhCglABNEaOnt3AQCFqJOyAyIVWUIJJGwt6wpPrqoSyNb/fP5lE8gTaV0FcpfVfGF2NmLHDqyEQ2fUi+7aa13m3R/3KmcBBWQ+AM+kORZ+sPjWAI052wIXqFcvgFdFvOWge/kegUZLavhua+kaApHrFiKBVP6c8iCPjXWWtoBg2awo8NULtdS5RbxQQ3qYPuJ5/PPxz0oEk9RkTsKeS8128OZnizvA7351n/zNg+UK0D+hBhlzB5PGgX73Ln6iDe+nUe1vBLlF8LPlfxVKxaH/eaKWE90MhsF4JqbPetToBAqazwNuT/oQSkdMfvrs+tM74P7tk7VnD3ziwfvno2suF/fd7sdeb6XDV891n3MfKl6l7hSUfd7D7pmtF1fHl3kfDrjaXNB2kuXsaunSFhoPXq1dAo0BYekqrAlh/cYnmiYuX8PchNSro1Qx9fDa9Gw9brvxNGXcNGo0jJlEE0JGDcyIwZhT8S1GjP7v/6uHW9snqyNG/HLrObamu2wioSH85dK3uqOlxw0Rh2O2Wgp3enN+NgPd68LnJ/dYjXtW9CxOVeJuim7iFBONB4NNAKp7+Ut2/v6/sX3Jt308avVfcFMB309HnIqN1b2CpgXq708d/GzOCSJiMXWkB84QSM4XgiQ0ujYqjr7T96n8rpfyh3pdr6atM5RDVm8EVXAzUKPJCtSqtwaNZjUvbtJF4SdKAyasMgjtriBp9QGydp9RBeeFGr1+QK1299DoULSs12QibI0YWQiyQ+s0ZG2yRHk8Erc6gGinYMFNjhGEHSxsUK/RVX2tSEJ4jgmOCdpACAUpLIuwRTwMCYIMFSxzyEY0DCFKhVZLtX2JxiaLoBGGWBCIHWQ1DWLZyCRUiEzKv28AQnMSWGAiasSNObBoHdLT0BFQrWyJVPIgmzhMoBkQBAWiYOYVQS2yEhEMtwxS2ntxEBtCg5ngVFTQukgUla3Zniv+2gpo5AhSuAlZy2XWInF+CmORp2UnAA==') format('woff2');
}
}
// iconfont 电话 (&#xe605;)
@mixin phoneIcon {
@font-face {
font-family: 'phoneIcon';
src: url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAALwAAsAAAAABrgAAAKhAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACCcAqBMIExATYCJAMICwYABCAFhGcHMRvuBREVlAFkHwm5idUvmFxTWixhWryJANKL/9kkDwIrQKr4yaa4o1M7rEIHlIXRLp/+434k+3IZtWVUogIWsEDF+vzfO/4L6ANfEPq7NWhPWhsfUHkgfaD2tCzggDp56Bksr/xq9k1+RkBG1TUVtd517i3rZDFtqoISzmAgLw2T/bgR0uuIRELz6QVp0b2JsEkaotXRO2yMPx/+VzOkJ5Im5lR0H9tmtEd/pXEXxItSN+IfrF6ugz4WIQ1iVEZC6N2f6SoW2vhYRk+iJG1NBP5Kk0qFbuHQDkH9dU5xZlCYCs8k+tKj5iN4rJHqou2kakLdem2+nfm83W8b3O5z/1PhXffqbzuW+9bnz33J2C+NKt0td/L5+yqXPz1qfOvc22w7XOV8i0+fJl+PXp3MfuNFj9yXfq3bMn/utpdWrMiZ82PPcXMLbR3SoUPnzovuVxxRfkjRU/lnzfr17ar/Tg1t/1/m7qu9I5ffiJb/O/FAnwZ9BwzSHKTG+Gi87F/+Rp7Vv1UYlq3xL32mBPwxrPSeOJQaE5iP9CfzBP6caTBITEyUKGkTdX+k7s1oGd04qZkTyOmnqdZcd1gI0ss1wZdOoRyx9EpSCVcRaWRSE2ml1wQZVdLmcCa5mBpLIcmAsp4EQXYvRLK6jVh2byrhPkgjry/Syu6PjPqGLOdlUjaoNaFg1CCv4FVdGc/Csd4D2r4Q1JS8IHWexiEOomp+jxXSHBu6wSbMBgzVJezkY1gUNTRUZ6g4cMxNGoam7SWBqsvZGkECQxqQroCn1ComJHP5+w6Q1SsIBFKXDOl4qh/EAhFA7Y0V1PMgl3QGVoIxAxhEciWw07NQoVADTfusDFJYwE1INVKhSzKoMdjeXP7aIcjIsUXBnRpLN9qLyvViNgMAAAA=') format('woff2');
}
}
// iconfont 导航 (&#xe672;)
@mixin navigationIcon {
@font-face {
font-family: 'navigationIcon';
src: url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAALEAAsAAAAABowAAAJ4AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACCcApseAE2AiQDCAsGAAQgBYRnB0obzgURFYxpsh8HjttclBJz6SVdPoWNQRPpPwcRrpGzSZ6IHRIVEC2RUHV1AKSAdGtv/+cyRzwhoyZL8uzIoy0mLacvP0dCqhm1BggYyOvzf+/4L6APfEHoj9lYNNamiQ8sD6QP2B5WFGEn88A7lld+NftGP4MAjqTLp0rLa1txnR1anSeQwRgViFtldmpiCHsZx2BwyR7BFrrXgJzABtRB9Rgc9z8vf2VmDyhsNBgdjVw2yt0fy+YCvcPaAf3ZjuH68GMKsAE0kAwMSGt9vh40UsZrHP2GSNxtEPixbFmuD1m0GxF/ndHsDEAwFo5JtKVDLSmAw5pICIjttB4kZPMG7zN+Zw75nvPtHj7nOnf6pX6W32a/805nr3L2THbzf/csU1XNfv/147FL+/cva9sB//2cuZJepId32V9wc17FFAKA9Ubf1skIIHD1xe9NA265/+yd5gDwbSDSwY9abwywINgvzy/wcMxeINGoJCizDoFrSvZtT3M0U2BhhD197erwOoiyYI9Xh6AdQTE09kRShkuEDU5kwhZ78uBIkrLDTnhZBI2YDUCs3QiCu5tQuHIHGnf3KMO9gw2+DH9YevKPrd9cztt5Ln9RSo0KzB5Y5zKwZTff6ieVly7VoswvqatxCkMvyJY+aCDtY4O7lpEZI6v0+M4fo64THFUays2rzMaz73PZW7xcenihSMqQAso8oFpODNglW/r7PpHSRSelQOo3r5waW0chTwCgPowBNHQhrzhXpYgxDDEleuhdziKdjkBj+awGyRlP1SE7OvNNEkMNb3pbf2vHAEeGU2VOG3w6lK6q42Ovik2G8mFH4yG9/sc1VssAAAAA') format('woff2');
}
}
// iconfont 位置 (&#xe600;)
@mixin locationIcon {
@font-face {
font-family: 'locationIcon';
src: url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAANMAAsAAAAABzgAAAL/AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACCcAqCNIIuATYCJAMICwYABCAFhGcHMBtqBhGVmzfIfhy4sRNz6WWe4u9UPgdB1ZY9uwvnZkhMBCqvHBH73zsmjsREAsD3natKRqiRnN2BR1/42Th9aY7+uHfcInwA3pwbP1i+NdAxp0jedR4Yt8gu4opY5DkIwJF0SpGqa5s1uI4bPG0CgSigUgFJtBg3euRg7FURSkO0wB6BGjpWQaxABdJi6QKwPPi8eE2msAcJlQxapH1EzTCOPOMZsuG/AfkOXgkCvr0EqAAZSF6ZRGiaVa3IkSsZGccqlUKkkK0g4Bn//3ukdf/xQIBQgyKdAQjmSedEppRTTZMAUDj3xhHA8l7vCSoXFz/PqKnGY9Zu8xGDxWKy2XTG7edNZ7catpzpPrett9/6MpveJozW1kvdzRfMGLQW7cGEgaaWvRYMGrPGqrMKo63ocm8sBWsxmDXmbp3Vakxarxfm/DOGhrNai0lvazpvbDxn+hzbVh7TTExtzdHlId5P/RYTcsS50PlIobTHmFnvLzXXaBJriwYVVpfNHXZmzZ5hpXOrCwsH5e9drel/0WVEccT73FF5Jfo5uS01LVVNeW3aOSV5OaPue/w1BzS5+m4PDWyNb3BscrpE8CI+niN36+dW18De7i+TND0lvd20bocEvJBW0qNJc6YcZJHnS///xG9YOrTr3UC34q/2TgoATwbG/A4ECjAN9qcqFrx3dj8gomKbQVKqyKpPYgSqW2E4Yiv8B+k8udeX53V/PoE9XnepsSMoARl7IlEKLhFUOJEJauwpAUeSqJnshBeTkBGKAxDLIg4E7qwFCVf2gow7p1EKzgYqfHkOatz5C47ohMt8TsQKe+ig8IZE4U9zlIMJ14Jmbxjfm9cy+wtaZt5KbdXkvVcc0CEGlM/YmTGxyk4XeTNsm1BWWRCtmsxyX9dc9ZIqyu4GhTckCn+aoxzsIVv2+24Y35tXIOrl0jLzzVNbNQDUlXWAiq5kkfIZOzMmVs6z00VVYLNcQrm61YJo1dTDkfsaIzGUVc3P2R9tGeAI4ksCB8iox0k8ZaFzAA==') format('woff2');
}
}
// iconfont 4点时钟 (&#xe60f;)
@mixin clockIcon {
@font-face {
font-family: 'clockIcon';
src: url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAANMAAsAAAAABvgAAAL+AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACCcAqBdIF5ATYCJAMICwYABCAFhGcHMBs1BiMRZmPPIvvvCUrG/YZbayriEBGBQc0JkWBDKNWLbGpOeYkp/8bUwEzL4nnNrr7rM6vamOn8s581PIS3hQeXCR7+x+Hfh4lsgBOkqmTnLS6uwd9KUMj/DDbgIAnQBqa5bsjkOd8hgIjQNtesm5ywceOS2s0CK7SP6QPnMxJqAdAPX37mkqrqCpxwxQFi0vR3B2N8+NfbudHTM4mqVVJyPHXqmNlRT5/fMQ6EPn/kF11Ps0v2sryujtf6mPqfy/E1/EQ+gDfnxgPLtx5QYy2LsNfzADgT2NUlbtFLD76CAEyJJhmZmX25C8ueRq6FKxqqF9Ckip7OJBDGlh2NRsgYgaF0pUYsYwByRj6BpeLz4l+sECQGCsoobdvG4mx4DBMPor5MnFeB0RIwABQQ/mBKUbmsL0ZV/nAUplN6ja9aqhHwk8qUiIf+8xCGULI5AO6gfyZGwvyoyRIAje4SYGhXL9AVE83NXfiO0fMGXW8HZ6e09R9/Y4pxDb8H73GntJ5T772YZeUKoFEyoc9UMRqPosuldKtyu4wtpRpVbc6HRctKYuem0Qevm32Z0T4JvWZ5GJKcf0HJKTVF4504x4cm5Xe8LPfwd54wMT65g6x2jMhOUYfxH8ka+29P/BKpkFO1y//fvyH0w5u84a6ZBuC7IwqpRmYE4zekF/DvCmqEmDowgfyEBQhAUtKKQgKm7IIHMtvyba/Y7luEBcbYfRejEW4NKIzxRTQ5FAwwIxYMMSYJTAkja70ZdgygENoECGRaAYE1xyCx5BQU1twimvweDHDkFxhizX8wpVrYzYxA8SFaEwaMMYQ/yKKmdrGIC7xXTF5lQGOeJ1KfwQVG6n5ojzXSEXP6d2KZHThqKtgZ52FZNtBSk2PEMmVuV0q5qbfIqKnEmjBgjCH8QRY1tcuwuft9V0xeZUBC5OmnPgN+MFILkD2/FtV8kH36d2KZHThSghXsrGFYlg2008NyjFimO7ztSjGWk/Ll7YXVX9sAmEISKXiQwrC5bKLCCAEAAA==') format('woff2');
}
}

99
src/subpackage/order/components/detail/contact.vue

@ -0,0 +1,99 @@
<script setup>
import { onLoad } from '@dcloudio/uni-app';
import { reactive, ref } from "vue";
onLoad(() => {
});
</script>
<template>
<view class="detail-contact">
<view class="dc-left">
<view class="dl-line">
<view class="dl-icon">&#xe60f;</view>
<view class="dl-txt">周一周日09:05-12:0014:30-24周二周四周五...</view>
</view>
<view class="dl-line">
<view class="dl-icon">&#xe600;</view>
<view class="dl-txt">白云区从云路822号城市像素6楼电梯5楼走到6楼></view>
</view>
</view>
<view class="dc-line"></view>
<view class="dc-right">
<view class="dr-icons">
<view class="di-item">&#xe605;</view>
<view class="di-item">&#xe672;</view>
</view>
<view class="dr-txt">距离23m</view>
</view>
</view>
</template>
<style lang="scss" scoped>
.detail-contact{
padding: 30upx;
@include ctf(space-between);
.dc-left{
flex-grow: 1;
.dl-line{
display: flex;
&+ .dl-line{
margin-top: 16upx;
}
@include locationIcon;
@include clockIcon;
.dl-icon{
margin-right: 12upx;
flex-shrink: 0;
flex-grow: 0;
width: 34upx;
height: 34upx;
font-family: locationIcon, clockIcon;
font-size: 28upx;
color: #9A9A9D;
}
.dl-txt{
@include flcw(24upx, 34upx, #9A9A9D);
}
}
}
.dc-line{
align-self: stretch;
margin-left: 30upx;
margin-right: 12upx;
flex-shrink: 0;
flex-grow: 0;
width: 1px;
background: #EAEAEA;
}
.dc-right{
flex-shrink: 0;
flex-grow: 0;
width: 136upx;
.dr-icons{
@include ctf(center);
@include phoneIcon;
@include navigationIcon;
.di-item{
margin: 0 12upx;
width: 36upx;
height: 36upx;
text-align: center;
line-height: 36upx;
border-radius: 50%;
font-family: phoneIcon, navigationIcon;
font-size: 24upx;
background-color: rgba($color: $mColor, $alpha: .05);
color: $mColor;
}
}
.dr-txt{
margin-top: 18upx;
text-align: center;
@include flcw(24upx, 34upx, #9A9A9D);
@include tHide;
}
}
}
</style>

97
src/subpackage/order/components/detail/goods.vue

@ -0,0 +1,97 @@
<script setup>
import { onLoad } from '@dcloudio/uni-app';
import { reactive, ref } from "vue";
import textLine from "./text_line.vue";
onLoad(() => {
});
</script>
<template>
<!-- 抖音商品信息 -->
<view class="od-goods">
<view class="og-title">抖音商品信息</view>
<view class="og-info">
<image class="oi-pic"></image>
<view class="oi-desc">
<view class="od-name">羽毛球订场200元代金券欧轩运营</view>
<view class="od-price">¥ 9.9</view>
</view>
<text class="oi-icon">&#xe695;</text>
</view>
<view class="og-bottom">
<view class="ob-lines">
<view class="ol-item">
<text-line label="订单编号:">3107858392102658852</text-line>
</view>
<view class="ol-item">
<text-line label="核销券码:">3107858392102658852</text-line>
</view>
</view>
<view class="ob-status">已核销</view>
</view>
</view>
</template>
<style lang="scss" scoped>
.od-goods{
padding: 28upx 16upx 30upx 28upx;
.og-title{
@include flcw(28upx, 40upx, #333, 500);
}
.og-info{
margin-top: 24upx;
@include ctf;
.oi-pic{
flex-shrink: 0;
margin-right: 24upx;
width: 136upx;
height: 136upx;
background: skyblue;
}
.oi-desc{
flex-grow: 1;
align-self: stretch;
display: flex;
flex-wrap: wrap;
flex-direction: column;
justify-content: space-between;
.od-name{
@include flcw(26upx, 36upx, #333, 500);
@include tHide(2);
}
.od-price{
@include flcw(26upx, 36upx, #333, 500);
@include tHide;
}
}
@include rightArrow;
.oi-icon{
margin-left: 20upx;
flex-shrink: 0;
font-size: 40upx;
font-family: rightArrow;
color: #333;
}
}
.og-bottom{
margin-top: 36upx;
@include ctf(space-between);
.ob-lines{
flex-grow: 1;
.ol-item + .ol-item{
margin-top: 24upx;
}
}
.ob-status{
flex-shrink: 0;
margin-left: 10upx;
max-width: 160upx;
@include flcw(28upx, 40upx, $mColor);
@include tHide;
}
}
}
</style>

0
src/pages/order/modules/text_line.vue → src/subpackage/order/components/detail/text_line.vue

118
src/subpackage/order/components/detail/venue.vue

@ -0,0 +1,118 @@
<script setup>
import { reactive, ref } from "vue";
import textLine from "./text_line.vue";
const isShowSpecificTime = ref(false);
</script>
<template>
<view class="detail-venue-info">
<view class="od-title">场次信息</view>
<text-line label="预定项目:">羽毛球</text-line>
<text-line label="预定日期:">2019年05月17日(周五)</text-line>
<view class="soi-booking-info">
<view class="sbi-name">预定场次</view>
<view class="sbi-time-range">
<block v-for="(e, i) in 3" :key=i>
<view class="str-item">{{ e.name || '几号馆' }} {{ e.time || '时间段' }}</view>
</block>
</view>
</view>
<view class="vmm-line" v-if='isShowSpecificTime'>
<view>具体场次</view>
<view>
<view v-for="(e,i) in 3" :key="i">{{ 'venue_name' }} {{ 'duration' }} ({{ 0 }})</view>
</view>
</view>
<view class="soi-fold-btn" @click="isShowSpecificTime = !isShowSpecificTime">
<view class="sfb-txt">{{ isShowSpecificTime ? '收起' : '查看具体场次' }}</view>
<text class="sfb-icon" :class="[ isShowSpecificTime ? 'rotate' :'' ]">&#xe695;</text>
</view>
<view class="vvm-total">
<view>小计{{0}}</view>
<view>{{ 0}}</view>
</view>
</view>
</template>
<style lang="scss" scoped>
.detail-venue-info{
padding: 30upx;
.od-title{
margin-bottom: 20upx;
@include flcw(28upx, 40upx, #9A9A9D);
}
.soi-booking-info{
display: flex;
.sbi-name{
flex-shrink: 0;
flex-grow: 0;
@include flcw(28upx, 52upx, #9A9A9D);
}
.sbi-time-range{
flex-grow: 1;
display: flex;
flex-wrap: wrap;
.str-item{
flex-shrink: 0;
margin-right: 12upx;
max-width: 500upx;
@include flcw(28upx, 52upx, #333);
@include tHide;
}
}
}
.vmm-line{
display: flex;
>view{
font-size: 28upx;
line-height: 52upx;
&:first-child{
flex-shrink: 0;
color: #9a9a9d;
}
&+view{
flex-grow: 1;
>view{
width: 100%;
@include flcw(28upx, 52upx, #333);
@include tHide;
}
}
}
}
.soi-fold-btn{
padding-bottom: 20upx;
margin: 20upx auto 0;
@include ctf(center);
.sfb-txt{
margin-right: 12upx;
flex-grow: 0;
flex-shrink: 0;
@include flcw(24upx, 34upx, #9a9a9d);
}
@include rightArrow;
.sfb-icon{
flex-shrink: 0;
font-family: rightArrow;
font-size: 20upx;
color: #9A9A9D;
&.rotate{
transform: rotateZ(-90deg);
}
}
}
.vvm-total{
margin-top: 16upx;
padding-top: 28upx;
border-top: 1px solid #D8D8D8;
@include ctf(space-between);
>view{
max-width: 50%;
@include tHide;
@include flcw(28upx, 40upx, #333);
}
}
}
</style>

97
src/subpackage/order/components/detail/verify.vue

@ -0,0 +1,97 @@
<script setup>
import { onLoad } from '@dcloudio/uni-app';
import { reactive, ref } from "vue";
import textLine from "./text_line.vue";
onLoad(() => {
});
</script>
<template>
<view class="detail-verify">
<view class="dv-tit">验证信息</view>
<text-line label="使用日期">2020-12-25周五</text-line>
<view class="dv-codes">
<view class="dc-item" :class="{ gray: i === 1 }" v-for="i in 2" :key="i">
<view class="di-status">待使用</view>
<view class="di-bottom">
<view class="db-code">验证码 12234 45455 </view>
<view class="db-txt-btn">查看个人入场码 &#xe695;</view>
</view>
</view>
</view>
<view class="vci-share-bar">
<text class="vsb-add-icon">&#xe60d;</text>
<text class="vv-text">分享给好友领取入场码</text>
<text class="vsb-arrow">&#xe695;</text>
</view>
</view>
</template>
<style lang="scss" scoped>
@include rightArrow;
.detail-verify{
padding: 30upx;
.dv-tit{
@include flcw(28upx, 40upx, #9A9A9D);
}
.dv-codes{
margin-top: 18upx;
.dc-item{
padding: 20upx;
background-color: rgba($color: $mColor, $alpha: .1);
&.gray{
background-color: rgba($color: #9A9A9D, $alpha: .1);
}
&+.dc-item{
margin-top: 12upx;
}
.di-status{
@include flcw(28upx, 40upx, $mColor, 500);
}
.di-bottom{
margin-top: 22upx;
display: flex;
justify-content: space-between;
align-items: baseline;
.db-code{
@include flcw(30upx, 42upx, #1A1A1A);
@include tHide;
}
.db-txt-btn{
flex-shrink: 0;
font-family: rightArrow;
@include flcw(24upx, 34upx, #9A9A9D);
}
}
}
}
.vci-share-bar{
margin-top: 16upx;
padding: 40upx 10upx 20upx;
border-top: 1px solid #D8D8D8;
@include ctf;
@include addFriend;
.vsb-add-icon{
flex-grow: 0;
flex-shrink: 0;
margin-right: 20upx;
font-size: 40upx;
font-family: addFriend;
color: $mColor;
}
.vv-text{
flex-grow: 1;
@include flcw(28upx, 40upx, #333);
}
.vsb-arrow{
flex-grow: 0;
flex-shrink: 0;
margin-left: 20upx;
font-size: 28upx;
font-family: rightArrow;
color: #9a9a9d;
}
}
}
</style>

212
src/subpackage/order/pages/detail.vue

@ -0,0 +1,212 @@
<script setup>
import { onLoad } from '@dcloudio/uni-app';
import { reactive, ref } from "vue";
import textLine from "../components/detail/text_line.vue";
import detailVenueInfo from "../components/detail/venue.vue";
import detailGoods from "../components/detail/goods.vue";
import detailVerify from "../components/detail/verify.vue";
import detailContact from "../components/detail/contact.vue";
onLoad(() => {
});
</script>
<template>
<view class="order-detail">
<view class="od-box od-header">
<view class="oh-stadium">
<image class="os-logo"></image>
<view class="os-name">MJ体育(天空篮球从云店)</view>
<view class="os-status">已核销</view>
</view>
<view class="oh-line">订单编号123456789012</view>
<view class="oh-line">创建时间2019-06-06 12:00:06</view>
</view>
<view class="od-box od-product">
<view class="od-title">产品信息</view>
<text-line label="预定项目:">羽毛球</text-line>
<text-line label="数量:">1</text-line>
<text-line label="类型:">llasd</text-line>
<view class="op-bottom">
<view class="op-val">小计</view>
<view class="op-val">¥300</view>
</view>
</view>
<view class="od-box od-total">
<view class="ot-line">
<view class="ol-val">金额小计</view>
<view class="ol-val">300</view>
</view>
<view class="ot-line">
<view class="ol-val">团购券抵扣</view>
<view class="ol-val">300</view>
</view>
<view class="ot-amount"><text class="oa-txt">合计支付</text>0.00</view>
</view>
<view class="od-box">
<!-- 联系方式/地址 -->
<detail-contact></detail-contact>
</view>
<view class="od-box">
<!-- 验证信息 -->
<detail-verify></detail-verify>
</view>
<view class="od-box">
<!-- 场次信息 -->
<detail-venue-info></detail-venue-info>
</view>
<view class="od-box od-code">
<!-- 二维码 -->
<image class="oc-code-img"></image>
<view class="oc-tip">点击二维码可放大查看</view>
</view>
<view class="od-box od-payment">
<!-- 支付信息 -->
<view class="od-title">支付信息</view>
<text-line label="支付方式:">抖音支付</text-line>
<text-line label="支付时间:">2019年6月18日 10:30:40</text-line>
<text-line label="交易号:">3532463457445848657</text-line>
</view>
<view class="od-box">
<!-- 抖音商品信息 -->
<detail-goods></detail-goods>
</view>
<view class="od-fixed">
<view class="of-refund">申请退款</view>
</view>
</view>
</template>
<style lang="scss" scoped>
.order-detail{
padding: 24upx;
@include isPd(140upx);
.od-box{
background-color: #fff;
border-radius: 20upx;
&+ .od-box{
margin-top: 24upx;
}
}
.od-title{
@include flcw(28upx, 40upx, #9A9A9D);
}
.od-header{
padding: 28upx 28upx 32upx;
.oh-stadium{
margin-bottom: 14upx;
@include ctf;
.os-logo{
flex-shrink: 0;
margin-right: 10upx;
width: 34upx;
height: 34upx;
background: skyblue;
}
.os-name{
flex-grow: 1;
@include flcw(28upx, 40upx, #333, 500);
@include tHide;
}
.os-status{
flex-shrink: 0;
margin-left: 10upx;
max-width: 160upx;
@include tHide;
@include flcw(28upx, 40upx, $mColor);
}
}
.oh-line{
@include flcw(24upx, 34upx, #9A9A9D);
@include tHide;
}
}
.od-code{
padding-top: 26upx;
font-size: 0;
.oc-code-img{
display: block;
margin: 0 auto;
width: 278upx;
height: 278upx;
background: skyblue;
}
.oc-tip{
text-align: center;
@include flcw(24upx, 56upx, #666666);
}
}
.od-payment{
padding: 30upx;
.od-title{
margin-bottom: 20upx;
}
}
.od-total{
padding: 30upx;
.ot-line{
@include ctf(space-between);
.ol-val{
@include flcw(24upx, 60upx, #333);
&:first-child{
margin-right: 20upx;
flex-shrink: 0;
}
&+.ol-val{
@include tHide;
}
}
}
.ot-amount{
margin-top: 30upx;
text-align: right;
@include flcw(28upx, 50upx, #FF873D, 500);
@include tHide;
.oa-txt{
@include flcw(28upx, 50upx, #333333, 400);
}
}
}
.od-product{
padding: 30upx;
.od-title{
margin-bottom: 20upx;
}
.op-bottom{
padding-top: 24upx;
margin-top: 18upx;
border-top: 1px solid #D8D8D8;
@include ctf(space-between);
.op-val{
@include flcw(24upx, 40upx, #333);
&:first-child{
margin-right: 20upx;
flex-shrink: 0;
}
&+.op-val{
@include tHide;
}
}
}
}
.od-fixed{
position: fixed;
left: 0;
bottom: 0;
width: 100%;
padding: 18upx 24upx;
background: #fff;
@include isPd(18upx);
.of-refund{
margin-left: auto;
margin-right: 0;
width: 168upx;
text-align: center;
border-radius: 72upx;
border: 2upx solid $mColor;
@include flcw(28upx, 68upx, $mColor);
}
}
}
</style>

4
vite.config.js

@ -16,7 +16,9 @@ export default defineConfig(({ mode = 'development' }) =>{
uni(), uni(),
], ],
define: { define: {
"__VUE_OPTIONS_API__": false,
// 抖音小程序不支持该参数 __VUE_OPTIONS_API__
// 会导致 [TMA] TypeError: this.$vm.$callCreatedHook is not a function
// "__VUE_OPTIONS_API__": false,
__API__: JSON.stringify(env.VITE_API_BASE), __API__: JSON.stringify(env.VITE_API_BASE),
}, },
// 修复控制台出现 Deprecation Warning: The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0 的问题 // 修复控制台出现 Deprecation Warning: The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0 的问题

Loading…
Cancel
Save