achao 3 éve
szülő
commit
1c16b63e08

+ 358 - 0
common/components/uni-rate.vue

@@ -0,0 +1,358 @@
+<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>
+	/**
+	 * 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: "#FEC823"
+			},
+			disabledColor: {
+				// 星星禁用状态颜色
+				type: String,
+				default: "#c0c0c0"
+			},
+			size: {
+				// 星星的大小
+				type: [Number, String],
+				default: 20
+			},
+			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 (size === NaN) {
+					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>

+ 1 - 1
config/index.js

@@ -1,6 +1,6 @@
 const dev = {
 	// baseUrlNew: 'https://apitest.eliangeyun.com',
-	baseUrlNew: 'http://192.168.1.114:8099',
+	baseUrlNew: 'http://192.168.1.119:8090',
 	// baseUrlNew: 'http://192.168.1.116:8999',
 	h5Appid: 'wxb66b599f7f61b46f',
 	debug: false

+ 99 - 57
pages.json

@@ -75,7 +75,7 @@
 		{
 			"path": "pages/public/register",
 			"style": {
-				 "navigationStyle": "custom"
+				"navigationStyle": "custom"
 			}
 		}, {
 			"path": "pages/goodSource/shippingDetails",
@@ -88,11 +88,24 @@
 		{
 			"path": "pages/goodSource/cargoOwnerSee",
 			"style": {
-				"navigationBarTitleText": "货主详请",
-				"enablePullDownRefresh": false
+				"navigationBarTitleText": "",
+				"enablePullDownRefresh": false,
+				"navigationBarBackgroundColor": "white",
+				"app-plus": {
+					"titleNView": {
+						"buttons": [
+							{
+								"text": "&#xf0141",
+								"fontSrc":"/static/iconfont.ttf",
+								"fontSize":"20"
+							}
+						]
+					}
+				}
+
 			}
-		
-		},{
+
+		}, {
 			"path": "pages/order/orderDetails",
 			"style": {
 				"navigationStyle": "custom",
@@ -113,8 +126,8 @@
 				"navigationBarTitleText": "评价记录",
 				"enablePullDownRefresh": false
 			}
-		
-		},{
+
+		}, {
 			"path": "pages/order/confirmUnloading",
 			"style": {
 				"navigationBarTitleText": "确认卸车",
@@ -125,16 +138,16 @@
 			"path": "pages/mine/driverCertification",
 			"style": {
 				"navigationBarTitleText": "司机认证",
-				"navigationBarBackgroundColor":"#2772FB",
-				"navigationBarTextStyle":"white"
+				"navigationBarBackgroundColor": "#2772FB",
+				"navigationBarTextStyle": "white"
 			}
 
 		}, {
 			"path": "pages/mine/driverCertificationNext",
 			"style": {
 				"navigationBarTitleText": "司机认证",
-				"navigationBarBackgroundColor":"#2772FB",
-				"navigationBarTextStyle":"white"
+				"navigationBarBackgroundColor": "#2772FB",
+				"navigationBarTextStyle": "white"
 			}
 
 		},
@@ -142,20 +155,20 @@
 			"path": "pages/mine/editDriverCertification",
 			"style": {
 				"navigationBarTitleText": "司机认证",
-				"navigationBarBackgroundColor":"#2772FB",
-				"navigationBarTextStyle":"white"
+				"navigationBarBackgroundColor": "#2772FB",
+				"navigationBarTextStyle": "white"
 			}
-		
+
 		}, {
 			"path": "pages/mine/editDriverCertificationNext",
 			"style": {
 				"navigationBarTitleText": "司机认证",
-				"navigationBarBackgroundColor":"#2772FB",
-				"navigationBarTextStyle":"white"
+				"navigationBarBackgroundColor": "#2772FB",
+				"navigationBarTextStyle": "white"
 			}
-		
+
 		},
-		
+
 		{
 			"path": "pages/mine/helpDescription",
 			"style": {
@@ -168,7 +181,7 @@
 			"style": {
 				"navigationBarTitleText": "管理车辆",
 				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor":"white"
+				"navigationBarBackgroundColor": "white"
 			}
 
 		}, {
@@ -190,7 +203,7 @@
 			"style": {
 				"navigationBarTitleText": "银行卡",
 				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor":"white"
+				"navigationBarBackgroundColor": "white"
 			}
 
 		}, {
@@ -212,7 +225,7 @@
 			"style": {
 				"navigationBarTitleText": "设置",
 				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor":"white"
+				"navigationBarBackgroundColor": "white"
 			}
 
 		},
@@ -221,9 +234,9 @@
 			"style": {
 				"navigationBarTitleText": "评价",
 				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor":"white"
+				"navigationBarBackgroundColor": "white"
 			}
-		
+
 		},
 		{
 			"path": "pages/mine/camera/idcard/idcard",
@@ -245,59 +258,88 @@
 				"navigationStyle": "custom"
 			}
 
+		}, {
+			"path": "pages/mine/settings/editAvatar",
+			"style": {
+				"navigationBarTitleText": "修改头像",
+				"enablePullDownRefresh": false
+			}
+
+		},
+		{
+			"path": "pages/mine/settings/editPhone",
+			"style": {
+				"navigationBarTitleText": "修改账号",
+				"enablePullDownRefresh": false
+			}
+
+		},
+		{
+			"path": "pages/mine/settings/editPassword",
+			"style": {
+				"navigationStyle": "custom"
+			}
+
+		}, {
+			"path": "pages/mine/settings/feedback",
+			"style": {
+				"navigationBarTitleText": "意见反馈",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/public/loginOther",
+			"style": {
+				"navigationStyle": "custom"
+			}
+
+		},
+		{
+		 "path": "pages/order/signContract",
+			"style": {
+				"navigationBarTitleText": "签订合同",
+				"enablePullDownRefresh": false
+		 }
+
 		}
 	    ,{
-            "path" : "pages/mine/settings/editAvatar",
+            "path" : "pages/goodSource/jb",
             "style" :                                                                                    
             {
-                "navigationBarTitleText": "修改头像",
+                "navigationBarTitleText": "举报",
                 "enablePullDownRefresh": false
             }
             
-        },
-		{
-		    "path" : "pages/mine/settings/editPhone",
-		    "style" :                                                                                    
-		    {
-		        "navigationBarTitleText": "修改账号",
-		        "enablePullDownRefresh": false
-		    }
-		    
-		},
-		{
-		    "path" : "pages/mine/settings/editPassword",
-		    "style" :                                                                                    
-		    {
-		        "navigationStyle": "custom"
-		    }
-		    
-		}
+        }
         ,{
-            "path" : "pages/mine/settings/feedback",
+            "path" : "pages/goodSource/fk",
             "style" :                                                                                    
             {
-                "navigationBarTitleText": "意见反馈",
+                "navigationBarTitleText": "反馈",
                 "enablePullDownRefresh": false
             }
             
         }
         ,{
-            "path" : "pages/public/loginOther",
+            "path" : "pages/order/addEvaluation",
             "style" :                                                                                    
             {
-              "navigationStyle": "custom"
+                "navigationBarTitleText": "评价",
+                "enablePullDownRefresh": false,
+				"app-plus": {
+					"titleNView": {
+						"buttons": [
+							{
+								"text": "提交",
+								"fontSize":"14",
+								"color":"#007AFF"
+							}
+						]
+					}
+				}
             }
             
-        },
-		{
-		    "path" : "pages/order/signContract",
-		    "style" :                                                                                    
-		    {
-		        "navigationBarTitleText": "签订合同",
-		        "enablePullDownRefresh": false
-		    }
-		    
-		}
+        }
     ],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",

+ 274 - 91
pages/goodSource/cargoOwnerSee.vue

@@ -1,92 +1,206 @@
 <template>
 	<view class="center">
+		
+				<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" class="mescroll">
 		<view class="center_top">
 			<view class="flex">
 				<u--image
-				:src="objectInfo.cargoOwnerPortrait?objectInfo.cargoOwnerPortrait:'../../static/images/mine/tx.png'"
-				width='180rpx' height='180rpx' shape="circle" >
-			</u--image>
-			<view class="name">{{objectInfo.cargoOwnerName}}</view>
-			<view class="title_css" v-show="objectInfo.cargoOwner">企</view>
-			<view class="feedback_css">反举</view>
+					:src="objectInfo.cargoOwnerPortrait?objectInfo.cargoOwnerPortrait:'../../static/images/mine/tx.png'"
+					width='170rpx' height='170rpx' shape="circle">
+				</u--image>
+				<view class="name">{{objectInfo.cargoOwnerName}}</view>
+				<image src="../../static/qy@2x.png" mode="widthFix" class="title_css" v-show="objectInfo.cargoOwner">
+				</image>
+				<view class="feedback_css"></view>
+			</view>
+		</view>
+		<view class="pf-row flex">
+			<view class="flex">
+				<view class="text">发运次数</view>
+				<view class="number">{{dataObj.countFa}}</view>
 			</view>
 			<view class="flex">
-				<view class="switchbtn" @click="switchsubmit(1)" :class="indexBtn == 1 ? 'switchbtn1':''">货主信息</view>
-				<view class="switchbtn" @click="switchsubmit(2)" :class="indexBtn == 2 ? 'switchbtn1':''">评价</view>
+				<view class="text">好评率</view>
+				<view class="number">{{dataObj.haoPingLv}}</view>
 			</view>
+			<view class="flex">
+				<view class="text">评论</view>
+				<view class="number">{{list.length}}</view>
+			</view>
+		</view>
+
+		<u-line></u-line>
+		<view class="flex">
+			<view class="switchbtn" @click="switchsubmit(1)" :class="indexBtn == 1 ? 'switchbtn1':''">货主信息</view>
+			<view class="switchbtn" @click="switchsubmit(2)" :class="indexBtn == 2 ? 'switchbtn1':''">评价</view>
 		</view>
 		<!-- 货主信息 -->
 		<view v-if="indexBtn == 1" class="enterprise">
 			<view>
-			 <view class="enterprise_title" v-if="objectInfo.cargoOwner">所属企业</view>
-			 <view class="enterprise_title" v-if="!objectInfo.cargoOwner">个人货主,暂未代理企业</view>
-		     <view class="enterprise_name" v-if="objectInfo.cargoOwner">{{objectInfo.cargoOwner}}</view>
-			 <view class="recordInfo">发运记录</view>
-			 <view class="enterprise_name">累计发运150次 <span>,好评率99%</span></view>
+				<view class="enterprise_title" v-if="objectInfo.cargoOwner">所属企业</view>
+				<view class="enterprise_title" v-if="!objectInfo.cargoOwner">个人货主,暂未代理企业</view>
+				<view class="enterprise_name" v-if="objectInfo.cargoOwner">{{objectInfo.cargoOwner}}</view>
 			</view>
 		</view>
 		<!-- 评价信息 -->
-		<view v-if="indexBtn == 2">
-			<view class="flex">
-				<u-button :type="btnData == 1 ? 'primary':''" @click="btnChange(1)">全部评价</u-button>
-				<u-button :type="btnData == 2 ? 'primary':''" @click="btnChange(2)">最新</u-button>
-				<u-button :type="btnData == 3 ? 'primary':''" @click="btnChange(3)">好评</u-button>
-				<u-button :type="btnData == 4 ? 'primary':''" @click="btnChange(4)">差评</u-button>
-			</view>
-			<view class="evaluate_css" v-for="(item,index) in 4">
-				<view class="flex">
-					<u--image
-					:src="objectInfo.cargoOwnerPortrait?objectInfo.cargoOwnerPortrait:'../../static/images/mine/tx.png'"
-					width='70rpx' height='70rpx' shape="circle" >
-				</u--image>
-				<view class="evaluate_name">{{objectInfo.cargoOwnerName}}</view>
-				<view class="branch_css ">{{index}}</view>
-		 		<view class="branch_css"><u-rate count="5" v-model="index" gutter="1"></u-rate></view>
-				<view class="evaluate_date">2021-05-12</view>
+			<view v-if="indexBtn == 2" class="pl-style">
+				<view class="flex flex-space-between">
+					<view :class="btnData == 1 ? 'btn-active':'btn'" @click="btnChange(1)">全部(1)</view>
+					<view :class="btnData == 2 ? 'btn-active':'btn'" @click="btnChange(2)">最新(1)</view>
+					<view :class="btnData == 3 ? 'btn-active':'btn'" @click="btnChange(3)">好评(1)</view>
+					<view :class="btnData == 4 ? 'btn-active':'btn'" @click="btnChange(4)">差评(1)</view>
+				</view>
+				<view class="evaluate_css" v-for="(item,index) in list">
+					<view class="flex">
+						<view class="row1 flex">
+							<u--image
+								:src="objectInfo.cargoOwnerPortrait?objectInfo.cargoOwnerPortrait:'../../static/images/mine/tx.png'"
+								width='70rpx' height='70rpx' shape="circle">
+							</u--image>
+							<view class="right">
+								<view class="evaluate_name">{{objectInfo.driverName}}</view>
+								<view class="evaluate_date m-top10">{{objectInfo.createDate.split(' ')[0]}}</view>
+								<view class="flex m-top10">
+									<view class="branch_css ">{{item.count}}</view>
+									<view class="">
+										<start count="5" v-model="item.count" size="35" activeColor="#ffaa00" :size="18"
+											:allowHalf='true' :readonly='true'>
+										</start>
+									</view>
+								</view>
+								<view class="">
+									{{item.driverContent}}
+								</view>
+								<view>
+									<u--image
+										:src="objectInfo.cargoOwnerPortrait?objectInfo.cargoOwnerPortrait:'../../static/images/mine/tx.png'"
+										width='70rpx' height='70rpx'>
+									</u--image>
+								</view>
+							</view>
+						</view>
+					</view>
 				</view>
 			</view>
-				
-		</view>
+		<u-picker :show="show" :columns="columns" :closeOnClickOverlay='true' @close='selectTypeClose'
+			@cancel='selectTypeClose' @confirm='confirmBtn'></u-picker>
+		<u-toast ref="uToast"></u-toast>
+		</mescroll-body>
 	</view>
 </template>
 
 <script>
-	export default{
-		data(){
-			return{
-				id:"",
-				objectInfo:{},
-				indexBtn:1,
-				btnData:1
+	var that
+		import start from '../../common/components/uni-rate.vue'
+		import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+	import {
+		mapState
+	} from 'vuex';
+	export default {
+		mixins: [MescrollMixin], // 使用mixin
+		components: {
+			start
+		},
+		data() {
+			return {
+				list:[],
+				dataObj:{},
+				show: false,
+				columns: [
+					['反馈', '举报']
+				],
+				id: "",
+				objectInfo: {},
+				indexBtn: 1,
+				btnData: 1
 			}
 		},
-		onShow(){
-			
+		computed: {
+			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
+		},
+		onShow() {
+
 		},
 		onLoad(options) {
-			this.objectInfo = JSON.parse(options.obj)
+			debugger
+			that = this
+			this.objectInfo = options
+			console.log(options)
+		},
+		onNavigationBarButtonTap(e) {
+			console.log("success")
+			this.show = true
 		},
-		methods:{
-			getList(){
-				// this.$request.baseRequest('get', '/publishTaskInfo/api/addOrder', _obj).then(res => {
-				// 		if (res.code == 200) {
-				// 			this.
-				// 		} else {
-				// 			this.$refs.uToast.show({
-				// 				type: 'error',
-				// 				message: res.message,
-				// 			})
-				// 		}
-				// 	})
-				// 	.catch(res => {
-				// 		uni.$u.toast(res.message);
-				// 	});
+		methods: {
+			selectTypeClose() {
+				this.show = false
 			},
-			switchsubmit(num){
+			upCallback(page) {
+				
+				this.getList()
+				that.$request.baseRequest('get', '/evaluateInfo/selectEvaluateInfo', {
+						ownerId: this.objectInfo.commonId,
+						flag: 1,
+						pageSize: page.size,
+						currentPage: page.num
+					}).then(res => {
+						debugger
+						if (page.num == 1) that.list = [];
+						that.list = that.list.concat(res.data.records); //追加新数据
+						for (let i = 0; i < that.list.length; i++) {
+							if(that.list[i].driverUrl){
+								that.list[i].imgList = that.list[i].driverUrl.split(',')
+							}
+							
+							that.list[i].count = (Number(that.list[i].driverCredit) + Number(that.list[i]
+								.tranEfficiency) + Number(that.list[i].tranSafety) + Number(that.list[i]
+								.serviceQuality) + Number(that.list[i].satisfaction)) / 25 * 5
+						}
+						that.mescroll.endBySize(res.data.records.length, res.data.total);
+						uni.hideLoading()
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
+			},
+			getList() {
+				this.$request.baseRequest('get', '/orderInfo/selectHaoPing', {
+						commonId: this.userInfo.id,
+						haoType:''
+					}).then(res => {
+						if (res.code == 200) {
+								this.dataObj = res.data
+							
+						} else {
+							this.$refs.uToast.show({
+								type: 'error',
+								message: res.message,
+							})
+						}
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
+			},
+			switchsubmit(num) {
 				this.indexBtn = num
 				this.getList()
 			},
-			btnChange(num){
+			confirmBtn(e) {
+				debugger
+				console.log(e.value)
+				if (e.value == '反馈') {
+					uni.$u.route('/pages/goodSource/fk', {
+						val: JSON.stringify(this.objectInfo)
+					});
+				} else {
+					uni.$u.route('/pages/goodSource/jb', {
+						val: JSON.stringify(this.objectInfo)
+					});
+				}
+				this.show = false
+			},
+			btnChange(num) {
 				debugger
 				this.btnData = num
 				this.getList()
@@ -96,67 +210,136 @@
 </script>
 
 <style lang="scss">
-	.center{
+	.center {
 		padding: 40rpx;
 	}
-	.center_top{
-		.name{
-			margin: 40rpx ;
+
+	.center_top {
+		.name {
+			margin: 40rpx;
 			font-size: 48rpx;
 			font-weight: 600;
 		}
-		.title_css{
+
+		.title_css {
 			width: 50rpx;
 			height: 50rpx;
-			background-color: #F60;
 			border-radius: 10rpx;
 			text-align: center;
 			line-height: 50rpx;
 			margin-top: 44rpx;
 		}
-		.feedback_css{
+
+		.feedback_css {
 			margin-top: 44rpx;
 			margin-left: 50px;
 		}
-		.switchbtn{
-			margin-right: 40rpx;
-			margin-top: 20rpx;
-			font-size: 36rpx;
-			font-weight: 600;
-		}
-		.switchbtn1{
-			color: #2772FB;
-		}
 	}
-	.enterprise{
+
+	.switchbtn {
+		margin-right: 40rpx;
+		margin-top: 20rpx;
+		font-weight: 600;
+	}
+
+	.switchbtn1 {
+		color: #2772FB;
+		position: relative;
+	}
+
+	.switchbtn1:before {
+		width: 20px;
+		height: 3px;
+		content: '';
+		position: absolute;
+		bottom: -7px;
+		background: #2772FB;
+		left: 0;
+		right: 0;
+		margin: 0 auto;
+	}
+
+	.enterprise {
 		margin-top: 30rpx;
-		.enterprise_title{
-			font-size: 18px;
+
+		.enterprise_title {
+			font-weight: 700;
+			margin-top: 80rpx;
 		}
-		.enterprise_name{
-			font-size: 18px;
+
+		.enterprise_name {
 			margin-top: 10rpx;
 		}
-		.recordInfo{
-			font-size: 40rpx;
+
+		.recordInfo {
 			margin-top: 20rpx;
 			font-weight: 600;
 		}
 	}
-	.evaluate_css{
+
+	.evaluate_css {
 		margin-top: 30rpx;
 		display: flex;
 		width: 100%;
-		.evaluate_name{
-			margin: 10rpx 10rpx 0 30rpx;
-		}
-		.branch_css{
-			margin: 10rpx 0 0 20rpx;
+		padding-bottom: 40rpx;
+		border-bottom: 1px solid #E6E6E6;
+
+		.evaluate_name {}
+
+		.branch_css {
 			// margin: 0;
+			margin-right: 20rpx;
+		}
+
+		.evaluate_date {}
+
+		.row1 {
+			.right {
+				display: flex;
+				flex-direction: column;
+				margin-left: 40rpx;
+			}
+		}
+	}
+
+	.pf-row {
+		margin: 20rpx 0;
+
+		.text {
+			color: #999;
+			margin-right: 20rpx;
 		}
-		.evaluate_date{
-			display: flex;
-			justify-content: flex-end;
+
+		.number {
+			color: #2772FB;
+		}
+
+		.flex {
+			margin-right: 20rpx;
 		}
 	}
+
+	.pl-style {
+		margin-top: 80rpx;
+	}
+
+	.btn-active {
+		background-color: #2772FB;
+		color: white;
+		border-radius: 50rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		padding: 10rpx 20rpx;
+	}
+
+	.btn {
+		background: #F8F9FB;
+		color: #363636;
+		border-radius: 50rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		padding: 10rpx 20rpx;
+	}
 </style>

+ 142 - 0
pages/goodSource/fk.vue

@@ -0,0 +1,142 @@
+<template>
+	<view class="content">
+		<view class="row1 flex flex-space-between">
+			<view>被反馈人</view>
+			<view class='flex'>
+				<image :src="dataDetails.driverPortrait" mode="widthFix" class="img"></image>
+				<view>{{dataDetails.cargoOwnerName}}</view>
+			</view>
+		</view>
+		<u-line class="line"></u-line>
+		<view class="row2">
+			<view class="title">反馈信息</view>
+			<u--textarea v-model="value1" placeholder="输入要反馈的内容,10-300字" count maxlength='300'></u--textarea>
+			<u-upload class="uview-upload" :fileList="fileList1" @afterRead="afterRead($event)" @delete="deletePic"
+				name="1" multiple :maxCount="9"></u-upload>
+		</view>
+		<view class="row3" @click="submit">提交</view>
+		<u-toast ref="uToast"></u-toast>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState
+	} from 'vuex';
+	import uploadImage from '@/components/ossutil/uploadFile.js';
+	export default {
+		data() {
+			return {
+				imgList: [],
+				value1: '',
+				fileList1: [],
+				dataDetails: {},
+			};
+		},
+		onLoad(options) {
+			debugger
+			this.dataDetails = JSON.parse(options.val)
+			console.log(this.dataDetails)
+			this.imgList = []
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
+		},
+		methods: {
+			submit() {
+				uni.showLoading({
+					title: '加载中'
+				})
+				this.$request.baseRequest('post', '/feedbackReport/api/addInfo', {
+						commonId: this.userInfo.id,
+						name: this.dataDetails.cargoOwnerName,
+						content: this.value1,
+						url: this.imgList.toString(),
+						flag: 1,
+					}).then(res => {
+						let that = this
+						uni.hideLoading()
+						this.$refs.uToast.show({
+							type: 'success',
+							message: "反馈成功",
+							complete() {
+								uni.$u.route('/pages/order/driverDetail', {
+									driver: JSON.stringify(that.dataDetails)
+								});
+
+							}
+						})
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
+			},
+			// 删除图片
+			deletePic(event) {
+				this[`fileList${event.name}`].splice(event.index, 1)
+			},
+			// 新增图片
+			async afterRead(event) {
+				// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
+				let lists = [].concat(event.file)
+				let fileListLen = this[`fileList${event.name}`].length
+				lists.map((item) => {
+					this[`fileList${event.name}`].push({
+						...item,
+						status: 'uploading',
+						message: '上传中'
+					})
+				})
+				for (let i = 0; i < lists.length; i++) {
+					const result = await this.uploadFilePromise(lists[i].url)
+					let item = this[`fileList${event.name}`][fileListLen]
+					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
+						status: 'success',
+						message: '',
+						url: result
+					}))
+					fileListLen++
+				}
+			},
+			uploadFilePromise(url) {
+				uploadImage('image', url, 'appData/',
+					result => {
+						// 上传成功回调函数
+						console.log('图片地址', result)
+						this.imgList.push(result)
+
+					}
+				)
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	.content {
+		background: white;
+	}
+
+	.img {
+		width: 40rpx;
+	}
+
+	.row1,
+	.row2 {
+		padding: 40rpx;
+	}
+
+	.title {
+		margin-bottom: 20rpx;
+	}
+
+	.row3 {
+		width: 80%;
+		background: #2772FB;
+		text-align: center;
+		color: white;
+		padding: 20rpx;
+		margin: auto;
+		border-radius: 10rpx;
+	}
+</style>

+ 2 - 4
pages/goodSource/index.vue

@@ -269,12 +269,10 @@
 
 		},
 		methods: {
-			cargoOwner(_obj){
+			cargoOwner(_obj){debugger
 				// uni.$u.route('/pages/order/evaluateList');
 				console.log("查看---------------",_obj)
-				uni.$u.route('/pages/goodSource/cargoOwnerSee',{
-				obj:JSON.stringify(_obj) 
-				})
+				uni.$u.route('/pages/goodSource/cargoOwnerSee',_obj)
 			},
 			mescrollInit(mescroll) {
 				this.mescroll = mescroll;

+ 142 - 0
pages/goodSource/jb.vue

@@ -0,0 +1,142 @@
+<template>
+	<view class="content">
+		<view class="row1 flex flex-space-between">
+			<view>被举报人</view>
+			<view class='flex'>
+				<image :src="dataDetails.driverPortrait" mode="widthFix" class="img"></image>
+				<view>{{dataDetails.cargoOwnerName}}</view>
+			</view>
+		</view>
+		<u-line class="line"></u-line>
+		<view class="row2">
+			<view class="title">举报信息</view>
+			<u--textarea v-model="value1" placeholder="输入要举报的内容,10-300字" count maxlength='300'></u--textarea>
+			<u-upload class="uview-upload" :fileList="fileList1" @afterRead="afterRead($event)" @delete="deletePic"
+				name="1" multiple :maxCount="9"></u-upload>
+		</view>
+		<view class="row3" @click="submit">提交</view>
+		<u-toast ref="uToast"></u-toast>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState
+	} from 'vuex';
+	import uploadImage from '@/components/ossutil/uploadFile.js';
+	export default {
+		data() {
+			return {
+				imgList: [],
+				value1: '',
+				fileList1: [],
+				dataDetails: {},
+			};
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
+		},
+		onLoad(options) {
+			debugger
+			this.dataDetails = JSON.parse(options.val)
+			console.log(this.dataDetails)
+			this.imgList = []
+		},
+		methods: {
+			submit() {
+				uni.showLoading({
+					title: '加载中'
+				})
+				this.$request.baseRequest('post', '/feedbackReport/api/addInfo', {
+						commonId: this.userInfo.id,
+						name: this.dataDetails.cargoOwnerName,
+						content: this.value1,
+						url: this.imgList.toString(),
+						flag: 2,
+					}).then(res => {
+						let that = this
+						uni.hideLoading()
+						this.$refs.uToast.show({
+							type: 'success',
+							message: "举报成功",
+							complete() {
+								uni.$u.route('/pages/order/driverDetail', {
+									driver: JSON.stringify(that.dataDetails)
+								});
+
+							}
+						})
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
+			},
+			// 删除图片
+			deletePic(event) {
+				this[`fileList${event.name}`].splice(event.index, 1)
+			},
+			// 新增图片
+			async afterRead(event) {
+				// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
+				let lists = [].concat(event.file)
+				let fileListLen = this[`fileList${event.name}`].length
+				lists.map((item) => {
+					this[`fileList${event.name}`].push({
+						...item,
+						status: 'uploading',
+						message: '上传中'
+					})
+				})
+				for (let i = 0; i < lists.length; i++) {
+					const result = await this.uploadFilePromise(lists[i].url)
+					let item = this[`fileList${event.name}`][fileListLen]
+					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
+						status: 'success',
+						message: '',
+						url: result
+					}))
+					fileListLen++
+				}
+			},
+			uploadFilePromise(url) {
+				uploadImage('image', url, 'appData/',
+					result => {
+						// 上传成功回调函数
+						console.log('图片地址', result)
+						this.imgList.push(result)
+
+					}
+				)
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	.content {
+		background: white;
+	}
+
+	.img {
+		width: 40rpx;
+	}
+
+	.row1,
+	.row2 {
+		padding: 40rpx;
+	}
+
+	.title {
+		margin-bottom: 20rpx;
+	}
+
+	.row3 {
+		width: 80%;
+		background: #2772FB;
+		text-align: center;
+		color: white;
+		padding: 20rpx;
+		margin: auto;
+		border-radius: 10rpx;
+	}
+</style>

+ 4 - 2
pages/mine/settings/editAvatar.vue

@@ -10,10 +10,12 @@
 		<u-action-sheet :actions="$helper.imgTypeList" :title="$helper.imgType" :show="isShowimgType"
 			@select="imgTypeSelect" :closeOnClickOverlay="true" :closeOnClickAction="true" @close="isShowimgType=false">
 		</u-action-sheet>
+		<u-toast ref="uToast"></u-toast>
 	</view>
 </template>
 
 <script>
+	var that;
 	import uploadImage from '@/components/ossutil/uploadFile.js';
 	import {
 		mapState
@@ -49,7 +51,7 @@
 						sourceType: that.$helper.chooseImage.sourceType,
 						success: function(res) {
 							console.log(JSON.stringify(res.tempFilePaths));
-							uploadImage(res.tempFilePaths[0], 'appData/',
+							uploadImage('image',res.tempFilePaths[0], 'appData/',
 								result => {
 									// 上传成功
 									console.log('图片地址', result)
@@ -138,7 +140,7 @@
 										name,
 										value
 									});
-									this.$refs.uToast.show({
+									that.$refs.uToast.show({
 										type: 'success',
 										message: "修改成功!",
 									})

+ 288 - 0
pages/order/addEvaluation.vue

@@ -0,0 +1,288 @@
+<template>
+	<view class="page_pingjia4">
+		<view class="kuang">
+			<view class="order-row flex flex-space-between">
+				<view class="flex">
+					<view>{{objData.orderNo}}</view>
+					<view>{{objData.goodsName}}</view>
+				</view>
+				<view class="flex align-center">
+					<image src="../../static/ITkoala-amap/start.png" mode="widthFix" class="tx-img"></image>
+					<view>{{objData.cargoOwner}}</view>
+				</view>
+			</view>
+			<view class="xkuang">
+				<view style="display: flex;" class="flex-space-between" v-for="(item,index) in rate"
+					@click="clickStar(index)">
+					<view class="flex" style="margin: 10rpx 0;">
+						<view class="ziti">{{item.name}}</view>
+						<start :count="item.count" style="" size="35" activeIcon="heart-fill" inactiveIcon="heart"
+							activeColor="#ffaa00" v-model="item.value1" @change="getVal" :size="22">
+						</start>
+					</view>
+
+					<view class="">
+						{{item.level}}
+					</view>
+				</view>
+			</view>
+			<view>
+				<u--textarea style="margin-top: 20px;" background-color="#6d6d6d" v-model="value3"
+					placeholder="这趟活跑的怎么样~">
+				</u--textarea>
+			</view>
+			<u-upload class="uview-upload" :fileList="fileList1" @afterRead="afterRead($event)" @delete="deletePic"
+				name="1" multiple :maxCount="9" style="margin-bottom: 80rpx;"></u-upload>
+			<u-line></u-line>
+			<view class="niming">
+				<u-checkbox-group v-model="checkboxValue1" placement="column" @change="checkboxChange">
+					<u-checkbox :customStyle="{marginBottom: '8px'}" v-for="(item, index) in checkboxList1" :key="index"
+						:label="item.name" :name="item.name">
+					</u-checkbox>
+				</u-checkbox-group>
+			</view>
+		</view>
+		<!-- <view class="anniu" v-for="(item,index) in button">
+			<u-button type="warning">{{item.name}}</u-button>
+		</view> -->
+		<u-toast ref="uToast"></u-toast>
+	</view>
+</template>
+
+<script>
+	var that
+	import {
+		mapState
+	} from 'vuex';
+	import start from '../../common/components/uni-rate.vue'
+	import uploadImage from '@/components/ossutil/uploadFile.js';
+	export default {
+		components: {
+			start
+		},
+		data() {
+			return {
+				imageList: [],
+				objData: {},
+				starIndex: '',
+				checkboxValue1: [],
+				checkboxList1: [{
+					name: '匿名评论',
+					disabled: false
+				}],
+				count: "5",
+				value: '',
+				value3: '',
+				fileList1: [],
+				por: [{
+					title: '"无可挑剔"',
+				}],
+				rate: [{
+						name: "货主信用",
+						count: "5",
+						value1: '5',
+						level: '非常好'
+					},
+					{
+						name: "运费支付",
+						count: "5",
+						value1: '5',
+						level: '非常好'
+					},
+					{
+						name: "综合满意度",
+						count: "5",
+						value1: '5',
+						level: '非常满意'
+					}
+				],
+				button: [{
+					name: '提交'
+				}],
+
+				hidden: [{
+					name: '匿名评论',
+					disabled: false
+				}],
+			}
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
+		},
+		onNavigationBarButtonTap() {
+			debugger
+			let _data = {
+				ownerId: this.objData.cargoCommonId,
+				driverName: this.checkboxValue1 ? this.objData.driverName : '',
+				driverPortrait: this.checkboxValue1 ? this.userInfo.avatarUrl : '',
+				orderId: this.objData.id,
+				orderNumber: this.objData.orderNo,
+				ownerCredit: this.rate[0].value1,
+				freightPayment: this.rate[1].value1,
+				comprehensiveSatisfaction: this.rate[2].value1,
+				driverContent: this.value3,
+				driverUrl: this.imageList.toString(),
+				driverAnonymous: this.checkboxValue1.length != 0 ? 1 : 0
+
+			}
+			that.$request.baseRequest('post', '/evaluateInfo/api/addEvaluateInfo', _data).then(res => {
+				if (res.code == 200) {
+					this.$refs.uToast.show({
+						type: 'success',
+						message: "评价成功",
+						complete() {
+							uni.navigateTo({
+								url: '/pages/order/index'
+							})
+						}
+					})
+				} else {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "评价失败",
+					})
+				}
+			})
+		},
+		onLoad(options) {
+		that = this
+			this.objData = JSON.parse(options.val)
+			console.log(this.objData)
+		},
+		methods: {
+			clickStar(index) {
+				console.log(index)
+				this.selectStar = index
+				if (index == 0 || index == 1) {
+					if (this.starIndex == '1') {
+						this.rate[index].level = '极差'
+					} else if (this.starIndex == '2') {
+						this.rate[index].level = '差'
+					} else if (this.starIndex == '3') {
+						this.rate[index].level = '一般'
+					} else if (this.starIndex == '4') {
+						this.rate[index].level = '较好'
+					} else if (this.starIndex == '5') {
+						this.rate[index].level = '非常好'
+					}
+
+				} else {
+					if (this.starIndex == '1') {
+						this.rate[index].level = '极不满意'
+					} else if (this.starIndex == '2') {
+						this.rate[index].level = '不满意'
+					} else if (this.starIndex == '3') {
+						this.rate[index].level = '尚可'
+					} else if (this.starIndex == '4') {
+						this.rate[index].level = '满意'
+					} else if (this.starIndex == '5') {
+						this.rate[index].level = '非常满意'
+					}
+				}
+
+
+
+			},
+			getVal(e) {
+				debugger
+				this.starIndex = e.value
+				console.log(e)
+			},
+			checkboxChange(n) {
+				console.log('change', n);
+			},
+			// 删除图片
+			deletePic(event) {
+				this[`fileList${event.name}`].splice(event.index, 1)
+			},
+			// 新增图片
+			async afterRead(event) {
+				// console.log(this[`fileList${event.name}`])
+				// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
+				let lists = [].concat(event.file)
+				let fileListLen = this[`fileList${event.name}`].length
+				lists.map((item) => {
+					this[`fileList${event.name}`].push({
+						...item,
+						status: 'uploading',
+						message: '上传中'
+					})
+				})
+				for (let i = 0; i < lists.length; i++) {
+					const result = await this.uploadFilePromise(lists[i], lists[i].url)
+					// console.log(result)
+					let item = this[`fileList${event.name}`][fileListLen]
+					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
+						status: 'success',
+						message: '',
+						url: result
+					}))
+					fileListLen++
+				}
+			},
+			uploadFilePromise(file, url) {
+				debugger
+				uploadImage('image', url, 'appData/',
+					result => {
+						debugger
+						// 上传成功回调函数
+						console.log('图片地址', result)
+						that.imageList.push(result)
+						// this.dataDetails.certificateAddressUrl=this.dataDetails.certificateAddressUrl +',' +result
+
+					}
+				)
+			},
+			// 删除图片
+			deletePic(event) {
+				this[`fileList${event.name}`].splice(event.index, 1)
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	.page_pingjia4 {
+		background-color: #ffffff;
+		padding: 20rpx;
+
+		.anniu {
+			margin-top: 48px;
+			margin-left: 20px;
+		}
+
+		.niming {
+			margin-top: 20px;
+		}
+
+		.ziti {
+			color: #909090;
+			margin-right: 20rpx;
+			width: 160rpx;
+		}
+
+		.xkuang {
+			margin-top: 20px;
+		}
+
+		.xx {
+			margin-left: 24%;
+			padding-top: 10px;
+		}
+
+		.biaoti {
+			width: 80%;
+			margin: 0 auto;
+			text-align: center;
+			margin-top: 20px;
+		}
+
+		.kuang {
+			background-color: #ffffff;
+		}
+	}
+
+	.tx-img {
+		width: 40rpx;
+	}
+</style>

+ 204 - 1
pages/order/evaluateList.vue

@@ -1,8 +1,211 @@
 <template>
+	<view class="content">
+			<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" class="mescroll">
+		<view class="content-list" v-for="(item,index) in list" :key='index'>
+			<view class="top flex flex-space-between">
+				<view class="left flex">
+					<view>
+						{{item.orderNumber}}
+					</view>
+					<u-icon name="arrow-right" color="#ccc" size="18"></u-icon>
+				</view>
+				<view class="right gray999">
+					{{item.createDate.split(' ')[0]}}
+				</view>
+			</view>
+			<view class="flex align-center name-row">
+				<view class="sj-row hz-name">
+					{{item.orderInfo.cargoOwner}}:
+				</view>
+				<view class="xx">
+					<start :count="count" v-model="item.count" size="35" activeColor="#ffaa00" :size="18" :allowHalf='true'>
+					</start>
+				</view>
+			</view>
+			<view class="gray999 flex xy-row">
+				<view class='item'>
+					信用:{{item.ownerCredit}}星
+				</view>
+				<view class='item'>
+					运费支付:{{item.freightPayment}}星
+				</view>
+				<view class='item'>
+					综合:{{item.comprehensiveSatisfaction}}星
+				</view>
+			</view>
+			<!-- 
+			<view class="xkuang">
+				<view style="display: flex;" class="flex-space-between" v-for="(item,index) in rate">
+					<view class="ziti">{{item.name}}</view>
+					<start :count="item.count" style="margin-top: 15px; margin-left: 50px;" size="35"
+						activeIcon="heart-fill" inactiveIcon="heart" activeColor="#ffaa00" v-model="item.value1">
+					</start>
+				</view>
+			</view> -->
+			<view class="pl-style">
+				{{item.driverContent}}
+			</view>
+			<view class="color2979ff flex">
+				<view @click="clickZK">展开</view>
+				<u-icon name="arrow-down" color="#2979ff" size="18" v-if="isOpen"></u-icon>
+				<u-icon name="arrow-up" color="#2979ff" size="18" v-else></u-icon>
+			</view>
+			<view v-if="isOpen" class="img-content">
+				<u--image :showLoading="true" :src="item1" width="80px" height="80px" class="img"
+					v-for="(item1,index) in item.imgList"></u--image>
+				
+			</view>
+			<u-line class="line"></u-line>
+			<view class="gray999">
+				{{item.ownerAnonymous==1?"匿名评价":''}}
+			</view>
+		</view>
+	</mescroll-body>
+	</view>
 </template>
 
 <script>
+	var that
+	import {
+		mapState
+	} from 'vuex';
+	import start from '../../common/components/uni-rate.vue'
+		import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+	export default {
+			mixins: [MescrollMixin], // 使用mixin
+		components: {
+			start
+		},
+		data() {
+			return {
+				list:[],
+				isOpen: true,
+				count: '5',
+				value: '3',
+				src: 'https://cdn.uviewui.com/uview/album/1.jpg',
+				rate: [{
+						name: "司机信用",
+						count: "5",
+						value1: '5',
+					},
+					{
+						name: "运输效率",
+						count: "5",
+						value1: '3',
+					},
+					{
+						name: "运输安全",
+						count: "5",
+						value1: '5',
+					},
+					{
+						name: "服务质量",
+						count: "5",
+						value1: '2',
+					}, {
+						name: "满意度",
+						count: "5",
+						value1: '1',
+					}
+				],
+			};
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
+		},
+		onLoad() {
+			that = this
+		},
+		methods: {
+			upCallback(page) {
+				that.$request.baseRequest('get', '/evaluateInfo/selectEvaluateInfo', {
+						driverId: this.userInfo.id,
+						flag: 1,
+						pageSize: page.size,
+						currentPage: page.num
+					}).then(res => {
+						debugger
+						if (page.num == 1) that.list = [];
+						that.list = that.list.concat(res.data.records); //追加新数据
+						for (let i = 0; i < that.list.length; i++) {
+							that.list[i].imgList = that.list[i].driverUrl.split(',')
+							that.list[i].count = (Number(that.list[i].ownerCredit) + Number(that.list[i]
+								.freightPayment) + Number(that.list[i].comprehensiveSatisfaction)) / 15 * 5
+						}
+						that.mescroll.endBySize(res.data.records.length, res.data.total);
+						uni.hideLoading()
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
+			},
+			clickZK() {
+				this.isOpen = !this.isOpen
+			},
+		},
+
+	}
 </script>
 
-<style>
+<style lang="scss">
+	.ziti {
+		color: #909090;
+		margin-top: 23px;
+	}
+
+	.xkuang {
+		margin-top: 20px;
+		background-color: #FAFAFA;
+		padding-left: 30px;
+	}
+
+	.content-list {
+		margin: 20rpx;
+		padding: 20rpx;
+		background: white;
+		border-radius: 20rpx;
+
+	}
+
+	.hz-name {
+		color: #999;
+		margin-right: 10rpx;
+	}
+
+	.gray999 {
+		color: #999;
+	}
+
+	.name-row {
+		margin: 20rpx 0;
+	}
+
+	.item {
+		margin-right: 20rpx;
+		font-size: 26rpx;
+	}
+
+	.xy-row {
+		margin-bottom: 40rpx;
+	}
+
+	.pl-style {
+		margin-bottom: 40rpx;
+	}
+
+	.color2979ff {
+		color: #2979ff;
+	}
+	.img-content{
+		margin-top: 20rpx;
+		.img{
+			display: inline-block;
+			margin-right: 10rpx;
+			border-radius: 20rpx;
+		}
+		
+	}
+	.line{
+		margin: 20rpx 0!important;
+	}
 </style>

+ 17 - 5
pages/order/index.vue

@@ -36,7 +36,15 @@
 	
 			<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"
 				class="mescroll">
-				<view class="evaluatePage" v-show="tabIndex == 6"><span @click="evaluateClick">我的评价记录</span> </view>
+				<view class="evaluatePage flex flex-space-between" v-show="tabIndex == 6"  @click="evaluateClick">
+					<view class="left flex flex-space-between" @click="evaluateClick">
+						<u-icon size="20" name="edit-pen"></u-icon>
+						<view style="margin-left: 20prx;">我的评价</view> 
+					</view>
+					<view class="right">
+							<u-icon size="20" name="arrow-right"></u-icon>
+					</view>
+					</view>
 				<view :id="'good'+good.id" class="good-list" v-for="good in goods" :key="good.id"
 					@click="toDetail(good.id)">
 					<view style="padding: 0 35rpx 20rpx 35rpx;">
@@ -124,6 +132,7 @@
 							-->
 							<view class="start normal" @click.stop="closed(good)" v-if="good.orderStatus=='结算中'">完结
 							</view>
+							<view class="start normal" @click.stop="addevaluation(good)">评价</view>
 						</view>
 					</view>
 				</view>
@@ -337,7 +346,9 @@
 
 		},
 		methods: {
-			
+			addevaluation(good){
+					uni.$u.route('/pages/order/addEvaluation',{val:JSON.stringify(good)});
+			},
 			evaluateClick(){
 				//我的评价记录
 				uni.$u.route('/pages/order/evaluateList');
@@ -866,8 +877,9 @@
 		color: white;
 	}
 	.evaluatePage{
-		margin-top: 20rpx;
-		text-align: right;
-		margin-right: 40rpx;
+		background: white;
+		margin: 20rpx;
+		padding: 20rpx;
+		border-radius: 20rpx;
 	}
 </style>

BIN
static/iconfont.ttf


BIN
static/qy@2x.png


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

@@ -0,0 +1,16 @@
+## 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目录规范

+ 1115 - 0
uni_modules/uni-icons/components/uni-icons/icons.js

@@ -0,0 +1,1115 @@
+export default {
+  "id": "2852637",
+  "name": "uniui图标库",
+  "font_family": "uniicons",
+  "css_prefix_text": "uniui-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "25027049",
+      "name": "yanse",
+      "font_class": "color",
+      "unicode": "e6cf",
+      "unicode_decimal": 59087
+    },
+    {
+      "icon_id": "25027048",
+      "name": "wallet",
+      "font_class": "wallet",
+      "unicode": "e6b1",
+      "unicode_decimal": 59057
+    },
+    {
+      "icon_id": "25015720",
+      "name": "settings-filled",
+      "font_class": "settings-filled",
+      "unicode": "e6ce",
+      "unicode_decimal": 59086
+    },
+    {
+      "icon_id": "25015434",
+      "name": "shimingrenzheng-filled",
+      "font_class": "auth-filled",
+      "unicode": "e6cc",
+      "unicode_decimal": 59084
+    },
+    {
+      "icon_id": "24934246",
+      "name": "shop-filled",
+      "font_class": "shop-filled",
+      "unicode": "e6cd",
+      "unicode_decimal": 59085
+    },
+    {
+      "icon_id": "24934159",
+      "name": "staff-filled-01",
+      "font_class": "staff-filled",
+      "unicode": "e6cb",
+      "unicode_decimal": 59083
+    },
+    {
+      "icon_id": "24932461",
+      "name": "VIP-filled",
+      "font_class": "vip-filled",
+      "unicode": "e6c6",
+      "unicode_decimal": 59078
+    },
+    {
+      "icon_id": "24932462",
+      "name": "plus_circle_fill",
+      "font_class": "plus-filled",
+      "unicode": "e6c7",
+      "unicode_decimal": 59079
+    },
+    {
+      "icon_id": "24932463",
+      "name": "folder_add-filled",
+      "font_class": "folder-add-filled",
+      "unicode": "e6c8",
+      "unicode_decimal": 59080
+    },
+    {
+      "icon_id": "24932464",
+      "name": "yanse-filled",
+      "font_class": "color-filled",
+      "unicode": "e6c9",
+      "unicode_decimal": 59081
+    },
+    {
+      "icon_id": "24932465",
+      "name": "tune-filled",
+      "font_class": "tune-filled",
+      "unicode": "e6ca",
+      "unicode_decimal": 59082
+    },
+    {
+      "icon_id": "24932455",
+      "name": "a-rilidaka-filled",
+      "font_class": "calendar-filled",
+      "unicode": "e6c0",
+      "unicode_decimal": 59072
+    },
+    {
+      "icon_id": "24932456",
+      "name": "notification-filled",
+      "font_class": "notification-filled",
+      "unicode": "e6c1",
+      "unicode_decimal": 59073
+    },
+    {
+      "icon_id": "24932457",
+      "name": "wallet-filled",
+      "font_class": "wallet-filled",
+      "unicode": "e6c2",
+      "unicode_decimal": 59074
+    },
+    {
+      "icon_id": "24932458",
+      "name": "paihangbang-filled",
+      "font_class": "medal-filled",
+      "unicode": "e6c3",
+      "unicode_decimal": 59075
+    },
+    {
+      "icon_id": "24932459",
+      "name": "gift-filled",
+      "font_class": "gift-filled",
+      "unicode": "e6c4",
+      "unicode_decimal": 59076
+    },
+    {
+      "icon_id": "24932460",
+      "name": "fire-filled",
+      "font_class": "fire-filled",
+      "unicode": "e6c5",
+      "unicode_decimal": 59077
+    },
+    {
+      "icon_id": "24928001",
+      "name": "refreshempty",
+      "font_class": "refreshempty",
+      "unicode": "e6bf",
+      "unicode_decimal": 59071
+    },
+    {
+      "icon_id": "24926853",
+      "name": "location-ellipse",
+      "font_class": "location-filled",
+      "unicode": "e6af",
+      "unicode_decimal": 59055
+    },
+    {
+      "icon_id": "24926735",
+      "name": "person-filled",
+      "font_class": "person-filled",
+      "unicode": "e69d",
+      "unicode_decimal": 59037
+    },
+    {
+      "icon_id": "24926703",
+      "name": "personadd-filled",
+      "font_class": "personadd-filled",
+      "unicode": "e698",
+      "unicode_decimal": 59032
+    },
+    {
+      "icon_id": "24923351",
+      "name": "back",
+      "font_class": "back",
+      "unicode": "e6b9",
+      "unicode_decimal": 59065
+    },
+    {
+      "icon_id": "24923352",
+      "name": "forward",
+      "font_class": "forward",
+      "unicode": "e6ba",
+      "unicode_decimal": 59066
+    },
+    {
+      "icon_id": "24923353",
+      "name": "arrowthinright",
+      "font_class": "arrow-right",
+      "unicode": "e6bb",
+      "unicode_decimal": 59067
+    },
+    {
+      "icon_id": "24923354",
+      "name": "arrowthinleft",
+      "font_class": "arrow-left",
+      "unicode": "e6bc",
+      "unicode_decimal": 59068
+    },
+    {
+      "icon_id": "24923355",
+      "name": "arrowthinup",
+      "font_class": "arrow-up",
+      "unicode": "e6bd",
+      "unicode_decimal": 59069
+    },
+    {
+      "icon_id": "24923356",
+      "name": "arrowthindown",
+      "font_class": "arrow-down",
+      "unicode": "e6be",
+      "unicode_decimal": 59070
+    },
+    {
+      "icon_id": "24923349",
+      "name": "arrowdown",
+      "font_class": "bottom",
+      "unicode": "e6b8",
+      "unicode_decimal": 59064
+    },
+    {
+      "icon_id": "24923346",
+      "name": "arrowright",
+      "font_class": "right",
+      "unicode": "e6b5",
+      "unicode_decimal": 59061
+    },
+    {
+      "icon_id": "24923347",
+      "name": "arrowup",
+      "font_class": "top",
+      "unicode": "e6b6",
+      "unicode_decimal": 59062
+    },
+    {
+      "icon_id": "24923348",
+      "name": "arrowleft",
+      "font_class": "left",
+      "unicode": "e6b7",
+      "unicode_decimal": 59063
+    },
+    {
+      "icon_id": "24923334",
+      "name": "eye",
+      "font_class": "eye",
+      "unicode": "e651",
+      "unicode_decimal": 58961
+    },
+    {
+      "icon_id": "24923335",
+      "name": "eye-filled",
+      "font_class": "eye-filled",
+      "unicode": "e66a",
+      "unicode_decimal": 58986
+    },
+    {
+      "icon_id": "24923336",
+      "name": "eye-slash",
+      "font_class": "eye-slash",
+      "unicode": "e6b3",
+      "unicode_decimal": 59059
+    },
+    {
+      "icon_id": "24923337",
+      "name": "eye-slash-filled",
+      "font_class": "eye-slash-filled",
+      "unicode": "e6b4",
+      "unicode_decimal": 59060
+    },
+    {
+      "icon_id": "24923305",
+      "name": "info-filled",
+      "font_class": "info-filled",
+      "unicode": "e649",
+      "unicode_decimal": 58953
+    },
+    {
+      "icon_id": "24923299",
+      "name": "reload-01",
+      "font_class": "reload",
+      "unicode": "e6b2",
+      "unicode_decimal": 59058
+    },
+    {
+      "icon_id": "24923195",
+      "name": "mic_slash_fill",
+      "font_class": "micoff-filled",
+      "unicode": "e6b0",
+      "unicode_decimal": 59056
+    },
+    {
+      "icon_id": "24923165",
+      "name": "map-pin-ellipse",
+      "font_class": "map-pin-ellipse",
+      "unicode": "e6ac",
+      "unicode_decimal": 59052
+    },
+    {
+      "icon_id": "24923166",
+      "name": "map-pin",
+      "font_class": "map-pin",
+      "unicode": "e6ad",
+      "unicode_decimal": 59053
+    },
+    {
+      "icon_id": "24923167",
+      "name": "location",
+      "font_class": "location",
+      "unicode": "e6ae",
+      "unicode_decimal": 59054
+    },
+    {
+      "icon_id": "24923064",
+      "name": "starhalf",
+      "font_class": "starhalf",
+      "unicode": "e683",
+      "unicode_decimal": 59011
+    },
+    {
+      "icon_id": "24923065",
+      "name": "star",
+      "font_class": "star",
+      "unicode": "e688",
+      "unicode_decimal": 59016
+    },
+    {
+      "icon_id": "24923066",
+      "name": "star-filled",
+      "font_class": "star-filled",
+      "unicode": "e68f",
+      "unicode_decimal": 59023
+    },
+    {
+      "icon_id": "24899646",
+      "name": "a-rilidaka",
+      "font_class": "calendar",
+      "unicode": "e6a0",
+      "unicode_decimal": 59040
+    },
+    {
+      "icon_id": "24899647",
+      "name": "fire",
+      "font_class": "fire",
+      "unicode": "e6a1",
+      "unicode_decimal": 59041
+    },
+    {
+      "icon_id": "24899648",
+      "name": "paihangbang",
+      "font_class": "medal",
+      "unicode": "e6a2",
+      "unicode_decimal": 59042
+    },
+    {
+      "icon_id": "24899649",
+      "name": "font",
+      "font_class": "font",
+      "unicode": "e6a3",
+      "unicode_decimal": 59043
+    },
+    {
+      "icon_id": "24899650",
+      "name": "gift",
+      "font_class": "gift",
+      "unicode": "e6a4",
+      "unicode_decimal": 59044
+    },
+    {
+      "icon_id": "24899651",
+      "name": "link",
+      "font_class": "link",
+      "unicode": "e6a5",
+      "unicode_decimal": 59045
+    },
+    {
+      "icon_id": "24899652",
+      "name": "notification",
+      "font_class": "notification",
+      "unicode": "e6a6",
+      "unicode_decimal": 59046
+    },
+    {
+      "icon_id": "24899653",
+      "name": "staff",
+      "font_class": "staff",
+      "unicode": "e6a7",
+      "unicode_decimal": 59047
+    },
+    {
+      "icon_id": "24899654",
+      "name": "VIP",
+      "font_class": "vip",
+      "unicode": "e6a8",
+      "unicode_decimal": 59048
+    },
+    {
+      "icon_id": "24899655",
+      "name": "folder_add",
+      "font_class": "folder-add",
+      "unicode": "e6a9",
+      "unicode_decimal": 59049
+    },
+    {
+      "icon_id": "24899656",
+      "name": "tune",
+      "font_class": "tune",
+      "unicode": "e6aa",
+      "unicode_decimal": 59050
+    },
+    {
+      "icon_id": "24899657",
+      "name": "shimingrenzheng",
+      "font_class": "auth",
+      "unicode": "e6ab",
+      "unicode_decimal": 59051
+    },
+    {
+      "icon_id": "24899565",
+      "name": "person",
+      "font_class": "person",
+      "unicode": "e699",
+      "unicode_decimal": 59033
+    },
+    {
+      "icon_id": "24899566",
+      "name": "email-filled",
+      "font_class": "email-filled",
+      "unicode": "e69a",
+      "unicode_decimal": 59034
+    },
+    {
+      "icon_id": "24899567",
+      "name": "phone-filled",
+      "font_class": "phone-filled",
+      "unicode": "e69b",
+      "unicode_decimal": 59035
+    },
+    {
+      "icon_id": "24899568",
+      "name": "phone",
+      "font_class": "phone",
+      "unicode": "e69c",
+      "unicode_decimal": 59036
+    },
+    {
+      "icon_id": "24899570",
+      "name": "email",
+      "font_class": "email",
+      "unicode": "e69e",
+      "unicode_decimal": 59038
+    },
+    {
+      "icon_id": "24899571",
+      "name": "personadd",
+      "font_class": "personadd",
+      "unicode": "e69f",
+      "unicode_decimal": 59039
+    },
+    {
+      "icon_id": "24899558",
+      "name": "chatboxes-filled",
+      "font_class": "chatboxes-filled",
+      "unicode": "e692",
+      "unicode_decimal": 59026
+    },
+    {
+      "icon_id": "24899559",
+      "name": "contact",
+      "font_class": "contact",
+      "unicode": "e693",
+      "unicode_decimal": 59027
+    },
+    {
+      "icon_id": "24899560",
+      "name": "chatbubble-filled",
+      "font_class": "chatbubble-filled",
+      "unicode": "e694",
+      "unicode_decimal": 59028
+    },
+    {
+      "icon_id": "24899561",
+      "name": "contact-filled",
+      "font_class": "contact-filled",
+      "unicode": "e695",
+      "unicode_decimal": 59029
+    },
+    {
+      "icon_id": "24899562",
+      "name": "chatboxes",
+      "font_class": "chatboxes",
+      "unicode": "e696",
+      "unicode_decimal": 59030
+    },
+    {
+      "icon_id": "24899563",
+      "name": "chatbubble",
+      "font_class": "chatbubble",
+      "unicode": "e697",
+      "unicode_decimal": 59031
+    },
+    {
+      "icon_id": "24881290",
+      "name": "upload-filled",
+      "font_class": "upload-filled",
+      "unicode": "e68e",
+      "unicode_decimal": 59022
+    },
+    {
+      "icon_id": "24881292",
+      "name": "upload",
+      "font_class": "upload",
+      "unicode": "e690",
+      "unicode_decimal": 59024
+    },
+    {
+      "icon_id": "24881293",
+      "name": "weixin",
+      "font_class": "weixin",
+      "unicode": "e691",
+      "unicode_decimal": 59025
+    },
+    {
+      "icon_id": "24881274",
+      "name": "compose",
+      "font_class": "compose",
+      "unicode": "e67f",
+      "unicode_decimal": 59007
+    },
+    {
+      "icon_id": "24881275",
+      "name": "qq",
+      "font_class": "qq",
+      "unicode": "e680",
+      "unicode_decimal": 59008
+    },
+    {
+      "icon_id": "24881276",
+      "name": "download-filled",
+      "font_class": "download-filled",
+      "unicode": "e681",
+      "unicode_decimal": 59009
+    },
+    {
+      "icon_id": "24881277",
+      "name": "pengyouquan",
+      "font_class": "pyq",
+      "unicode": "e682",
+      "unicode_decimal": 59010
+    },
+    {
+      "icon_id": "24881279",
+      "name": "sound",
+      "font_class": "sound",
+      "unicode": "e684",
+      "unicode_decimal": 59012
+    },
+    {
+      "icon_id": "24881280",
+      "name": "trash-filled",
+      "font_class": "trash-filled",
+      "unicode": "e685",
+      "unicode_decimal": 59013
+    },
+    {
+      "icon_id": "24881281",
+      "name": "sound-filled",
+      "font_class": "sound-filled",
+      "unicode": "e686",
+      "unicode_decimal": 59014
+    },
+    {
+      "icon_id": "24881282",
+      "name": "trash",
+      "font_class": "trash",
+      "unicode": "e687",
+      "unicode_decimal": 59015
+    },
+    {
+      "icon_id": "24881284",
+      "name": "videocam-filled",
+      "font_class": "videocam-filled",
+      "unicode": "e689",
+      "unicode_decimal": 59017
+    },
+    {
+      "icon_id": "24881285",
+      "name": "spinner-cycle",
+      "font_class": "spinner-cycle",
+      "unicode": "e68a",
+      "unicode_decimal": 59018
+    },
+    {
+      "icon_id": "24881286",
+      "name": "weibo",
+      "font_class": "weibo",
+      "unicode": "e68b",
+      "unicode_decimal": 59019
+    },
+    {
+      "icon_id": "24881288",
+      "name": "videocam",
+      "font_class": "videocam",
+      "unicode": "e68c",
+      "unicode_decimal": 59020
+    },
+    {
+      "icon_id": "24881289",
+      "name": "download",
+      "font_class": "download",
+      "unicode": "e68d",
+      "unicode_decimal": 59021
+    },
+    {
+      "icon_id": "24879601",
+      "name": "help",
+      "font_class": "help",
+      "unicode": "e679",
+      "unicode_decimal": 59001
+    },
+    {
+      "icon_id": "24879602",
+      "name": "navigate-filled",
+      "font_class": "navigate-filled",
+      "unicode": "e67a",
+      "unicode_decimal": 59002
+    },
+    {
+      "icon_id": "24879603",
+      "name": "plusempty",
+      "font_class": "plusempty",
+      "unicode": "e67b",
+      "unicode_decimal": 59003
+    },
+    {
+      "icon_id": "24879604",
+      "name": "smallcircle",
+      "font_class": "smallcircle",
+      "unicode": "e67c",
+      "unicode_decimal": 59004
+    },
+    {
+      "icon_id": "24879605",
+      "name": "minus-filled",
+      "font_class": "minus-filled",
+      "unicode": "e67d",
+      "unicode_decimal": 59005
+    },
+    {
+      "icon_id": "24879606",
+      "name": "micoff",
+      "font_class": "micoff",
+      "unicode": "e67e",
+      "unicode_decimal": 59006
+    },
+    {
+      "icon_id": "24879588",
+      "name": "closeempty",
+      "font_class": "closeempty",
+      "unicode": "e66c",
+      "unicode_decimal": 58988
+    },
+    {
+      "icon_id": "24879589",
+      "name": "clear",
+      "font_class": "clear",
+      "unicode": "e66d",
+      "unicode_decimal": 58989
+    },
+    {
+      "icon_id": "24879590",
+      "name": "navigate",
+      "font_class": "navigate",
+      "unicode": "e66e",
+      "unicode_decimal": 58990
+    },
+    {
+      "icon_id": "24879591",
+      "name": "minus",
+      "font_class": "minus",
+      "unicode": "e66f",
+      "unicode_decimal": 58991
+    },
+    {
+      "icon_id": "24879592",
+      "name": "image",
+      "font_class": "image",
+      "unicode": "e670",
+      "unicode_decimal": 58992
+    },
+    {
+      "icon_id": "24879593",
+      "name": "mic",
+      "font_class": "mic",
+      "unicode": "e671",
+      "unicode_decimal": 58993
+    },
+    {
+      "icon_id": "24879594",
+      "name": "paperplane",
+      "font_class": "paperplane",
+      "unicode": "e672",
+      "unicode_decimal": 58994
+    },
+    {
+      "icon_id": "24879595",
+      "name": "close",
+      "font_class": "close",
+      "unicode": "e673",
+      "unicode_decimal": 58995
+    },
+    {
+      "icon_id": "24879596",
+      "name": "help-filled",
+      "font_class": "help-filled",
+      "unicode": "e674",
+      "unicode_decimal": 58996
+    },
+    {
+      "icon_id": "24879597",
+      "name": "plus-filled",
+      "font_class": "paperplane-filled",
+      "unicode": "e675",
+      "unicode_decimal": 58997
+    },
+    {
+      "icon_id": "24879598",
+      "name": "plus",
+      "font_class": "plus",
+      "unicode": "e676",
+      "unicode_decimal": 58998
+    },
+    {
+      "icon_id": "24879599",
+      "name": "mic-filled",
+      "font_class": "mic-filled",
+      "unicode": "e677",
+      "unicode_decimal": 58999
+    },
+    {
+      "icon_id": "24879600",
+      "name": "image-filled",
+      "font_class": "image-filled",
+      "unicode": "e678",
+      "unicode_decimal": 59000
+    },
+    {
+      "icon_id": "24855900",
+      "name": "locked-filled",
+      "font_class": "locked-filled",
+      "unicode": "e668",
+      "unicode_decimal": 58984
+    },
+    {
+      "icon_id": "24855901",
+      "name": "info",
+      "font_class": "info",
+      "unicode": "e669",
+      "unicode_decimal": 58985
+    },
+    {
+      "icon_id": "24855903",
+      "name": "locked",
+      "font_class": "locked",
+      "unicode": "e66b",
+      "unicode_decimal": 58987
+    },
+    {
+      "icon_id": "24855884",
+      "name": "camera-filled",
+      "font_class": "camera-filled",
+      "unicode": "e658",
+      "unicode_decimal": 58968
+    },
+    {
+      "icon_id": "24855885",
+      "name": "chat-filled",
+      "font_class": "chat-filled",
+      "unicode": "e659",
+      "unicode_decimal": 58969
+    },
+    {
+      "icon_id": "24855886",
+      "name": "camera",
+      "font_class": "camera",
+      "unicode": "e65a",
+      "unicode_decimal": 58970
+    },
+    {
+      "icon_id": "24855887",
+      "name": "circle",
+      "font_class": "circle",
+      "unicode": "e65b",
+      "unicode_decimal": 58971
+    },
+    {
+      "icon_id": "24855888",
+      "name": "checkmarkempty",
+      "font_class": "checkmarkempty",
+      "unicode": "e65c",
+      "unicode_decimal": 58972
+    },
+    {
+      "icon_id": "24855889",
+      "name": "chat",
+      "font_class": "chat",
+      "unicode": "e65d",
+      "unicode_decimal": 58973
+    },
+    {
+      "icon_id": "24855890",
+      "name": "circle-filled",
+      "font_class": "circle-filled",
+      "unicode": "e65e",
+      "unicode_decimal": 58974
+    },
+    {
+      "icon_id": "24855891",
+      "name": "flag",
+      "font_class": "flag",
+      "unicode": "e65f",
+      "unicode_decimal": 58975
+    },
+    {
+      "icon_id": "24855892",
+      "name": "flag-filled",
+      "font_class": "flag-filled",
+      "unicode": "e660",
+      "unicode_decimal": 58976
+    },
+    {
+      "icon_id": "24855893",
+      "name": "gear-filled",
+      "font_class": "gear-filled",
+      "unicode": "e661",
+      "unicode_decimal": 58977
+    },
+    {
+      "icon_id": "24855894",
+      "name": "home",
+      "font_class": "home",
+      "unicode": "e662",
+      "unicode_decimal": 58978
+    },
+    {
+      "icon_id": "24855895",
+      "name": "home-filled",
+      "font_class": "home-filled",
+      "unicode": "e663",
+      "unicode_decimal": 58979
+    },
+    {
+      "icon_id": "24855896",
+      "name": "gear",
+      "font_class": "gear",
+      "unicode": "e664",
+      "unicode_decimal": 58980
+    },
+    {
+      "icon_id": "24855897",
+      "name": "smallcircle-filled",
+      "font_class": "smallcircle-filled",
+      "unicode": "e665",
+      "unicode_decimal": 58981
+    },
+    {
+      "icon_id": "24855898",
+      "name": "map-filled",
+      "font_class": "map-filled",
+      "unicode": "e666",
+      "unicode_decimal": 58982
+    },
+    {
+      "icon_id": "24855899",
+      "name": "map",
+      "font_class": "map",
+      "unicode": "e667",
+      "unicode_decimal": 58983
+    },
+    {
+      "icon_id": "24855825",
+      "name": "refresh-filled",
+      "font_class": "refresh-filled",
+      "unicode": "e656",
+      "unicode_decimal": 58966
+    },
+    {
+      "icon_id": "24855826",
+      "name": "refresh",
+      "font_class": "refresh",
+      "unicode": "e657",
+      "unicode_decimal": 58967
+    },
+    {
+      "icon_id": "24855808",
+      "name": "cloud-upload",
+      "font_class": "cloud-upload",
+      "unicode": "e645",
+      "unicode_decimal": 58949
+    },
+    {
+      "icon_id": "24855809",
+      "name": "cloud-download-filled",
+      "font_class": "cloud-download-filled",
+      "unicode": "e646",
+      "unicode_decimal": 58950
+    },
+    {
+      "icon_id": "24855810",
+      "name": "cloud-download",
+      "font_class": "cloud-download",
+      "unicode": "e647",
+      "unicode_decimal": 58951
+    },
+    {
+      "icon_id": "24855811",
+      "name": "cloud-upload-filled",
+      "font_class": "cloud-upload-filled",
+      "unicode": "e648",
+      "unicode_decimal": 58952
+    },
+    {
+      "icon_id": "24855813",
+      "name": "redo",
+      "font_class": "redo",
+      "unicode": "e64a",
+      "unicode_decimal": 58954
+    },
+    {
+      "icon_id": "24855814",
+      "name": "images-filled",
+      "font_class": "images-filled",
+      "unicode": "e64b",
+      "unicode_decimal": 58955
+    },
+    {
+      "icon_id": "24855815",
+      "name": "undo-filled",
+      "font_class": "undo-filled",
+      "unicode": "e64c",
+      "unicode_decimal": 58956
+    },
+    {
+      "icon_id": "24855816",
+      "name": "more",
+      "font_class": "more",
+      "unicode": "e64d",
+      "unicode_decimal": 58957
+    },
+    {
+      "icon_id": "24855817",
+      "name": "more-filled",
+      "font_class": "more-filled",
+      "unicode": "e64e",
+      "unicode_decimal": 58958
+    },
+    {
+      "icon_id": "24855818",
+      "name": "undo",
+      "font_class": "undo",
+      "unicode": "e64f",
+      "unicode_decimal": 58959
+    },
+    {
+      "icon_id": "24855819",
+      "name": "images",
+      "font_class": "images",
+      "unicode": "e650",
+      "unicode_decimal": 58960
+    },
+    {
+      "icon_id": "24855821",
+      "name": "paperclip",
+      "font_class": "paperclip",
+      "unicode": "e652",
+      "unicode_decimal": 58962
+    },
+    {
+      "icon_id": "24855822",
+      "name": "settings",
+      "font_class": "settings",
+      "unicode": "e653",
+      "unicode_decimal": 58963
+    },
+    {
+      "icon_id": "24855823",
+      "name": "search",
+      "font_class": "search",
+      "unicode": "e654",
+      "unicode_decimal": 58964
+    },
+    {
+      "icon_id": "24855824",
+      "name": "redo-filled",
+      "font_class": "redo-filled",
+      "unicode": "e655",
+      "unicode_decimal": 58965
+    },
+    {
+      "icon_id": "24841702",
+      "name": "list",
+      "font_class": "list",
+      "unicode": "e644",
+      "unicode_decimal": 58948
+    },
+    {
+      "icon_id": "24841489",
+      "name": "mail-open-filled",
+      "font_class": "mail-open-filled",
+      "unicode": "e63a",
+      "unicode_decimal": 58938
+    },
+    {
+      "icon_id": "24841491",
+      "name": "hand-thumbsdown-filled",
+      "font_class": "hand-down-filled",
+      "unicode": "e63c",
+      "unicode_decimal": 58940
+    },
+    {
+      "icon_id": "24841492",
+      "name": "hand-thumbsdown",
+      "font_class": "hand-down",
+      "unicode": "e63d",
+      "unicode_decimal": 58941
+    },
+    {
+      "icon_id": "24841493",
+      "name": "hand-thumbsup-filled",
+      "font_class": "hand-up-filled",
+      "unicode": "e63e",
+      "unicode_decimal": 58942
+    },
+    {
+      "icon_id": "24841494",
+      "name": "hand-thumbsup",
+      "font_class": "hand-up",
+      "unicode": "e63f",
+      "unicode_decimal": 58943
+    },
+    {
+      "icon_id": "24841496",
+      "name": "heart-filled",
+      "font_class": "heart-filled",
+      "unicode": "e641",
+      "unicode_decimal": 58945
+    },
+    {
+      "icon_id": "24841498",
+      "name": "mail-open",
+      "font_class": "mail-open",
+      "unicode": "e643",
+      "unicode_decimal": 58947
+    },
+    {
+      "icon_id": "24841488",
+      "name": "heart",
+      "font_class": "heart",
+      "unicode": "e639",
+      "unicode_decimal": 58937
+    },
+    {
+      "icon_id": "24839963",
+      "name": "loop",
+      "font_class": "loop",
+      "unicode": "e633",
+      "unicode_decimal": 58931
+    },
+    {
+      "icon_id": "24839866",
+      "name": "pulldown",
+      "font_class": "pulldown",
+      "unicode": "e632",
+      "unicode_decimal": 58930
+    },
+    {
+      "icon_id": "24813798",
+      "name": "scan",
+      "font_class": "scan",
+      "unicode": "e62a",
+      "unicode_decimal": 58922
+    },
+    {
+      "icon_id": "24813786",
+      "name": "bars",
+      "font_class": "bars",
+      "unicode": "e627",
+      "unicode_decimal": 58919
+    },
+    {
+      "icon_id": "24813788",
+      "name": "cart-filled",
+      "font_class": "cart-filled",
+      "unicode": "e629",
+      "unicode_decimal": 58921
+    },
+    {
+      "icon_id": "24813790",
+      "name": "checkbox",
+      "font_class": "checkbox",
+      "unicode": "e62b",
+      "unicode_decimal": 58923
+    },
+    {
+      "icon_id": "24813791",
+      "name": "checkbox-filled",
+      "font_class": "checkbox-filled",
+      "unicode": "e62c",
+      "unicode_decimal": 58924
+    },
+    {
+      "icon_id": "24813794",
+      "name": "shop",
+      "font_class": "shop",
+      "unicode": "e62f",
+      "unicode_decimal": 58927
+    },
+    {
+      "icon_id": "24813795",
+      "name": "headphones",
+      "font_class": "headphones",
+      "unicode": "e630",
+      "unicode_decimal": 58928
+    },
+    {
+      "icon_id": "24813796",
+      "name": "cart",
+      "font_class": "cart",
+      "unicode": "e631",
+      "unicode_decimal": 58929
+    }
+  ]
+}

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

@@ -0,0 +1,89 @@
+<template>
+	<!-- #ifdef APP-NVUE -->
+	<text :style="{ color: color, 'font-size': size + 'px' }" class="uni-icons" @click="_onClick">{{unicode}}</text>
+	<!-- #endif -->
+	<!-- #ifndef APP-NVUE -->
+	<text :style="{ color: color, 'font-size': size + 'px' }" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick"></text>
+	<!-- #endif -->
+</template>
+
+<script>
+	import icons from './icons.js';
+	// #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 ''
+			}
+		},
+		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.2",
+  "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 

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

@@ -0,0 +1,23 @@
+## 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 端

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

@@ -0,0 +1,88 @@
+{
+  "id": "uni-rate",
+  "displayName": "uni-rate 评分",
+  "version": "1.3.0",
+  "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