forge
caicai8 5 years ago
parent 63182747f7
commit c7dbe2466d

@ -1,15 +1,12 @@
import React, { Component } from 'react'; import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import { Spin } from 'antd'; import { Spin } from 'antd';
class Loading extends Component { class Loading extends Component {
componentDidUpdate(prevProps, prevState) { componentDidUpdate(prevProps, prevState) {
if (!prevProps.error && this.props.error) { if (!prevProps.error && this.props.error) {
console.log(this.props.error) console.log(this.props.error)
window.location.reload() window.location.reload()
} }
} }
render() { render() {

@ -9,10 +9,17 @@ import {Modal, Col, Form, Input, Tooltip, Popconfirm, Pagination , Spin} from '
import NoneData from '../../modules/courses/coursesPublic/NoneData'; import NoneData from '../../modules/courses/coursesPublic/NoneData';
import Attachments from '../Upload/attachment'; import Attachments from '../Upload/attachment';
import QuillForEditor from '../quillForEditor'; import QuillForEditor from '../quillForEditor';
import { QuillDeltaToHtmlConverter } from 'quill-delta-to-html'
const TextArea = Input.TextArea; const TextArea = Input.TextArea;
const options = [
['bold', 'italic', 'underline'],
[{header: [1,2,3,false]}],
['blockquote', 'code-block'],
['link', 'image'],
['formula']
];
class Detail extends Component{ class Detail extends Component{
constructor(props){ constructor(props){
@ -33,7 +40,9 @@ class Detail extends Component{
page:1, page:1,
search_count:undefined, search_count:undefined,
isSpin:false, isSpin:false,
showFiles: true showFiles: true,
quillValue:'',
quillFlag:false
} }
} }
@ -75,12 +84,26 @@ class Detail extends Component{
//添加评论 //添加评论
addjournals=()=>{ addjournals=()=>{
const { quillValue } = this.state;
if(!quillValue){
this.setState({
quillFlag:true
})
return;
}
let _html = '';
try {
_html = new QuillDeltaToHtmlConverter(quillValue.ops, {}).convert();
} catch (error) {
console.log(error);
}
this.props.form.validateFieldsAndScroll((err, values) => { this.props.form.validateFieldsAndScroll((err, values) => {
if(!err){ if(!err){
const { data, page, limit, fileList } = this.state; const { data, page, limit, fileList } = this.state;
const url = `/issues/${data.id}/journals.json`; const url = `/issues/${data.id}/journals.json`;
axios.post(url,{ axios.post(url,{
...values, ...values,
content:_html,
issue_id:data.id, issue_id:data.id,
attachment_ids:fileList attachment_ids:fileList
}).then(result=>{ }).then(result=>{
@ -89,7 +112,8 @@ class Detail extends Component{
content: "" content: ""
}); });
this.setState({ this.setState({
showFiles: false showFiles: false,
quillValue:''
}) })
this.getjournalslist(page, limit); this.getjournalslist(page, limit);
this.props.showNotification("评论成功!"); this.props.showNotification("评论成功!");
@ -216,7 +240,7 @@ class Detail extends Component{
} }
renderJournalList=(list)=>{ renderJournalList=(list)=>{
console.log(list); // console.log(list);
if(list && list.length >0){ if(list && list.length >0){
return( return(
list.map((item,key)=>{ list.map((item,key)=>{
@ -281,10 +305,16 @@ class Detail extends Component{
showFiles:flag showFiles:flag
}) })
} }
onContentChange=(value)=>{
this.setState({
quillValue:value
})
}
render(){ render(){
const { projectsId,orderId} = this.props.match.params; const { projectsId,orderId} = this.props.match.params;
const { data,journalsdata, page, limit, search_count, isSpin, isedit, showFiles } = this.state; const { data,journalsdata, page, limit, search_count, isSpin, isedit, showFiles , quillValue , quillFlag } = this.state;
const { getFieldDecorator } = this.props.form; const { getFieldDecorator } = this.props.form;
const { current_user } = this.props; const { current_user } = this.props;
const Paginations = ( const Paginations = (
@ -326,7 +356,10 @@ class Detail extends Component{
<div style={{display: (isedit && isedit === item.id) ? "none" : "block"}} > <div style={{display: (isedit && isedit === item.id) ? "none" : "block"}} >
{ {
item.content ? item.content ?
<div>{item.content}</div> <QuillForEditor
readOnly={true}
value={item.content}
/>
: :
<div> <div>
{this.renderJournalList(item.journal_details)} {this.renderJournalList(item.journal_details)}
@ -371,6 +404,8 @@ class Detail extends Component{
} }
} }
return( return(
<div className="main"> <div className="main">
<div className="topWrapper"> <div className="topWrapper">
@ -436,28 +471,26 @@ class Detail extends Component{
<div className="df"> <div className="df">
<Link to={``}><img className="user_img" src={getImageUrl(`images/${current_user && current_user.image_url}`)} alt=""/></Link> <Link to={``}><img className="user_img" src={getImageUrl(`images/${current_user && current_user.image_url}`)} alt=""/></Link>
<div className="new_context"> <div className="new_context">
<Form.Item> <div className="quillContent">
{getFieldDecorator('content', { <QuillForEditor
rules: [{ imgAttrs={{ width: '60px', height: '30px' }}
required: true, message: '请输入内容' wrapStyle={{
}], height: '200px',
})( opacity:1,
<QuillForEditor }}
imgAttrs={{ width: '60px', height: '30px' }} autoFocus={true}
wrapStyle={{ style={{ height: '150px' }}
height: '200px', placeholder="添加评论..."
opacity:1, options={options}
}} value={quillValue}
autoFocus={true} onContentChange={this.onContentChange}
style={{ height: '150px' }} // showUploadImage={handleShowImage}
placeholder="添加评论..." // onContentChange={handleContentChange}
// options={options} />
value={'ctx'} <p className="quillFlag">
// showUploadImage={handleShowImage} { quillFlag && <span className="">请输入评论内容</span>}
// onContentChange={handleContentChange} </p>
/> </div>
)}
</Form.Item>
<UploadComponent load={this.UploadFunc} isComplete={showFiles} changeIsComplete={this.changeIsComplete}></UploadComponent> <UploadComponent load={this.UploadFunc} isComplete={showFiles} changeIsComplete={this.changeIsComplete}></UploadComponent>
<p className="clearfix mt15"> <p className="clearfix mt15">
<a className="topWrapper_btn fr" type="submit" onClick={this.addjournals}>评论</a> <a className="topWrapper_btn fr" type="submit" onClick={this.addjournals}>评论</a>

@ -12,22 +12,8 @@ import axios from 'axios';
const Option = Select.Option; const Option = Select.Option;
const TextArea = Input.TextArea; const TextArea = Input.TextArea;
{/* <QuillForEditor
imgAttrs={{ width: '60px', height: '30px' }}
wrapStyle={{
height: showQuill ? 'auto' : '0px',
opacity: showQuill ? 1 : 0,
overflow: showQuill ? 'none' : 'none',
transition: 'all 0.3s'
}}
autoFocus={focus}
style={{ height: '150px' }}
placeholder="说点儿什么~"
options={options}
value={ctx}
showUploadImage={handleShowImage}
onContentChange={handleContentChange}
/> */}
class New extends Component{ class New extends Component{
constructor(props){ constructor(props){
super(props); super(props);

@ -6,7 +6,18 @@
border-bottom: 1px solid #EEEEEE; border-bottom: 1px solid #EEEEEE;
flex-wrap: wrap; flex-wrap: wrap;
} }
.quillContent{
position: relative;
margin-bottom: 4px;
}
.quillFlag{
position: absolute;
bottom:0px;
left:6px;
height: 20px;
line-height: 18px;
color: red;
}
.topmilepost{ .topmilepost{
padding: 20px 0; padding: 20px 0;
box-sizing: border-box; box-sizing: border-box;
@ -354,9 +365,9 @@
width: 80%; width: 80%;
padding-left: 80px; padding-left: 80px;
} }
.detail_ptitlecount{ /* .detail_ptitlecount{
padding: 15px; padding: 15px;
} } */
.tagList > div:last-child{ .tagList > div:last-child{
border-bottom: none; border-bottom: none;

@ -177,7 +177,7 @@ function QuillForEditor ({
const result = await fetchUploadImage(formData); const result = await fetchUploadImage(formData);
// 获取上传图片的url // 获取上传图片的url
if (result.data && result.data.id) { if (result.data && result.data.id) {
fileUrl = getImageUrl(`api/attachments/${result.data.id}`); fileUrl = `http://123.59.135.93:56666/api/attachments/${result.data.id}`;
} }
// 根据id获取文件路径 // 根据id获取文件路径
const { width, height } = imgAttrs; const { width, height } = imgAttrs;

@ -14,6 +14,9 @@
content: '12px'; content: '12px';
font-size: 12px; font-size: 12px;
} }
.ql-toolbar.ql-snow{
padding:0px 8px;
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="14px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="14px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="14px"]::before { .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="14px"]::before {
content: '14px'; content: '14px';

Loading…
Cancel
Save