Browse Source

Merge branch 'zhongqi-delivery' of git.huaml.com:zhh/front-end into zhongqi-delivery

shizhongqi 8 months ago
parent
commit
b4421e71ab

+ 2 - 2
ghsApp/src/components/mx-datepicker/mx-datepicker.vue

@@ -53,7 +53,7 @@
 						</view>
 					</block>
 				</view>
-				<view class="picker-modal-footer-btn">
+				<view class="picker-modal-footer-btn" style="font-size:40upx;">
 					<view class="picker-btn" :hover-stay-time="100" hover-class="picker-btn-active" @click="onCancel">取消</view>
 					<view class="picker-btn" :style="{color}" :hover-stay-time="100" hover-class="picker-btn-active" @click="onConfirm">确定</view>
 				</view>
@@ -83,7 +83,7 @@
 							<text class="picker-display-text">{{PickerTimeTitle}}</text>
 						</view>
 					</view>
-					<view class="picker-modal-footer-btn">
+					<view class="picker-modal-footer-btn" style="font-size:40upx;">
 						<view class="picker-btn" :hover-stay-time="100" hover-class="picker-btn-active" @click="onCancelTime">取消</view>
 						<view class="picker-btn" :style="{color}" :hover-stay-time="100" hover-class="picker-btn-active" @click="onConfirmTime">确定</view>
 					</view>

+ 249 - 6
hdApp/src/admin/billing/affirm.vue

@@ -189,13 +189,11 @@
           </view>
 				</tui-list-cell>
 
-					<tui-list-cell class="line-cell" :hover="false" :arrow="true">
+				<tui-list-cell class="line-cell" :hover="false" :arrow="true">
             <view class="tui-title" v-if="form.sendType == 1">取花时间</view>
-						<view class="tui-title" v-else>配送时间</view>
-						<picker mode="multiSelector" :range="timeOptions" @change="bindTimeChange">
-							<view class="uni-input" style="width:450upx;">{{form.reachPeriod}}</view>
-						</picker>
-					</tui-list-cell>
+					<view class="tui-title" v-else>配送时间</view>
+					<view class="uni-input" style="width:450upx;font-size:32upx;" @click="openTimePopup">{{form.reachPeriod}}</view>
+				</tui-list-cell>
 
           <tui-list-cell class="line-cell" :arrow="true">
             <div class="tui-title">开单人</div>
@@ -274,6 +272,70 @@
 			</view>
 		</uni-popup>
 
+    <!-- 配送时间选择弹框 -->
+    <uni-popup ref="timePopup" type="bottom" background-color="#fff">
+      <view class="time-picker-popup">
+        <view class="popup-header">
+          <text class="popup-title">选择配送时间</text>
+          <text class="popup-close" @click="closeTimePopup">×</text>
+        </view>
+        
+        <view class="time-sections">
+          <!-- 小时选择 -->
+          <view class="time-section">
+            <view class="section-title">小时</view>
+            <view class="hours-wrapper">
+              <scroll-view 
+                scroll-y="true" 
+                class="hours-scroll"
+                enhanced="true"
+                show-scrollbar="true"
+              >
+                <view class="hours-buttons">
+                  <button 
+                    v-for="(hour, index) in timeOptions[0]" 
+                    :key="index"
+                    class="time-button" 
+                    :class="{ active: selectedHour == hour }"
+                    @click="selectedHour = hour"
+                  >{{ hour }}</button>
+                </view>
+              </scroll-view>
+            </view>
+          </view>
+          
+          <!-- 分钟选择 -->
+          <view class="time-section">
+            <view class="section-title">分钟</view>
+            <view class="minutes-wrapper">
+              <scroll-view 
+                scroll-y="true" 
+                class="minutes-scroll"
+                enhanced="true"
+                show-scrollbar="true"
+              >
+                <view class="minutes-buttons">
+                  <button 
+                    v-for="(minute, index) in timeOptions[1]" 
+                    :key="index"
+                    class="time-button" 
+                    :class="{ active: selectedMinute == minute }"
+                    @click="selectedMinute = minute"
+                  >{{ minute }}</button>
+                </view>
+              </scroll-view>
+            </view>
+          </view>
+        </view>
+        
+        <!-- 操作按钮 -->
+        <view class="popup-footer">
+          <button class="footer-button default" @click="closeTimePopup">取消</button>
+          <button class="footer-button blue" @click="confirmTime">确认</button>
+        </view>
+      </view>
+    </uni-popup>
+
 		<uni-popup ref="discountRef" background-color="#fff" type="center" :animation="false" class="class-popup-style">
       <view style="display:flex;padding:20upx;min-height:25vh;justify-content: space-between;align-items:center;flex-wrap:wrap;">
         <text v-for="(item, index) in discountList" :key="index" @click="setDiscount(item.value)" 
@@ -420,6 +482,8 @@ export default {
       forwardPayWay:0,//不影响原有的form.payWay方式,重新定义一个
       reduceStock:0,
       timeOptions: [['00', '01', '02','03','04','05','06','07','08','09','10','11','12','13', '14','15','16','17','18','19','20','21','22','23'],['00', '05', '10','15','20','25','30','35','40','45','50','55']],
+      selectedHour: '12', // 选中的小时
+      selectedMinute: '00', // 选中的分钟
     };
   },
   onLoad (option) {
@@ -540,6 +604,22 @@ export default {
 			let timeOptions = this.timeOptions
 			this.form.reachPeriod = timeOptions[0][before]+':'+timeOptions[1][after]
 		},
+		openTimePopup() {
+			// 初始化为当前选中的时间
+			const [hour, minute] = this.form.reachPeriod.split(':')
+			this.selectedHour = hour
+			this.selectedMinute = minute
+			this.$refs.timePopup.open()
+		},
+		// 关闭时间选择弹框
+		closeTimePopup() {
+			this.$refs.timePopup.close()
+		},
+		// 确认时间选择
+		confirmTime() {
+			this.form.reachPeriod = `${this.selectedHour}:${this.selectedMinute}`
+			this.closeTimePopup()
+		},
     showDiscount(){
       this.$refs.discountRef.open('center')
     },
@@ -1065,4 +1145,167 @@ console.log(params)
     opacity: 0;
   }
 }
+
+/* 时间选择弹窗样式 */
+.time-picker-popup {
+	width: 100%;
+	background: #fff;
+	border-radius: 20upx 20upx 0 0;
+	display: flex;
+	flex-direction: column;
+	max-height: 94vh;
+	padding:0 0 120upx 0;
+}
+
+.popup-header {
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+	margin-bottom: 0;
+	padding: 30upx 20upx 20upx 20upx;
+	border-bottom: 2upx solid #f0f2f6;
+	flex-shrink: 0;
+}
+
+.popup-title {
+	font-size: 36upx;
+	color: #333;
+	font-weight: bold;
+}
+
+.popup-close {
+	font-size: 48upx;
+	color: #999;
+	line-height: 1;
+	cursor: pointer;
+}
+
+.time-sections {
+	display: flex;
+	flex-direction: column;
+	gap: 20upx;
+	margin-bottom: 0;
+	flex: 1;
+	padding: 20upx 20upx 0 20upx;
+	overflow: hidden;
+}
+
+.time-section {
+	flex: 1;
+	display: flex;
+	flex-direction: column;
+	min-height: 200upx;
+	
+	.section-title {
+		font-size: 28upx;
+		color: #333;
+		font-weight: 600;
+		margin-bottom: 12upx;
+		text-align: left;
+	}
+}
+
+.hours-wrapper {
+	width: 100%;
+	flex: 1;
+	background: #f8f9fa;
+	border: 2upx solid #e9ecef;
+	border-radius: 8upx;
+	position: relative;
+	overflow: hidden;
+	display: flex;
+	flex-direction: column;
+	min-height: 150upx;
+}
+
+.minutes-wrapper {
+	width: 100%;
+	flex: 1;
+	background: #f8f9fa;
+	border: 2upx solid #e9ecef;
+	border-radius: 8upx;
+	position: relative;
+	overflow: hidden;
+	display: flex;
+	flex-direction: column;
+	min-height: 150upx;
+}
+
+.hours-scroll,
+.minutes-scroll {
+	width: 100%;
+	height: 100%;
+	padding: 8upx;
+	box-sizing: border-box;
+}
+
+.hours-buttons,
+.minutes-buttons {
+	display: flex;
+	flex-wrap: wrap;
+	gap: 8upx;
+	justify-content: flex-start;
+}
+
+.time-button {
+	width: calc(25% - 6upx);
+	height: 60upx;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	background: #ffffff;
+	border: 2upx solid #e9ecef;
+	border-radius: 6upx;
+	font-size: 26upx;
+	color: #666;
+	box-sizing: border-box;
+	transition: all 0.2s;
+	flex-shrink: 0;
+	
+	&.active {
+		background: #3385FF;
+		border-color: #3385FF;
+		color: #fff;
+		font-weight: 500;
+	}
+	
+	&:active {
+		background: #e8f5ff;
+	}
+}
+
+.popup-footer {
+	display: flex;
+	gap: 12upx;
+	padding: 15upx 20upx 20upx 20upx;
+	border-top: 2upx solid #f0f2f6;
+	flex-shrink: 0;
+	
+	.footer-button {
+		flex: 1;
+		height: 70upx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		border: none;
+		border-radius: 8upx;
+		font-size: 28upx;
+		font-weight: 500;
+		transition: all 0.2s;
+		
+		&.default {
+			background: #f5f5f5;
+			color: #666;
+		}
+		
+		&.blue {
+			background: #3385FF;
+			color: #fff;
+		}
+		
+		&:active {
+			opacity: 0.8;
+		}
+	}
+}
 </style>

+ 2 - 2
hdApp/src/components/mx-datepicker/mx-datepicker.vue

@@ -53,7 +53,7 @@
 						</view>
 					</block>
 				</view>
-				<view class="picker-modal-footer-btn">
+				<view class="picker-modal-footer-btn" style="font-size:40upx;">
 					<view class="picker-btn" :hover-stay-time="100" hover-class="picker-btn-active" @click="onCancel">取消</view>
 					<view class="picker-btn" :style="{color}" :hover-stay-time="100" hover-class="picker-btn-active" @click="onConfirm">确定</view>
 				</view>
@@ -83,7 +83,7 @@
 							<text class="picker-display-text">{{PickerTimeTitle}}</text>
 						</view>
 					</view>
-					<view class="picker-modal-footer-btn">
+					<view class="picker-modal-footer-btn" style="font-size:40upx;">
 						<view class="picker-btn" :hover-stay-time="100" hover-class="picker-btn-active" @click="onCancelTime">取消</view>
 						<view class="picker-btn" :style="{color}" :hover-stay-time="100" hover-class="picker-btn-active" @click="onConfirmTime">确定</view>
 					</view>

+ 2 - 2
mallApp/src/components/mx-datepicker/mx-datepicker.vue

@@ -53,7 +53,7 @@
 						</view>
 					</block>
 				</view>
-				<view class="picker-modal-footer-btn">
+				<view class="picker-modal-footer-btn" style="font-size:40upx;">
 					<view class="picker-btn" :hover-stay-time="100" hover-class="picker-btn-active" @click="onCancel">取消</view>
 					<view class="picker-btn" :style="{color}" :hover-stay-time="100" hover-class="picker-btn-active" @click="onConfirm">确定</view>
 				</view>
@@ -83,7 +83,7 @@
 							<text class="picker-display-text">{{PickerTimeTitle}}</text>
 						</view>
 					</view>
-					<view class="picker-modal-footer-btn">
+					<view class="picker-modal-footer-btn" style="font-size:40upx;">
 						<view class="picker-btn" :hover-stay-time="100" hover-class="picker-btn-active" @click="onCancelTime">取消</view>
 						<view class="picker-btn" :style="{color}" :hover-stay-time="100" hover-class="picker-btn-active" @click="onConfirmTime">确定</view>
 					</view>

+ 114 - 87
mallApp/src/pages/billing/affirmGhs.vue

@@ -37,70 +37,6 @@
 
 				<view class="module-com input-line-wrap">
 
-					<!-- 配送时间选择弹框 -->
-					<uni-popup ref="timePopup" type="bottom" background-color="#fff">
-						<view class="time-picker-popup">
-							<view class="popup-header">
-								<text class="popup-title">选择配送时间</text>
-								<text class="popup-close" @click="closeTimePopup">×</text>
-							</view>
-							
-							<view class="time-sections">
-								<!-- 小时选择 -->
-								<view class="time-section">
-									<view class="section-title">小时</view>
-									<view class="hours-wrapper">
-										<scroll-view 
-											scroll-y="true" 
-											class="hours-scroll"
-											enhanced="true"
-											show-scrollbar="true"
-										>
-											<view class="hours-buttons">
-												<button 
-													v-for="(hour, index) in timeOptions[0]" 
-													:key="index"
-													class="time-button" 
-													:class="{ active: selectedHour == hour }"
-													@click="selectedHour = hour"
-												>{{ hour }}</button>
-											</view>
-										</scroll-view>
-									</view>
-								</view>
-								
-								<!-- 分钟选择 -->
-								<view class="time-section">
-									<view class="section-title">分钟</view>
-									<view class="minutes-wrapper">
-										<scroll-view 
-											scroll-y="true" 
-											class="minutes-scroll"
-											enhanced="true"
-											show-scrollbar="true"
-										>
-											<view class="minutes-buttons">
-												<button 
-													v-for="(minute, index) in timeOptions[1]" 
-													:key="index"
-													class="time-button" 
-													:class="{ active: selectedMinute == minute }"
-													@click="selectedMinute = minute"
-												>{{ minute }}</button>
-											</view>
-										</scroll-view>
-									</view>
-								</view>
-							</view>
-							
-							<!-- 操作按钮 -->
-							<view class="popup-footer">
-								<button class="admin-button-com middle default" @click="closeTimePopup">取消</button>
-								<button class="admin-button-com middle blue" @click="confirmTime">确认</button>
-							</view>
-						</view>
-					</uni-popup>
-
 					<tui-list-cell class="line-cell" :hover="false" :arrow="false" >
 						<block v-if="account == 4805">
 							<button class="admin-button-com big" :class="[form.sendType == 1 ? 'blue' : 'default']" style="width:180upx;"  @click="changeSendType(1)">到店自取</button>
@@ -202,13 +138,13 @@
 
 				<tui-list-cell class="line-cell" :hover="false" :arrow="true">
 					<view class="tui-title ">配送日期</view>
-					<view class="uni-input" v-if="form.reachDate==''" style="color:width:400upx;font-size:34upx;" @click="bindDateChange">今天</view>
+					<view class="uni-input" v-if="form.reachDate==''" style="width:400upx;font-size:34upx;" @click="bindDateChange">今天</view>
 					<view class="uni-input" @click="bindDateChange" v-else style="width:400upx;font-size:34upx;">{{form.reachDate}}</view>
 				</tui-list-cell>
 
 				<tui-list-cell class="line-cell" :hover="false" :arrow="true" @click="openTimePopup">
 					<view class="tui-title">配送时间</view>
-					<view class="uni-input" style="width:450upx;font-size:30upx;">{{form.reachPeriod}}<text style="margin-left:10upx;"></text></view>
+					<view class="uni-input" style="width:450upx;font-size:34upx;">{{form.reachPeriod}}</view>
 				</tui-list-cell>
 
 					<tui-list-cell class="line-cell" :hover="false" :arrow="false">
@@ -231,6 +167,70 @@
 	
 	<mx-date-picker :show="showDatePicker" format="yyyy-mm-dd" type="date" :value="defaultPickerDate" :show-tips="true" @confirm="confirmDatePicker" @cancel="showDatePicker = false" />
 
+	<!-- 配送时间选择弹框 -->
+	<uni-popup ref="timePopup" type="bottom" background-color="#fff">
+		<view class="time-picker-popup">
+			<view class="popup-header">
+				<text class="popup-title">选择配送时间</text>
+				<text class="popup-close" @click="closeTimePopup">×</text>
+			</view>
+			
+			<view class="time-sections">
+				<!-- 小时选择 -->
+				<view class="time-section">
+					<view class="section-title">小时</view>
+					<view class="hours-wrapper">
+						<scroll-view 
+							scroll-y="true" 
+							class="hours-scroll"
+							enhanced="true"
+							show-scrollbar="true"
+						>
+							<view class="hours-buttons">
+								<button 
+									v-for="(hour, index) in timeOptions[0]" 
+									:key="index"
+									class="time-button" 
+									:class="{ active: selectedHour == hour }"
+									@click="selectedHour = hour"
+								>{{ hour }}</button>
+							</view>
+						</scroll-view>
+					</view>
+				</view>
+				
+				<!-- 分钟选择 -->
+				<view class="time-section">
+					<view class="section-title">分钟</view>
+					<view class="minutes-wrapper">
+						<scroll-view 
+							scroll-y="true" 
+							class="minutes-scroll"
+							enhanced="true"
+							show-scrollbar="true"
+						>
+							<view class="minutes-buttons">
+								<button 
+									v-for="(minute, index) in timeOptions[1]" 
+									:key="index"
+									class="time-button" 
+									:class="{ active: selectedMinute == minute }"
+									@click="selectedMinute = minute"
+								>{{ minute }}</button>
+							</view>
+						</scroll-view>
+					</view>
+				</view>
+			</view>
+			
+			<!-- 操作按钮 -->
+			<view class="popup-footer">
+				<button class="footer-button default" @click="closeTimePopup">取消</button>
+				<button class="footer-button blue" @click="confirmTime">确认</button>
+			</view>
+		</view>
+	</uni-popup>
+
 </view>
 </template>
 <script>
@@ -735,11 +735,11 @@ export default {
 
 .time-sections {
 	display: flex;
-	gap: 30upx;
+	flex-direction: column;
+	gap: 20upx;
 	margin-bottom: 0;
-	justify-content: space-between;
 	flex: 1;
-	padding: 30upx 20upx 0 20upx;
+	padding: 20upx 20upx 0 20upx;
 	overflow: hidden;
 }
 
@@ -747,13 +747,14 @@ export default {
 	flex: 1;
 	display: flex;
 	flex-direction: column;
+	min-height: 200upx;
 	
 	.section-title {
 		font-size: 28upx;
-		color: #666;
-		margin-bottom: 15upx;
-		font-weight: 500;
-		text-align: center;
+		color: #333;
+    	font-weight: 600;
+		margin-bottom: 12upx;
+		text-align: left;
 	}
 }
 
@@ -767,6 +768,7 @@ export default {
 	overflow: hidden;
 	display: flex;
 	flex-direction: column;
+	min-height: 150upx;
 }
 
 .minutes-wrapper {
@@ -779,42 +781,44 @@ export default {
 	overflow: hidden;
 	display: flex;
 	flex-direction: column;
+	min-height: 150upx;
 }
 
 .hours-scroll,
 .minutes-scroll {
 	width: 100%;
 	height: 100%;
-	padding: 10upx;
+	padding: 8upx;
 	box-sizing: border-box;
-	min-height: 200upx;
 }
 
 .hours-buttons,
 .minutes-buttons {
 	display: flex;
 	flex-wrap: wrap;
-	gap: 10upx;
+	gap: 8upx;
+	justify-content: flex-start;
 }
 
 .time-button {
-	width: calc(50% - 5upx);
-	height: 80upx;
+	width: calc(25% - 6upx);
+	height: 60upx;
 	display: flex;
 	align-items: center;
 	justify-content: center;
 	background: #ffffff;
 	border: 2upx solid #e9ecef;
-	border-radius: 8upx;
-	font-size: 30upx;
-	color: #333;
-	margin-bottom: 10upx;
+	border-radius: 6upx;
+	font-size: 26upx;
+	color: #666;
 	box-sizing: border-box;
+	transition: all 0.2s;
+	flex-shrink: 0;
 	
 	&.active {
-		background: #e8f5ff;
+		background: #3385FF;
 		border-color: #3385FF;
-		color: #3385FF;
+		color: #fff;
 		font-weight: 500;
 	}
 	
@@ -825,13 +829,36 @@ export default {
 
 .popup-footer {
 	display: flex;
-	gap: 20upx;
-	padding: 20upx;
+	gap: 12upx;
+	padding: 15upx 20upx 20upx 20upx;
 	border-top: 2upx solid #f0f2f6;
 	flex-shrink: 0;
 	
-	button {
+	.footer-button {
 		flex: 1;
+		height: 70upx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		border: none;
+		border-radius: 8upx;
+		font-size: 28upx;
+		font-weight: 500;
+		transition: all 0.2s;
+		
+		&.default {
+			background: #f5f5f5;
+			color: #666;
+		}
+		
+		&.blue {
+			background: #3385FF;
+			color: #fff;
+		}
+		
+		&:active {
+			opacity: 0.8;
+		}
 	}
 }
 

+ 1 - 1
mallApp/src/pages/order/buy.vue

@@ -251,7 +251,7 @@ export default {
 </script>
 <style lang='scss' scoped>
 .app-content {
-  padding-bottom:90upx;
+  padding-bottom:60upx;
   min-height: calc(100vh - 240upx);
   margin-bottom:120upx;
   .module-com {

+ 46 - 39
mallApp/src/pages/order/components/app-delivery.vue

@@ -161,8 +161,8 @@
             
             <!-- 操作按钮 -->
             <view class="popup-footer">
-              <button class="btn-cancel" @click="closeTimePopup">取消</button>
-              <button class="btn-confirm" @click="confirmTime">确认</button>
+              <button class="footer-button default" @click="closeTimePopup">取消</button>
+              <button class="footer-button blue" @click="confirmTime">确认</button>
             </view>
           </view>
         </uni-popup>
@@ -547,11 +547,11 @@ export default {
 
 .time-sections {
   display: flex;
-  gap: 30upx;
+  flex-direction: column;
+  gap: 20upx;
   margin-bottom: 0;
-  justify-content: space-between;
   flex: 1;
-  padding: 30upx 20upx 0 20upx;
+  padding: 20upx 20upx 0 20upx;
   overflow: hidden;
 }
 
@@ -559,13 +559,14 @@ export default {
   flex: 1;
   display: flex;
   flex-direction: column;
+  min-height: 200upx;
   
   .section-title {
     font-size: 28upx;
-    color: #666;
-    margin-bottom: 15upx;
-    font-weight: 500;
-    text-align: center;
+    color: #333;
+    font-weight: 600;
+    margin-bottom: 12upx;
+    text-align: left;
   }
 }
 
@@ -579,6 +580,7 @@ export default {
   overflow: hidden;
   display: flex;
   flex-direction: column;
+  min-height: 150upx;
 }
 
 .minutes-wrapper {
@@ -591,42 +593,44 @@ export default {
   overflow: hidden;
   display: flex;
   flex-direction: column;
+  min-height: 150upx;
 }
 
 .hours-scroll,
 .minutes-scroll {
   width: 100%;
   height: 100%;
-  padding: 10upx;
+  padding: 8upx;
   box-sizing: border-box;
-  min-height: 200upx;
 }
 
 .hours-buttons,
 .minutes-buttons {
   display: flex;
   flex-wrap: wrap;
-  gap: 10upx;
+  gap: 8upx;
+  justify-content: flex-start;
 }
 
 .time-button {
-  width: calc(50% - 5upx);
-  height: 80upx;
+  width: calc(25% - 6upx);
+  height: 60upx;
   display: flex;
   align-items: center;
   justify-content: center;
   background: #ffffff;
   border: 2upx solid #e9ecef;
-  border-radius: 8upx;
-  font-size: 30upx;
-  color: #333;
-  margin-bottom: 10upx;
+  border-radius: 6upx;
+  font-size: 26upx;
+  color: #666;
   box-sizing: border-box;
+  transition: all 0.2s;
+  flex-shrink: 0;
   
   &.active {
-    background: #e8f5ff;
+    background: #3385FF;
     border-color: #3385FF;
-    color: #3385FF;
+    color: #fff;
     font-weight: 500;
   }
   
@@ -637,33 +641,36 @@ export default {
 
 .popup-footer {
   display: flex;
-  gap: 20upx;
-  padding: 20upx;
+  gap: 12upx;
+  padding: 15upx 20upx 20upx 20upx;
   border-top: 2upx solid #f0f2f6;
   flex-shrink: 0;
   
-  .btn-cancel,
-  .btn-confirm {
+  .footer-button {
     flex: 1;
-    height: 80upx;
-    border-radius: 8upx;
-    font-size: 30upx;
+    height: 70upx;
     display: flex;
     align-items: center;
     justify-content: center;
     border: none;
-  }
-  
-  .btn-cancel {
-    background: #f8f9fa;
-    color: #333;
-    border: 2upx solid #e9ecef;
-  }
-  
-  .btn-confirm {
-    background: #3385FF;
-    color: #fff;
-    border: 2upx solid #3385FF;
+    border-radius: 8upx;
+    font-size: 28upx;
+    font-weight: 500;
+    transition: all 0.2s;
+    
+    &.default {
+      background: #f5f5f5;
+      color: #666;
+    }
+    
+    &.blue {
+      background: #3385FF;
+      color: #fff;
+    }
+    
+    &:active {
+      opacity: 0.8;
+    }
   }
 }