From 04102f7237efefa744090ed7c25f7b5d0807b679 Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Thu, 05 Feb 2026 18:11:57 +0800
Subject: [PATCH] 完成运营中心提现和运营中心权限管理
---
mobile/pages/shop/shop_list.vue | 172 ++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 146 insertions(+), 26 deletions(-)
diff --git a/mobile/pages/shop/shop_list.vue b/mobile/pages/shop/shop_list.vue
index deec4d0..e18ac8d 100644
--- a/mobile/pages/shop/shop_list.vue
+++ b/mobile/pages/shop/shop_list.vue
@@ -7,8 +7,8 @@
<view class="index-search-box index-search-box_re d-b-c" id="searchBox">
<view class="index-search index-search_re t-c flex-1">
<span class="icon iconfont icon-sousuo"></span>
- <input type="text" v-model="searchtxt" class="flex-1 ml10 f30 gray3" value="" placeholder-class="f24 gray6"
- placeholder="搜索名称" confirm-type="search" @confirm="search()" />
+ <input type="text" v-model="searchtxt" class="flex-1 ml10 f30 gray3" value=""
+ placeholder-class="f24 gray6" placeholder="搜索名称" confirm-type="search" @confirm="search()" />
</view>
</view>
<view class="inner-tab">
@@ -25,9 +25,11 @@
</view>
</view>
<view class="category-box pt20" v-if="category.length>0">
- <scroll-view class="scroll-category" scroll-x="true" :scroll-left="scrollLeft" scroll-with-animation="true">
+ <scroll-view class="scroll-category" scroll-x="true" :scroll-left="scrollLeft"
+ scroll-with-animation="true">
<view class="category-list">
- <view class="category-item" v-for="(item,index) in category" :key="item.category_id" @click="tabChange(index)" :id="'item-' + index" :class="{current: index === currentIndex}">
+ <view class="category-item" v-for="(item,index) in category" :key="item.category_id"
+ @click="tabChange(index)" :id="'item-' + index" :class="{current: index === currentIndex}">
<text class="category-btn p-0-20">{{item.name}}</text>
</view>
</view>
@@ -35,9 +37,9 @@
</view>
</view>
<view class="prodcut-list-wrap" v-if="store_open">
- <scroll-view scroll-y="true" class="scroll-Y" :style="'height:' + scrollviewHigh + 'px;'" lower-threshold="50"
- :refresher-triggered="triggered" @scrolltolower="scrolltolowerFunc" refresher-enabled="true" @refresherrefresh="onRefresh"
- @refresherrestore="onRestore">
+ <scroll-view scroll-y="true" class="scroll-Y" :style="'height:' + scrollviewHigh + 'px;'"
+ lower-threshold="50" :refresher-triggered="triggered" @scrolltolower="scrolltolowerFunc"
+ refresher-enabled="true" @refresherrefresh="onRefresh" @refresherrestore="onRestore">
<view class="shop_list_body">
<view class="shop_list_body_item" v-for="(item,index) in shopData" :key="index">
<view class="shop_list_body_item_shop" @click="goto_shop(item.shop_supplier_id)">
@@ -46,17 +48,30 @@
</view>
<view class="shop_list_body_item_shop_info">
<view class="h1 title">{{item.name}}</view>
- <view class="h3 brand">主营:{{item.category_name}}</view>
+ <!-- <view class="h3 brand address-row">主营:{{item.category_name}}</view> -->
+ <view class="h3 address-row">
+ <text class="address-text">地址:{{item.address}}</text>
+ </view>
<!-- <view class="h3 sales">销量{{item.product_sales}}件<text class="ml10 mr10">|</text>{{item.fav_count}}人关注</view> -->
</view>
<view class="shop_list_body_item_shop_others">
- <view class="f26 gray3 collect">店铺评分</view>
- <view><text class="redEe f32 fb">{{item.server_score}}</text></view>
+ <!-- <view class="f26 gray3 collect">店铺评分</view>
+ <view><text class="redEe f32 fb">{{item.server_score}}</text></view> -->
+ <view class="action-buttons">
+ <view @click.stop="contactShop(item)">
+ <text class="iconfont icon icon-002dianhua action-btn contact-btn"></text>
+ </view>
+ <view @click.stop="navigateToShop(item)">
+ <text class="icon action-btn iconfont nav-btn icon-dizhi1"></text>
+ </view>
+ </view>
</view>
</view>
- <view v-if="shopData[index].productList.length>0" :class="shopData[index].productList.length<3?'shop_list_body_item_product2':'shop_list_body_item_product'">
- <view class="shop_list_body_item_product_item" v-for="(item1,index2) in shopData[index].productList" :key="index2"
- @click="goto_product(item1.product_id)">
+ <view v-if="shopData[index].productList.length>0"
+ :class="shopData[index].productList.length<3?'shop_list_body_item_product2':'shop_list_body_item_product'">
+ <view class="shop_list_body_item_product_item"
+ v-for="(item1,index2) in shopData[index].productList" :key="index2"
+ @click="goto_product(item1.product_id)">
<view>
<image :src="item1.image[0].file_path"></image>
</view>
@@ -64,7 +79,8 @@
<view class="f22 red">¥
<text class="f32">
{{item1.product_price}}
- </text></view>
+ </text>
+ </view>
</view>
</view>
</view>
@@ -125,7 +141,7 @@
screenWidth: 0,
currentIndex: 0,
category_id: '',
- store_open:false
+ store_open: false
};
},
computed: {
@@ -148,11 +164,22 @@
mounted() {
this.init();
this._freshing = false;
+
this.restoreData();
// 获取分类 by lyzflash
this.getCategory();
/*获取订单列表*/
this.getData();
+ },
+ onLoad(option) {
+ let self = this;
+ if( option.category_id){
+ self.category.forEach(function(index,item){
+ if(item.category_id==option.category_id){
+ self.tabChange(index)
+ }
+ })
+ }
},
methods: {
/*初始化*/
@@ -204,21 +231,22 @@
page: page || 1,
list_rows: list_rows,
sortType: self.type_active,
+ supplier_type: 10,
name: self.keyWord,
category_id: self.category_id // 分类id by lyzflash
}, (res) => {
self.loading = false;
- self.store_open = res.data.store_open;
- if(!self.store_open){
+ self.store_open = res.data.store_open;
+ if (!self.store_open) {
uni.setNavigationBarTitle({
- title: '我的订单',
+ title: '我的订单',
});
self.gotoPage('/pages/index/index');
- }else{
+ } else {
uni.setNavigationBarTitle({
- title: '人气好店',
+ title: '人气好店',
});
- }
+ }
self.last_page = res.data.list.last_page;
self.shopData = self.shopData.concat(res.data.list.data);
if (res.data.list.last_page <= 1) {
@@ -231,8 +259,7 @@
/*获取分类*/
getCategory() {
let self = this;
- self._post('supplier.index/category', {
- }, (res) => {
+ self._post('supplier.index/category', {category_type:10}, (res) => {
self.category = res.data.category;
})
},
@@ -272,13 +299,57 @@
//跳转店铺首页
goto_shop(shop_supplier_id) {
+ uni.setStorageSync('shop_supplier_id',shop_supplier_id)
this.gotoPage('/pages/shop/shop?shop_supplier_id=' + shop_supplier_id);
},
//跳转商品页面
goto_product(product_id) {
this.gotoPage('/pages/product/detail/detail?product_id=' + product_id);
},
-
+ //联系店铺
+ contactShop(shop) {
+ // 如果有电话号码,直接拨打电话
+ if (shop.link_phone) {
+ uni.makePhoneCall({
+ phoneNumber: shop.link_phone,
+ fail: () => {
+ uni.showToast({
+ title: '拨打电话失败',
+ icon: 'none'
+ });
+ }
+ });
+ } else {
+ uni.showToast({
+ title: '暂无联系电话',
+ icon: 'none'
+ });
+ }
+ },
+ //导航到店铺
+ navigateToShop(shop) {
+ if (shop.address) {
+ // 打开地图导航
+ uni.openLocation({
+ latitude: shop.latitude || 0,
+ longitude: shop.longitude || 0,
+ name: shop.name,
+ address: shop.address,
+ fail: () => {
+ uni.showToast({
+ title: '打开导航失败',
+ icon: 'none'
+ });
+ }
+ });
+ } else {
+ uni.showToast({
+ title: '暂无店铺地址',
+ icon: 'none'
+ });
+ }
+ },
+
/**
* 分类导航
* 点击事件
@@ -547,7 +618,7 @@
.shop_list_body_item_shop {
width: 100%;
- height: 150rpx;
+ min-height: 150rpx;
display: flex;
justify-content: space-between;
margin-bottom: 10rpx;
@@ -653,6 +724,51 @@
color: #585858;
}
+ .address-row {
+ /* display: flex;
+ align-items: center;
+ justify-content: space-between;
+ width: 100%; */
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+ overflow: hidden;
+ word-wrap: break-word;
+ }
+
+ .address-text {
+ flex: 1;
+ color: #585858;
+ }
+
+ .action-buttons {
+ display: flex;
+ align-items: center;
+ margin-left: 20rpx;
+ }
+
+ .action-btn {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 50%;
+ margin-left: 10rpx;
+ }
+
+ .contact-btn {
+ color: #4caf50;
+ font-size: 50rpx;
+ }
+
+ .nav-btn {
+ font-size: 50rpx;
+ color: #2196f3;
+ }
+
+ .action-btn .iconfont {
+ font-size: 28rpx;
+ }
+
.sales {
color: #585858;
}
@@ -660,6 +776,7 @@
.collect {
margin-bottom: 26rpx;
}
+
// 分类相关 by lyzflash
.scroll-category {
width: 100%;
@@ -667,10 +784,12 @@
white-space: nowrap;
text-align: start;
}
+
.scroll-category .current .category-btn {
@include border_color("border_color");
@include text_color("font_color");
}
+
.scroll-category .category-item {
height: 50rpx;
text-align: center;
@@ -678,6 +797,7 @@
display: inline-block;
position: relative;
}
+
.category-btn {
display: inline-block;
border-radius: 50rpx;
@@ -685,4 +805,4 @@
font-size: 28rpx;
border: 2rpx solid #ccc;
}
-</style>
+</style>
\ No newline at end of file
--
Gitblit v1.9.2