最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue實現(xiàn)類似淘寶商品評價頁面星級評價及上傳多張圖片功能

 更新時間:2018年10月29日 11:43:52   作者:honey緣木魚  
最近在寫一個關(guān)于vue的商城項目,然后集成在移動端中,開發(fā)需求中有一界面,類似淘寶商城評價界面!接下來通過本文給大家分享vue實現(xiàn)類似淘寶商品評價頁面星級評價及上傳多張圖片功能,需要的朋友參考下吧

最近在寫一個關(guān)于vue的商城項目,然后集成在移動端中,開發(fā)需求中有一界面,類似淘寶商城評價界面!實現(xiàn)效果圖如下所示:

評價頁

點擊看大圖,且可左右滑動

功能需求分析

1.默認(rèn)為5顆星,為非常滿意,4顆滿意,根據(jù)不同星級顯示不同滿意程度。

 2.評價內(nèi)容,最多為200字。

 3.上傳圖片最多上傳6張,圖片不可拉伸,可刪除,可點擊放大左右滑動展示

具體實現(xiàn)關(guān)鍵代碼

 關(guān)于星級功能:

 寫一個五星數(shù)組,默認(rèn)數(shù)組中有亮的星級圖片,用bool值判斷是否變暗。 

     默認(rèn)星級數(shù)組 

 點擊實現(xiàn)的關(guān)鍵代碼:

// 評分
 rating: function (index, string) {
  var total = this.stars.length // 星星總數(shù)
  var idx = index + 1 // 這代表選的第idx顆星-也代表應(yīng)該顯示的星星數(shù)量
  // 進(jìn)入if說明頁面為初始狀態(tài)
  if (this.scoreStartNum === 0) {
   this.scoreStartNum = idx
   for (var i = 0; i < idx; i++) {
   this.stars[i].src = starOnImg
   this.stars[i].active = true
   }
  } else {
   // 如果再次點擊當(dāng)前選中的星級-僅取消掉當(dāng)前星級,保留之前的。
   if (idx == this.scoreStartNum) {
   for (var i = index; i < total; i++) {
    if (i != 0) {
    this.stars[i].src = starOffImg
    this.stars[i].active = false
    }
   }
   }
   // 如果小于當(dāng)前最高星級,則直接保留當(dāng)前星級
   if (idx < this.scoreStartNum) {
   for (var i = idx; i < this.scoreStartNum; i++) {
    if (i != 0) {
    this.stars[i].src = starOffImg
    this.stars[i].active = false
    }
   }
   }
   // 如果大于當(dāng)前星級,則直接選到該星級
   if (idx > this.scoreStartNum) {
   for (var i = 0; i < idx; i++) {
    this.stars[i].src = starOnImg
    this.stars[i].active = true
   }
   }

   var count = 0 // 計數(shù)器-統(tǒng)計當(dāng)前有幾顆星
   for (var i = 0; i < total; i++) {
   if (this.stars[i].active) {
    count++
   }
   }
   this.scoreStartNum = count
  }
  if (this.scoreStartNum === 1) {
   this.scoreInfo = '很差'
  } else if (this.scoreStartNum === 2) {
   this.scoreInfo = '差'
  } else if (this.scoreStartNum === 3) {
   this.scoreInfo = '一般'
  } else if (this.scoreStartNum === 4) {
   this.scoreInfo = '滿意'
  } else if (this.scoreStartNum === 5) {
   this.scoreInfo = '很滿意'
  }

2. 評價內(nèi)容輸入

<textarea v-bind:maxlength="Surplus" @input="descArea" v-model="inputText" name="abstract" id="abstract" placeholder="寶貝滿足你的期待嗎?說說你的使用心得,分享給想買的他們吧!"></textarea>

Surplus 表示最大限制字?jǐn)?shù),v-model綁定輸入字體,去掉邊框可以設(shè)置:border: none;

上傳多張圖片功能

單獨寫了個uploadImages組件,用input來設(shè)置圖片上傳

<input type="file" class="input-file" multiple="multiple" name="avatar" ref="avatarInput" @change="changeImage($event)" accept="image/gif,image/jpeg,image/jpg,image/png">

在@change="handleChange"拿到圖片信息,有兩種方式展示:

圖片流形式展示圖片

let reader = new FileReader()
   let that = this
   reader.readAsDataURL(file)
   reader.onload = function (e) {
   console.log(this.result)
   that.imgUrls.push(this.result)
   }

2.上傳阿里云等第三方,直接拿到圖片url路徑,在此我用的第一種方式。

用mint-ui的錄播圖形式來做圖片的左右滑動功能。

<mt-swipe :auto="0" :show-indicators="false" @change="handleChange" :continuous="false" :defaultIndex="num">
   <mt-swipe-item v-for="(item,index) in imgUrls" :key="item.id">
    <div class="num" >{{index+1+'/'+imgUrls.length}}</div>
    <img :src="imgUrls[index]" class="img"/>
   </mt-swipe-item>
   </mt-swipe>

:auto="0"為不自動播放,:show-indicators="false"表示不展示下面的圓點,:defaultIndex="num"默認(rèn)展示第幾張圖片,:continuous="false" 是否重復(fù)播放。

關(guān)鍵代碼為:

methods: {
 //拿到圖片信息轉(zhuǎn)化為圖片流
 changeImage: function (e) {
  if (e.target.files.length <= (this.maxImages - this.imgUrls.length)) {
  for (var i = 0; i < e.target.files.length; i++) {
   let file = e.target.files[i]
   this.file = file
   console.log(this.file)
   let reader = new FileReader()
   let that = this
   reader.readAsDataURL(file)
   reader.onload = function (e) {
   console.log(this.result)
   that.imgUrls.push(this.result)
   }
  }
  // 剩余張數(shù)
  this.leftImages = this.maxImages - (this.imgUrls.length + e.target.files.length)
  this.pictureNums = String(this.maxImages - (this.imgUrls.length + e.target.files.length)) + '/' + String(this.maxImages)
  } else {
  Toast('只能選擇' + (this.maxImages - this.imgUrls.length) + '張了')
  }
 },
 //刪除
 delect (index) {
  this.imgUrls.splice(index, 1)
  this.leftImages++
  console.log('數(shù)量' + this.leftImages)
  if (this.leftImages == this.maxImages) {
  this.pictureNums = '上傳圖片'
  } else {
  this.pictureNums = String(this.leftImages) + '/' + String(this.maxImages)
  }
 },
 //輪播圖滑動改變index
 handleChange(index){
  this.num = index
 },
 //看大圖
 bigImg (index) {
  this.showBigImg = true
  this.num = index
 }
 }

樣式如下

<template>
 <div class="avatar">
  <!--展示圖片-->
  <div class="hasPic" v-if="imgUrls.length>0" v-for="(item,index) in imgUrls">
  <img class="seledPic" ref="picture" :src="item?item:require('../../static/images/imagebj.jpg')" name="avatar" @click="bigImg(index)">
  <img class="delect" src="../../static/images/del.png" @click="delect(index)">
  </div>
  <!--點擊方法圖左右滑動-->
  <div class="imgMask" v-if="showBigImg" @click.stop="showBigImg=!showBigImg">
  <div class="showImg">
   <mt-swipe :auto="0" :show-indicators="false" @change="handleChange" :continuous="false" :defaultIndex="num">
   <mt-swipe-item v-for="(item,index) in imgUrls" :key="item.id">
    <div class="num" >{{index+1+'/'+imgUrls.length}}</div>
    <img :src="imgUrls[index]" class="img"/>
   </mt-swipe-item>
   </mt-swipe>

  </div>
  </div>
  <!--默認(rèn)圖片-->
  <div class="selPic" v-if="imgUrls.length<6">
  <img src="../../static/images/imagebj.jpg" name="avatar">
  <span>{{pictureNums}}</span>
  <input type="file" class="input-file" multiple="multiple" name="avatar" ref="avatarInput" @change="changeImage($event)" accept="image/gif,image/jpeg,image/jpg,image/png">
  </div>
 </div>
 </template>

完整項目地址為:https://github.com/dt8888/publicComment

注意點:

1.項目中用到了mint -ui,轉(zhuǎn)移項目中錄播圖代碼時,會報錯,在終端項目中輸入:npm i mint-ui -S

 用到了px和rem自動轉(zhuǎn)化  http://m.fzitv.net/article/149721.htm

總結(jié)

以上所述是小編給大家介紹的vue實現(xiàn)類似淘寶商品評價頁面星級評價及上傳多張圖片功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 基于Vue實現(xiàn)HTML轉(zhuǎn)PDF并導(dǎo)出

    基于Vue實現(xiàn)HTML轉(zhuǎn)PDF并導(dǎo)出

    這篇文章主要為大家介紹了三種方法,可以實現(xiàn)將HTML頁面轉(zhuǎn)為PDF并實現(xiàn)下載。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下
    2022-04-04
  • 分享9個Vue的巧妙冷技巧

    分享9個Vue的巧妙冷技巧

    這篇文章主要介紹了分享9個Vue的巧妙冷技巧,文章首先通過巧用$attrs和$listeners的技巧展開,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • vue中的嚴(yán)格模式如何取消

    vue中的嚴(yán)格模式如何取消

    這篇文章主要介紹了vue中的嚴(yán)格模式如何取消,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue2安裝使用MonacoEditor方式(自定義語法,自定義高亮,自定義提示)

    Vue2安裝使用MonacoEditor方式(自定義語法,自定義高亮,自定義提示)

    這篇文章主要介紹了Vue2安裝使用MonacoEditor方式(自定義語法,自定義高亮,自定義提示),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue print.js打印支持Echarts圖表操作

    vue print.js打印支持Echarts圖表操作

    這篇文章主要介紹了vue print.js打印支持Echarts圖表操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue 2.0路由之路由嵌套示例詳解

    vue 2.0路由之路由嵌套示例詳解

    這篇文章主要給大家介紹了vue 2.0路由之路由嵌套的相關(guān)資料,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • Vue.js實現(xiàn)一個todo-list的上移下移刪除功能

    Vue.js實現(xiàn)一個todo-list的上移下移刪除功能

    這篇文章主要介紹了Vue.js實現(xiàn)一個todo-list的上移下移刪除功能,需要的朋友可以參考下
    2017-06-06
  • 簡單聊一聊Vue3組件更新過程

    簡單聊一聊Vue3組件更新過程

    我們不光要學(xué)會Vue的組件化實現(xiàn)過程,還要懂得組件數(shù)據(jù)發(fā)生變化,更新組件的過程,這篇文章主要給大家介紹了關(guān)于Vue3組件更新過程的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • 使用Vue開發(fā)一個實時性時間轉(zhuǎn)換指令

    使用Vue開發(fā)一個實時性時間轉(zhuǎn)換指令

    我們就來實現(xiàn)這樣一個Vue自定義指令v-time,將表達(dá)式傳入的時間戳實時轉(zhuǎn)換為相對時間。下面小編給大家?guī)砹耸褂肰ue開發(fā)一個實時性時間轉(zhuǎn)換指令,需要的朋友參考下吧
    2018-01-01
  • Vue 動態(tài)添加表單實現(xiàn)動態(tài)雙向綁定

    Vue 動態(tài)添加表單實現(xiàn)動態(tài)雙向綁定

    動態(tài)表單是一個常見的需求,本文詳細(xì)介紹了Vue.js中實現(xiàn)動態(tài)表單的創(chuàng)建,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12

最新評論

黄平县| 武功县| 黑水县| 庆阳市| 永新县| 应用必备| 巨野县| 庆云县| 东光县| 山阳县| 仪征市| 左贡县| 辉南县| 吉水县| 井研县| 壶关县| 确山县| 平定县| 铜鼓县| 南郑县| 呼图壁县| 盈江县| 油尖旺区| 呼和浩特市| 太原市| 柳林县| 鄂尔多斯市| 深州市| 天全县| 洛宁县| 赣榆县| 临汾市| 林西县| 汝州市| 滦平县| 修水县| 乌拉特后旗| 邵武市| 嘉义县| 南召县| 满城县|