qm-bus
Version:
千米公有云业务组件库
119 lines (110 loc) • 2.99 kB
JavaScript
import React, { Component } from 'react'
import { Checkbox } from 'antd'
import { QMImg, QMIcon } from 'qm-ui'
import { fromJS } from 'immutable'
export default class PicItem extends Component {
static defaultProps = {
submit: () => undefined,
}
constructor(props) {
super(props)
}
render() {
let _item = this.props.value.toJS()
let { limit, cellSelected: _selects } = this.props
let _checked = _selects.has(_item.id)
let _cateProps = {}
if (_item.isCate == 1) {
_cateProps.onClick = this._onCateClick.bind(this, _item)
} else {
_cateProps.onClick =
_selects.size >= limit && !_checked ? () => { } : this.onSelect.bind(this, _item)
}
let disabledProps = {}
if (_selects.size >= limit && !_checked) {
disabledProps = { disabled: true }
}
return (
<div className={_checked ? 'picture-item checked' : 'picture-item'} {..._cateProps}>
<Items item={_item} />
<h6 className="img-title" title={_item.name}>
{_item.name}
</h6>
{_item.isCate == 1 ? null : (
<Checkbox className="img-checkbox" checked={_checked} {...disabledProps} />
)}
</div>
)
}
/**
* 勾选
*/
onSelect = item => {
let { cellSelected, onCellSelect } = this.props
let _selects = cellSelected
if (_selects.has(item.id)) {
_selects = _selects.delete(item.id)
} else {
_selects = _selects.set(item.id, fromJS(item))
}
onCellSelect(_selects)
}
/**
*
* @param {*} _item
*/
_onCateClick(_item) {
this.props.onClick(_item.id)
this.props.onFormReset('simple')
this.props.elementOnChange({
index: 'cateId',
source: { index: 'cateId', value: _item.id, group: 'simple' },
})
this.props.onRefresh()
}
}
/**
* Image
*/
class Items extends React.Component {
static defaultProps = {
item: {},
preview: () => { },
}
render() {
const { item, click, preview } = this.props
if (item.isCate === '1') {
// folder
return (
<div className="img-shape" data-gh-name="进入文件夹" onClick={() => click(item)}>
<div className="img-box">
<span className="empty" />
<img src="//pic.qianmi.com/qmui/v0.2/img/folder.png" />
</div>
</div>
)
}
if (item.fileType === 'video') {
// video
return (
<div className="img-shape" onClick={() => preview(item)}>
<div className="video-box">
<video src={QMImg.src({ src: item.path })} preload="metadata" />
</div>
<div className="video-play">
<QMIcon type="qidong" style={{ color: '#fff' }} />
</div>
</div>
)
} else {
// image
return (
<div className="img-shape" onClick={() => preview(item)}>
<div className="img-box">
<QMImg src={item.path} />
</div>
</div>
)
}
}
}