| | |
| | | import PropTypes from 'prop-types' |
| | | import { is, fromJS } from 'immutable' |
| | | import { Input, Form, Row, Col, Pagination, Empty, Button, Modal, notification } from 'antd' |
| | | import { PlusOutlined } from '@ant-design/icons' |
| | | |
| | | import Api from '@/api' |
| | | import Utils from '@/utils/utils.js' |
| | |
| | | |
| | | class PopSource extends Component { |
| | | static propTpyes = { |
| | | btnlog: PropTypes.array, |
| | | keyword: PropTypes.string, |
| | | handlelog: PropTypes.func |
| | | keyword: PropTypes.string |
| | | } |
| | | |
| | | state = { |
| | |
| | | |
| | | UNSAFE_componentWillMount () { |
| | | if (this.props.keyword === 'system') { |
| | | this.init() |
| | | this.preInit() |
| | | } |
| | | } |
| | | |
| | |
| | | if (_form && _form.focus) { |
| | | _form.focus() |
| | | } |
| | | } catch {} |
| | | } catch (e) {} |
| | | } |
| | | |
| | | shouldComponentUpdate (nextProps, nextState) { |
| | | return !is(fromJS(this.state), fromJS(nextState)) |
| | | } |
| | | |
| | | init = () => { |
| | | preInit = () => { |
| | | const { type } = this.props |
| | | |
| | | let originlist = [] |
| | | if (type === 'video') { |
| | | let videos = sessionStorage.getItem('app_videos') |
| | | try { |
| | | originlist = JSON.parse(videos) |
| | | } catch { |
| | | originlist = [] |
| | | } |
| | | } else { |
| | | let pictures = sessionStorage.getItem('app_pictures') |
| | | try { |
| | | originlist = JSON.parse(pictures) |
| | | } catch { |
| | | originlist = [] |
| | | } |
| | | } |
| | | let _type = type === 'video' ? 'video' : 'image' |
| | | let _sname = type === 'video' ? 'app_videos' : 'app_pictures' |
| | | |
| | | this.getSource(_type, _sname).then(res => { |
| | | this.init(res) |
| | | }) |
| | | } |
| | | |
| | | getSource = (type, sessionName) => { |
| | | return new Promise(resolve => { |
| | | if (window.GLOB[sessionName]) { |
| | | resolve(window.GLOB[sessionName]) |
| | | } else { |
| | | let param = { |
| | | func: 's_url_db_adduptdel', |
| | | PageIndex: 0, // 0 代表全部 |
| | | PageSize: 0, // 0 代表全部 |
| | | type: 'search', |
| | | typecharone: type |
| | | } |
| | | Api.getCloudConfig(param).then(res => { |
| | | let data = res.data || [] |
| | | window.GLOB[sessionName] = data |
| | | |
| | | resolve(data) |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | init = (originlist) => { |
| | | let list = originlist |
| | | let pagelist = list.filter((item, index) => index < this.state.pageSize) |
| | | |
| | |
| | | res.id = Utils.getuuid() |
| | | } |
| | | |
| | | Api.getSystemConfig({ |
| | | Api.getCloudConfig({ |
| | | func: 's_url_db_adduptdel', |
| | | id: res.id, |
| | | PageIndex: 0, // 0 代表全部 |
| | |
| | | }).then(result => { |
| | | if (result.status) { |
| | | if (card.typecharone === 'image') { |
| | | sessionStorage.setItem('app_pictures', JSON.stringify(result.data || [])) |
| | | this.init() |
| | | window.GLOB.app_pictures = result.data || [] |
| | | this.init(result.data || []) |
| | | } else { |
| | | sessionStorage.setItem('app_videos', JSON.stringify(result.data || [])) |
| | | this.init() |
| | | window.GLOB.app_videos = result.data || [] |
| | | this.init(result.data || []) |
| | | } |
| | | this.setState({editvisible: false}) |
| | | } else { |
| | |
| | | |
| | | return ( |
| | | <div className="mk-source-pop-wrap"> |
| | | {keyword === 'input' ? <Form.Item label="地址" labelCol={{xs: { span: 24 }, sm: { span: 4 }}} wrapperCol={{xs: { span: 24 }, sm: { span: 20 }}}> |
| | | {keyword === 'input' ? <Form.Item label="地址" help="可使用@mywebsite@代替域名(含虚拟目录),如:@mywebsite@/Content/images/xxx.jpg" labelCol={{xs: { span: 24 }, sm: { span: 4 }}} wrapperCol={{xs: { span: 24 }, sm: { span: 20 }}}> |
| | | <TextArea id="source-input" value={url} rows={4} onChange={this.changeValue}/> |
| | | </Form.Item> : null} |
| | | {keyword === 'upload' ? <Form.Item label="上传" labelCol={{xs: { span: 24 }, sm: { span: 4 }}} wrapperCol={{xs: { span: 24 }, sm: { span: 20 }}}> |
| | | <FileUpload config={{ |
| | | initval: '', |
| | | suffix: type === 'video' ? '.mp4,.webm,.ogg' : '.jpg,.png,.gif,.pjp,.pjpeg,.jpeg,.jfif,.webp', |
| | | suffix: type === 'video' ? '.mp4,.webm,.ogg' : '.jpg,.png,.gif,.pjp,.pjpeg,.jpeg,.jfif,.webp,.ico', |
| | | maxfile: 1, |
| | | fileType: type === 'video' ? 'text' : 'picture' |
| | | }} onChange={this.changeFile} /> |
| | | </Form.Item> : null} |
| | | {keyword === 'system' ? |
| | | <Search value={searchKey} placeholder="" onChange={(e) => this.setState({searchKey: e.target.value})} onSearch={this.changeSearch} enterButton/> : null} |
| | | {keyword === 'system' ? <Button className="picture-plus mk-green" icon="plus" onClick={() => this.handleSource({typecharone: type})}> |
| | | 添加 |
| | | {keyword === 'system' ? <Button className="picture-plus mk-green" onClick={() => this.handleSource({typecharone: type})}> |
| | | <PlusOutlined /> 添加 |
| | | </Button> : null} |
| | | {keyword === 'system' && list.length ? |
| | | <Row gutter={16} style={{minHeight: '250px'}}> |