Commit 961679f4 by yuananting

Merge branch 'master' into feature/yuananting/20210705/select-course-limit

parents 9ae443c4 62b372e7
...@@ -11,7 +11,7 @@ import college from '@/common/lottie/college'; ...@@ -11,7 +11,7 @@ import college from '@/common/lottie/college';
import { PageControl, XMTable } from '@/components'; import { PageControl, XMTable } from '@/components';
import DownloadLiveModal from '@/components/DownloadLiveModal'; import DownloadLiveModal from '@/components/DownloadLiveModal';
import BaseService from '@/domains/basic-domain/baseService'; import BaseService from '@/domains/basic-domain/baseService';
import { appId, LIVE_SHARE } from '@/domains/course-domain/constants'; import { LIVE_SHARE } from '@/domains/course-domain/constants';
import CourseService from '@/domains/course-domain/CourseService'; import CourseService from '@/domains/course-domain/CourseService';
import { QuestionCircleOutlined } from '@ant-design/icons'; import { QuestionCircleOutlined } from '@ant-design/icons';
import { Dropdown, message, Modal, Switch, Tooltip } from 'antd'; import { Dropdown, message, Modal, Switch, Tooltip } from 'antd';
...@@ -66,7 +66,6 @@ class LiveCourseList extends React.Component { ...@@ -66,7 +66,6 @@ class LiveCourseList extends React.Component {
} }
// 显示分享弹窗 // 显示分享弹窗
handleShowShareModal = (item, needStr = false) => { handleShowShareModal = (item, needStr = false) => {
const _appId = appId;
const { liveCourseId } = item; const { liveCourseId } = item;
const htmlUrl = `${LIVE_SHARE}live_detail/${liveCourseId}?id=${User.getStoreId()}`; const htmlUrl = `${LIVE_SHARE}live_detail/${liveCourseId}?id=${User.getStoreId()}`;
...@@ -93,13 +92,8 @@ class LiveCourseList extends React.Component { ...@@ -93,13 +92,8 @@ class LiveCourseList extends React.Component {
}; };
//改变上架状态 //改变上架状态
changeShelfState = (index,item,checked) => { changeShelfState = (index, item, checked) => {
let _shelfState = checked ? "YES" : "NO" let _shelfState = checked ? 'YES' : 'NO';
// if (_shelfState === 'NO') {
// _shelfState = 'YES';
// } else {
// _shelfState = 'NO';
// }
const params = { const params = {
liveCourseId: item.liveCourseId, liveCourseId: item.liveCourseId,
shelfState: _shelfState, shelfState: _shelfState,
...@@ -111,7 +105,7 @@ class LiveCourseList extends React.Component { ...@@ -111,7 +105,7 @@ class LiveCourseList extends React.Component {
} else { } else {
message.success('已取消展示'); message.success('已取消展示');
} }
this.props.changeShelfState(index,_shelfState) this.props.changeShelfState(index, _shelfState);
} }
}); });
}; };
...@@ -125,25 +119,15 @@ class LiveCourseList extends React.Component { ...@@ -125,25 +119,15 @@ class LiveCourseList extends React.Component {
}); });
}; };
parseColumns = () => { parseColumns = () => {
const menu = (item) => (
<div className='live-course-more-menu'>
<div>上课记录</div>
<div
onClick={() => {
this.handleShowRepeatModal(item);
}}>
回放记录
</div>
</div>
);
let columns; let columns;
const userRole = User.getUserRole(); const userRole = User.getUserRole();
if (userRole !== 'CloudLecturer') { if (userRole !== 'CloudLecturer') {
columns = [ columns = [
{ {
title: '直播课', title: '直播课',
width: '23%',
key: 'course', key: 'course',
fixed: 'left',
dataIndex: 'courseName', dataIndex: 'courseName',
render: (val, record) => { render: (val, record) => {
let hasCover = false; let hasCover = false;
...@@ -152,21 +136,28 @@ class LiveCourseList extends React.Component { ...@@ -152,21 +136,28 @@ class LiveCourseList extends React.Component {
{record.courseMediaVOS.map((item, index) => { {record.courseMediaVOS.map((item, index) => {
if (item.contentType === 'COVER') { if (item.contentType === 'COVER') {
hasCover = true; hasCover = true;
return <img className='course-cover' src={item.mediaUrl} />; return <img key={item.mediaContent + index} className='course-cover' src={item.mediaUrl} alt='' />;
} else {
return null;
} }
})} })}
{!hasCover && <img className='course-cover' src={'https://image.xiaomaiketang.com/xm/Yip2YtFDwH.png'} />} {!hasCover && <img className='course-cover' src={'https://image.xiaomaiketang.com/xm/Yip2YtFDwH.png'} alt='' />}
<div> <div>
{record.courseName.length > 17 ? ( <Choose>
<When condition={record.courseName.length > 14}>
<Tooltip title={record.courseName}> <Tooltip title={record.courseName}>
<div className='course-name'>{record.courseName}</div> <div className='course-name'>{record.courseName}</div>
</Tooltip> </Tooltip>
) : ( </When>
<Otherwise>
{' '}
<div className='course-name'>{record.courseName}</div> <div className='course-name'>{record.courseName}</div>
)} </Otherwise>
</Choose>
<div> <div>
<span className='course-time'> <span className='course-time'>
{formatDate('YYYY-MM-DD H:i', parseInt(record.startTime))}~{formatDate('H:i', parseInt(record.endTime))} {window.formatDate('YYYY-MM-DD H:i', parseInt(record.startTime))}~{window.formatDate('H:i', parseInt(record.endTime))}
</span> </span>
<span <span
className='course-status' className='course-status'
...@@ -175,31 +166,35 @@ class LiveCourseList extends React.Component { ...@@ -175,31 +166,35 @@ class LiveCourseList extends React.Component {
</span> </span>
</div> </div>
<div className='teacher-assistant'> <div className='teacher-assistant'>
{record.teacherName && record.teacherName.length > 4 ? ( <Choose>
<When condition={record.teacherName && record.teacherName.length > 4}>
<Tooltip title={record.teacherName}> <Tooltip title={record.teacherName}>
<span className='teacher'>讲师:{record.teacherName}</span> <span className='teacher'>讲师:{record.teacherName}</span>
</Tooltip> </Tooltip>
) : ( </When>
<Otherwise>
<span className='teacher'>讲师:{record.teacherName}</span> <span className='teacher'>讲师:{record.teacherName}</span>
)} </Otherwise>
</Choose>
{record.admins.length > 0 && ( <If condition={record.admins.length > 0}>
<>
<span className='split'> | </span> <span className='split'> | </span>
{this.handleAdminName(record.admins).length > 4 ? ( <Choose>
<When condition={this.handleAdminName(record.admins).length > 4}>
<Tooltip title={this.handleAdminName(record.admins)}> <Tooltip title={this.handleAdminName(record.admins)}>
<span className='assistant'> <span className='assistant'>
助教: 助教:
{record.admins.map((item, index) => { {record.admins.map((item, index) => {
return ( return (
<span> <span key={item.adminId + index}>
{item.adminName} {index < record.admins.length - 1 && <span></span>}{' '} {item.adminName} {index < record.admins.length - 1 && <span></span>}{' '}
</span> </span>
); );
})} })}
</span> </span>
</Tooltip> </Tooltip>
) : ( </When>
<Otherwise>
<span className='assistant'> <span className='assistant'>
助教: 助教:
{record.admins.map((item, index) => { {record.admins.map((item, index) => {
...@@ -210,9 +205,9 @@ class LiveCourseList extends React.Component { ...@@ -210,9 +205,9 @@ class LiveCourseList extends React.Component {
); );
})} })}
</span> </span>
)} </Otherwise>
</> </Choose>
)} </If>
</div> </div>
</div> </div>
</div> </div>
...@@ -287,10 +282,13 @@ class LiveCourseList extends React.Component { ...@@ -287,10 +282,13 @@ class LiveCourseList extends React.Component {
key: 'shelfState', key: 'shelfState',
dataIndex: 'shelfState', dataIndex: 'shelfState',
render: (val, item, index) => { render: (val, item, index) => {
return <Switch return (
checked={item.shelfState === "YES"} <Switch
checked={item.shelfState === 'YES'}
defaultChecked={item.shelfState === 'YES' ? true : false} defaultChecked={item.shelfState === 'YES' ? true : false}
onChange={(checked) => this.changeShelfState(index,item,checked)} />; onChange={(checked) => this.changeShelfState(index, item, checked)}
/>
);
}, },
}, },
{ {
...@@ -301,7 +299,7 @@ class LiveCourseList extends React.Component { ...@@ -301,7 +299,7 @@ class LiveCourseList extends React.Component {
sorter: true, sorter: true,
render: (val, item) => { render: (val, item) => {
// -29000:与后端约定 在初始化学院时,创建时间(标志位-29000)默认展示为'-' // -29000:与后端约定 在初始化学院时,创建时间(标志位-29000)默认展示为'-'
return <span>{val === -29000 ? '-' : formatDate('YYYY-MM-DD H:i', val)}</span>; return <span style={{ whiteSpace: 'nowrap' }}>{val === -29000 ? '-' : window.formatDate('YYYY-MM-DD H:i', val)}</span>;
}, },
}, },
{ {
...@@ -312,7 +310,8 @@ class LiveCourseList extends React.Component { ...@@ -312,7 +310,8 @@ class LiveCourseList extends React.Component {
render: (val, record) => { render: (val, record) => {
return ( return (
<div className='related-task'> <div className='related-task'>
{record.relatedPlanList ? ( <Choose>
<When condition={record.relatedPlanLis}>
<Tooltip title={this.handlePlanName(record.relatedPlanList)} placement='top' arrowPointAtCenter> <Tooltip title={this.handlePlanName(record.relatedPlanList)} placement='top' arrowPointAtCenter>
{record.relatedPlanList.map((item, index) => { {record.relatedPlanList.map((item, index) => {
return ( return (
...@@ -322,17 +321,20 @@ class LiveCourseList extends React.Component { ...@@ -322,17 +321,20 @@ class LiveCourseList extends React.Component {
); );
})} })}
</Tooltip> </Tooltip>
) : ( </When>
<Otherwise>
<span></span> <span></span>
)} </Otherwise>
</Choose>
</div> </div>
); );
}, },
}, },
{ {
title: '操作', title: '操作',
width: '15%', width: 210,
key: 'operate', key: 'operate',
fixed: 'right',
dataIndex: 'operate', dataIndex: 'operate',
render: (val, item) => { render: (val, item) => {
return ( return (
...@@ -424,21 +426,25 @@ class LiveCourseList extends React.Component { ...@@ -424,21 +426,25 @@ class LiveCourseList extends React.Component {
{record.courseMediaVOS.map((item, index) => { {record.courseMediaVOS.map((item, index) => {
if (item.contentType === 'COVER') { if (item.contentType === 'COVER') {
hasCover = true; hasCover = true;
return <img className='course-cover' src={item.mediaUrl} />; return <img className='course-cover' src={item.mediaUrl} alt='' />;
} }
})} })}
{!hasCover && <img className='course-cover' src={'https://image.xiaomaiketang.com/xm/Yip2YtFDwH.png'} />} {!hasCover && <img className='course-cover' src={'https://image.xiaomaiketang.com/xm/Yip2YtFDwH.png'} alt='' />}
<div> <div>
{record.courseName.length > 17 ? ( <Choose>
<When condition={record.courseName.length > 17}>
<Tooltip title={record.courseName}> <Tooltip title={record.courseName}>
<div className='course-name'>{record.courseName}</div> <div className='course-name'>{record.courseName}</div>
</Tooltip> </Tooltip>
) : ( </When>
<Otherwise>
<div className='course-name'>{record.courseName}</div> <div className='course-name'>{record.courseName}</div>
)} </Otherwise>
</Choose>
<div> <div>
<span className='course-time'> <span className='course-time'>
{formatDate('YYYY-MM-DD H:i', parseInt(record.startTime))}~{formatDate('H:i', parseInt(record.endTime))} {window.formatDate('YYYY-MM-DD H:i', parseInt(record.startTime))}~{window.formatDate('H:i', parseInt(record.endTime))}
</span> </span>
<span <span
className='course-status' className='course-status'
...@@ -447,18 +453,21 @@ class LiveCourseList extends React.Component { ...@@ -447,18 +453,21 @@ class LiveCourseList extends React.Component {
</span> </span>
</div> </div>
<div className='teacher-assistant'> <div className='teacher-assistant'>
{record.teacherName && record.teacherName.length > 4 ? ( <Choose>
<When condition={record.teacherName && record.teacherName.length > 4}>
<Tooltip title={record.teacherName}> <Tooltip title={record.teacherName}>
<span className='teacher'>讲师:{record.teacherName}</span> <span className='teacher'>讲师:{record.teacherName}</span>
</Tooltip> </Tooltip>
) : ( </When>
<Otherwise>
<span className='teacher'>讲师:{record.teacherName}</span> <span className='teacher'>讲师:{record.teacherName}</span>
)} </Otherwise>
</Choose>
{record.admins.length > 0 && ( <If condition={record.admins.length > 0}>
<>
<span className='split'> | </span> <span className='split'> | </span>
{this.handleAdminName(record.admins).length > 4 ? ( <Choose>
<When condition={this.handleAdminName(record.admins).length > 4}>
<Tooltip title={this.handleAdminName(record.admins)}> <Tooltip title={this.handleAdminName(record.admins)}>
<span className='assistant'> <span className='assistant'>
助教: 助教:
...@@ -471,7 +480,8 @@ class LiveCourseList extends React.Component { ...@@ -471,7 +480,8 @@ class LiveCourseList extends React.Component {
})} })}
</span> </span>
</Tooltip> </Tooltip>
) : ( </When>
<Otherwise>
<span className='assistant'> <span className='assistant'>
助教: 助教:
{record.admins.map((item, index) => { {record.admins.map((item, index) => {
...@@ -482,9 +492,9 @@ class LiveCourseList extends React.Component { ...@@ -482,9 +492,9 @@ class LiveCourseList extends React.Component {
); );
})} })}
</span> </span>
)} </Otherwise>
</> </Choose>
)} </If>
</div> </div>
</div> </div>
</div> </div>
...@@ -544,7 +554,7 @@ class LiveCourseList extends React.Component { ...@@ -544,7 +554,7 @@ class LiveCourseList extends React.Component {
dataIndex: 'created', dataIndex: 'created',
sorter: true, sorter: true,
render: (val, item) => { render: (val, item) => {
return <span>{formatDate('YYYY-MM-DD H:i', val)}</span>; return <span>{window.formatDate('YYYY-MM-DD H:i', val)}</span>;
}, },
}, },
{ {
...@@ -555,7 +565,8 @@ class LiveCourseList extends React.Component { ...@@ -555,7 +565,8 @@ class LiveCourseList extends React.Component {
render: (val, record) => { render: (val, record) => {
return ( return (
<div className='related-task'> <div className='related-task'>
{record.relatedPlanList ? ( <Choose>
<When condition={record.relatedPlanList}>
<Tooltip title={this.handlePlanName(record.relatedPlanList)} placement='top' arrowPointAtCenter> <Tooltip title={this.handlePlanName(record.relatedPlanList)} placement='top' arrowPointAtCenter>
{record.relatedPlanList.map((item, index) => { {record.relatedPlanList.map((item, index) => {
return ( return (
...@@ -565,9 +576,11 @@ class LiveCourseList extends React.Component { ...@@ -565,9 +576,11 @@ class LiveCourseList extends React.Component {
); );
})} })}
</Tooltip> </Tooltip>
) : ( </When>
<Otherwise>
<span></span> <span></span>
)} </Otherwise>
</Choose>
</div> </div>
); );
}, },
...@@ -578,7 +591,7 @@ class LiveCourseList extends React.Component { ...@@ -578,7 +591,7 @@ class LiveCourseList extends React.Component {
}; };
handleAdminName = (adminArray) => { handleAdminName = (adminArray) => {
let adminStr = ''; let adminStr = '';
adminArray.map((item, index) => { adminArray.forEach((item, index) => {
if (index < adminArray.length - 1) { if (index < adminArray.length - 1) {
adminStr = adminStr + item.adminName + '、'; adminStr = adminStr + item.adminName + '、';
} else { } else {
...@@ -590,7 +603,7 @@ class LiveCourseList extends React.Component { ...@@ -590,7 +603,7 @@ class LiveCourseList extends React.Component {
handlePlanName = (planArray) => { handlePlanName = (planArray) => {
let planStr = ''; let planStr = '';
planArray.map((item, index) => { planArray.forEach((item, index) => {
if (index < planArray.length - 1) { if (index < planArray.length - 1) {
planStr = planStr + item.planName + '、'; planStr = planStr + item.planName + '、';
} else { } else {
...@@ -687,7 +700,7 @@ class LiveCourseList extends React.Component { ...@@ -687,7 +700,7 @@ class LiveCourseList extends React.Component {
} }
}; };
onShowSizeChange = (current, size) => { onShowSizeChange = (current, size) => {
if (current == size) { if (current === size) {
return; return;
} }
let _query = this.props.query; let _query = this.props.query;
...@@ -795,6 +808,7 @@ class LiveCourseList extends React.Component { ...@@ -795,6 +808,7 @@ class LiveCourseList extends React.Component {
size='middle' size='middle'
pagination={false} pagination={false}
columns={columns} columns={columns}
scroll={{ x: 1300 }}
loading={loading} loading={loading}
dataSource={courseList} dataSource={courseList}
onChange={this.handleChangeTable} onChange={this.handleChangeTable}
...@@ -818,7 +832,6 @@ class LiveCourseList extends React.Component { ...@@ -818,7 +832,6 @@ class LiveCourseList extends React.Component {
{openCoursewareModal && ( {openCoursewareModal && (
<ManageCoursewareModal <ManageCoursewareModal
data={editData} data={editData}
type={type}
onCancel={() => { onCancel={() => {
this.props.onChange(); this.props.onChange();
this.setState({ openCoursewareModal: false }); this.setState({ openCoursewareModal: false });
...@@ -846,7 +859,7 @@ class LiveCourseList extends React.Component { ...@@ -846,7 +859,7 @@ class LiveCourseList extends React.Component {
onConfirm={this.onConfirmSelectPlanList} onConfirm={this.onConfirmSelectPlanList}
/> />
)} )}
<iframe src={url} style={{ display: 'none' }} /> <iframe src={url} style={{ display: 'none' }} title='navigation' />
<Route path={`${match.url}/live-course-data`} component={DataList} /> <Route path={`${match.url}/live-course-data`} component={DataList} />
</div> </div>
); );
......
.live-course-list { .live-course-list {
margin-top: 12px; margin-top: 12px;
.record__item { .record__item {
overflow: hidden;
display: flex; display: flex;
align-items: center; align-items: center;
.course-cover { .course-cover {
...@@ -11,63 +11,61 @@ ...@@ -11,63 +11,61 @@
border-radius: 2px; border-radius: 2px;
margin-right: 8px; margin-right: 8px;
} }
.course-name{ .course-name {
font-size: 14px; font-size: 14px;
font-weight: 500; font-weight: 500;
color: #333333; color: #333333;
line-height: 20px; line-height: 20px;
font-weight: bold; font-weight: bold;
max-width:244px; max-width: 200px;
overflow: hidden; overflow: hidden;
text-overflow:ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
.course-time{ .course-time {
font-size: 12px; font-size: 12px;
font-weight: 400; font-weight: 400;
color: #666666; color: #666666;
line-height: 20px; line-height: 20px;
} }
.course-status { .course-status {
font-size:12px; font-size: 12px;
line-height:18px; line-height: 18px;
display:inline-block; display: inline-block;
border-radius:2px; border-radius: 2px;
padding:0 8px; padding: 0 8px;
margin-left:4px; margin-left: 4px;
} }
.teacher-assistant{ .teacher-assistant {
display:flex; display: flex;
.teacher{ .teacher {
font-size: 12px; font-size: 12px;
color: #666666; color: #666666;
max-width: 96px; max-width: 96px;
overflow: hidden; overflow: hidden;
text-overflow:ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
display:inline-block; display: inline-block;
padding-top:2px; padding-top: 2px;
} }
.assistant{ .assistant {
font-size: 12px; font-size: 12px;
color: #666666; color: #666666;
max-width: 96px; max-width: 96px;
overflow: hidden; overflow: hidden;
text-overflow:ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
display:inline-block; display: inline-block;
padding-top:2px; padding-top: 2px;
} }
.split { .split {
margin: 0 4px; margin: 0 4px;
color: #BFBFBF; color: #bfbfbf;
display: inline-blcok; display: inline-blcok;
} }
} }
} }
.related-task{ .related-task {
text-overflow: -o-ellipsis-lastline; text-overflow: -o-ellipsis-lastline;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
...@@ -76,37 +74,37 @@ ...@@ -76,37 +74,37 @@
line-clamp: 2; line-clamp: 2;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
} }
.categoryName{ .categoryName {
font-size: 14px; font-size: 14px;
color: #666666; color: #666666;
line-height: 20px; line-height: 20px;
} }
.courseware{ .courseware {
font-size: 14px; font-size: 14px;
color: #2966FF; color: #2966ff;
line-height: 20px; line-height: 20px;
text-align:right; text-align: right;
cursor:pointer; cursor: pointer;
} }
.quota-icon{ .quota-icon {
color:#2966FF; color: #2966ff;
cursor:pointer; cursor: pointer;
} }
.operate { .operate {
display: flex; display: flex;
align-items: center; align-items: center;
flex-wrap: wrap; flex-wrap: wrap;
.operate__item { .operate__item {
color: #2966FF; color: #2966ff;
cursor: pointer; cursor: pointer;
&.split { &.split {
margin: 0 8px; margin: 0 8px;
color: #BFBFBF; color: #bfbfbf;
} }
} }
} }
.operate-text { .operate-text {
color: #2966FF; color: #2966ff;
cursor: pointer; cursor: pointer;
} }
.course-start-end { .course-start-end {
...@@ -135,7 +133,27 @@ ...@@ -135,7 +133,27 @@
font-size: 12px; font-size: 12px;
} }
} }
tbody {
tr {
&:nth-child(even) {
background: transparent !important;
td {
background: #fff !important;
}
}
&:nth-child(odd) {
background: #fafafa !important;
td {
background: #fafafa !important;
}
}
&:hover {
td {
background: #f3f6fa !important;
}
}
}
}
} }
.live-course-more-menu { .live-course-more-menu {
background: white; background: white;
......
...@@ -53,7 +53,7 @@ class LiveCourseOpt extends React.Component { ...@@ -53,7 +53,7 @@ class LiveCourseOpt extends React.Component {
{ userRole !== "CloudLecturer" && { userRole !== "CloudLecturer" &&
<Button type="primary" onClick={this.handleCreateLiveCouese}>新建直播课</Button> <Button type="primary" onClick={this.handleCreateLiveCouese}>新建直播课</Button>
} }
{!this.state.isMac && <Button onClick={this.handleDownloadClient}>下载直播客户端</Button>} <Button onClick={this.handleDownloadClient}>下载直播客户端</Button>
</div> </div>
</div> </div>
) )
......
...@@ -10,7 +10,7 @@ import Service from '@/common/js/service'; ...@@ -10,7 +10,7 @@ import Service from '@/common/js/service';
import User from '@/common/js/user'; import User from '@/common/js/user';
import college from '@/common/lottie/college'; import college from '@/common/lottie/college';
import { PageControl, XMTable } from '@/components'; import { PageControl, XMTable } from '@/components';
import { appId, LIVE_SHARE } from '@/domains/course-domain/constants'; import { LIVE_SHARE } from '@/domains/course-domain/constants';
import CourseService from '@/domains/course-domain/CourseService'; import CourseService from '@/domains/course-domain/CourseService';
import ShareLiveModal from '@/modules/course-manage/modal/ShareLiveModal'; import ShareLiveModal from '@/modules/course-manage/modal/ShareLiveModal';
import OfflineCourseData from '@/modules/course-manage/offline-course/OfflineCourseData'; import OfflineCourseData from '@/modules/course-manage/offline-course/OfflineCourseData';
...@@ -78,7 +78,7 @@ class OfflineCourseList extends React.Component { ...@@ -78,7 +78,7 @@ class OfflineCourseList extends React.Component {
} ${moment(startTime).format('HH:mm')} ~ ${moment(endTime).format('HH:mm')}`; } ${moment(startTime).format('HH:mm')} ~ ${moment(endTime).format('HH:mm')}`;
return ( return (
<div className='record__item'> <div className='record__item'>
<img className='course-cover' src={coverUrl || defaultCoverUrl} /> <img className='course-cover' src={coverUrl || defaultCoverUrl} alt='' />
<div style={{ width: 175 }}> <div style={{ width: 175 }}>
<Tooltip title={courseName}> <Tooltip title={courseName}>
<div className='course-name'>{courseName}</div> <div className='course-name'>{courseName}</div>
...@@ -152,14 +152,14 @@ class OfflineCourseList extends React.Component { ...@@ -152,14 +152,14 @@ class OfflineCourseList extends React.Component {
}, },
{ {
title: '报名时间', title: '报名时间',
width: 181, width: 200,
key: 'apply', key: 'apply',
dataIndex: 'apply', dataIndex: 'apply',
sorter: true, sorter: true,
render: (val, item) => { render: (val, item) => {
return ( return (
<div> <div style={{ whiteSpace: 'nowrap' }}>
{item.startTimeApply ? `${formatDate('MM-DD H:i', item.startTimeApply)} ~ ${formatDate('MM-DD H:i', item.endTimeApply)}` : '-'} {item.startTimeApply ? `${window.formatDate('MM-DD H:i', item.startTimeApply)} ~ ${window.formatDate('MM-DD H:i', item.endTimeApply)}` : '-'}
{item.whetherApplyFull === 'YES' && ( {item.whetherApplyFull === 'YES' && (
<span <span
style={{ style={{
...@@ -185,7 +185,7 @@ class OfflineCourseList extends React.Component { ...@@ -185,7 +185,7 @@ class OfflineCourseList extends React.Component {
dataIndex: 'created', dataIndex: 'created',
sorter: true, sorter: true,
render: (val) => { render: (val) => {
return formatDate('YYYY-MM-DD H:i', val); return <span style={{ whiteSpace: 'nowrap' }}>{window.formatDate('YYYY-MM-DD H:i', val)}</span>;
}, },
}, },
{ {
...@@ -360,8 +360,6 @@ class OfflineCourseList extends React.Component { ...@@ -360,8 +360,6 @@ class OfflineCourseList extends React.Component {
// 显示分享弹窗 // 显示分享弹窗
handleShowShareModal = (record, needStr = false) => { handleShowShareModal = (record, needStr = false) => {
const { courseId } = record; const { courseId } = record;
const _appId = appId;
const htmlUrl = `${LIVE_SHARE}offline_detail/${courseId}?id=${User.getStoreId()}`; const htmlUrl = `${LIVE_SHARE}offline_detail/${courseId}?id=${User.getStoreId()}`;
const longUrl = htmlUrl; const longUrl = htmlUrl;
const { courseName, courseMediaVOS } = record; const { courseName, courseMediaVOS } = record;
...@@ -437,7 +435,7 @@ class OfflineCourseList extends React.Component { ...@@ -437,7 +435,7 @@ class OfflineCourseList extends React.Component {
columns={this.parseColumns()} columns={this.parseColumns()}
onChange={this.handleChangeTable} onChange={this.handleChangeTable}
pagination={false} pagination={false}
scroll={{ x: 1500 }} scroll={{ x: 1300 }}
bordered bordered
className='offline-list-table' className='offline-list-table'
/> />
......
import { Dropdown, message, Modal, Switch, Table, Tooltip } from 'antd'; import { Dropdown, message, Modal, Switch, Tooltip } from 'antd';
import User from '@/common/js/user'; import User from '@/common/js/user';
import { PageControl } from '@/components'; import { PageControl } from '@/components';
import { LIVE_SHARE } from '@/domains/course-domain/constants'; import { LIVE_SHARE } from '@/domains/course-domain/constants';
...@@ -147,7 +147,7 @@ class VideoCourseList extends React.Component { ...@@ -147,7 +147,7 @@ class VideoCourseList extends React.Component {
关闭后,学院内不再展示此课程,但学员仍可通过分享的海报/链接查看此课程。 关闭后,学院内不再展示此课程,但学员仍可通过分享的海报/链接查看此课程。
</div> </div>
}> }>
<i className='icon iconfont' style={{ marginLeft: '5px', cursor: 'pointer', color: '#bfbfbf', fontSize: '14px' }}> <i className='icon iconfont' style={{ marginLeft: '5px', cursor: 'pointer', color: '#bfbfbf', fontSize: '14px', fontWeight: 'normal' }}>
&#xe61d; &#xe61d;
</i> </i>
</Tooltip> </Tooltip>
...@@ -185,7 +185,7 @@ class VideoCourseList extends React.Component { ...@@ -185,7 +185,7 @@ class VideoCourseList extends React.Component {
dataIndex: 'created', dataIndex: 'created',
sorter: true, sorter: true,
render: (val) => { render: (val) => {
return formatDate('YYYY-MM-DD H:i', val); return window.formatDate('YYYY-MM-DD H:i', val);
}, },
}, },
{ {
...@@ -195,7 +195,7 @@ class VideoCourseList extends React.Component { ...@@ -195,7 +195,7 @@ class VideoCourseList extends React.Component {
dataIndex: 'updated', dataIndex: 'updated',
sorter: true, sorter: true,
render: (val) => { render: (val) => {
return formatDate('YYYY-MM-DD H:i', val); return window.formatDate('YYYY-MM-DD H:i', val);
}, },
}, },
{ {
...@@ -211,7 +211,7 @@ class VideoCourseList extends React.Component { ...@@ -211,7 +211,7 @@ class VideoCourseList extends React.Component {
<Tooltip title={this.handlePlanName(record.relatedPlanList)} placement='top' arrowPointAtCenter> <Tooltip title={this.handlePlanName(record.relatedPlanList)} placement='top' arrowPointAtCenter>
{record.relatedPlanList.map((item, index) => { {record.relatedPlanList.map((item, index) => {
return ( return (
<span> <span key={item.planId}>
{item.planName} {index < record.relatedPlanList.length - 1 && <span></span>} {item.planName} {index < record.relatedPlanList.length - 1 && <span></span>}
</span> </span>
); );
...@@ -296,7 +296,7 @@ class VideoCourseList extends React.Component { ...@@ -296,7 +296,7 @@ class VideoCourseList extends React.Component {
handlePlanName = (planArray) => { handlePlanName = (planArray) => {
let planStr = ''; let planStr = '';
planArray.map((item, index) => { planArray.forEach((item, index) => {
if (index < planArray.length - 1) { if (index < planArray.length - 1) {
planStr = planStr + item.planName + '、'; planStr = planStr + item.planName + '、';
} else { } else {
......
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
*/ */
import React, { useState } from 'react'; import React, { useState } from 'react';
import { Table, Modal, message, Tooltip, Switch, Dropdown } from 'antd'; import { Modal, message, Tooltip, Switch, Dropdown } from 'antd';
import { withRouter } from 'react-router-dom'; import { withRouter } from 'react-router-dom';
import { PageControl, XMTable } from "@/components"; import { PageControl, XMTable } from '@/components';
import PlanService from '@/domains/plan-domain/planService'; import PlanService from '@/domains/plan-domain/planService';
import SharePlanModal from '../modal/SharePlanModal'; import SharePlanModal from '../modal/SharePlanModal';
import { LIVE_SHARE } from '@/domains/course-domain/constants'; import { LIVE_SHARE } from '@/domains/course-domain/constants';
...@@ -29,6 +29,7 @@ function PlanList(props) { ...@@ -29,6 +29,7 @@ function PlanList(props) {
key: 'planName', key: 'planName',
dataIndex: 'planName', dataIndex: 'planName',
width: '18%', width: '18%',
fixed: 'left',
render: (val, record) => { render: (val, record) => {
return ( return (
<div className='plan_name_item'> <div className='plan_name_item'>
...@@ -86,7 +87,7 @@ function PlanList(props) { ...@@ -86,7 +87,7 @@ function PlanList(props) {
dataIndex: 'created', dataIndex: 'created',
sorter: true, sorter: true,
render: (val) => { render: (val) => {
return window.formatDate('YYYY-MM-DD H:i', val); return <span style={{ whiteSpace: 'nowrap' }}>{window.formatDate('YYYY-MM-DD H:i', val)}</span>;
}, },
}, },
{ {
...@@ -96,12 +97,12 @@ function PlanList(props) { ...@@ -96,12 +97,12 @@ function PlanList(props) {
dataIndex: 'updated', dataIndex: 'updated',
sorter: true, sorter: true,
render: (val) => { render: (val) => {
return window.formatDate('YYYY-MM-DD H:i', val); return <span style={{ whiteSpace: 'nowrap' }}>{window.formatDate('YYYY-MM-DD H:i', val)}</span>;
}, },
}, },
{ {
title: '参培人数', title: '参培人数',
width: 76, width: '10%',
key: 'cultureCustomerNum', key: 'cultureCustomerNum',
dataIndex: 'cultureCustomerNum', dataIndex: 'cultureCustomerNum',
sorter: true, sorter: true,
...@@ -114,7 +115,7 @@ function PlanList(props) { ...@@ -114,7 +115,7 @@ function PlanList(props) {
key: 'operate', key: 'operate',
dataIndex: 'operate', dataIndex: 'operate',
fixed: 'right', fixed: 'right',
width: 176, width: '14.5%',
render: (val, record) => { render: (val, record) => {
return ( return (
<div className='operate'> <div className='operate'>
...@@ -317,7 +318,7 @@ function PlanList(props) { ...@@ -317,7 +318,7 @@ function PlanList(props) {
scroll={{ x: 1400 }} scroll={{ x: 1400 }}
className='plan-list-table' className='plan-list-table'
renderEmpty={{ renderEmpty={{
description: <span style={{ display: 'block', paddingBottom: 24 }}>暂无数据</span> description: <span style={{ display: 'block', paddingBottom: 24 }}>暂无数据</span>,
}} }}
/> />
<div className='box-footer'> <div className='box-footer'>
......
...@@ -134,11 +134,12 @@ function ExaminationManager(props: any) { ...@@ -134,11 +134,12 @@ function ExaminationManager(props: any) {
}, },
{ {
title: '创建时间', title: '创建时间',
width: 150,
dataIndex: 'examCreateTime', dataIndex: 'examCreateTime',
align: fixStr.right, align: fixStr.right,
sorter: true, sorter: true,
sortOrder: field === 'examCreateTime' ? order : sortStatus.type, sortOrder: field === 'examCreateTime' ? order : sortStatus.type,
render: (text: any, record: any) => <span>{moment(text).format('YYYY-MM-DD HH:mm')}</span>, render: (text: any, record: any) => <span style={{ whiteSpace: 'nowrap' }}>{moment(text).format('YYYY-MM-DD HH:mm')}</span>,
}, },
{ {
title: '操作', title: '操作',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment