Feat:康养部分接口对接(圣地,食材为对接)

This commit is contained in:
linxi
2024-10-08 18:03:46 +08:00
parent 566ef9de61
commit d8cb8ae6cb
6 changed files with 160 additions and 80 deletions
+37
View File
@@ -0,0 +1,37 @@
import request from "@/utils/request";
/**
* 康养生活-养生圣地分类列表
* @returns
*/
export function getCategory() {
return request.get("/wellness/place/category")
}
/**
* 康养生活-养生圣地列表
* @param {*} params
* @returns
*/
export function getWellnessPlace(params) {
return request.get("/wellness/place", params)
}
/**
* 康养生活-展会列表
* @param {*} params
* @returns
*/
export function getWellnessExhibition(params) {
return request.get("/wellness/exhibition", params)
}
/**
* 康养生活-展会详情
* @param {*} id
* @returns
*/
export function getWellnessExhibitionDetails(id) {
return request.get("/wellness/exhibition/" + id)
}
+22 -21
View File
@@ -1,34 +1,28 @@
<template>
<view class="expo-details">
<view class="video-wrap">
<video id="ky-video" class="ky-video" @error="videoErrorCallback" :show-fullscreen-btn="false" src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/2minute-demo.mp4" autoplay controls></video>
<video id="ky-video" class="ky-video" @error="videoErrorCallback" :show-fullscreen-btn="false" :src="details.video" autoplay controls></video>
</view>
<view class="expo-item">
中国昆明第九届国际大健康暨养生养老产业博览会
{{ details.theme }}
</view>
<view class="details-wrap v12-mt-3">
<view class="v12-font-bold v12-dark-text v12-font-32 v12-mb-3">展会信息</view>
<view class="v12-justify-start v12-mb-3">
<view class="tag v12-success v12-white-text v12-font-20 v12-px-2 v12-py-1 v12-radius-50 v12-nowrap">主题</view>
<view class="v12-font-bold v12-font-28 v12-dark-text v12-ml-3">中国昆明第九届国际大健康暨养生养老产业博览会</view>
<view class="v12-font-bold v12-font-28 v12-dark-text v12-ml-3">{{ details.theme }}</view>
</view>
<view class="v12-justify-start v12-mb-3">
<view class="tag v12-success v12-white-text v12-font-20 v12-px-2 v12-py-1 v12-radius-50 v12-nowrap">内容</view>
<view class="v12-font-24 v12-dark-text v12-ml-3">中国(昆明)国际大健康养生养老产业博览会创办于2017
由云南省民政厅云南省老龄办云南省贸促会共同发
起指导早云南省商务厅云南省投促局以及昆明市政府相
关部门支持下至今已连续成功举办了八届在国内同类型
展会中已具一定规模和影响力被昆明市有关部门综合评估
为5A级博览会
</view>
<view class="v12-font-24 v12-dark-text v12-ml-3">{{ details.content||'' }}</view>
</view>
<view class="v12-justify-start v12-mb-3">
<view class="tag v12-success v12-white-text v12-font-20 v12-px-2 v12-py-1 v12-radius-50 v12-nowrap">时间</view>
<view class="v12-font-bold v12-font-28 v12-dark-text v12-ml-3">2024年11月22日--2024年11月24日</view>
<view class="v12-font-bold v12-font-28 v12-dark-text v12-ml-3">{{ details.startTime }}--{{ details.endTime }}</view>
</view>
<view class="v12-justify-start v12-mb-3">
<view class="tag v12-success v12-white-text v12-font-20 v12-px-2 v12-py-1 v12-radius-50 v12-nowrap">地点</view>
<view class="v12-font-bold v12-font-28 v12-dark-text v12-ml-3">滇池国际会展中心</view>
<view class="v12-font-bold v12-font-28 v12-dark-text v12-ml-3">{{ details.address }}</view>
</view>
</view>
<view class="more-wrap v12-mt-3">
@@ -41,23 +35,18 @@
:key="index"
@click="getOther(item.id)"
class="v12-white v12-dark-text v12-font-bold v12-font-26 v12-mb-3 v12-radius-50 v12-pa-2">
{{ item.label }}
{{ item.name }}
</view>
</view>
</view>
</template>
<script>
import {getWellnessExhibitionDetails, getWellnessExhibition} from '@/api/health'
export default{
data() {
return {
keyword: '',
moreList: [
{id: 1, label: '文山州麻栗坡县东南亚中药材集散综合开发项目'},
{id: 2, label: '文山州麻栗坡县东南亚中药材集散综合开发项目'},
{id: 3, label: '文山州麻栗坡县东南亚中药材集散综合开发项目'},
{id: 4, label: '文山州麻栗坡县东南亚中药材集散综合开发项目'},
{id: 5, label: '文山州麻栗坡县东南亚中药材集散综合开发项目'},
],
moreList: [],
id: '',
details: {}
}
@@ -72,12 +61,24 @@ export default{
},
getDetails(id) {
getWellnessExhibitionDetails(id).then(({data}) => {
this.details = data
this.getOthers()
})
},
getOther(id) {
this.id = id
this.getDetails(this.id)
},
getOthers() {
let params = {
page: 1,
limit: 5
}
getWellnessExhibition(params).then(({data}) => {
this.moreList = data.records.filter(e => e.id != this.id)
})
},
toMore() {
uni.navigateTo({
url: '/pkg_product/views/expoList'
+18 -8
View File
@@ -6,6 +6,7 @@
v-model="keyword"
shape="round"
:showAction="false"
@search="getList"
></u-search>
</view>
<view class="expo-wrap">
@@ -15,30 +16,39 @@
:key="index"
@click="toDetails(item)"
>
{{ item.label }}
{{ item.name }}
</view>
</view>
</view>
</template>
<script>
import { getWellnessExhibition } from '@/api/health'
export default{
data() {
return {
keyword: '',
expoList: [
{id: 1, label: '文山州麻栗坡县东南亚中药材集散综合开发项目'},
{id: 2, label: '文山州麻栗坡县东南亚中药材集散综合开发项目'},
{id: 3, label: '文山州麻栗坡县东南亚中药材集散综合开发项目'},
{id: 4, label: '文山州麻栗坡县东南亚中药材集散综合开发项目'},
{id: 5, label: '文山州麻栗坡县东南亚中药材集散综合开发项目'},
]
expoList: []
}
},
onLoad() {
this.getList()
},
methods: {
toDetails(item) {
uni.navigateTo({
url: '/pkg_product/views/expoDetails?id='+item.id
})
},
getList() {
const params = {
page: 1,
limit: 9999,
keyword: this.keyword
}
getWellnessExhibition(params).then((res) => {
console.log(res);
this.expoList = res.data.records
})
}
}
}
+1 -1
View File
@@ -213,7 +213,7 @@ export default{
width: 100%;
}
.health-foods{
height: 100vh;
min-height: 100vh;
background-color: #FAEED8;
padding: 20rpx ;
}
+31 -24
View File
@@ -68,7 +68,7 @@
</view> -->
<view class="v12-justify-start v12-align-center news-wrap v12-radius-100">
<view class="v12-font-bold v12-primary v12-white-text v12-mr-2 v12-pa-2 v12-radius-100 news-title">最新展会</view>
<view class="v12-font-28 v12-dark-text one-t" @click="toExpo">中国昆明第九届国际大健康暨养生养老博览会</view>
<view class="v12-font-28 v12-dark-text one-t" @click="toExpo(sanctum.id)">{{ sanctum.name }}</view>
</view>
</view>
<view class="body-box">
@@ -103,24 +103,24 @@
<view
v-if="tabIndex === 0"
class="item item-store"
@click="goStore(item.id)"
@click="goStore(item.id, item.cityName)"
>
<image
:src="item.cover + (item.coverType === 2 ? '?vframe/jpg/offset/1' : '')"
:src="item.icon"
class="cover"
mode="scaleToFill"
/>
<view class="name one-t">{{ item.content }}</view>
<view class="price store flex ai-center" style="width: 100%;">
<image
<!-- <view class="name one-t">{{ item.content }}</view> -->
<view class="store flex ai-center" style="width: 100%;">
<!-- <image
:src="item.logo"
class="flex-0"
mode="scaleToFill"
/>
<view class="one-t">{{ item.name }}</view>
/> -->
<view class="one-t v12-font-28" style="color: #033333">{{ item.cityName }}</view>
</view>
</view>
<view
<!-- <view
v-else
class="item"
@click="goGoods(item.id)"
@@ -132,7 +132,7 @@
/>
<view class="name more-t">{{ item.storeName }}</view>
<view class="price">{{ item.price }}</view>
</view>
</view> -->
</view>
</scroll-view>
<view class="tc" v-else>
@@ -158,6 +158,7 @@
// 康养食材
import { fetchCity } from '@/api/wenwan'
import { wellnessFood, wellnessPlaceList } from '@/api/product'
import { getWellnessPlace, getWellnessExhibition } from '@/api/health'
import { getProducts } from '@/api/store'
import { pageListenMixins } from '@/mixins/pageListenMixins'
export default {
@@ -175,7 +176,8 @@ export default {
asideIndex: 0,
dataList: [],
pageKeyId: Object.freeze('wellnessFoodIndex'),
label: ''
label: '',
sanctum: {}
}
},
onLoad() {
@@ -191,10 +193,13 @@ export default {
this.label = this.asideList[this.asideIndex].label
this.searchReq()
})
getWellnessExhibition().then(({data}) => {
this.sanctum = data.records[0]
})
},
toExpo() {
toExpo(id) {
uni.navigateTo({
url: '/pkg_product/views/expoDetails'
url: '/pkg_product/views/expoDetails?id=' + id
})
},
changeTab(index) {
@@ -221,15 +226,17 @@ export default {
provinceId: this.asideList.length > 0 ? this.asideList[this.asideIndex].provinceId : ''
}
if (this.tabIndex === 0) {
wellnessPlaceList(param).then(({data}) => {
this.handleData(data)
})
} else {
param.isWellnessFood = 1
getProducts(param).then(({data}) => {
this.handleData(data)
})
}
// wellnessPlaceList(param).then(({data}) => {
// this.handleData(data)
// })
this.dataList = this.asideList[this.asideIndex].city
}
// else {
// param.isWellnessFood = 1
// getProducts(param).then(({data}) => {
// this.handleData(data)
// })
// }
},
handleData(data) {
const that = this
@@ -258,9 +265,9 @@ export default {
this.label = label
this.searchReq()
},
goStore(id) {
goStore(id, name) {
uni.navigateTo({
url: '/pagesInn/inn/innHome?id=' + id + '&from=wellness'
url: '/pkg_product/views/healthSanctum?city=' + id +'&cityName=' + name
})
},
goGoods(id) {
+51 -26
View File
@@ -5,8 +5,10 @@
<view class="v12-radius-100 v12-grey v12-dark-text v12-px-5 v12-py-2 v12-font-28 v12-font-bold" @click="toFoods">养生食材</view>
</view>
<view class="v12-justify-between v12-align-center v12-mt-5">
<view class="v12-font-28 v12-secondary-dark-text v12-mr-3">昆明市</view>
<view class="flex-1"><u-search :showAction="false"></u-search></view>
<view class="v12-font-28 v12-secondary-dark-text v12-mr-3">{{ cityName }}</view>
<view class="flex-1">
<u-search :showAction="false" v-model="keyword" @search="search"></u-search>
</view>
</view>
<view class="v12-justify-between swap">
<view v-for="(item, index) in traveItems" :key="index" class="trave-item-wrap v12-mr-3 v12-mt-3">
@@ -18,44 +20,37 @@
<view
class="tab v12-font-bold v12-font-34 v12-dark-text "
v-for="(tab, index) in tabs"
@click="handleTab(index)"
@click="handleTab(index,tab)"
:key="index">
<text>{{ tab.label }}</text>
<text>{{ tab.name }}</text>
<view :class="{'slider': index === actived}"></view>
</view>
</view>
<view class="v12-justify-between sanctup-items v12-mt-3">
<view v-for="(item, index) in items" :key="index" class="v12-pa-1">
<view class="img">
<view class="v12-white-text v12-font-weight-300 address">{{ item.adress }}</view>
<image class="img" :src="item.cover"></image>
<view class="v12-white-text v12-font-weight-300 address">{{ item.areaName }}</view>
</view>
<view class="v12-font-bold v12-font-28 more-t">{{ item.title }}</view>
<view class="v12-font-bold v12-font-28 more-t">{{ item.address }}</view>
<view class="v12-justify-start v12-align-center v12-my-2">
<view class="atr"></view>
<view class="v12-font-26 v12-ml-2 v12-dark-text one-t">{{ item.name }}</view>
<view class="atr">
<image class="atr" :src="item.logo"></image>
</view>
<view class="v12-font-26 v12-ml-2 v12-dark-text one-t">{{ item.hotelName }}</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { getCategory,getWellnessPlace } from '@/api/health'
export default {
data() {
return {
tabs: [
{label: '泡温泉', value: 0},
{label: '养生茶馆', value: 1},
{label: '康养生活', value: 2},
{label: '养生食府', value: 3},
],
items: [
{img: '',adress: '昆明', title: '千年矿泉富含硅酸等等24种微量元素', atr: '', name: '末西梓言民宿'},
{img: '',adress: '昆明', title: '千年矿泉富含硅酸等等24种微量元素', atr: '', name: '末西梓言民宿'},
{img: '',adress: '昆明', title: '千年矿泉富含硅酸等等24种微量元素', atr: '', name: '末西梓言民宿'},
{img: '',adress: '昆明', title: '千年矿泉富含硅酸等等24种微量元素', atr: '', name: '末西梓言民宿'},
{img: '',adress: '昆明', title: '千年矿泉富含硅酸等等24种微量元素', atr: '', name: '末西梓言民宿'},
{img: '',adress: '昆明', title: '千年矿泉富含硅酸等等24种微量元素', atr: '', name: '末西梓言民宿'},
],
tabs: [],
items: [],
traveItems: [
{img: '', value: ''},
{img: '', value: ''},
@@ -66,18 +61,49 @@ export default {
{img: '', value: ''},
{img: '', value: ''},
],
actived: 0
actived: 0,
cityId: '',
cityName: '',
categoryId: null,
keyword: ''
}
},
onLoad(opts) {
this.cityId = opts.city
this.cityName = opts.cityName
getCategory().then(res => {
this.tabs = res.data
this.categoryId = res.data[0].id
this.getList()
})
},
methods: {
handleTab(index) {
handleTab(index, tab) {
this.actived = index
this.categoryId = tab.id
this.getList()
},
toFoods() {
uni.navigateTo({
url: '/pkg_product/views/healthFoods'
})
},
getList() {
const params = {
goodCityId: this.cityId,
categoryId: this.categoryId,
keyword: this.keyword,
page: 1,
limit: 9999
}
getWellnessPlace(params).then(res => {
// console.log(res);
this.items = res.data.records
})
},
search() {
this.getList()
}
}
}
</script>
@@ -123,13 +149,12 @@ export default {
.atr{
width: 52rpx;
height: 52rpx;
background: #707070;
border-radius: 50%;
}
.img{
width: 320rpx;
height: 320rpx;
background: #707070;
// background: #707070;
border-radius: 16rpx;
position: relative;
}