twt %!s(int64=3) %!d(string=hai) anos
pai
achega
24575de3af
Modificáronse 23 ficheiros con 1738 adicións e 14 borrados
  1. 1 1
      operatingCompany/components/nodata/nodata.vue
  2. 21 0
      operatingCompany/pages.json
  3. 199 12
      operatingCompany/pages/reportManage/reportDetail.vue
  4. 176 0
      operatingCompany/pages/shop/shopIndex/editWork.vue
  5. 196 0
      operatingCompany/pages/shop/shopIndex/editWorkDetail.vue
  6. 200 0
      operatingCompany/pages/shop/shopIndex/editcomplete.vue
  7. 6 1
      operatingCompany/pages/shop/shopIndex/index.vue
  8. BIN=BIN
      operatingCompany/static/img/_report_yixiugai@2x.png
  9. BIN=BIN
      operatingCompany/static/img/report_icon_daihuifu@2x.png
  10. BIN=BIN
      operatingCompany/static/img/report_icon_daizuoye@2x.png
  11. BIN=BIN
      operatingCompany/static/img/report_icon_dianping@2x.png
  12. BIN=BIN
      operatingCompany/static/img/report_icon_yiwancheng@2x.png
  13. BIN=BIN
      operatingCompany/static/img/report_weixiugai@2x.png
  14. 6 0
      operatingCompany/uni_modules/uni-icons/changelog.md
  15. 132 0
      operatingCompany/uni_modules/uni-icons/components/uni-icons/icons.js
  16. 72 0
      operatingCompany/uni_modules/uni-icons/components/uni-icons/uni-icons.vue
  17. BIN=BIN
      operatingCompany/uni_modules/uni-icons/components/uni-icons/uni.ttf
  18. 82 0
      operatingCompany/uni_modules/uni-icons/package.json
  19. 46 0
      operatingCompany/uni_modules/uni-icons/readme.md
  20. 18 0
      operatingCompany/uni_modules/uni-rate/changelog.md
  21. 393 0
      operatingCompany/uni_modules/uni-rate/components/uni-rate/uni-rate.vue
  22. 83 0
      operatingCompany/uni_modules/uni-rate/package.json
  23. 107 0
      operatingCompany/uni_modules/uni-rate/readme.md

+ 1 - 1
operatingCompany/components/nodata/nodata.vue

@@ -2,7 +2,7 @@
 	<view class="" style="padding-bottom: 20rpx;">
 		
 		<view  class="nodataBox">
-			<image src="../../static/img/nodata.png" mode="widthFix" class="nodataImg"></image>
+			<image src="../../static/img/pic_empty_def.png" mode="widthFix" class="nodataImg"></image>
 			<view class="noTxt">暂无数据</view>
 		</view>
 		

+ 21 - 0
operatingCompany/pages.json

@@ -158,6 +158,27 @@
 			"style": {
 				"navigationStyle": "custom"
 			}
+		},
+		{
+			"path": "pages/shop/shopIndex/editWork",
+			"style": {
+				"navigationBarTitleText": "修改作业",
+				"navigationBarBackgroundColor": "#FFFFFF",
+				"enablePullDownRefresh": true
+			}
+		},
+		{
+			"path": "pages/shop/shopIndex/editWorkDetail",
+			"style": {
+				"navigationBarTitleText": "修改",
+				"navigationBarBackgroundColor": "#FFFFFF"
+			}
+		},
+		{
+			"path": "pages/shop/shopIndex/editcomplete",
+			"style": {
+				"navigationStyle": "custom"
+			}
 		}
 
 

+ 199 - 12
operatingCompany/pages/reportManage/reportDetail.vue

@@ -7,17 +7,33 @@
 				  <view class="backBox">
 					  <image src="../../static/img/icon_return_white@2x.png" mode="" class="baiheiback" @click="back"></image>
 					  <view class="shuxian"></view>
-					  <image src="../../static/img/icon_home_white@2x.png" mode="" class="homeImg"></image>
+					  <image src="../../static/img/icon_home_white@2x.png" mode="" class="homeImg" @click="goHome" ></image>
 				  </view>
 			  </view>
 			 
 			  <view >报告详情</view>
 			  <view style="width:157rpx;"></view>
 		  </view>
-		  <view class="topCont">
+		  <view class="topCont" v-if="info.state==1"> 
 			  <image src="../../static/img/report_icon_daitijiao@2x.png" mode="" class="topContImg"></image>
 			  <view class="topContTxt">待提交</view>
 		  </view>
+		  <view class="topCont" v-if="info.state==2">
+			  <image src="../../static/img/report_icon_daizuoye@2x.png" mode="" class="topContImg2"></image>
+			  <view class="topContTxt">待作业</view>
+		  </view>
+		  <view class="topCont" v-if="info.state==3">
+			  <image src="../../static/img/report_icon_dianping@2x.png" mode="" class="topContImg3"></image>
+			  <view class="topContTxt">待点评</view>
+		  </view>
+		  <view class="topCont" v-if="info.state==4">
+			  <image src="../../static/img/report_icon_daihuifu@2x.png" mode="" class="topContImg4"></image>
+			  <view class="topContTxt">待回复</view>
+		  </view>
+		  <view class="topCont" v-if="info.state==5">
+			  <image src="../../static/img/report_icon_yiwancheng@2x.png" mode="" class="topContImg5"></image>
+			  <view class="topContTxt">已完成</view>
+		  </view>
 		</view>
 		
 		<view class="status_bar" :style="{height: iStatusBarHeight + 'px'}"></view>
@@ -36,8 +52,8 @@
 				<view class="shopTop">
 					<view class="shopName">{{info.shopInfo.shopName}}</view>
 					<view class="shopTopImgBox">
-						<image src="../../static/img/icon_daohang_def@2x.png" mode="" class="shopTopimg"></image>
-						<image src="../../static/img/icon_phone_def@2x.png" mode="" class="shopTopimg"></image>
+						<image src="../../static/img/icon_daohang_def@2x.png" mode="" class="shopTopimg" @click="goaddress"></image>
+						<image src="../../static/img/icon_phone_def@2x.png" mode="" class="shopTopimg" @click="call"></image>
 					</view>
 				</view>
 				<view class="shopCont">
@@ -45,16 +61,19 @@
 					<view class="openingTime" v-if="info.shopInfo.openingTime">·{{info.shopInfo.openingTime}}</view>
 					<view class="openingTime">联系人:{{info.shopInfo.contactor}} {{info.shopInfo.contactorPhone}}</view>
 				</view>
-				<view class="address" v-if="info.shopInfo.address">{{info.shopInfo.address}}</view>
+				<view class="address" v-if="info.shopInfo.address">
+					<view style="padding-right: 30rpx;">{{info.shopInfo.address}}</view>
+				    <view v-if="info.shopInfo.distance">{{info.shopInfo.distance}}km</view>
+				</view>
 			</view>
 			
 			<!-- tab -->
 			<view class="tabBox">
-				<view class="tabLine" :class="{tabActive:tabIndex==1}">检测情况</view>
-				<view class="tabLine" :class="{tabActive:tabIndex==2}">行动建议</view>
+				<view class="tabLine" :class="{tabActive:tabIndex==1}" @click="tabClick(1)">检测情况</view>
+				<view class="tabLine" :class="{tabActive:tabIndex==2}" @click="tabClick(2)">行动建议</view>
 			</view>
 			<!-- 检测情况 -->
-			<view class="categoryList">
+			<view class="categoryList" v-if="tabIndex==1">
 				<view class="categoryListLine" v-for="(item,index) in info.categoryList">
 					<view class="categoryName">{{item.categoryName}}</view>
 					<view class="sectionList" v-for="(list,index2) in item.sectionList">
@@ -84,33 +103,89 @@
 				</view>
 				
 			</view>
+			<!-- 行动建议 -->
+			<view class="suggestList" v-if="tabIndex==2">
+				<view class="suggestLine" v-for="(item,index) in info.suggestList">
+					<view class="suggestLineTop">建议({{index+1}})</view>
+					<view class="suggestCont">{{item.suggest}}</view>
+					<view class="suggestLineBottom">
+						<view class="suggestLineBottomTxt">预计完成日期:{{item.orderFinishTime.slice(0,item.orderFinishTime.length-8)}}</view>
+						<view class="suggestLineBottomTxt">{{item.managerName}}</view>
+					</view>
+					<image src="../../static/img/report_weixiugai@2x.png" mode="" class="exeStateImg" v-if="item.exeState==0"></image>
+					<image src="../../static/img/_report_yixiugai@2x.png" mode="" class="exeStateImg" v-if="item.exeState==1"></image>
+				</view>
+				
+				
+				<nodata v-if="info.suggestList.length==0"></nodata>
+			</view>
 			
 		</view>
 	  
 	   <view style="height: 150rpx;"></view>
-	   <view class="bottom">
+	   <view class="bottom"  v-if="info.state==1&&loginType==1">
 		    <view class="delBtn">删除</view>
 		    <view class="editBtn">编辑</view>
 			<view class="Submit">提交</view>
 	   </view>
+	   <view class="bottom"  v-if="info.state==2&&loginType==1">
+	   		<view class="shoreDz">发送给店长</view>
+	   </view>
+	   <view class="bottom"  v-if="info.state==3&&loginType==1">
+	   		<view class="shoreDz">点评</view>
+	   </view>
+	   <!-- 店主-->
+	   <view class="bottom"  v-if="info.state==2&&loginType==2">
+	   		<view class="shoreDz" @click="editWork">修改作业</view>
+	   </view>
+	   <view class="bottom"  v-if="info.state==4&&loginType==2">
+	   		<view class="shoreDz">回复</view>
+	   </view>
 	</view>
 </template>
 
 <script>
+	import nodata from '@/components/nodata/nodata.vue'	
 	export default {
+		components: {
+			   nodata
+		},
 		data() {
 			return {
 				 iStatusBarHeight:'',
 				 id:'',
 				 info:'',
-				 tabIndex:1,
+				 tabIndex:2,
+				 lat:'',
+				 lng:'',
+				 loginType:'',
+				 type:1,
 			}
 		},
 		onLoad(opt) {
-          //页面加载初始化生命周期函数
+            
+		    var that=this;
+			this.loginType=uni.getStorageSync("logInData").type;
+			console.log('this.loginType=='+this.loginType)
 		    this.iStatusBarHeight = uni.getSystemInfoSync().statusBarHeight;
 			this.id=opt.id;
-			this.getSuperCheckSheetInfo()
+			//this.getSuperCheckSheetInfo();
+			uni.getLocation({
+				success(res) {
+					that.lng = res.longitude
+					that.lat = res.latitude
+					that.getSuperCheckSheetInfo()
+				},
+				fail() {
+				
+				}
+			})
+			//#ifdef H5
+			
+			that.lng='117.06533'
+			that.lat='36.68013'
+			that.getSuperCheckSheetInfo()
+			 // #endif
 		},
 		methods: {
 			back(){
@@ -118,6 +193,43 @@
 					delta:1
 				})
 			},
+			goaddress(){
+				var that=this;
+				if(that.info.shopInfo.lat==''||that.info.shopInfo.lng==''){
+					uni.showToast({
+					    title: '该门店未设置定位',
+						 icon:'none',
+					    duration: 2000,
+					});
+					return false;
+				}
+				uni.openLocation({
+					latitude:Number(that.info.shopInfo.lat),
+					longitude:Number(that.info.shopInfo.lng),
+					name:that.info.shopInfo.shopName,
+					address:that.info.shopInfo.address,
+					success: function () {
+						console.log('success');
+					},
+					fail(err) {
+					  console.log(err)	
+					}
+				});
+			},
+			call(){
+				var that=this;
+				uni.makePhoneCall({
+				    phoneNumber: that.info.shopInfo.contactorPhone
+				}); 
+			},
+			goHome(){
+				uni.navigateTo({
+					url:'../index/index'
+				})
+			},
+			tabClick(num){
+				this.tabIndex=num
+			},
 			getSuperCheckSheetInfo(){
 				uni.showLoading({
 					title: '加载中'
@@ -125,10 +237,17 @@
 				let url = 'accompany/SuperCheckSheet/querySuperCheckSheetInfo',
 					params = {
 						sheetID: this.id,
+						lat:this.lat,
+						lng:this.lng
 					}
 				this.$http(url, params, 'GET').then(res => {
 					this.info = res.data
 				})
+			},
+			editWork(){
+				uni.navigateTo({
+					url:'../shop/shopIndex/editWork?sheetID='+this.id
+				})
 			}
            
 		}
@@ -192,6 +311,24 @@
 		width: 38rpx;
 		height: 46rpx;
 	}
+	.topContImg2{
+		width: 42rpx;
+		height: 44rpx;
+	
+	}
+	.topContImg3{
+		width: 38rpx;
+		height: 44rpx;
+	}
+	.topContImg4{
+		width: 44rpx;
+		height: 38rpx;
+		margin-top: 4rpx;
+	}
+	.topContImg5{
+		width: 44rpx;
+		height: 46rpx;
+	}
 	.topContTxt{
 		font-size: 36rpx;
 		font-weight: 500;
@@ -384,4 +521,54 @@
 		display: flex;
 		flex-wrap: wrap;
 	}
+	.suggestLine{
+		background: #FFFFFF;
+		border-radius: 10rpx;
+		margin-top: 20rpx;
+		position: relative;
+	}
+	.suggestLineTop{
+		height: 76rpx;
+		background: linear-gradient(270deg, rgba(255, 255, 255, 0.1) 0%, #FFE2D5 100%);
+		line-height: 76rpx;
+		color: #3C3C3C;
+		font-size: 28rpx;
+		padding-left: 20rpx;
+	}
+	.suggestCont{
+		color: #3C3C3C;
+		font-size: 28rpx;
+		line-height: 40rpx;
+		padding: 30rpx 20rpx;
+	}
+	.suggestLineBottom{
+		display: flex;
+		justify-content: space-between;
+		color: #999999;
+		font-size: 26rpx;
+		padding: 0 20rpx 30rpx 20rpx;
+	}
+	.address{
+		display: flex;
+		justify-content: space-between;
+	}
+	.exeStateImg{
+		width: 116rpx;
+		height: 96rpx;
+		position: absolute;
+		top: 0;
+		right: 0;
+		z-index: 11;
+	}
+	.shoreDz{
+		width: 702rpx;
+		height: 74rpx;
+		background: linear-gradient(124deg, #FF8700 0%, #FF4F00 100%);
+		border-radius: 37rpx;
+		text-align: center;
+		line-height: 74rpx;
+		color: #FFFFFF;
+        font-size: 30rpx;
+		margin-top: 24rpx;
+	}
 </style>

+ 176 - 0
operatingCompany/pages/shop/shopIndex/editWork.vue

@@ -0,0 +1,176 @@
+<template>
+	<view class="content">
+		<view class="suggestLine" v-for="(item,index) in list">
+			<view class="suggestLineTop">建议({{index+1}})</view>
+			<view class="suggestCont">{{item.suggest}}</view>
+			<view class="suggestLineBottom">
+				<view class="suggestLineBottomTxt">预计完成日期:{{item.orderFinishTime.slice(0,item.orderFinishTime.length-8)}}</view>
+				<view class="suggestLineBottomTxt">{{item.managerName}}</view>
+			</view>
+			<image src="../../../static/img/report_weixiugai@2x.png" mode="" class="exeStateImg" v-if="item.exeState==0"></image>
+			<image src="../../../static/img/_report_yixiugai@2x.png" mode="" class="exeStateImg" v-if="item.exeState==1"></image>
+		    <view class="lineBottom" v-if="item.exeState==0">
+				<view class="goEditBtn" @click="edit(item)">修改作业</view>
+			</view>
+			<view class="workBox" v-if="item.exeState==1">
+				<view class="workTitle">作业情况</view>
+				<view class="exeContent">
+					<view class="exeContent" v-if="item.exeContent">{{item.exeContent}}</view>
+				</view>
+				<view class="workImgBox">
+					<image :src="img" mode="" v-for="(img,i) in item.exeImg.split(',')" class="workImg"></image>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import nodata from '@/components/nodata/nodata.vue'	
+	export default {
+		components: {
+			   nodata
+		},
+		data() {
+			return {
+				sheetID:'',
+				list:'',
+				type:0,
+			}
+		},
+		onLoad(opt) {
+		   this.sheetID=opt.sheetID
+           this.getData()
+		},
+		onShow() {
+			if(this.sheetID){
+				this.getData()	
+			}
+
+		},
+		methods: {
+			getData() {
+				uni.showLoading({
+					title: '加载中'
+				})
+				let url = 'accompany/SuperCheckSheet/querySuperCheckSheetSuggestList',
+				params = {
+				  sheetID:this.sheetID
+				 }
+				this.$http(url, params, 'GET').then(res => {
+                  this.list=res.data
+				})
+			},
+			edit(item){
+				this.type=0;
+				this.list.forEach(item=>{
+					if(item.exeState==0){
+						this.type++
+					}
+				})
+				uni.navigateTo({
+					url:'editWorkDetail?id='+item.id+'&type='+this.type+'&sheetID='+this.sheetID
+				})
+			}
+		},
+		// 下拉刷新 上拉加载更多
+		onPullDownRefresh() {
+			this.getData()
+			setTimeout(function() {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		},
+	}
+</script>
+
+<style scoped>
+	.content {
+		background: #F4F5F7;
+		min-height: 100vh;
+		padding: 24rpx 20rpx;
+	}
+
+	/* #ifdef H5 */
+	.content {
+		background: #F4F5F7;
+		min-height: calc(100vh - 44px);
+		padding: 24rpx 20rpx;
+	}
+
+	/* #endif */
+	.suggestLine{
+		background: #FFFFFF;
+		border-radius: 10rpx;
+		margin-top: 20rpx;
+		position: relative;
+	}
+	.suggestLineTop{
+		height: 76rpx;
+		background: linear-gradient(270deg, rgba(255, 255, 255, 0.1) 0%, #FFE2D5 100%);
+		line-height: 76rpx;
+		color: #3C3C3C;
+		font-size: 28rpx;
+		padding-left: 20rpx;
+	}
+	.suggestCont{
+		color: #3C3C3C;
+		font-size: 28rpx;
+		line-height: 40rpx;
+		padding: 30rpx 20rpx;
+	}
+	.suggestLineBottom{
+		display: flex;
+		justify-content: space-between;
+		color: #999999;
+		font-size: 26rpx;
+		padding: 0 20rpx 30rpx 20rpx;
+		border-bottom: 1px solid #EEEEEE;
+	}
+	.exeStateImg{
+		width: 116rpx;
+		height: 96rpx;
+		position: absolute;
+		top: 0;
+		right: 0;
+		z-index: 11;
+	}
+	.goEditBtn{
+		width: 150rpx;
+		height: 56rpx;
+		border-radius: 36rpx;
+		border: 2rpx solid #FF4F00;
+		line-height: 56rpx;
+		text-align: center;
+		font-size: 28rpx;
+		color: #FF4F00;
+	}
+	.lineBottom{
+		display: flex;
+		justify-content: flex-end;
+		padding: 20rpx;
+		
+	}
+	.workBox{
+		padding: 20rpx;
+	}
+	.workTitle{
+		font-size: 26rpx;
+		color: #666666;
+		padding-bottom: 16rpx;
+	}
+	.exeContent{
+		font-size: 28rpx;
+		color: #3C3C3C;
+		line-height: 40rpx;
+	}
+	.workImg{
+		width: 150rpx;
+		height: 150rpx;
+		margin-right: 20rpx;
+		margin-top: 20rpx;
+	}
+	.workImgBox{
+		display: flex;
+		flex-wrap: wrap;
+	}
+</style>

+ 196 - 0
operatingCompany/pages/shop/shopIndex/editWorkDetail.vue

@@ -0,0 +1,196 @@
+<template>
+	<view class="content">
+		<view class="main">
+			<view class="title">上传照片</view>
+			<view class="imgBox" >
+				<view class="imgLine" v-for="(img,imgindex) in imgArr">
+					<image :class="{img4:(imgindex+1)%4==0}" :src="img" mode="" class="itemImg"></image>
+				    <image src="../../../static/img/icon_delpic@2x.png" mode=""  class="delImg" @click="delimg(imgindex)"></image>
+				</view>
+				<view class="imgLine" @click="uploadImg">
+					<image src="../../../static/img/icon_addpic@2x.png" mode="" class="itemImg"></image>
+				</view>
+			</view>
+			<view class="title">其他说明</view>
+			<view>
+				<textarea placeholder-style="color:#CCCCCC" placeholder="请输入其他说明信息~" v-model="exeContent" class="textareaCont"/>
+			</view>
+		</view>
+		
+		<view class="bottom"  >
+				<view class="shoreDz" @click="submit">提交</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import nodata from '@/components/nodata/nodata.vue'	
+	export default {
+		components: {
+			   nodata
+		},
+		data() {
+			return {
+				imgArr:[],
+				exeContent:'',
+				id:'',
+				type:'',
+				sheetID:'',
+			}
+		},
+		onLoad(opt) {
+		  this.id=opt.id;
+		  this.type=opt.type;
+		  this.sheetID=opt.sheetID;
+		},
+		onShow() {
+			
+		},
+		methods: {
+		    uploadImg(){
+				var that=this;
+				uni.chooseImage({
+					sourceType: ['album'],
+					count:1, 
+				    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) ;
+								
+				            }
+				        }); 
+						/* that.$http('accompany/SuperCheckSheet/uploadFile', tempFilePaths[0], 'POST').then(res => {
+							
+						}) */
+				    }
+				});
+			},
+			delimg(index){
+				this.imgArr.splice(index,1)
+			},
+			submit(){
+				if(this.imgArr.length==0){
+					uni.showToast({
+					    title: '请上传图片',
+						icon:'none',
+					    duration: 2000,
+					});
+					return false;
+				}
+				uni.showLoading({ });
+				var exeImg=this.imgArr.join(',')
+				this.$http('accompany/SuperCheckSheet/executeSuggestState', {
+					id:this.id,
+					exeContent:this.exeContent,
+					exeImg:exeImg
+				}, 'POST').then(res => {
+				    //this.submitSuperCheckSheet()
+					uni.showToast({
+					    title: '提交成功',
+						icon:'none',
+					    duration: 2000,
+					});
+					if(this.type>1){
+						uni.navigateBack({
+							delta:1
+						})
+					}else{
+						uni.navigateTo({
+							url:'editcomplete?sheetID='+this.sheetID
+						})
+					}
+					
+				})
+			}
+			
+		}
+	}
+</script>
+
+<style scoped>
+	.content {
+		background: #F4F5F7;
+		min-height: 100vh;
+		padding-top: 20rpx;
+	}
+
+	/* #ifdef H5 */
+	.content {
+		background: #F4F5F7;
+		min-height: calc(100vh - 44px);
+		
+	}
+
+	/* #endif */
+	.main{
+		background: #FFFFFF;
+		padding: 30rpx 24rpx;
+	}
+	.title{
+		font-size: 30rpx;
+		color: #3C3C3C;
+		padding-bottom: 20rpx;
+	}
+	.textareaCont{
+		width: 666rpx;
+		height: 200rpx;
+		background: #F4F5F7;
+		border-radius: 10rpx;
+		padding: 18rpx;
+	}
+	.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: linear-gradient(124deg, #FF8700 0%, #FF4F00 100%);
+		border-radius: 37rpx;
+		text-align: center;
+		line-height: 74rpx;
+		color: #FFFFFF;
+	    font-size: 30rpx;
+		margin-top: 24rpx;
+	}
+	.imgBox{
+		padding-top: 20rpx;
+		display: flex;
+		flex-wrap: wrap;
+		padding-bottom: 20rpx;
+	}
+	.itemImg{
+		width:150rpx;
+		height: 150rpx;
+		margin-right: 35rpx;
+		margin-top: 30rpx;
+	}
+	.img4{
+		margin-right: 0;
+	}
+	.delImg{
+		width: 32rpx;
+		height: 32rpx;
+		position: absolute;
+		left: 135rpx;
+		top: 10rpx;
+	}
+	.imgLine{
+		position: relative;
+	}
+</style>

+ 200 - 0
operatingCompany/pages/shop/shopIndex/editcomplete.vue

@@ -0,0 +1,200 @@
+<template>
+	<view class="content">
+		<view class="zdyNav">
+		  <view class="status_bar" :style="{height: iStatusBarHeight + 'px'}"></view>
+		  <view class="nav">
+			  <view><image src="../../../static/img/baiheiback.png" mode="" class="baiheiback" @click="back"></image></view>
+			  <view >修改完成</view>
+			  <view style="width:70px;"></view>
+		  </view>
+		</view>
+		<view class="status_bar" :style="{height: iStatusBarHeight + 'px'}"></view>
+		<view style="height: 44px;"></view>
+		<view class="top">
+			<view class="toptop">
+				<image src="../../../static/img/icon_select_per@2x.png" mode="" class="toptopIMg"></image>
+				<view class="topTitle">修改完成</view>
+			</view>
+			<view class="topCont">
+				<view class="topContBtn">回到首页</view>
+				<view class="topContBtn">查看详情</view>
+			</view>
+		</view>
+		
+		<view class="competeCont">
+			<view class="competeContTitle">对运营经理的服务评价</view>
+			<view class="xxBox">
+				<uni-rate :max="5" v-model="xx" @change="onXXChange"/>
+			</view>
+			
+
+			<view>
+				<textarea placeholder-style="color:#CCCCCC" placeholder="请填写十字以上的评价内容~" v-model="userEvaContent" class="textareaCont"/>
+			</view>
+			<view class="submitBox">
+				<view class="submit" @click="submit">提交</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	
+	export default {
+		
+		data() {
+			return {
+				sheetID:'',
+				userEvaContent:'',
+				userEvaStar:0,
+				xx:0,
+			}
+		},
+		onLoad(opt) {
+		  this.sheetID=opt.sheetID
+		  this.iStatusBarHeight = uni.getSystemInfoSync().statusBarHeight;
+		},
+		onShow() {
+				
+		},
+		methods: {
+		   
+			onXXChange(e){
+				console.log(e)
+				this.userEvaStar=e.value
+			},
+			submit(){
+				
+				uni.showLoading({ });
+				
+				this.$http('accompany/SuperCheckSheet/userEva', {
+					sheetID:this.sheetID,
+					userEvaStar:this.userEvaStar,
+					userEvaContent:this.userEvaContent
+				}, 'POST').then(res => {
+				    //this.submitSuperCheckSheet()
+					uni.showToast({
+					    title: '提交成功',
+						icon:'none',
+					    duration: 2000,
+					});
+					uni.navigateTo({
+						url:'index'
+					})
+				})
+			}
+			
+		}
+	}
+</script>
+
+<style scoped>
+	.content {
+		background: #F4F5F7;
+		min-height: 100vh;
+	
+	}
+
+	/* #ifdef H5 */
+	.content {
+		background: #F4F5F7;
+	
+		
+	}
+
+	/* #endif */
+	.status_bar{
+		background: #FFFFFF;
+	}
+	.nav{
+		width: 100vw;
+		height: 44px;
+		background: #FFFFFF;
+		display: flex;
+		justify-content: space-between;
+		font-size: 34rpx;
+		line-height: 44px;
+	}
+	.baiheiback{
+		width: 70px;
+		height: 44px;
+	}
+	.zdyNav{
+		position: fixed;
+		left: 0;
+		top: 0;
+		background: #FFFFFF;
+		z-index: 11;
+	}
+	.top{
+		background: #FFFFFF;
+	}
+	.toptop{
+		display: flex;
+		justify-content: center;
+		padding-top: 20rpx;
+	}
+	.toptopIMg{
+		width: 44rpx;height: 44rpx;
+	}
+	.topTitle{
+		font-size: 36rpx;
+		padding-left: 10rpx;
+		color: #3C3C3C;
+	}
+	.topCont{
+		display: flex;
+		justify-content: space-around;
+		padding: 40rpx;
+	}
+	.topContBtn{
+		width: 150rpx;
+		height: 56rpx;
+		border-radius: 34rpx;
+		border: 2rpx solid #DDDDDD;
+		line-height: 56rpx;
+		text-align: center;
+		font-size: 28rpx;
+		color: #3C3C3C;
+	}
+	.competeCont{
+		margin-top: 20rpx;
+		background: #FFFFFF;
+		padding: 40rpx 24rpx;
+	}
+	.competeContTitle{
+		font-size: 30rpx;
+		color: #3C3C3C;
+		text-align: center;
+	}
+	.textareaCont{
+		width: 662rpx;
+		height: 200rpx;
+		background: #F4F5F7;
+		border-radius: 10rpx;
+		padding: 20rpx;
+		margin-top: 20rpx;
+		font-size: 28rpx;
+	}
+	.submit{
+		width: 420rpx;
+		height: 74rpx;
+		background: #FF4F00;
+		border-radius: 50rpx;
+		line-height: 74rpx;
+		text-align: center;
+		font-size: 30rpx;
+		color: #FFFFFF;
+	}
+	.submitBox{
+		display: flex;
+		justify-content: center;
+		padding-top: 40rpx;
+	}
+	.xxBox{
+		display: flex;
+		justify-content: center;
+		padding-top: 20rpx;
+		padding-bottom: 20rpx;
+	}
+</style>

+ 6 - 1
operatingCompany/pages/shop/shopIndex/index.vue

@@ -181,7 +181,12 @@
 					url: url
 				})
 			},
-			
+			goAppraise(item){
+				console.log(item);
+				uni.navigateTo({
+					url:'../../reportManage/reportDetail?id='+item.ID
+				})
+			},
 			goReviews(storeMess){
 				uni.navigateTo({
 					url:'reviews'

BIN=BIN
operatingCompany/static/img/_report_yixiugai@2x.png


BIN=BIN
operatingCompany/static/img/report_icon_daihuifu@2x.png


BIN=BIN
operatingCompany/static/img/report_icon_daizuoye@2x.png


BIN=BIN
operatingCompany/static/img/report_icon_dianping@2x.png


BIN=BIN
operatingCompany/static/img/report_icon_yiwancheng@2x.png


BIN=BIN
operatingCompany/static/img/report_weixiugai@2x.png


+ 6 - 0
operatingCompany/uni_modules/uni-icons/changelog.md

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

+ 132 - 0
operatingCompany/uni_modules/uni-icons/components/uni-icons/icons.js

@@ -0,0 +1,132 @@
+export default {
+	"pulldown": "\ue588",
+	"refreshempty": "\ue461",
+	"back": "\ue471",
+	"forward": "\ue470",
+	"more": "\ue507",
+	"more-filled": "\ue537",
+	"scan": "\ue612",
+	"qq": "\ue264",
+	"weibo": "\ue260",
+	"weixin": "\ue261",
+	"pengyouquan": "\ue262",
+	"loop": "\ue565",
+	"refresh": "\ue407",
+	"refresh-filled": "\ue437",
+	"arrowthindown": "\ue585",
+	"arrowthinleft": "\ue586",
+	"arrowthinright": "\ue587",
+	"arrowthinup": "\ue584",
+	"undo-filled": "\ue7d6",
+	"undo": "\ue406",
+	"redo": "\ue405",
+	"redo-filled": "\ue7d9",
+	"bars": "\ue563",
+	"chatboxes": "\ue203",
+	"camera": "\ue301",
+	"chatboxes-filled": "\ue233",
+	"camera-filled": "\ue7ef",
+	"cart-filled": "\ue7f4",
+	"cart": "\ue7f5",
+	"checkbox-filled": "\ue442",
+	"checkbox": "\ue7fa",
+	"arrowleft": "\ue582",
+	"arrowdown": "\ue581",
+	"arrowright": "\ue583",
+	"smallcircle-filled": "\ue801",
+	"arrowup": "\ue580",
+	"circle": "\ue411",
+	"eye-filled": "\ue568",
+	"eye-slash-filled": "\ue822",
+	"eye-slash": "\ue823",
+	"eye": "\ue824",
+	"flag-filled": "\ue825",
+	"flag": "\ue508",
+	"gear-filled": "\ue532",
+	"reload": "\ue462",
+	"gear": "\ue502",
+	"hand-thumbsdown-filled": "\ue83b",
+	"hand-thumbsdown": "\ue83c",
+	"hand-thumbsup-filled": "\ue83d",
+	"heart-filled": "\ue83e",
+	"hand-thumbsup": "\ue83f",
+	"heart": "\ue840",
+	"home": "\ue500",
+	"info": "\ue504",
+	"home-filled": "\ue530",
+	"info-filled": "\ue534",
+	"circle-filled": "\ue441",
+	"chat-filled": "\ue847",
+	"chat": "\ue263",
+	"mail-open-filled": "\ue84d",
+	"email-filled": "\ue231",
+	"mail-open": "\ue84e",
+	"email": "\ue201",
+	"checkmarkempty": "\ue472",
+	"list": "\ue562",
+	"locked-filled": "\ue856",
+	"locked": "\ue506",
+	"map-filled": "\ue85c",
+	"map-pin": "\ue85e",
+	"map-pin-ellipse": "\ue864",
+	"map": "\ue364",
+	"minus-filled": "\ue440",
+	"mic-filled": "\ue332",
+	"minus": "\ue410",
+	"micoff": "\ue360",
+	"mic": "\ue302",
+	"clear": "\ue434",
+	"smallcircle": "\ue868",
+	"close": "\ue404",
+	"closeempty": "\ue460",
+	"paperclip": "\ue567",
+	"paperplane": "\ue503",
+	"paperplane-filled": "\ue86e",
+	"person-filled": "\ue131",
+	"contact-filled": "\ue130",
+	"person": "\ue101",
+	"contact": "\ue100",
+	"images-filled": "\ue87a",
+	"phone": "\ue200",
+	"images": "\ue87b",
+	"image": "\ue363",
+	"image-filled": "\ue877",
+	"location-filled": "\ue333",
+	"location": "\ue303",
+	"plus-filled": "\ue439",
+	"plus": "\ue409",
+	"plusempty": "\ue468",
+	"help-filled": "\ue535",
+	"help": "\ue505",
+	"navigate-filled": "\ue884",
+	"navigate": "\ue501",
+	"mic-slash-filled": "\ue892",
+	"search": "\ue466",
+	"settings": "\ue560",
+	"sound": "\ue590",
+	"sound-filled": "\ue8a1",
+	"spinner-cycle": "\ue465",
+	"download-filled": "\ue8a4",
+	"personadd-filled": "\ue132",
+	"videocam-filled": "\ue8af",
+	"personadd": "\ue102",
+	"upload": "\ue402",
+	"upload-filled": "\ue8b1",
+	"starhalf": "\ue463",
+	"star-filled": "\ue438",
+	"star": "\ue408",
+	"trash": "\ue401",
+	"phone-filled": "\ue230",
+	"compose": "\ue400",
+	"videocam": "\ue300",
+	"trash-filled": "\ue8dc",
+	"download": "\ue403",
+	"chatbubble-filled": "\ue232",
+	"chatbubble": "\ue202",
+	"cloud-download": "\ue8e4",
+	"cloud-upload-filled": "\ue8e5",
+	"cloud-upload": "\ue8e6",
+	"cloud-download-filled": "\ue8e9",
+	"headphones":"\ue8bf",
+	"shop":"\ue609"
+}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 72 - 0
operatingCompany/uni_modules/uni-icons/components/uni-icons/uni-icons.vue


BIN=BIN
operatingCompany/uni_modules/uni-icons/components/uni-icons/uni.ttf


+ 82 - 0
operatingCompany/uni_modules/uni-icons/package.json

@@ -0,0 +1,82 @@
+{
+  "id": "uni-icons",
+  "displayName": "uni-icons 图标",
+  "version": "1.2.0",
+  "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。",
+  "keywords": [
+    "uni-ui",
+    "uniui",
+    "icon",
+    "图标"
+],
+  "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": [],
+    "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"
+        }
+      }
+    }
+  }
+}

+ 46 - 0
operatingCompany/uni_modules/uni-icons/readme.md

@@ -0,0 +1,46 @@
+
+
+## Icons 图标
+> **组件名:uni-icons**
+> 代码块: `uIcons`
+
+
+用于展示 icons 图标 。
+
+### 安装方式
+
+本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。
+
+如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55)
+
+### 基本用法
+
+在 ``template`` 中使用组件
+
+```html
+<uni-icons type="contact" size="30"></uni-icons>
+```
+
+
+
+## API
+
+### Icons Props
+
+|属性名	|类型		|默认值	|说明				|
+|:-:	|:-:		|:-:	|:-:				|
+|size	|Number		|24		|图标大小			|
+|type	|String		|-		|图标图案,参考示例	|
+|color	|String		|-		|图标颜色			|
+
+
+### Icons Events
+|事件名	|说明			|返回值|
+|:-:	|:-:			|:-:  |
+|@click|点击 Icon 触发事件|-    |
+
+
+
+## 组件示例
+
+点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/icons/icons](https://hellouniapp.dcloud.net.cn/pages/extUI/icons/icons)

+ 18 - 0
operatingCompany/uni_modules/uni-rate/changelog.md

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

+ 393 - 0
operatingCompany/uni_modules/uni-rate/components/uni-rate/uni-rate.vue

@@ -0,0 +1,393 @@
+<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(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"
+    scoped
+>
+	.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>

+ 83 - 0
operatingCompany/uni_modules/uni-rate/package.json

@@ -0,0 +1,83 @@
+{
+  "id": "uni-rate",
+  "displayName": "uni-rate 评分",
+  "version": "1.2.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-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"
+        }
+      }
+    }
+  }
+}

+ 107 - 0
operatingCompany/uni_modules/uni-rate/readme.md

@@ -0,0 +1,107 @@
+
+
+## Rate 评分
+> **组件名:uni-rate**
+> 代码块: `uRate`
+> 关联组件:`uni-icons`
+
+
+评分组件,多用于购买商品后,对商品进行评价等场景
+
+> **注意事项**
+> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的使用说明,可以帮你避免一些错误。
+> - 暂时不支持零星选择
+> - 当前版本暂不支持修改图标,后续版本会继续优化
+> - 绑定值推荐使用 `v-model` 的方式
+> - 如需设置一个星星表示多分,如:显示5个星星,最高分10分。这种情况请在 change 事件监听中自行处理,获取到的值乘以你的基数就可以,默认组件是一星一分
+
+
+### 安装方式
+
+本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。
+
+如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55)
+
+
+## 基本用法 
+
+```html
+<!-- 基本用法 -->
+<!-- 需要在 script 中绑定 value 变量 -->
+<uni-rate v-model="value" @change="onChange"/>
+
+<!-- 不支持滑动手势选择评分 -->
+<uni-rate :touchable="false" :value="5"/>
+<!-- 设置尺寸大小 -->
+<uni-rate :size="18" :value="5"/>
+
+<!-- 设置评分数 -->
+<uni-rate :max="10" :value="5" />
+	
+<!-- 设置星星间隔 -->
+<uni-rate :value="4" :margin="20" />	
+
+<!-- 设置颜色 -->
+<uni-rate :value="3" color="#bbb" active-color="red" />
+
+<!-- 选择半星 -->
+<uni-rate allow-half :value="3.5" />
+
+<!-- 只读状态 -->
+<uni-rate :readonly="true" :value="2" />
+
+<!-- 禁用状态 -->
+<uni-rate :disabled="true" disabledColor="#ccc" :value="3" />
+
+<!-- 未选中的星星为镂空状态 -->
+<uni-rate :value="3" :is-fill="false" />
+
+			 
+```
+
+```javascript
+
+export default {
+	components: {},
+	data() {
+		return {
+			value: 2
+		}
+	},
+	methods: {
+		onChange(e) {
+			console.log('rate发生改变:' + JSON.stringify(e))
+		}
+	}
+}
+
+```
+
+## API
+### Rate Props
+
+属性名			|	类型			|	默认值	|	说明																									
+:-:				|	:-:		|	:-:		|	:-:	
+value/v-model	|	Number 	 	| 1			|	当前评分
+color 			|	String 	 	| #ececec	|	未选中状态的星星颜色
+activeColor 	|	String 	 	| #ffca3e	|	选中状态的星星颜色
+disabledColor 	|	String 	 	| #c0c0c0	|	禁用状态的星星颜色
+size 			|	Number 	 	| 24		|	星星的大小
+max 			|	Number 	 	| 5			|	最大评分评分数量,目前一分一颗星
+margin 			|	Number 	 	| 0			|	星星的间距,单位 px
+isFill 			| 	Boolean 	| true		|	星星的类型,是否为实心类型
+disabled 		|	Boolean 	| false		|	是否为禁用状态 (之前版本为已读状态,现更正为禁用状态)
+readonly 		|	Boolean 	| false		| 	是否为只读状态
+allowHalf		| 	Boolean 	| false		|	是否展示半星
+touchable		|	Boolean 	| true		|	是否支持滑动手势
+
+### Rate Events
+
+事件称名			|	说明						|	返回参数			
+:-:				|	:-:						|	:-:	
+@change			|	改变 value 的值返回		|	e = { value:number }		
+
+
+## 组件示例
+
+点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/rate/rate](https://hellouniapp.dcloud.net.cn/pages/extUI/rate/rate)