|
|
@ -1,5 +1,5 @@
|
|
|
|
import '../../katex.css';
|
|
|
|
import '../../katex.css';
|
|
|
|
import React,{ Component } from "react";
|
|
|
|
import React, { Component } from "react";
|
|
|
|
import { getImageUrl, markdownToHTML, WordsBtn, getUrl } from 'educoder';
|
|
|
|
import { getImageUrl, markdownToHTML, WordsBtn, getUrl } from 'educoder';
|
|
|
|
import { Tooltip } from 'antd';
|
|
|
|
import { Tooltip } from 'antd';
|
|
|
|
import TPMMDEditor from '../../../tpm/challengesnew/TPMMDEditor';
|
|
|
|
import TPMMDEditor from '../../../tpm/challengesnew/TPMMDEditor';
|
|
|
@ -14,8 +14,8 @@ const _origin = ''
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
const ACCEPT = 3
|
|
|
|
const ACCEPT = 3
|
|
|
|
const REFUSE = 4
|
|
|
|
const REFUSE = 4
|
|
|
|
class CCommentItem extends Component{
|
|
|
|
class CCommentItem extends Component {
|
|
|
|
constructor(props){
|
|
|
|
constructor(props) {
|
|
|
|
super(props);
|
|
|
|
super(props);
|
|
|
|
|
|
|
|
|
|
|
|
this.state = {
|
|
|
|
this.state = {
|
|
|
@ -45,8 +45,8 @@ class CCommentItem extends Component{
|
|
|
|
<div>是否确认撤销申诉</div>
|
|
|
|
<div>是否确认撤销申诉</div>
|
|
|
|
</div>,
|
|
|
|
</div>,
|
|
|
|
onOk: () => {
|
|
|
|
onOk: () => {
|
|
|
|
let studentWorkId =this.props.match.params.studentWorkId;
|
|
|
|
let studentWorkId = this.props.match.params.studentWorkId;
|
|
|
|
let { item, commentIndex }=this.props;
|
|
|
|
let { item, commentIndex } = this.props;
|
|
|
|
|
|
|
|
|
|
|
|
const url = `/student_works/${studentWorkId}/cancel_appeal.json`
|
|
|
|
const url = `/student_works/${studentWorkId}/cancel_appeal.json`
|
|
|
|
axios.post(url, {
|
|
|
|
axios.post(url, {
|
|
|
@ -65,10 +65,10 @@ class CCommentItem extends Component{
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
onSubmit = () => {
|
|
|
|
onSubmit = () => {
|
|
|
|
let workId=this.props.match.params.workId;
|
|
|
|
let workId = this.props.match.params.workId;
|
|
|
|
let studentWorkId =this.props.match.params.studentWorkId;
|
|
|
|
let studentWorkId = this.props.match.params.studentWorkId;
|
|
|
|
|
|
|
|
|
|
|
|
let { item, commentIndex }=this.props;
|
|
|
|
let { item, commentIndex } = this.props;
|
|
|
|
if (!this.state.secondReplyContent || !this.state.secondReplyContent.trim()) {
|
|
|
|
if (!this.state.secondReplyContent || !this.state.secondReplyContent.trim()) {
|
|
|
|
this.props.showNotification('内容不能为空')
|
|
|
|
this.props.showNotification('内容不能为空')
|
|
|
|
return;
|
|
|
|
return;
|
|
|
@ -78,12 +78,12 @@ class CCommentItem extends Component{
|
|
|
|
axios.post(url, {
|
|
|
|
axios.post(url, {
|
|
|
|
score_id: item.id,
|
|
|
|
score_id: item.id,
|
|
|
|
comment: this.state.secondReplyContent
|
|
|
|
comment: this.state.secondReplyContent
|
|
|
|
}).then((result)=>{
|
|
|
|
}).then((result) => {
|
|
|
|
if(result.data.status == 0){
|
|
|
|
if (result.data.status == 0) {
|
|
|
|
this.props.replySuccess()
|
|
|
|
this.props.replySuccess()
|
|
|
|
this.cancelReply()
|
|
|
|
this.cancelReply()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}).catch((error)=>{
|
|
|
|
}).catch((error) => {
|
|
|
|
console.log(error)
|
|
|
|
console.log(error)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -91,13 +91,13 @@ class CCommentItem extends Component{
|
|
|
|
axios.post(appealUrl, {
|
|
|
|
axios.post(appealUrl, {
|
|
|
|
score_id: item.id,
|
|
|
|
score_id: item.id,
|
|
|
|
comment: this.state.secondReplyContent
|
|
|
|
comment: this.state.secondReplyContent
|
|
|
|
}).then((result)=>{
|
|
|
|
}).then((result) => {
|
|
|
|
if(result.data.status == 0){
|
|
|
|
if (result.data.status == 0) {
|
|
|
|
this.props.replySuccess()
|
|
|
|
this.props.replySuccess()
|
|
|
|
this.cancelAppeal()
|
|
|
|
this.cancelAppeal()
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}).catch((error)=>{
|
|
|
|
}).catch((error) => {
|
|
|
|
console.log(error)
|
|
|
|
console.log(error)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -109,10 +109,12 @@ class CCommentItem extends Component{
|
|
|
|
onOk: () => {
|
|
|
|
onOk: () => {
|
|
|
|
|
|
|
|
|
|
|
|
const url = `/commons/delete.json`
|
|
|
|
const url = `/commons/delete.json`
|
|
|
|
axios.delete(url, { data: {
|
|
|
|
axios.delete(url, {
|
|
|
|
|
|
|
|
data: {
|
|
|
|
object_id: item.id,
|
|
|
|
object_id: item.id,
|
|
|
|
object_type: 'journals_for_message'
|
|
|
|
object_type: 'journals_for_message'
|
|
|
|
}})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
.then((response) => {
|
|
|
|
.then((response) => {
|
|
|
|
if (response.data.status == 0) {
|
|
|
|
if (response.data.status == 0) {
|
|
|
|
this.props.replySuccess()
|
|
|
|
this.props.replySuccess()
|
|
|
@ -135,7 +137,7 @@ class CCommentItem extends Component{
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
,
|
|
|
|
,
|
|
|
|
onOk: () => {
|
|
|
|
onOk: () => {
|
|
|
|
let studentWorkId =this.props.match.params.studentWorkId;
|
|
|
|
let studentWorkId = this.props.match.params.studentWorkId;
|
|
|
|
const url = `/student_works/${studentWorkId}/deal_appeal_score.json`
|
|
|
|
const url = `/student_works/${studentWorkId}/deal_appeal_score.json`
|
|
|
|
axios.post(url, {
|
|
|
|
axios.post(url, {
|
|
|
|
score_id: item.score_id,
|
|
|
|
score_id: item.score_id,
|
|
|
@ -158,8 +160,8 @@ class CCommentItem extends Component{
|
|
|
|
return markdownToHTML(oldContent);
|
|
|
|
return markdownToHTML(oldContent);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
exportMdtoHtml=(md)=> {
|
|
|
|
exportMdtoHtml = (md) => {
|
|
|
|
let newmd=md;
|
|
|
|
let newmd = md;
|
|
|
|
const converter = new showdown.Converter({
|
|
|
|
const converter = new showdown.Converter({
|
|
|
|
extensions: [
|
|
|
|
extensions: [
|
|
|
|
showdownKatex({
|
|
|
|
showdownKatex({
|
|
|
@ -203,25 +205,25 @@ class CCommentItem extends Component{
|
|
|
|
{item.is_appeal_info == true ?
|
|
|
|
{item.is_appeal_info == true ?
|
|
|
|
<a href={`javascript:void(0)`} target="_blank">
|
|
|
|
<a href={`javascript:void(0)`} target="_blank">
|
|
|
|
<img alt="用户头像" height="50"
|
|
|
|
<img alt="用户头像" height="50"
|
|
|
|
src={`${getUrl()}/images/edu_user/anony.png`} width="50"/>
|
|
|
|
src={`${getUrl()}/images/edu_user/anony.png`} width="50" />
|
|
|
|
</a>
|
|
|
|
</a>
|
|
|
|
: <a href={`${_origin}/users/${item.user_info.user_login}`} target="_blank">
|
|
|
|
: <a href={`${_origin}/users/${item.user_info.user_login}`} target="_blank">
|
|
|
|
<img alt="用户头像" height="50"
|
|
|
|
<img alt="用户头像" height="50"
|
|
|
|
src={`${getImageUrl(`images/`+imgSrc)}`}
|
|
|
|
src={`${getImageUrl(`images/` + imgSrc)}`}
|
|
|
|
width="50"/>
|
|
|
|
width="50" />
|
|
|
|
</a>}
|
|
|
|
</a>}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div className="t_content fl">
|
|
|
|
<div className="t_content fl">
|
|
|
|
<div className="J_Comment_Reply">
|
|
|
|
<div className="J_Comment_Reply">
|
|
|
|
<div className="comment_orig_content" style={{ margin:"0px" }}>
|
|
|
|
<div className="comment_orig_content" style={{ margin: "0px" }}>
|
|
|
|
<div className="J_Comment_Info clearfix mt3">
|
|
|
|
<div className="J_Comment_Info clearfix mt3">
|
|
|
|
<div className="t_info fl">
|
|
|
|
<div className="t_info fl">
|
|
|
|
{item.user_info.user_login==="--"?
|
|
|
|
{item.user_info.user_login === "--" ?
|
|
|
|
<a className="content-username hide fl">
|
|
|
|
<a className="content-username hide fl">
|
|
|
|
{item.user_info.user_name}
|
|
|
|
{item.user_info.user_name}
|
|
|
|
</a>
|
|
|
|
</a>
|
|
|
|
:<a href={`${_origin}/users/${item.user_info.user_login}`} className="content-username hide fl">
|
|
|
|
: <a href={`${_origin}/users/${item.user_info.user_login}`} className="content-username hide fl">
|
|
|
|
{item.user_info.user_name}
|
|
|
|
{item.user_info.user_name}
|
|
|
|
</a>}
|
|
|
|
</a>}
|
|
|
|
|
|
|
|
|
|
|
@ -246,14 +248,14 @@ class CCommentItem extends Component{
|
|
|
|
<i className="iconfont icon-shanchu mr5 fr font-14" onClick={() => this.onDeleteSecondReply(item)}
|
|
|
|
<i className="iconfont icon-shanchu mr5 fr font-14" onClick={() => this.onDeleteSecondReply(item)}
|
|
|
|
style={{ cursor: 'pointer' }}
|
|
|
|
style={{ cursor: 'pointer' }}
|
|
|
|
></i>
|
|
|
|
></i>
|
|
|
|
</Tooltip> }
|
|
|
|
</Tooltip>}
|
|
|
|
{/* </React.Fragment>
|
|
|
|
{/* </React.Fragment>
|
|
|
|
} */}
|
|
|
|
} */}
|
|
|
|
{item.is_appeal_info && isAdmin && item.appeal_status == 1 && this.props.isAdmin()===true&&<React.Fragment>
|
|
|
|
{item.is_appeal_info && isAdmin && item.appeal_status == 1 && this.props.isAdmin() === true && <React.Fragment>
|
|
|
|
<WordsBtn style="grey" onClick={() => this.on_deal_appeal_score(REFUSE, item)} className="fr ml6">拒绝申诉</WordsBtn>
|
|
|
|
<WordsBtn style="grey" onClick={() => this.on_deal_appeal_score(REFUSE, item)} className="fr ml6">拒绝申诉</WordsBtn>
|
|
|
|
<WordsBtn style="orange" onClick={() => this.on_deal_appeal_score(ACCEPT, item)} className="fr">接受申诉</WordsBtn>
|
|
|
|
<WordsBtn style="orange" onClick={() => this.on_deal_appeal_score(ACCEPT, item)} className="fr">接受申诉</WordsBtn>
|
|
|
|
</React.Fragment>}
|
|
|
|
</React.Fragment>}
|
|
|
|
{item.appeal_status == 1 && this.props.is_author == true && this.props.isStudent()===true &&
|
|
|
|
{item.appeal_status == 1 && this.props.is_author == true && this.props.isStudent() === true &&
|
|
|
|
<WordsBtn style="blue" className="fr mr5" onClick={() => this.cancelMyAppeal()}>撤销申诉</WordsBtn>}
|
|
|
|
<WordsBtn style="blue" className="fr mr5" onClick={() => this.cancelMyAppeal()}>撤销申诉</WordsBtn>}
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
@ -262,7 +264,7 @@ class CCommentItem extends Component{
|
|
|
|
<div className="comment_content clearfix" id={`reply_content_${item.id}`}>
|
|
|
|
<div className="comment_content clearfix" id={`reply_content_${item.id}`}>
|
|
|
|
<div className="color-grey-3" id={`reply_content_${item.id}`}>
|
|
|
|
<div className="color-grey-3" id={`reply_content_${item.id}`}>
|
|
|
|
<div className={"markdown-body"}
|
|
|
|
<div className={"markdown-body"}
|
|
|
|
dangerouslySetInnerHTML={{__html:markdownToHTML(item.content)}}></div>
|
|
|
|
dangerouslySetInnerHTML={{ __html: markdownToHTML(item.content) }}></div>
|
|
|
|
<div className="cl"></div>
|
|
|
|
<div className="cl"></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
@ -275,28 +277,28 @@ class CCommentItem extends Component{
|
|
|
|
)
|
|
|
|
)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
render(){
|
|
|
|
render() {
|
|
|
|
let { item, commentIndex, homework_status, is_author }=this.props;
|
|
|
|
let { item, commentIndex, homework_status, is_author } = this.props;
|
|
|
|
let { show_reply, show_appeal }=this.state;
|
|
|
|
let { show_reply, show_appeal } = this.state;
|
|
|
|
const _content = item.content ? markdownToHTML(item.content): ''
|
|
|
|
const _content = item.content ? markdownToHTML(item.content) : ''
|
|
|
|
const isAnonymous = homework_status && homework_status.indexOf('匿评中') != -1
|
|
|
|
const isAnonymous = homework_status && homework_status.indexOf('匿评中') != -1
|
|
|
|
const isAppealing = homework_status && homework_status.indexOf('申诉中') != -1
|
|
|
|
const isAppealing = homework_status && homework_status.indexOf('申诉中') != -1
|
|
|
|
const attachments = item.attachments;
|
|
|
|
const attachments = item.attachments;
|
|
|
|
const isAdmin = this.props.isAdmin()
|
|
|
|
const isAdmin = this.props.isAdmin()
|
|
|
|
|
|
|
|
|
|
|
|
return(
|
|
|
|
return (
|
|
|
|
<div className="ccomment comment_item_cont df clearfix" key={item.id}>
|
|
|
|
<div className="ccomment comment_item_cont df clearfix" key={item.id}>
|
|
|
|
<div className="J_Comment_Face fl">
|
|
|
|
<div className="J_Comment_Face fl">
|
|
|
|
|
|
|
|
|
|
|
|
{item.image_url == '--' ?
|
|
|
|
{item.image_url == '--' ?
|
|
|
|
<a href={`javascript:void(0)`} >
|
|
|
|
<a href={`javascript:void(0)`} >
|
|
|
|
<img alt="用户头像" height="50"
|
|
|
|
<img alt="用户头像" height="50"
|
|
|
|
src={`${getUrl()}/images/edu_user/anony.png`} width="50"/>
|
|
|
|
src={`${getUrl()}/images/edu_user/anony.png`} width="50" />
|
|
|
|
</a>
|
|
|
|
</a>
|
|
|
|
: <a href={`${_origin}/users/${item.user_login}`} target="_blank">
|
|
|
|
: <a href={`${_origin}/users/${item.user_login}`} target="_blank">
|
|
|
|
<img alt="用户头像" height="50"
|
|
|
|
<img alt="用户头像" height="50"
|
|
|
|
src={`${getUrl()}/images/${item.image_url}`}
|
|
|
|
src={`${getUrl()}/images/${item.image_url}`}
|
|
|
|
width="50"/>
|
|
|
|
width="50" />
|
|
|
|
</a>}
|
|
|
|
</a>}
|
|
|
|
|
|
|
|
|
|
|
|
{/* <a href={`${_origin}/users/${item.user_login}`} target="_blank">
|
|
|
|
{/* <a href={`${_origin}/users/${item.user_login}`} target="_blank">
|
|
|
@ -306,13 +308,13 @@ class CCommentItem extends Component{
|
|
|
|
|
|
|
|
|
|
|
|
<div className="t_content fl">
|
|
|
|
<div className="t_content fl">
|
|
|
|
<div className="J_Comment_Reply">
|
|
|
|
<div className="J_Comment_Reply">
|
|
|
|
<div className="comment_orig_content" style={{ margin:"0px" }}>
|
|
|
|
<div className="comment_orig_content" style={{ margin: "0px" }}>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div className="J_Comment_Info clearfix mt3">
|
|
|
|
<div className="J_Comment_Info clearfix mt3">
|
|
|
|
<div className="t_info fl">
|
|
|
|
<div className="t_info fl">
|
|
|
|
{
|
|
|
|
{
|
|
|
|
item.user_login==="--"? <a className="content-username hide fl">
|
|
|
|
item.user_login === "--" ? <a className="content-username hide fl">
|
|
|
|
{item.username}({item.comment_role})
|
|
|
|
{item.username}({item.comment_role})
|
|
|
|
</a>
|
|
|
|
</a>
|
|
|
|
:
|
|
|
|
:
|
|
|
@ -338,7 +340,7 @@ class CCommentItem extends Component{
|
|
|
|
|
|
|
|
|
|
|
|
{/* fr */}
|
|
|
|
{/* fr */}
|
|
|
|
{/* <WordsBtn style="blue" className="fr">回复</WordsBtn> */}
|
|
|
|
{/* <WordsBtn style="blue" className="fr">回复</WordsBtn> */}
|
|
|
|
{ item.is_invalid ? <span className="validate_area fr">失效</span> :
|
|
|
|
{item.is_invalid ? <span className="validate_area fr">失效</span> :
|
|
|
|
<React.Fragment>
|
|
|
|
<React.Fragment>
|
|
|
|
<WordsBtn style="blue" className="fr" onClick={this.state.show_reply ? this.cancelReply : this.showReply}>回复</WordsBtn>
|
|
|
|
<WordsBtn style="blue" className="fr" onClick={this.state.show_reply ? this.cancelReply : this.showReply}>回复</WordsBtn>
|
|
|
|
{(isAppealing || isAnonymous) && item.can_appeal && item.appeal_status == 0 &&
|
|
|
|
{(isAppealing || isAnonymous) && item.can_appeal && item.appeal_status == 0 &&
|
|
|
@ -356,14 +358,14 @@ class CCommentItem extends Component{
|
|
|
|
|
|
|
|
|
|
|
|
{!!_content && _content !== 'null' && <div className="comment_content clearfix mt8" id={`reply_content_${item.id}`}>
|
|
|
|
{!!_content && _content !== 'null' && <div className="comment_content clearfix mt8" id={`reply_content_${item.id}`}>
|
|
|
|
<div className="color-grey-3" id={`reply_content_${item.id}`}>
|
|
|
|
<div className="color-grey-3" id={`reply_content_${item.id}`}>
|
|
|
|
<div className={"markdown-body"} dangerouslySetInnerHTML={{__html: _content}}></div>
|
|
|
|
<div className={"markdown-body"} dangerouslySetInnerHTML={{ __html: _content }}></div>
|
|
|
|
<div className="cl"></div>
|
|
|
|
<div className="cl"></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>}
|
|
|
|
</div>}
|
|
|
|
{!_content && <span className="color656565 mt2 color-grey-9 font-12 mr8" style={{ display: 'inline-block'}}>{"暂未写评语"}</span>}
|
|
|
|
{!_content && <span className="color656565 mt2 color-grey-9 font-12 mr8" style={{ display: 'inline-block' }}>{"暂未写评语"}</span>}
|
|
|
|
<div className="mt6">
|
|
|
|
<div className="mt6">
|
|
|
|
{attachments && attachments.map((attaItem, key)=>{
|
|
|
|
{attachments && attachments.map((attaItem, key) => {
|
|
|
|
return(
|
|
|
|
return (
|
|
|
|
<div className="color-grey attachItem" key={key}>
|
|
|
|
<div className="color-grey attachItem" key={key}>
|
|
|
|
<a className="color-grey ">
|
|
|
|
<a className="color-grey ">
|
|
|
|
<i className="font-14 color-green iconfont icon-fujian mr8" aria-hidden="true"></i>
|
|
|
|
<i className="font-14 color-green iconfont icon-fujian mr8" aria-hidden="true"></i>
|
|
|
@ -386,7 +388,7 @@ class CCommentItem extends Component{
|
|
|
|
font-size: 14px;
|
|
|
|
font-size: 14px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
`}</style>
|
|
|
|
`}</style>
|
|
|
|
<div className="childrenCommentsView" style={{background: '#fff'}}>
|
|
|
|
<div className="childrenCommentsView" style={{ background: '#fff' }}>
|
|
|
|
{/* {(item && item.journals && item.journals.length) ? <div className="trangle"></div>: ''} */}
|
|
|
|
{/* {(item && item.journals && item.journals.length) ? <div className="trangle"></div>: ''} */}
|
|
|
|
{this.renderChildenComments(item)}
|
|
|
|
{this.renderChildenComments(item)}
|
|
|
|
{/* { item.isAllChildrenLoaded != true && item.journals && this.props.isChildCommentPagination == true && item.journals.length >= 5?
|
|
|
|
{/* { item.isAllChildrenLoaded != true && item.journals && this.props.isChildCommentPagination == true && item.journals.length >= 5?
|
|
|
@ -404,15 +406,15 @@ class CCommentItem extends Component{
|
|
|
|
{(show_reply || show_appeal) &&
|
|
|
|
{(show_reply || show_appeal) &&
|
|
|
|
<React.Fragment>
|
|
|
|
<React.Fragment>
|
|
|
|
<TPMMDEditor mdID={`${commentIndex}`} watch={false}
|
|
|
|
<TPMMDEditor mdID={`${commentIndex}`} watch={false}
|
|
|
|
height={130} onChange={(val) => this.setState({ secondReplyContent: val})}
|
|
|
|
height={130} onChange={(val) => this.setState({ secondReplyContent: val })}
|
|
|
|
placeholder={`请输入内容`} noStorage={true}
|
|
|
|
placeholder={`请输入内容`} noStorage={true}
|
|
|
|
></TPMMDEditor>
|
|
|
|
></TPMMDEditor>
|
|
|
|
<div className="fr">
|
|
|
|
<div className="fr">
|
|
|
|
<a className="task-btn task-btn-orange fr" style={{height: '26px', lineHeight: '26px', width: '60px'}}
|
|
|
|
<a className="task-btn task-btn-orange fr" style={{ height: '26px', lineHeight: '26px', width: '60px' }}
|
|
|
|
onClick={this.onSubmit}
|
|
|
|
onClick={this.onSubmit}
|
|
|
|
>{this.state.show_reply ? '回复' : '申诉'}</a>
|
|
|
|
>{this.state.show_reply ? '回复' : '申诉'}</a>
|
|
|
|
<a onClick={this.onCancel} className="defalutCancelbtn fr"
|
|
|
|
<a onClick={this.onCancel} className="defalutCancelbtn fr"
|
|
|
|
style={{height: '26px', width: '60px', fontSize: '14px', lineHeight: '26px', marginRight: '10px'}}>取消</a>
|
|
|
|
style={{ height: '26px', width: '60px', fontSize: '14px', lineHeight: '26px', marginRight: '10px' }}>取消</a>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</React.Fragment>
|
|
|
|
</React.Fragment>
|
|
|
|