Przeglądaj źródła

1.我的评价
2.门店评价

guo 2 lat temu
rodzic
commit
abd2da1c4e

+ 373 - 384
pages.json

@@ -1,304 +1,262 @@
-{
-	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
-
-		{
-			"path": "pages/index/index",
-			"style": {
+{
+	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+
+		{
+			"path": "pages/index/index",
+			"style": {
 				"navigationStyle": "custom",
-				 "enablePullDownRefresh": true
-			}
-		},
-		{
-			"path": "pages/user/user",
-			"style": {
-				"navigationBarTitleText": "我的",
-				"navigationBarBackgroundColor": "#D53533",
-				"navigationBarTextStyle": "white"
-				
-				
-			}
-		}
-	    ,{
-            "path" : "pages/user/historySpend",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "历史消费",
-                "enablePullDownRefresh": true
-            } 
-        },
-		{
-		    "path" : "pages/user/historyDetail",
-		    "style" :                                                                                    
-		    {
-		        "navigationBarTitleText": "消费明细",
-		        "enablePullDownRefresh": true
-		    }
-		    
-		}
-        ,{
-            "path" : "pages/user/checkReport",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "车检报告",
-                "enablePullDownRefresh": true
-            }
-            
-        }
-        ,{
-            "path" : "pages/user/reportDetail",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "检测报告",
-                "enablePullDownRefresh": false
-            }
-            
-        },
-		{
-		    "path" : "pages/index/shopList",
-		    "style" :                                                                                    
-		    {
-		        "navigationBarTitleText": "门店列表",
-		        "enablePullDownRefresh": true
-		    } 
-		},
-        {
-            "path" : "pages/index/onlineBooking",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "在线预约",
-                "enablePullDownRefresh": false
-            }
-            
-        },{
-            "path" : "pages/index/confirmYuyue",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "确认预约",
-                "enablePullDownRefresh": false
-            }
-       },
-		{
-		    "path" : "pages/shop/shop",
-		    "style" :                                                                                    
-		    {
-		        "navigationBarTitleText": "商城",
-		        "enablePullDownRefresh": true
-		    }
-		    
-		},
-		{
-		    "path" : "pages/activity/activity",
-		    "style" :                                                                                    
-		    {
-		        "navigationBarTitleText": "活动",
-		        "enablePullDownRefresh": true
-		    }
-		    
-		}
-        ,{
-            "path" : "pages/user/myBespeak",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "我的预约",
-                "enablePullDownRefresh": true
-            }
-            
-        }
-        ,{
-            "path" : "pages/user/bespeakDetail",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "预约详情",
-                "enablePullDownRefresh": true
-            }
-            
-        }
-        ,{
-            "path" : "pages/index/vipCard",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "会员卡",
-                "navigationBarBackgroundColor": "#171723",
-				"navigationBarTextStyle": "white",
-				"enablePullDownRefresh": true
-            }
-            
-
-        }
-        ,{
-            "path" : "pages/index/discountCard",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "优惠券",
-                "enablePullDownRefresh": false
-            }
-            
-        },
-		{
-		    "path" : "pages/shop/goodsDetail",
-		    "style" :                                                                                    
-		    {
-		        "navigationBarTitleText": "商品详情",
-                 "enablePullDownRefresh": true
-		    }
-		}
-
-        ,{
-            "path" : "pages/index/discountCardDetail",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "优惠券详情",
-                "enablePullDownRefresh": false
-            }
-            
-        }
-        ,{
-            "path" : "pages/user/myOrder/myOrder",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "我的订单",
-                "enablePullDownRefresh": true
-            }
-            
-        },{
-            "path" : "pages/shop/confirm",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "订单确认"
-            } 
-        },
-		{
-		    "path" : "pages/shop/ckshopList",
-		    "style" :                                                                                    
-		    {
-		        "navigationBarTitleText": "选择门店"
-		    } 
-		}
-        ,{
-            "path" : "pages/user/myOrder/mallOrderDetail",
-            "style" :                                                                                    
-            {
-                "navigationStyle": "custom",
-                "enablePullDownRefresh": true
-            }
-            
-        },
-		{
-		    "path" : "pages/user/addCar/addCar",
-		    "style" :                                                                                    
-		    {
-		        "navigationBarTitleText": "添加车辆",
-		        "enablePullDownRefresh": false
-		    }
-		    
-		},
-		{
-			"path": "pages/user/addCar/carModel",
-			"style": {
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/user/addCar/cailist",
-			"style": {
-				"navigationBarTitleText": "我的车库",
-				"enablePullDownRefresh": true
-			}
-		}
-		
-        ,{
-            "path" : "pages/index/paint",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "钣金喷漆",
-                "enablePullDownRefresh": false
-            }
-            
-        },
-		{
-		    "path" : "pages/index/rescue",
-		    "style" :                                                                                    
-		    {
-		        "navigationBarTitleText": "紧急救援"
-		    }
-		    
-		},
-		{
-		    "path" : "pages/index/maintain",
-		    "style" :                                                                                    
-		    {
-		        "navigationBarTitleText": "保养"
-		    }
-		    
-		},
-		{
-			"path": "pages/index/handbook",
-			"style": {
-				"navigationBarTitleText": "保养手册",
-				"enablePullDownRefresh": false
-			}
-		
-		}
-        ,{
-            "path" : "pages/index/personalCard",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "个人名片",
-				 "enablePullDownRefresh": false
-            }
-        },
-		{
-			"path" : "pages/index/paintSure",
-			"style" :                                                                                    
-			{
-			    "navigationBarTitleText": "订单确认",
-			    "enablePullDownRefresh": false
-			}
+				"enablePullDownRefresh": true
+			}
+		},
+		{
+			"path": "pages/user/user",
+			"style": {
+				"navigationBarTitleText": "我的",
+				"navigationBarBackgroundColor": "#D53533",
+				"navigationBarTextStyle": "white"
+
+
+			}
+		}, {
+			"path": "pages/user/historySpend",
+			"style": {
+				"navigationBarTitleText": "历史消费",
+				"enablePullDownRefresh": true
+			}
+		},
+		{
+			"path": "pages/user/historyDetail",
+			"style": {
+				"navigationBarTitleText": "消费明细",
+				"enablePullDownRefresh": true
+			}
+
+		}, {
+			"path": "pages/user/checkReport",
+			"style": {
+				"navigationBarTitleText": "车检报告",
+				"enablePullDownRefresh": true
+			}
+
+		}, {
+			"path": "pages/user/reportDetail",
+			"style": {
+				"navigationBarTitleText": "检测报告",
+				"enablePullDownRefresh": false
+			}
+
+		},
+		{
+			"path": "pages/index/shopList",
+			"style": {
+				"navigationBarTitleText": "门店列表",
+				"enablePullDownRefresh": true
+			}
+		},
+		{
+			"path": "pages/index/onlineBooking",
+			"style": {
+				"navigationBarTitleText": "在线预约",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/index/confirmYuyue",
+			"style": {
+				"navigationBarTitleText": "确认预约",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/shop/shop",
+			"style": {
+				"navigationBarTitleText": "商城",
+				"enablePullDownRefresh": true
+			}
+
+		},
+		{
+			"path": "pages/activity/activity",
+			"style": {
+				"navigationBarTitleText": "活动",
+				"enablePullDownRefresh": true
+			}
+
+		}, {
+			"path": "pages/user/myBespeak",
+			"style": {
+				"navigationBarTitleText": "我的预约",
+				"enablePullDownRefresh": true
+			}
+
+		}, {
+			"path": "pages/user/bespeakDetail",
+			"style": {
+				"navigationBarTitleText": "预约详情",
+				"enablePullDownRefresh": true
+			}
+
+		}, {
+			"path": "pages/index/vipCard",
+			"style": {
+				"navigationBarTitleText": "会员卡",
+				"navigationBarBackgroundColor": "#171723",
+				"navigationBarTextStyle": "white",
+				"enablePullDownRefresh": true
+			}
+
+
+		}, {
+			"path": "pages/index/discountCard",
+			"style": {
+				"navigationBarTitleText": "优惠券",
+				"enablePullDownRefresh": false
+			}
+
+		},
+		{
+			"path": "pages/shop/goodsDetail",
+			"style": {
+				"navigationBarTitleText": "商品详情",
+				"enablePullDownRefresh": true
+			}
 		}
-        ,{
-
-            "path" : "pages/user/expertServices",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "服务专家",
-				"enablePullDownRefresh": true
-           } 
-        },
-		{
-			"path" : "pages/index/paintShopList",
-			"style" :                                                                                    
-			{
-			    "navigationBarTitleText": "选择门店",
-			    "enablePullDownRefresh": true
-			}
-		},
-		{
-			"path": "pages/user/feedBack",
-			"style": {
-				"navigationBarTitleText": "意见反馈",
-				"navigationBarBackgroundColor": "#FFFFFF",
-				"enablePullDownRefresh": false
-			}
-		
+
+		, {
+			"path": "pages/index/discountCardDetail",
+			"style": {
+				"navigationBarTitleText": "优惠券详情",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/user/myOrder/myOrder",
+			"style": {
+				"navigationBarTitleText": "我的订单",
+				"enablePullDownRefresh": true
+			}
+
+		}, {
+			"path": "pages/shop/confirm",
+			"style": {
+				"navigationBarTitleText": "订单确认"
+			}
+		},
+		{
+			"path": "pages/shop/ckshopList",
+			"style": {
+				"navigationBarTitleText": "选择门店"
+			}
+		}, {
+			"path": "pages/user/myOrder/mallOrderDetail",
+			"style": {
+				"navigationStyle": "custom",
+				"enablePullDownRefresh": true
+			}
+
+		},
+		{
+			"path": "pages/user/addCar/addCar",
+			"style": {
+				"navigationBarTitleText": "添加车辆",
+				"enablePullDownRefresh": false
+			}
+
+		},
+		{
+			"path": "pages/user/addCar/carModel",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/user/addCar/cailist",
+			"style": {
+				"navigationBarTitleText": "我的车库",
+				"enablePullDownRefresh": true
+			}
 		}
-        ,{
-            "path" : "pages/user/myOrder/paintOrderDetail",
-            "style" :                                                                                    
-            {
-                "navigationStyle": "custom",
-                "enablePullDownRefresh": true
-            }
-            
-        }
-        ,{
-            "path" : "pages/user/myOrder/activityOrderDetail",
-            "style" :                                                                                    
-            {
-                "navigationStyle": "custom",
-                "enablePullDownRefresh": true
-            }
-            
-        },
+
+		, {
+			"path": "pages/index/paint",
+			"style": {
+				"navigationBarTitleText": "钣金喷漆",
+				"enablePullDownRefresh": false
+			}
+
+		},
+		{
+			"path": "pages/index/rescue",
+			"style": {
+				"navigationBarTitleText": "紧急救援"
+			}
+
+		},
+		{
+			"path": "pages/index/maintain",
+			"style": {
+				"navigationBarTitleText": "保养"
+			}
+
+		},
+		{
+			"path": "pages/index/handbook",
+			"style": {
+				"navigationBarTitleText": "保养手册",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/index/personalCard",
+			"style": {
+				"navigationBarTitleText": "个人名片",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/index/paintSure",
+			"style": {
+				"navigationBarTitleText": "订单确认",
+				"enablePullDownRefresh": false
+			}
+		}, {
+
+			"path": "pages/user/expertServices",
+			"style": {
+				"navigationBarTitleText": "服务专家",
+				"enablePullDownRefresh": true
+			}
+		},
+		{
+			"path": "pages/index/paintShopList",
+			"style": {
+				"navigationBarTitleText": "选择门店",
+				"enablePullDownRefresh": true
+			}
+		},
+		{
+			"path": "pages/user/feedBack",
+			"style": {
+				"navigationBarTitleText": "意见反馈",
+				"navigationBarBackgroundColor": "#FFFFFF",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/user/myOrder/paintOrderDetail",
+			"style": {
+				"navigationStyle": "custom",
+				"enablePullDownRefresh": true
+			}
+
+		}, {
+			"path": "pages/user/myOrder/activityOrderDetail",
+			"style": {
+				"navigationStyle": "custom",
+				"enablePullDownRefresh": true
+			}
+
+		},
 		{
 			"path": "pages/activity/jkDetail",
 			"style": {
@@ -324,24 +282,22 @@
 			"style": {
 				"navigationBarTitleText": "爱车估价"
 			}
-		}
-        ,{
-            "path" : "pages/integral/integral",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "积分商城",
-                "enablePullDownRefresh": true,
+		}, {
+			"path": "pages/integral/integral",
+			"style": {
+				"navigationBarTitleText": "积分商城",
+				"enablePullDownRefresh": true,
 				"navigationBarBackgroundColor": "#38394E",
 				"navigationBarTextStyle": "white"
-				 // "navigationStyle": "custom"
-            }
-            
-        },
+				// "navigationStyle": "custom"
+			}
+
+		},
 		{
 			"path": "pages/integral/integralgoodsDetail",
 			"style": {
 				"navigationBarTitleText": "商品详情",
-				 "enablePullDownRefresh": true
+				"enablePullDownRefresh": true
 			}
 		},
 		{
@@ -354,170 +310,203 @@
 			"path": "pages/integral/scoreRecord",
 			"style": {
 				"navigationBarTitleText": "积分记录",
-				 "enablePullDownRefresh": true
+				"enablePullDownRefresh": true
 			}
 		},
 		{
 			"path": "pages/integral/exchangeRecord",
 			"style": {
 				"navigationBarTitleText": "兑换记录",
-				 "enablePullDownRefresh": true
+				"enablePullDownRefresh": true
 			}
 		},
 		{
 			"path": "pages/shop/wp",
 			"style": {
 				"navigationBarTitleText": "海报",
-				 "enablePullDownRefresh": false
+				"enablePullDownRefresh": false
 			}
-		}
-        ,{
-            "path" : "pages/integral/recordDetail",
-            "style" :                                                                                    
-            {
-                "navigationStyle": "custom",
-                "enablePullDownRefresh": true
-            }
-        },
+		}, {
+			"path": "pages/integral/recordDetail",
+			"style": {
+				"navigationStyle": "custom",
+				"enablePullDownRefresh": true
+			}
+		},
 		{
 			"path": "pages/integral/rule",
 			"style": {
 				"navigationBarTitleText": "积分规则",
-				 "enablePullDownRefresh": false
+				"enablePullDownRefresh": false
 			}
 		},
 		{
 			"path": "pages/index/confirmRescue",
 			"style": {
 				"navigationBarTitleText": "订单确认",
-				 "enablePullDownRefresh": false
+				"enablePullDownRefresh": false
 			}
 		},
 		{
 			"path": "pages/partner/partner",
 			"style": {
 				"navigationBarTitleText": "车主合伙人",
-				 "enablePullDownRefresh": true
+				"enablePullDownRefresh": true
 			}
 		},
 		{
 			"path": "pages/partner/bonus",
 			"style": {
 				"navigationBarTitleText": "分红记录",
-				 "enablePullDownRefresh": true
+				"enablePullDownRefresh": true
 			}
 		},
 		{
 			"path": "pages/partner/people",
 			"style": {
 				"navigationBarTitleText": "下线人脉",
-				 "enablePullDownRefresh": true
+				"enablePullDownRefresh": true
 			}
 		},
 		{
-		    "path" : "pages/partner/myQr",
-		    "style" :                                                                                    
-		    {
-		       // "navigationStyle": "custom"
-		       // "enablePullDownRefresh": true
-			   "navigationBarTitleText": "我的二维码"
-		    }
-		    
+			"path": "pages/partner/myQr",
+			"style": {
+				// "navigationStyle": "custom"
+				// "enablePullDownRefresh": true
+				"navigationBarTitleText": "我的二维码"
+			}
+
 		},
 		{
 			"path": "pages/referral/referral",
 			"style": {
 				"navigationBarTitleText": "客户转介绍",
-				 "enablePullDownRefresh": true
+				"enablePullDownRefresh": true
 			}
 		},
 		{
 			"path": "pages/referral/myConnections",
 			"style": {
 				"navigationBarTitleText": "我的人脉",
-				 "enablePullDownRefresh": true
+				"enablePullDownRefresh": true
 			}
 		},
 		{
 			"path": "pages/referral/rebateList",
 			"style": {
 				"navigationBarTitleText": "返利记录",
-				 "enablePullDownRefresh": true
+				"enablePullDownRefresh": true
 			}
 		},
 		{
 			"path": "pages/referral/extract",
 			"style": {
 				"navigationBarTitleText": "提现",
-				 "enablePullDownRefresh": false
+				"enablePullDownRefresh": false
 			}
 		},
 		{
 			"path": "pages/referral/extractList",
 			"style": {
 				"navigationBarTitleText": "提现明细",
-				 "enablePullDownRefresh": true
+				"enablePullDownRefresh": true
 			}
 		},
 		{
 			"path": "pages/referral/referralExplain",
 			"style": {
 				"navigationBarTitleText": "提现说明"
-				 //"enablePullDownRefresh": true
+				//"enablePullDownRefresh": true
 			}
 		},
 		{
 			"path": "pages/index/discountDlq",
 			"style": {
 				"navigationBarTitleText": "优惠券",
-				 "enablePullDownRefresh": true
+				"enablePullDownRefresh": true
 			}
 		},
 		{
 			"path": "pages/user/reportUni",
 			"style": {
 				"navigationBarTitleText": "车检报告",
-				 "enablePullDownRefresh": true
+				"enablePullDownRefresh": true
 			}
-		}
-    ],
-	"tabBar": {
-		"color": "#8a8a8a",
-		"selectedColor": "#D53533",
-		"borderStyle": "black",
-		"backgroundColor": "#ffffff",
-		"list": [{
-				"pagePath": "pages/index/index",
-				"iconPath": "./static/tabimg/index2.png",
-				"selectedIconPath": "./static/tabimg/index1.png",
-				"text": "首页"
-			},
-	        {
-	        	"pagePath": "pages/shop/shop",
-	        	"iconPath": "./static/tabimg/shop2.png",
-	        	"selectedIconPath": "./static/tabimg/shop1.png",
-	        	"text": "商城"
-	        },
-	        {
-	        	"pagePath": "pages/activity/activity",
-	        	"iconPath": "./static/tabimg/activty2.png",
-	        	"selectedIconPath": "./static/tabimg/activity1.png",
-	        	"text": "活动"
-	        },
-			{
-				"pagePath": "pages/user/user",
-				"iconPath": "./static/tabimg/me2.png",
-				"selectedIconPath": "./static/tabimg/me1.png",
-				"text": "我的"
+		},
+		{
+			"path": "pages/user/myAppraise",
+			"style": {
+				"navigationBarTitleText": "我的评价",
+		
+				"enablePullDownRefresh": true
 			}
-	
-		]
-	},
-	"globalStyle": {
-		"navigationBarTextStyle": "black",
-		"navigationBarTitleText": "uni-app",
-		"navigationBarBackgroundColor": "#F8F8F8",
-		"backgroundColor": "#F8F8F8"
-	},
-	"uniIdRouter": {}
-}
+		
+		},
+		{
+			"path": "pages/user/myAppraiseDetail",
+			"style": {
+				"navigationBarTitleText": "查看评价"
+		
+				
+			}
+		
+		},
+		{
+			"path": "pages/user/appraise",
+			"style": {
+				"navigationBarTitleText": "评价"
+		
+				
+			}
+		
+		}
+		    ,{
+            "path" : "pages/user/ShopAppraiseList",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "评价列表",
+                "enablePullDownRefresh": true
+            }
+            
+        }
+    ],
+		"tabBar": {
+			"color": "#8a8a8a",
+			"selectedColor": "#D53533",
+			"borderStyle": "black",
+			"backgroundColor": "#ffffff",
+			"list": [{
+					"pagePath": "pages/index/index",
+					"iconPath": "./static/tabimg/index2.png",
+					"selectedIconPath": "./static/tabimg/index1.png",
+					"text": "首页"
+				},
+				{
+					"pagePath": "pages/shop/shop",
+					"iconPath": "./static/tabimg/shop2.png",
+					"selectedIconPath": "./static/tabimg/shop1.png",
+					"text": "商城"
+				},
+				{
+					"pagePath": "pages/activity/activity",
+					"iconPath": "./static/tabimg/activty2.png",
+					"selectedIconPath": "./static/tabimg/activity1.png",
+					"text": "活动"
+				},
+				{
+					"pagePath": "pages/user/user",
+					"iconPath": "./static/tabimg/me2.png",
+					"selectedIconPath": "./static/tabimg/me1.png",
+					"text": "我的"
+				}
+
+			]
+		},
+		"globalStyle": {
+			"navigationBarTextStyle": "black",
+			"navigationBarTitleText": "uni-app",
+			"navigationBarBackgroundColor": "#F8F8F8",
+			"backgroundColor": "#F8F8F8"
+		},
+		"uniIdRouter": {}
+	}

Plik diff jest za duży
+ 744 - 626
pages/index/onlineBooking.vue


+ 369 - 0
pages/user/ShopAppraiseList.vue

@@ -0,0 +1,369 @@
+<template>
+	<view class="content">
+
+		<!-- 列表 -->
+		<view class="itemContent">
+			<view v-for="(item,index) in itemData" :key="index" @click="goDetail(item)">
+				<view class="item">
+
+
+
+					<!-- 第一行 -->
+					<view class="firstView">
+						<view class="left">
+							<image :src='item.HeadUrl' v-if="item.HeadUrl" class="storeImg"></image>
+							<image src="../../static/img/pic_def_ava.png" mode="" class="storeImg" v-else></image>
+							<view class="nickName">{{item.Name?item.Name:'微信昵称'}}</view>
+						</view>
+						<!-- 时间截取 -->
+						<view class="time">{{item.CreateTime.slice(0,item.CreateTime.length-8)}}</view>
+					</view>
+
+					<!-- 第2行 -->
+					<view class="secondView">
+						<view class="fen">总分</view>
+						<!-- 星星 -->
+						<uni-rate :value="item.Overallevaluation" :max="5" color="#EEEEEE" active-color="#FF0000"
+							:size="13" :margin="2" :readonly="true" />
+
+						<view class="count">服务态度{{item.ServiceEvaluation}}星</view>
+						<view class="count">施工质量{{item.ConstructionEvaluation}}星</view>
+						<view class="count">店面环境{{item.StoreEvaluation}}星</view>
+					</view>
+
+
+
+					<view class="contentMes">{{item.EContent}}</view>
+
+					<!-- 照片 -->
+					<view v-if="item.imgs.length != 0" class="imgBg">
+						<view v-for="(itemImg,indexImg) in item.imgs" :key="indexImg">
+
+							<image :src="itemImg.imageUrl" class="img"
+								@click.stop="previewImage(itemImg.imageUrl,item.imgs)"></image>
+						</view>
+					</view>
+
+					<!-- 商家回复 -->
+
+					<view class="writeBack" v-if="item.ReplyContent">商家回复:{{item.ReplyContent}}</view>
+
+
+					<!-- <view class="bottom">
+						<view class="btnBox" @click.stop="goOrder(item)">
+							<image src="../../static/img/icon_ding.png" class="btnImg"></image>
+							<view class="btn">查看订单</view>
+						</view>
+
+						<view class="btnBox" @click.stop="deleteItem(item, index)">
+							<image src="../../static/img/icon_del.png" class="btnImg"></image>
+							<view class="btn">删除</view>
+						</view>
+
+					</view> -->
+
+
+
+
+
+				</view>
+
+
+			</view>
+
+		</view>
+
+		<!-- 上拉 加载更多 -->
+		<view class="noMore" v-if="noMoreShow">没有更多数据</view>
+		<!-- 无数据空白页 -->
+		<nodata v-if="itemData.length==0"></nodata>
+
+	</view>
+</template>
+
+<script>
+	import nodata from '../../components/nodata/nodata.vue'
+	export default {
+		components: {
+			nodata,
+		},
+		data() {
+			return {
+				itemData: [],
+				page: 1,
+				noMoreShow: false,
+				shopID:'',
+			}
+		},
+		onLoad(opt) {
+			// console.log('opt===',opt);
+			this.shopID = opt.shopID;
+		},
+		onShow() {
+			this.itemData = []
+			this.page = 1
+			this.getItemData()
+		},
+		methods: {
+			goOrder(item) {
+				uni.navigateTo({
+					url: 'historyDetail?id=' + item.SheetID
+				})
+			},
+			goDetail(item) {
+				uni.navigateTo({
+					url: 'myAppraiseDetail?sheetId=' + item.SheetID
+				})
+			},
+			previewImage(img, arrDic) {
+				var arr = [];
+
+				arrDic.forEach(item => {
+					arr.push(item.imageUrl)
+				})
+
+				// 预览图片
+				uni.previewImage({
+					urls: arr,
+					current: img,
+					longPressActions: {
+						itemList: ['发送给朋友', '保存图片', '收藏'],
+						success: function(data) {
+							console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
+						},
+						fail: function(err) {
+							console.log(err.errMsg);
+						}
+					}
+				});
+			},
+			deleteItem(item, index) {
+				var that = this;
+				uni.showModal({
+					title: '提示',
+					content: '确定删除该条评价吗?',
+					success: function(res) {
+						if (res.confirm) {
+							that.itemData.splice(index, 1);
+							uni.showLoading({
+								title: '删除中'
+							})
+
+							let url = 'openMiniEvaluate/deleteMyOpenEvaluate',
+								params = {
+									id: item.ID,
+
+								}
+							that.$http(url, params, 'POST').then(res => {
+								uni.hideLoading();
+
+								that.page = 1
+								that.getItemData()
+
+							})
+						}
+
+					}
+				});
+
+			},
+			getItemData() {
+				uni.showLoading({
+					title: '加载中'
+				})
+				let url = 'openMiniEvaluate/listShopOpenEvaluatePage',
+					params = {
+						page: this.page,
+						limit: 20,
+						shopId:this.shopID,
+					}
+				this.$http(url, params, 'GET').then(res => {
+					uni.hideLoading();
+					var list = res.data.Items
+
+					// 处理 undefined和null转为空白字符串
+					// list.forEach((item, index) => {
+					// 	for (const key in item) {
+					// 		item[key] = this.$praseStrEmpty(item[key])
+					// 	}
+					// })
+
+
+					if (this.page == 1) {
+						this.itemData = list
+					} else {
+						this.itemData = this.itemData.concat(list)
+					}
+
+					if (list.length < 10) {
+						this.noMoreShow = false
+					} else {
+						this.noMoreShow = true
+					}
+
+
+				})
+			},
+
+		},
+
+		// 下拉刷新 上拉加载更多
+		onPullDownRefresh() {
+			this.page = 1
+			this.getItemData()
+			setTimeout(function() {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		},
+		onReachBottom() {
+			this.page++;
+			this.getItemData()
+		},
+
+	}
+</script>
+
+<style scoped>
+	.content {
+		background: #f4f5f7;
+		min-height: 100vh;
+		padding-top: 20rpx;
+		padding-bottom: 60rpx;
+	}
+
+
+
+	.item {
+		border-radius: 10rpx;
+		padding: 20rpx;
+		background-color: #FFFFFF;
+
+		margin: 0 24rpx 20rpx;
+
+	}
+
+
+	.firstView,
+	.secondView {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+
+	}
+
+	.left {
+		display: flex;
+		align-items: center;
+	}
+
+	.storeImg {
+		width: 56rpx;
+		height: 56rpx;
+		border-radius: 8rpx;
+		margin-right: 10rpx;
+	}
+
+	.nickName {
+		font-weight: 500;
+		font-size: 26rpx;
+
+		color: #333333;
+	}
+
+	.firstView {
+		margin-bottom: 24rpx;
+	}
+
+
+
+	.time {
+		font-size: 26rpx;
+		color: #999999;
+	}
+
+
+	.fen {
+		font-size: 22rpx;
+		color: #999999;
+
+	}
+
+	.count {
+		font-size: 22rpx;
+		color: #999999;
+		margin-right: 20rpx;
+	}
+
+	.thirdView {
+		display: flex;
+		justify-content: flex-start;
+		padding-top: 10rpx;
+		padding-bottom: 20rpx;
+	}
+
+
+	.contentMes {
+		font-size: 26rpx;
+		color: #333333;
+		line-height: 37rpx;
+		padding: 16rpx 0;
+	}
+
+	.imgBg {
+		display: flex;
+		justify-content: flex-start;
+		padding: 20rpx 0rpx;
+		flex-wrap: wrap;
+	}
+
+	.img {
+		width: 150rpx;
+		height: 150rpx;
+		margin-right: 20rpx;
+		border-radius: 8rpx;
+	}
+
+	.writeBack {
+		font-size: 26rpx;
+		color: #666666;
+		line-height: 37rpx;
+		padding: 20rpx;
+		background-color: #F4F5F7;
+		margin-bottom: 20rpx;
+
+		border-radius: 10rpx;
+	}
+
+	.bottom {
+		padding-top: 27rpx;
+		padding-bottom: 7rpx;
+		border-top: 1rpx solid #EEEEEE;
+		display: flex;
+		justify-content: flex-end;
+		align-items: center;
+	}
+
+	.btnBox {
+		display: flex;
+		align-items: center;
+		margin-left: 40rpx;
+	}
+
+	.btnImg {
+		width: 24rpx;
+		height: 24rpx;
+	}
+
+	.btn {
+		color: #666666;
+		font-size: 24rpx;
+		margin-left: 5rpx;
+	}
+
+	.noMore {
+		text-align: center;
+		line-height: 50rpx;
+		color: #999999;
+		font-size: 28rpx;
+	}
+</style>

+ 434 - 0
pages/user/appraise.vue

@@ -0,0 +1,434 @@
+<template>
+	<view class="box">
+		<view class="main">
+			<!-- 总体评价-->
+			<view class="population populationCont2">
+				<view class="title">总体评价</view>
+				<view class=" " style="padding-left: 30rpx;">
+					<view class="xxBox">
+						<uni-rate v-model="grade" :max="5" color="#EEEEEE" active-color="#FF0000" :size="20" :margin="5"
+							@change="gradeCl" />
+						<view class="td orangeColor" v-if="grade==5">非常好</view>
+						<view class="td orangeColor" v-if="grade==4">很好</view>
+						<view class="td orangeColor" v-if="grade==3">好</view>
+						<view class="td orangeColor" v-if="grade==2">一般</view>
+						<view class="td orangeColor" v-if="grade==1">差</view>
+					</view>
+				
+				</view>
+			</view>
+
+			<!-- 商家服务评价-->
+			<view class="population">
+				<view class="title">商家服务评价</view>
+				<view class="rowView">
+					<view class="littleTitle">服务态度</view>
+					<view class="xxBox">
+						<uni-rate v-model="xx" :max="5" color="#EEEEEE" active-color="#FF4F00" :size="20" :margin="5"
+							@change="taidu" />
+						<view class="td orangeColor" v-if="taiduStar==5">非常好</view>
+						<view class="td orangeColor" v-if="taiduStar==4">很好</view>
+						<view class="td orangeColor" v-if="taiduStar==3">好</view>
+						<view class="td orangeColor" v-if="taiduStar==2">一般</view>
+						<view class="td orangeColor" v-if="taiduStar==1">差</view>
+					</view>
+				</view>
+
+				<view class="rowView">
+					<view class="littleTitle">施工质量</view>
+					<view class="xxBox">
+						<uni-rate v-model="yy" :max="5" color="#EEEEEE" active-color="#FF4F00" :size="20" :margin="5"
+							@change="zhiliang" />
+						<view class="td orangeColor" v-if="zhiliangStar==5">非常好</view>
+						<view class="td orangeColor" v-if="zhiliangStar==4">很好</view>
+						<view class="td orangeColor" v-if="zhiliangStar==3">好</view>
+						<view class="td orangeColor" v-if="zhiliangStar==2">一般</view>
+						<view class="td orangeColor" v-if="zhiliangStar==1">差</view>
+					</view>
+				</view>
+
+				<view class="rowView">
+					<view class="littleTitle">店面环境</view>
+					<view class="xxBox">
+						<uni-rate v-model="zz" :max="5" color="#EEEEEE" active-color="#FF4F00" :size="20" :margin="5"
+							@change="huanjing" />
+						<view class="td orangeColor" v-if="huanjingStar==5">非常好</view>
+						<view class="td orangeColor" v-if="huanjingStar==4">很好</view>
+						<view class="td orangeColor" v-if="huanjingStar==3">好</view>
+						<view class="td orangeColor" v-if="huanjingStar==2">一般</view>
+						<view class="td orangeColor" v-if="huanjingStar==1">差</view>
+					</view>
+
+				</view>
+
+			</view>
+
+			<!-- 评价内容 和图片 -->
+			<view class="population">
+				<!-- 建议 -->
+				<view class="firstView">
+
+					<view>
+						<textarea placeholder-style="color:#999999" placeholder="说说哪里满意,帮大家选择~" v-model="exeContent"
+							class="textareaCont" maxlength="-1" auto-height="true" @confirm="feedDone" />
+					</view>
+				</view>
+
+				<!-- 图片 -->
+				<view class="secondView">
+
+					<view class="imgBox">
+						<view class="imgLine" v-for="(img,imgindex) in imgArr">
+							<image :class="{img4:(imgindex+1)%4==0}" :src="img" mode="" class="itemImg" @click="previewImage(imgindex,imgArr)"></image>
+							<image src="../../static/img/icon_del_red.png" mode="" class="delImg"
+								@click="delimg(imgindex)"></image>
+						</view>
+						<view class="imgLine" @click="uploadImg">
+							<image src="../../static/img/btn_pic.png" mode="" class="itemImg"></image>
+						</view>
+					</view>
+				</view>
+			</view>
+
+			<view class="bottom">
+				<view class="shoreDz" @click="submit">发表评论</view>
+			</view>
+		</view>
+
+	</view>
+
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				grade: '5',
+				xx: 5,
+				yy: 5,
+				zz: 5,
+				taiduStar: 5,
+				zhiliangStar: 5,
+				huanjingStar: 5,
+				imgArr: [],
+				exeContent: '',
+				shopID:'',
+				sheetID:'',
+			}
+		},
+		onLoad(opt) {
+			console.log('opt++',opt);
+			this.shopID = opt.shopID
+			this.sheetID = opt.sheetID
+			// uni.setStorage({
+			// 	key: 'evaluate',
+			// 	data: 1,
+			// 	success: function () {
+				 
+			// 	}
+			// }); 
+			
+			
+		},
+		onShow() {
+
+		},
+		methods: {
+			changeGrade(v) {
+				console.log(v);
+				this.grade = v
+			},
+			taidu(e) {
+				console.log(e)
+				this.taiduStar = e.value
+			},
+			zhiliang(e) {
+				console.log(e)
+				this.zhiliangStar = e.value
+			},
+			gradeCl(e) {
+				console.log(e)
+				this.grade = e.value
+			},
+			huanjing(e) {
+				console.log(e)
+				this.huanjingStar = e.value
+			},
+
+
+			feedDone(e) {
+				this.exeContent = e.target.value
+
+			},
+			previewImage(index, arr) {
+				
+			
+				// 预览图片
+				uni.previewImage({
+					urls: arr,
+					current: index,
+					longPressActions: {
+						itemList: ['发送给朋友', '保存图片', '收藏'],
+						success: function(data) {
+							console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
+						},
+						fail: function(err) {
+							console.log(err.errMsg);
+						}
+					}
+				});
+			},
+			uploadImg() {
+
+				var that = this;
+				var num=9;
+				var length=this.imgArr.length;
+				if(length==9){
+					uni.showToast({
+						title: '最多上传9张图片',
+						icon: 'none',
+						duration: 2000,
+					});
+					return false;
+				}
+				uni.chooseImage({
+					sourceType: ['album','camera'],
+					count:num-length, 
+					success: (chooseImageRes) => {
+						const tempFilePaths = chooseImageRes.tempFilePaths;
+						/* uni.uploadFile({
+					            url: that.$request.baseUrl+'accompany/SuperCheckSheet/uploadFile', //仅为示例,非真实的接口地址
+					            filePath: tempFilePaths[0],
+					            name: 'file',
+					            formData: {
+					                'user': 'test'
+					            },
+					            success: (uploadFileRes) => {
+					                console.log(JSON.parse(uploadFileRes.data).data );
+									that.imgArr=that.imgArr.concat(JSON.parse(uploadFileRes.data).data) ;
+									
+					            }
+					        }); */
+						tempFilePaths.forEach(v => {
+							console.log(that.$request.baseUrl + 'tuhuUploadFile');
+							uni.uploadFile({
+								url: that.$request.baseUrl + 'tuhuUploadFile',
+								filePath: v,
+								name: 'file',
+								formData: {
+									'user': 'test'
+								},
+
+								success: (uploadFileRes) => {
+
+									console.log(JSON.parse(uploadFileRes.data).data);
+									that.imgArr = that.imgArr.concat(JSON.parse(
+										uploadFileRes.data).data);
+								}
+							});
+						})
+						/* that.$http('accompany/SuperCheckSheet/uploadFile', tempFilePaths[0], 'POST').then(res => {
+							
+						}) */
+					}
+				});
+			},
+			delimg(index) {
+				this.imgArr.splice(index, 1)
+			},
+			submit() {
+				
+				uni.showLoading({
+					title: '保存中'
+				})
+				var exeImg = this.imgArr.join(',')
+				this.$http('openMiniEvaluate/addOpenEvaluate', {
+					shopID:this.shopID,
+					sheetID:this.sheetID,
+					overallEvaluation:this.grade,
+					serviceEvaluation:this.taiduStar,
+					constructionEvaluation:this.zhiliangStar,
+					storeEvaluation:this.huanjingStar,
+					eContent: this.exeContent,
+					imgs: exeImg
+				}, 'POST').then(res => {
+					//this.submitSuperCheckSheet()
+					uni.showToast({
+						title: '提交成功',
+						icon: 'none',
+						duration: 2000,
+					});
+					let pages = getCurrentPages(); // 当前页面
+					let beforePage = pages[pages.length - 2]; // 上一页
+					setTimeout(function() {
+						uni.navigateBack({
+						    success: function() {
+						        beforePage.onLoad(); // 执行上一页的onLoad方法
+						    }
+						});
+					}, 2000);
+
+
+				})
+			}
+
+
+
+		}
+	}
+</script>
+
+<style scoped>
+	.box {
+		min-height: 100vh;
+		background: #F4F5F7;
+	}
+
+	.main {
+		padding: 20rpx 24rpx;
+		margin-bottom: 120rpx;
+	}
+
+	.population {
+		margin-top: 20rpx;
+		background: #FFFFFF;
+		padding: 30rpx 20rpx;
+		border-radius: 10rpx;
+	}
+
+	.title {
+		font-size: 30rpx;
+		font-weight: 600;
+		color: #333333;
+	}
+
+	.populationImg {
+		width: 32rpx;
+		height: 32rpx;
+	}
+
+	.populationCont {
+		display: flex;
+		padding-top: 30rpx;
+	}
+
+	.populationLine {
+		display: flex;
+		line-height: 32rpx;
+		font-size: 28rpx;
+		color: #999999;
+		width: 200rpx;
+	}
+
+	.populationTxt {
+		padding-left: 12rpx;
+	}
+
+	.orangeColor {
+		color: #FF0000;
+	}
+
+	.rowView {
+		padding: 30rpx 0rpx 0rpx;
+		display: flex;
+		justify-content: space-between;
+	}
+
+	.littleTitle {
+		font-size: 28rpx;
+		color: #666666;
+		line-height: 32rpx;
+	}
+
+	.xxBox {
+		display: flex;
+		justify-content: flex-start;
+
+	}
+
+	.td {
+		width: 80rpx;
+		font-size: 24rpx;
+		margin-left: 10rpx;
+	}
+
+	.firstView,
+	.secondView {
+		background-color: #FFFFFF;
+		border-radius: 10rpx;
+	}
+
+	.firstView {
+		margin-bottom: 20rpx;
+	}
+
+
+
+	.textareaCont {
+		padding: 20rpx 0rpx;
+		min-height: 150rpx;
+		width: 95%;
+		font-size: 28rpx;
+	}
+
+
+	.imgBox {
+		display: flex;
+		flex-wrap: wrap;
+		padding: 20rpx 0rpx;
+
+	}
+
+	.imgLine {
+		position: relative;
+		margin-right: 10rpx;
+	}
+
+	.itemImg {
+		width: 150rpx;
+		height: 150rpx;
+		margin-right: 5rpx;
+	}
+
+	/* .img4 {
+		margin-right: 20rpx;
+		
+	} */
+
+	.delImg {
+		width: 32rpx;
+		height: 32rpx;
+		position: absolute;
+		right: 0rpx;
+		top: 0rpx;
+	}
+
+
+	.bottom {
+		width: 750rpx;
+		height: 120rpx;
+		background: #FFFFFF;
+		box-shadow: 0px -4px 8px 0px rgba(153, 153, 153, 0.08);
+		position: fixed;
+		left: 0;
+		bottom: 0;
+		display: flex;
+		justify-content: space-around;
+	}
+
+	.shoreDz {
+		width: 702rpx;
+		height: 74rpx;
+		background: #D53533;
+		border-radius: 37rpx;
+		text-align: center;
+		line-height: 74rpx;
+		color: #FFFFFF;
+		font-size: 30rpx;
+		margin-top: 24rpx;
+	}
+	.populationCont2{
+		display: flex;
+		justify-content: space-between;
+	}
+</style>

+ 50 - 2
pages/user/historyDetail.vue

@@ -107,7 +107,12 @@
 		</view>
 	</view>
 
-
+	
+	<view class="bottom">
+		<view v-if="orderData.billsheet.EvaluateState == 0" @click.stop="goAppraise()" class="ping">评价</view>
+		<view v-else @click.stop="goAppraiseDetail()" class="kan">查看评价</view>
+	</view>
+	
 	</view>
 </template>
 
@@ -146,7 +151,17 @@
 
 		},
 		
-		methods: {
+		methods: {
+			goAppraiseDetail(item) {
+				uni.navigateTo({
+					url: 'myAppraiseDetail?sheetId=' + this.orderData.billsheet.id
+				})
+			},
+			goAppraise(item){
+				uni.navigateTo({
+					url: 'appraise?sheetID=' + this.orderData.billsheet.id + '&shopID=' + this.orderData.billsheet.shopID
+				})
+			},
 			decryptPhoneNumber: function(e) {
 			  console.log(e);
 			  this.code=e.detail.code
@@ -808,5 +823,38 @@
 			color: #FFFFFF;
 			margin-top: 62rpx;
 			margin-left:71rpx;
+		}
+		.bottom{
+			
+			position: absolute;
+			width: 750rpx;
+			padding: 20rpx 24rpx;
+			padding-bottom: constant(safe-area-inset-bottom);
+			padding-bottom: env(safe-area-inset-bottom);
+			right: 0;
+			bottom: 0;
+			background: #ffffff;
+			border-radius: 24rpx 24rpx 0px 0px;
+			
+			display: flex;
+			justify-content: flex-end;
+		}
+		.ping{
+			text-align: center;
+			color: #FF4F00;
+			width: 150rpx;
+			height: 56rpx;
+			line-height: 56rpx;
+			border-radius: 36rpx;
+			border: 2rpx solid #FF4F00;
+		}
+		.kan{
+			text-align: center;
+			color: #3C3C3C;
+			width: 150rpx;
+			height: 56rpx;
+			line-height: 56rpx;
+			border-radius: 36rpx;
+			border: 2rpx solid #DDDDDD;
 		}
 </style>

+ 41 - 2
pages/user/historySpend.vue

@@ -15,7 +15,11 @@
 			<view class="itemN" v-if="item.listParts.length != 0">
 				<view class="itemContent" v-if="item.listParts.length != 0" v-for="(v,i) in item.listParts">{{v.GoodsName}},</view>
 			</view>
-			
+			
+			<view class="bottom">
+				<view v-if="item.EvaluateState == 0" @click.stop="goAppraise(item)" class="ping">评价</view>
+				<view v-else @click.stop="goAppraiseDetail(item)" class="kan">查看评价</view>
+			</view>
 		</view>
 
 		<!-- 上拉 加载更多 -->
@@ -44,7 +48,17 @@
 			this.page = 1
 			this.myOrderCoupon()
 		},
-		methods: {
+		methods: {
+			goAppraiseDetail(item) {
+				uni.navigateTo({
+					url: 'myAppraiseDetail?sheetId=' + item.id
+				})
+			},
+			goAppraise(item){
+				uni.navigateTo({
+					url: 'appraise?sheetID=' + item.id + '&shopID=' + item.shopID
+				})
+			},
 			goDetail(id) {
 				uni.navigateTo({
 					url: 'historyDetail?id=' + id
@@ -176,6 +190,31 @@
 		font-size: 24rpx;
 		
 	}
+	.bottom{
+		padding-top: 20rpx;
+		border-top: 1rpx solid #EEEEEE;
+		margin-top: 20rpx;
+		display: flex;
+		justify-content: flex-end;
+	}
+	.ping{
+		text-align: center;
+		color: #FF4F00;
+		width: 150rpx;
+		height: 56rpx;
+		line-height: 56rpx;
+		border-radius: 36rpx;
+		border: 2rpx solid #FF4F00;
+	}
+	.kan{
+		text-align: center;
+		color: #3C3C3C;
+		width: 150rpx;
+		height: 56rpx;
+		line-height: 56rpx;
+		border-radius: 36rpx;
+		border: 2rpx solid #DDDDDD;
+	}
 	.noMore {
 		text-align: center;
 		line-height: 50rpx;

+ 368 - 0
pages/user/myAppraise.vue

@@ -0,0 +1,368 @@
+<template>
+	<view class="content">
+
+		<!-- 列表 -->
+		<view class="itemContent">
+			<view v-for="(item,index) in itemData" :key="index" @click="goDetail(item)">
+				<view class="item">
+
+
+
+					<!-- 第一行 -->
+					<view class="firstView">
+						<view class="left">
+							<image :src='item.PhotoPath' v-if="item.PhotoPath" class="storeImg"></image>
+							<image src="../../static/img/pic_def_ava.png" mode="" class="storeImg" v-else></image>
+							<view class="nickName">{{userInfo.nickName?userInfo.nickName:'微信昵称'}}</view>
+						</view>
+						<!-- 时间截取 -->
+						<view class="time">{{item.CreateTime.slice(0,item.CreateTime.length-8)}}</view>
+					</view>
+
+					<!-- 第2行 -->
+					<view class="secondView">
+						<view class="fen">总分</view>
+						<!-- 星星 -->
+						<uni-rate :value="item.Overallevaluation" :max="5" color="#EEEEEE" active-color="#FF0000"
+							:size="13" :margin="2" :readonly="true" />
+
+						<view class="count">服务态度{{item.ServiceEvaluation}}星</view>
+						<view class="count">施工质量{{item.ConstructionEvaluation}}星</view>
+						<view class="count">店面环境{{item.StoreEvaluation}}星</view>
+					</view>
+
+
+
+					<view class="contentMes">{{item.EContent}}</view>
+
+					<!-- 照片 -->
+					<view class="imgBg">
+						<view v-for="(itemImg,indexImg) in item.imgs" :key="indexImg">
+
+							<image :src="itemImg.imageUrl" class="img"
+								@click.stop="previewImage(itemImg.imageUrl,item.imgs)"></image>
+						</view>
+					</view>
+
+					<!-- 商家回复 -->
+
+					<view class="writeBack" v-if="item.ReplyContent">商家回复:{{item.ReplyContent}}</view>
+
+
+					<view class="bottom">
+						<view class="btnBox" @click.stop="goOrder(item)">
+							<image src="../../static/img/icon_ding.png" class="btnImg"></image>
+							<view class="btn">查看订单</view>
+						</view>
+
+						<view class="btnBox" @click.stop="deleteItem(item, index)">
+							<image src="../../static/img/icon_del.png" class="btnImg"></image>
+							<view class="btn">删除</view>
+						</view>
+
+					</view>
+
+
+
+
+
+				</view>
+
+
+			</view>
+
+		</view>
+
+		<!-- 上拉 加载更多 -->
+		<view class="noMore" v-if="noMoreShow">没有更多数据</view>
+		<!-- 无数据空白页 -->
+		<nodata v-if="itemData.length==0"></nodata>
+
+	</view>
+</template>
+
+<script>
+	import nodata from '../../components/nodata/nodata.vue'
+	export default {
+		components: {
+			nodata,
+		},
+		data() {
+			return {
+				itemData: [],
+				page: 1,
+				noMoreShow: false,
+				userInfo: '',
+			}
+		},
+		onLoad(opt) {
+			this.userInfo = uni.getStorageSync("userInfo");
+		},
+		onShow() {
+			this.itemData = []
+			this.page = 1
+			this.getItemData()
+		},
+		methods: {
+			goOrder(item) {
+				uni.navigateTo({
+					url: 'historyDetail?id=' + item.SheetID
+				})
+			},
+			goDetail(item) {
+				uni.navigateTo({
+					url: 'myAppraiseDetail?sheetId=' + item.SheetID
+				})
+			},
+			previewImage(img, arrDic) {
+				var arr = [];
+
+				arrDic.forEach(item => {
+					arr.push(item.imageUrl)
+				})
+
+				// 预览图片
+				uni.previewImage({
+					urls: arr,
+					current: img,
+					longPressActions: {
+						itemList: ['发送给朋友', '保存图片', '收藏'],
+						success: function(data) {
+							console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
+						},
+						fail: function(err) {
+							console.log(err.errMsg);
+						}
+					}
+				});
+			},
+			deleteItem(item, index) {
+				var that = this;
+				uni.showModal({
+					title: '提示',
+					content: '确定删除该条评价吗?',
+					success: function(res) {
+						if (res.confirm) {
+							that.itemData.splice(index, 1);
+							uni.showLoading({
+								title: '删除中'
+							})
+
+							let url = 'openMiniEvaluate/deleteMyOpenEvaluate',
+								params = {
+									id: item.ID,
+
+								}
+							that.$http(url, params, 'POST').then(res => {
+								uni.hideLoading();
+
+								that.page = 1
+								that.getItemData()
+
+							})
+						}
+
+					}
+				});
+
+			},
+			getItemData() {
+				uni.showLoading({
+					title: '加载中'
+				})
+				let url = 'openMiniEvaluate/listOpenEvaluatePage',
+					params = {
+						page: this.page,
+						limit: 20,
+
+					}
+				this.$http(url, params, 'GET').then(res => {
+					uni.hideLoading();
+					var list = res.data.Items
+
+					// 处理 undefined和null转为空白字符串
+					// list.forEach((item, index) => {
+					// 	for (const key in item) {
+					// 		item[key] = this.$praseStrEmpty(item[key])
+					// 	}
+					// })
+
+
+					if (this.page == 1) {
+						this.itemData = list
+					} else {
+						this.itemData = this.itemData.concat(list)
+					}
+
+					if (list.length < 10) {
+						this.noMoreShow = false
+					} else {
+						this.noMoreShow = true
+					}
+
+
+				})
+			},
+
+		},
+
+		// 下拉刷新 上拉加载更多
+		onPullDownRefresh() {
+			this.page = 1
+			this.getItemData()
+			setTimeout(function() {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		},
+		onReachBottom() {
+			this.page++;
+			this.getItemData()
+		},
+
+	}
+</script>
+
+<style scoped>
+	.content {
+		background: #f4f5f7;
+		min-height: 100vh;
+		padding-top: 20rpx;
+		padding-bottom: 60rpx;
+	}
+
+
+
+	.item {
+		border-radius: 10rpx;
+		padding: 20rpx;
+		background-color: #FFFFFF;
+
+		margin: 0 24rpx 20rpx;
+
+	}
+
+
+	.firstView,
+	.secondView {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+
+	}
+
+	.left {
+		display: flex;
+		align-items: center;
+	}
+
+	.storeImg {
+		width: 56rpx;
+		height: 56rpx;
+		border-radius: 8rpx;
+		margin-right: 10rpx;
+	}
+
+	.nickName {
+		font-weight: 500;
+		font-size: 26rpx;
+
+		color: #333333;
+	}
+
+	.firstView {
+		margin-bottom: 24rpx;
+	}
+
+
+
+	.time {
+		font-size: 26rpx;
+		color: #999999;
+	}
+
+
+	.fen {
+		font-size: 22rpx;
+		color: #999999;
+
+	}
+
+	.count {
+		font-size: 22rpx;
+		color: #999999;
+		margin-right: 20rpx;
+	}
+
+	.thirdView {
+		display: flex;
+		justify-content: flex-start;
+		padding-top: 10rpx;
+		padding-bottom: 20rpx;
+	}
+
+
+	.contentMes {
+		font-size: 26rpx;
+		color: #333333;
+		line-height: 37rpx;
+		padding: 16rpx 0;
+	}
+
+	.imgBg {
+		display: flex;
+		justify-content: flex-start;
+		padding: 20rpx 0rpx;
+		flex-wrap: wrap;
+	}
+
+	.img {
+		width: 150rpx;
+		height: 150rpx;
+		margin-right: 20rpx;
+		border-radius: 8rpx;
+	}
+
+	.writeBack {
+		font-size: 26rpx;
+		color: #666666;
+		line-height: 37rpx;
+		padding: 20rpx;
+		background-color: #F4F5F7;
+		margin-bottom: 20rpx;
+
+		border-radius: 10rpx;
+	}
+
+	.bottom {
+		padding-top: 27rpx;
+		padding-bottom: 7rpx;
+		border-top: 1rpx solid #EEEEEE;
+		display: flex;
+		justify-content: flex-end;
+		align-items: center;
+	}
+
+	.btnBox {
+		display: flex;
+		align-items: center;
+		margin-left: 40rpx;
+	}
+
+	.btnImg {
+		width: 24rpx;
+		height: 24rpx;
+	}
+
+	.btn {
+		color: #666666;
+		font-size: 24rpx;
+		margin-left: 5rpx;
+	}
+
+	.noMore {
+		text-align: center;
+		line-height: 50rpx;
+		color: #999999;
+		font-size: 28rpx;
+	}
+</style>

+ 362 - 0
pages/user/myAppraiseDetail.vue

@@ -0,0 +1,362 @@
+<template>
+	<view class="content">
+
+		<!-- 列表 -->
+		<view class="itemContent">
+			<view v-for="(item,index) in itemData" :key="index">
+				<view class="item">
+
+
+
+					<!-- 第一行 -->
+					<view class="firstView">
+						<view class="left">
+							<image :src='item.PhotoPath' v-if="item.PhotoPath" class="storeImg"></image>
+							<image src="../../static/img/pic_def_ava.png" mode="" class="storeImg" v-else></image>
+							<view class="nickName">{{userInfo.nickName?userInfo.nickName:'微信昵称'}}</view>
+						</view>
+						<!-- 时间截取 -->
+						<view class="time">{{item.CreateTime.slice(0,item.CreateTime.length-8)}}</view>
+					</view>
+
+					<!-- 第2行 -->
+					<view class="secondView">
+						<view class="fen">总分</view>
+						<!-- 星星 -->
+						<uni-rate :value="item.Overallevaluation" :max="5" color="#EEEEEE" active-color="#FF0000"
+							:size="13" :margin="2" :readonly="true" />
+
+						<view class="count">服务态度{{item.ServiceEvaluation}}星</view>
+						<view class="count">施工质量{{item.ConstructionEvaluation}}星</view>
+						<view class="count">店面环境{{item.StoreEvaluation}}星</view>
+					</view>
+
+
+
+					<view class="contentMes">{{item.EContent}}</view>
+
+					<!-- 照片 -->
+					<view class="imgBg">
+						<view v-for="(itemImg,indexImg) in item.imgs" :key="indexImg">
+
+							<image :src="itemImg.imageUrl" class="img"
+								@click.stop="previewImage(itemImg.imageUrl,item.imgs)"></image>
+						</view>
+					</view>
+
+					<!-- 商家回复 -->
+
+					<view class="writeBack" v-if="item.ReplyContent">商家回复:{{item.ReplyContent}}</view>
+
+
+					<view class="bottom">
+						
+
+						<view class="btnBox" @click.stop="deleteItem(item, index)">
+							<image src="../../static/img/icon_del.png" class="btnImg"></image>
+							<view class="btn">删除</view>
+						</view>
+
+					</view>
+
+
+
+
+
+				</view>
+
+
+			</view>
+
+		</view>
+
+		<!-- 上拉 加载更多 -->
+		<view class="noMore" v-if="noMoreShow">没有更多数据</view>
+		<!-- 无数据空白页 -->
+		<nodata v-if="itemData.length==0"></nodata>
+
+	</view>
+</template>
+
+<script>
+	import nodata from '../../components/nodata/nodata.vue'
+	export default {
+		components: {
+			nodata,
+		},
+		data() {
+			return {
+				itemData: [],
+				page: 1,
+				noMoreShow: false,
+				imgArr: [],
+				userInfo: '',
+				sheetId:''
+			}
+		},
+		onLoad(opt) {
+			console.log('opt==',opt);
+			this.sheetId = opt.sheetId;
+			this.userInfo = uni.getStorageSync("userInfo");
+		},
+		onShow() {
+			this.itemData = []
+			this.page = 1
+			this.getItemData()
+		},
+		methods: {
+			
+			previewImage(img, arrDic) {
+				var arr = [];
+
+				arrDic.forEach(item => {
+					arr.push(item.imageUrl)
+				})
+
+				// 预览图片
+				uni.previewImage({
+					urls: arr,
+					current: img,
+					longPressActions: {
+						itemList: ['发送给朋友', '保存图片', '收藏'],
+						success: function(data) {
+							console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
+						},
+						fail: function(err) {
+							console.log(err.errMsg);
+						}
+					}
+				});
+			},
+			deleteItem(item, index) {
+				var that = this;
+				uni.showModal({
+					title: '提示',
+					content: '确定删除该条评价吗?',
+					success: function(res) {
+						if (res.confirm) {
+							that.itemData.splice(index, 1);
+							uni.showLoading({
+								title: '删除中'
+							})
+
+							let url = 'openMiniEvaluate/deleteMyOpenEvaluate',
+								params = {
+									id: item.ID,
+
+								}
+							that.$http(url, params, 'POST').then(res => {
+								uni.hideLoading();
+
+								that.page = 1
+								that.getItemData()
+
+							})
+						}
+
+					}
+				});
+
+			},
+			getItemData() {
+				uni.showLoading({
+					title: '加载中'
+				})
+				let url = 'openMiniEvaluate/queryOpenEvaluateDetail',
+					params = {
+						sheetId: this.sheetId,
+						
+
+					}
+				this.$http(url, params, 'GET').then(res => {
+					uni.hideLoading();
+					var list = res.data
+
+					// 处理 undefined和null转为空白字符串
+					// list.forEach((item, index) => {
+					// 	for (const key in item) {
+					// 		item[key] = this.$praseStrEmpty(item[key])
+					// 	}
+					// })
+
+					
+					// if (this.page == 1) {
+					// 	this.itemData = list
+					// } else {
+						
+						this.itemData = [];
+						this.itemData = this.itemData.concat(list)
+					// }
+
+					// if (list.length < 10) {
+					// 	this.noMoreShow = false
+					// } else {
+					// 	this.noMoreShow = true
+					// }
+
+
+				})
+			},
+
+		},
+
+		// 下拉刷新 上拉加载更多
+		onPullDownRefresh() {
+			this.page = 1
+			this.getItemData()
+			setTimeout(function() {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		},
+		onReachBottom() {
+			this.page++;
+			this.getItemData()
+		},
+
+	}
+</script>
+
+<style scoped>
+	.content {
+		background: #f4f5f7;
+		min-height: 100vh;
+		padding-top: 20rpx;
+
+	}
+
+
+
+	.item {
+		border-radius: 10rpx;
+		padding: 20rpx;
+		background-color: #FFFFFF;
+
+		margin: 0 24rpx 20rpx;
+
+	}
+
+
+	.firstView,
+	.secondView {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+
+	}
+
+	.left {
+		display: flex;
+		align-items: center;
+	}
+
+	.storeImg {
+		width: 56rpx;
+		height: 56rpx;
+		border-radius: 8rpx;
+		margin-right: 10rpx;
+	}
+
+	.nickName {
+		font-weight: 500;
+		font-size: 26rpx;
+
+		color: #333333;
+	}
+
+	.firstView {
+		margin-bottom: 24rpx;
+	}
+
+
+
+	.time {
+		font-size: 26rpx;
+		color: #999999;
+	}
+
+
+	.fen {
+		font-size: 22rpx;
+		color: #999999;
+
+	}
+
+	.count {
+		font-size: 22rpx;
+		color: #999999;
+		margin-right: 20rpx;
+	}
+
+	.thirdView {
+		display: flex;
+		justify-content: flex-start;
+		padding-top: 10rpx;
+		padding-bottom: 20rpx;
+	}
+
+
+	.contentMes {
+		font-size: 26rpx;
+		color: #333333;
+		line-height: 37rpx;
+		padding: 16rpx 0;
+	}
+
+	.imgBg {
+		display: flex;
+		justify-content: flex-start;
+		padding: 20rpx 0rpx;
+		flex-wrap: wrap;
+	}
+
+	.img {
+		width: 150rpx;
+		height: 150rpx;
+		margin-right: 20rpx;
+		border-radius: 8rpx;
+	}
+
+	.writeBack {
+		font-size: 26rpx;
+		color: #666666;
+		line-height: 37rpx;
+		padding: 20rpx;
+		background-color: #F4F5F7;
+		margin-bottom: 20rpx;
+
+		border-radius: 10rpx;
+	}
+
+	.bottom {
+		padding-top: 27rpx;
+		padding-bottom: 7rpx;
+		border-top: 1rpx solid #EEEEEE;
+		display: flex;
+		justify-content: flex-end;
+		align-items: center;
+	}
+
+	.btnBox {
+		display: flex;
+		align-items: center;
+		margin-left: 40rpx;
+	}
+
+	.btnImg {
+		width: 24rpx;
+		height: 24rpx;
+	}
+
+	.btn {
+		color: #666666;
+		font-size: 24rpx;
+		margin-left: 5rpx;
+	}
+
+	.noMore {
+		text-align: center;
+		line-height: 50rpx;
+		color: #999999;
+		font-size: 28rpx;
+	}
+</style>

+ 44 - 8
pages/user/user.vue

@@ -82,7 +82,17 @@
 					<image src="../../static/img/icon_phone.png" mode="" class="shopRightImg" @click="call"></image>
 				</view>
 
-			</view>
+			</view>
+			<view class="appraiseBox">
+				<view v-if="numList.isShowScore == 1" class="appraise">{{numList.shopInfo.miniV2ShopScore}}
+				<span style='font-size: 26rpx; margin-left: 3rpx;'>分</span>
+				</view>
+				<view @click="goShopAppraiseList()"  v-if="numList.isShowEvaluate == 1" class="appraiseCount">评价数 {{numList.evaluateCount}}
+				<image src="../../static/timg/icon_arrow_right.png" mode="" style="width: 7rpx; height: 15rpx; margin-left: 32rpx;"></image>
+				</view>
+			</view>
+			
+			
 			<view class="shopTime" v-if="numList.shopInfo.startTime && numList.shopInfo.endTime">
 				{{numList.shopInfo.startTime}}-{{numList.shopInfo.endTime}}</view>
 			<view class="address">
@@ -145,13 +155,13 @@
 				<image src="../../static/img/big_rightArrow.png" mode="" class="big_rightArrow"></image>
 			</view>
 
-			<!-- <view class="rowBox" @click="gonavigateTo('invite')">
+			<view class="rowBox" @click="gonavigateTo('myAppraise')">
 				<view class="leftView">
-					<image src="../../static/img/icon_me6.png" mode="" class="liftIcon"></image>
-					<view class="rowTitle">分享给好友</view>
+					<image src="../../static/img/icon_pingjia.png" mode="" class="liftIcon"></image>
+					<view class="rowTitle">我的评价</view>
 				</view>
 				<image src="../../static/img/big_rightArrow.png" mode="" class="big_rightArrow"></image>
-			</view> -->
+			</view>
 			<button open-type="share" class="rowBox" >
 				<view class="leftView">
 					<image src="../../static/img/icon_me6.png" mode="" class="liftIcon"></image>
@@ -288,7 +298,12 @@
 
 
 		},
-		methods: {
+		methods: {
+			goShopAppraiseList(){
+				uni.navigateTo({
+					url: 'ShopAppraiseList?shopID=' + this.numList.shopInfo.id
+				})
+			},
 			getVersionInfo(){
 				this.$http('miniApp2/sys/getVersionInfo', {
 					appId: this.ext.appId,
@@ -537,7 +552,8 @@
 		border: 1rpx solid #FFFFFF;
 		border-radius: 4rpx;
 		height: 36rpx;
-	}
+	}
+	
 
 	.phone {
 		font-size: 24rpx;
@@ -724,7 +740,27 @@
 		color: #3C3C3C;
 		line-height: 42rpx;
 	}
-
+	.appraiseBox{
+		padding: 5rpx 20rpx;
+		margin: 10rpx 0 0 -20rpx;
+		height: 62rpx;
+		background: rgba(255,0,0,0.08);
+		border-radius: 0 25rpx 70rpx 0;
+		width: 320rpx;
+		display: flex;
+		align-items: center;
+	}
+	.appraise{
+		color: #FF0000;
+		font-size: 38rpx;
+		font-weight: bold;
+	}
+	.appraiseCount{
+		margin-left: 40rpx;
+		font-size: 24rpx;
+		font-weight: 400;
+		color: #666666;
+	}
 	.shopRightBox {
 		display: flex;
 		justify-content: space-between;

BIN
static/img/icon_del.png


BIN
static/img/icon_ding.png


BIN
static/img/icon_pingjia.png


BIN
static/img/pic_def_ava.png


+ 22 - 0
uni_modules/uni-icons/changelog.md

@@ -0,0 +1,22 @@
+## 1.3.5(2022-01-24)
+- 优化 size 属性可以传入不带单位的字符串数值
+## 1.3.4(2022-01-24)
+- 优化 size 支持其他单位
+## 1.3.3(2022-01-17)
+- 修复 nvue 有些图标不显示的bug,兼容老版本图标
+## 1.3.2(2021-12-01)
+- 优化 示例可复制图标名称
+## 1.3.1(2021-11-23)
+- 优化 兼容旧组件 type 值
+## 1.3.0(2021-11-19)
+- 新增 更多图标
+- 优化 自定义图标使用方式
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons)
+## 1.1.7(2021-11-08)
+## 1.2.0(2021-07-30)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.1.5(2021-05-12)
+- 新增 组件示例地址
+## 1.1.4(2021-02-05)
+- 调整为uni_modules目录规范

Plik diff jest za duży
+ 1169 - 0
uni_modules/uni-icons/components/uni-icons/icons.js


+ 96 - 0
uni_modules/uni-icons/components/uni-icons/uni-icons.vue

@@ -0,0 +1,96 @@
+<template>
+	<!-- #ifdef APP-NVUE -->
+	<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" @click="_onClick">{{unicode}}</text>
+	<!-- #endif -->
+	<!-- #ifndef APP-NVUE -->
+	<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick"></text>
+	<!-- #endif -->
+</template>
+
+<script>
+	import icons from './icons.js';
+	const getVal = (val) => {
+		const reg = /^[0-9]*$/g
+		return (typeof val === 'number' || reg.test(val) )? val + 'px' : val;
+	} 
+	// #ifdef APP-NVUE
+	var domModule = weex.requireModule('dom');
+	import iconUrl from './uniicons.ttf'
+	domModule.addRule('fontFace', {
+		'fontFamily': "uniicons",
+		'src': "url('"+iconUrl+"')"
+	});
+	// #endif
+
+	/**
+	 * Icons 图标
+	 * @description 用于展示 icons 图标
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=28
+	 * @property {Number} size 图标大小
+	 * @property {String} type 图标图案,参考示例
+	 * @property {String} color 图标颜色
+	 * @property {String} customPrefix 自定义图标
+	 * @event {Function} click 点击 Icon 触发事件
+	 */
+	export default {
+		name: 'UniIcons',
+		emits:['click'],
+		props: {
+			type: {
+				type: String,
+				default: ''
+			},
+			color: {
+				type: String,
+				default: '#333333'
+			},
+			size: {
+				type: [Number, String],
+				default: 16
+			},
+			customPrefix:{
+				type: String,
+				default: ''
+			}
+		},
+		data() {
+			return {
+				icons: icons.glyphs
+			}
+		},
+		computed:{
+			unicode(){
+				let code = this.icons.find(v=>v.font_class === this.type)
+				if(code){
+					return unescape(`%u${code.unicode}`)
+				}
+				return ''
+			},
+			iconSize(){
+				return getVal(this.size)
+			}
+		},
+		methods: {
+			_onClick() {
+				this.$emit('click')
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	/* #ifndef APP-NVUE */
+	@import './uniicons.css';
+	@font-face {
+		font-family: uniicons;
+		src: url('./uniicons.ttf') format('truetype');
+	}
+
+	/* #endif */
+	.uni-icons {
+		font-family: uniicons;
+		text-decoration: none;
+		text-align: center;
+	}
+
+</style>

+ 663 - 0
uni_modules/uni-icons/components/uni-icons/uniicons.css

@@ -0,0 +1,663 @@
+.uniui-color:before {
+  content: "\e6cf";
+}
+
+.uniui-wallet:before {
+  content: "\e6b1";
+}
+
+.uniui-settings-filled:before {
+  content: "\e6ce";
+}
+
+.uniui-auth-filled:before {
+  content: "\e6cc";
+}
+
+.uniui-shop-filled:before {
+  content: "\e6cd";
+}
+
+.uniui-staff-filled:before {
+  content: "\e6cb";
+}
+
+.uniui-vip-filled:before {
+  content: "\e6c6";
+}
+
+.uniui-plus-filled:before {
+  content: "\e6c7";
+}
+
+.uniui-folder-add-filled:before {
+  content: "\e6c8";
+}
+
+.uniui-color-filled:before {
+  content: "\e6c9";
+}
+
+.uniui-tune-filled:before {
+  content: "\e6ca";
+}
+
+.uniui-calendar-filled:before {
+  content: "\e6c0";
+}
+
+.uniui-notification-filled:before {
+  content: "\e6c1";
+}
+
+.uniui-wallet-filled:before {
+  content: "\e6c2";
+}
+
+.uniui-medal-filled:before {
+  content: "\e6c3";
+}
+
+.uniui-gift-filled:before {
+  content: "\e6c4";
+}
+
+.uniui-fire-filled:before {
+  content: "\e6c5";
+}
+
+.uniui-refreshempty:before {
+  content: "\e6bf";
+}
+
+.uniui-location-filled:before {
+  content: "\e6af";
+}
+
+.uniui-person-filled:before {
+  content: "\e69d";
+}
+
+.uniui-personadd-filled:before {
+  content: "\e698";
+}
+
+.uniui-back:before {
+  content: "\e6b9";
+}
+
+.uniui-forward:before {
+  content: "\e6ba";
+}
+
+.uniui-arrow-right:before {
+  content: "\e6bb";
+}
+
+.uniui-arrowthinright:before {
+  content: "\e6bb";
+}
+
+.uniui-arrow-left:before {
+  content: "\e6bc";
+}
+
+.uniui-arrowthinleft:before {
+  content: "\e6bc";
+}
+
+.uniui-arrow-up:before {
+  content: "\e6bd";
+}
+
+.uniui-arrowthinup:before {
+  content: "\e6bd";
+}
+
+.uniui-arrow-down:before {
+  content: "\e6be";
+}
+
+.uniui-arrowthindown:before {
+  content: "\e6be";
+}
+
+.uniui-bottom:before {
+  content: "\e6b8";
+}
+
+.uniui-arrowdown:before {
+  content: "\e6b8";
+}
+
+.uniui-right:before {
+  content: "\e6b5";
+}
+
+.uniui-arrowright:before {
+  content: "\e6b5";
+}
+
+.uniui-top:before {
+  content: "\e6b6";
+}
+
+.uniui-arrowup:before {
+  content: "\e6b6";
+}
+
+.uniui-left:before {
+  content: "\e6b7";
+}
+
+.uniui-arrowleft:before {
+  content: "\e6b7";
+}
+
+.uniui-eye:before {
+  content: "\e651";
+}
+
+.uniui-eye-filled:before {
+  content: "\e66a";
+}
+
+.uniui-eye-slash:before {
+  content: "\e6b3";
+}
+
+.uniui-eye-slash-filled:before {
+  content: "\e6b4";
+}
+
+.uniui-info-filled:before {
+  content: "\e649";
+}
+
+.uniui-reload:before {
+  content: "\e6b2";
+}
+
+.uniui-micoff-filled:before {
+  content: "\e6b0";
+}
+
+.uniui-map-pin-ellipse:before {
+  content: "\e6ac";
+}
+
+.uniui-map-pin:before {
+  content: "\e6ad";
+}
+
+.uniui-location:before {
+  content: "\e6ae";
+}
+
+.uniui-starhalf:before {
+  content: "\e683";
+}
+
+.uniui-star:before {
+  content: "\e688";
+}
+
+.uniui-star-filled:before {
+  content: "\e68f";
+}
+
+.uniui-calendar:before {
+  content: "\e6a0";
+}
+
+.uniui-fire:before {
+  content: "\e6a1";
+}
+
+.uniui-medal:before {
+  content: "\e6a2";
+}
+
+.uniui-font:before {
+  content: "\e6a3";
+}
+
+.uniui-gift:before {
+  content: "\e6a4";
+}
+
+.uniui-link:before {
+  content: "\e6a5";
+}
+
+.uniui-notification:before {
+  content: "\e6a6";
+}
+
+.uniui-staff:before {
+  content: "\e6a7";
+}
+
+.uniui-vip:before {
+  content: "\e6a8";
+}
+
+.uniui-folder-add:before {
+  content: "\e6a9";
+}
+
+.uniui-tune:before {
+  content: "\e6aa";
+}
+
+.uniui-auth:before {
+  content: "\e6ab";
+}
+
+.uniui-person:before {
+  content: "\e699";
+}
+
+.uniui-email-filled:before {
+  content: "\e69a";
+}
+
+.uniui-phone-filled:before {
+  content: "\e69b";
+}
+
+.uniui-phone:before {
+  content: "\e69c";
+}
+
+.uniui-email:before {
+  content: "\e69e";
+}
+
+.uniui-personadd:before {
+  content: "\e69f";
+}
+
+.uniui-chatboxes-filled:before {
+  content: "\e692";
+}
+
+.uniui-contact:before {
+  content: "\e693";
+}
+
+.uniui-chatbubble-filled:before {
+  content: "\e694";
+}
+
+.uniui-contact-filled:before {
+  content: "\e695";
+}
+
+.uniui-chatboxes:before {
+  content: "\e696";
+}
+
+.uniui-chatbubble:before {
+  content: "\e697";
+}
+
+.uniui-upload-filled:before {
+  content: "\e68e";
+}
+
+.uniui-upload:before {
+  content: "\e690";
+}
+
+.uniui-weixin:before {
+  content: "\e691";
+}
+
+.uniui-compose:before {
+  content: "\e67f";
+}
+
+.uniui-qq:before {
+  content: "\e680";
+}
+
+.uniui-download-filled:before {
+  content: "\e681";
+}
+
+.uniui-pyq:before {
+  content: "\e682";
+}
+
+.uniui-sound:before {
+  content: "\e684";
+}
+
+.uniui-trash-filled:before {
+  content: "\e685";
+}
+
+.uniui-sound-filled:before {
+  content: "\e686";
+}
+
+.uniui-trash:before {
+  content: "\e687";
+}
+
+.uniui-videocam-filled:before {
+  content: "\e689";
+}
+
+.uniui-spinner-cycle:before {
+  content: "\e68a";
+}
+
+.uniui-weibo:before {
+  content: "\e68b";
+}
+
+.uniui-videocam:before {
+  content: "\e68c";
+}
+
+.uniui-download:before {
+  content: "\e68d";
+}
+
+.uniui-help:before {
+  content: "\e679";
+}
+
+.uniui-navigate-filled:before {
+  content: "\e67a";
+}
+
+.uniui-plusempty:before {
+  content: "\e67b";
+}
+
+.uniui-smallcircle:before {
+  content: "\e67c";
+}
+
+.uniui-minus-filled:before {
+  content: "\e67d";
+}
+
+.uniui-micoff:before {
+  content: "\e67e";
+}
+
+.uniui-closeempty:before {
+  content: "\e66c";
+}
+
+.uniui-clear:before {
+  content: "\e66d";
+}
+
+.uniui-navigate:before {
+  content: "\e66e";
+}
+
+.uniui-minus:before {
+  content: "\e66f";
+}
+
+.uniui-image:before {
+  content: "\e670";
+}
+
+.uniui-mic:before {
+  content: "\e671";
+}
+
+.uniui-paperplane:before {
+  content: "\e672";
+}
+
+.uniui-close:before {
+  content: "\e673";
+}
+
+.uniui-help-filled:before {
+  content: "\e674";
+}
+
+.uniui-paperplane-filled:before {
+  content: "\e675";
+}
+
+.uniui-plus:before {
+  content: "\e676";
+}
+
+.uniui-mic-filled:before {
+  content: "\e677";
+}
+
+.uniui-image-filled:before {
+  content: "\e678";
+}
+
+.uniui-locked-filled:before {
+  content: "\e668";
+}
+
+.uniui-info:before {
+  content: "\e669";
+}
+
+.uniui-locked:before {
+  content: "\e66b";
+}
+
+.uniui-camera-filled:before {
+  content: "\e658";
+}
+
+.uniui-chat-filled:before {
+  content: "\e659";
+}
+
+.uniui-camera:before {
+  content: "\e65a";
+}
+
+.uniui-circle:before {
+  content: "\e65b";
+}
+
+.uniui-checkmarkempty:before {
+  content: "\e65c";
+}
+
+.uniui-chat:before {
+  content: "\e65d";
+}
+
+.uniui-circle-filled:before {
+  content: "\e65e";
+}
+
+.uniui-flag:before {
+  content: "\e65f";
+}
+
+.uniui-flag-filled:before {
+  content: "\e660";
+}
+
+.uniui-gear-filled:before {
+  content: "\e661";
+}
+
+.uniui-home:before {
+  content: "\e662";
+}
+
+.uniui-home-filled:before {
+  content: "\e663";
+}
+
+.uniui-gear:before {
+  content: "\e664";
+}
+
+.uniui-smallcircle-filled:before {
+  content: "\e665";
+}
+
+.uniui-map-filled:before {
+  content: "\e666";
+}
+
+.uniui-map:before {
+  content: "\e667";
+}
+
+.uniui-refresh-filled:before {
+  content: "\e656";
+}
+
+.uniui-refresh:before {
+  content: "\e657";
+}
+
+.uniui-cloud-upload:before {
+  content: "\e645";
+}
+
+.uniui-cloud-download-filled:before {
+  content: "\e646";
+}
+
+.uniui-cloud-download:before {
+  content: "\e647";
+}
+
+.uniui-cloud-upload-filled:before {
+  content: "\e648";
+}
+
+.uniui-redo:before {
+  content: "\e64a";
+}
+
+.uniui-images-filled:before {
+  content: "\e64b";
+}
+
+.uniui-undo-filled:before {
+  content: "\e64c";
+}
+
+.uniui-more:before {
+  content: "\e64d";
+}
+
+.uniui-more-filled:before {
+  content: "\e64e";
+}
+
+.uniui-undo:before {
+  content: "\e64f";
+}
+
+.uniui-images:before {
+  content: "\e650";
+}
+
+.uniui-paperclip:before {
+  content: "\e652";
+}
+
+.uniui-settings:before {
+  content: "\e653";
+}
+
+.uniui-search:before {
+  content: "\e654";
+}
+
+.uniui-redo-filled:before {
+  content: "\e655";
+}
+
+.uniui-list:before {
+  content: "\e644";
+}
+
+.uniui-mail-open-filled:before {
+  content: "\e63a";
+}
+
+.uniui-hand-down-filled:before {
+  content: "\e63c";
+}
+
+.uniui-hand-down:before {
+  content: "\e63d";
+}
+
+.uniui-hand-up-filled:before {
+  content: "\e63e";
+}
+
+.uniui-hand-up:before {
+  content: "\e63f";
+}
+
+.uniui-heart-filled:before {
+  content: "\e641";
+}
+
+.uniui-mail-open:before {
+  content: "\e643";
+}
+
+.uniui-heart:before {
+  content: "\e639";
+}
+
+.uniui-loop:before {
+  content: "\e633";
+}
+
+.uniui-pulldown:before {
+  content: "\e632";
+}
+
+.uniui-scan:before {
+  content: "\e62a";
+}
+
+.uniui-bars:before {
+  content: "\e627";
+}
+
+.uniui-cart-filled:before {
+  content: "\e629";
+}
+
+.uniui-checkbox:before {
+  content: "\e62b";
+}
+
+.uniui-checkbox-filled:before {
+  content: "\e62c";
+}
+
+.uniui-shop:before {
+  content: "\e62f";
+}
+
+.uniui-headphones:before {
+  content: "\e630";
+}
+
+.uniui-cart:before {
+  content: "\e631";
+}

BIN
uni_modules/uni-icons/components/uni-icons/uniicons.ttf


+ 86 - 0
uni_modules/uni-icons/package.json

@@ -0,0 +1,86 @@
+{
+  "id": "uni-icons",
+  "displayName": "uni-icons 图标",
+  "version": "1.3.5",
+  "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。",
+  "keywords": [
+    "uni-ui",
+    "uniui",
+    "icon",
+    "图标"
+],
+  "repository": "https://github.com/dcloudio/uni-ui",
+  "engines": {
+    "HBuilderX": "^3.2.14"
+  },
+  "directories": {
+    "example": "../../temps/example_temps"
+  },
+  "dcloudext": {
+    "category": [
+      "前端组件",
+      "通用组件"
+    ],
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "无",
+      "data": "无",
+      "permissions": "无"
+    },
+    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+  },
+  "uni_modules": {
+    "dependencies": ["uni-scss"],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "y"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "微信浏览器(Android)": "y",
+          "QQ浏览器(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "小程序": {
+          "微信": "y",
+          "阿里": "y",
+          "百度": "y",
+          "字节跳动": "y",
+          "QQ": "y"
+        },
+        "快应用": {
+          "华为": "u",
+          "联盟": "u"
+        },
+        "Vue": {
+            "vue2": "y",
+            "vue3": "y"
+        }
+      }
+    }
+  }
+}

+ 8 - 0
uni_modules/uni-icons/readme.md

@@ -0,0 +1,8 @@
+## Icons 图标
+> **组件名:uni-icons**
+> 代码块: `uIcons`
+
+用于展示 icons 图标 。
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 25 - 0
uni_modules/uni-rate/changelog.md

@@ -0,0 +1,25 @@
+## 1.3.1(2022-02-25)
+- 修复 条件判断 `NaN` 错误的 bug
+## 1.3.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-rate](https://uniapp.dcloud.io/component/uniui/uni-rate)
+## 1.2.2(2021-09-10)
+- 优化 默认值修改为 0 颗星
+## 1.2.1(2021-07-30)
+- 优化 vue3下事件警告的问题
+## 1.2.0(2021-07-13)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.1.2(2021-05-12)
+- 新增 组件示例地址
+## 1.1.1(2021-04-21)
+- 修复 布局变化后 uni-rate  星星计算不准确的 bug
+- 优化 添加依赖 uni-icons, 导入 uni-rate 自动下载依赖
+## 1.1.0(2021-04-16)
+- 修复 uni-rate 属性 margin 值为 string 组件失效的 bug
+
+## 1.0.9(2021-02-05)
+- 优化 组件引用关系,通过uni_modules引用组件
+
+## 1.0.8(2021-02-05)
+- 调整为uni_modules目录规范
+- 支持 pc 端

+ 361 - 0
uni_modules/uni-rate/components/uni-rate/uni-rate.vue

@@ -0,0 +1,361 @@
+<template>
+	<view>
+		<view ref="uni-rate" class="uni-rate">
+			<view class="uni-rate__icon" :class="{'uni-cursor-not-allowed': disabled}"
+				:style="{ 'margin-right': marginNumber + 'px' }" v-for="(star, index) in stars" :key="index"
+				@touchstart.stop="touchstart" @touchmove.stop="touchmove" @mousedown.stop="mousedown"
+				@mousemove.stop="mousemove" @mouseleave="mouseleave">
+				<uni-icons :color="color" :size="size" :type="isFill ? 'star-filled' : 'star'" />
+				<!-- #ifdef APP-NVUE -->
+				<view :style="{ width: star.activeWitch.replace('%','')*size/100+'px'}" class="uni-rate__icon-on">
+					<uni-icons style="text-align: left;" :color="disabled?'#ccc':activeColor" :size="size"
+						type="star-filled" />
+				</view>
+				<!-- #endif -->
+				<!-- #ifndef APP-NVUE -->
+				<view :style="{ width: star.activeWitch}" class="uni-rate__icon-on">
+					<uni-icons :color="disabled?disabledColor:activeColor" :size="size" type="star-filled" />
+				</view>
+				<!-- #endif -->
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	// #ifdef APP-NVUE
+	const dom = uni.requireNativePlugin('dom');
+	// #endif
+	/**
+	 * Rate 评分
+	 * @description 评分组件
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=33
+	 * @property {Boolean} 	isFill = [true|false] 		星星的类型,是否为实心类型, 默认为实心
+	 * @property {String} 	color 						未选中状态的星星颜色,默认为 "#ececec"
+	 * @property {String} 	activeColor 				选中状态的星星颜色,默认为 "#ffca3e"
+	 * @property {String} 	disabledColor 				禁用状态的星星颜色,默认为 "#c0c0c0"
+	 * @property {Number} 	size 						星星的大小
+	 * @property {Number} 	value/v-model 				当前评分
+	 * @property {Number} 	max 						最大评分评分数量,目前一分一颗星
+	 * @property {Number} 	margin 						星星的间距,单位 px
+	 * @property {Boolean} 	disabled = [true|false] 	是否为禁用状态,默认为 false
+	 * @property {Boolean} 	readonly = [true|false] 	是否为只读状态,默认为 false
+	 * @property {Boolean} 	allowHalf = [true|false] 	是否实现半星,默认为 false
+	 * @property {Boolean} 	touchable = [true|false] 	是否支持滑动手势,默认为 true
+	 * @event {Function} change 						uniRate 的 value 改变时触发事件,e={value:Number}
+	 */
+
+	export default {
+		name: "UniRate",
+		props: {
+			isFill: {
+				// 星星的类型,是否镂空
+				type: [Boolean, String],
+				default: true
+			},
+			color: {
+				// 星星未选中的颜色
+				type: String,
+				default: "#ececec"
+			},
+			activeColor: {
+				// 星星选中状态颜色
+				type: String,
+				default: "#ffca3e"
+			},
+			disabledColor: {
+				// 星星禁用状态颜色
+				type: String,
+				default: "#c0c0c0"
+			},
+			size: {
+				// 星星的大小
+				type: [Number, String],
+				default: 24
+			},
+			value: {
+				// 当前评分
+				type: [Number, String],
+				default: 0
+			},
+			modelValue: {
+				// 当前评分
+				type: [Number, String],
+				default: 0
+			},
+			max: {
+				// 最大评分
+				type: [Number, String],
+				default: 5
+			},
+			margin: {
+				// 星星的间距
+				type: [Number, String],
+				default: 0
+			},
+			disabled: {
+				// 是否可点击
+				type: [Boolean, String],
+				default: false
+			},
+			readonly: {
+				// 是否只读
+				type: [Boolean, String],
+				default: false
+			},
+			allowHalf: {
+				// 是否显示半星
+				type: [Boolean, String],
+				default: false
+			},
+			touchable: {
+				// 是否支持滑动手势
+				type: [Boolean, String],
+				default: true
+			}
+		},
+		data() {
+			return {
+				valueSync: "",
+				userMouseFristMove: true,
+				userRated: false,
+				userLastRate: 1
+			};
+		},
+		watch: {
+			value(newVal) {
+				this.valueSync = Number(newVal);
+			},
+			modelValue(newVal) {
+				this.valueSync = Number(newVal);
+			},
+		},
+		computed: {
+			stars() {
+				const value = this.valueSync ? this.valueSync : 0;
+				const starList = [];
+				const floorValue = Math.floor(value);
+				const ceilValue = Math.ceil(value);
+				for (let i = 0; i < this.max; i++) {
+					if (floorValue > i) {
+						starList.push({
+							activeWitch: "100%"
+						});
+					} else if (ceilValue - 1 === i) {
+						starList.push({
+							activeWitch: (value - floorValue) * 100 + "%"
+						});
+					} else {
+						starList.push({
+							activeWitch: "0"
+						});
+					}
+				}
+				return starList;
+			},
+
+			marginNumber() {
+				return Number(this.margin)
+			}
+		},
+		created() {
+			this.valueSync = Number(this.value || this.modelValue);
+			this._rateBoxLeft = 0
+			this._oldValue = null
+		},
+		mounted() {
+			setTimeout(() => {
+				this._getSize()
+			}, 100)
+			// #ifdef H5
+			this.PC = this.IsPC()
+			// #endif
+		},
+		methods: {
+			touchstart(e) {
+				// #ifdef H5
+				if (this.IsPC()) return
+				// #endif
+				if (this.readonly || this.disabled) return
+				const {
+					clientX,
+					screenX
+				} = e.changedTouches[0]
+				// TODO 做一下兼容,只有 Nvue 下才有 screenX,其他平台式 clientX
+				this._getRateCount(clientX || screenX)
+			},
+			touchmove(e) {
+				// #ifdef H5
+				if (this.IsPC()) return
+				// #endif
+				if (this.readonly || this.disabled || !this.touchable) return
+				const {
+					clientX,
+					screenX
+				} = e.changedTouches[0]
+				this._getRateCount(clientX || screenX)
+			},
+
+			/**
+			 * 兼容 PC @tian
+			 */
+
+			mousedown(e) {
+				// #ifdef H5
+				if (!this.IsPC()) return
+				if (this.readonly || this.disabled) return
+				const {
+					clientX,
+				} = e
+				this.userLastRate = this.valueSync
+				this._getRateCount(clientX)
+				this.userRated = true
+				// #endif
+			},
+			mousemove(e) {
+				// #ifdef H5
+				if (!this.IsPC()) return
+				if (this.userRated) return
+				if (this.userMouseFristMove) {
+					console.log('---mousemove----', this.valueSync);
+					this.userLastRate = this.valueSync
+					this.userMouseFristMove = false
+				}
+				if (this.readonly || this.disabled || !this.touchable) return
+				const {
+					clientX,
+				} = e
+				this._getRateCount(clientX)
+				// #endif
+			},
+			mouseleave(e) {
+				// #ifdef H5
+				if (!this.IsPC()) return
+				if (this.readonly || this.disabled || !this.touchable) return
+				if (this.userRated) {
+					this.userRated = false
+					return
+				}
+				this.valueSync = this.userLastRate
+				// #endif
+			},
+			// #ifdef H5
+			IsPC() {
+				var userAgentInfo = navigator.userAgent;
+				var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
+				var flag = true;
+				for (let v = 0; v < Agents.length - 1; v++) {
+					if (userAgentInfo.indexOf(Agents[v]) > 0) {
+						flag = false;
+						break;
+					}
+				}
+				return flag;
+			},
+			// #endif
+
+			/**
+			 * 获取星星个数
+			 */
+			_getRateCount(clientX) {
+				this._getSize()
+				const size = Number(this.size)
+				if (isNaN(size)) {
+					return new Error('size 属性只能设置为数字')
+				}
+				const rateMoveRange = clientX - this._rateBoxLeft
+				let index = parseInt(rateMoveRange / (size + this.marginNumber))
+				index = index < 0 ? 0 : index;
+				index = index > this.max ? this.max : index;
+				const range = parseInt(rateMoveRange - (size + this.marginNumber) * index);
+				let value = 0;
+				if (this._oldValue === index && !this.PC) return;
+				this._oldValue = index;
+				if (this.allowHalf) {
+					if (range > (size / 2)) {
+						value = index + 1
+					} else {
+						value = index + 0.5
+					}
+				} else {
+					value = index + 1
+				}
+
+				value = Math.max(0.5, Math.min(value, this.max))
+				this.valueSync = value
+				this._onChange()
+			},
+
+			/**
+			 * 触发动态修改
+			 */
+			_onChange() {
+
+				this.$emit("input", this.valueSync);
+				this.$emit("update:modelValue", this.valueSync);
+				this.$emit("change", {
+					value: this.valueSync
+				});
+			},
+			/**
+			 * 获取星星距离屏幕左侧距离
+			 */
+			_getSize() {
+				// #ifndef APP-NVUE
+				uni.createSelectorQuery()
+					.in(this)
+					.select('.uni-rate')
+					.boundingClientRect()
+					.exec(ret => {
+						if (ret) {
+							this._rateBoxLeft = ret[0].left
+						}
+					})
+				// #endif
+				// #ifdef APP-NVUE
+				dom.getComponentRect(this.$refs['uni-rate'], (ret) => {
+					const size = ret.size
+					if (size) {
+						this._rateBoxLeft = size.left
+					}
+				})
+				// #endif
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.uni-rate {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		line-height: 1;
+		font-size: 0;
+		flex-direction: row;
+		/* #ifdef H5 */
+		cursor: pointer;
+		/* #endif */
+	}
+
+	.uni-rate__icon {
+		position: relative;
+		line-height: 1;
+		font-size: 0;
+	}
+
+	.uni-rate__icon-on {
+		overflow: hidden;
+		position: absolute;
+		top: 0;
+		left: 0;
+		line-height: 1;
+		text-align: left;
+	}
+
+	.uni-cursor-not-allowed {
+		/* #ifdef H5 */
+		cursor: not-allowed !important;
+		/* #endif */
+	}
+</style>

+ 88 - 0
uni_modules/uni-rate/package.json

@@ -0,0 +1,88 @@
+{
+  "id": "uni-rate",
+  "displayName": "uni-rate 评分",
+  "version": "1.3.1",
+  "description": "Rate 评分组件,可自定义评分星星图标的大小、间隔、评分数。",
+  "keywords": [
+    "uni-ui",
+    "uniui",
+    "评分"
+],
+  "repository": "https://github.com/dcloudio/uni-ui",
+  "engines": {
+    "HBuilderX": ""
+  },
+  "directories": {
+    "example": "../../temps/example_temps"
+  },
+  "dcloudext": {
+    "category": [
+      "前端组件",
+      "通用组件"
+    ],
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "无",
+      "data": "无",
+      "permissions": "无"
+    },
+    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+  },
+  "uni_modules": {
+    "dependencies": [
+			"uni-scss",
+			"uni-icons"
+		],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "y"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "微信浏览器(Android)": "y",
+          "QQ浏览器(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "小程序": {
+          "微信": "y",
+          "阿里": "y",
+          "百度": "y",
+          "字节跳动": "y",
+          "QQ": "y"
+        },
+        "快应用": {
+          "华为": "u",
+          "联盟": "u"
+        },
+        "Vue": {
+            "vue2": "y",
+            "vue3": "y"
+        }
+      }
+    }
+  }
+}

+ 12 - 0
uni_modules/uni-rate/readme.md

@@ -0,0 +1,12 @@
+
+
+## Rate 评分
+> **组件名:uni-rate**
+> 代码块: `uRate`
+> 关联组件:`uni-icons`
+
+
+评分组件,多用于购买商品后,对商品进行评价等场景
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-rate)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839