Selaa lähdekoodia

Merge branch 'master' into zhongqi-chat

shizhongqi 11 kuukautta sitten
vanhempi
commit
7b8521af00

+ 6 - 2
ghsPad/src/pages/home/components/rightGoods.vue

@@ -226,12 +226,16 @@ export default {
                     }
                     .shop-info_price {
                         position: absolute;
-                        background-color: rgba(0, 0, 0, 0.5);
+                        background-color: #000000;
+                        opacity: 0.6;
                         bottom: 0;
+                        left: 0;
                         width: 100%;
                         font-size: 12upx;
                         color: #ffffff;
-                        height:22upx;
+                        height: 22upx;
+                        box-sizing: border-box;
+                        z-index: 10;
                         & > view {
                             & > view:nth-child(1) {
                                 overflow: hidden;

+ 6 - 2
ghsPad/src/pages/home/components/rightItem.vue

@@ -131,12 +131,16 @@ export default {
                 }
                 .shop-info_price {
                     position: absolute;
-                    background-color: rgba(0, 0, 0, 0.5);
+                    background-color: #000000;
+                    opacity: 0.6;
                     bottom: 0;
+                    left: 0;
                     width: 100%;
                     font-size: 12upx;
                     color: #ffffff;
-                    height:22upx;
+                    height: 22upx;
+                    box-sizing: border-box;
+                    z-index: 10;
                     & > view {
                         & > view:nth-child(1) {
                             overflow: hidden;

+ 1 - 1
ghsPad/src/pages/home/components/workList.vue

@@ -199,7 +199,7 @@ export default {
     & .title {
         padding: 3upx;
         font-size: 12upx;
-        background-color: rgba(72, 91, 107, 1);
+        background-color: #485B6B;
         color: #FFFFFF;
     }
     & .order-status{

+ 1 - 1
ghsPad/src/pages/home/make.vue

@@ -160,7 +160,7 @@ export default {
 	}
 	& .nav-left {
 		flex: 5;
-		background-color: rgba(72, 91, 107, 1);
+		background-color: #485B6B;
 	}
 	& .itemList-box {
 		flex: 30;

+ 1 - 1
ghsPad/src/pages/home/modify.vue

@@ -116,7 +116,7 @@ export default {
 	}
 	& .nav-left {
 		flex: 5;
-		background-color: rgba(72, 91, 107, 1);
+		background-color: #485B6B;
 	}
 	& .itemList-box {
 		flex: 30;

+ 1 - 1
ghsPad/src/pages/home/mt.vue

@@ -77,7 +77,7 @@ export default {
 	height: 100vh;
 	& .nav-left {
 		flex: 5;
-		background-color: rgba(72, 91, 107, 1);
+		background-color: #485B6B;
 	}
 	& .work-list {
 		flex: 32;

+ 1 - 1
ghsPad/src/pages/home/retail.vue

@@ -45,7 +45,7 @@ export default {
 	height: 100vh;
 	& .nav-left {
 		flex: 5;
-		background-color: rgba(72, 91, 107, 1);
+		background-color: #485B6B;
 	}
 	& .work-list {
 		flex: 32;

+ 1 - 1
ghsPad/src/pages/home/selectCustom.vue

@@ -80,7 +80,7 @@ export default {
 	height: 100vh;
 	& .nav-left {
 		flex: 5;
-		background-color: rgba(72, 91, 107, 1);
+		background-color: #485B6B;
 	}
     & .select-custom{
         flex: 121;

+ 1 - 1
ghsPad/src/pages/home/selectMake.vue

@@ -142,7 +142,7 @@ export default {
 	}
 	& .nav-left {
 		flex: 5;
-		background-color: rgba(72, 91, 107, 1);
+		background-color: #485B6B;
 	}
 	& .itemList-box {
 		flex: 30;

+ 1 - 1
ghsPad/src/pages/home/sh.vue

@@ -77,7 +77,7 @@ export default {
 	height: 100vh;
 	& .nav-left {
 		flex: 5;
-		background-color: rgba(72, 91, 107, 1);
+		background-color: #485B6B;
 	}
 	& .work-list {
 		flex: 32;

+ 1 - 1
ghsPad/src/pages/home/work.vue

@@ -77,7 +77,7 @@ export default {
 	height: 100vh;
 	& .nav-left {
 		flex: 5;
-		background-color: rgba(72, 91, 107, 1);
+		background-color: #485B6B;
 	}
 	& .work-list {
 		flex: 32;

+ 1 - 1
hdApp/src/admin/billing/affirm.vue

@@ -661,7 +661,7 @@ export default {
       let orderId = this.option.orderId  ? this.option.orderId : 0
 			let book = this.option.book ? this.option.book : 0
 			let reduceStock = this.option.reduceStock?this.option.reduceStock:0
-      params = {...params,orderId:orderId,book:book,reduceStock:reduceStock,version:2}
+      params = {...params,orderId:orderId,book:book,reduceStock:reduceStock,version:3}
 
       uni.showLoading({mask:true})
       createOrder(params).then((res) => {

+ 1 - 1
hdApp/src/admin/home/apply.vue

@@ -63,8 +63,8 @@ export default {
             { name: "功能开关", img: `${this.$constant.hostUrl}/image/ghs/home/shop2.png`, url: "/pagesPurchase/open",pf:1},
             { name: "失信人员", img: `${this.$constant.hostUrl}/image/ghs/home/shop2.png`, url: "/admin/ll/list",pf:1},
             { name: "充值规则", img: `${this.$constant.hostUrl}/image/ghs/home/shop2.png`, url: "/admin/recharge/discount",pf:1},
-            { name: "收款码", img: `${this.$constant.hostUrl}/image/ghs/home/shop2.png`, url: "/admin/cg/code",pf:1},
             { name: "会员等级", img: `${this.$constant.hostUrl}/image/ghs/home/shop2.png`, url: "/admin/member/level",pf:1},
+            { name: "收款码", img: `${this.$constant.hostUrl}/image/ghs/home/shop2.png`, url: "/admin/cg/code",pf:1}
           ]
         },
         {

+ 2 - 2
hdApp/src/admin/home/workbench.vue

@@ -95,7 +95,7 @@
               <view class="icon-wrapper">
                 <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
               </view>
-              <view class="icon-text" style="color:#3385FF;font-weight:bold;">开单</view>
+              <view class="icon-text">开单</view>
             </view>
             <view class="icon-item" @click="goHsKjKd">
               <view class="icon-wrapper">
@@ -154,7 +154,7 @@
               <view class="icon-wrapper">
                 <image class="icon-image" :src="`${constant.hostUrl}/image/ghs/home/shop2.png`" mode="aspectFit"></image>
               </view>
-              <view class="icon-text" style="color:#3385FF;font-weight:bold;">开单</view>
+              <view class="icon-text">开单</view>
             </view>
             <view class="icon-item" @click="goItemKjKd()">
               <view class="icon-wrapper">

+ 1 - 1
hdApp/src/admin/order/workOrder.vue

@@ -222,7 +222,7 @@ export default {
       that.$util.confirmModal({content:'确认提交?'},() => {
           uni.showLoading({mask:true})
           let name = that.kindSelectedData.name ? that.kindSelectedData.name : ''
-          createOrder({...that.form,unitGoodsPrice:this.goodsPrice,modifyPrice:modifyPrice,name:name,kindName:name,customId:customId}).then((res) => {
+          createOrder({...that.form,unitGoodsPrice:this.goodsPrice,modifyPrice:modifyPrice,name:name,kindName:name,customId:customId,needWork:1,version:3}).then((res) => {
             uni.hideLoading()
             that.pageTo({url: '/admin/order/workOrderResult',type:2,query:{id:res.data.id}})
           })

+ 205 - 157
hdApp/src/admin/recharge/discount.vue

@@ -24,52 +24,49 @@
 				</view>
 			</view>
 
-			<!-- 充值档位列表 -->
-			<view class="tier-list">
-				<view class="tier-item" v-for="(item, inIndex) in map" :key="inIndex">
-					<view class="tier-badge">
-						<text class="tier-number">{{ inIndex + 1 }}</text>
+					<!-- 充值档位表格 -->
+		<view class="tier-table">
+			<!-- 表头 -->
+			<view class="table-header">
+				<view class="header-cell serial">序号</view>
+				<view class="header-cell recharge">充值金额(¥)</view>
+				<view class="header-cell give">赠送金额(¥)</view>
+				<view class="header-cell discount">折扣率</view>
+			</view>
+			
+			<!-- 表格内容 -->
+			<view class="table-body">
+				<view class="table-row" v-for="(item, inIndex) in map" :key="inIndex">
+					<view class="table-cell serial">
+						<text class="serial-number">{{ inIndex + 1 }}</text>
 					</view>
-					<view class="tier-content">
-						<view class="tier-row">
-							<view class="input-section">
-								<view class="input-header">
-									<text class="input-label">充值金额</text>
-									<text class="currency-symbol">¥</text>
-								</view>
-								<input
-									v-model="item.recharge"
-									type="digit"
-									class="amount-input recharge-input"
-									@focus="() => clearRecharge(inIndex)"
-									placeholder="0"
-								/>
-							</view>
-							
-							<view class="input-section">
-								<view class="input-header">
-									<text class="input-label">赠送金额</text>
-									<text class="currency-symbol">¥</text>
-								</view>
-								<input
-									v-model="item.give"
-									type="digit"
-									class="amount-input give-input"
-									@focus="() => clearGive(inIndex)"
-									placeholder="0"
-								/>
-							</view>
-						</view>
-						
-						<!-- 折扣显示 -->
-						<view class="discount-display" v-if="item.recharge && item.give">
-							<text class="discount-text">
-								相当于 {{ getDiscountRate(item.recharge, item.give) }} 折优惠
-							</text>
-						</view>
+					<view class="table-cell recharge">
+						<input
+							v-model="item.recharge"
+							type="digit"
+							class="table-input recharge-input"
+							@focus="() => clearRecharge(inIndex)"
+							placeholder="0"
+						/>
+					</view>
+					<view class="table-cell give">
+						<input
+							v-model="item.give"
+							type="digit"
+							class="table-input give-input"
+							@focus="() => clearGive(inIndex)"
+							placeholder="0"
+						/>
+					</view>
+					<view class="table-cell discount">
+						<text class="discount-text" v-if="item.recharge && item.give">
+							{{ getDiscountRate(item.recharge, item.give) }} 折
+						</text>
+						<text class="discount-placeholder" v-else>--</text>
 					</view>
 				</view>
 			</view>
+		</view>
 
 
 		</view>
@@ -308,125 +305,155 @@ export default {
 	}
 }
 
-/* ==== 档位列表 ==== */
-.tier-list {
-	.tier-item {
-		background: #fff;
-		border-radius: 16upx;
-		margin-bottom: 24upx;
-		overflow: hidden;
-		box-shadow: 0 4upx 16upx rgba(0, 0, 0, 0.06);
-		border: 1upx solid #e8f5e8;
-		position: relative;
+/* ==== 表格样式 ==== */
+.tier-table {
+	background: #fff;
+	border-radius: 12upx;
+	overflow: hidden;
+	border: 1upx solid #e5e5e5;
+	box-shadow: 0 2upx 8upx rgba(0, 0, 0, 0.06);
+	
+	.table-header {
+		display: flex;
+		background: #f8f9fa;
+		border-bottom: 1upx solid #e5e5e5;
 		
-		.tier-badge {
-			position: absolute;
-			top: 0;
-			right: 0;
-			background: linear-gradient(45deg, #049E2C, #09C567);
-			width: 60upx;
-			height: 60upx;
-			border-radius: 0 16upx 0 60upx;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			z-index: 10;
+		.header-cell {
+			padding: 24upx 16upx;
+			text-align: center;
+			font-size: 28upx;
+			font-weight: 600;
+			color: #333;
+			border-right: 1upx solid #e5e5e5;
 			
-			.tier-number {
-				color: #fff;
-				font-size: 24upx;
-				font-weight: 700;
+			&:last-child {
+				border-right: none;
+			}
+			
+			&.serial {
+				flex: 0 0 120upx;
+			}
+			
+			&.recharge {
+				flex: 1;
+			}
+			
+			&.give {
+				flex: 1;
+			}
+			
+			&.discount {
+				flex: 0 0 160upx;
 			}
 		}
-		
-		.tier-content {
-			padding: 30upx;
-			padding-top: 40upx;
+	}
+	
+	.table-body {
+		.table-row {
+			display: flex;
+			border-bottom: 1upx solid #f0f0f0;
+			transition: background-color 0.2s ease;
+			
+			&:hover {
+				background-color: #fafafa;
+			}
+			
+			&:last-child {
+				border-bottom: none;
+			}
 			
-			.tier-row {
+			.table-cell {
+				padding: 20upx 16upx;
+				text-align: center;
+				border-right: 1upx solid #f0f0f0;
 				display: flex;
-				align-items: flex-end;
-				justify-content: space-between;
-				gap: 30upx;
-				margin-bottom: 20upx;
+				align-items: center;
+				justify-content: center;
+				
+				&:last-child {
+					border-right: none;
+				}
+				
+				&.serial {
+					flex: 0 0 120upx;
+					
+					.serial-number {
+						width: 40upx;
+						height: 40upx;
+						background: #049E2C;
+						color: #fff;
+						border-radius: 50%;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						font-size: 24upx;
+						font-weight: 600;
+					}
+				}
+				
+				&.recharge {
+					flex: 1;
+				}
+				
+				&.give {
+					flex: 1;
+				}
+				
+				&.discount {
+					flex: 0 0 160upx;
+					
+					.discount-text {
+						font-size: 26upx;
+						color: #ff6b35;
+						font-weight: 600;
+					}
+					
+					.discount-placeholder {
+						font-size: 24upx;
+						color: #ccc;
+					}
+				}
 			}
 		}
 	}
 }
 
-/* ==== 输入区域 ==== */
-.input-section {
-	flex: 1;
+/* ==== 表格输入框样式 ==== */
+.table-input {
+	width: 100%;
+	height: 60upx;
+	border: 1upx solid #ddd;
+	border-radius: 6upx;
+	padding: 0 12upx;
+	font-size: 28upx;
+	font-weight: 500;
+	text-align: center;
+	color: #333;
+	background: #fff;
+	transition: all 0.2s ease;
 	
-	.input-header {
-		display: flex;
-		align-items: baseline;
-		margin-bottom: 12upx;
-		
-		.input-label {
-			font-size: 26upx;
-			color: #666;
-			font-weight: 500;
-			margin-right: 8upx;
-		}
-		
-		.currency-symbol {
-			font-size: 28upx;
-			color: #049E2C;
-			font-weight: 700;
-		}
+	&:focus {
+		border-color: #049E2C;
+		outline: none;
+		background: #f9fff9;
 	}
 	
-	.amount-input {
-		width: 100%;
-		height: 88upx;
-		border: 2upx solid #e1f4e3;
-		border-radius: 12upx;
-		padding: 0 20upx;
-		font-size: 36upx;
-		font-weight: 600;
-		text-align: center;
-		color: #1a1a1a;
-		background: #fff;
-		transition: all 0.3s ease;
-		
-		&:focus {
-			border-color: #09C567;
-			box-shadow: 0 0 0 6upx rgba(9, 197, 103, 0.1);
-			outline: none;
-		}
-		
-		&.recharge-input:focus {
-			color: #049E2C;
-		}
-		
-		&.give-input:focus {
-			color: #ff6b35;
-		}
-		
-		&::placeholder {
-			color: #bbb;
-			font-weight: 400;
-		}
+	&.recharge-input:focus {
+		border-color: #049E2C;
+	}
+	
+	&.give-input:focus {
+		border-color: #ff6b35;
+	}
+	
+	&::placeholder {
+		color: #ccc;
+		font-weight: 400;
 	}
 }
 
 
 
-/* ==== 折扣显示 ==== */
-.discount-display {
-	background: linear-gradient(45deg, #ffe5e5, #fff0e5);
-	border-radius: 12upx;
-	padding: 16upx 20upx;
-	text-align: center;
-	border: 1upx solid #ffd0d0;
-	
-	.discount-text {
-		font-size: 26upx;
-		color: #d84315;
-		font-weight: 600;
-	}
-}
 
 
 
@@ -445,33 +472,54 @@ export default {
 
 /* ==== 响应式设计 ==== */
 @media screen and (max-width: 450px) {
-	.tier-row {
-		flex-direction: column !important;
-		align-items: stretch !important;
-		gap: 20upx;
+	.tier-table {
+		.table-header,
+		.table-row {
+			font-size: 24upx;
+		}
+		
+		.header-cell,
+		.table-cell {
+			padding: 16upx 8upx;
+			
+			&.serial {
+				flex: 0 0 80upx;
+				
+				.serial-number {
+					width: 32upx;
+					height: 32upx;
+					font-size: 20upx;
+				}
+			}
+			
+			&.discount {
+				flex: 0 0 120upx;
+			}
+		}
 		
-		.input-section {
-			width: 100%;
+		.table-input {
+			height: 50upx;
+			font-size: 24upx;
 		}
 	}
 }
 
 /* ==== 动画效果 ==== */
-.tier-item {
-	animation: slideInUp 0.6s ease-out;
+.table-row {
+	animation: slideInUp 0.4s ease-out;
 	animation-fill-mode: both;
 	
 	&:nth-child(1) { animation-delay: 0.1s; }
-	&:nth-child(2) { animation-delay: 0.2s; }
-	&:nth-child(3) { animation-delay: 0.3s; }
-	&:nth-child(4) { animation-delay: 0.4s; }
-	&:nth-child(5) { animation-delay: 0.5s; }
+	&:nth-child(2) { animation-delay: 0.15s; }
+	&:nth-child(3) { animation-delay: 0.2s; }
+	&:nth-child(4) { animation-delay: 0.25s; }
+	&:nth-child(5) { animation-delay: 0.3s; }
 }
 
 @keyframes slideInUp {
 	from {
 		opacity: 0;
-		transform: translateY(30upx);
+		transform: translateY(20upx);
 	}
 	to {
 		opacity: 1;
@@ -479,8 +527,8 @@ export default {
 	}
 }
 
-.amount-input:focus {
-	animation: inputFocus 0.3s ease-out;
+.table-input:focus {
+	animation: inputFocus 0.2s ease-out;
 }
 
 @keyframes inputFocus {

+ 3 - 3
hdPad/src/pages/home/components/balanceChange.vue

@@ -146,7 +146,7 @@ export default {
     z-index: 10;
     width: 100%;
     background: #f5f7fa;
-    box-shadow: 0 2upx 4upx rgba(0,0,0,0.1);
+    box-shadow: 0 2upx 4upx #0000001A;
     flex: 1;
     
     .table-row {
@@ -161,7 +161,7 @@ export default {
     border-radius: 8upx;
     overflow: hidden;
     background: #fff;
-    box-shadow: 0 2upx 12upx rgba(0,0,0,0.04);
+    box-shadow: 0 2upx 12upx #0000000A;
     margin: 0 0 10upx 0;
     font-size: 8upx;
     box-sizing: border-box;
@@ -172,7 +172,7 @@ export default {
     margin-bottom: 8upx;
     background: #fff;
     border-radius: 6upx;
-    box-shadow: 0 1upx 4upx rgba(0,0,0,0.05);
+    box-shadow: 0 1upx 4upx #0000000D;
     overflow: hidden;
     border: 1upx solid #f0f0f0;
     

+ 2 - 2
hdPad/src/pages/home/components/birthdayEdit.vue

@@ -206,7 +206,7 @@ export default {
         color: white;
         border-color: #0076FF;
         transform: scale(1.1);
-        box-shadow: 0 2upx 4upx rgba(0, 118, 255, 0.2);
+        box-shadow: 0 2upx 4upx #0076FF33;
     }
     
     &:active {
@@ -243,7 +243,7 @@ export default {
         color: white;
         border-color: #0076FF;
         transform: scale(1.1);
-        box-shadow: 0 2upx 4upx rgba(0, 118, 255, 0.2);
+        box-shadow: 0 2upx 4upx #0076FF33;
     }
     
     &:active {

+ 6 - 5
hdPad/src/pages/home/components/console.vue

@@ -50,9 +50,9 @@
         <toPayWay @cancelPay="cancelPay()" @payFinish="payFinish()" @selectPayWayBack="selectPayWayBack" :orderId.sync="orderId" :price.sync="price"></toPayWay>
     </uni-popup>
 
-	<!-- 临时收款 -->
+	<!-- 直接收款 -->
 	<uni-popup ref="gatheringRef" background-color="#fff" type="center" :animation="false">
-		<selectPrice @confirmSelectPrice="confirmSelectPrice" @cancelSelectPrice="cancelSelectPrice"></selectPrice>
+		<selectPrice @zjGathering="zjGathering" @cancelSelectPrice="cancelSelectPrice"></selectPrice>
 	</uni-popup>
 
 	<!-- 开单选花材输入数量和金额 -->
@@ -247,10 +247,11 @@ export default {
 		cancelSelectPrice(){
 			this.$refs.gatheringRef.close()
 		},
-		confirmSelectPrice(params){
+		//直接收款
+		zjGathering(params){
 			uni.showLoading({mask:true})
 			//isCashier=1时收银台播放 总金额139元,请扫码付款
-			createOrder({orderName:params.name,lsGoodsPrice:params.price,modifyPrice:params.price,isCashier:1,cash:params.cash,customId:this.customId}).then(res=>{
+			createOrder({orderName:params.name,lsGoodsPrice:params.price,modifyPrice:params.price,isCashier:1,cash:params.cash,customId:this.customId,version:3,zjGathering:1}).then(res=>{
 				uni.hideLoading()
 				if(res.code == 1){
 					if(res.data.status == 1){
@@ -299,7 +300,7 @@ export default {
 			uni.showLoading({mask:false})
 			let product = this.selectList.map(i=>({ productId:i.id, unitType: i.unitType||0, num: i.currentNum, property: i.property, unitPrice: i.unitPrice }))
 			//isCashier=1时收银台播放 总金额139元,请扫码付款
-			createOrder({...params,product:JSON.stringify(product),isCashier:1,customId:this.customId,version:2}).then(res=>{
+			createOrder({...params,product:JSON.stringify(product),isCashier:1,customId:this.customId,version:3}).then(res=>{
 				uni.hideLoading()
 				if(res.code == 1){
 					if(res.data.diff && !this.$util.isEmpty(res.data.diff)){

+ 2 - 2
hdPad/src/pages/home/components/customList.vue

@@ -330,7 +330,7 @@ export default {
                             font-size: 9upx;
                             color: #E05050;
                             font-weight: normal;
-                            background-color: rgba(224, 80, 80, 0.08);
+                            background-color: #E0505014;
                             padding: 0 3upx;
                             border-radius: 3upx;
                             margin-left: 5upx;
@@ -352,7 +352,7 @@ export default {
                         & .level {
                             font-size: 10upx;
                             color: #7D6F00;
-                            background-color: rgba(255, 215, 0, 0.1);
+                            background-color: #FFD7001A;
                             border-radius: 3upx;
                             padding: 0 3upx;
                         }

+ 4 - 28
hdPad/src/pages/home/components/recharge.vue

@@ -61,31 +61,8 @@
           </view>
         </view>
 
-        <!-- 充值升级优惠 -->
-        <view v-if="rechargeWeal == 1" class="recharge-options">
-          <view class="options-title">充值活动:</view>
-          <view v-for="(item,index) in weal" :key="index" class="option-item">
-            <button 
-              @click="getRecharge(item.recharge)"
-              class="recharge-option-btn"
-              :class="[rForm.rechargeAmount == item.recharge ? 'selected' : '']"
-            >
-            <view class="option-content">
-              <view class="option-left">
-                <text class="recharge-amount">充值{{ item.recharge }}元</text>
-                <text class="upgrade-info">升{{ item.name }}</text>
-                <text class="discount-info">({{item.discount*100}}折)</text>
-              </view>
-              <view class="option-right">
-                {{ rForm.rechargeAmount == item.recharge ? '✓' : '选择' }}
-              </view>
-            </view>
-          </button>
-        </view>
-      </view>
-
         <!-- 充值送金额 -->
-        <view v-if="rechargeWeal == 2" class="recharge-options">
+        <view class="recharge-options">
           <view class="options-title">充值优惠方案:</view>
           <view v-for="(item,index) in weal" :key="index" class="option-item">
             <button 
@@ -146,7 +123,6 @@ export default {
     return {
       rechargeInputFocus: false,
       weal: [],
-      rechargeWeal: 0,
       showConfirmModal: false,
       confirmMessage: '确认充值?',
       confirmCallback: null,
@@ -165,7 +141,6 @@ export default {
       getWeal().then(res => {
         if (res.code == 1) {
           this.weal = res.data.weal ? res.data.weal : []
-          this.rechargeWeal = res.data.rechargeWeal ? res.data.rechargeWeal : 0
         }
       })
     },
@@ -435,7 +410,8 @@ export default {
   left: 0;
   right: 0;
   bottom: 0;
-  background-color: rgba(0, 0, 0, 0.3);
+  background-color: #000000;
+  opacity: 0.6;
   pointer-events: auto;
 }
 
@@ -447,7 +423,7 @@ export default {
   background-color: #fff;
   border-radius: 8upx;
   overflow: hidden;
-  box-shadow: 0 2upx 10upx rgba(0, 0, 0, 0.2);
+  box-shadow: 0 2upx 10upx #00000033;
   pointer-events: auto;
 }
 

+ 5 - 1
hdPad/src/pages/home/components/rightGoods.vue

@@ -244,12 +244,16 @@ export default {
                     }
                     .shop-info_price {
                         position: absolute;
-                        background-color: rgba(0, 0, 0, 0.5);
+                        background-color: #000000;
+                        opacity: 0.6;
                         bottom: 0;
+                        left: 0;
                         width: 100%;
                         font-size: 12upx;
                         color: #ffffff;
                         height: 22upx;
+                        box-sizing: border-box;
+                        z-index: 10;
                         & > view {
                             & > view:nth-child(1) {
                                 overflow: hidden;

+ 6 - 2
hdPad/src/pages/home/components/rightItem.vue

@@ -131,12 +131,16 @@ export default {
                 }
                 .shop-info_price {
                     position: absolute;
-                    background-color: rgba(0, 0, 0, 0.5);
+                    background-color: #000000;
+                    opacity: 0.6;
                     bottom: 0;
+                    left: 0;
                     width: 100%;
                     font-size: 12upx;
                     color: #ffffff;
-                    height:22upx;
+                    height: 22upx;
+                    box-sizing: border-box;
+                    z-index: 10;
                     & > view {
                         & > view:nth-child(1) {
                             overflow: hidden;

+ 1 - 1
hdPad/src/pages/home/components/selectPrice.vue

@@ -115,7 +115,7 @@ export default {
                 this.$msg('请填写金额')
                 return
             }
-            this.$emit('confirmSelectPrice', {price:Number(this.price),name:this.name,cash:Number(this.cash)})
+            this.$emit('zjGathering', {price:Number(this.price),name:this.name,cash:Number(this.cash)})
         }
     }
 }

+ 98 - 124
mallApp/src/pages/goods/components/sel-popup.vue

@@ -3,47 +3,27 @@
     <bottom-popup class="popup-wrap" :show="show" @close="close">
       <app-close @close="close" />
       <div class="tui-popup-box">
-        <div class="tui-product-box">
-          <template v-if="info.goodsStyle == 1">
-              <img :src="info.goodsStyleList[selIndex].img" class="tui-popup-img" />
-          </template>
-          <template v-else>
-              <img :src="imgNormal" class="tui-popup-img" />
-          </template>
-          <div class="tui-popup-price" v-if="!$util.isEmpty(info.goodsStyleList)">
-            <div
-              class="goods-tit app-bold app-font-size-30"
-            >{{ info.goodsStyleList[selIndex].styleName }}</div>
-            <div class="tui-amount tui-bold">¥{{ info.goodsStyleList[selIndex].price }}</div>
-          </div>
-          <div class="tui-popup-price" v-else>
-            <div class="goods-tit app-bold app-font-size-30">{{ info.goodsName }}</div>
-            <div class="tui-amount tui-bold">¥{{ info.price }}</div>
-          </div>
-        </div>
         <scroll-view scroll-y class="tui-popup-scroll">
           <div class="tui-scrolldiv-box">
-            <template v-if="$util.isEmpty(info.goodsStyleList) == false">
-              <div class="tui-bold tui-attr-title">款式</div>
-              <div class="tui-attr-box">
-                <div
-                  class="tui-attr-item"
-                  :class="{'tui-attr-active': selIndex == index}"
-                  v-for="(item, index) in info.goodsStyleList"
-                  :key="index"
-                  @click="changeStyleFn(index)"
-                >{{ item.styleName }}</div>
-              </div>
-            </template>
-
             <div class="tui-number-box tui-bold tui-attr-title">
               <div class="tui-attr-title">数量</div>
-              <number-box :max="maxStock" :min="1" :value="buyNum" @change="change"></number-box>
+              <div class="number-box-wrapper">
+                <number-box 
+                  :max="maxStock" 
+                  :min="1" 
+                  :value="buyNum" 
+                  :iconSize="36" 
+                  :height="60" 
+                  :width="120" 
+                  :size="32"
+                  @change="change">
+                </number-box>
+              </div>
             </div>
           </div>
         </scroll-view>
         <div class="tui-popup-btn">
-          <button class="button-com red" @click="nextFn">下一步</button>
+          <button class="button-com red enhanced-btn" @click="nextFn">下一步</button>
         </div>
       </div>
     </bottom-popup>
@@ -90,13 +70,6 @@ export default {
     };
   },
   computed: {
-    imgNormal() {
-      if (!this.$util.isEmpty(this.info)) {
-        return this.info.smallImgList[0];
-      } else {
-        return "";
-      }
-    },
     maxStock() {
       return 9999
     }
@@ -108,9 +81,6 @@ export default {
     close() {
       this.$emit("close");
     },
-    changeStyleFn(index) {
-      this.selIndex = index;
-    },
     nextFn() {
       if(Number(this.info.price) <= 0){
         this.$msg('商品还没有价格哦')
@@ -134,7 +104,9 @@ export default {
 
   .tui-popup-box {
     position: relative;
-    padding: 30upx 30upx 100upx;
+    padding: 60upx 30upx 140upx;
+    background: #fff;
+    min-height: 300upx;
   }
 
   .tui-popup-btn {
@@ -142,109 +114,111 @@ export default {
     position: absolute;
     left: 0;
     bottom: 0;
-    padding: 14upx 0;
+    padding: 20upx 30upx 40upx 30upx;
+    padding-bottom: calc(40upx + env(safe-area-inset-bottom));
     @include disFlex(center, center);
     border-top: 1upx solid $borderColor;
+    background: #fff;
+    
     .button-com {
-      width: 80%;
-      font-size: 32upx;
-      height: 88upx; // 增加按钮高度
-      line-height: 88upx; // 设置行高等于高度,实现垂直居中
-      display: flex; // 使用flex布局
-      align-items: center; // 垂直居中
-      justify-content: center; // 水平居中
-      padding: 0; // 移除默认内边距,使用flex布局控制
-    }
-  }
-
-  .tui-product-box {
-    display: flex;
-    align-items: center;
-    font-size: 24upx;
-    padding-bottom: 30upx;
-  }
-
-  .tui-popup-img {
-    height: 200upx;
-    width: 200upx;
-    border-radius: 24upx;
-    display: block;
-  }
-
-  .tui-popup-price {
-    padding-left: 20upx;
-    padding-bottom: 8upx;
-    .goods-tit {
-      margin-bottom: 75upx;
+      width: 100%;
+      font-size: 36upx;
+      height: 110upx;
+      border-radius: 55upx;
+      font-weight: 600;
+      letter-spacing: 2upx;
+      box-shadow: 0 8upx 24upx rgba(228, 31, 25, 0.3);
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      line-height: 1;
+      padding: 0;
+      
+      &.enhanced-btn {
+        background: linear-gradient(135deg, #ff4757 0%, #e41f19 100%);
+        border: none;
+        color: #fff;
+      }
     }
   }
 
-  .tui-amount {
-    color: #ff201f;
-    font-size: 36upx;
-  }
 
   .tui-popup-scroll {
-    max-height: 380upx;
-    font-size: 26upx;
+    max-height: 400upx;
+    font-size: 28upx;
   }
 
-  .tui-scrollview-box {
-    padding: 0 30upx 60upx 30upx;
-    box-sizing: border-box;
+  .tui-scrolldiv-box {
+    padding: 10upx 0;
   }
 
+
   .tui-attr-title {
-    padding: 10upx 0;
+    padding: 0 0 20upx 0;
     color: #333;
+    font-size: 32upx;
+    font-weight: 600;
+    text-align: left;
   }
 
-  .tui-attr-box {
-    font-size: 0;
-    padding: 20upx 0;
-  }
 
-  .tui-attr-item {
-    max-width: 100%;
-    min-width: 200upx;
-    height: 64upx;
-    display: -webkit-inline-flex;
-    display: inline-flex;
+  .tui-number-box {
+    display: flex;
     align-items: center;
-    justify-content: center;
-    background: #f7f7f7;
-    padding: 0 26upx;
+    justify-content: space-between;
+    padding: 30upx 0 40upx 0;
     box-sizing: border-box;
-    border-radius: 32upx;
-    margin-right: 20upx;
-    margin-bottom: 20upx;
-    font-size: 26upx;
-  }
-
-  .tui-attr-active {
-    background: #fcedea !important;
-    color: #e41f19;
-    font-weight: bold;
-    position: relative;
+    background: #fafafa;
+    border-radius: 16upx;
+    margin: 20upx 0;
+    padding: 40upx 30upx;
   }
 
-  .tui-attr-active::after {
-    content: "";
-    position: absolute;
-    border: 1upx solid #e41f19;
-    width: 100%;
-    height: 100%;
-    border-radius: 40upx;
-    left: 0;
-    top: 0;
-  }
-
-  .tui-number-box {
+  .number-box-wrapper {
     display: flex;
+    justify-content: center;
     align-items: center;
-    justify-content: space-between;
-    padding: 20upx 0 30upx 0;
-    box-sizing: border-box;
+  }
+
+  // 覆盖 number-box 组件的样式
+  ::v-deep .tui-numberbox {
+    .tui-numbox-icon {
+      width: 60upx;
+      height: 60upx;
+      border-radius: 50%;
+      background: #fff;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      box-shadow: 0 2upx 8upx rgba(0, 0, 0, 0.1);
+      padding: 0;
+      
+      &:before {
+        font-size: 36upx !important;
+        font-weight: bold;
+      }
+      
+      &.tui-disabled {
+        background: #f0f0f0;
+        box-shadow: none;
+        
+        &:before {
+          color: #ccc !important;
+        }
+      }
+    }
+    
+    .tui-num-input {
+      width: 120upx !important;
+      height: 60upx !important;
+      margin: 0 20upx !important;
+      background: #fff !important;
+      border-radius: 12upx !important;
+      border: 2upx solid #e8e8e8 !important;
+      font-size: 32upx !important;
+      font-weight: 600 !important;
+      box-shadow: 0 2upx 8upx rgba(0, 0, 0, 0.08);
+    }
   }
 }
 </style>

+ 23 - 11
mallApp/src/pages/home/category.vue

@@ -13,13 +13,7 @@
 		<!-- 搜索框和按钮区域 -->
 		<view class="search-wrap">
 			<view class="search-bar">
-				<app-search-module 
-					v-model="searchText" 
-					placeholder="搜索商品" 
-					@input="searchFn" 
-					:height="66"
-					:fontSize="28"
-				/>
+				<app-search-module v-model="searchText" placeholder="搜索商品" @input="searchFn" :height="66" :fontSize="28" />
 			</view>
 			<view class="buy-flower-container">
 				<button class="buy-flower-btn" @click="buyAlbum()">
@@ -52,7 +46,7 @@
           <view class="goods-det">
             <view class="goods-det-top">
               <view class="goods-name">{{ items.name }}</view>
-              <view class="goods-sales"></view>
+              <view class="goods-sales">已售 {{ items.totalSold }}</view>
             </view>
             <view class="goods-price">¥{{ items.price?parseFloat(items.price):0 }}</view>
             <view class="buy-btn">购买</view>
@@ -78,7 +72,7 @@
             <view class="goods-det">
               <view class="goods-det-top">
                 <view class="goods-name">{{ items.name }}</view>
-                <view class="goods-sales"></view>
+                <view class="goods-sales">已售 {{ items.totalSold }}</view>
               </view>
               <view class="goods-price">¥{{ items.price?parseFloat(items.price):0 }}</view>
               <view class="buy-btn">购买</view>
@@ -524,10 +518,17 @@ page {
         font-size: 28upx;
         position: relative;
         width: calc(100% - 240upx);
+        height: 200upx;
+        display: flex;
+        flex-direction: column;
+        justify-content: space-between;
         .goods-det-top {
+          flex: 1;
+          display: flex;
+          flex-direction: column;
+          justify-content: space-between;
           .goods-name {
             font-size: 32upx;
-            margin-bottom: 10upx;
             overflow: hidden;
             text-overflow: ellipsis;
             display: -webkit-box;
@@ -535,13 +536,24 @@ page {
             line-clamp: 2;
             -webkit-box-orient: vertical;
             word-break: break-all;
+            height: 90upx; /* 固定高度,能容纳两行文字 */
+            line-height: 45upx;
+          }
+          .goods-sales {
+            font-size: 24upx;
+            color: #999;
+            height: 34upx;
+            line-height: 34upx;
+            margin-top: auto; /* 确保销量信息始终在底部 */
           }
         }
         .goods-price {
           font-size: 32upx;
-          margin-top: 50upx;
           color: $mainColor;
           font-weight: bold;
+          height: 45upx;
+          line-height: 45upx;
+          margin-top: 15upx;
         }
       }
     }

+ 25 - 39
mallApp/src/pages/home/mall.vue

@@ -56,32 +56,17 @@
     </scroll-view>
 
     <!-- 搜索结果展示区域 -->
-    <scroll-view
-      v-if="isSearchMode"
-      scroll-y
-      class="right-box"
-      @scrolltolower="reachBottom"
-    >
+    <scroll-view v-if="isSearchMode" scroll-y class="right-box" @scrolltolower="reachBottom" >
       <view class="page-view" v-if="!$util.isEmpty(list.data)">
-        <view
-          class="goods-list"
-          v-for="items in list.data"
-          :key="items.id"
-          @click="toBuy(items)"
-        >
+        <view class="goods-list" v-for="items in list.data" :key="items.id" @click="toBuy(items)" >
           <view class="img-blo">
             <image :src="items.smallCover" mode="aspectFill"></image>
           </view>
           <view class="goods-det">
             <view class="goods-det-top">
               <view class="goods-name">{{ items.name }}</view>
-              <view class="goods-sales"></view>
+              <view class="goods-sales">已售 {{ items.totalSold }}</view>
             </view>
-            <view
-              class="goods-price"
-              style="color: #867c7c; font-weight: normal; font-size: 24upx"
-              >销量 {{ items.totalSold }}</view
-            >
             <view class="buy-btn">选这个</view>
           </view>
         </view>
@@ -93,32 +78,17 @@
 
     <!-- 分类商品展示区域 -->
     <block v-for="(item, index) in tabbar" :key="index">
-      <scroll-view
-        scroll-y
-        class="right-box"
-        @scrolltolower="reachBottom"
-        v-if="!isSearchMode && currentTab == index"
-      >
+      <scroll-view scroll-y class="right-box" @scrolltolower="reachBottom" v-if="!isSearchMode && currentTab == index" >
         <view class="page-view" v-if="!$util.isEmpty(list.data)">
-          <view
-            class="goods-list"
-            v-for="items in list.data"
-            :key="items.id"
-            @click="toBuy(items)"
-          >
+          <view class="goods-list" v-for="items in list.data" :key="items.id" @click="toBuy(items)" >
             <view class="img-blo">
               <image :src="items.smallCover" mode="aspectFill"></image>
             </view>
             <view class="goods-det">
               <view class="goods-det-top">
                 <view class="goods-name">{{ items.name }}</view>
-                <view class="goods-sales"></view>
+                <view class="goods-sales">已售 {{ items.totalSold }}</view>
               </view>
-              <view
-                class="goods-price"
-                style="color: #867c7c; font-weight: normal; font-size: 24upx"
-                >销量 {{ items.totalSold }}</view
-              >
               <view class="buy-btn">选这个</view>
             </view>
           </view>
@@ -580,10 +550,17 @@ page {
         font-size: 28upx;
         position: relative;
         width: calc(100% - 240upx);
+        height: 160upx;
+        display: flex;
+        flex-direction: column;
+        justify-content: space-between;
         .goods-det-top {
+          flex: 1;
+          display: flex;
+          flex-direction: column;
+          justify-content: space-between;
           .goods-name {
             font-size: 32upx;
-            margin-bottom: 10upx;
             overflow: hidden;
             text-overflow: ellipsis;
             display: -webkit-box;
@@ -591,6 +568,15 @@ page {
             line-clamp: 2;
             -webkit-box-orient: vertical;
             word-break: break-all;
+            height: 90upx; /* 固定高度,能容纳两行文字 */
+            line-height: 45upx;
+          }
+          .goods-sales {
+            font-size: 24upx;
+            color: #999;
+            height: 34upx;
+            line-height: 34upx;
+            margin-top: auto; /* 确保销量信息始终在底部 */
           }
         }
         .goods-price {
@@ -764,7 +750,7 @@ page {
   padding: 10upx 0upx;
   font-size: 32upx;
   position: absolute;
-  right: 30upx;
-  top: 120upx;
+  right: 20upx;
+  top: 110upx;
 }
 </style>

+ 15 - 10
mallApp/src/pages/order/buy.vue

@@ -53,7 +53,7 @@
 <script>
 import TuiListCell from "@/components/plugin/list-cell";
 import AppDeliveryModule from "@/components/app-delivery";
-import AppListModule from "@/components/module/app-order-list2";
+import AppListModule from "./components/app-order-list2";
 import { getShopUser } from "@/utils/auth";
 import { getOrderShop } from "@/utils/config";
 import { createOrder,newFreight } from "@/api/order";
@@ -225,13 +225,13 @@ export default {
       let account = this.option.account?this.option.account:0
       createOrder({...form, ...this.form,hdId:hdId}).then(res => {
         uni.hideLoading()
-        uni.removeStorageSync("buyGoodsDetil")
-        let orderSn = res.data.orderSn?res.data.orderSn:''
-        let id = res.data.id?res.data.id:0
-        let totalPrice = res.data.totalPrice?res.data.totalPrice:0
-        this.$util.pageTo({url:"/pages/callback/pay?pageStatus=1&orderSn="+orderSn+'&hdId='+hdId+'&account='+account+'&id='+id+'&couponId=0&totalPrice='+totalPrice,type:2})
-      }).catch(()=>{
-        uni.hideLoading()
+        if(res.code == 1){
+          uni.removeStorageSync("buyGoodsDetil")
+          let orderSn = res.data.orderSn?res.data.orderSn:''
+          let id = res.data.id?res.data.id:0
+          let totalPrice = res.data.totalPrice?res.data.totalPrice:0
+          this.$util.pageTo({url:"/pages/callback/pay?pageStatus=1&orderSn="+orderSn+'&hdId='+hdId+'&account='+account+'&id='+id+'&couponId=0&totalPrice='+totalPrice,type:2})
+        }
       })
     }
   }
@@ -278,9 +278,14 @@ export default {
       padding-bottom: 20upx;
     }
     .shop-prompt {
-      @include disFlex(center, space-between);
-      color: $fontColor2;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+      color: black;
+      font-size:30upx;
+      font-weight:bold;
       margin-top: 20upx;
+      gap: 20upx;
       .iconchangjianwentixiangguanwenti2 {
         color: #ccc;
         margin-left: 10upx;

+ 14 - 4
mallApp/src/components/module/app-order-list2.vue → mallApp/src/pages/order/components/app-order-list2.vue

@@ -10,7 +10,7 @@
 				</div>
 			</div>
 			<div class="list-right">
-				<div class="price">¥{{info.price?parseFloat(info.price):0}}</div>
+				<div class="price">¥{{info.price?parseFloat(Number((info.price).toFixed(2))):0}}</div>
 				<div class="num">X{{info.buyNum}}</div>
 			</div>
 		</block>
@@ -46,9 +46,18 @@ export default {
 		.list-msg {
 			margin-left: 30upx;
 			.title {
-				font-size: 28upx;
-				color: $fontColor2;
+				font-size:34upx;
+				color: black;
+				font-weight:bold;
 				margin-bottom: 10upx;
+				max-width:600upx;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 2;
+				-webkit-box-orient: vertical;
+				line-height: 1.4;
+				max-height: calc(1.4em * 2);
 			}
 			.desc {
 				color: $fontColor3;
@@ -58,9 +67,10 @@ export default {
 	.list-right {
 		text-align: right;
 		color: $fontColor2;
+		font-size:30upx;
+		color: #252525;
 		.price {
 			margin-bottom: 70upx;
-			color: #333;
 		}
 	}
 }