Commit 7684fe96 authored by 陈宗胤(贵阳日报)'s avatar 陈宗胤(贵阳日报)
parents 5f7741ec 1bb578e7
......@@ -7,18 +7,57 @@
:draggable="true"
inactiveIcon="a-controlplatform"
>
<view class="custom-button" @click="go('/pages/ticket/ticket')">
<image class="fab-icon" src="../../static/index/coupon.png"></image>
<text class="fab-text">优惠券</text>
<!-- 助农总入口 -->
<view v-if="position === '0'" class="outer-view">
<view class="custom-button" @click="go('/pages/order/order')">
<image class="fab-icon" src="../../static/index/order.png"></image>
<text class="fab-text">订单</text>
</view>
</view>
<view class="custom-button" @click="go('/pages/order/order')">
<image class="fab-icon" src="../../static/index/order.png"></image>
<text class="fab-text">订单</text>
<!-- 团购 -->
<view v-if="position === '1'" class="outer-view">
<view class="custom-button" @click="go('/pages/ticket/ticket')">
<image class="fab-icon" src="../../static/index/coupon.png"></image>
<text class="fab-text">优惠券</text>
</view>
<view class="custom-button" @click="go('/pages/order/order')">
<image class="fab-icon" src="../../static/index/order.png"></image>
<text class="fab-text">订单</text>
</view>
</view>
<!-- 预售主页 -->
<view v-if="position === '2'" class="outer-view">
<view class="custom-button" @click="go('/pages/order/order')">
<image class="fab-icon" src="../../static/index/order.png"></image>
<text class="fab-text">订单</text>
</view>
<view class="custom-button" @click="go('/pages/assistingAgriculture/cart/cart')">
<image class="fab-icon" src="../../static/index/gwc.png"></image>
<text class="fab-text">购物车</text>
</view>
</view>
<!-- 旅居主页 -->
<view v-if="position === '3'" class="outer-view">
<view class="custom-button" @click="go('/pages/order/order')">
<image class="fab-icon" src="../../static/index/order.png"></image>
<text class="fab-text">订单</text>
</view>
</view>
</wd-fab>
</template>
<script setup>
const props = defineProps({
// 悬浮按钮
position: {
type: String,
default: '1',
},
cartCount: {
type: Number,
default: 0,
},
});
// 前往个人中心
const go = (url) => {
xma.navigateTo({
......@@ -28,6 +67,9 @@ const go = (url) => {
</script>
<style lang="scss" scoped>
.outer-view {
display: flex;
}
.custom-button {
min-width: auto;
box-sizing: border-box;
......
......@@ -40,3 +40,11 @@ export function screeningConditions(data) {
data,
});
}
// 视频
export function streamList(data) {
return request({
url: `/sgyrdd/znprod/tour/streamList`,
method: 'GET',
data,
});
}
......@@ -174,7 +174,10 @@
{
"path": "pages/assistingAgriculture/detail/detail",
"style": {
"navigationBarTitleText": "详情页"
"navigationBarTitleText": "商品详情",
"navigationBarBackgroundColor": "#ffffff",
"navigationStyle": "custom",
"onReachBottomDistance": 50,
}
},
{
......@@ -264,4 +267,4 @@
"globalStyle": {
"navigationStyle": "custom"
}
}
\ No newline at end of file
}
<template>
<div class="route-details">
<Search></Search>
<scroll-view class="container" scroll-y>
<Search :backgroundBox="backgroundBox"></Search>
<scroll-view class="container" scroll-y @scroll="onScroll">
<!-- <img class="back-img" src="/static/assistingAgriculture/assets/left.png" @tap="back" /> -->
<!-- 轮播 -->
<div class="banner">
......@@ -148,7 +148,7 @@
<div class="date-wrap">
<div class="date-title">选择日期</div>
<div class="date-list flex-between">
<div class="list">
<div class="list" style="margin-top: 20rpx">
<div
class="item"
:class="{ active: activePrice === v }"
......@@ -328,9 +328,19 @@ import {
getItinerary,
getStoreInformation,
} from '@/api/assistingAgriculture/route';
import { groupBuyConfirm, groupBuyUpdate } from '@/api/confirmOrder';
import { sgyOrderOrderInfo } from '@/api/assistingAgriculture/shop';
import { groupBuyConfirm, groupBuyUpdate, groupBuyCreate } from '@/api/confirmOrder';
import { getCollect } from '@/api/packageDetail';
/* 监听滑动改变顶部颜色 */
const backgroundBox = ref('');
const onScroll = (e) => {
const { scrollTop } = e.detail;
if (scrollTop > 20) {
backgroundBox.value = '#fff';
} else {
backgroundBox.value = '';
}
};
const swiperList = ref([
'https://registry.npmmirror.com/wot-design-uni-assets/*/files/redpanda.jpg',
]);
......@@ -344,12 +354,13 @@ const firstEvaluation = ref({});
const photoList = ref([]);
// 套餐列表
const mealList = ref([]);
const activeMeal = ref(null);
const activeMeal = ref({});
const orderInfo = ref({});
const onActiveMeal = (item) => {
activeMeal.value = item;
getPriceListFn(item.mealId);
};
// 日历
const priceList = ref([]);
const viewPriceList = ref([]);
......@@ -363,6 +374,41 @@ watch(show, (value) => {
index = Math.min(priceList.value.length - 3, index);
viewPriceList.value = priceList.value.slice(index - 1, index + 3);
});
onShow(() => {
if (outTradeNos.value) {
// 查询订单状态决定是否支付
sgyOrderOrderInfo({ orderNumber: outTradeNos.value }).then((res) => {
switch (res.data.baseOrder.subStatus) {
case '1':
xma.showToast({
title: '支付失败',
icon: 'error',
duration: 1000,
success() {
setTimeout(() => {
xma.redirectTo({
url: `/pages/order/order?status=not_pay`,
});
}, 1500);
},
});
break;
case '2':
xma.redirectTo({
url: `/pages/order/detail?orderNumber=${outTradeNos.value}`,
});
break;
case '3':
xma.redirectTo({
url: `/pages/order/detail?orderNumber=${outTradeNos.value}`,
});
break;
default:
break;
}
});
}
});
const getWeek = (date) => {
const week = ['日', '一', '二', '三', '四', '五', '六'];
return week[new Date(date).getDay()];
......@@ -383,7 +429,7 @@ function jumpPage() {
}
function groupBuyConfirmFn(prodId, skuId) {
return new Promise((resolve, reject) => {
groupBuyConfirm({ prodId, skuId }).then((res) => {
groupBuyConfirm({ prodId, skuId, orderType: 'store' }).then((res) => {
if (res.code === 0) {
orderInfo.value = res.data;
resolve(res.data.shopId);
......@@ -418,33 +464,51 @@ function formatDate(inputDate) {
}
const payNow = async (data) => {
groupBuyConfirmFn(activeMeal.value.prodId, activeMeal.value.skuId).then((res) => {
groupBuyUpdateFnQg().then(() => {});
groupBuyUpdateFnQg().then(() => {
const qgParams = {
id: orderInfo.value.key,
placeOrderWay: 'sgy',
payWayCode: 5,
tradeType: data.selectType,
};
groupBuyCreate(qgParams).then((res) => {
if (res.code === 0) {
openUrl(res.data.result);
} else {
groupBuyConfirmFn(activeMeal.value.prodId, activeMeal.value.skuId);
}
});
});
});
params.value.id = orderInfo.value.key;
params.value.tradeType = data.selectType;
params.value.basketIds = basketIds.value;
const qgParams = {
id: orderInfo.value.key,
placeOrderWay: 'sgy',
payWayCode: 5,
tradeType: data.selectType,
};
// groupBuyCreate(qgParams).then((res) => {
// if (res.code === 0) {
// openUrl(res.data.result);
// } else {
// groupBuyConfirmFn(prodIds.value, skuIds.value);
// }
// });
};
function groupBuyUpdateFnQg(couponUserId = '') {
const outTradeNos = ref(null);
const openUrl = (result) => {
const { paymentUrl, outTradeNo } = result;
outTradeNos.value = outTradeNo;
window.location.href = paymentUrl;
// 设置一个延时器
const start = Date.now();
setTimeout(() => {
const end = Date.now();
if (end - start < 1200) {
// 如果 iframe 加载时间小于 1.2 秒,说明应用没有安装
xma.showToast({
title: '未安装App',
icon: 'error',
});
// 这里可以跳转到应用下载页面
}
}, 1600);
};
function groupBuyUpdateFnQg() {
return new Promise((resolve, reject) => {
groupBuyUpdate({
key: orderInfo.value.key,
receiverTime: formatDate(activePrice.value.priceDay),
receiverTime: activePrice.value.priceDay.replace(' ', '-'),
}).then((res) => {
if (res.code === 0) {
orderInfo.value = res.data;
resolve();
}
});
});
......
......@@ -54,11 +54,23 @@
src="/static/assistingAgriculture/rural/dayTOur.png"
style="width: 32rpx; height: 32rpx"
/>
<img
class="spe-img"
src="/static/assistingAgriculture/rural/img5.png"
style="width: 306rpx; height: 204rpx"
/>
<video
:class="{ 'no-progress-bar': !isFullScreen }"
:show-fullscreen-btn="true"
:show-play-btn="true"
:show-enter-play-btn="true"
class="spe-img1"
id="videoId"
:src="videoList[0].videoUrl"
@error="videoErrorCallback"
@play="play"
@fullscreenchange="handleFullscreenChange"
></video>
<!-- <img-->
<!-- class="spe-img"-->
<!-- src="/static/assistingAgriculture/rural/img5.png"-->
<!-- style="width: 306rpx; height: 204rpx"-->
<!-- />-->
</view>
</view>
<view class="hot-way">
......@@ -177,9 +189,10 @@
</view>
</view>
</view>
<view v-if="!hasMoreData" class="no-more-data">没有更多了</view>
</view>
</view>
<fab />
<fab position="3" />
</view>
</template>
......@@ -189,14 +202,15 @@ import Sort from '../../../components/assistingAgriculture/index/Sort.vue';
import DepartureDate from '../../../components/assistingAgriculture/index/DepartureDate.vue';
import ScenicSpots from '../../../components/assistingAgriculture/index/ScenicSpots.vue';
import Screen from '../../../components/assistingAgriculture/index/Screen.vue';
import { getPopularList, getProdList, getTour } from '@/api/assistingAgriculture/village';
import {
getPopularList,
getProdList,
getTour,
streamList,
} from '@/api/assistingAgriculture/village';
import { getPresaleList } from '@/api/assistingAgriculture/building';
import { onMounted, ref } from 'vue';
import fab from '../../../components/fab/fab.vue';
onMounted(async () => {
getProd();
getPopular();
});
const rotate = ref(false);
const rotate2 = ref(false);
const rotate3 = ref(false);
......@@ -217,7 +231,8 @@ const scenicSpotsRef = ref(null);
const screenRef = ref(null);
const backgroundBox = ref('');
const border = ref('');
const videoList = ref([]);
const isFullScreen = ref(false);
const locationFiltering = (index) => {
switch (index) {
case 0:
......@@ -254,6 +269,12 @@ const locationFiltering = (index) => {
forPeopleList.value = [];
}
};
const videoContext = ref(null);
onMounted(async () => {
getProd();
getPopular();
getStreamList();
});
onPullDownRefresh(() => {
keyword.value = '';
getProd();
......@@ -270,6 +291,37 @@ const getPopular = () => {
popularRouterData.value = res.data.records;
});
};
// 查询视频列表
const getStreamList = () => {
streamList().then((res) => {
res.data.forEach((item) => {
item.videoUrl = import.meta.env.VITE_APP_IMG_URL + '/pig/' + item.videoUrl;
});
videoList.value = res.data;
console.log(videoList.value, 121);
});
};
// 播放时进入全屏
function play(index) {
const videoContext = uni.createVideoContext('videoId');
videoContext.requestFullScreen();
}
// 退出全屏时暂停
function fullscreenchange(e) {
if (!e.detail.fullScreen) {
uni.createVideoContext('videoId').pause();
}
}
function handleFullscreenChange(event) {
isFullScreen.value = !isFullScreen.value;
}
// //退出全屏时停止
// function fullscreenchange (e){
// if(!e.detail.fullScreen){
// videoContext.stop()
// }
// };
// 智能排序
const sortParams = (sortMode) => {
sortType.value = sortMode;
......@@ -287,11 +339,6 @@ const dataParams = (item, datePart) => {
}
};
// 景点
// const placeParams = (item) => {
// console.log(item, 222);
// attractionIdList.value = item.id;
// getProd();
// };
const placeParams = (item) => {
const ids = item.map((i) => i.id);
const arr = ids.join(',');
......@@ -320,16 +367,15 @@ const screenParams = (selectedItems, type) => {
}
};
// 搜索
// 搜索
const toSearch = () => {
xma.navigateTo({ url: '/pages/assistingAgriculture/searchPage/searchPage?prodTypes=10' });
};
const currentPage = ref(1);
// 查询列表
const getProd = (searchKeyword = '') => {
const params = {
current: 1,
size: 10,
current: currentPage.value,
size: 3,
...(sortType.value && { sortType: sortType.value.sortMode }),
...(attractionIdList.value &&
attractionIdList.value.length > 0 &&
......@@ -352,9 +398,25 @@ const getProd = (searchKeyword = '') => {
item.img = import.meta.env.VITE_APP_IMG_URL + item.pic;
item.serveList = item.serviceList.slice(0, 3);
});
cardList.value = res.data.records;
if (currentPage.value === 1) {
cardList.value = res.data.records;
} else {
cardList.value = cardList.value.concat(res.data.records);
}
// 判断是否还有更多数据
if (res.data.records.length < params.size) {
hasMoreData.value = false; // 没有更多数据
}
});
};
// 页面滚动到底部触发加载更多
onReachBottom(() => {
if (hasMoreData.value) {
currentPage.value++;
getProd();
}
});
const hasMoreData = ref(true);
const resetParams = () => {
if (sortRef.value || departureDateRef.value || scenicSpotsRef.value || screenRef.value) {
sortType.value = null;
......@@ -597,6 +659,10 @@ page {
font-weight: normal;
line-height: 30rpx;
color: #666666;
height: 30rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.tag .wd-tag {
margin-right: 10px;
......@@ -611,11 +677,12 @@ page {
color: #0974f5;
}
.price {
position: absolute;
font-size: 28rpx;
font-weight: bold;
line-height: 28rpx;
color: #fa5151;
margin-left: 160rpx;
margin-left: 300rpx;
}
.venue {
display: flex;
......@@ -630,7 +697,7 @@ page {
}
.tag {
margin-top: 10rpx;
width: 400rpx;
width: 600rpx;
}
.detail-score {
margin-top: 30rpx;
......@@ -644,7 +711,7 @@ page {
display: flex;
align-items: center;
padding-left: 20rpx;
margin-left: 80rpx;
margin-left: 60rpx;
text-align: start;
.magnifyingGlass {
width: 26rpx;
......@@ -660,4 +727,31 @@ page {
position: absolute;
margin-top: 140rpx;
}
.wrapper {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
}
.block {
width: 120px;
height: 120px;
background-color: #fff;
}
uni-video {
width: 300rpx;
height: 200rpx;
top: 10rpx;
left: 20rpx;
border-radius: 16rpx;
}
::v-deep .uni-video-controls {
margin: 0;
}
.no-more-data {
text-align: center;
padding: 20rpx;
color: #999;
}
</style>
......@@ -265,6 +265,7 @@ const toStore = (item) => {
background-color: #fff;
padding: 0 15rpx 0 23rpx;
box-sizing: border-box;
z-index: 999;
.left {
.check-box {
font-size: 24rpx;
......
......@@ -3,12 +3,11 @@
<!-- 顶部搜索框-->
<view class="top">
<view class="top">
<Search
background="rgba(255, 255, 255, 0.8)"
backIcon="black"
iconSrc="/static/assistingAgriculture/assets/blackLeft.png"
placeholderText="请输入要搜索的内容"
></Search>
<Search style="z-index: 99; width: 100%" :type="2" backgroundBox="#fff">
<view style="width: 100%; text-align: center; font-size: 36rpx; font-weight: bold">
商品详情
</view>
</Search>
</view>
</view>
<!-- 图片-->
......@@ -56,7 +55,7 @@
<view class="bottom" style="display: flex; flex-direction: row">
<view class="borderClass" @tap="toStore">
<img
src="/static/assistingAgriculture/detail/img7.png"
src="/static/assistingAgriculture/detail/home.png"
style="width: 40rpx; height: 40rpx"
/>
<view class="sort-text">店铺</view>
......@@ -71,7 +70,7 @@
<view class="borderClass" @tap="toCart">
<wd-badge :modelValue="subscript">
<img
src="/static/assistingAgriculture/detail/car.png"
src="/static/assistingAgriculture/detail/carImg.png"
style="width: 40rpx; height: 40rpx"
/>
</wd-badge>
......@@ -97,7 +96,6 @@
</template>
<script setup>
import Search from '../../../components/assistingAgriculture/index/Search.vue';
import { ref } from 'vue';
import { onShow } from '@dcloudio/uni-app';
import {
......@@ -237,18 +235,6 @@ function toSettle() {
page {
background-color: #f3f3f3;
}
.container {
position: relative;
left: 0rpx;
top: -45rpx;
opacity: 1;
}
.top {
width: 750rpx;
height: 128rpx;
margin-top: 40rpx;
background: #ffffff;
}
.nav {
width: 750rpx;
}
......@@ -438,13 +424,13 @@ page {
}
.detail-bottom {
width: 750rpx;
height: 216rpx;
height: 140rpx;
border-radius: 16rpx 16px 0rpx 0rpx;
background: #ffffff;
box-shadow: 0rpx -8rpx 20rpx 0rpx rgba(0, 0, 0, 0.12);
z-index: 10;
position: fixed;
top: 88%;
top: 91%;
}
.sort {
width: 750rpx;
......@@ -470,8 +456,4 @@ page {
margin-top: -90rpx;
margin-left: 400rpx;
}
::v-deep.icon {
width: 56rpx;
height: 56rpx;
}
</style>
......@@ -134,7 +134,7 @@
</view>
</view>
<!-- 购物车悬浮按钮 -->
<view class="cart-floating" @tap="toCart">
<!--<view class="cart-floating" @tap="toCart">
<wd-badge :modelValue="subscript">
<img
class="shop-car"
......@@ -142,8 +142,8 @@
style="width: 40rpx; height: 40rpx"
/>
</wd-badge>
</view>
<fab />
</view>-->
<fab position="2" />
</view>
</template>
......@@ -497,7 +497,7 @@ img.rice {
display: flex;
align-items: center;
padding-left: 20rpx;
margin-left: 80rpx;
margin-left: 60rpx;
text-align: start;
.magnifyingGlass {
width: 26rpx;
......
......@@ -74,7 +74,7 @@
</view>
</view>
</view>
<fab />
<fab position="0" />
</view>
</template>
......@@ -302,7 +302,7 @@ page {
display: flex;
align-items: center;
padding-left: 20rpx;
margin-left: 80rpx;
margin-left: 60rpx;
text-align: start;
.magnifyingGlass {
width: 26rpx;
......
......@@ -128,7 +128,7 @@
</view>
</view>
<!-- 购物车悬浮按钮 -->
<view class="cart-floating" @tap="toCart">
<!--<view class="cart-floating" @tap="toCart">
<wd-badge :modelValue="subscript">
<img
class="shop-car"
......@@ -136,7 +136,8 @@
style="width: 40rpx; height: 40rpx"
/>
</wd-badge>
</view>
</view>-->
<fab position="2" />
</template>
<script setup>
......@@ -150,7 +151,7 @@ import {
getStrictSelection,
} from '../../../api/assistingAgriculture/building';
import { getshoppingCartList } from '@/api/packageDetail';
import fab from '../../../components/fab/fab.vue';
const swiperList = ref([]);
const current = ref(0);
// 轮播图数据
......@@ -526,7 +527,7 @@ page {
display: flex;
align-items: center;
padding-left: 20rpx;
margin-left: 80rpx;
margin-left: 60rpx;
text-align: start;
.magnifyingGlass {
width: 26rpx;
......
......@@ -10,8 +10,8 @@ import { getTokenUser } from '../../api/index';
import { getToken } from '../../utils/auth';
onLoad(async (options) => {
await signIn();
// if (!getToken()) await signIn2();
// await signIn();
if (!getToken()) await signIn2();
const { type } = options;
switch (type) {
case '0':
......
......@@ -139,7 +139,7 @@
:file-list="testFileList[item.areaId]"
image-mode="aspectFill"
:action="action"
@change="handleCategoyChange($event, item.areaId, item.areaName)"
@change="handleCategoyChange($event, item.areaId)"
:limit="1"
class="img1"
:header="headers"
......@@ -167,6 +167,7 @@
v-model="show"
position="bottom"
custom-style="height:500px;overflow:auto;"
safe-area-inset-bottom="true"
@close="handleClose"
>
<view class="hcontent">
......@@ -293,7 +294,6 @@ const beforeRemove = ({ file, fileList, resolve }) => {
*/
const processingImageAddresses = (fileList) => {
const data = fileList.value.map((item) => {
console.log(JSON.parse(item.response));
return JSON.parse(item.response).data.url;
});
return data.join(',');
......@@ -305,28 +305,26 @@ const processingImageAddresses1 = (fileList) => {
return data.join(',');
};
const categoryShopsList = ref({});
// 新增经营资质上传
const testFileList = ref([]);
const handleCategoyChange = ({ fileList: files }, valId, valName) => {
const handleCategoyChange = ({ fileList: files }, valId) => {
testFileList.value[valId] = files;
// 资质上传图片
// 资质清空图片
choosedShopInfo.value.forEach((item) => {
if (item.areaId === valId) {
choosedShopInfo.value.forEach((item) => {
if (item.areaId === valId) {
item.qualifications =
files.length === 0 ? '' : processingImageAddresses1(testFileList.value[valId]);
}
});
item.qualifications =
files.length === 0 ? '' : processingImageAddresses1(testFileList.value[valId]);
}
});
console.log('在删除或上传资质图片时');
console.log(choosedShopInfo.value);
// 修改本地存储的值
try {
xma.setStorageSync('storage_choosedShopInfo', JSON.stringify(choosedShopInfo.value));
} catch (e) {
console.log(e);
}
};
// 店铺logo门头上传
......@@ -493,9 +491,7 @@ const getShopInfoByIdFun = async (data) => {
// 店铺分类:点击左侧团购、助农tab,添加active样式,清空选择的店铺类型数组
const setActiveCategory = (index) => {
console.log(index);
categoryActiveIndex.value = index;
choosedShopArr.value = [];
};
// 店铺分类是否显示
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment