Commit b12de365 by zhangleyuan

Merge branch 'feature/zhangleyuan/20201124/cloud-class_third-stage' into dev

parents c3832b56 8a728c55
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
"less-loader": "^6.2.0", "less-loader": "^6.2.0",
"microevent": "^1.0.0", "microevent": "^1.0.0",
"mini-css-extract-plugin": "0.9.0", "mini-css-extract-plugin": "0.9.0",
"moment": "^2.27.0", "moment": "^2.20.1",
"optimize-css-assets-webpack-plugin": "5.0.3", "optimize-css-assets-webpack-plugin": "5.0.3",
"photoclip": "^3.4.8", "photoclip": "^3.4.8",
"pnp-webpack-plugin": "1.6.4", "pnp-webpack-plugin": "1.6.4",
......
...@@ -117,7 +117,6 @@ class ShareLiveModal extends React.Component { ...@@ -117,7 +117,6 @@ class ShareLiveModal extends React.Component {
>{`【${courseName}】开课啦,快来学习!`}</div> >{`【${courseName}】开课啦,快来学习!`}</div>
<img <img
src={coverImgSrc} src={coverImgSrc}
crossOrigin="*"
className="course-cover" className="course-cover"
alt="course-cover" alt="course-cover"
/> />
......
...@@ -9,7 +9,6 @@ import React from 'react' ...@@ -9,7 +9,6 @@ import React from 'react'
import { message } from "antd"; import { message } from "antd";
import moment from 'moment'; import moment from 'moment';
require("./MultipleDatePicker.less"); require("./MultipleDatePicker.less");
class MultipleDatePicker extends React.Component { class MultipleDatePicker extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
......
/* /*
* @Author: 陈剑宇 * @Author: 陈剑宇
* @Date: 2020-05-07 14:43:01 * @Date: 2020-05-07 14:43:01
* @LastEditTime: 2021-01-14 19:31:30 * @LastEditTime: 2021-01-16 18:00:10
* @LastEditors: zhangleyuan * @LastEditors: zhangleyuan
* @Description: * @Description:
* @FilePath: /wheat-web-demo/src/domains/basic-domain/constants.ts * @FilePath: /wheat-web-demo/src/domains/basic-domain/constants.ts
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
import { MapInterface } from '@/domains/basic-domain/interface' import { MapInterface } from '@/domains/basic-domain/interface'
// 默认是 dev 环境 // 默认是 dev 环境
const ENV: string = process.env.DEPLOY_ENV || 'rc'; const ENV: string = process.env.DEPLOY_ENV || 'dev';
console.log("process.env.DEPLOY_ENV",process) console.log("process.env.DEPLOY_ENV",process)
const BASIC_HOST_MAP: MapInterface = { const BASIC_HOST_MAP: MapInterface = {
dev: 'https://dev-heimdall.xiaomai5.com/', dev: 'https://dev-heimdall.xiaomai5.com/',
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
* @Author: 吴文洁 * @Author: 吴文洁
* @Date: 2020-08-20 09:21:40 * @Date: 2020-08-20 09:21:40
* @LastEditors: zhangleyuan * @LastEditors: zhangleyuan
* @LastEditTime: 2021-01-11 15:35:49 * @LastEditTime: 2021-01-16 18:00:18
* @Description: * @Description:
* @Copyright: 杭州杰竞科技有限公司 版权所有 * @Copyright: 杭州杰竞科技有限公司 版权所有
*/ */
import { MapInterface } from '@/domains/basic-domain/interface' import { MapInterface } from '@/domains/basic-domain/interface'
const ENV: string = process.env.DEPLOY_ENV || 'rc'; const ENV: string = process.env.DEPLOY_ENV || 'dev';
const appIdMap: MapInterface = { const appIdMap: MapInterface = {
dev: 'wx3ea60e78ddfa277e', dev: 'wx3ea60e78ddfa277e',
......
...@@ -13,13 +13,12 @@ class DateRangePicker extends React.Component { ...@@ -13,13 +13,12 @@ class DateRangePicker extends React.Component {
} }
render() { render() {
const showTime = { showTime: true } const showTime = { showTime: false }
return ( return (
<RangePicker <RangePicker
{...this.props} {...this.props}
format={this.props.format || 'YYYY-MM-DD'} format={this.props.format || 'YYYY-MM-DD'}
allowClear={this.props.allowClear} allowClear={this.props.allowClear}
ranges={this.props.ranges || { '本月': [moment().startOf('month'), moment().endOf('month')], '本周': [moment().startOf('week'), moment().endOf('week')], '上月': [moment().subtract(1, 'M').startOf('month'), moment().subtract(1, 'M').endOf('month')], '上周': [moment().subtract(1, 'w').startOf('week'), moment().subtract(1, 'w').endOf('week')] }}
onChange={(date) => { onChange={(date) => {
if (!_.isEmpty(date)) { if (!_.isEmpty(date)) {
date[0] = date[0].startOf('day') date[0] = date[0].startOf('day')
......
...@@ -82,6 +82,8 @@ class AddLive extends React.Component { ...@@ -82,6 +82,8 @@ class AddLive extends React.Component {
teacherId: null, teacherId: null,
teacherName: null, teacherName: null,
assistant:[], assistant:[],
assistantStoreUserId:[],
assistantNames:[],
liveDate: null, liveDate: null,
timeHorizonStart: null, timeHorizonStart: null,
timeHorizonEnd: null, timeHorizonEnd: null,
...@@ -169,6 +171,8 @@ class AddLive extends React.Component { ...@@ -169,6 +171,8 @@ class AddLive extends React.Component {
const timeHorizonStart = startTime; const timeHorizonStart = startTime;
const timeHorizonEnd = endTime; const timeHorizonEnd = endTime;
const assistant = _.pluck(admins, "adminId"); const assistant = _.pluck(admins, "adminId");
const assistantStoreUserId = _.pluck(admins, "adminStoreUserId"); //编辑时的选中的助教的查询用storeUserId查询
const assistantNames = _.pluck(admins, "adminName");
const addLiveClassInfo = { const addLiveClassInfo = {
assistant, assistant,
liveDate, liveDate,
...@@ -179,6 +183,8 @@ class AddLive extends React.Component { ...@@ -179,6 +183,8 @@ class AddLive extends React.Component {
timeHorizonEnd, timeHorizonEnd,
startTime, startTime,
endTime, endTime,
assistantNames,
assistantStoreUserId
} }
// liveCourseMediaRequests = liveCourseMediaRequests.length // liveCourseMediaRequests = liveCourseMediaRequests.length
...@@ -220,16 +226,21 @@ handleChangeBasicInfo = (field, value) => { ...@@ -220,16 +226,21 @@ handleChangeBasicInfo = (field, value) => {
} }
// 修改上课信息 // 修改上课信息
handleChangeClassInfo = (field, value ,_teacherName) => { handleChangeClassInfo = (field, value ,type, optionValue) => {
const _value = value ? value.valueOf() : null; const _value = value ? value.valueOf() : null;
const { teacherName } = this.state.addLiveClassInfo; const { teacherName } = this.state.addLiveClassInfo;
const { assistantNames } = this.state.addLiveClassInfo;
const { assistantStoreUserId } = this.state.addLiveClassInfo
this.setState({ this.setState({
addLiveClassInfo: { addLiveClassInfo: {
...this.state.addLiveClassInfo, ...this.state.addLiveClassInfo,
[field]: _value, [field]: _value,
teacherName:_teacherName?_teacherName:teacherName teacherName:type==='teacherType'?optionValue:teacherName,
assistantNames:type==='assistantType'?_.pluck(optionValue, "children"):assistantNames,
assistantStoreUserId:type==='assistantType'?_.pluck(optionValue, "key"):assistantStoreUserId,
} }
}); });
// 批量开始时间改变,结束时间自动同步一致 // 批量开始时间改变,结束时间自动同步一致
if (field === 'startTime') { if (field === 'startTime') {
this.setState({ this.setState({
...@@ -444,7 +455,7 @@ handleChangeBasicInfo = (field, value) => { ...@@ -444,7 +455,7 @@ handleChangeBasicInfo = (field, value) => {
} }
} }
if(!teacherId){ if(!teacherId){
message.warning('请选择上课老师'); message.warning('请选择师');
resolve(false); resolve(false);
return; return;
} }
......
...@@ -95,6 +95,9 @@ ...@@ -95,6 +95,9 @@
&.avatar-name-phone { &.avatar-name-phone {
justify-content: flex-start; justify-content: flex-start;
padding-left: 26px; padding-left: 26px;
.avatar{
border-radius:50%;
}
.name { .name {
height: 22px; height: 22px;
font-size: 16px; font-size: 16px;
......
...@@ -48,12 +48,18 @@ class AddLiveClass extends React.Component { ...@@ -48,12 +48,18 @@ class AddLiveClass extends React.Component {
this.getTeacherList(); this.getTeacherList();
this.getAssistantList(); this.getAssistantList();
} }
componentWillReceiveProps(nextProps) {
if(nextProps.data.assistantStoreUserId.length > 0) {
// 获取助教老师列表
this.getAssistantList(1, nextProps.data.assistantStoreUserId);
}
}
getTeacherList(current = 1, selectList){ getTeacherList(current = 1, selectList){
const { teacherQuery,teacherList} = this.state; const { teacherQuery,teacherList} = this.state;
const _query = { const _query = {
...teacherQuery, ...teacherQuery,
current, current,
size:10 size:15
}; };
StoreService.getStoreUserBasicPage( _query).then((res) => { StoreService.getStoreUserBasicPage( _query).then((res) => {
const { result = {} } = res; const { result = {} } = res;
...@@ -68,10 +74,13 @@ class AddLiveClass extends React.Component { ...@@ -68,10 +74,13 @@ class AddLiveClass extends React.Component {
// 获取助教老师列表 // 获取助教老师列表
getAssistantList = (current = 1, selectList) => { getAssistantList = (current = 1, selectList) => {
const { assistantQuery,assistantList} = this.state; const { assistantQuery,assistantList} = this.state;
const { assistantStoreUserId } = this.props.data;
const idList = selectList ? selectList : assistantStoreUserId;
const _query = { const _query = {
...assistantQuery, ...assistantQuery,
current, current,
size:10 idList,
size: idList.length <= 10 ? 10 : idList.length + 10
}; };
StoreService.getStoreUserBasicPage( _query).then((res) => { StoreService.getStoreUserBasicPage( _query).then((res) => {
const { result = {} } = res; const { result = {} } = res;
...@@ -134,7 +143,9 @@ class AddLiveClass extends React.Component { ...@@ -134,7 +143,9 @@ class AddLiveClass extends React.Component {
liveDate, liveDate,
timeHorizonStart, timeHorizonStart,
timeHorizonEnd, timeHorizonEnd,
assistant assistant,
assistantNames,
teacherName
} = data; } = data;
console.log("teacherId",teacherId); console.log("teacherId",teacherId);
return ( return (
...@@ -241,19 +252,23 @@ class AddLiveClass extends React.Component { ...@@ -241,19 +252,23 @@ class AddLiveClass extends React.Component {
</div> </div>
} }
<div className="teacher"> <div className="teacher" id="teacher">
<span className="label"><span className="require">* </span>讲师:</span> <span className="label"><span className="require">* </span>讲师:</span>
<Select <Select
placeholder="请选择讲师" placeholder="请选择讲师"
// key={teacherName}
// defaultValue={teacherName}
value={teacherName}
style={{ width: 240, marginTop: 6 }} style={{ width: 240, marginTop: 6 }}
disabled={!isEdit ? true: false} disabled={!isEdit ? true: false}
showSearch showSearch
value={teacherId}
filterOption={(input, option) => option} filterOption={(input, option) => option}
onPopupScroll={this.handleScrollTeacherList} onPopupScroll={this.handleScrollTeacherList}
onChange={(value,option) => { onChange={(value,option) => {
this.props.onChange('teacherId', value,option.children) console.log("value",value);
this.props.onChange('teacherId',value,'teacherType',option.children)
}} }}
onSearch={(value) => { onSearch={(value) => {
teacherQuery.nickName = value teacherQuery.nickName = value
this.setState({ this.setState({
...@@ -262,6 +277,9 @@ class AddLiveClass extends React.Component { ...@@ -262,6 +277,9 @@ class AddLiveClass extends React.Component {
this.getTeacherList() this.getTeacherList()
}) })
}} }}
getPopupContainer={() =>
document.getElementById("teacher")
}
> >
{_.map(teacherList, (item, index) => { {_.map(teacherList, (item, index) => {
if( !assistant.includes(item.userId) ){ if( !assistant.includes(item.userId) ){
...@@ -271,12 +289,15 @@ class AddLiveClass extends React.Component { ...@@ -271,12 +289,15 @@ class AddLiveClass extends React.Component {
} }
})} })}
</Select> </Select>
</div> </div>
<div className="assistant-teacher"> <div className="assistant-teacher" id="assistant-teacher">
<span className="label">助教:</span> <span className="label">助教:</span>
<Select <Select
id="assistant" id="assistant"
placeholder="请选择助教老师" placeholder="请选择助教老师"
// key={assistantNames}
// defaultValue={assistantNames}
value={assistant} value={assistant}
disabled={!isEdit ? true: false} disabled={!isEdit ? true: false}
mode={'multiple'} mode={'multiple'}
...@@ -285,8 +306,9 @@ class AddLiveClass extends React.Component { ...@@ -285,8 +306,9 @@ class AddLiveClass extends React.Component {
style={{ width: 240, marginTop: 6 }} style={{ width: 240, marginTop: 6 }}
filterOption={(input, option) => option} filterOption={(input, option) => option}
onPopupScroll={this.handleScrollAssistantList} onPopupScroll={this.handleScrollAssistantList}
onChange={(value) => { onChange={(value,option) => {
this.props.onChange('assistant', value) console.log('option',option);
this.props.onChange('assistant',value,'assistantType',option)
}} }}
onSearch={(value) => { onSearch={(value) => {
assistantQuery.nickName = value assistantQuery.nickName = value
...@@ -296,11 +318,14 @@ class AddLiveClass extends React.Component { ...@@ -296,11 +318,14 @@ class AddLiveClass extends React.Component {
this.getAssistantList() this.getAssistantList()
}) })
}} }}
getPopupContainer={() =>
document.getElementById("assistant-teacher")
}
> >
{_.map(assistantList, (item, index) => { {_.map(assistantList, (item, index) => {
if(item.userId !== teacherId){ if(item.userId !== teacherId){
return ( return (
<Select.Option value={item.userId} key={item.userId}>{item.nickName}</Select.Option> <Select.Option value={item.userId} key={item.id}>{item.nickName}</Select.Option>
); );
} }
......
...@@ -15,6 +15,7 @@ import TeacherSearchSelect from "@/modules/common/TeacherSearchSelect"; ...@@ -15,6 +15,7 @@ import TeacherSearchSelect from "@/modules/common/TeacherSearchSelect";
import RangePicker from "@/modules/common/DateRangePicker"; import RangePicker from "@/modules/common/DateRangePicker";
import moment from 'moment'; import moment from 'moment';
import StoreService from "@/domains/store-domain/storeService"; import StoreService from "@/domains/store-domain/storeService";
import User from '@/common/js/user';
import './LiveCourseFilter.less'; import './LiveCourseFilter.less';
const { Search } = Input; const { Search } = Input;
...@@ -126,7 +127,6 @@ class LiveCourseFilter extends React.Component { ...@@ -126,7 +127,6 @@ class LiveCourseFilter extends React.Component {
handleReset = () => { handleReset = () => {
this.setState({ this.setState({
query: { query: {
...this.state.query,
courseName: null, courseName: null,
startTime: null, startTime: null,
endTime: null, endTime: null,
...@@ -134,6 +134,7 @@ class LiveCourseFilter extends React.Component { ...@@ -134,6 +134,7 @@ class LiveCourseFilter extends React.Component {
teacherName: null, teacherName: null,
courseState: undefined, courseState: undefined,
current: 1, current: 1,
shelfState:null,
}, },
}, () => { }, () => {
this.props.onChange(this.state.query); this.props.onChange(this.state.query);
...@@ -174,8 +175,10 @@ class LiveCourseFilter extends React.Component { ...@@ -174,8 +175,10 @@ class LiveCourseFilter extends React.Component {
format={"YYYY-MM-DD"} format={"YYYY-MM-DD"}
onChange={(dates) => { this.handleChangeDates(dates) }} onChange={(dates) => { this.handleChangeDates(dates) }}
style={{ width: "calc(100% - 70px)" }} style={{ width: "calc(100% - 70px)" }}
/> />
</div> </div>
{ User.getUserRole()!=="CloudLecturer" &&
<div className="search-condition__item"> <div className="search-condition__item">
<span>讲师:</span> <span>讲师:</span>
<Select <Select
...@@ -187,7 +190,7 @@ class LiveCourseFilter extends React.Component { ...@@ -187,7 +190,7 @@ class LiveCourseFilter extends React.Component {
onPopupScroll={this.handleScrollTeacherList} onPopupScroll={this.handleScrollTeacherList}
value={teacherId} value={teacherId}
onChange={(value) => { onChange={(value) => {
this.handleChangeQuery('teacherId', value) this.handleChangeQuery('teacherId', value);
}} }}
onSearch={(value) => { onSearch={(value) => {
teacherQuery.nickName = value teacherQuery.nickName = value
...@@ -197,6 +200,18 @@ class LiveCourseFilter extends React.Component { ...@@ -197,6 +200,18 @@ class LiveCourseFilter extends React.Component {
this.getTeacherList() this.getTeacherList()
}) })
}} }}
onClear ={(value)=>{
this.setState({
teacherQuery:{
size: 10,
current: 1,
nickName:null
}
}, () => {
this.getTeacherList()
})
}
}
> >
{_.map(teacherList, (item, index) => { {_.map(teacherList, (item, index) => {
return ( return (
...@@ -205,8 +220,8 @@ class LiveCourseFilter extends React.Component { ...@@ -205,8 +220,8 @@ class LiveCourseFilter extends React.Component {
})} })}
</Select> </Select>
</div> </div>
}
{ expandFilter && { ((expandFilter && User.getUserRole()!=="CloudLecturer") || User.getUserRole()==="CloudLecturer") &&
<div className="search-condition__item"> <div className="search-condition__item">
<span className="select-status">上课状态:</span> <span className="select-status">上课状态:</span>
<Select <Select
......
...@@ -166,24 +166,47 @@ class LiveCourseList extends React.Component { ...@@ -166,24 +166,47 @@ class LiveCourseList extends React.Component {
<img className="course-cover" src={'https://image.xiaomaiketang.com/xm/YNfi45JwFA.png'} /> <img className="course-cover" src={'https://image.xiaomaiketang.com/xm/YNfi45JwFA.png'} />
} }
<div> <div>
{ record.courseName.length > 17?
<Tooltip title={record.courseName}>
<div className="course-name">{record.courseName}</div> <div className="course-name">{record.courseName}</div>
</Tooltip>
:
<div className="course-name">{record.courseName}</div>
}
<div> <div>
<span className="course-time">{formatDate("YYYY-MM-DD H:i",parseInt(record.startTime))}~{formatDate("H:i", parseInt(record.endTime))}</span> <span className="course-time">{formatDate("YYYY-MM-DD H:i",parseInt(record.startTime))}~{formatDate("H:i", parseInt(record.endTime))}</span>
<span className="course-status" style={{color:courseStateShow[record.courseState].color,border:`1px solid ${courseStateShow[record.courseState].color}`}}>{courseStateShow[record.courseState].title}</span> <span className="course-status" style={{color:courseStateShow[record.courseState].color,border:`1px solid ${courseStateShow[record.courseState].color}`}}>{courseStateShow[record.courseState].title}</span>
</div> </div>
<div className="teacher-assistant"> <div className="teacher-assistant">
{ record.teacherName.length > 4 ?
<Tooltip title={record.teacherName}>
<span className="teacher">讲师:{record.teacherName}</span> <span className="teacher">讲师:{record.teacherName}</span>
</Tooltip>
:
<span className="teacher">讲师:{record.teacherName}</span>
}
{ record.admins.length >0 && { record.admins.length >0 &&
<> <>
<span className="split"> | </span> <span className="split"> | </span>
{ this.handleAdminName(record.admins).length > 4?
<Tooltip title={this.handleAdminName(record.admins)}>
<span className="assistant">助教: <span className="assistant">助教:
{ record.admins.map((item,index)=>{ { record.admins.map((item,index)=>{
return <span>{item.adminName} { (index < record.admins.length-1)&&(<span></span>)} </span> return <span>{item.adminName} { (index < record.admins.length-1)&&(<span></span>)} </span>
}) })
} }
</span> </span>
</Tooltip>
:
<span className="assistant">助教:
{ record.admins.map((item,index)=>{
return <span>{item.adminName} { (index < record.admins.length-1)&&(<span></span>)} </span>
})
}
</span>
}
</> </>
} }
</div> </div>
...@@ -236,7 +259,7 @@ class LiveCourseList extends React.Component { ...@@ -236,7 +259,7 @@ class LiveCourseList extends React.Component {
{ {
title: <span> title: <span>
<span>店铺展示</span> <span>店铺展示</span>
<Tooltip title="开启后,用户可在店铺内查看到此课程。若课程“未成功开课”,则系统会自动“关闭”店铺展示。关闭后,店铺内不再展示此课程,但用户仍可通过分享的海报/链接查看此课程。"><i className="icon iconfont" style={{ marginLeft: '5px',cursor:'pointer',color:'#bfbfbf'}}>&#xe61d;</i></Tooltip> <Tooltip title={<div>开启后,用户可在店铺内查看到此课程。若课程“未成功开课”,则系统会自动“关闭”店铺展示。<br/>关闭后,店铺内不再展示此课程,但用户仍可通过分享的海报/链接查看此课程。</div>}><i className="icon iconfont" style={{ marginLeft: '5px',cursor:'pointer',color:'#bfbfbf'}}>&#xe61d;</i></Tooltip>
</span>, </span>,
width: "7%", width: "7%",
dataIndex: "courseware", dataIndex: "courseware",
...@@ -266,7 +289,7 @@ class LiveCourseList extends React.Component { ...@@ -266,7 +289,7 @@ class LiveCourseList extends React.Component {
<span className="operate__item split" key="view_play_back_split"> | </span> <span className="operate__item split" key="view_play_back_split"> | </span>
</> </>
} }
{ (item.courseState==="FINISH" || item.haveRecord==="YES") && { (item.courseState==="FINISH" && item.haveRecord==="YES") &&
<> <>
<div <div
...@@ -342,24 +365,47 @@ class LiveCourseList extends React.Component { ...@@ -342,24 +365,47 @@ class LiveCourseList extends React.Component {
<img className="course-cover" src={'https://image.xiaomaiketang.com/xm/YNfi45JwFA.png'} /> <img className="course-cover" src={'https://image.xiaomaiketang.com/xm/YNfi45JwFA.png'} />
} }
<div> <div>
{ record.courseName.length > 17?
<Tooltip title={record.courseName}>
<div className="course-name">{record.courseName}</div>
</Tooltip>
:
<div className="course-name">{record.courseName}</div> <div className="course-name">{record.courseName}</div>
}
<div> <div>
<span className="course-time">{formatDate("YYYY-MM-DD H:i",parseInt(record.startTime))}~{formatDate("H:i", parseInt(record.endTime))}</span> <span className="course-time">{formatDate("YYYY-MM-DD H:i",parseInt(record.startTime))}~{formatDate("H:i", parseInt(record.endTime))}</span>
<span className="course-status" style={{color:courseStateShow[record.courseState].color,border:`1px solid ${courseStateShow[record.courseState].color}`}}>{courseStateShow[record.courseState].title}</span> <span className="course-status" style={{color:courseStateShow[record.courseState].color,border:`1px solid ${courseStateShow[record.courseState].color}`}}>{courseStateShow[record.courseState].title}</span>
</div> </div>
<div className="teacher-assistant"> <div className="teacher-assistant">
{ record.teacherName.length > 4 ?
<Tooltip title={record.teacherName}>
<span className="teacher">讲师:{record.teacherName}</span> <span className="teacher">讲师:{record.teacherName}</span>
</Tooltip>
:
<span className="teacher">讲师:{record.teacherName}</span>
}
{ record.admins.length >0 && { record.admins.length >0 &&
<> <>
<span className="split"> | </span> <span className="split"> | </span>
{ this.handleAdminName(record.admins).length > 4?
<Tooltip title={this.handleAdminName(record.admins)}>
<span className="assistant">助教: <span className="assistant">助教:
{ record.admins.map((item,index)=>{ { record.admins.map((item,index)=>{
return <span>{item.adminName} { (index < record.admins.length-1)&&(<span></span>)} </span> return <span>{item.adminName} { (index < record.admins.length-1)&&(<span></span>)} </span>
}) })
} }
</span> </span>
</Tooltip>
:
<span className="assistant">助教:
{ record.admins.map((item,index)=>{
return <span>{item.adminName} { (index < record.admins.length-1)&&(<span></span>)} </span>
})
}
</span>
}
</> </>
} }
</div> </div>
...@@ -416,6 +462,17 @@ class LiveCourseList extends React.Component { ...@@ -416,6 +462,17 @@ class LiveCourseList extends React.Component {
this.setState({ columns }) this.setState({ columns })
} }
handleAdminName = (adminArray)=>{
let adminStr = "";
adminArray.map((item,index)=>{
if(index < adminArray.length-1){
adminStr = adminStr + item.adminName + '、';
}else{
adminStr = adminStr + item.adminName
}
})
return adminStr
}
renderMoreOperate = (item) => { renderMoreOperate = (item) => {
return ( return (
<div className="live-course-more-menu"> <div className="live-course-more-menu">
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
color: #333333; color: #333333;
line-height: 20px; line-height: 20px;
font-weight: bold; font-weight: bold;
max-width:238px; max-width:244px;
overflow: hidden; overflow: hidden;
text-overflow:ellipsis; text-overflow:ellipsis;
white-space: nowrap; white-space: nowrap;
...@@ -126,8 +126,14 @@ ...@@ -126,8 +126,14 @@
font-size: 12px; font-size: 12px;
} }
} }
}
}
.ant-tooltip{
max-width:700px !important;
}
.ant-tooltip-inner{
max-width:700px !important;
}
.live-course-more-menu { .live-course-more-menu {
background: white; background: white;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
......
...@@ -121,7 +121,6 @@ class ShareLiveModal extends React.Component { ...@@ -121,7 +121,6 @@ class ShareLiveModal extends React.Component {
<img <img
src={coverImgSrc} src={coverImgSrc}
crossOrigin="*"
className="course-cover" className="course-cover"
/> />
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: 吴文洁 * @Author: 吴文洁
* @Date: 2020-08-05 10:11:57 * @Date: 2020-08-05 10:11:57
* @LastEditors: zhangleyuan * @LastEditors: zhangleyuan
* @LastEditTime: 2021-01-09 11:50:00 * @LastEditTime: 2021-01-15 13:52:10
* @Description: 视频课-搜索模块 * @Description: 视频课-搜索模块
* @Copyright: 杭州杰竞科技有限公司 版权所有 * @Copyright: 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -166,6 +166,18 @@ class VideoCourseFilter extends React.Component { ...@@ -166,6 +166,18 @@ class VideoCourseFilter extends React.Component {
this.getTeacherList() this.getTeacherList()
}) })
}} }}
onClear ={(value)=>{
this.setState({
teacherQuery:{
size: 10,
current: 1,
nickName:null
}
}, () => {
this.getTeacherList()
})
}
}
> >
{_.map(teacherList, (item, index) => { {_.map(teacherList, (item, index) => {
return ( return (
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: 吴文洁 * @Author: 吴文洁
* @Date: 2020-08-05 10:12:45 * @Date: 2020-08-05 10:12:45
* @LastEditors: zhangleyuan * @LastEditors: zhangleyuan
* @LastEditTime: 2021-01-14 19:34:09 * @LastEditTime: 2021-01-15 19:58:12
* @Description: 视频课-列表模块 * @Description: 视频课-列表模块
* @Copyright: 杭州杰竞科技有限公司 版权所有 * @Copyright: 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -23,7 +23,7 @@ import User from '@/common/js/user' ...@@ -23,7 +23,7 @@ import User from '@/common/js/user'
import './VideoCourseList.less'; import './VideoCourseList.less';
const ENV = process.env.DEPLOY_ENV || 'rc'; const ENV = process.env.DEPLOY_ENV || 'dev';
class VideoCourseList extends React.Component { class VideoCourseList extends React.Component {
...@@ -75,7 +75,13 @@ class VideoCourseList extends React.Component { ...@@ -75,7 +75,13 @@ class VideoCourseList extends React.Component {
<div className="record__item"> <div className="record__item">
{/* 上传了封面的话就用上传的封面, 没有的话就取视频的第一帧 */} {/* 上传了封面的话就用上传的封面, 没有的话就取视频的第一帧 */}
<img className="course-cover" src={coverUrl || `${scheduleVideoUrl}?x-oss-process=video/snapshot,t_0,m_fast`} /> <img className="course-cover" src={coverUrl || `${scheduleVideoUrl}?x-oss-process=video/snapshot,t_0,m_fast`} />
<span className="course-name">{record.courseName}</span> { record.courseName.length > 25?
<Tooltip title={record.courseName}>
<div className="course-name">{record.courseName}</div>
</Tooltip>
:
<div className="course-name">{record.courseName}</div>
}
</div> </div>
) )
} }
...@@ -115,7 +121,7 @@ class VideoCourseList extends React.Component { ...@@ -115,7 +121,7 @@ class VideoCourseList extends React.Component {
{ {
title: <span> title: <span>
<span>店铺展示</span> <span>店铺展示</span>
<Tooltip title="开启后,用户可在店铺内查看到此课程。若课程“未成功开课”,则系统会自动“关闭”店铺展示。关闭后,店铺内不再展示此课程,但用户仍可通过分享的海报/链接查看此课程。"><i className="icon iconfont" style={{ marginLeft: '5px',cursor:'pointer',color:'#bfbfbf'}}>&#xe61d;</i></Tooltip> <Tooltip title={<div>开启后,用户可在店铺内查看到此课程。若课程“未成功开课”,则系统会自动“关闭”店铺展示。<br/>关闭后,店铺内不再展示此课程,但用户仍可通过分享的海报/链接查看此课程。</div>}><i className="icon iconfont" style={{ marginLeft: '5px',cursor:'pointer',color:'#bfbfbf'}}>&#xe61d;</i></Tooltip>
</span>, </span>,
width: "7%", width: "7%",
dataIndex: "courseware", dataIndex: "courseware",
......
...@@ -34,6 +34,13 @@ ...@@ -34,6 +34,13 @@
.course-name { .course-name {
color: #666; color: #666;
width:188px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
height:48px;
} }
} }
} }
...@@ -51,3 +58,9 @@ ...@@ -51,3 +58,9 @@
} }
} }
} }
.ant-tooltip{
max-width:700px !important;
}
.ant-tooltip-inner{
max-width:700px !important;
}
\ No newline at end of file
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