国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

vue項目中實現圖片預覽的公用組件功能

來源:懂視網 責編:小采 時間:2020-11-27 22:05:41
文檔

vue項目中實現圖片預覽的公用組件功能

vue項目中實現圖片預覽的公用組件功能:今天產品提出了一個查看影像的功能需求。 在查看單據的列表中,有一列是影像字段,一開始根據單據號調用接口查看是否有圖片附件,如果有則彈出一個全屏的彈出層,如果沒有給出提示。而且,從列表進入詳情之后,附件那邊也會有一個查看影像的按鈕。 所以,根據
推薦度:
導讀vue項目中實現圖片預覽的公用組件功能:今天產品提出了一個查看影像的功能需求。 在查看單據的列表中,有一列是影像字段,一開始根據單據號調用接口查看是否有圖片附件,如果有則彈出一個全屏的彈出層,如果沒有給出提示。而且,從列表進入詳情之后,附件那邊也會有一個查看影像的按鈕。 所以,根據

今天產品提出了一個查看影像的功能需求。

在查看單據的列表中,有一列是影像字段,一開始根據單據號調用接口查看是否有圖片附件,如果有則彈出一個全屏的彈出層,如果沒有給出提示。而且,從列表進入詳情之后,附件那邊也會有一個查看影像的按鈕。

所以,根據需求,多個組件需要用到查看影像的功能,所以考慮做一個公用組件,通過組件傳值的方法將查看影像文件的入參傳過去。

后來,產品要求圖片可以旋轉縮放。

廢話不多說,貼上代碼:

<template>
 <div class="filePreview">
 <el-dialog 
 class="imgList" 
 title="預覽圖片列表" 
 :visible.sync="imgListShow"
 @close="$emit('remove')" 
 fullscreen>
 <div class="allImg">
 <div style="width:200px;height:100%;margin-top:50px;overflow-y: auto;margin: 0 auto;">
 <img v-for="(item,index) in imgList" :key="item.fileid" :src='item.furl' :class="{ changeColor:changeColor == index}" @click="handlerImg(item,index)">
 </div>
 </div>
 <div style="width:70%;float:left">
 <el-pagination
 style="margin-bottom:20px;"
 background
 @size-change="handleSizeChange"
 @current-change="handleCurrentChange1"
 :current-page.sync="currentImg"
 :page-size="1"
 layout="prev, pager, next, jumper"
 :total="num">
 </el-pagination>
 <div style="width:50%;text-align:center;margin:20px 0">
 <button @click="rotateL" icon="el-icon-arrow-left">
 <i class="el-icon-arrow-left"></i>左旋轉
 </button>
 <button @click="rotateR">右旋轉
 <i class="el-icon-arrow-right"></i>
 </button>
 <button @click="scale">
 <i class="el-icon-zoom-out"></i>縮小
 </button>
 <button @click="scale1">放大
 <i class="el-icon-zoom-in"></i>
 </button>
 </div>
 <div id="test_3" @mousemove="move" @mouseup="stop">
 <p @mousedown="start" >
 <img :src="furl" ref="singleImg" class="originStyle">
 </p>
 </div>
 </div>
 </el-dialog>
 </div>
</template>
<script>
 import {isgetFilePath}from 'api/public_api.js'
 export default {
 data() {
 return {
 imgList:[],
 imgListShow:false,
 num:0,
 furl:'',
 currentImg:1,
 changeColor:-1,
 currentRotate: 0 ,
 currentScale:1,
 canDrag: false,
 offset_x:0,
 offset_y:0,
 mouse_x:0,
 mouse_y:0,
 }
 },
 props:['filePreviewShow','FDJH'],
 created() {
 this.imgListShow = this.filePreviewShow
 this.preview()
 },
 methods: {
 //點擊圖片顯示
 handlerImg(obj,index){
 this.currentRotate = 0
 this.currentScale = 1
 this.rotateScale()
 this.$refs.singleImg.style.left = 0
 this.$refs.singleImg.style.top = 0
 this.furl = obj.furl
 this.changeColor = index
 this.currentImg = index+1
 },
 //影像
 preview(){
 let data = {
 // FDJH:'000002'
 FDJH:this.FDJH
 }
 isgetFilePath(data).then(res=>{
 // console.log(res)
 if(res.TYPE == "S"){
 this.imgList = JSON.parse(res.MESSAGE)
 this.num = this.imgList.length
 if(this.imgList.length > 0){
 this.furl = this.imgList[0].furl
 this.changeColor = 0
 }else{
 this.$message.warning('影像文件為空')
 } 
 }else{
 this.$message.warning(res.MESSAGE)
 }
 })
 },
 handleSizeChange(val) {
 console.log(`每頁 ${val} 條`);
 },
 handleCurrentChange1(val) {
 this.currentRotate = 0
 this.currentScale = 1
 this.rotateScale()
 this.$refs.singleImg.style.left = 0
 this.$refs.singleImg.style.top = 0
 this.furl = this.imgList[val-1].furl
 this.changeColor = val-1
 },
 start(e){
 //鼠標左鍵點擊
 e.preventDefault && e.preventDefault(); //去掉圖片拖動響應
 if(e.button==0){
 this.canDrag=true;
 //獲取需要拖動節點的坐標
 this.offset_x = document.getElementsByClassName('originStyle')[0].offsetLeft;//x坐標
 this.offset_y = document.getElementsByClassName('originStyle')[0].offsetTop;//y坐標
 //獲取當前鼠標的坐標
 this.mouse_x = e.pageX;
 this.mouse_y = e.pageY;
 }
 },
 move(e){
 e.preventDefault && e.preventDefault()
 if(this.canDrag==true){
 let _x = e.pageX - this.mouse_x;
 let _y = e.pageY - this.mouse_y;
 //設置移動后的元素坐標
 let now_x = (this.offset_x + _x ) + "px";
 let now_y = (this.offset_y + _y ) + "px";
 document.getElementsByClassName('originStyle')[0].style.top = now_y
 document.getElementsByClassName('originStyle')[0].style.left = now_x
 }
 },
 stop(e){
 this.canDrag = false;
 },
 //旋轉放大
 rotateScale(){
 this.$refs.singleImg.style.OTransform = 'rotate('+this.currentRotate+'deg)'+'scale('+this.currentScale+')'
 this.$refs.singleImg.style.webkitTransform = 'rotate('+this.currentRotate+'deg)'+'scale('+this.currentScale+')'
 this.$refs.singleImg.style.MozTransform = 'rotate('+this.currentRotate+'deg)'+'scale('+this.currentScale+')'
 this.$refs.singleImg.style.msTransform = 'rotate('+this.currentRotate+'deg)'+'scale('+this.currentScale+')'
 this.$refs.singleImg.style.transform = 'rotate('+this.currentRotate+'deg)'+'scale('+this.currentScale+')'
 },
 //旋轉
 rotateL(){
 this.currentRotate += 15
 this.rotateScale()
 },
 rotateR(){
 this.currentRotate -= 15
 this.rotateScale()
 },
 //縮放
 scale(){
 this.currentScale -= 0.1
 if(this.currentScale <= 0.1){
 this.currentScale = 0.1
 this.rotateScale()
 }else{
 this.rotateScale()
 }
 },
 scale1(){
 this.currentScale += 0.1
 this.rotateScale()
 },
 }
 }
</script>
<style rel="stylesheet/scss" lang="scss" slot-scope="scope">
 .filePreview{
 .imgList{
 .el-dialog__headerbtn{
 font-size:26px;
 }
 .el-dialog__body{
 .allImg{
 width:30%;
 float:left;
 height:600px;
 img{
 width: 150px;
 height: 150px;
 margin: 5px;
 cursor: pointer;
 }
 .changeColor{
 border:4px solid #409eff;
 }
 }
 }
 }
 .originStyle{
 position:absolute;
 left:0;top:0;
 cursor: pointer;
 // transform-origin: 50% 50%;
 }
 #test_3{
 position: relative;
 width: 600px;
 height: 400px;
 overflow: hidden;
 // overflow: scroll;
 & > p{
 position: absolute;
 cursor: move;
 transform-origin: center;
 width: 100%;
 height: 100%;
 padding: 0;
 -webkit-margin-before: 0;
 -webkit-margin-after: 0;
 left: 0;
 top: 0;
 & > img{
 display: inline-block;
 vertical-align: middle;
 }
 }
 }
 }
</style>

后來出現一個問題,有一類的單據的圖片存儲在數據庫中,之前的圖片都是存儲在服務器中,只需要傳入單據號查詢返回給我圖片路徑即可。

而存儲在數據庫當中不一樣,需要拼接路徑,一下是解決方法:

preview(){

 if(this.imgList.length > 0){
 this.imgList.map(item=>{
 item.furl = process.env.APP_EXCEL_PATH+'portal/gys/querydownloadPurchaFile?fileid='+ item.FILEID +'&gysdh='+item.CREATENAME //接口加入參
 })
 }
 this.num = this.imgList.length
 this.furl = this.imgList[0].furl
 this.changeColor = 0
},

一般情況下,圖片的預覽,圖片存儲在服務器中,數據庫中一般只存儲路徑。

總結

以上所述是小編給大家介紹的vue項目中實現圖片預覽的公用組件功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

vue項目中實現圖片預覽的公用組件功能

vue項目中實現圖片預覽的公用組件功能:今天產品提出了一個查看影像的功能需求。 在查看單據的列表中,有一列是影像字段,一開始根據單據號調用接口查看是否有圖片附件,如果有則彈出一個全屏的彈出層,如果沒有給出提示。而且,從列表進入詳情之后,附件那邊也會有一個查看影像的按鈕。 所以,根據
推薦度:
標簽: 圖片 功能 VUE
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 久久国产精品视频一区 | 久久久久久亚洲精品中文字幕 | 国产在线视频一区二区三区 | 一级黄网站 | 国产精品一区久久 | 在线视频一二三区 | 国产日韩欧美精品在线 | 日本欧美一区二区三区不卡视频 | 一级毛片免费看 | 欧美国产日韩另类 | 永久免费观看的毛片的网站 | 亚欧在线| 精品视频一区二区三区四区 | 国内精品久久久久久久97牛牛 | 免费观看国产一区二区三区 | 日韩欧美制服 | 国内精品一区二区三区 | 日韩国产欧美一区二区三区在线 | 亚洲国产精品免费观看 | 国产a久久精品一区二区三区 | 日本a级无毛 | 亚洲页码 | 欧美交配 | 精品国产日韩一区三区 | a男人的天堂久久a毛片 | 在线永久免费观看的毛片 | 日本aⅴ精品一区二区三区久久 | 亚洲国产精品欧美日韩一区二区 | 黄色毛片免费看 | 欧美性一区二区三区五区 | 日韩亚洲欧美一区二区三区 | 久久久国产这里有的是精品 | 一区二区三区在线观看免费 | 日韩国产欧美一区二区三区在线 | 欧美一区二区三区在线视频 | 亚洲综合欧美日韩 | 欧美精品三区 | 欧美人与性动交a欧美精品 欧美日本一道本 | 欧美日韩亚洲视频 | 另类亚洲色图 | 日韩欧美一区二区三区不卡视频 |