From 1386b9fff21abc8f611c2a6c199581ea67efe315 Mon Sep 17 00:00:00 2001 From: Mr Ke <kelq@hugeinfo.com.cn> Date: Sun, 26 Apr 2020 16:40:55 +0800 Subject: [PATCH] 修复bug --- src/components/page/DocumentEditPage/index.jsx | 257 +++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 199 insertions(+), 58 deletions(-) diff --git a/src/components/page/DocumentEditPage/index.jsx b/src/components/page/DocumentEditPage/index.jsx index b75e628..8e58a85 100644 --- a/src/components/page/DocumentEditPage/index.jsx +++ b/src/components/page/DocumentEditPage/index.jsx @@ -6,12 +6,14 @@ /** Happy Coding */ import React, { ReactNode, ReactEventHandler, Component } from 'react'; -// import { Link } from 'react-router-dom'; -import { Card, Row, Col, Select, Button, Input, Upload, Icon, Spin } from 'antd'; +import { Card, Row, Col, Select, Button, Input, Upload, Icon, Spin, message } from 'antd'; +import E from 'wangeditor'; import './index.scss'; const Option = Select.Option; +const { TextArea } = Input; import fetch from '../../../api/request'; +import { BASE_URL } from '../../../api/httpurl' const param = [{ value: 'DT00002', name: '通知公告' }, { value: 'DT00001', name: '规章制度' }] export default class DocumentEditPage extends Component { @@ -20,79 +22,152 @@ this.config = { }; this.state = { - loading: false, - savedate: {}, - fileList: [], + loading: false,//页面加载loading + iconLoading: false,//提交按钮loading + saveData: {},//表单提交数据 + fileList: [],//附件列表 + disabled: false, + editorContent: null//富文本编辑内容 }; } componentWillMount() { } componentDidMount() { - // this.loadData() + this.initEditor(); + this.loadData() } + initEditor = () => { + const elem = this.refs.editorElem + const editor = new E(elem); + // 使用 onchange 函数监听内容的变化,并实时更新到 state 中 + editor.customConfig.onchange = html => { + this.setState({ + editorContent: html, + }) + } + editor.customConfig.uploadImgShowBase64 = true; // 使用 base64 保存图片 + editor.customConfig.showLinkImg = true; // 隐藏“网络图片”tab + editor.create(); + + } loadData = () => { - console.log('111') + const { id } = this.props.match.params; + console.log(this.props) + console.log(id) let _this = this; _this.setState({ - loading: true + loading: true, + disabled: id ? true : false }) fetch({ - url: 'api/document/getNewId', + url: 'api/document/findDetail', params: { - id: 'new' + id: id || 'new' } }).then(res => { console.log(res) _this.setState({ - savedate: res.content, + saveData: { + ...res, + documentType: res.documentType || 'DT00002' + }, loading: false, + fileList: res.attachmentList && res.attachmentList.map((a) => ({ ...a, key: a.id, uid: a.id, name: a.fileName + '.' + a.suffix, })) || [] }); }); } saveInputChange = ({ target: { value, name } }) => { - this.setState(({ savedate }) => ({ - savedate: { - ...savedate, + this.setState(({ saveData }) => ({ + saveData: { + ...saveData, [name]: value } })) } submit = () => { - const { savedate } = this.state; - console.log(savedate) - // Fetch.savePatrolCom(savedate) - // .then(res => { - // if (res.code === 0) { - // message.success("提交成功!"); - // this.props.history.push("/companyUpd") - // } else { - // message.error('保存失败,请联系管理员', 2) - // } - // }); + const { saveData, editorContent } = this.state; + console.log(saveData) + if (!saveData.documentTitle) { + return message.warning(this.switchWordByType(saveData.documentType).title + '标题不能为空'); + } + if (!editorContent) { + return message.warning('通知内容不能为空'); + } + let _this = this; + _this.setState({ + iconLoading: true + }) + fetch({ + url: 'api/document/saveOrUpdateNotice', + method: 'POST', + data: { + ...saveData, + documentContent: editorContent + } + }).then(res => { + console.log(res) + _this.setState({ + iconLoading: false, + }); + message.success("提交成功!"); + this.props.history.push("/index/rules") + }); + } cancle = () => { - this.props.history.push("/index/workbench"); + const { id } = this.props.match.params; + if (id) { + this.props.history.goBack() + } else { + this.props.history.push("/index/workbench"); + } + } + + // wen + switchWordByType = (type) => { + switch (type) { + case 'DT00002': + return { + title: '通知', + associateId: 1001 + }; + case 'DT00001': + return { + title: '规章制度', + associateId: 1002 + } + } } render() { - const { savedate, fileList, loading } = this.state; + const { saveData, fileList, loading, disabled } = this.state; const props = { - action: `api/v1/attachment/materials?associateTypeId=1019&entityId=` + savedate.id, + action: BASE_URL + `api/attachment/materials?associateId=${saveData.documentType == 'DT00002' ? 1001 : 1002}&entityId=` + saveData.id, + header: { + Authorization: window.localStorage.getItem('token') + }, onChange: ({ file, fileList }) => { - if (file.status !== 'uploading') { - console.log(file); - console.log(fileList); - - } + fileList = fileList.slice(-2); + fileList = fileList.map(file => { + if (file.response) { + // Component will show file.url as link + file.url = file.response.data[0].url; + } + return file; + }); this.setState({ fileList }); }, fileList: fileList, + onPreview: (file) => { + window.open(file.url); + }, + showUploadList: { showPreviewIcon: true, showDownloadIcon: false, showRemoveIcon: disabled ? false : true } // onDownload: (file) => { // console.log(file) // Fetch.attachmentDownload(file.uid) @@ -115,18 +190,20 @@ // }); // } }; + return ( <div className="document-edit-page-main"> <Spin spinning={loading}> + <Card style={{ border: 20, margin: 20, padding: 20 }}> <Row gutter={16}> - <Col className="gutter-row" > + <Col className="gutter-row marginTop" > 文档类型: - </Col> + </Col> </Row> <Row gutter={16}> - <Col className="gutter-row" style={{ margin: '12px 0' }} > - <Select style={{ width: "300px" }} onChange={(value) => this.saveInputChange({ target: { name: 'documentType', value } })} value={savedate.documentType || "DT00002"}> + <Col className="gutter-row marginTB"> + <Select placeholder="请选择" disabled={disabled} style={{ width: "300px" }} onChange={(value) => this.saveInputChange({ target: { name: 'documentType', value } })} value={saveData.documentType}> { param.map((data, key) => ( <Option key={key} value={data.value}>{data.name}</Option> @@ -136,38 +213,102 @@ </Col> </Row> - <Row gutter={16} style={{ marginTop: '12px' }}> - <Col className="gutter-row" style={{ marginTop: '12px' }}> - 规章制度标题: - </Col> + <Row gutter={16} className="marginTop"> + <Col className="gutter-row marginTop"> + {saveData.documentType && this.switchWordByType(saveData.documentType).title}标题: + </Col> </Row> + <Row gutter={16}> - <Col className="gutter-row" style={{ margin: '12px 0' }} > - <Input style={{ width: '300px' }} name='documentItle' onChange={this.saveInputChange} value={savedate.documentItle || ""} /> + <Col className="gutter-row marginTB"> + <Input placeholder="请输入" disabled={disabled} style={{ width: '300px' }} name='documentTitle' onChange={this.saveInputChange} value={saveData.documentTitle || ""} /> </Col> </Row> - <Row gutter={16} style={{ marginTop: '12px' }}> - <Col className="gutter-row" style={{ margin: '12px 0' }} > - 规章制度源文件: - </Col> + <Row gutter={16}> + <Col className="gutter-row marginTop"> + 通知内容: + </Col> </Row> + + <div ref="editorElem" className="marginTB"> + </div> + + <Row gutter={16}> + <Col className="gutter-row marginTop"> + 附件: + </Col> + </Row> + <Row gutter={16} > - <Col className="gutter-row" > - <Upload {...props}> - <Button> + <Col className="gutter-row marginTB" > + <Upload {...props} > + <Button disabled={disabled} style={{ display: disabled ? 'none' : 'inline-block' }}> <Icon type="upload" />上传文件</Button> </Upload> </Col> </Row> - <Row gutter={16} style={{ marginTop: '12px' }}> - <Col className="gutter-row" > - 支持扩展名:.pdf - </Col> - </Row> - <Row gutter={16} style={{ marginTop: '12px' }}> - <Col span={2} className="gutter-row" ><Button style={{ marginRight: '15px', width: '100px' }} type="primary" onClick={this.submit}>发布</Button></Col> - <Col span={2} className="gutter-row" ><Button style={{ marginLeft: '15px', width: '100px' }} onClick={this.cancle}>返回</Button></Col> + + {/* { + saveData.documentType == 'DT00002' && + <Row gutter={16}> + <Col className="gutter-row marginTop"> + 通知内容: + </Col> + </Row> + } + { + saveData.documentType == 'DT00002' && + <Row gutter={16}> + <Col className="gutter-row" style={{ margin: '12px 0' }} > + <TextArea disabled={disabled} style={{ width: '500px' }} name='documentContent' onChange={this.saveInputChange} value={saveData.documentContent || ""} /> + </Col> + </Row> + } + { + saveData.documentType == 'DT00001' && + <Row gutter={16} style={{ marginTop: '12px' }}> + <Col className="gutter-row" style={{ margin: '12px 0' }} > + 规章制度源文件: + </Col> + </Row> + } + {saveData.documentType == 'DT00001' && + <Row gutter={16} > + <Col className="gutter-row" > + <Upload {...props} > + <Button disabled={disabled} style={{ display: disabled ? 'none' : 'inline-block' }}> + <Icon type="upload" />上传文件</Button> + </Upload> + </Col> + </Row> + } + { + saveData.documentType == 'DT00001' && + <Row gutter={16} style={{ marginTop: '12px' }}> + <Col className="gutter-row" > + 通知范围: + </Col> + </Row> + } + { + saveData.documentType == 'DT00002' && + <Row gutter={16} style={{ marginTop: '12px' }}> + <Col className="gutter-row" style={{ margin: '12px 0' }} > + 通知范围: + </Col> + </Row> + } + {saveData.documentType == 'DT00002' && + <Row gutter={16} > + <Col className="gutter-row" > + 目前仅支持全员通知 + </Col> + </Row> + } */} + <Row type="flex" gutter={20} style={{ marginTop: '12px' }}> + <Col className="gutter-row" ><Button onClick={this.cancle}>返回</Button></Col> + <Col className="gutter-row" ><Button disabled={disabled} type="primary" loading={this.state.iconLoading} onClick={this.submit}>发布</Button></Col> </Row> </Card> </Spin> -- Gitblit v1.8.0