qm-ui
Version:
千米公有云管理端UI基础组件库
74 lines (64 loc) • 1.97 kB
JavaScript
/**
* @author gcy[of1518]
* @date 17/2/15
* @description
*/
import React, { Component } from 'react'
import QMConst from './QMConst'
import { splitObject } from './_util/ObjectUtil'
//default src
const DS = '//img.1000.com/qm-a-img/prod/default.jpeg'
export default class QMImg extends Component {
constructor(props) {
super(props)
}
render() {
let [{ src, host, rule }, props] = splitObject(this.props, ['src', 'host', 'rule'])
return <img {...props} src={getPath({ host, src, rule })} />
}
}
/**
* 包装img url
* 支持格式如下:
* 千米图片地址:
* 878358/e363762b1ec888af132b7ff16aaa556b.jpg
* /878358/e363762b1ec888af132b7ff16aaa556b.jpg
* //img.1000.com/qm-a-img/prod/1201533/57a62165494972d8090e40dc32a2c2ff.jpg
* http://img.1000.com/qm-a-img/prod/1201533/57a62165494972d8090e40dc32a2c2ff.jpg
*
* 外部地址:
* http://img12.360buyimg.com/n12/jfs/t5149/305/968034028/176199/ed4464cb/5909afaaNcc2ced8e.jpg
*
* 千米图片地址支持Rule,外部地址不支持Rule
*
* @param {Object} opt
*/
const getPath = opt => {
let { host, src, rule } = opt || {}
if (!src) {
// 地址为空时使用默认图片
return DS + (rule || '')
} else if (src.includes('//')) {
// 绝对路径
let domain = QMConst.get(['host', 'v_oss_domain_img'])
// 千米图片服务器支持Rule,其他(如: 京东、淘宝、天猫)Rule语法不同,不支持Rule
if (domain && src.includes(domain)) {
return src + (rule || '')
}
return src
} else {
// 相对路径
let domain = QMConst.get(['host', 'v_oss_domain_img']) || ''
let path = host || QMConst.get(['host', 'v_oss_path_img']) || ''
// 以"/"开头的,去掉"/"
if (src.substr(0, 1) == '/') {
src = src.substr(1)
}
let url = src || DS
if (url && typeof url == 'string') {
url = domain + path.replace('${filePath}', url)
}
return url + (rule || '')
}
}
QMImg.src = getPath