Browse Source

Merge branch 'dev_v3_lqw' into dev_v3

ext.zhangbin71 1 month ago
parent
commit
f658c333e1

+ 5 - 0
components/productWindow/index.vue

@@ -320,6 +320,7 @@ function getCheckedValue() {
 
       .money {
         font-size: 24rpx;
+		font-weight: bold;
         //margin-top: 40rpx;
       }
       .num {
@@ -353,6 +354,8 @@ function getCheckedValue() {
     .confirm-btn {
       height: 88rpx;
       line-height: 88rpx;
+	  font-weight: bold;
+	  font-size: 32rpx;
       color: #333;
       border-radius: 16rpx;
       background-color: #F8C008;
@@ -369,6 +372,7 @@ function getCheckedValue() {
         font-size: 28rpx;
         color: #333;
         padding: 0 30rpx;
+		font-weight: bold;
       }
       .listn {
         padding: 0 30rpx 0 16rpx;
@@ -484,6 +488,7 @@ function getCheckedValue() {
 .popup-title{
   height: 100rpx;
   line-height: 100rpx;
+  font-weight: bold;
   font-size: 36rpx;
   color: #333;
   text-align: center;

+ 4 - 3
config/app.js

@@ -1,5 +1,5 @@
-// let domain = "https://www.shuibeibyg.com/front-api"; // 正式环境IP
-let domain = "https://test.shuibeibyg.com/front-api"; // 测试环境IP
+let domain = "https://www.shuibeibyg.com/front-api"; // 正式环境IP
+// let domain = "https://test.shuibeibyg.com/front-api"; // 测试环境IP
 // let domain = 'http://192.168.100.199:8081' // 晋守桦IP
 // let domain = 'http://192.168.100.246:8081' // 韩朝龙IP
 let share = "https://www.shuibeibyg.com";
@@ -8,7 +8,8 @@ let imgUrl = "https://sb-admin.oss-cn-shenzhen.aliyuncs.com/shuibei-mini/new-min
 
 // export const H5_BASE_URL = "http://192.168.3.10:5174"; // 本地测试
 // export const H5_BASE_URL = "http://192.168.100.35:5175"; // 本地测试
-export const H5_BASE_URL = "https://test.shuibeibyg.com/web-h5/"; // 正式环境H5地址
+// export const H5_BASE_URL = "https://test.shuibeibyg.com/web-h5/"; // 测试环境H5地址
+export const H5_BASE_URL = "https://www.shuibeibyg.com/web-h5/"; // 正式环境H5地址
 
 // PC 后台 API 地址(用于上传图片)
 export const HTTP_ADMIN_URL = domain;

+ 1 - 1
pages.json

@@ -346,7 +346,7 @@
         {
           "path": "goods_search/index",
           "style": {
-            "navigationBarBackgroundColor": "#FFE079",
+            "navigationBarBackgroundColor": "#ffffff",
             "navigationBarTitleText": "搜索商品",
             "navigationBarTextStyle": "black"
           }

File diff suppressed because it is too large
+ 80 - 52
pages/goods/goods_details/index.vue


+ 197 - 8
pages/goods/goods_search/index.vue

@@ -1,9 +1,9 @@
 <template>
-  <view>
+  <view style="padding-bottom: 32rpx;">
     <view class='searchGood'>
       <view class='search acea-row row-between-wrapper'>
         <view class='input acea-row row-between-wrapper'>
-          <text class='iconfont icon-sousuo'></text>
+          <text class='iconfont icon-sousuo' style="color:#999;"></text>
           <input type='text' confirm-type="search" :value='searchValue' :focus="focus" placeholder='点击搜索商品' placeholder-class='placeholder'
             @input="setValue" @confirm="searchBut" />
         </view>
@@ -16,7 +16,53 @@
 <!--        </block>-->
 <!--      </view>-->
       <view class='line'></view>
-      <goodList :bastList="calculatedProducts" v-if="bastList.length > 0"></goodList>
+      <!-- <goodList :bastList="calculatedProducts" v-if="bastList.length > 0"></goodList> -->
+	  <view class="index-product-wrapper">
+	    <view
+	        class="list-box animated"
+	        :class="bastList.length > 0 ? 'fadeIn on' : ''"
+	    >
+	      <view
+	          class="item"
+	          v-for="(item, index) in calculatedProducts"
+	          :key="index"
+	          @click="goDetail(item)"
+	      >
+	        <view class="pictrue">
+	          <image :src="item.image" mode=""></image>
+	        </view>
+	        <view class="text-info">
+	          <view class="title" >
+	            <view class="text line1">{{ item.storeName }}</view>
+	            <view class="weight">{{ item.weight }}g</view>
+	          </view>
+	          <view class="bottom-row">
+	            <!-- <text class="price">工费: {{ item.price }}/克</text> -->
+	            <text class="price">¥ {{ item.totalPrice }}</text>
+	            <text class="sales" style="color:#666;">
+	              销量:{{ Number(item.sales || 0) + Number(item.ficti || 0) }}件
+	            </text>
+	            <!-- <view class="txt">券</view> -->
+	          </view>
+	          <view class="bottom-row">
+	            <!-- <text class="price">工费: {{ item.price }}/克</text> -->
+	            <text class="sales">工费: {{ item.totalLaborCost }}</text>
+	            <text class="sales">
+	              附加费: {{ item.additionalAmount }}
+	            </text>
+	            <!-- <view class="txt">券</view> -->
+	          </view>
+	          <template v-if="item?.merchant?.id && merchantNameShow()">
+	            <view class="merchantInfo" @click.stop="toMerchant(item.merchant.id)">
+	              <image class="merchantLogo" :src="item.merchant.merchantLogo" mode="scaleToFill"></image>
+	              <text class="merchantName">{{item.merchant.merchantName}}</text>
+	              <uni-icons style="margin-left: 10rpx;" type="right" size="16" color="#999999"></uni-icons>
+	            </view>
+	          </template>
+	        </view>
+	      </view>
+	    </view>
+	  </view>
       <view class='loadingicon acea-row row-center-wrapper' v-if="bastList.length > 0">
         <text class='loading iconfont icon-jiazai' :hidden='loading == false'></text>{{ loadTitle }}
       </view>
@@ -66,6 +112,28 @@ const {
   realAgprice, // 白银实时销售价(基础)
 } = useRealGoldPrice({});
 
+// Navigation to detail page
+const goDetail = async (item) => {
+  try {
+    uni.navigateTo({
+      url: `/pages/goods/goods_details/index?id=${item.id}`,
+    });
+  } catch (err) {
+    console.error('Navigation error:', err);
+  }
+};
+
+const merchantNameShow = () => {
+  if(!appStore.userInfo ||(appStore.userInfo && !appStore.userInfo.merchant && !appStore.merchantId && !appStore.userInfo.lastVisitedMerchantId)){
+    return true;
+  }else{
+    return false;
+  }
+}
+const toMerchant = (merchantId) => {
+  uni.navigateTo({ url:"/pages/merchantCenters/merchant?merchantId="+merchantId });
+}
+
 const calculatedProducts = computed(() => {
   // 计算逻辑与原代码一致,但基于响应式数据 products
   return bastList.value.map((product) => {
@@ -189,8 +257,9 @@ onReachBottom(() => {
 
 <style lang="scss">
 page {
-  margin-top: var(--status-bar-height);
-  background-color: #fff !important;
+  // margin-top: var(--status-bar-height);
+  background-color: #F9F7F0;
+  height: 100%;
 }
 
 .searchGood .search {
@@ -199,12 +268,12 @@ page {
 }
 
 .searchGood .search {
-  padding-top: 20rpx;
+  padding: 16rpx;
 }
 
 .searchGood .search .input {
   width: 598rpx;
-  background-color: #f7f7f7;
+  background-color: #F9F7F0;
   border-radius: 16rpx;
   padding: 0 35rpx;
   box-sizing: border-box;
@@ -256,7 +325,127 @@ page {
 }
 
 .searchGood .line {
-  border-bottom: 1rpx solid #eee;
+  // border-bottom: 1rpx solid #eee;
   margin: 20rpx 30rpx 0 30rpx;
 }
+
+.index-product-wrapper {
+  padding: 0 16rpx;
+  margin-bottom: 200rpx; /* 为自定义 tabBar 留出空间 */
+  // min-height: 700rpx;
+  //background: #fff;
+
+  &.on {
+    min-height: 1500rpx;
+  }
+
+  .list-box {
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: space-between;
+
+    .item {
+      width: 48.99%;
+      //height: 490rpx;
+      background-color: #ffffff;
+      // box-shadow: 0rpx 3rpx 13rpx 0rpx rgba(0, 0, 0, 0.13);
+      border-radius: 16rpx;
+      margin-bottom: 16rpx;
+
+      overflow: hidden;
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+
+      .pictrue {
+        position: relative;
+
+        image {
+          width: 100%;
+          height: 330rpx;
+        }
+      }
+
+      .text-info {
+        padding: 10rpx 20rpx 20rpx;
+
+        .title {
+          color: #333;
+          display: flex;
+          align-items: center;
+          justify-items: space-between;
+          .tip {
+            width: 61rpx;
+            height: auto;
+            font-size: 22rpx;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            color: #ffffff;
+            position: relative;
+            margin-right: 5rpx;
+            background-color: #ef4800;
+            border-radius: 5rpx;
+          }
+          .text{
+            width: 80%;
+			font-weight: bold;
+          }
+          .weight{
+            background-color: rgba(197, 128, 3, 0.10);
+            color: #C58003;
+            font-size: 24rpx;
+            padding: 8rpx 16rpx;
+            border-radius: 8rpx;
+            float: right;
+          }
+        }
+
+        .bottom-row {
+          color: $theme-color;
+          display: flex;
+          justify-content: space-between;
+          align-items: center;
+          font-size: 28rpx;
+          margin: 10rpx 0 0;
+
+          .price {
+            padding-bottom: 4rpx;
+            font-weight: 800;
+            white-space: nowrap;
+            font-size: 28rpx;
+            color: #f16327;
+          }
+
+          .sales {
+            font-size: 22rpx;
+            white-space: nowrap;
+			flex-shrink: 0;
+            color: #999999;
+          }
+
+        }
+        .merchantInfo{
+          display: flex;
+          align-items: center;
+          height: 60rpx;
+        }
+        .merchantLogo{
+          width: 40rpx;
+          height: 40rpx;
+          border-radius: 50%;
+          margin-right: 20rpx;
+        }
+        .merchantName{
+          font-size: 24rpx;
+          color: #333;
+        }
+      }
+    }
+
+    &.on {
+      display: flex;
+    }
+  }
+}
 </style>

+ 28 - 25
pages/index/index.vue

@@ -135,7 +135,7 @@
                 <view class="bottom-row">
                   <!-- <text class="price">工费: {{ item.price }}/克</text> -->
                   <text class="price">¥ {{ item.totalPrice }}</text>
-                  <text class="sales">
+                  <text class="sales" style="color:#666;">
                     销量:{{ Number(item.sales || 0) + Number(item.ficti || 0) }}件
                   </text>
                   <!-- <view class="txt">券</view> -->
@@ -641,7 +641,7 @@ page {
   align-items: center;
   flex-direction: column;
   background: linear-gradient(180deg, #fefcf9 0%, #fff2df 100%);
-  box-shadow: 0rpx 3rpx 12rpx 0rpx rgba(0, 0, 0, 0.16);
+  // box-shadow: 0rpx 3rpx 12rpx 0rpx rgba(0, 0, 0, 0.16);
   width: 105upx;
   height: 105upx;
   border-radius: 50%; // 圆形按钮
@@ -834,7 +834,7 @@ page {
     width: 48.99%;
     background: #ffffff;
     height: 180rpx;
-    box-shadow: 0rpx 3rpx 13rpx 0rpx rgba(0, 0, 0, 0.13);
+    // box-shadow: 0rpx 3rpx 13rpx 0rpx rgba(0, 0, 0, 0.13);
     border-radius: 20rpx;
     padding: 13rpx 20rpx;
     box-sizing: border-box;
@@ -1127,11 +1127,11 @@ page {
   //z-index: 200000;
   width: 100%;
 
-  padding: 28rpx 20rpx 10rpx;
+  padding: 28rpx 20rpx 0;
 
   .serch-wrapper {
     //margin-top: var(--status-bar-height);
-    margin-bottom: 30rpx;
+    margin-bottom: 16rpx;
     display: flex;
     justify-content: center;
     align-items: center;
@@ -1156,7 +1156,7 @@ page {
       width: 100%;
       height: 80rpx;
       background-color: #ffffff;
-      border-radius: 20rpx;
+      border-radius: 16rpx;
       font-size: 28rpx;
       color: #868686;
 
@@ -1183,7 +1183,7 @@ page {
 }
 
 .index-product-wrapper {
-  padding: 0 30rpx;
+  padding: 0 16rpx;
   margin-bottom: 200rpx; /* 为自定义 tabBar 留出空间 */
   min-height: 700rpx;
   //background: #fff;
@@ -1201,9 +1201,9 @@ page {
       width: 48.99%;
       //height: 490rpx;
       background-color: #ffffff;
-      box-shadow: 0rpx 3rpx 13rpx 0rpx rgba(0, 0, 0, 0.13);
-      border-radius: 20rpx;
-      margin-bottom: 20rpx;
+      // box-shadow: 0rpx 3rpx 13rpx 0rpx rgba(0, 0, 0, 0.13);
+      border-radius: 16rpx;
+      margin-bottom: 16rpx;
 
       overflow: hidden;
       display: flex;
@@ -1223,7 +1223,7 @@ page {
         padding: 10rpx 20rpx 20rpx;
 
         .title {
-          color: #222222;
+          color: #333;
           display: flex;
           align-items: center;
           justify-items: space-between;
@@ -1242,6 +1242,7 @@ page {
           }
           .text{
             width: 80%;
+			font-weight: bold;
           }
           .weight{
             background-color: rgba(197, 128, 3, 0.10);
@@ -1272,6 +1273,7 @@ page {
           .sales {
             font-size: 22rpx;
             white-space: nowrap;
+			flex-shrink: 0;
             color: #999999;
           }
 
@@ -1301,18 +1303,18 @@ page {
 }
 .top-bg-box2 {
   overflow: hidden;
-  padding: 20rpx;
+  padding: 16rpx;
   box-sizing: border-box;
   .title{
     font-size: 32rpx;
     color: #333333;
     font-weight: bold;
-    line-height: 60rpx;
+    line-height: 48rpx;
   }
 }
 .top-bg-box {
   overflow: hidden;
-  padding: 20rpx;
+  padding: 16rpx;
   box-sizing: border-box;
   // background-image: linear-gradient(
   //   to bottom,
@@ -1355,9 +1357,9 @@ page {
       }
 
       .updateTime {
-        font-size: 24rpx;
+        font-size: 20rpx;
         color: #666666;
-        padding: 0 20rpx;
+        padding: 0 20rpx 0 8rpx;
         box-sizing: border-box;
       }
     }
@@ -1367,14 +1369,15 @@ page {
       align-items: center;
 
       .txt {
-        font-size: 28rpx;
+        font-size: 24rpx;
         color: #666666;
       }
 
       .right {
-        width: 40rpx;
+        width: 24rpx;
+		height: 24rpx;
         vertical-align: middle;
-        margin-left: 10rpx; // 添加一些间距
+        // margin-left: 10rpx; // 添加一些间距
       }
     }
   }
@@ -1390,11 +1393,11 @@ page {
   .item {
     text-align: center;
     .price{
-      font-size: 44rpx;
-      color: #FD5B37;
+      font-size: 40rpx;
+      color: #FD5F3C;
       font-weight: bold;
       .unit{
-        font-size: 28rpx;
+        font-size: 24rpx;
       }
     }
     .txt{
@@ -1423,10 +1426,10 @@ page {
 // 分类卡片区域样式
 .classify-section {
   background: #fff;
-  margin: 0 20rpx;
+  margin: 0 16rpx;
   border-radius: 16rpx;
   padding: 30rpx 0 10rpx;
-  box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.06);
+  // box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.06);
 }
 
 .classify-scroll {
@@ -1455,7 +1458,7 @@ page {
 
   .classify-txt {
     font-size: 24rpx;
-    color: #666;
+    color: #333;
     margin-top: 10rpx;
     text-align: center;
     white-space: nowrap;

File diff suppressed because it is too large
+ 778 - 635
pages/merchantCenter/index.vue


+ 2 - 1
pages/merchantCenters/productCenter.vue

@@ -128,7 +128,8 @@ const getGroomList = async () => {
     loading.value = true;
     // params.value.merchantId = merchantInfo.value.id;
     params.value.keyword = searchVal.value;
-    const { data } = await productsList(params.value);
+	const id = merchantInfo.value.id;
+    const { data } = await productsList({...params.value,productCenter:true});
     goodsList.value = [...goodsList.value, ...data.list] || [];
     goodScroll.value = data.list.length >= params.value.limit;
     params.value.page++;

+ 3 - 3
pages/merchantCenters/releaseProduct.vue

@@ -132,7 +132,7 @@
                 <text class="upload-tip">点击上传</text>
               </view>
             </up-upload>
-            <text class="format-tip">支持上传PNG、JPG格式图片,每张不超过5MB,最多可上传5张。</text>
+            <text class="format-tip">支持上传PNG、JPG格式图片,每张不超过5MB,最多可上传10张。</text>
           </view>
         </view>
 
@@ -300,7 +300,7 @@
                 <text class="upload-tip">点击上传</text>
               </view>
             </up-upload>
-            <text class="format-tip">支持上传PNG、JPG格式图片,每张不超过5MB,最多可上传5张。</text>
+            <text class="format-tip">支持上传PNG、JPG格式图片,每张不超过5MB,最多可上传1张。</text>
           </view>
         </view>
         <up-form-item
@@ -945,7 +945,7 @@ const submitForm = async () => {
         additionalAmount :formData.value.additionalFee,
         attrValue:"{\"规格\":\"默认\"}",
         barCode : formData.value.barCode,
-        image : isProductCenter.value ? productImagesGg.value[0].url : productImagesGg.value[0].info.url,
+        image : productImagesGg.value[0]?.info?.url || productImagesGg.value[0].url,
         price : formData.value.laborCost,
         stock : formData.value.stock,
         weight :formData.value.weight

+ 13 - 9
pages/order_addcart/order_addcart.vue

@@ -1386,9 +1386,9 @@ const toMerchant = (obj) => {
         align-items: center;
 
         .pictrue {
-          width: 160rpx;
-          height: 160rpx;
-          margin-right: 15rpx;
+          width: 176rpx;
+          height: 176rpx;
+          margin-right: 16rpx;
 
           image {
             width: 100%;
@@ -1401,9 +1401,10 @@ const toMerchant = (obj) => {
         .text {
           width: 402rpx;
           font-size: 28rpx;
-          color: #282828;
+		  font-weight: bold;
+          color: #333;
           .storeName{
-            width: 40%;
+            width: 50%;
           }
           .reColor {
             color: #999;
@@ -1536,8 +1537,8 @@ const toMerchant = (obj) => {
         .picTxt {
           width: 576rpx;
           .pictrue {
-            width: 160rpx;
-            height: 160rpx;
+            width: 176rpx;
+            height: 176rpx;
             image {
               width: 100%;
               height: 100%;
@@ -1593,6 +1594,7 @@ const toMerchant = (obj) => {
   }
   .placeOrder {
     color: #333;
+	font-weight: bold;
     font-size: 32rpx;
     width: 192rpx;
     height: 88rpx;
@@ -1649,11 +1651,13 @@ const toMerchant = (obj) => {
         width: 40rpx;
         height: 40rpx;
         border-radius: 50%;
-        margin-right: 20rpx;
+        margin-right: 8rpx;
       }
 
       .merchant-name {
-        font-size: 24rpx;
+        font-size: 26rpx;
+		line-height: 40rpx;
+		margin-right: 16rpx;
         color: #333;
       }
     }

+ 1 - 0
pages/user/index.vue

@@ -907,6 +907,7 @@ function handleFaceDetect() {
 
 .wallet-btn {
   flex: 1;
+  font-weight: bold;
   text-align: center;
   height: 88rpx;
   line-height: 88rpx;

+ 1 - 0
pages/users/order_confirm/index.vue

@@ -1422,6 +1422,7 @@ const SubOrder = async (e) => {
     left: 0;
 
     .settlement {
+		font-weight: bold;
       font-size: 30rpx;
       color: #fff;
       width: 240rpx;

+ 2 - 0
pages/users/user_address/index.vue

@@ -473,6 +473,7 @@ function ChangeIsDefault() {
 
 .addAddress .keepBnt {
   width: 690rpx;
+  font-weight: bold;
   height: 86rpx;
   border-radius: 50rpx;
   text-align: center;
@@ -484,6 +485,7 @@ function ChangeIsDefault() {
 
 .addAddress .wechatAddress {
   width: 690rpx;
+  font-weight: bold;
   height: 86rpx;
   border-radius: 50rpx;
   text-align: center;

+ 1 - 0
pages/users/user_address_list/index.vue

@@ -514,6 +514,7 @@ onReachBottom(() => {
 
 .footer .addressBnt {
   width: 330rpx;
+  font-weight: bold;
   height: 76rpx;
   border-radius: 50rpx;
   text-align: center;

+ 4 - 0
static/css/base.css

@@ -482,4 +482,8 @@ checkbox .uni-checkbox-input.uni-checkbox-input-checked::before {
 }
 .whiteBg-tabsimg{
 	background: url('https://sb-admin.oss-cn-shenzhen.aliyuncs.com/shuibei-mini/new-mini/logintab.png');
+}
+
+.product-con .uni-swiper-dots-horizontal{
+  bottom: 42rpx;
 }