上传代码

This commit is contained in:
2025-08-18 14:20:34 +08:00
commit 527fd07910
2408 changed files with 427370 additions and 0 deletions

View File

@ -0,0 +1,39 @@
.title1 {
width: 100%;
height: 60px;
font-size: 20px;
color: #000;
padding-left: 5px;
line-height: 60px;
}
.message1 {
width: 80%;
height: 200rpx;
margin: 0 auto;
}
.messageItem1 {
font-size: 18px;
padding-bottom: 10rpx;
}
.aboutImg1 {
width: 90%;
height: 100vh;
margin: 0 auto;
}
.imgLeft1 {
float: left;
width: 48%;
height: 100vh;
}
.imgRight1 {
float: right;
width: 48%;
height: 100vh;
}
.img1 {
width: 100%;
border-radius: 15px;
margin-bottom: 10px;
}

View File

@ -0,0 +1 @@
<view class="aboutMessage1"><view class="title1">店铺信息</view><view class="message1"><view class="messageItem1">地址:呼兰区哈尔滨华德学院</view><view class="messageItem1">营业时间早700-晚2030</view><view class="messageItem1">联系电话1234312334</view></view></view><view class="title1">图片详情</view><view class="aboutImg1"><view class="imgLeft1"><image src="https://ts1.cn.mm.bing.net/th/id/R-C.b3a7697d2793ba094a861d546c31190d?rik=NevOIW4XmkUuMA&riu=http%3a%2f%2fseopic.699pic.com%2fphoto%2f50069%2f5445.jpg_wh1200.jpg&ehk=wuLPicg%2b9wXz8QAwp%2fAVFBtJQ6loBUiVfQZu2bbZODA%3d&risl=&pid=ImgRaw&r=0" class="img1" mode="scaleToFill"></image><image src="https://ts1.cn.mm.bing.net/th/id/R-C.68978afc71576a94a1d50ef5016dbd9e?rik=cDDsy5SLmDvDHQ&riu=http%3a%2f%2fseopic.699pic.com%2fphoto%2f50075%2f0779.jpg_wh1200.jpg&ehk=FG4Hd5S711LYcuLBIcDagQyk4KhcH1oIfqyk1MWUOyg%3d&risl=&pid=ImgRaw&r=0" class="img1"></image><image src="https://img.zcool.cn/community/0105ec5b5ac3cba801206a35cf08a8.jpg@1280w_1l_2o_100sh.jpg" class="img1"></image></view><view class="imgRight1"><image src="https://img.zcool.cn/community/0105ec5b5ac3cba801206a35cf08a8.jpg@1280w_1l_2o_100sh.jpg" class="img1"></image><image src="https://img.zcool.cn/community/0189d85c3c421aa80121fbb0284f6c.jpg@1280w_1l_2o_100sh.jpg" class="img1"></image><image src="https://bpic.588ku.com/back_origin_min_pic/21/03/30/251617b5c1ad3b0c7ae62fb8b51dfbbd.jpg" class="img1"></image></view></view>

View File

@ -0,0 +1,13 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const _sfc_main = {
__name: "Shopdetails",
setup(__props) {
const businessMessage = common_vendor.ref(common_vendor.index.getStorageSync("Mybusiness"));
console.log(businessMessage.value);
return (_ctx, _cache) => {
return {};
};
}
};
my.createPage(_sfc_main);

View File

@ -0,0 +1,5 @@
{
"defaultTitle": "",
"pullRefresh": false,
"usingComponents": {}
}

View File

@ -0,0 +1,483 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.priceTitle {
width: 100%;
height: 50px;
background-color: #4095e5;
font-size: 20px;
color: #fff;
padding-left: 5px;
line-height: 50px;
}
.tabs {
display: flex;
justify-content: space-around;
line-height: 60rpx;
margin: 0 10rpx;
background-color: #fff;
box-shadow: 0 4rpx 6rpx rgba(240, 240, 240, 0.6);
position: relative;
z-index: 9;
}
.tabs .item {
flex: 1;
text-align: center;
padding: 20rpx;
font-size: 28rpx;
color: #262626;
}
.tabs .cursor {
position: absolute;
left: 0;
bottom: 0;
width: 18%;
height: 6rpx;
padding: 0 50rpx;
background-color: #4095e5;
transition: all 0.4s;
}
.preview {
margin-bottom: 20px;
}
.preview image {
width: 100%;
}
page {
height: 100%;
overflow: hidden;
}
.viewport {
height: 100%;
display: flex;
flex-direction: column;
}
.search {
padding: 0 30rpx 20rpx;
background-color: #fff;
}
.search .input {
display: flex;
align-items: center;
justify-content: space-between;
height: 64rpx;
padding-left: 26rpx;
color: #8b8b8b;
font-size: 28rpx;
border-radius: 32rpx;
background-color: #f3f4f4;
}
.icon-search::before {
margin-right: 10rpx;
}
.categories {
flex: 1;
min-height: 400rpx;
display: flex;
}
.primary {
overflow: hidden;
width: 180rpx;
flex: none;
background-color: #f6f6f6;
}
.primary .item {
display: flex;
justify-content: center;
align-items: center;
height: 96rpx;
font-size: 26rpx;
color: #595c63;
position: relative;
}
.primary .item::after {
content: "";
position: absolute;
left: 42rpx;
bottom: 0;
width: 96rpx;
border-top: 1rpx solid #e3e4e7;
}
.primary .active {
background-color: #fff;
}
.primary .active::before {
content: "";
position: absolute;
left: 0;
top: 0;
width: 8rpx;
height: 100%;
background-color: #ed0a3f;
}
.content {
height: 100vh;
margin-bottom: 40px;
}
.primary .item:last-child::after,
.primary .active::after {
display: none;
}
.secondary {
background-color: #fff;
}
.secondary .carousel {
height: 200rpx;
margin: 0 30rpx 20rpx;
border-radius: 4rpx;
overflow: hidden;
}
.secondary .panel {
margin: 0 30rpx 0rpx;
}
.secondary .title {
height: 60rpx;
line-height: 60rpx;
color: #333;
font-size: 28rpx;
border-bottom: 1rpx solid #f7f7f8;
}
.secondary .title .more {
float: right;
padding-left: 20rpx;
font-size: 24rpx;
color: #999;
}
.secondary .more::after {
font-family: "erabbit" !important;
content: "\e70c";
}
.secondary .section {
width: 100%;
display: flex;
flex-wrap: wrap;
padding: 20rpx 0;
}
.secondary .section .goods {
width: 150rpx;
margin: 0rpx 30rpx 20rpx 0;
}
.secondary .section .goods:nth-child(3n) {
margin-right: 0;
}
.secondary .section .goods image {
width: 150rpx;
height: 150rpx;
}
.secondary .section .goods .name {
padding: 5rpx;
font-size: 22rpx;
color: #333;
}
.secondary .section .goods .price {
padding: 5rpx;
font-size: 18rpx;
color: #cf4444;
}
.secondary .section .goods .number {
font-size: 24rpx;
margin-left: 2rpx;
}
.toolbar {
position: fixed;
left: 0;
right: 0;
bottom: 0;
z-index: 1;
background-color: #fff;
height: 100rpx;
padding: 0 20rpx var(--window-bottom);
border-top: 1rpx solid #eaeaea;
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: content-box;
}
.toolbar .buttons {
display: flex;
}
.toolbar .buttons > view {
width: 220rpx;
text-align: center;
line-height: 72rpx;
font-size: 26rpx;
color: #fff;
border-radius: 72rpx;
}
.toolbar .buttons .addcart {
background-color: #4095e5;
}
.toolbar .buttons .buynow,
.toolbar .buttons .payment {
background-color: #4095e5;
margin-left: 20rpx;
}
.toolbar .icons {
padding-right: 10rpx;
display: flex;
align-items: center;
flex: 1;
}
.toolbar .icons .icons-button {
flex: 1;
text-align: center;
line-height: 1.4;
padding: 0;
margin: 0;
border-radius: 0;
font-size: 20rpx;
color: #333;
background-color: #fff;
}
.toolbar .icons .icons-button::after {
border: none;
}
.toolbar .icons text {
display: block;
font-size: 34rpx;
}
.tab-menu {
display: flex;
justify-content: space-around;
padding: 10px 0;
background-color: #f5f5f5;
}
.tab-item {
padding: 10px;
cursor: pointer;
}
.tab-item.active {
color: #4095e5;
font-weight: bold;
}
.container {
align-items: center;
width: 90%;
height: 100vh;
margin: 0 auto;
}
.history-list {
width: 95%;
background-color: #fff;
margin-bottom: 5px;
border-radius: 15px;
padding: 10px;
}
.history-item {
margin-bottom: 20rpx;
}
.history-img {
width: 100rpx;
height: 100rpx;
border-radius: 50%;
/* 设置为正圆形 */
margin-right: 10px;
padding-right: 50px;
}
.history-info {
display: flex;
flex-direction: row;
}
.nameTime {
display: flex;
flex-direction: column;
}
.history-title {
font-size: 32rpx;
font-weight: bold;
width: 170px;
}
.time {
font-size: 24rpx;
color: #999;
padding-top: 5px;
}
.star {
display: inline-block;
line-height: 15px;
display: flex;
flex-direction: column;
align-items: flex-end;
}
.history-sale {
font-size: 30rpx;
color: #000;
float: right;
display: inline-block;
line-height: 15px;
font-weight: 700;
}
.extend {
font-size: 30rpx;
color: #000;
padding-top: 10px;
}
.example-body {
padding: 10px;
}
.scroll-view {
width: 100%;
height: 100%;
flex: 1;
}
.scroll-view-box {
flex: 1;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.info {
padding: 15px;
color: #666;
}
.info-text {
font-size: 14px;
color: #666;
}
.info-content {
padding: 5px 15px;
}
.card {
width: 100%;
height: 100px;
border-radius: 15px;
background-image: -webkit-linear-gradient(top, #fff, #B0D3F4);
}
.containerShow {
padding: 7px;
position: relative;
}
.img {
width: 60px;
height: 40px;
display: inline-block;
margin-top: 30px;
}
.imageItem {
width: 100%;
height: 100%;
border-radius: 15px;
margin: auto 0;
}
.message {
width: 110px;
height: 88px;
float: right;
display: inline-block;
}
.quantity-selector {
display: flex;
justify-content: center;
margin-top: 10rpx;
}
.quantity-value {
font-size: 32rpx;
font-weight: bold;
margin: 0 20rpx;
}
.titleCard {
font-size: 16px;
padding-bottom: 3px;
}
.moneyCard {
font-size: 15px;
color: #666;
padding: 0;
}
.jia,
.jian {
background-color: #fff;
padding: 3px 5px 3px 5px;
border: 1px solid #999;
}
.sum {
position: fixed;
left: 0;
right: 0;
bottom: 0;
z-index: 1;
}
.containerShow:last-child {
padding-bottom: 150px;
}
.delete-button {
position: absolute;
top: 0;
right: 0;
}
/* shopdetail */
.title1 {
width: 100%;
height: 60px;
font-size: 20px;
color: #000;
padding-left: 5px;
line-height: 60px;
}
.message1 {
width: 80%;
height: 200rpx;
margin: 0 auto;
}
.messageItem1 {
font-size: 18px;
padding-bottom: 10rpx;
}
.aboutImg1 {
width: 90%;
height: 100vh;
margin: 0 auto;
}
.imgLeft1 {
float: left;
width: 48%;
height: 100vh;
}
.imgRight1 {
float: right;
width: 48%;
height: 100vh;
}
.img1 {
width: 100%;
border-radius: 15px;
margin-bottom: 10px;
}
.businessReview {
background-color: rgba(31, 212, 248, 0.2);
border-radius: 15px;
padding: 10px;
margin: 5px;
display: block;
}
.businessReviewTitle {
color: #000;
font-size: 16px;
font-weight: 700;
margin: 8px;
}

View File

@ -0,0 +1 @@
<scroll-view scroll-y class="preview"><view class="preview"><swiper circular="{{true}}" autoplay="{{true}}" interval="{{3000}}" indicator-dots><swiper-item><image mode="aspectFill" class="image" src="{{a}}"></image></swiper-item><swiper-item><image mode="aspectFill" class="image" src="{{b}}"></image></swiper-item><swiper-item><image mode="aspectFill" class="image" src="{{c}}"></image></swiper-item></swiper></view><view class="priceTitle"><view class="meta"><text class="symbol">店铺详情</text></view></view><view class="notice"><uni-notice-bar u-i="1ffa0306-0" onVI="__l" u-p="{{d||''}}"/></view><view class="tab-menu"><view a:for="{{e}}" a:for-item="tab" a:key="b" class="{{('tab-item') + ' ' + (tab.c && 'active')}}" onTap="{{tab.d}}">{{tab.a}}</view></view><view class="content"><block a:if="{{f}}"><sort key="{{g}}" onUpdateCart="{{h}}" onAddToCart="{{i}}" u-i="1ffa0306-1" onVI="__l" u-p="{{j||''}}"></sort></block><block a:if="{{k}}"><view class="container"><view class="history-list"><view a:for="{{l}}" a:for-item="item" a:key="i" class="history-item"><view class="history-info"><image class="history-img" src="https://tse4-mm.cn.bing.net/th/id/OIP-C.jHUH4s7TQ48X_B-1iozuJgHaHa?rs=1&pid=ImgDetMain"></image><view class="nameTime"><text class="history-title">匿名用户</text><text class="time">{{item.a}}</text></view><view class="star"><text class="history-sale">{{item.b}}</text><uni-rate u-i="{{item.c}}" onVI="__l" u-p="{{item.d||''}}"/></view></view><view class="extend"><text onTap="{{item.f}}">{{item.e}}</text><block a:if="{{item.g}}"><view class="businessReviewTitle"> 商家回复 </view><text class="businessReview">{{item.h}}</text></block></view></view></view></view></block><block a:if="{{m}}"><view class="aboutMessage1"><view class="title1">店铺信息</view><view class="message1"><view class="messageItem1">地址:{{n}}</view><view class="messageItem1">营业时间早700-晚2030</view><view class="messageItem1">联系电话:{{o}}</view></view></view><view class="title1">图片详情</view><view class="aboutImg1"><view class="imgLeft1"><image src="{{p}}"></image><image src="https://ts1.cn.mm.bing.net/th/id/R-C.68978afc71576a94a1d50ef5016dbd9e?rik=cDDsy5SLmDvDHQ&riu=http%3a%2f%2fseopic.699pic.com%2fphoto%2f50075%2f0779.jpg_wh1200.jpg&ehk=FG4Hd5S711LYcuLBIcDagQyk4KhcH1oIfqyk1MWUOyg%3d&risl=&pid=ImgRaw&r=0" class="img1"></image></view><view class="imgRight1"><image src="https://bpic.588ku.com/back_origin_min_pic/21/03/30/251617b5c1ad3b0c7ae62fb8b51dfbbd.jpg" class="img1"></image></view></view></block></view></scroll-view><view class="toolbar"><view class="icons"><button class="icons-button" onTap="{{s}}"><text class="icon-heart"><image src="{{q}}" style="width:20px;height:20px"/></text> {{r}}</button><button class="icons-button" open-type="contact" onTap="{{v}}"><text class="icon-handset"><image src="{{t}}" style="width:20px;height:20px"/></text> 联系商家 </button></view><view class="buttons"><view class="addcart" onTap="{{w}}"><view>购物车</view></view></view></view><view class="example-body"><uni-drawer u-s="{{['d']}}" ref="__r" u-r="{{B}}" onChange="{{C}}" u-i="1ffa0306-3" onVI="__l" u-p="{{D||''}}"><view class="scroll-view"><scroll-view class="scroll-view-box" scroll-y="true"><view a:for="{{x}}" a:for-item="item" a:key="h" class="info-content"><view class="card"><view class="containerShow"><view class="img"><image src="{{item.a}}" class="imageItem"></image></view><view class="delete-button"><image src="{{y}}" onTap="{{item.b}}" alt="Delete" style="width:15px;height:15px"/></view><view class="message"><view class="titleCard">{{item.c}}</view><view class="moneCard">¥{{item.d}}</view><view class="quantity-selector"><view class="jia" onTap="{{item.e}}">-</view><text class="quantity-value">{{item.f}}</text><view class="jian" onTap="{{item.g}}">+</view></view></view></view></view></view><button type="primary" class="sum" onTap="{{A}}"><text>立即结算¥{{z}}</text></button></scroll-view></view></uni-drawer></view>

View File

@ -0,0 +1,329 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const common_assets = require("../../common/assets.js");
const API_api = require("../../API/api.js");
if (!Array) {
const _easycom_uni_notice_bar2 = common_vendor.resolveComponent("uni-notice-bar");
const _easycom_uni_rate2 = common_vendor.resolveComponent("uni-rate");
const _easycom_uni_drawer2 = common_vendor.resolveComponent("uni-drawer");
(_easycom_uni_notice_bar2 + _easycom_uni_rate2 + _easycom_uni_drawer2)();
}
const _easycom_uni_notice_bar = () => "../../uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.js";
const _easycom_uni_rate = () => "../../uni_modules/uni-rate/components/uni-rate/uni-rate.js";
const _easycom_uni_drawer = () => "../../uni_modules/uni-drawer/components/uni-drawer/uni-drawer.js";
if (!Math) {
(_easycom_uni_notice_bar + sort + _easycom_uni_rate + _easycom_uni_drawer)();
}
const sort = () => "./sort.js";
const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
__name: "merchant",
setup(__props) {
const currentIndex = common_vendor.ref(0);
const tabs = common_vendor.ref([
{ name: "点餐" },
{ name: "评价" },
{ name: "商家信息" }
]);
const sortKey = common_vendor.ref(0);
const switchTab = (index) => {
currentIndex.value = index;
if (index === 0) {
sortKey.value++;
}
};
const historyList = common_vendor.ref([]);
const talk = () => {
common_vendor.index.navigateTo({
url: "/pages/talk/talk"
});
};
common_vendor.ref(1);
const showRight = common_vendor.ref(null);
const showDrawer = () => {
if (showRight.value) {
showRight.value.open();
}
};
const isLiked = common_vendor.ref(false);
const collectState = () => {
const businessItem = common_vendor.index.getStorageSync("businessItem");
common_vendor.index.request({
url: API_api.apiImageUrl + "/api/business/my/getById",
method: "GET",
data: {
businessId: businessItem
},
success(res) {
isLiked.value = Boolean(res.data.data.isCollected);
},
fail(error) {
console.log(error);
}
});
};
common_vendor.onMounted(() => {
collectState();
});
const toggleLike = () => {
const originalState = isLiked.value;
isLiked.value = !originalState;
const action = originalState ? "delete" : "add";
common_vendor.index.request({
url: `${API_api.apiImageUrl}/api/collect/${action}`,
method: "POST",
data: {
businessId: common_vendor.index.getStorageSync("businessItem") || "0"
},
header: {
"cookie": common_vendor.index.getStorageSync("cookie") || ""
},
success(res) {
if (res.data.code !== 200) {
console.log(res);
}
common_vendor.index.showToast({
title: originalState ? "已取消收藏" : "收藏成功",
duration: 2e3
});
},
fail() {
isLiked.value = originalState;
common_vendor.index.showToast({
title: "网络错误,请重试",
icon: "none",
duration: 2e3
});
}
});
};
const cartItems = common_vendor.ref([]);
const updateCart = (newCartItems) => {
cartItems.value = newCartItems;
console.log("更新后的购物车:", cartItems.value);
common_vendor.index.setStorageSync("cartItems", newCartItems);
};
common_vendor.onMounted(() => {
cartItems.value = common_vendor.index.getStorageSync("cartItems") || [];
});
const deleteItem = (index) => {
cartItems.value.splice(index, 1);
common_vendor.index.setStorageSync("cartItems", cartItems.value);
};
common_vendor.onMounted(() => {
cartItems.value = common_vendor.index.getStorageSync("cartItems") || [];
});
const incrementQuantity = (index) => {
if (cartItems.value[index].quantity < 9) {
cartItems.value[index].quantity++;
}
};
const decrementQuantity = (index) => {
if (cartItems.value[index].quantity > 1) {
cartItems.value[index].quantity--;
}
};
const totalAmount = common_vendor.computed(() => {
return cartItems.value.reduce((total, item) => {
return total + item.dishesPrice * item.quantity;
}, 0);
});
const account = () => {
let businessid = common_vendor.index.getStorageSync("businessItem") || "1830063677349658625";
const orderDetails = cartItems.value.map((item) => ({
attributeNames: "小份",
dishesId: item.id,
quantity: item.quantity
}));
const data = {
businessId: String(businessid),
notes: "",
orderDetailAddRequest: orderDetails,
payMethod: 0,
phone: "15946398466",
pickupMethod: 0,
pickupTime: "",
totalPrice: totalAmount.value,
userName: "沙箱账号"
};
data.businessId = String(data.businessId);
common_vendor.index.request({
url: API_api.apiImageUrl + "/api/orders/add",
method: "POST",
data,
header: {
"cookie": common_vendor.index.getStorageSync("cookie") || ""
},
success(res) {
console.log(res);
console.log("Success:", res.data.data);
const orderId = res.data.data;
common_vendor.index.setStorageSync("notPay", orderId);
common_vendor.index.navigateTo({
url: "/pages/goToPay/goToPay"
});
},
fail() {
console.error("Error:", "请求失败");
}
});
};
const merchantId = common_vendor.ref();
const getMerchantIdFromUrl = () => {
const pages = getCurrentPages();
const currentPage = pages[pages.length - 1];
console.log("Current page options:", currentPage.options);
if (currentPage && currentPage.options && currentPage.options.merchantId) {
merchantId.value = currentPage.options.merchantId;
console.log(`Merchant ID received: ${merchantId.value}`);
} else {
console.error("Could not retrieve merchantId from URL.");
}
};
common_vendor.onMounted(() => {
getMerchantIdFromUrl();
});
common_vendor.watch(merchantId, (newValue) => {
common_vendor.index.$emit("merchantIdChanged", newValue);
});
const businessMessage = common_vendor.ref(common_vendor.index.getStorageSync("Mybusiness"));
console.log(businessMessage.value);
const review = () => {
const businessId = common_vendor.index.getStorageSync("businessItem");
common_vendor.index.request({
url: API_api.apiImageUrl + "/api/level/list/business",
method: "POST",
data: {
id: businessId
},
success(res) {
console.log(res.data.data);
historyList.value = res.data.data;
},
fail() {
console.log("失败");
}
});
};
common_vendor.onMounted(() => {
review();
});
const contentDetail = common_vendor.ref("");
const fetchContentItem = async () => {
const businessId = common_vendor.index.getStorageSync("businessItem");
try {
const res = await common_vendor.index.request({
url: API_api.apiImageUrl + "/api/businessInfo/list",
method: "POST",
data: {
id: businessId
}
});
console.log(res.data.data.content);
contentDetail.value = res.data.data.content;
} catch (err) {
console.error(err);
}
};
const showAddToCartSuccess = (dishName) => {
common_vendor.index.showToast({
title: `${dishName} 已添加到购物车`,
icon: "success",
duration: 2e3
});
};
common_vendor.onMounted(() => {
fetchContentItem();
});
return (_ctx, _cache) => {
return common_vendor.e({
a: common_assets._imports_0,
b: common_assets._imports_1,
c: common_assets._imports_2,
d: common_vendor.p({
["show-icon"]: true,
scrollable: true,
text: contentDetail.value
}),
e: common_vendor.f(tabs.value, (tab, index, i0) => {
return {
a: common_vendor.t(tab.name),
b: index,
c: currentIndex.value === index ? 1 : "",
d: common_vendor.o(($event) => switchTab(index))
};
}),
f: currentIndex.value === 0
}, currentIndex.value === 0 ? {
g: sortKey.value,
h: common_vendor.o(updateCart),
i: common_vendor.o(showAddToCartSuccess),
j: common_vendor.p({
["merchant-id"]: merchantId.value,
["active-tab"]: currentIndex.value
})
} : {}, {
k: currentIndex.value === 1
}, currentIndex.value === 1 ? {
l: common_vendor.f(historyList.value, (item, index, i0) => {
return common_vendor.e({
a: common_vendor.t(item.createTime.substr(0, 19).replace("T", " ")),
b: common_vendor.t(item.rating),
c: "1ffa0306-2-" + i0,
d: common_vendor.p({
readonly: true,
value: item.rating,
["active-color"]: "#13c2c2",
["is-fill"]: false,
color: "#13c2c2"
}),
e: common_vendor.t(item.review),
f: common_vendor.o(($event) => _ctx.reviewUser(item)),
g: item.businessReview && item.businessReview.trim() !== ""
}, item.businessReview && item.businessReview.trim() !== "" ? {
h: common_vendor.t(item.businessReview)
} : {}, {
i: index
});
})
} : {}, {
m: currentIndex.value === 2
}, currentIndex.value === 2 ? {
n: common_vendor.t(businessMessage.value.address),
o: common_vendor.t(businessMessage.value.businessPhone),
p: businessMessage.value.businessAvatar
} : {}, {
q: isLiked.value ? "../../static/small/starSelected.png" : "../../static/small/star.png",
r: common_vendor.t(isLiked.value ? "已收藏" : "收藏店铺"),
s: common_vendor.o(toggleLike),
t: common_assets._imports_3$1,
v: common_vendor.o(talk),
w: common_vendor.o(($event) => showDrawer()),
x: common_vendor.f(cartItems.value, (item, index, i0) => {
return {
a: item.dishesImage,
b: common_vendor.o(($event) => deleteItem(index)),
c: common_vendor.t(item.dishesName),
d: common_vendor.t(item.dishesPrice),
e: common_vendor.o(($event) => decrementQuantity(index)),
f: common_vendor.t(item.quantity),
g: common_vendor.o(($event) => incrementQuantity(index)),
h: index
};
}),
y: common_assets._imports_4,
z: common_vendor.t(totalAmount.value),
A: common_vendor.o(account),
B: () => ({
r: showRight,
k: "showRight"
}),
C: common_vendor.o(($event) => _ctx.change($event, "showRight")),
D: common_vendor.p({
mode: "left",
["mask-click"]: true
})
});
};
}
});
my.createPage(_sfc_main);

View File

@ -0,0 +1,10 @@
{
"defaultTitle": "商家",
"pullRefresh": false,
"usingComponents": {
"uni-notice-bar": "../../uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar",
"uni-rate": "../../uni_modules/uni-rate/components/uni-rate/uni-rate",
"uni-drawer": "../../uni_modules/uni-drawer/components/uni-drawer/uni-drawer",
"sort": "./sort"
}
}

View File

@ -0,0 +1,167 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
page {
height: 100%;
overflow: hidden;
}
.viewport {
height: 100%;
display: flex;
flex-direction: column;
}
.search {
padding: 0 30rpx 20rpx;
background-color: #fff;
}
.search .input {
display: flex;
align-items: center;
justify-content: space-between;
height: 64rpx;
padding-left: 26rpx;
color: #8b8b8b;
font-size: 28rpx;
border-radius: 32rpx;
background-color: #f3f4f4;
}
.icon-search::before {
margin-right: 10rpx;
}
.primary {
overflow: hidden;
width: 180rpx;
flex: none;
background-color: #f6f6f6;
}
.primary .item {
display: flex;
justify-content: center;
align-items: center;
height: 96rpx;
font-size: 26rpx;
color: #595c63;
position: relative;
}
.primary .item::after {
content: "";
position: absolute;
left: 42rpx;
bottom: 0;
width: 96rpx;
border-top: 1rpx solid #e3e4e7;
}
.primary .active {
background-color: #fff;
}
.primary .active::before {
content: "";
position: absolute;
left: 0;
top: 0;
width: 8rpx;
height: 100%;
background-color: #4095e5;
}
.primary .item:last-child::after,
.primary .active::after {
display: none;
}
.secondary {
background-color: #fff;
width: 100%;
}
.secondary .carousel {
height: 400rpx;
margin: 0 30rpx 20rpx;
border-radius: 4rpx;
overflow: hidden;
}
.secondary .panel {
margin: 0 30rpx 0rpx;
}
.secondary .container {
display: flex;
flex-direction: column;
align-items: center;
padding: 20rpx;
}
.secondary .history-list {
width: 100%;
}
.secondary .history-item {
display: flex;
margin-bottom: 20rpx;
flex-direction: row;
}
.secondary .history-img {
width: 200rpx;
height: 150rpx;
margin-right: 20rpx;
border-radius: 10px;
}
.secondary .history-info {
display: flex;
flex-direction: column;
justify-content: space-around;
width: 100px;
}
.secondary .history-title {
font-size: 32rpx;
font-weight: bold;
}
.secondary .history-description {
font-size: 28rpx;
}
.secondary .history-time {
font-size: 20rpx;
color: #999;
}
.secondary .history-money {
font-size: 30rpx;
color: black;
font-weight: 700;
}
.icon {
margin-top: 30rpx;
}
@keyframes plus-slide-down {
0% {
transform: translateY(0);
}
50% {
transform: translateY(10px);
}
100% {
transform: translateY(0);
}
}
.plus-animated {
animation-name: plus-slide-down;
animation-duration: 0.5s;
animation-timing-function: ease-in-out;
animation-iteration-count: 1;
animation-fill-mode: forwards;
}

View File

@ -0,0 +1 @@
<view class="viewport"><view class="categories"><scroll-view class="primary" scroll-y><view a:for="{{a}}" a:for-item="tab" a:key="b" class="{{('item') + ' ' + (tab.c && 'active')}}" onTap="{{tab.d}}">{{tab.a}}</view></scroll-view><scroll-view class="secondary" scroll-y><block a:if="{{b}}"></block><view class="panel"><view class="container"><view class="history-list"><view a:for="{{c}}" a:for-item="item" a:key="f" class="history-item"><image class="history-img" src="{{item.a}}"></image><view class="history-info"><text class="history-title">{{item.b}}</text><text class="history-money">¥{{item.c}}</text></view><view class="icon plus-animated" onTap="{{item.e}}"><uni-icons u-i="{{item.d}}" onVI="__l" u-p="{{d||''}}"></uni-icons></view></view></view></view></view></scroll-view></view></view>

View File

@ -0,0 +1,172 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const API_api = require("../../API/api.js");
if (!Array) {
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
_easycom_uni_icons2();
}
const _easycom_uni_icons = () => "../../uni_modules/uni-icons/components/uni-icons/uni-icons.js";
if (!Math) {
_easycom_uni_icons();
}
const _sfc_main = {
__name: "sort",
props: {
merchantId: {
type: String,
required: true
},
activeTab: {
// 新增当前激活tab的监听
type: Number,
default: 0
}
},
emits: ["update-cart", "add-to-cart"],
setup(__props, { emit: __emit }) {
const props = __props;
const resultArray = common_vendor.ref([]);
const currentIndex = common_vendor.ref(0);
common_vendor.ref([]);
const businessId = common_vendor.ref("");
common_vendor.ref(props.merchantId || "");
common_vendor.watch(() => props.activeTab, (newVal) => {
if (newVal === 0) {
leftGroup();
rightList();
}
});
const loadData = async () => {
await leftGroup();
await rightList();
if (resultArray.value.length > 0) {
await switchTab(0);
}
};
common_vendor.onMounted(async () => {
if (props.merchantId) {
businessId.value = props.merchantId;
await loadData();
}
});
common_vendor.watch(() => props.merchantId, async (newVal) => {
console.log("传过来的商家id", newVal);
if (newVal) {
businessId.value = newVal;
await loadData();
}
}, { immediate: true });
const leftGroup = async () => {
try {
const res = await common_vendor.index.request({
url: API_api.apiImageUrl + "/api/dishesGroup/list/dishesGroup",
method: "POST",
data: { businessId: businessId.value }
});
if (res.data.code === 0) {
resultArray.value = res.data.data.map((item) => ({
id: item.id,
groupName: item.groupName
}));
console.log("分类数据:", resultArray.value);
}
} catch (error) {
console.log("error", error);
}
};
const rightList = async () => {
try {
const res = await common_vendor.index.request({
url: API_api.apiImageUrl + "/api/dishes/list/dishes",
method: "POST",
data: {
businessId: businessId.value
}
});
if (res.data.code === 0) {
const filteredData = res.data.data.filter((item) => item.status !== "1");
historyList.value = filteredData;
console.log("更新后的菜品列表:", historyList.value);
} else {
console.error("请求失败:", res.data.message);
}
} catch (error) {
console.error("Error fetching data:", error);
}
};
common_vendor.ref(null);
const switchTab = async (index) => {
var _a;
currentIndex.value = index;
const groupId = (_a = resultArray.value[index]) == null ? void 0 : _a.id;
if (!groupId)
return;
try {
const res = await common_vendor.index.request({
url: API_api.apiImageUrl + "/api/dishes/list/dishes",
method: "POST",
data: {
businessId: businessId.value,
dishesGroupId: groupId
// 使用分类ID进行查询
}
});
if (res.data.code === 0) {
const filteredData = res.data.data.filter((item) => item.status !== "1");
historyList.value = filteredData;
}
} catch (error) {
console.error("Error fetching data:", error);
}
common_vendor.index.pageScrollTo({
scrollTop: 0,
duration: 300
});
};
const historyList = common_vendor.ref([]);
const emit = __emit;
const cartItems = common_vendor.ref([]);
const addToCart = (item) => {
cartItems.value.push({
...item,
quantity: 1
});
common_vendor.index.setStorageSync("cartItems", cartItems.value);
cartItems.value.forEach((item2) => {
console.log(item2.dishesName);
});
emit("add-to-cart", item.dishesName);
emit("update-cart", cartItems.value);
};
return (_ctx, _cache) => {
return common_vendor.e({
a: common_vendor.f(resultArray.value, (tab, index, i0) => {
return {
a: common_vendor.t(tab.groupName),
b: tab.id,
c: currentIndex.value === index ? 1 : "",
d: common_vendor.o(($event) => switchTab(index))
};
}),
b: currentIndex.value === 0
}, currentIndex.value === 0 ? {} : {}, {
c: common_vendor.f(historyList.value, (item, index, i0) => {
return {
a: item.dishesImage,
b: common_vendor.t(item.dishesName),
c: common_vendor.t(item.dishesPrice),
d: "7eeae5d3-0-" + i0,
e: common_vendor.o(() => addToCart(item)),
f: index
};
}),
d: common_vendor.p({
type: "plus-filled",
size: "30",
color: "#4095e5"
})
});
};
}
};
my.createComponent(_sfc_main);

View File

@ -0,0 +1,7 @@
{
"component": true,
"styleIsolation": "apply-shared",
"usingComponents": {
"uni-icons": "../../uni_modules/uni-icons/components/uni-icons/uni-icons"
}
}