From 2ea56ed08b58386f0612635101b1acd51cd4a44c Mon Sep 17 00:00:00 2001
From: Mr Ke <kelq@hugeinfo.com.cn>
Date: Wed, 29 Apr 2020 18:06:45 +0800
Subject: [PATCH] 浏览日志,操作日志;用户中心(个人信息);用户管理(用户中心)
---
src/components/page/DocumentEditPage/index.jsx | 268 +++++++++++++++++++++++++++++-----------------------
1 files changed, 149 insertions(+), 119 deletions(-)
diff --git a/src/components/page/DocumentEditPage/index.jsx b/src/components/page/DocumentEditPage/index.jsx
index e5f073a..8543d5c 100644
--- a/src/components/page/DocumentEditPage/index.jsx
+++ b/src/components/page/DocumentEditPage/index.jsx
@@ -6,14 +6,16 @@
/** 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, message } from 'antd';
-import './index.scss';
+import BraftEditor from 'braft-editor'
const Option = Select.Option;
const { TextArea } = Input;
+import './index.scss';
+import 'braft-editor/dist/index.css'
import fetch from '../../../api/request';
-import { BASE_URL } from '../../../api/httpurl'
+import { BASE_URL } from '../../../api/httpurl';
+import { emoveTAG } from '../../../utils/utils';
const param = [{ value: 'DT00002', name: '通知公告' }, { value: 'DT00001', name: '规章制度' }]
export default class DocumentEditPage extends Component {
@@ -22,11 +24,13 @@
this.config = {
};
this.state = {
- loading: false,
- iconLoading: false,
- savedate: {},
- fileList: [],
+ loading: false,//页面加载loading
+ iconLoading: false,//提交按钮loading
+ saveData: {},//表单提交数据
+ fileList: [],//附件列表
disabled: false,
+ editorContent: '',//富文本编辑内容
+ editorState: BraftEditor.createEditorState(null)
};
}
@@ -38,8 +42,6 @@
loadData = () => {
const { id } = this.props.match.params;
- console.log(this.props)
- console.log(id)
let _this = this;
_this.setState({
loading: true,
@@ -51,40 +53,36 @@
id: id || 'new'
}
}).then(res => {
- console.log(res)
- _this.setState({
- savedate: {
- ...res,
- documentType: res.documentType || 'DT00002'
- },
- loading: false,
- });
+ if (res) {
+ _this.setState({
+ 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)
- if (savedate.documentType == 'DT00001') {
- if (!savedate.documentTitle) {
- return message.warning('规章制度标题不能为空')
- }
- } else {
- if (!savedate.documentTitle) {
- return message.warning('通知标题不能为空')
- } else if (!savedate.documentContent) {
- return message.warning('通知内容不能为空')
- }
+ let { saveData, editorContent } = this.state;
+ // editorContent = emoveTAG(editorContent);
+ if (!saveData.documentTitle) {
+ return message.warning(this.switchWordByType(saveData.documentType).title + '标题不能为空');
+ }
+ if (!emoveTAG(editorContent)) {
+ return message.warning('通知内容不能为空');
}
let _this = this;
_this.setState({
@@ -93,83 +91,100 @@
fetch({
url: 'api/document/saveOrUpdateNotice',
method: 'POST',
- data: savedate
+ data: {
+ ...saveData,
+ documentContent: editorContent
+ }
}).then(res => {
- console.log(res)
_this.setState({
iconLoading: false,
});
+ if (res) {
+ message.success("提交成功!");
+ this.props.history.push(this.switchWordByType(saveData.documentType).href);
+ }
});
- // Fetch.savePatrolCom(savedate)
- // .then(res => {
- // if (res.code === 0) {
- // message.success("提交成功!");
- // this.props.history.push("/companyUpd")
- // } else {
- // message.error('保存失败,请联系管理员', 2)
- // }
- // });
}
cancle = () => {
- // this.props.history.push("/index/workbench");
const { id } = this.props.match.params;
- if(id){
+ if (id) {
this.props.history.goBack()
- }else {
+ } else {
this.props.history.push("/index/workbench");
}
- // console.log(this.props)
+ }
+
+ // wen
+ switchWordByType = (type) => {
+ switch (type) {
+ case 'DT00002':
+ return {
+ title: '通知',
+ associateId: 1001,
+ href: '/index/workbench/announcement'
+ };
+ case 'DT00001':
+ return {
+ title: '规章制度',
+ associateId: 1002,
+ href: '/index/rules'
+ }
+ }
+ }
+
+ handleChange = (editorState) => {
+ console.log('htnl', editorState.toHTML())
+ this.setState({ editorState, editorContent: editorState.toHTML() })
}
render() {
- const { savedate, fileList, loading, disabled } = this.state;
+ const { saveData, fileList, loading, disabled } = this.state;
const props = {
- action: BASE_URL + `api/attachment/materials?associateId=${savedate.documentType == 'DT00002' ? 1001 : 1002}&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,
- // onDownload: (file) => {
- // console.log(file)
- // Fetch.attachmentDownload(file.uid)
- // .then(res => {
- // message.success("下载成功!");
- // });
- // },
- // onRemove: (file) => {
- // Fetch.deleteAttachment(file.uid)
- // .then(res => {
- // message.success("移除成功!");
- // });
- // this.setState(({ fileList }) => {
- // const index = fileList.indexOf(file);
- // const newFileList = fileList.slice();
- // newFileList.splice(index, 1);
- // return {
- // fileList: newFileList,
- // };
- // });
- // }
+ onPreview: (file) => {
+ window.open(file.url);
+ },
+ showUploadList: { showPreviewIcon: true, showDownloadIcon: false, showRemoveIcon: disabled ? false : true }
};
+
+ //指定编辑器工具栏的控件列表
+ const controls = ['undo', 'redo', 'separator',
+ 'headings', 'separator', 'font-size', 'line-height', 'letter-spacing', 'separator',
+ 'text-color', 'bold', 'italic', 'underline', 'strike-through', 'separator', 'text-indent', 'text-align', 'separator',
+ 'list-ul', 'list-ol', 'blockquote', 'code', 'separator',
+ 'link', 'separator', 'hr', 'separator',
+ 'media', 'separator', 'remove-styles',
+ 'clear'];
+
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 disabled={disabled} style={{ width: "300px" }} onChange={(value) => this.saveInputChange({ target: { name: 'documentType', value } })} value={savedate.documentType}>
+ <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>
@@ -179,64 +194,79 @@
</Col>
</Row>
- {
- savedate.documentType == 'DT00002' &&
- <Row gutter={16} style={{ marginTop: '12px' }}>
- <Col className="gutter-row" style={{ marginTop: '12px' }}>
- 通知标题:
+ <Row gutter={16} className="marginTop">
+ <Col className="gutter-row marginTop">
+ {saveData.documentType && this.switchWordByType(saveData.documentType).title}标题:
</Col>
- </Row>
- }
- {
- savedate.documentType == 'DT00001' &&
- <Row gutter={16} style={{ marginTop: '12px' }}>
- <Col className="gutter-row" style={{ marginTop: '12px' }}>
- 规章制度标题:
- </Col>
- </Row>
- }
+ </Row>
+
<Row gutter={16}>
- <Col className="gutter-row" style={{ margin: '12px 0' }} >
- <Input disabled={disabled} style={{ width: '300px' }} name='documentTitle' onChange={this.saveInputChange} value={savedate.documentTitle || ""} />
+ <Col className="gutter-row marginTB">
+ <Input placeholder="请输入" disabled={disabled} style={{ width: '300px' }} name='documentTitle' onChange={this.saveInputChange} value={saveData.documentTitle || ""} />
</Col>
</Row>
- {
- savedate.documentType == 'DT00002' &&
+ <Row gutter={16}>
+ <Col className="gutter-row marginTop">
+ 通知内容:
+ </Col>
+ </Row>
+ {/*
+ <div ref="editorElem" className="marginTB">
+ </div> */}
+ <BraftEditor value={this.state.editorState} onChange={this.handleChange} controls={controls} className="marginTB BraftEditor-style" />
+
+ <Row gutter={16}>
+ <Col className="gutter-row marginTop">
+ 附件:
+ </Col>
+ </Row>
+
+ <Row gutter={16} >
+ <Col className="gutter-row marginTB" >
+ <Upload {...props} >
+ <Button disabled={disabled} style={{ display: disabled ? 'none' : 'inline-block' }}>
+ <Icon type="upload" />上传文件</Button>
+ </Upload>
+ </Col>
+ </Row>
+
+ {/* {
+ saveData.documentType == 'DT00002' &&
<Row gutter={16}>
- <Col className="gutter-row" >
+ <Col className="gutter-row marginTop">
通知内容:
- </Col>
- </Row>
- }
- {
- savedate.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={savedate.documentContent || ""} />
</Col>
</Row>
}
{
- savedate.documentType == 'DT00001' &&
+ 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>
}
- {savedate.documentType == 'DT00001' &&
+ {saveData.documentType == 'DT00001' &&
<Row gutter={16} >
<Col className="gutter-row" >
- <Upload disabled={disabled} {...props}>
- <Button>
+ <Upload {...props} >
+ <Button disabled={disabled} style={{ display: disabled ? 'none' : 'inline-block' }}>
<Icon type="upload" />上传文件</Button>
</Upload>
</Col>
</Row>
}
{
- savedate.documentType == 'DT00001' &&
+ saveData.documentType == 'DT00001' &&
<Row gutter={16} style={{ marginTop: '12px' }}>
<Col className="gutter-row" >
通知范围:
@@ -244,23 +274,23 @@
</Row>
}
{
- savedate.documentType == 'DT00002' &&
+ saveData.documentType == 'DT00002' &&
<Row gutter={16} style={{ marginTop: '12px' }}>
<Col className="gutter-row" style={{ margin: '12px 0' }} >
通知范围:
</Col>
</Row>
}
- {savedate.documentType == 'DT00002' &&
+ {saveData.documentType == 'DT00002' &&
<Row gutter={16} >
<Col className="gutter-row" >
目前仅支持全员通知
</Col>
</Row>
- }
- <Row gutter={16} style={{ marginTop: '12px' }}>
- <Col span={2} className="gutter-row" ><Button disabled={disabled} style={{ marginRight: '15px', width: '100px' }} type="primary" loading={this.state.iconLoading} onClick={this.submit}>发布</Button></Col>
- <Col span={2} className="gutter-row" ><Button style={{ marginLeft: '15px', width: '100px' }} onClick={this.cancle}>返回</Button></Col>
+ } */}
+ <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