微信小程序评价页面

 1 <!--服务评价-->
 2 <view class="service">
 3   <!--评分-->
 4   <view class='score'>
 5     <view class='left'>
 6       评分
 7     </view>
 8     <view class='right'>
 9        <view bindtap="starTap" data-index="{{index}}"  class="star" wx:for="{{userStars}}" wx:key="index">
10         <image src="{{item}}"></image>
11       </view>
12       <text class='rtxt'>{{wjxScore}}.0分</text>
13     </view>
14   </view>
15   <!--内容-->
16   <view class='content'>
17     <view class='left'>
18       内容
19     </view>
20     <view class='right'>
21       <text bindtap='label' class="{{attitude===true ? 'labelColor':''}}" data-index="{{attitude}}">服务态度好</text>
22       <text bindtap='label1' class="{{time===false? 'labelColor':''}}" data-index="{{time}}">排队时间短</text>
23       <text bindtap='label2' class="{{efficiency===false?'labelColor':''}}" data-index="{{efficiency}}">效率高</text>
24       <text bindtap='label3' class="{{environment===false?'labelColor':''}}" data-index="{{environment}}">门店环境好</text>
25       <text bindtap='label4' class="{{professional===false?'labelColor':''}}" data-index="{{professional}}">很专业</text> 
26     </view>
27   </view>
28   <!--图片-->
29   <view class='picture'>
30     <view class='left'>
31       图片
32     </view>
33     <view class='right'>
34        <view class="parcel" wx:for="{{pics}}" wx:key="{{index}}">
35        <image src="{{pics[index]}}" class="According" data-index="{{index}}" mode="aspectFill" bindtap="previewImg"></image>
36        <image src="{{staticImg}}home/order/apply/error.png" class='deleteimg' catchtap="deleteImg" data-index="{{index}}"></image>
37        </view>
38       <image src='/pages/service/img/add.png' class='add' bindtap='choose'></image>
39     </view>
40   </view>
41 </view>
42 <!--textarea-->
43 <view class="conts">
44     <textarea class="areas" placeholder='更多评价请写在这里(最多300字)' minlength="{{min}}" maxlength="{{max}}" bindinput="inputs"> 
45         <!-- <text class="currentWordNumber">{{currentWordNumber|0}}/{{max}}</text> -->
46     </textarea>
47 </view>
48 <!--提交评价-->
49 <button class='btn'>提交评价</button>
  1 page {
  2   width: 100%;
  3   height: 100%;
  4   background: #f0f0f0;
  5 }
  6 .service {
  7   width: 100%;
  8   overflow: hidden;
  9   box-sizing: border-box;
 10   padding: 0 20rpx;
 11   background: #fff;
 12 }
 13 .score {
 14   width: 100%;
 15   height: 100rpx;
 16   border-bottom: 1px solid #ccc;
 17 }
 18 .star {
 19   float: left;
 20   width: 54rpx;
 21   height: 100rpx;
 22   text-align: center;
 23   line-height: 100rpx;
 24 }
 25 .star image{
 26   width: 40rpx;
 27   height: 40rpx;
 28   margin-top: 30rpx;
 29 }
 30 .score .left {
 31   width: 100rpx;
 32   line-height: 100rpx;
 33   font-size: 30rpx;
 34   float: left;
 35 }
 36 .score .right {
 37   width: 610rpx;
 38   font-size: 30rpx;
 39   float: left;
 40   color: #888;
 41 }
 42 
 43 .score .right .rtxt {
 44   display: inline-block;
 45   height: 100rpx;
 46   line-height: 100rpx;
 47   margin-left: 15rpx;
 48   color: #c00;
 49   font-weight: bold;
 50 }
 51 .labelColor {
 52   color: #c00;
 53   border: 1px solid #c00 !important;
 54 }
 55 .content {
 56   width: 100%;
 57   overflow: hidden;
 58   border-bottom:1px solid #ccc;
 59   padding:0 0 26rpx 0;
 60   box-sizing: border-box;
 61 } 
 62 .content .left {
 63   width: 100rpx;
 64   font-size: 30rpx;
 65   float: left;
 66   padding-top: 20rpx;
 67 }
 68 .content .right {
 69   width: 610rpx;
 70   font-size: 24rpx;
 71   float: left;
 72   color: #888;
 73 }
 74 .content .right text {
 75   font-size: 24rpx;
 76   padding: 13rpx 24rpx;
 77   float: left;
 78   border: 1px solid #888;
 79   border-radius: 10rpx;
 80   margin-right: 34rpx;
 81   margin-top: 20rpx;
 82 }
 83 .picture {
 84   width: 100%;
 85   overflow: hidden;
 86   background: #fff;
 87   border-bottom: 1px solid #ccc;
 88 }
 89 .picture .left {
 90   width: 100rpx;
 91   font-size: 30rpx;
 92   float: left;
 93   padding-top: 20rpx;
 94 }
 95 .picture .right {
 96   width: 610rpx;
 97   font-size: 24rpx;
 98   float: left;
 99   color: #888;
100   box-sizing: border-box;
101   padding-top:36rpx; 
102 }
103 .picture .right .add {
104   width: 120rpx;
105   height: 120rpx;
106   margin-right: 10rpx;
107 }
108 .According{
109   width:120rpx;
110   height:120rpx;
111   float:left;
112   margin-right:10rpx;
113   margin-bottom: 10rpx;
114 }
115 .parcel{
116  width:120rpx;
117   height:120rpx;
118   float:left;
119   margin-right:10rpx;
120    margin-bottom: 10rpx;
121   position: relative;
122 }
123 .deleteimg{
124   width:30rpx;
125   height:30rpx;
126   position: absolute;
127   right:0;
128   top:0;
129   z-index: 2;
130 }
131 .conts{
132   width: 100%;
133   height: auto;
134   background: #fff;
135 }
136 textarea {
137   width: 687rpx;
138 }
139 .areas{
140   height:315rpx;
141   font-size: 30rpx;
142   padding-top: 30rpx;
143   margin: 0 auto;
144   overflow: hidden;   
145   position: relative; 
146 }
147 .currentWordNumber{
148   font-size: 28rpx;
149   position: absolute;
150   left: 0%;
151   bottom: 0rpx;
152   color: #c00;
153 }
154 .hint{
155    font-size: 28rpx;
156    position: absolute;
157    top: 120rpx;
158    left: 30rpx;
159    color: #FF6600;
160 }
161 .btn {
162   width: 600rpx;
163   height: 80rpx;
164   line-height: 80rpx;
165   font-size: 30rpx;
166   color: #fff;
167   background: #c00;
168   position: fixed;
169   left:75rpx;
170   bottom: 37rpx;
171 } 
172 button:after {
173   border: 0;
174 }
  1 const app = getApp();
  2 Page({
  3   data: {
  4     staticImg: app.globalData.staticImg,
  5     current:0,
  6     attitude:true,
  7     time: true,
  8     efficiency: true,
  9     environment:true,
 10     professional:true,
 11     userStars: [
 12       "/pages/service/img/rwjx.png",
 13       "/pages/service/img/rwjx.png",
 14       "/pages/service/img/rwjx.png",
 15       "/pages/service/img/rwjx.png",
 16       "/pages/service/img/rwjx.png",
 17     ],
 18     wjxScore:5,
 19     // textarea
 20     min: 5,//最少字数
 21     max: 300, //最多字数 (根据自己需求改变) 
 22     pics:[],
 23   },
 24   // 星星点击事件
 25   starTap: function (e) {
 26     var that = this;
 27     var index = e.currentTarget.dataset.index; // 获取当前点击的是第几颗星星
 28     var tempUserStars = this.data.userStars; // 暂存星星数组
 29     var len = tempUserStars.length; // 获取星星数组的长度
 30     for (var i = 0; i < len; i++) {
 31       if (i <= index) { // 小于等于index的是满心
 32         tempUserStars[i] = "/pages/service/img/rwjx.png";
 33         that.setData({
 34           wjxScore:i+1,
 35         })
 36       } else { // 其他是空心
 37         tempUserStars[i] = "/pages/service/img/wjx.png"
 38       }
 39     }
 40     // 重新赋值就可以显示了
 41     that.setData({
 42       userStars: tempUserStars
 43     })
 44   },
 45   // 标签
 46   label:function(e){
 47     console.log(e)
 48     var that = this;
 49     that.setData({
 50       attitude:!e.currentTarget.dataset.index
 51     })
 52   },
 53    label1: function (e) {
 54     console.log(e)
 55     var that = this;
 56     that.setData({
 57       time: !e.currentTarget.dataset.index
 58     })
 59   },
 60    label2: function (e) {
 61      console.log(e)
 62      var that = this;
 63      that.setData({
 64        efficiency: !e.currentTarget.dataset.index
 65      })
 66    },
 67     label3: function (e) {
 68      console.log(e)
 69      var that = this;
 70      that.setData({
 71        environment: !e.currentTarget.dataset.index
 72      })
 73    },
 74     label4: function (e) {
 75       console.log(e)
 76       var that = this;
 77       that.setData({
 78         professional: !e.currentTarget.dataset.index
 79       })
 80     },
 81     // 留言
 82     //字数限制  
 83   inputs: function (e) {
 84       // 获取输入框的内容
 85       var value = e.detail.value;
 86       // 获取输入框内容的长度
 87       var len = parseInt(value.length);
 88       //最多字数限制
 89       if (len > this.data.max) return;
 90       // 当输入框内容的长度大于最大长度限制(max)时,终止setData()的执行
 91       this.setData({
 92         currentWordNumber: len //当前字数  
 93       });
 94     },
 95     // 图片
 96     choose: function (e) {//这里是选取图片的方法
 97     var that = this;
 98     var pics = that.data.pics;
 99     wx.chooseImage({
100       count: 5 - pics.length, // 最多可以选择的图片张数,默认9
101       sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
102       sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
103       success: function (res) {
104 
105         var imgsrc = res.tempFilePaths;
106         pics = pics.concat(imgsrc);
107         console.log(pics);
108         // console.log(imgsrc);
109         that.setData({
110           pics: pics,
111           // console.log(pics),
112         });
113       },
114       fail: function () {
115         // fail
116       },
117       complete: function () {
118         // complete
119       }
120     })
121 
122   },
123   uploadimg: function () {//这里触发图片上传的方法
124     var pics = this.data.pics;
125     console.log(pics);
126     app.uploadimg({
127       url: 'https://........',//这里是你图片上传的接口
128       path: pics//这里是选取的图片的地址数组
129     });
130   },
131   onLoad: function (options) {
132 
133   },
134   // 删除图片
135   deleteImg: function (e) {
136     var pics = this.data.pics;
137     var index = e.currentTarget.dataset.index;
138     pics.splice(index, 1);
139     this.setData({
140       pics: pics
141     });
142   },
143   // 预览图片
144   previewImg: function (e) {
145     //获取当前图片的下标
146     var index = e.currentTarget.dataset.index;
147     //所有图片
148     var pics = this.data.pics;
149     wx.previewImage({
150       //当前显示图片
151       current: pics[index],
152       //所有图片
153       urls: pics
154     })
155   },
156 })

 

posted @ 2018-08-22 12:02  新恒  阅读(7218)  评论(0编辑  收藏  举报