天天看點

html表格中圖檔顯示過大,在vue的Table的每個格子中顯示多張圖檔,并為這些圖檔設定圖檔檢視器,點選放大預覽...

一、安裝viewerjs依賴:

先npm install viewerjs --save,然後在main.js中寫:import Viewer from 'v-viewer'

import 'viewerjs/dist/viewer.css'

Vue.use(Viewer)

Vue.use(Viewer, {

defaultOptions: {

zIndex: 9999,

title: false

}

})

二、在表格的Columns的某個列寫(接口傳回的resultAnswer中如果有圖檔的話,以img标簽呈現):{

title: '答案',

minWidth: 170,

key: 'resultAnswer',

align: 'center',

render: (h, params) => {

if (params.row.resultAnswer && params.row.resultAnswer.indexOf('img') === -1) {// 沒圖檔

return h('div', {

domProps: {

innerHTML: params.row.resultAnswer

}

})

} else if (params.row.resultAnswer && params.row.resultAnswer.indexOf('img') !== -1) {// 有圖檔

var contentArr = []

var srcArr = this.getImg(params.row.resultAnswer)

var imgArr = []

srcArr.forEach((a) => {

imgArr.push(

h('img', {

attrs: {

src: a,

style: 'width: 20px;margin-right:6px'

}

})

)

})

contentArr.push(

h(

'viewer',

{

props: {

images: srcArr

}

},

imgArr

)

)

return h('div', contentArr)

}

}

}

三、在methods定義getImg方法,擷取圖檔src數組:getImg (html) {

var newHtml = []

// 比對圖檔(g表示比對所有結果,i表示區分大小寫)

var imgReg = /|\/>)/gi

// 比對src屬性

var srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i

var arr = html.match(imgReg)

for (var i = 0; i < arr.length; i++) {

var src = arr[i].match(srcReg)

// 擷取圖檔位址

newHtml.push(src[1])

}

return newHtml

}