|
@@ -14,6 +14,8 @@ import { FilesSvg } from 'Column/ColumnEditor'
|
|
|
import { ColumnStatus } from './ColumnCenter'
|
|
|
import AskAdd from 'Material/components/AskAdd'
|
|
|
|
|
|
+import { ITryType, INewPermissionType } from 'Material/components/NoPermission'
|
|
|
+import PayNoPermission from 'Material/components/PayNoPermission'
|
|
|
import styles from '../css/ColumnDetail.module.scss'
|
|
|
import 'froala-editor/css/froala_style.min.css'
|
|
|
import 'froala-editor/css/froala_editor.pkgd.min.css'
|
|
@@ -33,11 +35,12 @@ interface IColumnContentProps {
|
|
|
type?: 'detail' | 'list' | 'preview' | 'check' // detail-详情页,list-列表页,preview-预览页,check-审查页
|
|
|
onCollect?: (ID: number) => void // 收藏回调(预览时没有收藏功能)
|
|
|
onClose?: () => void
|
|
|
+ handleToRefresh?: () => void
|
|
|
}
|
|
|
|
|
|
/**笔记/观点 */
|
|
|
const ColumnContent: React.FC<IColumnContentProps> = props => {
|
|
|
- const { detail, type = 'detail', onClose, onCollect } = props
|
|
|
+ const { detail, type = 'detail', onClose, onCollect, handleToRefresh } = props
|
|
|
const login2p = useLogin2p()
|
|
|
const history = useHistory()
|
|
|
const [bigImg, setBigImg] = useState<string>() // 展开的图片
|
|
@@ -137,7 +140,10 @@ const ColumnContent: React.FC<IColumnContentProps> = props => {
|
|
|
}
|
|
|
// 如果是列表显示,隐藏img标签
|
|
|
const handleHideImg = (html: string) => {
|
|
|
- if (type === 'list') {
|
|
|
+ if (
|
|
|
+ type === 'list' ||
|
|
|
+ ((detail as IColumnDetail)?.IsShowWxPay && (detail as IColumnDetail)?.HasPermission !== INewPermissionType.OK)
|
|
|
+ ) {
|
|
|
return html.replace(/<img[^>]*>/gi, '')
|
|
|
}
|
|
|
return html
|
|
@@ -227,135 +233,157 @@ const ColumnContent: React.FC<IColumnContentProps> = props => {
|
|
|
<div className="com-fz18 com-fw-bold m-b-sm">{detail.Title}</div>
|
|
|
<div
|
|
|
className={`fr-element fr-view ${
|
|
|
- type === 'list' || (type === 'detail' && !login2p.jwt) ? 'note-content' : 'columndetail-content'
|
|
|
+ type === 'list' ||
|
|
|
+ (type === 'detail' && !login2p.jwt) ||
|
|
|
+ ((detail as IColumnDetail)?.IsShowWxPay && (detail as IColumnDetail)?.HasPermission !== INewPermissionType.OK)
|
|
|
+ ? 'note-content'
|
|
|
+ : 'columndetail-content'
|
|
|
} `}
|
|
|
dangerouslySetInnerHTML={{
|
|
|
__html: handleHideImg(detail.Content)
|
|
|
}}
|
|
|
/>
|
|
|
- {type === 'list' && (
|
|
|
- <div className="g-flex g-flex-v-center g-flex-between m-b-md note-showmore-line">
|
|
|
- <div className="g-flex g-flex-v-center">
|
|
|
- <div className="note-pv">
|
|
|
- <EyeOutlined size={14} className="pv-icon" />
|
|
|
- <span>{(detail as IColumnDetail).Pv || 0}</span>
|
|
|
- </div>
|
|
|
- {(detail as IColumnDetail)?.IsCollect ? (
|
|
|
- <StarFilled
|
|
|
- className="collect-icon"
|
|
|
- onClick={handleOnCollect.bind(this, (detail as IColumnDetail)?.IsCollect)}
|
|
|
- />
|
|
|
- ) : (
|
|
|
- <StarOutlined
|
|
|
- className="collect-icon"
|
|
|
- onClick={handleOnCollect.bind(this, (detail as IColumnDetail)?.IsCollect)}
|
|
|
- />
|
|
|
- )}
|
|
|
- <span className="collect-count">{(detail as IColumnDetail)?.CollectNum}</span>
|
|
|
- </div>
|
|
|
- <div className="note-showmore-btn" onClick={handleToDetail}>
|
|
|
- 查看全文
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- )}
|
|
|
+ {(detail as IColumnDetail)?.IsShowWxPay &&
|
|
|
+ (detail as IColumnDetail)?.HasPermission !== INewPermissionType.OK && ( // 暂时这么写
|
|
|
+ <PayNoPermission
|
|
|
+ dataInfo={detail as IColumnDetail}
|
|
|
+ tryType={ITryType.YanxuanSpecial}
|
|
|
+ border={false}
|
|
|
+ onRefresh={handleToRefresh}
|
|
|
+ />
|
|
|
+ )}
|
|
|
|
|
|
- {!login2p.jwt && type === 'detail' ? (
|
|
|
- <div className="please-login-btn" onClick={handleToShowMore}>
|
|
|
- 请登录后查看更多内容
|
|
|
- </div>
|
|
|
- ) : (
|
|
|
+ {(detail as IColumnDetail)?.HasPermission === INewPermissionType.OK && (
|
|
|
<>
|
|
|
- <div className="operate-file-wrapper">
|
|
|
- {detail?.Docs?.map((item: IDocsList, index: number) => (
|
|
|
- <div className="operate-file-item com-cursor-p" key={index} onClick={handlePreviewFile.bind(this, item)}>
|
|
|
- <div className="g-flex g-flex-v-center">
|
|
|
- {item.DocIcon ? (
|
|
|
- <img src={item.DocIcon} className="operate-file-type" alt="图标" />
|
|
|
- ) : (
|
|
|
- computeFileSvgShow(item.DocName, 'svg')
|
|
|
- )}
|
|
|
- <span className="operate-file-text">{item.DocName}</span>
|
|
|
+ {type === 'list' && (
|
|
|
+ <div className="g-flex g-flex-v-center g-flex-between m-b-md note-showmore-line">
|
|
|
+ <div className="g-flex g-flex-v-center">
|
|
|
+ <div className="note-pv">
|
|
|
+ <EyeOutlined size={14} className="pv-icon" />
|
|
|
+ <span>{(detail as IColumnDetail).Pv || 0}</span>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- ))}
|
|
|
- </div>
|
|
|
- <div className="operate-file-wrapper">
|
|
|
- {detail?.ImgUrlList?.map((item, index) => (
|
|
|
- <React.Fragment key={index}>
|
|
|
- {item && (
|
|
|
- <div className="operate-image-item" key={item} onClick={handleOnClickPicture.bind(this, item)}>
|
|
|
- <img src={item} alt={'图片' + item} className="operate-image" />
|
|
|
- </div>
|
|
|
+ {(detail as IColumnDetail)?.IsCollect ? (
|
|
|
+ <StarFilled
|
|
|
+ className="collect-icon"
|
|
|
+ onClick={handleOnCollect.bind(this, (detail as IColumnDetail)?.IsCollect)}
|
|
|
+ />
|
|
|
+ ) : (
|
|
|
+ <StarOutlined
|
|
|
+ className="collect-icon"
|
|
|
+ onClick={handleOnCollect.bind(this, (detail as IColumnDetail)?.IsCollect)}
|
|
|
+ />
|
|
|
)}
|
|
|
- </React.Fragment>
|
|
|
- ))}
|
|
|
- </div>
|
|
|
- <div className="columndetail-category-label g-flex g-flex-v-center g-flex-wap">
|
|
|
- {type !== 'list' ? (
|
|
|
- <>
|
|
|
- {detail?.IndustryTags?.map(item => (
|
|
|
- <div className="select-item" key={item}>
|
|
|
- <span>{item}</span>
|
|
|
- </div>
|
|
|
- ))}
|
|
|
- {detail?.CompanyTags?.map(item => (
|
|
|
- <div className="select-item" key={item}>
|
|
|
- <span>{item}</span>
|
|
|
+ <span className="collect-count">{(detail as IColumnDetail)?.CollectNum}</span>
|
|
|
+ </div>
|
|
|
+ <div className="note-showmore-btn" onClick={handleToDetail}>
|
|
|
+ 查看全文
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+
|
|
|
+ {!login2p.jwt && type === 'detail' ? (
|
|
|
+ <div className="please-login-btn" onClick={handleToShowMore}>
|
|
|
+ 请登录后查看更多内容
|
|
|
+ </div>
|
|
|
+ ) : (
|
|
|
+ <>
|
|
|
+ <div className="operate-file-wrapper">
|
|
|
+ {detail?.Docs?.map((item: IDocsList, index: number) => (
|
|
|
+ <div
|
|
|
+ className="operate-file-item com-cursor-p"
|
|
|
+ key={index}
|
|
|
+ onClick={handlePreviewFile.bind(this, item)}
|
|
|
+ >
|
|
|
+ <div className="g-flex g-flex-v-center">
|
|
|
+ {item.DocIcon ? (
|
|
|
+ <img src={item.DocIcon} className="operate-file-type" alt="图标" />
|
|
|
+ ) : (
|
|
|
+ computeFileSvgShow(item.DocName, 'svg')
|
|
|
+ )}
|
|
|
+ <span className="operate-file-text">{item.DocName}</span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
))}
|
|
|
- </>
|
|
|
- ) : (
|
|
|
- <>
|
|
|
- {(detail as IColumnDetail)?.TagList?.map(item => (
|
|
|
- <div className="select-item" key={item}>
|
|
|
- <span>{item}</span>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div className="operate-file-wrapper">
|
|
|
+ {detail?.ImgUrlList?.map((item, index) => (
|
|
|
+ <React.Fragment key={index}>
|
|
|
+ {item && (
|
|
|
+ <div className="operate-image-item" key={item} onClick={handleOnClickPicture.bind(this, item)}>
|
|
|
+ <img src={item} alt={'图片' + item} className="operate-image" />
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ </React.Fragment>
|
|
|
))}
|
|
|
- </>
|
|
|
- )}
|
|
|
- </div>
|
|
|
- {type === 'detail' && (detail as IColumnDetail).Status === ColumnStatus.Published && (
|
|
|
- <div
|
|
|
- className="columndetail-collect"
|
|
|
- onClick={handleOnCollect.bind(this, (detail as IColumnDetail)?.IsCollect)}
|
|
|
- >
|
|
|
- {(detail as IColumnDetail)?.IsCollect ? (
|
|
|
- <StarFilled size={20} className={`option-icon`} />
|
|
|
- ) : (
|
|
|
- <StarOutlined size={20} className="option-icon" />
|
|
|
+ </div>
|
|
|
+ <div className="columndetail-category-label g-flex g-flex-v-center g-flex-wap">
|
|
|
+ {type !== 'list' ? (
|
|
|
+ <>
|
|
|
+ {detail?.IndustryTags?.map(item => (
|
|
|
+ <div className="select-item" key={item}>
|
|
|
+ <span>{item}</span>
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ {detail?.CompanyTags?.map(item => (
|
|
|
+ <div className="select-item" key={item}>
|
|
|
+ <span>{item}</span>
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ </>
|
|
|
+ ) : (
|
|
|
+ <>
|
|
|
+ {(detail as IColumnDetail)?.TagList?.map(item => (
|
|
|
+ <div className="select-item" key={item}>
|
|
|
+ <span>{item}</span>
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ </>
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ {type === 'detail' && (detail as IColumnDetail).Status === ColumnStatus.Published && (
|
|
|
+ <div
|
|
|
+ className="columndetail-collect"
|
|
|
+ onClick={handleOnCollect.bind(this, (detail as IColumnDetail)?.IsCollect)}
|
|
|
+ >
|
|
|
+ {(detail as IColumnDetail)?.IsCollect ? (
|
|
|
+ <StarFilled size={20} className={`option-icon`} />
|
|
|
+ ) : (
|
|
|
+ <StarOutlined size={20} className="option-icon" />
|
|
|
+ )}
|
|
|
+ <span className="option-text">{(detail as IColumnDetail)?.IsCollect ? '已' : ''}收藏</span>
|
|
|
+ </div>
|
|
|
)}
|
|
|
- <span className="option-text">{(detail as IColumnDetail)?.IsCollect ? '已' : ''}收藏</span>
|
|
|
- </div>
|
|
|
+ </>
|
|
|
)}
|
|
|
- </>
|
|
|
- )}
|
|
|
|
|
|
- {type === 'check' && (
|
|
|
- <>
|
|
|
- <div className="check-operate-wrapper">
|
|
|
- <div className="operate-nomal-btn save-btn" onClick={handleToClick.bind(this, 'modify')}>
|
|
|
- 修改
|
|
|
- </div>
|
|
|
- <div className="operate-nomal-btn reject-btn" onClick={handleToClick.bind(this, 'reject')}>
|
|
|
- 驳回
|
|
|
- </div>
|
|
|
- <div className="operate-nomal-btn publish-btn" onClick={handleToClick.bind(this, 'pass')}>
|
|
|
- 通过
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- {visibleAsk ? (
|
|
|
- <AskAdd
|
|
|
- title="驳回"
|
|
|
- placeholder="请输入驳回理由"
|
|
|
- visible={visibleAsk}
|
|
|
- ID={detail.Id}
|
|
|
- onApply={handleApplyContent}
|
|
|
- onCloseModel={handleOkAsk}
|
|
|
- />
|
|
|
- ) : null}
|
|
|
+ {type === 'check' && (
|
|
|
+ <>
|
|
|
+ <div className="check-operate-wrapper">
|
|
|
+ <div className="operate-nomal-btn save-btn" onClick={handleToClick.bind(this, 'modify')}>
|
|
|
+ 修改
|
|
|
+ </div>
|
|
|
+ <div className="operate-nomal-btn reject-btn" onClick={handleToClick.bind(this, 'reject')}>
|
|
|
+ 驳回
|
|
|
+ </div>
|
|
|
+ <div className="operate-nomal-btn publish-btn" onClick={handleToClick.bind(this, 'pass')}>
|
|
|
+ 通过
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ {visibleAsk ? (
|
|
|
+ <AskAdd
|
|
|
+ title="驳回"
|
|
|
+ placeholder="请输入驳回理由"
|
|
|
+ visible={visibleAsk}
|
|
|
+ ID={detail.Id}
|
|
|
+ onApply={handleApplyContent}
|
|
|
+ onCloseModel={handleOkAsk}
|
|
|
+ />
|
|
|
+ ) : null}
|
|
|
+ </>
|
|
|
+ )}
|
|
|
+ <Picture visible={!!bigImg} imgSrc={bigImg} onClose={handleToCloseBigImg} />
|
|
|
</>
|
|
|
)}
|
|
|
- <Picture visible={!!bigImg} imgSrc={bigImg} onClose={handleToCloseBigImg} />
|
|
|
</div>
|
|
|
)
|
|
|
}
|