Browse Source

上传跳转预约订单

master
前端-胡立永 6 months ago
parent
commit
2262e025aa
17 changed files with 322 additions and 103 deletions
  1. +8
    -1
      components/tourGuide/locations.vue
  2. +24
    -8
      config.js
  3. +2
    -2
      pages/index/index.vue
  4. +7
    -6
      pages_order/auth/wxLogin.vue
  5. +1
    -1
      pages_order/auth/wxUserInfo.vue
  6. +30
    -8
      pages_order/components/list/cardList.vue
  7. +9
    -15
      pages_order/mine/collect.vue
  8. +7
    -6
      pages_order/order/orderSubscribe.vue
  9. +11
    -12
      pages_order/service/StudyAndPathDetail.vue
  10. +3
    -3
      pages_order/service/StudyFurther.vue
  11. +1
    -1
      pages_order/service/applyRelic.vue
  12. +10
    -12
      pages_order/service/articleDetail.vue
  13. +2
    -2
      pages_order/service/experience.vue
  14. +4
    -2
      pages_order/service/following.vue
  15. +2
    -2
      pages_order/service/heritagePath.vue
  16. +11
    -11
      pages_order/service/reservationDetail.vue
  17. +190
    -11
      pages_order/service/tellList.vue

+ 8
- 1
components/tourGuide/locations.vue View File

@ -66,7 +66,7 @@
</view> </view>
</view> </view>
<view class="list" <view class="list"
v-if="show">
v-if="show && spotGuide.length > 0">
<view class="main" <view class="main"
v-for="(item, index) in spotGuide" v-for="(item, index) in spotGuide"
:key="index"> :key="index">
@ -109,6 +109,13 @@
</view> </view>
</view> </view>
</view> </view>
<uv-empty
v-else
text="该景区没有哦"
textSize="30rpx"
iconSize="200rpx"
icon="list"></uv-empty>
</view> </view>


+ 24
- 8
config.js View File

@ -41,38 +41,54 @@ const defaultConfig = {
dict : { dict : {
course : {//申遗历程 course : {//申遗历程
title : '申遗历程', title : '申遗历程',
api : 'queryArticleById',
}, },
Inheritance : {//遗产概况 Inheritance : {//遗产概况
title : '遗产概况', title : '遗产概况',
api : 'queryArticleById',
}, },
tell : {//遗产讲述 tell : {//遗产讲述
title : '遗产讲述', title : '遗产讲述',
collectType : 0,
subTitle : '讲解现场',
payType : 1,
screen : true,
roleId : 0,
}, },
travel : {//达人同游 travel : {//达人同游
title : '达人同游', title : '达人同游',
collectType : 1,
subTitle : '同游现场',
payType : 2,
showRoleLevel : true,
roleId : 1,
}, },
path : {//遗产路径 path : {//遗产路径
title : '遗产路径', title : '遗产路径',
collectType : 2,
payType : 0,
}, },
follow : {//我要跟拍 follow : {//我要跟拍
title : '我要跟拍', title : '我要跟拍',
collectType : 3,
subTitle : '跟拍现场',
payType : 3,
roleId : 2,
}, },
experience : {//非遗体验 experience : {//非遗体验
title : '非遗体验', title : '非遗体验',
collectType : 4,
payType : 4,
api : 'queryExperienceById',
}, },
Study : {//我要研学 Study : {//我要研学
title : '我要研学', title : '我要研学',
collectType : 5,
payType : 5,
}, },
good : {//文创好物 good : {//文创好物
title : '文创好物', title : '文创好物',
collectType : 6,
}, },
} }
} }


+ 2
- 2
pages/index/index.vue View File

@ -72,12 +72,12 @@
{ {
icon : '/static/image/home/g3.png', icon : '/static/image/home/g3.png',
title : '遗产讲述', title : '遗产讲述',
path : '/pages_order/service/tellList?type=0',
path : '/pages_order/service/tellList?type=tell',
}, },
{ {
icon : '/static/image/home/g4.png', icon : '/static/image/home/g4.png',
title : '达人同游', title : '达人同游',
path : '/pages_order/service/tellList?type=1',
path : '/pages_order/service/tellList?type=travel',
}, },
{ {
icon : '/static/image/home/g5.png', icon : '/static/image/home/g5.png',


+ 7
- 6
pages_order/auth/wxLogin.vue View File

@ -15,9 +15,10 @@
微信授权登录 微信授权登录
</view> </view>
</view> </view>
<!-- <view class="btn b2">
使用短信验证登录
</view> -->
<view class="btn b2"
@click="$utils.redirectTo('/index/index')">
取消登录
</view>
@ -110,7 +111,7 @@
display: block; display: block;
height: 8rpx; height: 8rpx;
width: 210rpx; width: 210rpx;
background: linear-gradient(to right,$uni-color, #fff);
background: linear-gradient(to right, $uni-color, #fff);
} }
} }
.btn{ .btn{
@ -132,8 +133,8 @@
} }
} }
.b2{ .b2{
background-color: #3c69f122;
color: #3c69f1;
background-color: rgba($uni-color, 0.2);
color: $uni-color;
} }
.mt{ .mt{
margin-top: 200rpx; margin-top: 200rpx;


+ 1
- 1
pages_order/auth/wxUserInfo.vue View File

@ -76,7 +76,7 @@
self.$api('updateInfo', self.userInfo, res => { self.$api('updateInfo', self.userInfo, res => {
if (res.code == 200) { if (res.code == 200) {
uni.navigateTo({
uni.redirectTo({
url:'/pages/index/index' url:'/pages/index/index'
}) })
} }


+ 30
- 8
pages_order/components/list/cardList.vue View File

@ -1,6 +1,6 @@
<template> <template>
<view> <view>
<view class="card"
<view class="card"
@click="toUrl(type, item)" @click="toUrl(type, item)"
v-for="(item, index) in list" :key="index"> v-for="(item, index) in list" :key="index">
<view class="card-img"> <view class="card-img">
@ -15,8 +15,8 @@
:src="`../../static/tell/goldMedal${item.roleLevel}.png`"></image> :src="`../../static/tell/goldMedal${item.roleLevel}.png`"></image>
</view> </view>
<view class="card-content-tag" <view class="card-content-tag"
v-if="item.preTime">
{{ item.preTime || '提前一周预约' }}
v-if="item.adPre">
{{ item.adPre }}
</view> </view>
<view class="tips text-ellipsis-2" <view class="tips text-ellipsis-2"
v-if="item.preInfo"> v-if="item.preInfo">
@ -34,6 +34,13 @@
</view> </view>
</view> </view>
</view> </view>
<uv-empty
v-if="total == 0"
text="空空如也"
textSize="30rpx"
iconSize="200rpx"
icon="list"></uv-empty>
</view> </view>
</template> </template>
@ -41,7 +48,10 @@
export default { export default {
props : { props : {
type : { type : {
default : 0
default : ''
},
dict : {
default : {}
}, },
height : { height : {
default : 'auto' default : 'auto'
@ -49,6 +59,9 @@
showRoleLevel : { showRoleLevel : {
default : false, default : false,
}, },
result : {
default : []
}
}, },
data() { data() {
return { return {
@ -64,10 +77,19 @@
// 0-1-2- // 0-1-2-
getList(){ getList(){
this.queryParams.pageNo = 1 this.queryParams.pageNo = 1
this.$api('queryRoleInfoList', {
let queryParams = {
...this.queryParams, ...this.queryParams,
roleId : this.type,
}, res => {
roleId : this.dict.roleId,
}
console.log(this.result);
this.result.forEach(n => {
queryParams[n.name] = n.value
})
this.$api('queryRoleInfoList', queryParams, res => {
uni.stopPullDownRefresh() uni.stopPullDownRefresh()
if(res.code == 200){ if(res.code == 200){
this.list = res.result.records this.list = res.result.records
@ -88,7 +110,7 @@
}, },
toPayUrl(item){ toPayUrl(item){
uni.navigateTo({ uni.navigateTo({
url: `/pages_order/order/orderSubscribe?payType=${parseInt(this.type) + 1}&id=${item.id}`
url: `/pages_order/order/orderSubscribe?type=${this.type}&id=${item.id}`
}) })
}, },
} }


+ 9
- 15
pages_order/mine/collect.vue View File

@ -87,33 +87,27 @@
// }, // },
{ {
name: '遗产讲述', name: '遗产讲述',
toUrlType : 0,
toPayUrlType : 1,
type : 'tell',
}, },
{ {
name: '达人同游', name: '达人同游',
toUrlType : 1,
toPayUrlType : 2,
type : 'travel',
}, },
{ {
name: '遗产路径', name: '遗产路径',
toUrlType : 0,
toPayUrlType : 0,
type : 'path',
}, },
{ {
name: '我要跟拍', name: '我要跟拍',
toUrlType : 2,
toPayUrlType : 3,
type : 'follow',
}, },
{ {
name: '非遗体验', name: '非遗体验',
toUrlType : 2,
toPayUrlType : 4,
type : 'experience',
}, },
{ {
name: '我要研学', name: '我要研学',
toUrlType : 1,
toPayUrlType : 5,
type : 'Study',
}, },
{ {
name: '文创好物', name: '文创好物',
@ -149,7 +143,7 @@
this.getData() this.getData()
}, },
toUrl(item){ toUrl(item){
let type = this.tabs[item.collectionType].toUrlType
let type = this.tabs[item.collectionType].type
if([0, 1, 3].includes(item.collectionType)){ if([0, 1, 3].includes(item.collectionType)){
// //
uni.navigateTo({ uni.navigateTo({
@ -206,9 +200,9 @@
}) })
}, },
toPayUrl(item){ toPayUrl(item){
let type = this.tabs[item.collectionType].toPayUrlType
let type = this.tabs[item.collectionType].type
uni.navigateTo({ uni.navigateTo({
url: `/pages_order/order/orderSubscribe?payType=${type}&id=` + item.id
url: `/pages_order/order/orderSubscribe?type=${type}&id=` + item.id
}) })
}, },
} }


+ 7
- 6
pages_order/order/orderSubscribe.vue View File

@ -4,7 +4,7 @@
<view class="box"> <view class="box">
<view class="info"> <view class="info">
<view class="title"> <view class="title">
{{ title }}
{{ dict.title }}
</view> </view>
<view class="tips"> <view class="tips">
项目/负责人{{ detailTitle }} 项目/负责人{{ detailTitle }}
@ -155,7 +155,8 @@
name: '我要研学' name: '我要研学'
}, },
], ],
title : '',
type: '',
dict : {},
form : { form : {
name : '', name : '',
phone : '', phone : '',
@ -164,7 +165,6 @@
selectDate : this.$dayjs().format('YYYY-MM-DD'), selectDate : this.$dayjs().format('YYYY-MM-DD'),
timeColumns : [], timeColumns : [],
id : 0, id : 0,
payType : 0,
detail : {}, detail : {},
//(0- 1- 2- 3- 4- 5-) //(0- 1- 2- 3- 4- 5-)
// 5- // 5-
@ -191,9 +191,10 @@
} }
}, },
onLoad(args) { onLoad(args) {
this.payType = args.payType
this.title = this.tabs[args.payType].name
this.id = args.id this.id = args.id
this.type = args.type
this.dict = this.$config.dict[args.type]
}, },
onShow() { onShow() {
this.getData() this.getData()
@ -203,7 +204,7 @@
methods: { methods: {
// //
getData(){ getData(){
this.$api(this.api[this.payType], {
this.$api(this.api[this.dict.payType], {
roleInfoId : this.id, roleInfoId : this.id,
amusementId : this.id, amusementId : this.id,
experienceId : this.id, experienceId : this.id,


+ 11
- 12
pages_order/service/StudyAndPathDetail.vue View File

@ -1,7 +1,7 @@
<template> <template>
<!-- 我要研学详情 type:1 遗产路径详情 type:0 --> <!-- 我要研学详情 type:1 遗产路径详情 type:0 -->
<view class="page"> <view class="page">
<navbar :title="titles[type]" leftClick @leftClick="$utils.navigateBack" />
<navbar :title="dict.title" leftClick @leftClick="$utils.navigateBack" />
<view class="image"> <view class="image">
<!-- <image src="https://img-s-msn-com.akamaized.net/tenant/amp/entityid/BB1msKSi.img" mode="aspectFill"></image> --> <!-- <image src="https://img-s-msn-com.akamaized.net/tenant/amp/entityid/BB1msKSi.img" mode="aspectFill"></image> -->
@ -47,9 +47,9 @@
<StudyAndPathDetailSubmit <StudyAndPathDetailSubmit
:detail="detail" :detail="detail"
@getData="getData" @getData="getData"
@submit="toPayUrl(detail, payType[type])"
:isPay="detail.isPay == '1' || type == 1"
:collectType="collectType[type]"/>
@submit="toPayUrl(detail, type)"
:isPay="detail.isPay == '1'"
:collectType="dict.collectType"/>
</view> </view>
</template> </template>
@ -61,10 +61,7 @@
}, },
data() { data() {
return { return {
titles: ['遗产路径', '我要研学'],
collectType : [2, 5],
payType : [0, 5],
type: 0,
type: '',
tabs: [ tabs: [
{ {
name: '关于行程' name: '关于行程'
@ -80,18 +77,20 @@
detail : {}, detail : {},
contentKey : ['amusementRoute', 'amusementAttention', 'amusementStatement'], contentKey : ['amusementRoute', 'amusementAttention', 'amusementStatement'],
content : '', content : '',
dict : {},
} }
}, },
onLoad(args) { onLoad(args) {
this.type = args.type || 0
this.type = args.type || ''
this.id = args.id this.id = args.id
this.dict = this.$config.dict[args.type]
}, },
onShow() { onShow() {
this.getData() this.getData()
}, },
onShareAppMessage(res) { onShareAppMessage(res) {
return { return {
title: this.titles[this.type],
title: this.dict.title,
desc: this.detail.amusementTitle, desc: this.detail.amusementTitle,
path: '/pages_order/service/StudyAndPathDetail?id=' + this.id path: '/pages_order/service/StudyAndPathDetail?id=' + this.id
} }
@ -113,9 +112,9 @@
} }
}) })
}, },
toPayUrl(item, payType){
toPayUrl(item, type){
uni.navigateTo({ uni.navigateTo({
url: `/pages_order/order/orderSubscribe?payType=${payType}&id=${item.id}`
url: `/pages_order/order/orderSubscribe?type=${type}&id=${item.id}`
}) })
}, },
} }


+ 3
- 3
pages_order/service/StudyFurther.vue View File

@ -17,7 +17,7 @@
<view class="list"> <view class="list">
<view class="item" <view class="item"
@click="$utils.navigateTo('/pages_order/service/StudyAndPathDetail?type=1&id=' + item.id)"
@click="$utils.navigateTo('/pages_order/service/StudyAndPathDetail?type=Study&id=' + item.id)"
v-for="(item,index) in list" v-for="(item,index) in list"
:key="index"> :key="index">
<view class="image"> <view class="image">
@ -61,8 +61,8 @@
setPath(i){ setPath(i){
this.getData() this.getData()
}, },
getDataThen(result){
this.list.forEach(n => n.amusementImage =
getDataThen(list){
list.forEach(n => n.amusementImage =
n.amusementImage ? n.amusementImage ?
n.amusementImage.split(',') : []) n.amusementImage.split(',') : [])
}, },


+ 1
- 1
pages_order/service/applyRelic.vue View File

@ -110,7 +110,7 @@
}, },
toUrl(item){ toUrl(item){
console.log(item); console.log(item);
this.$utils.navigateTo(`/pages_order/service/articleDetail?id=${item.id}&type=1`)
this.$utils.navigateTo(`/pages_order/service/articleDetail?id=${item.id}&type=course`)
}, },
selectMiddle(e){ selectMiddle(e){
console.log(e); console.log(e);


+ 10
- 12
pages_order/service/articleDetail.vue View File

@ -1,18 +1,18 @@
<template> <template>
<!-- 0文化遗产详情1申遗历程详情2非遗体验详情 三合一 --> <!-- 0文化遗产详情1申遗历程详情2非遗体验详情 三合一 -->
<view class="page"> <view class="page">
<navbar :title="titles[type]" leftClick @leftClick="$utils.navigateBack" />
<navbar :title="dict.title" leftClick @leftClick="$utils.navigateBack" />
<uv-parse :content="detail.articleContent || detail.experienceDetail"></uv-parse> <uv-parse :content="detail.articleContent || detail.experienceDetail"></uv-parse>
<StudyAndPathDetailSubmit <StudyAndPathDetailSubmit
article article
submiitTitle="线上预约" submiitTitle="线上预约"
v-if="type == 2"
v-if="type == 'experience'"
:detail="detail" :detail="detail"
@getData="queryArticleById" @getData="queryArticleById"
@submit="toPayUrl(detail, payType[type])"
:collectType="collectType[type]"
@submit="toPayUrl(detail, type)"
:collectType="dict.collectType"
/> />
</view> </view>
</template> </template>
@ -25,18 +25,16 @@
}, },
data() { data() {
return { return {
titles: ['文化遗产', '申遗历程', '非遗体验'],
collectType: [0, 0, 4],
payType : [0, 0, 4],
detail : {}, detail : {},
id : 0, id : 0,
type : 0,
apis : ['queryArticleById', 'queryArticleById', 'queryExperienceById'],
type : '',
dict : {},
} }
}, },
onLoad(args) { onLoad(args) {
this.id = args.id this.id = args.id
this.type = args.type this.type = args.type
this.dict = this.$config.dict[args.type]
}, },
onShow() { onShow() {
this.queryArticleById() this.queryArticleById()
@ -46,7 +44,7 @@
}, },
methods: { methods: {
queryArticleById(){ queryArticleById(){
this.$api(this.apis[this.type], {
this.$api(this.dict.api, {
articleId : this.id, articleId : this.id,
experienceId : this.id, experienceId : this.id,
}, res => { }, res => {
@ -56,9 +54,9 @@
} }
}) })
}, },
toPayUrl(item, payType){
toPayUrl(item, dictKey){
uni.navigateTo({ uni.navigateTo({
url: `/pages_order/order/orderSubscribe?payType=${payType}&id=${item.id}`
url: `/pages_order/order/orderSubscribe?type=${dictKey}&id=${item.id}`
}) })
}, },
} }


+ 2
- 2
pages_order/service/experience.vue View File

@ -52,11 +52,11 @@
}, },
methods: { methods: {
toUrl(item){ toUrl(item){
this.$utils.navigateTo(`/pages_order/service/articleDetail?id=${item.id}&type=2`)
this.$utils.navigateTo(`/pages_order/service/articleDetail?id=${item.id}&type=experience`)
}, },
toPayUrl(item, payType){ toPayUrl(item, payType){
uni.navigateTo({ uni.navigateTo({
url: `/pages_order/order/orderSubscribe?payType=4&id=${item.id}`
url: `/pages_order/order/orderSubscribe?type=experience&id=${item.id}`
}) })
}, },
} }


+ 4
- 2
pages_order/service/following.vue View File

@ -9,12 +9,13 @@
height="420rpx" height="420rpx"
keyName="imageContent"></uv-swiper> keyName="imageContent"></uv-swiper>
</view> </view>
<cardList :type="2" ref="cardList"/>
<cardList :type="type" :dict="dict" ref="cardList"/>
<tabber/> <tabber/>
</view> </view>
</template> </template>
<script> <script>
let type = 'follow'
import { mapState } from 'vuex' import { mapState } from 'vuex'
import cardList from '../components/list/cardList.vue' import cardList from '../components/list/cardList.vue'
export default { export default {
@ -23,7 +24,8 @@
}, },
data() { data() {
return { return {
type,
dict : this.$config.dict[type]
} }
}, },
computed : { computed : {


+ 2
- 2
pages_order/service/heritagePath.vue View File

@ -15,7 +15,7 @@
<view @click="setPath(0)" :class="{ fontColor: queryParams.isPay == 0}">推荐路径</view> <view @click="setPath(0)" :class="{ fontColor: queryParams.isPay == 0}">推荐路径</view>
</view> </view>
<view class="heritagePath-card" v-for="(item,index) in list" <view class="heritagePath-card" v-for="(item,index) in list"
@click="$utils.navigateTo('/pages_order/service/StudyAndPathDetail?type=0&id=' + item.id)"
@click="$utils.navigateTo('/pages_order/service/StudyAndPathDetail?type=path&id=' + item.id)"
:key="index"> :key="index">
<view class="heritagePath-card-box"> <view class="heritagePath-card-box">
<view class="heritagePath-card-pic"> <view class="heritagePath-card-pic">
@ -86,7 +86,7 @@
}, },
toPayUrl(item){ toPayUrl(item){
uni.navigateTo({ uni.navigateTo({
url: `/pages_order/order/orderSubscribe?payType=0&id=${item.id}`
url: `/pages_order/order/orderSubscribe?type=path&id=${item.id}`
}) })
}, },
} }


+ 11
- 11
pages_order/service/reservationDetail.vue View File

@ -1,7 +1,7 @@
<template> <template>
<!-- '遗产讲述', '达人同游' 我要跟拍 的共同详情页面 --> <!-- '遗产讲述', '达人同游' 我要跟拍 的共同详情页面 -->
<view class="page"> <view class="page">
<navbar :title="titles[type]" leftClick @leftClick="$utils.navigateBack" />
<navbar :title="dict.title" leftClick @leftClick="$utils.navigateBack" />
<view class="info"> <view class="info">
<!-- 上面 --> <!-- 上面 -->
@ -53,7 +53,8 @@
<view> <view>
<image src="../static/reservationDetail/1.png" mode=""></image> <image src="../static/reservationDetail/1.png" mode=""></image>
<view> <view>
{{ $dayjs(detail.preTime).format('YYYY-MM-DD') }}
<!-- {{ $dayjs(detail.preTime).format('YYYY-MM-DD') }} -->
{{ detail.openTime }}
</view> </view>
</view> </view>
<view> <view>
@ -110,7 +111,7 @@
<view class="video-list"> <view class="video-list">
<view class="title"> <view class="title">
{{ video_list_titles[type] }}
{{ dict.subTitle }}
</view> </view>
</view> </view>
<videoList ref="videoList" :roleId="id"/> <videoList ref="videoList" :roleId="id"/>
@ -133,17 +134,16 @@
}, },
data() { data() {
return { return {
titles: ['遗产讲述', '达人同游', '我要跟拍'],
video_list_titles: ['讲解现场', '同游现场', '跟拍现场'],
collectType : [0, 1, 3],
type: 0,
type: '',
id : 0, id : 0,
dict : {},
detail : {}, detail : {},
} }
}, },
onLoad(args) { onLoad(args) {
this.type = args.type this.type = args.type
this.id = args.id this.id = args.id
this.dict = this.$config.dict[args.type]
}, },
onShow() { onShow() {
this.$nextTick(() => { this.$nextTick(() => {
@ -161,7 +161,7 @@
}, },
onShareAppMessage(res) { onShareAppMessage(res) {
return { return {
title: this.titles[this.type],
title: this.dict.title,
desc: this.detail.roleName, desc: this.detail.roleName,
path: '/pages_order/service/reservationDetail?id=' + this.id path: '/pages_order/service/reservationDetail?id=' + this.id
} }
@ -171,7 +171,7 @@
addCollection(){ addCollection(){
this.$api('addCollection', { this.$api('addCollection', {
itemId : this.detail.id, itemId : this.detail.id,
collectionType : this.collectType[this.type],
collectionType : this.dict.collectType,
}, res => { }, res => {
if(res.code == 200){ if(res.code == 200){
this.getData() this.getData()
@ -195,7 +195,7 @@
}, },
toUrl(detail, type){ toUrl(detail, type){
uni.navigateTo({ uni.navigateTo({
url: `/pages_order/order/orderSubscribe?id=${detail.id}&payType=${parseInt(type) + 1}`
url: `/pages_order/order/orderSubscribe?id=${detail.id}&type=${this.type}`
}) })
}, },
} }
@ -250,7 +250,7 @@
box-shadow: 0 0 10rpx 10rpx #00000010; box-shadow: 0 0 10rpx 10rpx #00000010;
border-radius: 20rpx; border-radius: 20rpx;
height: 180rpx; height: 180rpx;
width: 180rpx;
width: 230rpx;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;


+ 190
- 11
pages_order/service/tellList.vue View File

@ -1,39 +1,147 @@
<template> <template>
<!-- 达人和讲述 --> <!-- 达人和讲述 -->
<view class="tell"> <view class="tell">
<navbar :title="titles[type]" leftClick @leftClick="$utils.navigateBack" />
<navbar :title="dict.title" leftClick @leftClick="$utils.navigateBack" />
<view class="tell-top" v-if="type == 0 ">
<view>级别</view>
<view>遗产点</view>
<view class="tell-top" v-if="dict.screen">
<!-- <view>级别</view>
<view>遗产点</view> -->
<uv-drop-down ref="dropDown" sign="dropDown_1" text-active-color="#B12026"
:extra-icon="{name:'arrow-down-fill',color:'#666',size:'26rpx'}"
:extra-active-icon="{name:'arrow-up-fill',color:'#B12026',size:'26rpx'}"
:defaultValue="defaultValue"
:custom-style="{padding: '0 auto'}"
@click="selectMenu">
<uv-drop-down-item name="level" type="2"
:label="dropItem('level').label"
:value="dropItem('level').value">
</uv-drop-down-item>
<uv-drop-down-item name="spot" type="2"
:label="dropItem('spot').label"
:value="dropItem('spot').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>
<cardList :type="type" ref="cardList" :showRoleLevel="type == 1"/>
<tabber/>
<cardList :type="type" :result="result" :dict="dict" ref="cardList" :showRoleLevel="dict.showRoleLevel" />
<tabber />
</view> </view>
</template> </template>
<script> <script>
import cardList from '../components/list/cardList.vue' import cardList from '../components/list/cardList.vue'
import { mapState } from 'vuex'
export default { export default {
components: { components: {
cardList cardList
}, },
data() { data() {
return { return {
titles: ['遗产讲述', '达人同游'],
type: 0,
type: '',
dict: {},
// value
defaultValue: [0, 'all'],
//
result: [],
activeName: 'level',
level: {
label: '级别',
value: 0,
activeIndex: 0,
color: '#333',
activeColor: '#B12026',
child: [
{
label: '全部',
value: 0,
},
{
label: '金牌讲解员',
value: 1
},
{
label: '专业讲解员',
value: 2
},
]
},
spot: {
label: '遗产点',
value: 'all',
activeIndex: 0,
color: '#333',
activeColor: '#B12026',
child: [
{
label: '全部',
value: 'all'
},
]
},
} }
}, },
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];
},
...mapState(['spotList']),
},
onLoad(args) { onLoad(args) {
this.type = args.type || 0
this.type = args.type
this.dict = this.$config.dict[args.type]
}, },
onShow() { onShow() {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.cardList.getList() this.$refs.cardList.getList()
}) })
let list = this.spotList
.filter(n => n.categoryId == 0)
.map(n => {
return {
label : n.spotName,
value : n.id
}
})
//
this.spot.child = [
{
label: '全部',
value: 'all'
},
...list
]
}, },
onPullDownRefresh(){
onPullDownRefresh() {
this.$refs.cardList.getList() this.$refs.cardList.getList()
}, },
// //
@ -41,7 +149,74 @@
this.$refs.cardList.loadMoreList() this.$refs.cardList.loadMoreList()
}, },
methods: { methods: {
change(e) {
},
/**
* 点击每个筛选项回调
* @param {Object} e { name, active, type } = e
*/
selectMenu(e) {
const {
name,
active,
type
} = e;
this.activeName = name;
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)}`
// })
this.$nextTick(() => {
this.$refs.cardList.getList()
})
}
} }
} }
</script> </script>
@ -49,6 +224,10 @@
<style scoped lang="scss"> <style scoped lang="scss">
.tell { .tell {
/deep/ .uv-drop-down{
justify-content: space-around;
width: 750rpx;
}
.tell-top { .tell-top {
display: flex; display: flex;
justify-content: left; justify-content: left;


Loading…
Cancel
Save