| @ -0,0 +1,242 @@ | |||
| <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="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 { | |||
| // 表示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 的需要特殊处理:type不等于1可以忽略 | |||
| 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> | |||
| @ -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> | |||
| @ -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 的需要特殊处理:type不等于1可以忽略 | |||
| 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> | |||