Browse Source

22

master
xiaobo 4 months ago
parent
commit
f5b1bbeea3
40 changed files with 1245 additions and 229 deletions
  1. +4
    -3
      App.vue
  2. +105
    -1
      common.scss
  3. +1
    -1
      components/base/tabbar.vue
  4. +9
    -75
      components/cart/CardList.vue
  5. +2
    -1
      components/zhaomu/zhaomu-item.vue
  6. BIN
      doc/address.png
  7. BIN
      doc/c.png
  8. BIN
      doc/cart.png
  9. BIN
      doc/category.png
  10. BIN
      doc/center.png
  11. BIN
      doc/editAddress.png
  12. BIN
      doc/home-s.png
  13. BIN
      doc/home.png
  14. BIN
      doc/order.png
  15. BIN
      doc/productDetail.png
  16. BIN
      doc/productUnit.png
  17. BIN
      doc/purse.png
  18. +37
    -0
      pages.json
  19. +77
    -0
      pages/components/Navbar.vue
  20. +54
    -43
      pages/index/cart.vue
  21. +5
    -4
      pages/index/center.vue
  22. +9
    -1
      pages/index/member.vue
  23. +33
    -0
      pages/mixins/globalMixin.js
  24. +244
    -0
      pages_my/activeList.vue
  25. +109
    -0
      pages_my/collection.vue
  26. +236
    -0
      pages_my/travelList.vue
  27. +1
    -1
      pages_order/huodong-detail.vue
  28. +117
    -0
      pages_order/invoiceIssuance.vue
  29. +83
    -0
      pages_order/invoiceRecords.vue
  30. +1
    -1
      pages_order/lvyou-detail.vue
  31. +19
    -94
      pages_order/orderDetails.vue
  32. +96
    -4
      pages_order/orderEvaluation.vue
  33. BIN
      static/image/cart/bgIcon.png
  34. BIN
      static/image/cart/evaluateIcon.png
  35. BIN
      static/image/cart/selectIcon.png
  36. BIN
      static/image/cart/uncheckedIcon.png
  37. BIN
      static/image/home/img-1.png
  38. BIN
      static/image/icon.png
  39. BIN
      static/image/member/item-img.png
  40. +3
    -0
      uni.scss

+ 4
- 3
App.vue View File

@ -10,11 +10,12 @@
</script>
<style lang="scss">
@import url("common.scss");
@import '/common.scss';
/*每个页面公共css */
body{
background-color: #f7f7f7;
font-size: 30rpx;
background-color: $uni-color-background;
// background-color: '#f40';
font-size: 28rpx;
}
.page{
padding-top: var(--window-top);


+ 105
- 1
common.scss
File diff suppressed because it is too large
View File


+ 1
- 1
components/base/tabbar.vue View File

@ -84,7 +84,7 @@
.tabbar{
position: fixed;
width: 750rpx;
background-color: #1B1713;
background-color: $uni-color-card-background;
display: flex;
justify-content: center;
align-items: center;


+ 9
- 75
components/cart/CardList.vue View File

@ -1,13 +1,13 @@
<template>
<view class="cardList">
<view class="container" v-for="(item, index) in cardListData" :key="index">
<view class="container" @click="toOrderDetails" v-for="(item, index) in cardListData" :key="index">
<view class="head">
<text class="orderTime">下单时间{{item.orderTime}}</text>
<text class="orderStatus" :class="item.state === 'U' ? 'active' : ''">{{item.stateText}}</text>
</view>
<view class="content" :class="['U','S'].includes(item.state) ? 'content_border' : ''">
<view class="content cardStyle_" :class="['U','S'].includes(item.state) ? 'content_border' : ''">
<view class="left">
<img :src="item.imgUrl" alt="">
<image :src="item.imgUrl" alt="">
</view>
<view class="right">
<view class="detailed">
@ -19,7 +19,7 @@
</view>
</view>
<view class="button-sp-area" v-if="Array.isArray(item.btnObj) && item.btnObj.length > 0">
<button @click="skip(val)" :style="{background: val.bgColor, color: val.color}" v-for="(val, i) in item.btnObj" :key="i" class="mini-btn" size="mini">{{val.btnTitle}}</button>
<button @click.stop="skip(val)" :style="{background: val.bgColor, color: val.color}" v-for="(val, i) in item.btnObj" :key="i" class="mini-btn" size="mini">{{val.btnTitle}}</button>
</view>
</view>
</view>
@ -53,9 +53,10 @@ export default {
},
methods: {
skip(val) {
uni.navigateTo({
url:'/pages_order/orderDetails'
})
this.$emit('btnClick', val)
},
toOrderDetails(val) {
this.$emit('toOrderDetails', val)
}
}
};
@ -68,7 +69,7 @@ export default {
margin-top: 31rpx;
padding: 25rpx 0;
border-radius: 20rpx;
background: #1B1713;
background: $uni-color-card-background;
.head {
display: flex;
justify-content: space-between;
@ -86,73 +87,6 @@ export default {
.content_border {
border-bottom: 1px solid #2A2A2A;
}
.content {
display: flex;
padding: 24rpx 35rpx;
.left {
width: 228rpx;
height: 228rpx;
border-radius: 20rpx;
overflow: hidden;
img {
width: 100%;
height: 100%;
}
}
.right {
display: flex;
flex-direction: column;
justify-content: space-between;
flex: 1;
margin-left: 26px;
color: $uni-text-color-grey;
font-size: 24rpx;
.detailed {
.title {
font-size: 32rpx;
color: #fff;
padding-top: 11rpx;
}
.date {
padding: 25rpx 0 19rpx;
display: flex;
align-items: center;
&::before {
content: '';
display: block;
background: url('@/static/image/cart/timeIcon.png') no-repeat;
background-size: 100% 100%;
width: 24rpx;
height: 24rpx;
margin-right: 10rpx;
}
}
.address {
display: flex;
align-items: center;
&::before {
content: '';
display: block;
background: url('@/static/image/cart/addressIcon.png') no-repeat;
background-size: 100% 100%;
width: 22rpx;
height: 26rpx;
margin-right: 10rpx;
}
}
}
.price {
font-size: 28rpx;
color: #fff;
text-align: right;
text {
color: $uni-text-color-grey;
font-size: 25rpx;
padding-right: 10rpx;
}
}
}
}
.button-sp-area {
text-align: right;
padding-top: 20rpx;


+ 2
- 1
components/zhaomu/zhaomu-item.vue View File

@ -3,7 +3,7 @@
<view class="container" v-for="item in 2" :key="item">
<view class="content">
<view class="left">
<image src="@/static/image/member/item-img.png" mode="widthFix"></image>
<image src="https://up.zhuoku.org/22/a4/60/50/fc3bd0b4e656911fccdde4383637c1cd.jpg"></image>
</view>
<view class="right">
<view class="detailed">
@ -94,6 +94,7 @@
image {
width: 228rpx;
height: 228rpx;
}
}


BIN
doc/address.png View File

Before After
Width: 597  |  Height: 1255  |  Size: 149 KiB

BIN
doc/c.png View File

Before After
Width: 586  |  Height: 1275  |  Size: 120 KiB

BIN
doc/cart.png View File

Before After
Width: 604  |  Height: 1279  |  Size: 137 KiB

BIN
doc/category.png View File

Before After
Width: 606  |  Height: 1263  |  Size: 136 KiB

BIN
doc/center.png View File

Before After
Width: 580  |  Height: 1266  |  Size: 140 KiB

BIN
doc/editAddress.png View File

Before After
Width: 601  |  Height: 1276  |  Size: 157 KiB

BIN
doc/home-s.png View File

Before After
Width: 595  |  Height: 1270  |  Size: 176 KiB

BIN
doc/home.png View File

Before After
Width: 586  |  Height: 1276  |  Size: 271 KiB

BIN
doc/order.png View File

Before After
Width: 588  |  Height: 1270  |  Size: 107 KiB

BIN
doc/productDetail.png View File

Before After
Width: 604  |  Height: 1264  |  Size: 177 KiB

BIN
doc/productUnit.png View File

Before After
Width: 619  |  Height: 1254  |  Size: 161 KiB

BIN
doc/purse.png View File

Before After
Width: 615  |  Height: 1267  |  Size: 138 KiB

+ 37
- 0
pages.json View File

@ -77,6 +77,22 @@
"navigationStyle": "custom" ,
"navigationBarTextStyle": "white"
}
},
{
"path": "invoiceIssuance",
"style": {
"enablePullDownRefresh": true,
"navigationStyle": "custom" ,
"navigationBarTextStyle": "white"
}
},
{
"path": "invoiceRecords",
"style": {
"enablePullDownRefresh": true,
"navigationStyle": "custom" ,
"navigationBarTextStyle": "white"
}
}
]
},
@ -123,6 +139,27 @@
"navigationStyle": "custom" ,
"navigationBarTextStyle": "white"
}
},
{
"path": "collection",
"style": {
"navigationStyle": "custom" ,
"navigationBarTextStyle": "white"
}
},
{
"path": "travelList",
"style": {
"navigationStyle": "custom" ,
"navigationBarTextStyle": "white"
}
},
{
"path": "activeList",
"style": {
"navigationStyle": "custom" ,
"navigationBarTextStyle": "white"
}
}
]
}],


+ 77
- 0
pages/components/Navbar.vue View File

@ -0,0 +1,77 @@
<template>
<uv-navbar :leftIconColor="leftIconColor" :autoBack="autoBack" :title="title" :bgColor="bgColor" :leftIconSize="leftIconSize" :height="height" :titleStyle="titleStyle" @leftClick="leftClick"></uv-navbar>
</template>
<script>
export default {
data() {
return {
};
},
props: {
autoBack: {
type: Boolean,
default: false,
required: false
},
title: {
type: String,
default: '',
required: false
},
bgColor: {
type: String,
default: 'transparent',
required: false
},
leftIconSize: {
type: String,
default: '20rpx',
required: false
},
leftIconColor: {
type: String,
default: '',
required: false
},
height: {
type: String,
default: '100rpx',
required: false
},
titleStyle: {
type: Object,
default: {},
required: false
},
autoBack: {
type: Boolean,
default: false,
required: false
},
},
components: {
},
computed: {
},
watch: {
},
created() {
},
mounted() {
},
methods: {
leftClick() {}
}
};
</script>
<style scoped lang="scss">
</style>

+ 54
- 43
pages/index/cart.vue View File

@ -1,18 +1,18 @@
<template>
<view class="cart">
<view class="head-box"></view>
<uv-navbar title="我的订单" bgColor="transparent" leftIconSize="0px" height="100rpx"></uv-navbar>
<view class="content">
<uv-tabs :scrollable="false" @click="tabs" :list="tabList" lineWidth="40" :lineColor="`url(${lineBg}) 100% 100%`"
:activeStyle="{
color: '#FD5C5C',
fontWeight: 'bold',
transform: 'scale(1.05)'
}" :inactiveStyle="{
color: '#999',
transform: 'scale(1)'
}" itemStyle="padding-left: 15px; padding-right: 15px; height: 44px;"></uv-tabs>
<cardList :cardListData="cardListData" />
<Navbar title="我的订单" :bgColor="bgColor" leftIconSize="0px" height="100rpx" :titleStyle="{color:fontColor}" />
<view class="content contentPosition_">
<!-- <uv-sticky offsetTop="200rpx"> -->
<uv-tabs :scrollable="false" @click="tabs" :list="tabList" lineWidth="40"
:lineColor="`url(${lineBg}) 100% 100%`"
:activeStyle="{color: '#FD5C5C', fontWeight: 'bold',transform: 'scale(1.05)'}"
:inactiveStyle="{color: '#999', transform: 'scale(1)'}"
itemStyle="padding-left: 15px; padding-right: 15px; height: 44px;"></uv-tabs>
<!-- </uv-sticky> -->
<!-- <button class="mini-btn" size="mini" @click="travelList">旅行列表</button> -->
<!-- <button class="mini-btn" size="mini" @click="activeList">活动列表</button> -->
<cardList :cardListData="cardListData" @btnClick="btnClick" @toOrderDetails="toOrderDetails" />
</view>
<tabber select="cart" />
</view>
@ -20,12 +20,18 @@
<script>
import tabber from '@/components/base/tabbar.vue'
import cardList from '@/components/cart/cardList.vue'
import cardList from '@/components/cart/CardList.vue'
import Navbar from '@/pages/components/Navbar.vue'
import {
globalMixin
} from '../mixins/globalMixin';
export default {
mixins: [globalMixin],
components: {
tabber,
cardList
cardList,
Navbar
},
data() {
return {
@ -47,8 +53,7 @@
},
],
lineBg: require('@/static/image/cart/tabIcon.png'),
cardListData: [
{
cardListData: [{
imgUrl: 'https://up.zhuoku.org/22/a4/60/50/fc3bd0b4e656911fccdde4383637c1cd.jpg',
orderTime: '2024.08.23 12:00',
state: 'U',
@ -109,37 +114,43 @@
}
},
methods: {
travelList() {
uni.navigateTo({
url: '/pages_my/travelList'
})
},
activeList() {
uni.navigateTo({
url: '/pages_my/activeList'
})
},
tabs(val) {
console.log(val);
},
toOrderDetails(val) {
uni.navigateTo({
url: '/pages_order/orderDetails'
})
},
btnClick({
id
}) { // 0 1 2 3
console.log(id);
if (id === '2') {
uni.navigateTo({
url: '/pages_order/orderEvaluation'
})
return;
}
if (id === '3') {
uni.navigateTo({
url: '/pages_order/invoiceIssuance'
})
return;
}
}
}
}
</script>
<style lang="scss">
page {
background-color: #060504;
}
</style>
<style scoped lang="scss">
.cart {
.head-box {
background: url('@/static/image/nav-bg.png') no-repeat;
background-size: 100% 100%;
width: 100%;
height: 534rpx;
position: absolute;
}
/deep/.uv-navbar__content__title {
color: #fff;
}
.content {
position: absolute;
width: 100%;
color: #fff;
padding-top: calc(var(--status-bar-height) + 110rpx);
}
}
</style>
<style scoped lang="scss"></style>

+ 5
- 4
pages/index/center.vue View File

@ -29,17 +29,17 @@
<view class="order">
<view class="box">
<view class="boxs"
@click="$utils.navigateTo('/pages/index/order?type=1')">
@click="$utils.navigateTo('/pages_my/activeList')">
<image src="@/static/image/center/order-1.png" mode="aspectFill" />
<view>待参加</view>
</view>
<view class="boxs"
@click="$utils.navigateTo('/pages/index/order?type=2')">
@click="$utils.navigateTo('/pages_my/activeList')">
<image src="@/static/image/center/order-2.png" mode="aspectFill" />
<view>已完成</view>
</view>
<view class="boxs"
@click="$utils.navigateTo('/pages/index/order?type=3')">
@click="$utils.navigateTo('/pages_my/activeList')">
<image src="@/static/image/center/order-3.png" mode="aspectFill" />
<view>已取消</view>
</view>
@ -90,7 +90,8 @@
},
{
src:require('@/static/image/center/line-2.png'),
name:'我的收藏'
name:'我的收藏',
url:'/pages_my/collection'
},
{
src:require('@/static/image/center/line-3.png'),


+ 9
- 1
pages/index/member.vue View File

@ -1,7 +1,7 @@
<template>
<view class="page">
<view class="head-box"></view>
<uv-navbar title="招募" leftIcon=" " bgColor="transparent" height="100rpx" :titleStyle="{color:'#fff'}"></uv-navbar>
<uv-navbar title="招募" leftIcon=" " :bgColor="bgColor" height="100rpx" :titleStyle="{color:'#fff'}"></uv-navbar>
<view class="content">
<view class="search-box">
<view class="search-box-r">
@ -58,6 +58,7 @@
},
data() {
return {
bgColor:'transparent',
list: [
'https://cdn.uviewui.com/uview/swiper/swiper3.png',
]
@ -69,6 +70,13 @@
},
onShow() {
},
onPageScroll(e) {
if(e.scrollTop > 50) {
this.bgColor ='#49070c'
}else{
this.bgColor ='transparent'
}
},
methods:{
toRenzheng() {


+ 33
- 0
pages/mixins/globalMixin.js View File

@ -0,0 +1,33 @@
export const globalMixin = {
data() {
return {
bgColor:'transparent',
fontColor:'#fff',
leftIconColor: '#fff'
};
},
computed: {
customStyle() {
return {
height: '88rpx',
color: '#FF4546',
}
}
},
created() {
},
onPageScroll(e) {
if(e.scrollTop > 50) {
this.bgColor ='#49070c'
this.fontColor ="#fff",
this.leftIconColor ="#fff"
}else{
this.bgColor ='transparent'
this.fontColor ="#fff",
this.leftIconColor ="#fff"
}
},
methods: {
}
};

+ 244
- 0
pages_my/activeList.vue View File

@ -0,0 +1,244 @@
<template>
<view class="travelList">
<view class="head-box"></view>
<uv-navbar autoBack title="活动列表" leftIconColor="#fff" :bgColor="bgColor" height="100rpx" :titleStyle="{color:'#fff'}"></uv-navbar>
<view class="content">
<view class="drop">
<uv-drop-down ref="dropDown" text-color="#fff" text-size="30rpx" sign="dropDown_1" text-active-color="#fff"
:extra-icon="{name:'arrow-down-fill',color:'#666',size:'26rpx'}"
:extra-active-icon="{name:'arrow-up-fill',color:'#fff',size:'26rpx'}" :defaultValue="defaultValue"
:custom-style="{padding: '0 30rpx'}" @click="selectMenu">
<uv-drop-down-item name="order" type="2" :label="dropItem('order').label" :value="dropItem('order').value">
</uv-drop-down-item>
<uv-drop-down-item name="place" type="2" :label="dropItem('type').label" :value="dropItem('type').value">
</uv-drop-down-item>
<uv-drop-down-item name="type" type="2" :label="dropItem('type').label" :value="dropItem('type').value">
</uv-drop-down-item>
</uv-drop-down>
<uv-drop-down-popup sign="dropDown_1" :click-overlay-on-close="true" :currentDropItem="currentDropItem"
@clickItem="clickItem" @popupChange="change"></uv-drop-down-popup>
</view>
<view class="info cardStyle_">
<view class="left">
<image src="https://img0.baidu.com/it/u=4274003247,920124130&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1031"
alt="">
</view>
<view class="right">
<view class="detailed">
<view class="title">夏日去撒野旅游计划</view>
<view class="date">2024.10.28 10:00</view>
<view class="address">成都市东丽湖露营地32号</view>
</view>
<view class="data">
<text>¥233.00</text>
<text>11/40</text>
<text class="btn">已开票</text>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import Navbar from '@/pages/components/Navbar.vue'
// import { globalMixin } from '../pages/mixins/globalMixin';
export default {
onPageScroll() {
//
this.$refs.dropDown.init();
},
// mixins: [globalMixin],
// components:{
// Navbar
// },
computed: {
dropItem(name) {
return (name) => {
const result = {};
const find = this.result.find(item => item.name === name);
if (find) {
result.label = find.label;
result.value = find.value;
} else {
result.label = this[name].label;
result.value = this[name].value;
}
return result;
}
},
//
currentDropItem() {
return this[this.activeName];
}
},
data() {
return {
bgColor:'transparent',
// value
defaultValue: [0, 'all', '0'],
//
result: [{
name: 'order',
label: '全部',
value: 'new'
}],
// { name: 'order', label: '', value: 'new' }
activeName: 'order',
order: {
label: '全部',
value: 'all',
activeIndex: 0,
color: '#333',
activeColor: '#FF4546',
child: [{
label: '综合排序',
value: 'all'
}, {
label: '最新发布',
value: 'new'
}, {
label: '低价优先',
value: 'money'
}]
},
type: {
label: '时间',
value: 'all',
activeIndex: 0,
color: '#333',
activeColor: '#FF4546',
child: [{
label: '全部',
value: 'all'
}, {
label: 'PDF',
value: 'pdf'
}, {
label: 'WROD',
value: 'word'
}, {
label: 'PPT',
value: 'ppt'
}]
}
}
},
methods: {
change(e) {
console.log('弹窗打开状态:', e);
},
/**
* 点击每个筛选项回调
* @param {Object} e { name, active, type } = e
*/
selectMenu(e) {
const {
name,
active,
type
} = e;
this.activeName = name;
// type 1 type1
if (type == 1) {
this.clickItem({
name: 'vip_type',
label: 'VIP文档',
value: e.active ? 1 : 0
});
} else {
const find = this.result.find(item => item.name == this.activeName);
if (find) {
const findIndex = this[this.activeName].child.findIndex(item => item.label == find.label && item.value ==
find.value);
this[this.activeName].activeIndex = findIndex;
} else {
this[this.activeName].activeIndex = 0;
}
}
},
/**
* 点击菜单回调处理
* @param {Object} item 选中项 { label,value } = e
*/
clickItem(e) {
// let
let {
label,
value
} = e;
const findIndex = this.result.findIndex(item => item.name == this.activeName);
if (this.defaultValue.indexOf(value) > -1 && this[this.activeName].label) {
label = this[this.activeName].label;
}
//
if (findIndex > -1) {
this.$set(this.result, findIndex, {
name: this.activeName,
label,
value
})
} else {
this.result.push({
name: this.activeName,
label,
value
});
}
this.result = this.result.filter(item => this.defaultValue.indexOf(item.value) == -1);
uni.showModal({
content: `筛选的值:${JSON.stringify(this.result)}`
})
}
}
}
</script>
<style scoped lang="scss">
.head-box {
background: url('@/static/image/nav-bg.png') no-repeat;
background-size: 100% 100%;
width: 100%;
height: 534rpx;
position: absolute;
}
.content {
padding-top: calc(var(--status-bar-height) + 110rpx);
}
/deep/.uv-sticky__content {
.uv-drop-down {
justify-content: normal;
border: 0;
background: transparent;
}
}
.travelList {
margin-bottom: 500rpx;
.content {
.info {
position: relative;
margin: 10rpx 32rpx 36rpx;
;
padding: 35rpx 0 35rpx 24rpx;
border-radius: 26rpx;
.right {
.data {
display: flex;
justify-content: space-between;
align-items: center;
.btn {
background: #381615;
color: $uni-color-primary;
padding: 10rpx 40rpx;
border-radius: 30rpx 0px 0px 30rpx;
}
}
}
}
}
}
</style>

+ 109
- 0
pages_my/collection.vue View File

@ -0,0 +1,109 @@
<template>
<view class="invoiceIssuance">
<view class="head-box"></view>
<Navbar title="订单详情" :autoBack="true" :bgColor="bgColor" leftIconSize="18px" height="100rpx" :leftIconColor="leftIconColor" :titleStyle="{color:fontColor}" />
<view class="content contentPosition_">
<view class="info cardStyle_">
<view class="left">
<image src="https://img0.baidu.com/it/u=4274003247,920124130&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1031" alt="">
</view>
<view class="right">
<view class="detailed">
<view class="title">夏日去撒野旅游计划</view>
<view class="date">2024.10.28 10:00</view>
<view class="address">成都市东丽湖露营地32号</view>
</view>
<view class="data">
<view>12/30</view>
<button class="mini-btn" size="mini">立即报名</button>
</view>
</view>
<i class="icon"></i>
</view>
<view class="info cardStyle_">
<view class="left">
<image src="https://img0.baidu.com/it/u=4274003247,920124130&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1031" alt="">
</view>
<view class="right">
<view class="detailed">
<view class="title">夏日去撒野旅游计划</view>
<view class="date">2024.10.28 10:00</view>
<view class="address">成都市东丽湖露营地32号</view>
</view>
<view class="data">
<view>12/30</view>
<button class="mini-btn" size="mini">立即报名</button>
</view>
</view>
<i class="icon"></i>
</view>
</view>
</view>
</template>
<script>
import Navbar from '@/pages/components/Navbar.vue'
import { globalMixin } from '../pages/mixins/globalMixin';
export default{
mixins: [globalMixin],
components:{
Navbar
},
computed: {
customStyle1() {
return {
height: '30rpx',
color: '#FF4546',
}
}
},
data() {
return {
}
},
methods: {
}
}
</script>
<style scoped lang="scss">
.invoiceIssuance {
margin-bottom: 500rpx;
.content {
.info {
position: relative;
margin: 10rpx 32rpx 36rpx;;
border-radius: 26rpx;
.icon {
position: absolute;
right: 0;
top: 0;
display: block;
width: 66rpx;
height: 56rpx;
background: red;
background: url('@/static/image/icon.png') no-repeat;
background-size: 100% 100%;
}
.right {
.data {
display: flex;
justify-content: space-between;
align-items: center;
.mini-btn {
margin: 0;
background: linear-gradient(to right, #FE5E5E, #E41522);
height: 45rpx;
line-height: 45rpx;
width: 181rpx;
color:#fff;
border-radius: 60rpx;
padding-bottom: 5rpx;
}
}
}
}
}
}
</style>

+ 236
- 0
pages_my/travelList.vue View File

@ -0,0 +1,236 @@
<template>
<view class="travelList">
<view class="head-box"></view>
<Navbar title="旅行列表" :autoBack="true" :bgColor="bgColor" leftIconSize="18px" height="100rpx" :leftIconColor="leftIconColor" :titleStyle="{color:fontColor}" />
<view class="content contentPosition_">
<view class="drop">
<uv-drop-down
ref="dropDown"
text-color="#fff"
text-size="30rpx"
sign="dropDown_1"
text-active-color="#fff"
:extra-icon="{name:'arrow-down-fill',color:'#666',size:'26rpx'}"
:extra-active-icon="{name:'arrow-up-fill',color:'#fff',size:'26rpx'}"
:defaultValue="defaultValue"
:custom-style="{padding: '0 30rpx'}"
@click="selectMenu"
>
<uv-drop-down-item
name="order"
type="2"
:label="dropItem('order').label"
:value="dropItem('order').value">
</uv-drop-down-item>
<uv-drop-down-item
name="type"
type="2"
:label="dropItem('type').label"
:value="dropItem('type').value">
</uv-drop-down-item>
</uv-drop-down>
<uv-drop-down-popup
sign="dropDown_1"
:click-overlay-on-close="true"
:currentDropItem="currentDropItem"
@clickItem="clickItem"
@popupChange="change"
></uv-drop-down-popup>
</view>
<view class="info cardStyle_">
<view class="left">
<image src="https://img0.baidu.com/it/u=4274003247,920124130&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1031" alt="">
</view>
<view class="right">
<view class="detailed">
<view class="title">夏日去撒野旅游计划</view>
<view class="date">2024.10.28 10:00</view>
<view class="address">成都市东丽湖露营地32号</view>
</view>
<view class="data">
<text>¥233.00</text>
<text>11/40</text>
<text class="btn">已开票</text>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import Navbar from '@/pages/components/Navbar.vue'
import { globalMixin } from '../pages/mixins/globalMixin';
export default{
onPageScroll() {
//
this.$refs.dropDown.init();
},
mixins: [globalMixin],
components:{
Navbar
},
computed: {
dropItem(name) {
return (name) => {
const result = {};
const find = this.result.find(item => item.name === name);
if (find) {
result.label = find.label;
result.value = find.value;
} else {
result.label = this[name].label;
result.value = this[name].value;
}
return result;
}
},
//
currentDropItem() {
return this[this.activeName];
}
},
data() {
return {
// value
defaultValue: [0, 'all', '0'],
//
result: [{ name: 'order', label: '全部', value: 'new' }],
// { name: 'order', label: '', value: 'new' }
activeName: 'order',
order: {
label: '全部',
value: 'all',
activeIndex: 0,
color: '#333',
activeColor: '#FF4546',
child: [{
label: '综合排序',
value: 'all'
}, {
label: '最新发布',
value: 'new'
}, {
label: '低价优先',
value: 'money'
}]
},
type: {
label: '时间',
value: 'all',
activeIndex: 0,
color: '#333',
activeColor: '#FF4546',
child: [{
label: '全部',
value: 'all'
}, {
label: 'PDF',
value: 'pdf'
}, {
label: 'WROD',
value: 'word'
}, {
label: 'PPT',
value: 'ppt'
}]
}
}
},
methods: {
change(e) {
console.log('弹窗打开状态:',e);
},
/**
* 点击每个筛选项回调
* @param {Object} e { name, active, type } = e
*/
selectMenu(e) {
const { name, active, type } = e;
this.activeName = name;
// type 1 type1
if (type == 1) {
this.clickItem({
name: 'vip_type',
label: 'VIP文档',
value: e.active ? 1 : 0
});
} else {
const find = this.result.find(item => item.name == this.activeName);
if (find) {
const findIndex = this[this.activeName].child.findIndex(item => item.label == find.label && item.value == find.value);
this[this.activeName].activeIndex = findIndex;
} else {
this[this.activeName].activeIndex = 0;
}
}
},
/**
* 点击菜单回调处理
* @param {Object} item 选中项 { label,value } = e
*/
clickItem(e) {
// let
let { label, value } = e;
const findIndex = this.result.findIndex(item => item.name == this.activeName);
if (this.defaultValue.indexOf(value) > -1 && this[this.activeName].label) {
label = this[this.activeName].label;
}
//
if (findIndex > -1) {
this.$set(this.result, findIndex, {
name: this.activeName,
label,
value
})
} else {
this.result.push({
name: this.activeName,
label,
value
});
}
this.result = this.result.filter(item => this.defaultValue.indexOf(item.value) == -1);
uni.showModal({
content: `筛选的值:${JSON.stringify(this.result)}`
})
}
}
}
</script>
<style scoped lang="scss">
/deep/.uv-sticky__content{
.uv-drop-down {
justify-content: normal;
border: 0;
background: transparent;
}
}
.travelList {
margin-bottom: 500rpx;
.content {
.info {
position: relative;
margin: 10rpx 32rpx 36rpx;;
padding: 35rpx 0 35rpx 24rpx;
border-radius: 26rpx;
.right {
.data {
display: flex;
justify-content: space-between;
align-items: center;
.btn {
background: #381615;
color: $uni-color-primary;
padding: 10rpx 40rpx;
border-radius: 30rpx 0px 0px 30rpx;
}
}
}
}
}
}
</style>

+ 1
- 1
pages_order/huodong-detail.vue View File

@ -5,7 +5,7 @@
<view class="content">
<view class="content-head">
<image class="image-box" src="@/static/image/home/img-1.png" mode=""></image>
<image class="image-box" src="https://cdn.uviewui.com/uview/swiper/swiper3.png" mode=""></image>
<view class="msg-box">
<view class="msg-box-title">泰酷辣-清迈治愈之旅</view>
<view class="msg-box-time">开始时间2024.12.28 10:00</view>


+ 117
- 0
pages_order/invoiceIssuance.vue View File

@ -0,0 +1,117 @@
<template>
<view class="invoiceIssuance">
<view class="head-box"></view>
<Navbar title="订单详情" :autoBack="true" :bgColor="bgColor" leftIconSize="18px" height="100rpx" :leftIconColor="leftIconColor" :titleStyle="{color:fontColor}" />
<view class="content contentPosition_">
<view class="info cardStyle_">
<view class="left">
<image src="https://img0.baidu.com/it/u=4274003247,920124130&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1031" alt="">
</view>
<view class="right">
<view class="detailed">
<view class="title">夏日去撒野旅游计划</view>
<view class="date">2024.10.28 10:00</view>
<view class="address">成都市东丽湖露营地32号</view>
</view>
<view class="price"><text>总计</text>¥800.00</view>
</view>
</view>
<view class="choice">
<uv-radio-group
siz="300"
labelSize="25rpx"
iconSize="25rpx"
v-model="radioValue"
placement="column"
shape="square"
labelColor="#fff"
activeColor="#FF4546"
iconPlacement="right">
<uv-radio name="个人" label="个人"></uv-radio>
<uv-radio name="企业" label="个人"></uv-radio>
</uv-radio-group>
</view>
<view class="iptInfo">
<uv-form-item label="企业名称" labelWidth="180rpx" :customStyle="aa" borderBottom>
<uv-input placeholder="请输入内容" fontSize="29rpx" color="#fff" v-model="enterpriseName" border="none"></uv-input>
</uv-form-item>
<uv-form-item label="企业名称" labelWidth="180rpx" :customStyle="aa" borderBottom>
<uv-input placeholder="请输入内容" fontSize="29rpx" color="#fff" v-model="enterpriseName" border="none"></uv-input>
</uv-form-item>
<uv-form-item label="企业名称" labelWidth="180rpx" :customStyle="aa" borderBottom>
<uv-input placeholder="请输入内容" fontSize="29rpx" color="#fff" v-model="enterpriseName" border="none"></uv-input>
</uv-form-item>
</view>
<view style="padding: 65rpx 35rpx;">
<uv-button @click="toInvoiceRecords" :custom-style="customStyle" type="primary" shape="circle" color="#381615" text="申请"></uv-button>
</view>
</view>
</view>
</template>
<script>
import Navbar from '@/pages/components/Navbar.vue'
import { globalMixin } from '../pages/mixins/globalMixin';
export default{
mixins: [globalMixin],
components:{
Navbar
},
data() {
return {
radioValue: '香蕉',
enterpriseName: '',
aa: {
color: '#f40'
}
}
},
methods: {
toInvoiceRecords() {
uni.navigateTo({
url: '/pages_order/invoiceRecords'
})
}
}
}
</script>
<style scoped lang="scss">
.invoiceIssuance {
margin-bottom: 500rpx;
.content {
.info {
margin: 10rpx 32rpx 0rpx;;
border-radius: 26rpx;
}
.choice {
/deep/.uv-radio-group {
margin: 32px 32rpx 40rpx;
.uv-radio {
color: #fff;
padding: 45rpx 35rpx;
background: $uni-color-card-background;
border-radius: 26rpx;
margin-bottom: 16rpx;
}
.uv-radio__icon-wrap {
width: 32rpx!important;
height: 32rpx!important;
}
}
}
.iptInfo {
background: $uni-color-card-background;
padding: 41rpx 46rpx 60rpx;
margin: 32px 32rpx 40rpx;
border-radius: 26rpx;
/deep/.uv-form-item__body__left__content__label {
color: #fff!important;
font-size: 32rpx;
}
}
}
}
</style>

+ 83
- 0
pages_order/invoiceRecords.vue View File

@ -0,0 +1,83 @@
<template>
<view class='invoiceRecords'>
<view class="head-box"></view>
<Navbar title="开票记录" :autoBack="true" :bgColor="bgColor" leftIconSize="18px" height="100rpx" :leftIconColor="leftIconColor" :titleStyle="{color:fontColor}" />
<view class="content contentPosition_">
<view class="info cardStyle_">
<view class="left">
<image src="https://img0.baidu.com/it/u=4274003247,920124130&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1031" alt="">
</view>
<view class="right">
<view class="detailed">
<view class="title">夏日去撒野旅游计划</view>
<view class="date">2024.10.28 10:00</view>
<view class="address">成都市东丽湖露营地32号</view>
</view>
<view class="data">
<text>标准票</text>
<text>×3</text>
<text class="btn">已开票</text>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import Navbar from '@/pages/components/Navbar.vue'
import { globalMixin } from '../pages/mixins/globalMixin';
export default {
mixins: [globalMixin],
components:{
Navbar
},
data() {
return {
};
},
components: {
},
computed: {
},
watch: {
},
created() {
},
mounted() {
},
methods: {
}
};
</script>
<style scoped lang="scss">
.invoiceRecords {
.info {
margin: 10rpx 32rpx 0rpx;
padding: 35rpx 0 35rpx 24rpx;
border-radius: 26rpx;
.right {
.data {
display: flex;
justify-content: space-between;
.btn {
background: #381615;
color: $uni-color-primary;
padding: 10rpx 40rpx;
border-radius: 30rpx 0px 0px 30rpx;
}
}
}
}
}
</style>

+ 1
- 1
pages_order/lvyou-detail.vue View File

@ -5,7 +5,7 @@
<view class="content">
<view class="content-head">
<image class="image-box" src="@/static/image/home/img-1.png" mode=""></image>
<image class="image-box" src="https://cdn.uviewui.com/uview/swiper/swiper3.png" mode=""></image>
<view class="msg-box">
<view class="msg-box-title">泰酷辣-清迈治愈之旅</view>
<view class="msg-box-time">开始时间2024.12.28 10:00</view>


+ 19
- 94
pages_order/orderDetails.vue
File diff suppressed because it is too large
View File


+ 96
- 4
pages_order/orderEvaluation.vue View File

@ -1,11 +1,103 @@
<template>
<view>
第三代
<view class="orderEvaluation">
<Navbar title="活动评价" :autoBack="true" :bgColor="bgColor" leftIconSize="18px" height="100rpx" :leftIconColor="leftIconColor" :titleStyle="{color:fontColor}" />
<view class="content">
<view class="baseInfo cardBackground_">
<view class="statusBox">
<i></i>
<view class="status">主理人评价</view>
</view>
<view class="info grayBg">
<view class="score">
<image src="@/static/image/cart/selectIcon.png" mode=""></image>
<image src="@/static/image/cart/selectIcon.png" mode=""></image>
<image src="@/static/image/cart/selectIcon.png" mode=""></image>
<image src="@/static/image/cart/selectIcon.png" mode=""></image>
<image src="@/static/image/cart/uncheckedIcon.png" mode=""></image>
</view>
<uv-textarea height="376rpx" :textStyle="{color:fontColor}" border="none" v-model="value" :maxlength="-1" placeholder="请输入内容"></uv-textarea>
</view>
</view>
<view class="baseInfo" style="margin-top: 32rpx;">
<view class="statusBox">
<i></i>
<view class="status">活动评价</view>
</view>
<view class="info">
<view class="score">
<image src="@/static/image/cart/selectIcon.png" mode=""></image>
<image src="@/static/image/cart/selectIcon.png" mode=""></image>
<image src="@/static/image/cart/selectIcon.png" mode=""></image>
<image src="@/static/image/cart/selectIcon.png" mode=""></image>
<image src="@/static/image/cart/uncheckedIcon.png" mode=""></image>
</view>
<uv-textarea height="376rpx" :textStyle="{color:fontColor}" border="none" v-model="value1" :maxlength="-1" placeholder="请输入内容"></uv-textarea>
</view>
</view>
</view>
<view style="padding: 65rpx 35rpx;">
<uv-button :custom-style="customStyle" type="primary" shape="circle" color="#381615" text="活动签到"></uv-button>
</view>
</view>
</template>
<script>
</script>
import Navbar from '@/pages/components/Navbar.vue'
import { globalMixin } from '../pages/mixins/globalMixin';
<style>
export default{
mixins: [globalMixin],
components:{
Navbar
},
data() {
return {
value: '',
value1: ''
}
},
methods: {
}
}
</script>
<style scoped lang="scss">
.orderEvaluation {
margin-top: 40rpx;
.content {
padding: 0 35rpx;
color: #fff;
padding-top: calc(var(--status-bar-height) + 100rpx);
.baseInfo{
.statusBox {
display: flex;
align-items: center;
padding: 33rpx 47rpx 24rpx;
i {
background: url('@/static/image/cart/evaluateIcon.png') no-repeat;
background-size: 100% 100%;
display: block;
width: 33rpx;
height: 29rpx;
margin-right: 15rpx;
}
}
.info {
.score {
image {
width: 30rpx;
height: 30rpx;
margin-right: 30rpx;
margin-bottom: 34rpx;
}
}
/deep/.uv-textarea {
background: #493734;
}
.aa {
color: #fff!important;
}
}
}
}
}
</style>

BIN
static/image/cart/bgIcon.png View File

Before After
Width: 1031  |  Height: 301  |  Size: 194 KiB Width: 1031  |  Height: 301  |  Size: 45 KiB

BIN
static/image/cart/evaluateIcon.png View File

Before After
Width: 50  |  Height: 44  |  Size: 1.0 KiB

BIN
static/image/cart/selectIcon.png View File

Before After
Width: 45  |  Height: 45  |  Size: 2.2 KiB

BIN
static/image/cart/uncheckedIcon.png View File

Before After
Width: 45  |  Height: 45  |  Size: 1.8 KiB

BIN
static/image/home/img-1.png View File

Before After
Width: 1036  |  Height: 819  |  Size: 1.7 MiB

BIN
static/image/icon.png View File

Before After
Width: 99  |  Height: 85  |  Size: 4.9 KiB

BIN
static/image/member/item-img.png View File

Before After
Width: 345  |  Height: 309  |  Size: 227 KiB

+ 3
- 0
uni.scss View File

@ -13,6 +13,9 @@
*/
/* 颜色变量 */
$uni-color: #A3D250;
$uni-color-background: #060504;
$uni-color-card-background: #1B1713;
$uni--bg-color-btn: #381615;
/* 行为相关颜色 */
$uni-color-primary: #FF4546;


Loading…
Cancel
Save