Commit cb715f0a by zhangleyuan

feat:解决合并代码后的冲突

parents ca457ba2 c5d57ff3
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: zhangleyuan * @Author: zhangleyuan
* @Date: 2020-12-15 19:58:31 * @Date: 2020-12-15 19:58:31
* @LastEditors: zhangleyuan * @LastEditors: zhangleyuan
* @LastEditTime: 2021-01-04 20:10:06 * @LastEditTime: 2021-01-27 19:54:58
* @Description: 描述一下 * @Description: 描述一下
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
--> -->
...@@ -19,3 +19,7 @@ ...@@ -19,3 +19,7 @@
`2020-01-04` `2020-01-04`
+ 播种计划一期第二阶段初上线 + 播种计划一期第二阶段初上线
`2021-01-27`
+ 播种计划一期第二阶段初上线
\ No newline at end of file
...@@ -277,6 +277,7 @@ class ChooseMembersModal extends React.Component { ...@@ -277,6 +277,7 @@ class ChooseMembersModal extends React.Component {
title={title} title={title}
width={680} width={680}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
> >
<div className='choose-container'> <div className='choose-container'>
{/* 拥有文件夹权限的成员列表 */} {/* 拥有文件夹权限的成员列表 */}
...@@ -288,7 +289,9 @@ class ChooseMembersModal extends React.Component { ...@@ -288,7 +289,9 @@ class ChooseMembersModal extends React.Component {
value={searchKey} value={searchKey}
onSearch={this.handleSearch} onSearch={this.handleSearch}
onChange={this.handleChangeSearchKey} onChange={this.handleChangeSearchKey}
className='search' className='search search-input'
enterButton={<span className="icon iconfont">&#xe832;</span>}
/> />
<div className='container-left-body-table'> <div className='container-left-body-table'>
<Table <Table
......
...@@ -46,6 +46,8 @@ ...@@ -46,6 +46,8 @@
margin: 100px 0 !important; margin: 100px 0 !important;
} }
.avatar{ .avatar{
display: flex;
align-items: center;
.avatar-img{ .avatar-img{
height: 23px; height: 23px;
width: 23px; width: 23px;
...@@ -62,7 +64,7 @@ ...@@ -62,7 +64,7 @@
.span-left{ .span-left{
margin-left: 10px; margin-left: 10px;
.span-left-l{ .span-left-l{
color: #FD9A6A; color: #ffb714;
cursor: pointer; cursor: pointer;
} }
} }
...@@ -78,6 +80,8 @@ ...@@ -78,6 +80,8 @@
.container-right-body{ .container-right-body{
border: 1px solid #E9E9E9; border: 1px solid #E9E9E9;
margin: 10px; margin: 10px;
margin-top: 12px;
min-height:376px;
.edit { .edit {
.edit-icon { .edit-icon {
color:#999; color:#999;
...@@ -88,15 +92,31 @@ ...@@ -88,15 +92,31 @@
height: 16px; height: 16px;
} }
.ant-table { .ant-table .ant-table-body {
min-height: 378px !important; overflow: auto;
max-height: 376px!important;
} }
.ant-table tbody tr:nth-child(even) { .ant-table tbody {
tr{
&:nth-child(even){
background: transparent!important; background: transparent!important;
td{
background: #FFF;
}
}
&:nth-child(odd){
background: #FAFAFA !important;
td{
background: #FAFAFA;
}
}
}
} }
.ant-empty-normal { .ant-empty-normal {
margin: 130px 0 !important; margin: 144px 0 !important;
} }
.avatar{ .avatar{
......
...@@ -250,6 +250,7 @@ class CopyFileModal extends React.Component { ...@@ -250,6 +250,7 @@ class CopyFileModal extends React.Component {
复制到此目录 复制到此目录
</Button> </Button>
]} ]}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
> >
<div className='copy-body'> <div className='copy-body'>
{/* 面包屑 */} {/* 面包屑 */}
...@@ -283,12 +284,12 @@ class CopyFileModal extends React.Component { ...@@ -283,12 +284,12 @@ class CopyFileModal extends React.Component {
{/* 信息列表 */} {/* 信息列表 */}
{ {
(folderList.length>0) && (folderList.length>0) &&
<div <div>
<div className='folder-list'
onScrollCapture={() => this.handleScrollEvent()} onScrollCapture={() => this.handleScrollEvent()}
style={{ height: '320px', overflowY: 'scroll' }} style={{ height: '320px', overflowY: 'auto' }}
ref={this.fileListRef} ref={this.fileListRef}
> >
<div className='folder-list'>
{ {
folderList.map(item => { folderList.map(item => {
const { folderType, folderFormat, folderSize } = item; const { folderType, folderFormat, folderSize } = item;
......
...@@ -47,6 +47,7 @@ ...@@ -47,6 +47,7 @@
right: 20px; right: 20px;
.iconfont { .iconfont {
color: #BFBFBF; color: #BFBFBF;
font-size:12px;
} }
} }
.file-item__size{ .file-item__size{
......
...@@ -297,6 +297,7 @@ class ManagingMembersModal extends React.Component { ...@@ -297,6 +297,7 @@ class ManagingMembersModal extends React.Component {
title={title} title={title}
width={680} width={680}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
> >
<div className='managing-header'> <div className='managing-header'>
<div className='managing-left'> <div className='managing-left'>
......
...@@ -8,8 +8,9 @@ ...@@ -8,8 +8,9 @@
.tool-tip-left{ .tool-tip-left{
cursor: pointer; cursor: pointer;
margin-left: 4px; margin-left: 4px;
width: 14px; width: 16px;
height: 14px; height: 16px;
margin-bottom: 2px;
} }
} }
......
...@@ -32,6 +32,8 @@ class NonCompliantFileModal extends React.Component { ...@@ -32,6 +32,8 @@ class NonCompliantFileModal extends React.Component {
onOk={this.props.onOk} onOk={this.props.onOk}
maskClosable={false} maskClosable={false}
className="prepare-lesson__non-compliant-file-modal" className="prepare-lesson__non-compliant-file-modal"
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
width={560}
> >
<div className="file-list"> <div className="file-list">
<div className="file-list__title">以下文件超出上传限制,无法上传,点击继续上传不会上传以下文件。</div> <div className="file-list__title">以下文件超出上传限制,无法上传,点击继续上传不会上传以下文件。</div>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: 吴文洁 * @Author: 吴文洁
* @Date: 2020-07-23 14:54:16 * @Date: 2020-07-23 14:54:16
* @LastEditors: wufan * @LastEditors: wufan
* @LastEditTime: 2020-12-22 20:29:39 * @LastEditTime: 2021-02-02 19:32:21
* @Description: 大班直播课预览弹窗 * @Description: 大班直播课预览弹窗
* @Copyright: 杭州杰竞科技有限公司 版权所有 * @Copyright: 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -82,6 +82,7 @@ class PreviewCourseModal extends React.Component { ...@@ -82,6 +82,7 @@ class PreviewCourseModal extends React.Component {
footer={null} footer={null}
maskClosable={false} maskClosable={false}
className="preview-live-course-modal" className="preview-live-course-modal"
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
> >
<div className="container__wrap"> <div className="container__wrap">
<div className="container"> <div className="container">
...@@ -135,7 +136,7 @@ class PreviewCourseModal extends React.Component { ...@@ -135,7 +136,7 @@ class PreviewCourseModal extends React.Component {
</Otherwise> </Otherwise>
</Choose> </Choose>
<div className="container__introduction"> <div className="container__introduction">
<div className="container__introduction__title">直播简介</div> <div className="container__introduction__title">直播简介</div>
<div className="container__introduction__list editor-box"> <div className="container__introduction__list editor-box">
{ {
liveCourseMediaRequests.map((item, index) => { liveCourseMediaRequests.map((item, index) => {
......
...@@ -49,7 +49,8 @@ ...@@ -49,7 +49,8 @@
.title__state { .title__state {
min-width: 40px; min-width: 40px;
height: 17px; height: 17px;
padding: 0 2px; padding: 0px 8px;
border-radius: 10px;
margin-left: 6px; margin-left: 6px;
font-size: 12px; font-size: 12px;
color: #FFF; color: #FFF;
......
...@@ -98,7 +98,6 @@ class SelectPrepareFileModal extends React.Component { ...@@ -98,7 +98,6 @@ class SelectPrepareFileModal extends React.Component {
// 根据当前根节点获取文件列表 // 根据当前根节点获取文件列表
const { selectType } = this.props; const { selectType } = this.props;
const { query, folderList, currentRootDisk } = this.state; const { query, folderList, currentRootDisk } = this.state;
const { instId } = window.currentUserInstInfo;
const _params = { const _params = {
...query, ...query,
...params, ...params,
...@@ -324,21 +323,7 @@ class SelectPrepareFileModal extends React.Component { ...@@ -324,21 +323,7 @@ class SelectPrepareFileModal extends React.Component {
const _fileList = [...fileList]; const _fileList = [...fileList];
_fileList.map((file, index) => { _fileList.map((file, index) => {
let { size, type, name } = file; let { size, type, name } = file;
// if (!type) {
// type = getFileTypeByName(name);
// }
// if (type.indexOf('image') > -1 && size > 5 * DEFAULT_SIZE_UNIT) {
// nonCompliantFileList.push(file);
// _fileList.splice(index, 1);
// }
// if (type.indexOf('audio') > -1 && size > 20 * DEFAULT_SIZE_UNIT) {
// nonCompliantFileList.push(file);
// _fileList.splice(index, 1);
// }
// if (type.indexOf('video') > -1 && size > 500 * DEFAULT_SIZE_UNIT) {
// nonCompliantFileList.push(file);
// _fileList.splice(index, 1);
// }
if (localFileTypeMap.indexOf(type) > -1 && size > FileVerifyMap[type].maxSize * DEFAULT_SIZE_UNIT) { if (localFileTypeMap.indexOf(type) > -1 && size > FileVerifyMap[type].maxSize * DEFAULT_SIZE_UNIT) {
nonCompliantFileList.push(file); nonCompliantFileList.push(file);
_fileList.splice(index, 1); _fileList.splice(index, 1);
...@@ -386,7 +371,6 @@ class SelectPrepareFileModal extends React.Component { ...@@ -386,7 +371,6 @@ class SelectPrepareFileModal extends React.Component {
const { folderPathList, currentRootDisk, uploadFolderPath } = this.state; const { folderPathList, currentRootDisk, uploadFolderPath } = this.state;
const { scene } = this.props; const { scene } = this.props;
const { teacherId, instId } = window.currentUserInstInfo;
const currentFolder = folderPathList[folderPathList.length - 1]; const currentFolder = folderPathList[folderPathList.length - 1];
const { id = null } = uploadFolderPath || currentFolder; const { id = null } = uploadFolderPath || currentFolder;
let { size, type, name } = file; let { size, type, name } = file;
...@@ -395,17 +379,6 @@ class SelectPrepareFileModal extends React.Component { ...@@ -395,17 +379,6 @@ class SelectPrepareFileModal extends React.Component {
type = getFileTypeByName(name) type = getFileTypeByName(name)
} }
// const params = {
// name,
// resourceId,
// folderSize: size,
// folderFormat: type,
// folderTypeEnum: resourceId ? 'FILE' : 'FOLDER',
// disk: currentRootDisk.disk,
// instId: instId,
// createUser: teacherId ? "TEACHER" : "ADMIN",
// parentId: id
// }
const params = { const params = {
name, name,
resourceId, resourceId,
...@@ -552,6 +525,7 @@ class SelectPrepareFileModal extends React.Component { ...@@ -552,6 +525,7 @@ class SelectPrepareFileModal extends React.Component {
width={680} width={680}
onCancel={this.handleClose} onCancel={this.handleClose}
className="select-prepare-file-modal" className="select-prepare-file-modal"
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
> >
{ {
// 机构可见磁盘大于1且在选择文件的情况下才显示tabs // 机构可见磁盘大于1且在选择文件的情况下才显示tabs
...@@ -595,12 +569,12 @@ class SelectPrepareFileModal extends React.Component { ...@@ -595,12 +569,12 @@ class SelectPrepareFileModal extends React.Component {
</div> </div>
<Choose> <Choose>
<When condition={!_.isEmpty(folderList)}> <When condition={!_.isEmpty(folderList)}>
<div <div>
<div className="file-list"
onScrollCapture={() => this.handleScrollEvent()} onScrollCapture={() => this.handleScrollEvent()}
style={{ height: '320px', overflowY: 'scroll' }} style={{ height: '320px', overflowY: 'auto' }}
ref="fileListRef" ref="fileListRef"
> >
<div className="file-list">
{ {
folderList.map((folder, index) => { folderList.map((folder, index) => {
const { folderType, folderSize, folderFormat, folderName } = folder; const { folderType, folderSize, folderFormat, folderName } = folder;
......
...@@ -84,9 +84,9 @@ ...@@ -84,9 +84,9 @@
&__size { &__size {
margin-left: 40px; margin-left: 40px;
} }
.iconfont { .iconfont {
color: #BFBFBF; color: #BFBFBF;
font-size:12px;
} }
} }
} }
......
...@@ -109,6 +109,7 @@ class ShareLiveModal extends React.Component { ...@@ -109,6 +109,7 @@ class ShareLiveModal extends React.Component {
maskClosable={false} maskClosable={false}
className="share-live-modal" className="share-live-modal"
onCancel={this.props.close} onCancel={this.props.close}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
> >
<div className="left" id="poster"> <div className="left" id="poster">
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
padding: 0 12px; padding: 0 12px;
line-height: 32px;
span.icon { span.icon {
color:#FF9D14; color:#FF9D14;
line-height: 20px; line-height: 20px;
...@@ -14,7 +15,7 @@ ...@@ -14,7 +15,7 @@
p { p {
color:#666666; color:#666666;
font-size: 14px; font-size: 14px;
line-height:20px; line-height:25px;
margin-left: 12px; margin-left: 12px;
} }
} }
......
...@@ -111,7 +111,9 @@ const CropperModal = (props: CropperModalProps) => { ...@@ -111,7 +111,9 @@ const CropperModal = (props: CropperModalProps) => {
确定 确定
</Button>, </Button>,
]} ]}
onCancel={close}> onCancel={close}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
>
<Row> <Row>
<Col span={14}> <Col span={14}>
<div className="container"> <div className="container">
......
...@@ -13,7 +13,6 @@ class DownloadLiveModal extends React.Component { ...@@ -13,7 +13,6 @@ class DownloadLiveModal extends React.Component {
type: 'pre', type: 'pre',
} }
} }
render() { render() {
const { url } = this.props; const { url } = this.props;
const { image, tip, text, type } = this.state; const { image, tip, text, type } = this.state;
...@@ -25,6 +24,7 @@ class DownloadLiveModal extends React.Component { ...@@ -25,6 +24,7 @@ class DownloadLiveModal extends React.Component {
onCancel={() => { onCancel={() => {
this.props.onCancel(); this.props.onCancel();
}} }}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
> >
<img className="download-image" src={image} alt="" /> <img className="download-image" src={image} alt="" />
<p className="download-tip">{tip}</p> <p className="download-tip">{tip}</p>
......
...@@ -117,6 +117,7 @@ class ImgCutModal extends React.Component { ...@@ -117,6 +117,7 @@ class ImgCutModal extends React.Component {
visible={visible} visible={visible}
onCancel={onClose} onCancel={onClose}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
footer={[ footer={[
<Choose> <Choose>
<When condition={!needReUpload}> <When condition={!needReUpload}>
......
...@@ -147,6 +147,7 @@ class ImgCutModalNew extends React.Component { ...@@ -147,6 +147,7 @@ class ImgCutModalNew extends React.Component {
visible={visible} visible={visible}
onCancel={onClose} onCancel={onClose}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
footer={[ footer={[
!needReUpload ? !needReUpload ?
<Button <Button
......
...@@ -55,8 +55,7 @@ ...@@ -55,8 +55,7 @@
cursor: pointer; cursor: pointer;
vertical-align: top; vertical-align: top;
&:hover { &:hover {
background: #FFB714; background: rgba(255, 183, 20,.2);
opacity:0.2;
border-radius:4px; border-radius:4px;
} }
&.before-disabled { &.before-disabled {
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
padding: 0 12px; padding: 0 12px;
line-height: 32px;
.icon { .icon {
color:#FF9D14; color:#FF9D14;
font-size:14px; font-size:14px;
...@@ -14,7 +15,7 @@ ...@@ -14,7 +15,7 @@
p { p {
color:#666666; color:#666666;
font-size: 14px; font-size: 14px;
line-height:20px; line-height:25px;
margin-left:8px; margin-left:8px;
} }
} }
......
...@@ -40,17 +40,6 @@ ...@@ -40,17 +40,6 @@
display: block; display: block;
} }
.ant-btn-primary {
text-shadow: none !important;
box-shadow: none !important;
i {
color: #fff !important;
}
span {
color: #fff !important;
}
}
.ant-switch-small:after { .ant-switch-small:after {
top: 0.3px; top: 0.3px;
...@@ -144,6 +133,10 @@ ...@@ -144,6 +133,10 @@
font-size: 14px !important; font-size: 14px !important;
} }
.ant-input[disabled] {
background-color: #F0F2F5 !important;
}
.ant-dropdown-link { .ant-dropdown-link {
line-height: 20px !important; line-height: 20px !important;
} }
...@@ -214,6 +207,9 @@ ...@@ -214,6 +207,9 @@
} }
} }
} }
.ant-table-body {
overflow-y: auto !important;
}
.ant-table-fixed-right .ant-table-fixed { .ant-table-fixed-right .ant-table-fixed {
border-left: none !important; border-left: none !important;
...@@ -221,22 +217,12 @@ ...@@ -221,22 +217,12 @@
} }
/* 按钮padding改成8px */
.ant-btn {
height: 28px !important;
line-height:20px !important;
font-weight: 400 !important;
border: 1px solid #e8e8e8;
box-shadow: none !important;
}
.ant-input-search-button { .ant-input-search-button {
height: 32px !important; height: 32px !important;
} }
.ant-btn-loading {
padding-left:18px !important;
}
.ant-avatar { .ant-avatar {
width: 35px; width: 35px;
...@@ -298,6 +284,9 @@ ...@@ -298,6 +284,9 @@
.ant-checkbox-wrapper+.ant-checkbox-wrapper { .ant-checkbox-wrapper+.ant-checkbox-wrapper {
margin-left: 0 !important; margin-left: 0 !important;
} }
.ant-checkbox-inner {
border-radius: 2px !important;
}
.ant-menu { .ant-menu {
.iconfont { .iconfont {
...@@ -349,10 +338,7 @@ mr0 { ...@@ -349,10 +338,7 @@ mr0 {
transform: translate(-8px, -8px) scale(0.7) !important; transform: translate(-8px, -8px) scale(0.7) !important;
} }
.ant-input,
.ant-btn {
border-color: @xm-color-border;
}
.ant-select-selection { .ant-select-selection {
border-color: @xm-color-border !important; border-color: @xm-color-border !important;
...@@ -372,18 +358,7 @@ mr0 { ...@@ -372,18 +358,7 @@ mr0 {
color:#ffb000; color:#ffb000;
} }
.ant-btn-primary.ant-btn {
background-color: @xm-color-text-select-primary !important;
border-color: @xm-color-text-select-primary !important;
&:hover {
background-color: #fdb089 !important;
border-color: #fdb089 !important;
}
span {
color: #fff !important;
}
}
.ant-select-open .ant-select-selection { .ant-select-open .ant-select-selection {
box-shadow: none; box-shadow: none;
...@@ -427,11 +402,7 @@ mr0 { ...@@ -427,11 +402,7 @@ mr0 {
background: rgba(204, 204, 204, 1); background: rgba(204, 204, 204, 1);
} }
.ant-modal-footer {
.ant-btn {
font-weight: normal !important;
}
}
.ant-avatar { .ant-avatar {
background: #e8e8e8; background: #e8e8e8;
...@@ -516,12 +487,7 @@ mr0 { ...@@ -516,12 +487,7 @@ mr0 {
margin: 0 12px; margin: 0 12px;
} }
.ant-btn-danger:hover,
.ant-btn-danger:focus {
color: #fff !important;
background-color: #ffb000 !important;
border-color: #ffb000 !important;
}
.ant-modal-confirm-info .ant-modal-confirm-body > .anticon { .ant-modal-confirm-info .ant-modal-confirm-body > .anticon {
color: #ffb000!important; color: #ffb000!important;
...@@ -609,16 +575,6 @@ mr0 { ...@@ -609,16 +575,6 @@ mr0 {
padding: 16px 24px !important; padding: 16px 24px !important;
} }
} }
.ant-btn-dangerous{
background:#FF4F4F !important;
color:#FFF !important;
border:none !important;
}
.ant-btn-dangerous:hover, .ant-btn-dangerous:focus{
background:#FF4F4F !important;
color:#FFF !important;
border:none !important;
}
.row-dragging { .row-dragging {
background: #fafafa; background: #fafafa;
...@@ -634,15 +590,198 @@ mr0 { ...@@ -634,15 +590,198 @@ mr0 {
visibility: visible; visibility: visible;
} }
//滚动条的公共样式处理
.ant-select-dropdown .rc-virtual-list-scrollbar .rc-virtual-list-scrollbar-thumb{ .ant-select-dropdown .rc-virtual-list-scrollbar .rc-virtual-list-scrollbar-thumb{
background: #D6D6D6 !important; background: #D6D6D6 !important;
width:6px !important;
height:80px !important;
}
.ant-select-dropdown .rc-virtual-list-scrollbar .rc-virtual-list-scrollbar-thumb:hover{
background: #ADADAD !important;
} }
//table的公共的样式的处理
.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > thead > tr > .ant-table-cell-fix-right-first::after, .ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > thead > tr > .ant-table-cell-fix-right-first::after,
.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tbody > tr > .ant-table-cell-fix-right-first::after .ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tbody > tr > .ant-table-cell-fix-right-first::after
{ {
border-right:none !important; border-right:none !important;
} }
.ant-table tbody tr:nth-child(2n) td{ // .ant-table tbody tr:nth-child(2n) td{
background: #FAFAFA !important; // background: #FAFAFA !important;
// }
.ant-table-thead > tr > th{
font-weight:normal !important;
}
//按钮的样式的公共处理
.ant-btn-loading {
padding-left:18px !important;
}
.ant-input,
.ant-btn {
border-color: @xm-color-border;
} }
//普通按钮样式
.ant-btn {
height:28px !important;
font-weight: normal !important;
border: 1px solid #e8e8e8;
box-shadow: none !important;
padding:0px 12px !important;
color:#666 !important;
.span{
line-height:1;
}
&:hover {
border:1px solid rgba(232, 232, 232, 1) !important;
opacity: 0.7;
}
&:focus,
&:active{
color:#C6C6C6 !important;
border:1px solid #C6C6C6 !important;
}
}
//主要按钮样式
.ant-btn-primary.ant-btn {
text-shadow: none !important;
box-shadow: none !important;
i {
color: #fff !important;
}
span {
color: #fff !important;
}
background-color: @xm-color-text-select-primary !important;
border-color: @xm-color-text-select-primary !important;
border:none !important;
&:hover {
background-color: #FFB714 !important;
opacity: 0.8 !important;
}
&:focus,
&:active{
background-color:#FFA100 !important;
}
}
//警示按钮样式
.ant-btn-dangerous{
background:rgba(255, 79, 79, 1) !important;
color:#FFF !important;
border:none !important;
}
.ant-btn-dangerous:hover{
background:rgba(255, 79, 79, 0.7) !important;
color:#FFF !important;
border:none !important;
}
.ant-btn-dangerous:focus,
.ant-btn-dangerous:active{
background:rgba(255, 79, 79,1) !important;
color:#FFF !important;
border:none !important;
}
//disabled的按钮的样式
.ant-btn-primary[disabled], .ant-btn-primary[disabled]:hover, .ant-btn-primary[disabled]:focus, .ant-btn-primary[disabled]:active{
background: #F7F8F9 !important;
border: 1px solid #E8E8E8 !important;
color: #CCCCCC !important;
span{
color: #CCCCCC !important;
}
}
//时间选择器后的按钮样式
.ant-picker-ok{
.ant-btn{
padding:0 8px !important;
}
}
//搜索框后面的按钮样式
.ant-input-search-button{
height:32px !important;
}
.ant-input-search > .ant-input-group > .ant-input-group-addon:last-child .ant-input-search-button{
background: #FFF !important;
border-top:1px solid #dfdfdf !important;
border-right:1px solid #dfdfdf !important;
border-bottom:1px solid #dfdfdf !important;
}
.ant-input-search .ant-input:hover, .ant-input-search .ant-input:focus{
border-color: #ffcb3d;
border: 1px solid #d9d9d9 !important;
box-shadow: none !important;
border-right: 0px !important;
}
// .ant-input-search:focus{
// border-top:1px solid #FFA100 !important;
// border-right:1px solid #FFA100 !important;
// border-bottom:1px solid #FFA100 !important;
// }
.ant-input-search > .ant-input-group > .ant-input-group-addon:last-child .ant-input-search-button span{
color:#bfbfbf !important;
font-size:12px;
}
.ant-modal-footer {
.ant-btn {
font-weight: 400 !important;
}
}
//模态框的样式的公共处理
//删除模态框的样式的的处理
.ant-modal-confirm{
.ant-modal-body{
padding:32px 32px 24px 32px !important;
.ant-modal-confirm-title{
color: rgba(0, 0, 0, 0.85)
}
.ant-modal-confirm-content{
min-height:44px;
color: rgba(0, 0, 0, 0.65)
}
}
}
//普通模态框的样式的处理
.ant-modal{
.ant-modal-title{
color:#333;
font-weight:400;
}
.ant-modal-close-x{
.modal-close-icon{
color:#999;
font-size:12px;
margin-right:6px;
font-weight:400;
}
}
.ant-modal-footer{
padding:10px 24px;
}
}
// 排序小三角
.ant-table-column-sorter {
margin-left: 2px!important;
}
...@@ -1278,10 +1278,10 @@ input:focus { ...@@ -1278,10 +1278,10 @@ input:focus {
margin-right: 16px; margin-right: 16px;
} }
.ant-btn-primary.ant-btn:hover { // .ant-btn-primary.ant-btn:hover {
border-color: rgba(255, 183, 20, .8) !important; // border-color: rgba(255, 183, 20, .8) !important;
background-color: rgba(255, 183, 20, .8) !important; // background-color: rgba(255, 183, 20, .8) !important;
} // }
.noTitleModal { .noTitleModal {
.ant-modal-close { .ant-modal-close {
...@@ -1320,10 +1320,10 @@ input:focus { ...@@ -1320,10 +1320,10 @@ input:focus {
display: none !important; display: none !important;
} }
.ant-btn.subButton { // .ant-btn.subButton {
border: 1px solid #fdb089; // border: 1px solid #fdb089;
color: #fdb089; // color: #fdb089;
} // }
.ant-form-explain-holder[aria-hidden=true] { .ant-form-explain-holder[aria-hidden=true] {
display: none; display: none;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
@import './antd.less'; @import './antd.less';
.page { .page {
position: absolute; position: relative;
top: 0px; top: 0px;
left: 0px; left: 0px;
right: 0; right: 0;
...@@ -78,9 +78,9 @@ ...@@ -78,9 +78,9 @@
margin-left: 16px; margin-left: 16px;
height: 40px; height: 40px;
} }
>.ant-btn { // >.ant-btn {
height: 28px!important; // height: 28px!important;
} // }
*:first-child { *:first-child {
margin-left: 0px; margin-left: 0px;
} }
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
margin: 8px 16px; margin: 8px 16px;
} }
&:last-child{ &:last-child{
margin-bottom: 16px; margin-bottom: 13px;
} }
} }
......
/* /*
* @Author: 陈剑宇 * @Author: 陈剑宇
* @Date: 2020-05-07 14:43:01 * @Date: 2020-05-07 14:43:01
* @LastEditTime: 2021-01-25 20:05:28 * @LastEditTime: 2021-02-23 18:13:40
* @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
......
...@@ -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-25 20:04:20 * @LastEditTime: 2021-01-27 19:53:17
* @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',
......
...@@ -27,7 +27,7 @@ class DateRangePicker extends React.Component { ...@@ -27,7 +27,7 @@ class DateRangePicker extends React.Component {
this.props.onChange(date) this.props.onChange(date)
}} }}
{...showTime} {...showTime}
suffixIcon={<span class="icon iconfont">&#xe838;</span>} suffixIcon={<span className="icon iconfont">&#xe838;</span>}
/> />
) )
} }
......
...@@ -187,9 +187,6 @@ class AddLive extends React.Component { ...@@ -187,9 +187,6 @@ class AddLive extends React.Component {
assistantStoreUserId assistantStoreUserId
} }
// liveCourseMediaRequests = liveCourseMediaRequests.length
// ? [...liveCourseMediaRequests]
// : [{ contentType:"INTRO",mediaType: 'TEXT', mediaContent: '', key: window.random_string(16) }, ...liveCourseMediaRequests];
const addLiveIntroInfo = { const addLiveIntroInfo = {
liveCourseWarmMedia, liveCourseWarmMedia,
...@@ -242,15 +239,15 @@ handleChangeBasicInfo = (field, value) => { ...@@ -242,15 +239,15 @@ handleChangeBasicInfo = (field, value) => {
}); });
// 批量开始时间改变,结束时间自动同步一致 // 批量开始时间改变,结束时间自动同步一致
if (field === 'startTime') { // if (field === 'startTime') {
this.setState({ // this.setState({
addLiveClassInfo: { // addLiveClassInfo: {
...this.state.addLiveClassInfo, // ...this.state.addLiveClassInfo,
[field]: _value, // [field]: _value,
endTime: _value, // endTime: _value,
} // }
}); // });
} // }
} }
// 修改简介 // 修改简介
...@@ -359,9 +356,6 @@ handleChangeBasicInfo = (field, value) => { ...@@ -359,9 +356,6 @@ handleChangeBasicInfo = (field, value) => {
updateUserId:User.getUserId(), updateUserId:User.getUserId(),
liveCourseId: id, liveCourseId: id,
} }
// if(params.liveCourseWarmMedia && !params.liveCourseWarmMedia.mediaUrl) {
// delete params.liveCourseWarmMedia
// }
CourseService.updateLiveCloudCourse(params).then((res) => { CourseService.updateLiveCloudCourse(params).then((res) => {
if (res.success){ if (res.success){
message.success("更新成功"); message.success("更新成功");
......
...@@ -232,17 +232,6 @@ class AddLiveBasic extends React.Component { ...@@ -232,17 +232,6 @@ class AddLiveBasic extends React.Component {
<img src={coverUrl} /> <img src={coverUrl} />
</div> </div>
<div className="opt-btns"> <div className="opt-btns">
{/* <input
type="file"
value={fileName} // 避免选择同一文件 value不改变 不触发onChange事件
accept="image/png, image/jpeg, image/bmp, image/jpg"
ref="stagePicInputFile"
style={{display: 'none'}}
onChange={() => { this.setState({
showSelectFileModal: true
}) }}
/> */}
<Button onClick={() => { <Button onClick={() => {
this.setState({ this.setState({
showSelectFileModal: true showSelectFileModal: true
...@@ -252,17 +241,17 @@ class AddLiveBasic extends React.Component { ...@@ -252,17 +241,17 @@ class AddLiveBasic extends React.Component {
className={`default-btn ${isDefaultCover ? 'disabled' : ''}`} className={`default-btn ${isDefaultCover ? 'disabled' : ''}`}
onClick={this.handleResetCoverUrl} onClick={this.handleResetCoverUrl}
>使用默认图</span> >使用默认图</span>
<div className="tips">建议尺寸690*398像素,图片支持jpg、jpeg、png格式。</div> <div className="tips">建议尺寸1280*720像素,图片支持jpg、jpeg、png格式。</div>
</div> </div>
</div> </div>
</div> </div>
<div className="course-catalog"> <div className="course-catalog">
<span className="label"><span className="require">*</span>课程分类:</span> <span className="label"><span className="require">*</span>课程分类:</span>
{ pageType === 'add' && { pageType === 'add' &&
<Cascader options={courseCatalogList} displayRender={ label => label.join('-')} fieldNames={fieldNames} onChange={this.catalogChange} style={{ width: 240 }} placeholder="请选择课程分类" /> <Cascader options={courseCatalogList} displayRender={ label => label.join('-')} fieldNames={fieldNames} onChange={this.catalogChange} style={{ width: 240 }} placeholder="请选择课程分类" suffixIcon={<span className="icon iconfont" style={{fontSize:'12px',color:'#BFBFBF'}}>&#xe835;</span>}/>
} }
{ (pageType === 'edit' && categoryName) && { (pageType === 'edit' && categoryName) &&
<Cascader disabled={!isEdit ? true: false} defaultValue={[categoryName]} options={courseCatalogList} displayRender={ label => label.join('-')} fieldNames={fieldNames} onChange={this.catalogChange} style={{ width: 240 }} placeholder="请选择课程分类" /> <Cascader disabled={!isEdit ? true: false} defaultValue={[categoryName]} options={courseCatalogList} displayRender={ label => label.join('-')} fieldNames={fieldNames} onChange={this.catalogChange} style={{ width: 240 }} placeholder="请选择课程分类" suffixIcon={<span className="icon iconfont" style={{fontSize:'12px',color:'#BFBFBF'}}>&#xe835;</span>} />
} }
</div> </div>
<ImgCutModalNew <ImgCutModalNew
...@@ -303,9 +292,11 @@ class AddLiveBasic extends React.Component { ...@@ -303,9 +292,11 @@ class AddLiveBasic extends React.Component {
width={1080} width={1080}
visible={visible} visible={visible}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
onCancel={() => { onCancel={() => {
this.setState({ visible: false }); this.setState({ visible: false });
}} }}
zIndex={10001}
footer={[ footer={[
<Button <Button
key="back" key="back"
......
...@@ -20,7 +20,7 @@ import moment from 'moment'; ...@@ -20,7 +20,7 @@ import moment from 'moment';
import './AddLiveClass.less'; import './AddLiveClass.less';
const defaultTeacherQuery = { const defaultTeacherQuery = {
size: 10, size: 15,
current: 1, current: 1,
nickName:null nickName:null
} }
...@@ -50,7 +50,6 @@ class AddLiveClass extends React.Component { ...@@ -50,7 +50,6 @@ class AddLiveClass extends React.Component {
} }
componentWillReceiveProps(nextProps) { componentWillReceiveProps(nextProps) {
if(nextProps.data.assistantStoreUserId.sort().toString() !== this.props.data.assistantStoreUserId.sort().toString()) { if(nextProps.data.assistantStoreUserId.sort().toString() !== this.props.data.assistantStoreUserId.sort().toString()) {
console.log('我在改变')
// 获取助教老师列表 // 获取助教老师列表
this.getAssistantList(1, nextProps.data.assistantStoreUserId); this.getAssistantList(1, nextProps.data.assistantStoreUserId);
} }
...@@ -69,14 +68,12 @@ class AddLiveClass extends React.Component { ...@@ -69,14 +68,12 @@ class AddLiveClass extends React.Component {
this.setState({ this.setState({
hasNext, hasNext,
teacherList: list, teacherList: list,
teacherQuery:{..._query}
}) })
}); });
} }
// 获取助教老师列表 // 获取助教老师列表
getAssistantList = (current = 1, selectList) => { getAssistantList = (current = 1, selectList) => {
console.log('zhujiao',current);
const { assistantQuery,assistantList} = this.state; const { assistantQuery,assistantList} = this.state;
const { assistantStoreUserId } = this.props.data; const { assistantStoreUserId } = this.props.data;
const idList = selectList ? selectList : assistantStoreUserId; const idList = selectList ? selectList : assistantStoreUserId;
...@@ -95,6 +92,7 @@ class AddLiveClass extends React.Component { ...@@ -95,6 +92,7 @@ class AddLiveClass extends React.Component {
this.setState({ this.setState({
assistantHasNext:hasNext, assistantHasNext:hasNext,
assistantList: list, assistantList: list,
assistantQuery:{..._query}
}) })
}); });
} }
...@@ -103,13 +101,15 @@ class AddLiveClass extends React.Component { ...@@ -103,13 +101,15 @@ class AddLiveClass extends React.Component {
handleScrollTeacherList = (e) => { handleScrollTeacherList = (e) => {
const { hasNext } = this.state; const { hasNext } = this.state;
const container = e.target; const container = e.target;
//判定元素是否滚动到底部
const scrollToBottom = container && container.scrollHeight <= container.clientHeight + container.scrollTop; const scrollToBottom = container && container.scrollHeight <= container.clientHeight + container.scrollTop;
if (scrollToBottom && hasNext) { if (scrollToBottom && hasNext) {
const { teacherQuery } = this.state; const { teacherQuery } = this.state;
let _teacherQuery = teacherQuery; let _teacherQuery = teacherQuery;
_teacherQuery.current = _teacherQuery.current + 1 _teacherQuery.current = _teacherQuery.current + 1
this.setState({ this.setState({
assistantQuery:{..._teacherQuery} teacherQuery:{..._teacherQuery}
},()=>{this.getTeacherList(_teacherQuery.current)}) },()=>{this.getTeacherList(_teacherQuery.current)})
} }
} }
...@@ -118,6 +118,8 @@ class AddLiveClass extends React.Component { ...@@ -118,6 +118,8 @@ class AddLiveClass extends React.Component {
handleScrollAssistantList = (e) => { handleScrollAssistantList = (e) => {
const { assistantHasNext } = this.state; const { assistantHasNext } = this.state;
const container = e.target; const container = e.target;
//判定元素是否滚动到底部
const scrollToBottom = container && container.scrollHeight <= container.clientHeight + container.scrollTop; const scrollToBottom = container && container.scrollHeight <= container.clientHeight + container.scrollTop;
if (scrollToBottom && assistantHasNext) { if (scrollToBottom && assistantHasNext) {
const { assistantQuery } = this.state; const { assistantQuery } = this.state;
...@@ -192,25 +194,27 @@ class AddLiveClass extends React.Component { ...@@ -192,25 +194,27 @@ class AddLiveClass extends React.Component {
<div className="hour" id="hour"> <div className="hour" id="hour">
<span className="label"><span className="require">*</span>上课时间:</span> <span className="label"><span className="require">*</span>上课时间:</span>
<TimePicker <TimePicker
className="time-picker"
format="HH:mm" format="HH:mm"
value={startTime ? moment(startTime) : null} value={startTime ? moment(startTime) : null}
placeholder="开始时间" placeholder="开始时间"
showNow={false}
style={{ width: 100, minWidth: 100}} style={{ width: 100, minWidth: 100}}
onChange={(time) => { onSelect={(time) => {
console.log('startTime',time);
this.props.onChange('startTime', time); this.props.onChange('startTime', time);
}} }}
getPopupContainer={() => getPopupContainer={() =>
document.getElementById("hour") document.getElementById("hour")
} }
/>&nbsp;&nbsp;~&nbsp;&nbsp; />&nbsp;&nbsp;~&nbsp;&nbsp;
<TimePicker <TimePicker
className="time-picker"
format="HH:mm" format="HH:mm"
value={endTime ? moment(endTime) : null} value={endTime ? moment(endTime) : null}
placeholder="结束时间" placeholder="结束时间"
showNow={false}
style={{ width: 100, minWidth: 100 }} style={{ width: 100, minWidth: 100 }}
onChange={(time) => { onSelect={(time) => {
this.props.onChange('endTime', time) this.props.onChange('endTime', time)
}} }}
getPopupContainer={() => getPopupContainer={() =>
...@@ -247,7 +251,8 @@ class AddLiveClass extends React.Component { ...@@ -247,7 +251,8 @@ class AddLiveClass extends React.Component {
getPopupContainer={() => getPopupContainer={() =>
document.getElementById("time") document.getElementById("time")
} }
onChange={(time) => { this.props.onChange('timeHorizonStart', time) }} onSelect={(time) => { this.props.onChange('timeHorizonStart', time) }}
showNow={false}
/> />
<TimePicker <TimePicker
disabled={!isEdit} disabled={!isEdit}
...@@ -259,7 +264,8 @@ class AddLiveClass extends React.Component { ...@@ -259,7 +264,8 @@ class AddLiveClass extends React.Component {
getPopupContainer={() => getPopupContainer={() =>
document.getElementById("time") document.getElementById("time")
} }
onChange={(time) => { this.props.onChange('timeHorizonEnd', time) }} onSelect={(time) => { this.props.onChange('timeHorizonEnd', time) }}
showNow={false}
/> />
</div> </div>
...@@ -269,19 +275,21 @@ class AddLiveClass extends React.Component { ...@@ -269,19 +275,21 @@ class AddLiveClass extends React.Component {
<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} value={teacherName}
style={{ width: 240, marginTop: 6 }} style={{ width: 240, marginTop: 6 }}
disabled={!isEdit ? true: false} disabled={!isEdit ? true: false}
showSearch showSearch
allowClear
filterOption={(input, option) => option} filterOption={(input, option) => option}
onPopupScroll={this.handleScrollTeacherList} onPopupScroll={this.handleScrollTeacherList}
suffixIcon={<span className="icon iconfont" style={{fontSize:'12px',color:'#BFBFBF'}}>&#xe835;</span>}
onChange={(value,option) => { onChange={(value,option) => {
console.log("value",value); if(option){
this.props.onChange('teacherId',value,'teacherType',option.children) this.props.onChange('teacherId',value,'teacherType',option.children)
}else{
this.props.onChange('teacherId',value,'teacherType',"")
}
}} }}
onSearch={(value) => { onSearch={(value) => {
teacherQuery.nickName = value teacherQuery.nickName = value
this.setState({ this.setState({
...@@ -290,6 +298,18 @@ class AddLiveClass extends React.Component { ...@@ -290,6 +298,18 @@ class AddLiveClass extends React.Component {
this.getTeacherList() this.getTeacherList()
}) })
}} }}
onClear ={(value)=>{
this.setState({
teacherQuery:{
size: 15,
current: 1,
nickName:null
}
}, () => {
this.getTeacherList()
})
}
}
getPopupContainer={() => getPopupContainer={() =>
document.getElementById("teacher") document.getElementById("teacher")
} }
...@@ -320,8 +340,14 @@ class AddLiveClass extends React.Component { ...@@ -320,8 +340,14 @@ class AddLiveClass extends React.Component {
filterOption={(input, option) => option} filterOption={(input, option) => option}
onPopupScroll={this.handleScrollAssistantList} onPopupScroll={this.handleScrollAssistantList}
onChange={(value,option) => { onChange={(value,option) => {
console.log('option',option); if(!option.length){
assistantQuery.nickName = ""
this.setState({
assistantQuery
},()=>this.props.onChange('assistant',value,'assistantType',option) )
}else{
this.props.onChange('assistant',value,'assistantType',option) this.props.onChange('assistant',value,'assistantType',option)
}
}} }}
onSearch={(value) => { onSearch={(value) => {
assistantQuery.nickName = value assistantQuery.nickName = value
...@@ -331,6 +357,14 @@ class AddLiveClass extends React.Component { ...@@ -331,6 +357,14 @@ class AddLiveClass extends React.Component {
this.getAssistantList() this.getAssistantList()
}) })
}} }}
onClear ={(value)=>{
assistantQuery.nickName = ""
this.setState({
assistantQuery
}, () => {
this.getAssistantList()
})
}}
getPopupContainer={() => getPopupContainer={() =>
document.getElementById("assistant-teacher") document.getElementById("assistant-teacher")
} }
......
...@@ -204,4 +204,9 @@ ...@@ -204,4 +204,9 @@
.multiple-calendar { .multiple-calendar {
line-height: 40px; line-height: 40px;
} }
.ant-picker-dropdown{
.ant-picker-footer{
display:none !important;
}
}
} }
\ No newline at end of file
...@@ -140,6 +140,7 @@ class AddLiveIntro extends React.Component { ...@@ -140,6 +140,7 @@ class AddLiveIntro extends React.Component {
handleChangeIntro = (index, value, length) => { handleChangeIntro = (index, value, length) => {
const { liveCourseMediaRequests } = this.props.data; const { liveCourseMediaRequests } = this.props.data;
console.log('index',index);
liveCourseMediaRequests[index].mediaContent = value; liveCourseMediaRequests[index].mediaContent = value;
liveCourseMediaRequests[index].mediaContentLength = length liveCourseMediaRequests[index].mediaContentLength = length
this.props.onChange('liveCourseMediaRequests', liveCourseMediaRequests); this.props.onChange('liveCourseMediaRequests', liveCourseMediaRequests);
...@@ -263,7 +264,7 @@ class AddLiveIntro extends React.Component { ...@@ -263,7 +264,7 @@ class AddLiveIntro extends React.Component {
<div className="introduce"> <div className="introduce">
<span className="label">直播简介:</span> <span className="label">直播简介:</span>
<div className="content"> <div className="content">
<div className="intro-list"> <div className="intro-list">
{ {
......
...@@ -9,9 +9,6 @@ ...@@ -9,9 +9,6 @@
import React from 'react'; import React from 'react';
import { withRouter } from 'react-router-dom'; import { withRouter } from 'react-router-dom';
import { Row,Col, Input, Select ,Tooltip} from 'antd'; import { Row,Col, Input, Select ,Tooltip} from 'antd';
import Bus from '@/core/bus';
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";
...@@ -71,7 +68,11 @@ class LiveCourseFilter extends React.Component { ...@@ -71,7 +68,11 @@ class LiveCourseFilter extends React.Component {
const scrollToBottom = container && container.scrollHeight <= container.clientHeight + container.scrollTop; const scrollToBottom = container && container.scrollHeight <= container.clientHeight + container.scrollTop;
if (scrollToBottom && hasNext) { if (scrollToBottom && hasNext) {
const { teacherQuery } = this.state; const { teacherQuery } = this.state;
this.getTeacherList(teacherQuery.current + 1); let _teacherQuery = teacherQuery;
_teacherQuery.current = _teacherQuery.current + 1
this.setState({
teacherQuery:{..._teacherQuery}
},()=>{this.getTeacherList(_teacherQuery.current)})
} }
} }
...@@ -164,6 +165,8 @@ class LiveCourseFilter extends React.Component { ...@@ -164,6 +165,8 @@ class LiveCourseFilter extends React.Component {
onChange={(e) => { this.handleChangeQuery('courseName', e.target.value)}} onChange={(e) => { this.handleChangeQuery('courseName', e.target.value)}}
onSearch={ () => { this.props.onChange(this.state.query) } } onSearch={ () => { this.props.onChange(this.state.query) } }
style={{ width: "calc(100% - 70px)" }} style={{ width: "calc(100% - 70px)" }}
className="search-input"
enterButton={<span className="icon iconfont">&#xe832;</span>}
/> />
</div> </div>
<div className="search-condition__item"> <div className="search-condition__item">
...@@ -187,6 +190,7 @@ class LiveCourseFilter extends React.Component { ...@@ -187,6 +190,7 @@ class LiveCourseFilter extends React.Component {
allowClear allowClear
filterOption={(input, option) => option} filterOption={(input, option) => option}
onPopupScroll={this.handleScrollTeacherList} onPopupScroll={this.handleScrollTeacherList}
suffixIcon={<span className="icon iconfont" style={{fontSize:'12px',color:'#BFBFBF'}}>&#xe835;</span>}
value={teacherId} value={teacherId}
onChange={(value) => { onChange={(value) => {
this.handleChangeQuery('teacherId', value); this.handleChangeQuery('teacherId', value);
...@@ -229,6 +233,7 @@ class LiveCourseFilter extends React.Component { ...@@ -229,6 +233,7 @@ class LiveCourseFilter extends React.Component {
allowClear={true} allowClear={true}
value={courseState} value={courseState}
onChange={(value) => { this.handleChangeQuery('courseState', value) }} onChange={(value) => { this.handleChangeQuery('courseState', value) }}
suffixIcon={<span className="icon iconfont" style={{fontSize:'12px',color:'#BFBFBF'}}>&#xe835;</span>}
> >
<Option value="UN_START">待开课</Option> <Option value="UN_START">待开课</Option>
<Option value="STARTING">上课中</Option> <Option value="STARTING">上课中</Option>
...@@ -246,6 +251,7 @@ class LiveCourseFilter extends React.Component { ...@@ -246,6 +251,7 @@ class LiveCourseFilter extends React.Component {
allowClear={true} allowClear={true}
value={shelfState} value={shelfState}
onChange={(value) => { this.handleChangeQuery('shelfState', value) }} onChange={(value) => { this.handleChangeQuery('shelfState', value) }}
suffixIcon={<span className="icon iconfont" style={{fontSize:'12px',color:'#BFBFBF'}}>&#xe835;</span>}
> >
<Option value="YES">开启</Option> <Option value="YES">开启</Option>
<Option value="NO">关闭</Option> <Option value="NO">关闭</Option>
......
...@@ -262,7 +262,8 @@ class LiveCourseList extends React.Component { ...@@ -262,7 +262,8 @@ class LiveCourseList extends React.Component {
<Tooltip title={<div>开启后,用户可在店铺内查看到此课程。若课程“未成功开课”,则系统会自动“关闭”店铺展示。<br/>关闭后,店铺内不再展示此课程,但用户仍可通过分享的海报/链接查看此课程。</div>}><i className="icon iconfont" style={{ marginLeft: '5px',cursor:'pointer',color:'#bfbfbf',fontSize:'14px'}}>&#xe61d;</i></Tooltip> <Tooltip title={<div>开启后,用户可在店铺内查看到此课程。若课程“未成功开课”,则系统会自动“关闭”店铺展示。<br/>关闭后,店铺内不再展示此课程,但用户仍可通过分享的海报/链接查看此课程。</div>}><i className="icon iconfont" style={{ marginLeft: '5px',cursor:'pointer',color:'#bfbfbf',fontSize:'14px'}}>&#xe61d;</i></Tooltip>
</span>, </span>,
width: "9%", width: "9%",
dataIndex: "courseware", key: "shelfState",
dataIndex: "shelfState",
render: (val, item, index) => { render: (val, item, index) => {
return ( return (
<Switch defaultChecked={item.shelfState==="YES"?true:false} onChange={()=>this.changeShelfState(item)}/> <Switch defaultChecked={item.shelfState==="YES"?true:false} onChange={()=>this.changeShelfState(item)}/>
...@@ -491,12 +492,14 @@ class LiveCourseList extends React.Component { ...@@ -491,12 +492,14 @@ class LiveCourseList extends React.Component {
} }
handleDelete = (record)=>{ handleDelete = (record)=>{
return confirm({ return confirm({
title: '你确定要删除直播课', title: '你确定要删除直播课',
content: '删除后,用户将不能观看直播课/回放', content: '删除后,用户将不能观看直播课/回放',
icon: <span className="icon iconfont default-confirm-icon">&#xe839; </span>, icon: <span className="icon iconfont default-confirm-icon">&#xe839; </span>,
okText: '删除', okText: '删除',
okType: 'danger', okType: 'danger',
cancelText: '取消', cancelText: '取消',
width:440,
height:188,
onOk: () => { onOk: () => {
this.deleteConfirm(record); this.deleteConfirm(record);
} }
......
.live-course-list { .live-course-list {
margin-top: 16px; margin-top: 12px;
.record__item { .record__item {
display: flex; display: flex;
align-items: center; align-items: center;
...@@ -128,12 +128,6 @@ ...@@ -128,12 +128,6 @@
} }
} }
.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);
......
...@@ -10,6 +10,6 @@ ...@@ -10,6 +10,6 @@
} }
.ant-btn { .ant-btn {
margin-right: 12px; margin-right: 8px;
} }
} }
\ No newline at end of file
...@@ -55,6 +55,7 @@ class AbnormalModal extends React.Component { ...@@ -55,6 +55,7 @@ class AbnormalModal extends React.Component {
footer={null} footer={null}
onCancel={onClose} onCancel={onClose}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
className="abnormal-modal" className="abnormal-modal"
> >
{ content } { content }
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
* @Description: 云课堂充值 * @Description: 云课堂充值
* @Author: zhangyi * @Author: zhangyi
* @Date: 2020-05-09 15:02:39 * @Date: 2020-05-09 15:02:39
* @LastEditors: wufan * @LastEditors: zhangleyuan
* @LastEditTime: 2020-12-22 20:30:26 * @LastEditTime: 2021-02-01 13:59:54
*/ */
import React from 'react'; import React from 'react';
import { Modal, message, Form, InputNumber, Row, Col, Button } from "antd"; import { Modal, message, Form, InputNumber, Row, Col, Button } from "antd";
...@@ -287,6 +287,7 @@ class AccountChargeModal extends React.Component { ...@@ -287,6 +287,7 @@ class AccountChargeModal extends React.Component {
width={550} width={550}
footer={null} footer={null}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
className="account-charge-modal" className="account-charge-modal"
onCancel={() => { onCancel={() => {
this.handleCancel(); this.handleCancel();
......
...@@ -79,6 +79,7 @@ class AccountChargeRecords extends React.Component{ ...@@ -79,6 +79,7 @@ class AccountChargeRecords extends React.Component{
width={680} width={680}
footer={null} footer={null}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
onCancel={() => { onCancel={() => {
this.props.close(); this.props.close();
}} }}
......
...@@ -47,6 +47,7 @@ class ChargeArgeement extends React.Component { ...@@ -47,6 +47,7 @@ class ChargeArgeement extends React.Component {
className="charge-agreement-modal" className="charge-agreement-modal"
footer={null} footer={null}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
onCancel={() => { onCancel={() => {
this.props.close(); this.props.close();
}} }}
......
...@@ -31,6 +31,7 @@ function ChargeExplainModal(props) { ...@@ -31,6 +31,7 @@ function ChargeExplainModal(props) {
className="charge-explain-modal" className="charge-explain-modal"
width={880} width={880}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
onCancel={() => { onCancel={() => {
props.close(); props.close();
}} }}
......
...@@ -107,6 +107,7 @@ class ChargingDetailModal extends React.Component { ...@@ -107,6 +107,7 @@ class ChargingDetailModal extends React.Component {
visible={true} visible={true}
width={680} width={680}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
className="charging-detail-modal" className="charging-detail-modal"
footer={null} footer={null}
onCancel={() => { onCancel={() => {
......
...@@ -47,6 +47,7 @@ class CheckBalanceModal extends React.Component { ...@@ -47,6 +47,7 @@ class CheckBalanceModal extends React.Component {
width={550} width={550}
title="余额不足" title="余额不足"
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
onCancel={() => { onCancel={() => {
this.props.close(); this.props.close();
}} }}
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* @Author: zhangyi * @Author: zhangyi
* @Date: 2020-05-12 09:43:48 * @Date: 2020-05-12 09:43:48
* @LastEditors: zhangleyuan * @LastEditors: zhangleyuan
* @LastEditTime: 2020-12-28 15:19:18 * @LastEditTime: 2021-02-01 14:00:19
*/ */
import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
...@@ -235,6 +235,7 @@ class ClassRecordModal extends React.Component { ...@@ -235,6 +235,7 @@ class ClassRecordModal extends React.Component {
footer={null} footer={null}
width={680} width={680}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
className="class-record-modal" className="class-record-modal"
onCancel={() => { onCancel={() => {
this.props.close(); this.props.close();
......
...@@ -24,6 +24,7 @@ class LackConsumeStudentModal extends React.Component { ...@@ -24,6 +24,7 @@ class LackConsumeStudentModal extends React.Component {
okText="继续保存" okText="继续保存"
onOk={onOk} onOk={onOk}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
onCancel={onClose} onCancel={onClose}
className="lack-consume-student-modal" className="lack-consume-student-modal"
> >
......
...@@ -289,6 +289,7 @@ class LiveStudentListModal extends React.Component { ...@@ -289,6 +289,7 @@ class LiveStudentListModal extends React.Component {
width={680} width={680}
footer={null} footer={null}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
className="live-student-list-modal" className="live-student-list-modal"
onCancel={this.props.close} onCancel={this.props.close}
> >
......
...@@ -304,6 +304,7 @@ class ManageCoursewareModal extends React.Component { ...@@ -304,6 +304,7 @@ class ManageCoursewareModal extends React.Component {
title="课件管理" title="课件管理"
footer={null} footer={null}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
className="manage-courseware-modal" className="manage-courseware-modal"
width={_.isEmpty(_list) ? 680 : 800} width={_.isEmpty(_list) ? 680 : 800}
onCancel={() => { onCancel={() => {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* @Author: zhangyi * @Author: zhangyi
* @Date: 2020-05-12 09:43:48 * @Date: 2020-05-12 09:43:48
* @LastEditors: zhangleyuan * @LastEditors: zhangleyuan
* @LastEditTime: 2020-12-09 16:23:05 * @LastEditTime: 2021-02-01 14:00:36
*/ */
import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
...@@ -179,6 +179,7 @@ class PlayBackRecordModal extends React.Component { ...@@ -179,6 +179,7 @@ class PlayBackRecordModal extends React.Component {
width={680} width={680}
visible={true} visible={true}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
footer={null} footer={null}
onCancel={() => { onCancel={() => {
this.props.close(); this.props.close();
......
/* /*
* @Author: 吴文洁 * @Author: 吴文洁
* @Date: 2020-07-23 14:54:16 * @Date: 2020-07-23 14:54:16
* @LastEditors: zhangleyuan * @LastEditors: wufan
* @LastEditTime: 2021-01-09 16:26:03 * @LastEditTime: 2021-02-01 16:33:18
* @Description: 大班直播课预览弹窗 * @Description: 大班直播课预览弹窗
* @Copyright: 杭州杰竞科技有限公司 版权所有 * @Copyright: 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -121,6 +121,7 @@ class PreviewCourseModal extends React.Component { ...@@ -121,6 +121,7 @@ class PreviewCourseModal extends React.Component {
onCancel={this.props.close} onCancel={this.props.close}
footer={null} footer={null}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
className="preview-live-course-modal" className="preview-live-course-modal"
> >
<div className="container__wrap"> <div className="container__wrap">
...@@ -171,9 +172,9 @@ class PreviewCourseModal extends React.Component { ...@@ -171,9 +172,9 @@ class PreviewCourseModal extends React.Component {
<div className="container__introduction"> <div className="container__introduction">
{ type === 'videoCourse' ? { type === 'videoCourse' ?
<div className="container__introduction__title">视频简介</div> <div className="container__introduction__title">视频简介</div>
: :
<div className="container__introduction__title">直播简介</div> <div className="container__introduction__title">直播简介</div>
} }
<div className="container__introduction__list editor-box"> <div className="container__introduction__list editor-box">
{ {
......
...@@ -49,7 +49,8 @@ ...@@ -49,7 +49,8 @@
.title__state { .title__state {
min-width: 40px; min-width: 40px;
height: 17px; height: 17px;
padding: 0 2px; padding: 0px 8px;
border-radius: 10px;
margin-left: 6px; margin-left: 6px;
font-size: 12px; font-size: 12px;
color: #FFF; color: #FFF;
......
...@@ -158,6 +158,7 @@ class ShareLiveModal extends React.Component { ...@@ -158,6 +158,7 @@ class ShareLiveModal extends React.Component {
visible={true} visible={true}
footer={null} footer={null}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
className="share-live-modal" className="share-live-modal"
onCancel={this.props.close} onCancel={this.props.close}
> >
...@@ -213,7 +214,7 @@ class ShareLiveModal extends React.Component { ...@@ -213,7 +214,7 @@ class ShareLiveModal extends React.Component {
{ type === "videoClass" && { type === "videoClass" &&
<div className="sub-title">用户可通过打开链接,报名观看视频</div> <div className="sub-title">用户可通过打开链接,报名观看视频</div>
} }
<div className="content"> <div className="content url-content">
<div className="share-url" id="shareUrl">{shareUrl}</div> <div className="share-url" id="shareUrl">{shareUrl}</div>
<Button type="primary" onClick={this.handleCopy}>复制</Button> <Button type="primary" onClick={this.handleCopy}>复制</Button>
</div> </div>
......
...@@ -99,7 +99,6 @@ ...@@ -99,7 +99,6 @@
display: flex; display: flex;
align-items: center; align-items: center;
margin-top: 8px; margin-top: 8px;
.share-url { .share-url {
width: 212px; width: 212px;
overflow: hidden; overflow: hidden;
...@@ -116,6 +115,17 @@ ...@@ -116,6 +115,17 @@
margin-left: -2px; margin-left: -2px;
} }
} }
.url-content{
position:relative;
&:after{
content:'';
width: 12px;
height: 22px;
background: #EFEFEF;
position:absolute;
right:56px;
}
}
.share-poster { .share-poster {
margin-bottom: 40px; margin-bottom: 40px;
......
...@@ -76,6 +76,7 @@ class StartLiveModal extends React.Component { ...@@ -76,6 +76,7 @@ class StartLiveModal extends React.Component {
width={550} width={550}
footer={null} footer={null}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
onCancel={this.props.close} onCancel={this.props.close}
> >
<div className="live-start-modal"> <div className="live-start-modal">
......
...@@ -46,6 +46,7 @@ class TeacherLiveModal extends React.Component { ...@@ -46,6 +46,7 @@ class TeacherLiveModal extends React.Component {
onCancel={this.props.close} onCancel={this.props.close}
footer={null} footer={null}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
> >
<TeacherTip isXiaomai={isXiaomai} /> <TeacherTip isXiaomai={isXiaomai} />
</Modal> </Modal>
......
...@@ -377,6 +377,7 @@ class SelectStudent extends React.Component { ...@@ -377,6 +377,7 @@ class SelectStudent extends React.Component {
width={720} width={720}
onCancel={this.props.close} onCancel={this.props.close}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
className="livecourse__select-student-modal" className="livecourse__select-student-modal"
onOk={this.handleSelectDone} onOk={this.handleSelectDone}
> >
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: 吴文洁 * @Author: 吴文洁
* @Date: 2020-08-05 10:07:47 * @Date: 2020-08-05 10:07:47
* @LastEditors: zhangleyuan * @LastEditors: zhangleyuan
* @LastEditTime: 2021-01-25 13:46:13 * @LastEditTime: 2021-02-04 16:41:05
* @Description: 视频课新增/编辑页 * @Description: 视频课新增/编辑页
* @Copyright: 杭州杰竞科技有限公司 版权所有 * @Copyright: 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -468,7 +468,6 @@ class AddVideoCourse extends React.Component { ...@@ -468,7 +468,6 @@ class AddVideoCourse extends React.Component {
</div> </div>
<div className="sub-content"> <div className="sub-content">
<Button <Button
type="primary"
onClick={() => { onClick={() => {
this.setState({ this.setState({
showSelectFileModal: true showSelectFileModal: true
...@@ -513,10 +512,10 @@ class AddVideoCourse extends React.Component { ...@@ -513,10 +512,10 @@ class AddVideoCourse extends React.Component {
<div className="course-catalog required"> <div className="course-catalog required">
<span className="label">课程分类:</span> <span className="label">课程分类:</span>
{ (pageType === 'add') && { (pageType === 'add') &&
<Cascader defaultValue={[categoryName]} options={courseCatalogList} displayRender={ label => label.join('-')} fieldNames={fieldNames} onChange={this.catalogChange} style={{ width: 240 }} placeholder="请选择课程分类" /> <Cascader defaultValue={[categoryName]} options={courseCatalogList} displayRender={ label => label.join('-')} fieldNames={fieldNames} onChange={this.catalogChange} style={{ width: 240 }} placeholder="请选择课程分类" suffixIcon={<span className="icon iconfont" style={{fontSize:'12px',color:'#BFBFBF'}}>&#xe835;</span>}/>
} }
{ (pageType === 'edit' && categoryName ) && { (pageType === 'edit' && categoryName ) &&
<Cascader defaultValue={[categoryName]} options={courseCatalogList} displayRender={ label => label.join('-')} fieldNames={fieldNames} onChange={this.catalogChange} style={{ width: 240 }} placeholder="请选择课程分类" /> <Cascader defaultValue={[categoryName]} options={courseCatalogList} displayRender={ label => label.join('-')} fieldNames={fieldNames} onChange={this.catalogChange} style={{ width: 240 }} placeholder="请选择课程分类" suffixIcon={<span className="icon iconfont" style={{fontSize:'12px',color:'#BFBFBF'}}>&#xe835;</span>}/>
} }
</div> </div>
<div className="intro-info mt16"> <div className="intro-info mt16">
......
...@@ -121,7 +121,7 @@ ...@@ -121,7 +121,7 @@
margin-top: 4px; margin-top: 4px;
.tips { .tips {
margin-left: 16px; margin-left: 4px;
color: #999; color: #999;
} }
} }
......
...@@ -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-15 13:52:10 * @LastEditTime: 2021-02-23 16:35:37
* @Description: 视频课-搜索模块 * @Description: 视频课-搜索模块
* @Copyright: 杭州杰竞科技有限公司 版权所有 * @Copyright: 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -11,7 +11,6 @@ import React from 'react'; ...@@ -11,7 +11,6 @@ import React from 'react';
import { Row, Input, Select,Tooltip } from 'antd'; import { Row, Input, Select,Tooltip } from 'antd';
import RangePicker from "@/modules/common/DateRangePicker"; import RangePicker from "@/modules/common/DateRangePicker";
// import TeacherSelectV5 from '@/modules/classManage_V5/classDetail/TeacherSelectV5';
import './VideoCourseFilter.less'; import './VideoCourseFilter.less';
import moment from 'moment'; import moment from 'moment';
...@@ -70,7 +69,11 @@ class VideoCourseFilter extends React.Component { ...@@ -70,7 +69,11 @@ class VideoCourseFilter extends React.Component {
const scrollToBottom = container && container.scrollHeight <= container.clientHeight + container.scrollTop; const scrollToBottom = container && container.scrollHeight <= container.clientHeight + container.scrollTop;
if (scrollToBottom && hasNext) { if (scrollToBottom && hasNext) {
const { teacherQuery } = this.state; const { teacherQuery } = this.state;
this.getTeacherList(teacherQuery.current + 1); let _teacherQuery = teacherQuery;
_teacherQuery.current = _teacherQuery.current + 1
this.setState({
teacherQuery:{..._teacherQuery}
},()=>{this.getTeacherList(_teacherQuery.current)})
} }
} }
// 改变搜索条件 // 改变搜索条件
...@@ -142,6 +145,7 @@ class VideoCourseFilter extends React.Component { ...@@ -142,6 +145,7 @@ class VideoCourseFilter extends React.Component {
onChange={(e) => { this.handleChangeQuery('courseName', e.target.value)}} onChange={(e) => { this.handleChangeQuery('courseName', e.target.value)}}
onSearch={ () => { this.props.onChange(this.state.query) } } onSearch={ () => { this.props.onChange(this.state.query) } }
style={{ width: "calc(100% - 84px)" }} style={{ width: "calc(100% - 84px)" }}
enterButton={<span className="icon iconfont">&#xe832;</span>}
/> />
</div> </div>
...@@ -154,6 +158,7 @@ class VideoCourseFilter extends React.Component { ...@@ -154,6 +158,7 @@ class VideoCourseFilter extends React.Component {
allowClear allowClear
filterOption={(input, option) => option} filterOption={(input, option) => option}
onPopupScroll={this.handleScrollTeacherList} onPopupScroll={this.handleScrollTeacherList}
suffixIcon={<span className="icon iconfont" style={{fontSize:'12px',color:'#BFBFBF'}}>&#xe835;</span>}
value={operatorId} value={operatorId}
onChange={(value) => { onChange={(value) => {
this.handleChangeQuery('operatorId', value) this.handleChangeQuery('operatorId', value)
...@@ -185,16 +190,6 @@ class VideoCourseFilter extends React.Component { ...@@ -185,16 +190,6 @@ class VideoCourseFilter extends React.Component {
); );
})} })}
</Select> </Select>
{/* <TeacherSelectV5
ref="TeacherSelect"
showSearch={true}
allowClear={true}
style={{ width: "calc(100% - 70px)" }}
onSelect={(teacherId) => { this.handleChangeQuery('teacherId', teacherId)}}
placeholder='请选择创建人'
label='创建人'
defaultValue={teacherId}
/> */}
</div> </div>
<div className="search-condition__item"> <div className="search-condition__item">
...@@ -217,6 +212,7 @@ class VideoCourseFilter extends React.Component { ...@@ -217,6 +212,7 @@ class VideoCourseFilter extends React.Component {
allowClear={true} allowClear={true}
value={shelfState} value={shelfState}
onChange={(value) => { this.handleChangeQuery('shelfState', value) }} onChange={(value) => { this.handleChangeQuery('shelfState', value) }}
suffixIcon={<span className="icon iconfont" style={{fontSize:'12px',color:'#BFBFBF'}}>&#xe835;</span>}
> >
<Option value="YES">开启</Option> <Option value="YES">开启</Option>
<Option value="NO">关闭</Option> <Option value="NO">关闭</Option>
......
.video-course-filter { .video-course-filter {
position: relative; position: relative;
.video-list-table{
// tr:nth-child(even){
// background: transparent !important;
// }
// tr:nth-child(odd){
// td{
// background: #FAFAFA !important;
// }
// }
}
.search-condition { .search-condition {
width: calc(100% - 80px); width: calc(100% - 80px);
display: flex; display: flex;
......
...@@ -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 {
...@@ -147,7 +147,7 @@ class VideoCourseList extends React.Component { ...@@ -147,7 +147,7 @@ class VideoCourseList extends React.Component {
}, },
{ {
title: '创建时间', title: '创建时间',
width: "10%", width: 181,
key: 'created', key: 'created',
dataIndex: 'created', dataIndex: 'created',
sorter: true, sorter: true,
...@@ -157,7 +157,7 @@ class VideoCourseList extends React.Component { ...@@ -157,7 +157,7 @@ class VideoCourseList extends React.Component {
}, },
{ {
title: '更新时间', title: '更新时间',
width: "10%", width: 181,
key: 'updated', key: 'updated',
dataIndex: 'updated', dataIndex: 'updated',
sorter: true, sorter: true,
...@@ -244,6 +244,7 @@ class VideoCourseList extends React.Component { ...@@ -244,6 +244,7 @@ class VideoCourseList extends React.Component {
content: '删除后,学员将不能进行观看。', content: '删除后,学员将不能进行观看。',
icon: <span className="icon iconfont default-confirm-icon">&#xe6f4;</span>, icon: <span className="icon iconfont default-confirm-icon">&#xe6f4;</span>,
okText: '确定', okText: '确定',
okType: 'danger',
cancelText: '取消', cancelText: '取消',
onOk: () => { onOk: () => {
const param ={ const param ={
...@@ -329,6 +330,7 @@ class VideoCourseList extends React.Component { ...@@ -329,6 +330,7 @@ class VideoCourseList extends React.Component {
pagination={false} pagination={false}
scroll={{ x: 1500}} scroll={{ x: 1500}}
bordered bordered
className="video-list-table"
/> />
<div className="box-footer"> <div className="box-footer">
......
.video-course-list { .video-course-list {
margin-top: 12px; margin-top: 12px;
.video-list-table{
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;
}
}
}
}
}
.watchUserCount{ .watchUserCount{
text-align:right; text-align:right;
padding:16px; padding:16px;
...@@ -21,6 +44,9 @@ ...@@ -21,6 +44,9 @@
} }
} }
} }
.more-operate{
line-height:20px;
}
.record__item { .record__item {
display: flex; display: flex;
...@@ -44,6 +70,7 @@ ...@@ -44,6 +70,7 @@
height:48px; height:48px;
} }
} }
} }
.video-course-more-menu { .video-course-more-menu {
...@@ -59,9 +86,3 @@ ...@@ -59,9 +86,3 @@
} }
} }
} }
\ No newline at end of file
.ant-tooltip{
max-width:700px !important;
}
.ant-tooltip-inner{
max-width:700px !important;
}
\ No newline at end of file
.video-course-opt { .video-course-opt {
margin-top:4px;
.link { .link {
color: #FF8534; color: #FF8534;
} }
......
...@@ -20,7 +20,7 @@ class WatchDataModal extends React.Component { ...@@ -20,7 +20,7 @@ class WatchDataModal extends React.Component {
this.state = { this.state = {
visible:true, visible:true,
dataSource:[], dataSource:[],
size:1, size:10,
query: { query: {
current: 1, current: 1,
}, },
...@@ -130,9 +130,10 @@ class WatchDataModal extends React.Component { ...@@ -130,9 +130,10 @@ class WatchDataModal extends React.Component {
className="watch-data-modal" className="watch-data-modal"
closable={true} closable={true}
width={800} width={800}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
> >
<div className="search-container"> <div className="search-container">
<Search placeholder="搜索用户姓名/手机号" style={{ width: 200 }} onChange={(e) => { this.handleChangNickname(e.target.value)}} onSearch={ () => { this.handleFetchDataList()}} /> <Search placeholder="搜索用户姓名/手机号" style={{ width: 200 }} onChange={(e) => { this.handleChangNickname(e.target.value)}} onSearch={ () => { this.handleFetchDataList()}} enterButton={<span className="icon iconfont">&#xe832;</span>}/>
</div> </div>
<div> <div>
<Table <Table
...@@ -140,6 +141,7 @@ class WatchDataModal extends React.Component { ...@@ -140,6 +141,7 @@ class WatchDataModal extends React.Component {
dataSource={dataSource} dataSource={dataSource}
columns={this.parseColumns()} columns={this.parseColumns()}
pagination={false} pagination={false}
bordered
/> />
{dataSource.length >0 && {dataSource.length >0 &&
<div className="box-footer"> <div className="box-footer">
...@@ -147,6 +149,7 @@ class WatchDataModal extends React.Component { ...@@ -147,6 +149,7 @@ class WatchDataModal extends React.Component {
current={query.current - 1} current={query.current - 1}
pageSize={size} pageSize={size}
total={totalCount} total={totalCount}
size="small"
toPage={(page) => { toPage={(page) => {
const _query = {...query, current: page + 1}; const _query = {...query, current: page + 1};
this.setState({ this.setState({
......
...@@ -114,6 +114,7 @@ function ChangePhoneModal(props: changePhoneModalProps) { ...@@ -114,6 +114,7 @@ function ChangePhoneModal(props: changePhoneModalProps) {
title="更换手机号" title="更换手机号"
width={448} width={448}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
onCancel={onClose} onCancel={onClose}
className="change-phone-modal" className="change-phone-modal"
footer={[ footer={[
......
...@@ -89,6 +89,7 @@ function IdentificationModal(props: IdentificationModalProps) { ...@@ -89,6 +89,7 @@ function IdentificationModal(props: IdentificationModalProps) {
width={448} width={448}
onCancel={onClose} onCancel={onClose}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
className="identification-modal" className="identification-modal"
footer={[ footer={[
<Button <Button
......
.personal-info-page{ .personal-info-page{
.page-content{
.box{ .box{
padding: 60px 60px 60px 40px !important; padding: 60px 60px 60px 40px !important;
} }
...@@ -58,5 +57,4 @@ ...@@ -58,5 +57,4 @@
margin-left:20px; margin-left:20px;
} }
} }
}
} }
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: zhangleyuan * @Author: zhangleyuan
* @Date: 2020-11-27 15:06:31 * @Date: 2020-11-27 15:06:31
* @LastEditors: wufan * @LastEditors: wufan
* @LastEditTime: 2021-01-18 21:22:16 * @LastEditTime: 2021-02-01 14:34:44
* @Description: 描述一下 * @Description: 描述一下
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -123,7 +123,6 @@ function PersonalInfoPage() { ...@@ -123,7 +123,6 @@ function PersonalInfoPage() {
console.log('User.getStoreType()',User.getStoreType()); console.log('User.getStoreType()',User.getStoreType());
return ( return (
<div className="page personal-info-page"> <div className="page personal-info-page">
<div className="page-content">
<div className="content-header">个人设置</div> <div className="content-header">个人设置</div>
<div className="box"> <div className="box">
<Form> <Form>
...@@ -213,7 +212,6 @@ console.log('User.getStoreType()',User.getStoreType()); ...@@ -213,7 +212,6 @@ console.log('User.getStoreType()',User.getStoreType());
/> />
)} )}
</div> </div>
</div>
); );
} }
......
...@@ -289,7 +289,8 @@ class FolderList extends React.Component { ...@@ -289,7 +289,8 @@ class FolderList extends React.Component {
Modal.confirm({ Modal.confirm({
title: '确认删除所选的文件吗?', title: '确认删除所选的文件吗?',
content: hasRelative ? '此文件已关联了课次,删除后,学员将不能查看到此文件。' : '删除后,数据将无法恢复。', content: hasRelative ? '此文件已关联了课次,删除后,学员将不能查看到此文件。' : '删除后,数据将无法恢复。',
icon: <span className="icon iconfont default-confirm-icon">&#xe834;</span>, icon:<span className="icon iconfont default-confirm-icon">&#xe839; </span>,
okType: 'danger',
onOk: () => { onOk: () => {
const { currentFolder } = this.state; const { currentFolder } = this.state;
axios.Apollo(DEL_FOLDER_URL_MAP[disk], { axios.Apollo(DEL_FOLDER_URL_MAP[disk], {
......
...@@ -212,7 +212,8 @@ class OperateArea extends React.Component { ...@@ -212,7 +212,8 @@ class OperateArea extends React.Component {
Modal.confirm({ Modal.confirm({
title: '确认删除所选的文件吗?', title: '确认删除所选的文件吗?',
content: '删除后,数据将无法恢复。', content: '删除后,数据将无法恢复。',
icon: <span className="icon iconfont default-confirm-icon">&#xe834;</span>, icon:<span className="icon iconfont default-confirm-icon">&#xe839; </span>,
okType: 'danger',
onOk: () => { onOk: () => {
const currentFolder = folderPathList[folderPathList.length - 1]; const currentFolder = folderPathList[folderPathList.length - 1];
Service.Hades(DEL_FOLDER_URL_MAP[disk], { Service.Hades(DEL_FOLDER_URL_MAP[disk], {
...@@ -334,6 +335,7 @@ class OperateArea extends React.Component { ...@@ -334,6 +335,7 @@ class OperateArea extends React.Component {
value={searchKey} value={searchKey}
onSearch={this.props.onSearch} onSearch={this.props.onSearch}
style={{width: '245px'}} style={{width: '245px'}}
enterButton={<span className="icon iconfont">&#xe832;</span>}
/> />
</div> </div>
......
...@@ -85,6 +85,7 @@ class PrepareLessonPage extends React.Component { ...@@ -85,6 +85,7 @@ class PrepareLessonPage extends React.Component {
footer={null} footer={null}
width={680} width={680}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
className="prepare-lesson-upgrade-modal" className="prepare-lesson-upgrade-modal"
onCancel={() => { onCancel={() => {
this.setState({ this.setState({
......
...@@ -79,6 +79,7 @@ class CreateFolderModal extends React.Component { ...@@ -79,6 +79,7 @@ class CreateFolderModal extends React.Component {
onCancel={this.handleCancel} onCancel={this.handleCancel}
onOk={this.handleOk} onOk={this.handleOk}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
width={448} width={448}
className="create-folder-modal" className="create-folder-modal"
> >
......
...@@ -29,9 +29,11 @@ class NonCompliantFileModal extends React.Component { ...@@ -29,9 +29,11 @@ class NonCompliantFileModal extends React.Component {
okText="继续上传" okText="继续上传"
cancelText="放弃上传" cancelText="放弃上传"
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
onCancel={this.props.onClose} onCancel={this.props.onClose}
onOk={this.props.onOk} onOk={this.props.onOk}
className="prepare-lesson__non-compliant-file-modal" className="prepare-lesson__non-compliant-file-modal"
width={560}
> >
<div className="file-list"> <div className="file-list">
<div className="file-list__title">以下文件已超出上传限制,无法上传。</div> <div className="file-list__title">以下文件已超出上传限制,无法上传。</div>
......
...@@ -26,6 +26,7 @@ class ScanFileModal extends React.Component { ...@@ -26,6 +26,7 @@ class ScanFileModal extends React.Component {
width={680} width={680}
className="scan-file-modal" className="scan-file-modal"
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
> >
<div className="scan-file-modal" style={{ width: 632 }}> <div className="scan-file-modal" style={{ width: 632 }}>
{(fileType === "JPG" || fileType === 'PNG') && ( {(fileType === "JPG" || fileType === 'PNG') && (
......
...@@ -538,6 +538,7 @@ class SelectPrepareFileModal extends React.Component { ...@@ -538,6 +538,7 @@ class SelectPrepareFileModal extends React.Component {
footer={footer} footer={footer}
width={680} width={680}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
onCancel={this.handleClose} onCancel={this.handleClose}
className="select-prepare-file-modal" className="select-prepare-file-modal"
> >
...@@ -583,12 +584,12 @@ class SelectPrepareFileModal extends React.Component { ...@@ -583,12 +584,12 @@ class SelectPrepareFileModal extends React.Component {
</div> </div>
{ {
!_.isEmpty(folderList) ? !_.isEmpty(folderList) ?
<div <div>
<div className="file-list"
onScrollCapture={() => this.handleScrollEvent()} onScrollCapture={() => this.handleScrollEvent()}
style={{ height: '320px', overflowY: 'scroll' }} style={{ height: '320px', overflowY: 'auto' }}
ref="fileListRef" ref="fileListRef"
> >
<div className="file-list">
{ {
folderList.map((folder, index) => { folderList.map((folder, index) => {
const { folderType, folderSize, folderFormat, folderName } = folder; const { folderType, folderSize, folderFormat, folderName } = folder;
......
...@@ -52,7 +52,6 @@ ...@@ -52,7 +52,6 @@
.file-list { .file-list {
border: 1px solid #E8E8E8; border: 1px solid #E8E8E8;
border-radius: 4px; border-radius: 4px;
.file-item { .file-item {
display: flex; display: flex;
align-items: center; align-items: center;
...@@ -82,7 +81,7 @@ ...@@ -82,7 +81,7 @@
.iconfont { .iconfont {
color: #BFBFBF; color: #BFBFBF;
font-size:12px;
&.correct { &.correct {
color: #FFB714; color: #FFB714;
} }
......
...@@ -297,7 +297,8 @@ class FolderList extends React.Component { ...@@ -297,7 +297,8 @@ class FolderList extends React.Component {
Modal.confirm({ Modal.confirm({
title: '确认删除所选的文件吗?', title: '确认删除所选的文件吗?',
content: '删除后,数据将无法恢复。', content: '删除后,数据将无法恢复。',
icon: <span className="icon iconfont default-confirm-icon">&#xe834;</span>, icon:<span className="icon iconfont default-confirm-icon">&#xe839; </span>,
okType: 'danger',
onOk: () => { onOk: () => {
const { currentFolder } = this.state; const { currentFolder } = this.state;
Service.Hades(DEL_FOLDER_URL_MAP[disk], { Service.Hades(DEL_FOLDER_URL_MAP[disk], {
......
...@@ -211,7 +211,8 @@ class OperateArea extends React.Component { ...@@ -211,7 +211,8 @@ class OperateArea extends React.Component {
Modal.confirm({ Modal.confirm({
title: '确认删除所选的文件吗?', title: '确认删除所选的文件吗?',
content: '删除后,数据将无法恢复。', content: '删除后,数据将无法恢复。',
icon: <span className="icon iconfont default-confirm-icon">&#xe834;</span>, icon:<span className="icon iconfont default-confirm-icon">&#xe839; </span>,
okType: 'danger',
onOk: () => { onOk: () => {
const currentFolder = folderPathList[folderPathList.length - 1]; const currentFolder = folderPathList[folderPathList.length - 1];
Service.Hades(DEL_FOLDER_URL_MAP[disk], { Service.Hades(DEL_FOLDER_URL_MAP[disk], {
...@@ -341,7 +342,6 @@ class OperateArea extends React.Component { ...@@ -341,7 +342,6 @@ class OperateArea extends React.Component {
<Button <Button
onClick={this.handleToggleCreateFolderModal} onClick={this.handleToggleCreateFolderModal}
disabled={showResultPage} disabled={showResultPage}
className="create-btn"
> >
<div className="btn-content"> <div className="btn-content">
<span className="icon iconfont">&#xe7a2;</span> <span className="icon iconfont">&#xe7a2;</span>
...@@ -375,6 +375,7 @@ class OperateArea extends React.Component { ...@@ -375,6 +375,7 @@ class OperateArea extends React.Component {
onSearch={this.handleSearch} onSearch={this.handleSearch}
onChange={this.handleChangeSearchKey} onChange={this.handleChangeSearchKey}
style={{width: '245px'}} style={{width: '245px'}}
enterButton={<span className="icon iconfont">&#xe832;</span>}
/> />
</div> </div>
......
...@@ -80,6 +80,7 @@ class CreateFolderModal extends React.Component { ...@@ -80,6 +80,7 @@ class CreateFolderModal extends React.Component {
onOk={this.handleOk} onOk={this.handleOk}
width={448} width={448}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
className="create-folder-modal" className="create-folder-modal"
> >
<Form> <Form>
......
...@@ -24,6 +24,7 @@ class ScanFileModal extends React.Component { ...@@ -24,6 +24,7 @@ class ScanFileModal extends React.Component {
footer={null} footer={null}
width={680} width={680}
className="scan-file-modal" className="scan-file-modal"
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
> >
<div className="scan-file-modal" style={{ width: 632 }}> <div className="scan-file-modal" style={{ width: 632 }}>
{(fileType === "JPG" || fileType === 'PNG') && ( {(fileType === "JPG" || fileType === 'PNG') && (
......
/* /*
* @Author: 吴文洁 * @Author: 吴文洁
* @Date: 2019-07-10 10:30:49 * @Date: 2019-07-10 10:30:49
* @LastEditors: wufan * @LastEditors: zhangleyuan
* @LastEditTime: 2021-01-18 21:22:33 * @LastEditTime: 2021-02-02 16:42:04
* @Description: * @Description:
*/ */
import React, { useContext, useEffect, useState } from 'react'; import React, { useContext, useEffect, useState } from 'react';
...@@ -77,7 +77,7 @@ const App: React.FC = (props: any) => { ...@@ -77,7 +77,7 @@ const App: React.FC = (props: any) => {
return ( return (
<div id="home"> <div id="home">
<Header handleMenuType={handleMenuType} menuType={menuType} /> <Header handleMenuType={handleMenuType} menuType={menuType} />
<ConfigProvider locale={zhCN} > <ConfigProvider locale={zhCN} autoInsertSpaceInButton={false}>
<Main menuType={menuType} /> <Main menuType={menuType} />
</ConfigProvider> </ConfigProvider>
<Menu menuType={menuType} /> <Menu menuType={menuType} />
......
/* /*
* @Author: 吴文洁 * @Author: 吴文洁
* @Date: 2019-09-10 18:26:03 * @Date: 2019-09-10 18:26:03
* @LastEditors: wufan * @LastEditors: zhangleyuan
* @LastEditTime: 2021-01-25 20:40:53 * @LastEditTime: 2021-01-28 15:24:43
* @Description: * @Description:
*/ */
import React, { useContext, useEffect, useState } from "react"; import React, { useContext, useEffect, useState } from "react";
...@@ -116,8 +116,7 @@ function Header(props) { ...@@ -116,8 +116,7 @@ function Header(props) {
<div id="top-container" className="top-container"> <div id="top-container" className="top-container">
<div className="top top-nav"> <div className="top top-nav">
<div> <div>
<img src={logoImg} className="logo" alt="" /> {menuType ? <img src='https://image.xiaomaiketang.com/xm/4swGidkYR6.png' className="logo" alt="" />:<img src={logoImg} className="logo" alt="" />}
{menuType && <span className="logo-name">小麦企培</span>}
</div> </div>
{menuType ? ( {menuType ? (
<span <span
......
...@@ -3,7 +3,7 @@ import { ...@@ -3,7 +3,7 @@ import {
withRouter withRouter
} from 'react-router-dom'; } from 'react-router-dom';
import './Login.less'; import './Login.less';
import { Input, Popover, message, Tabs } from 'antd'; import { Input, Popover, message, Tabs ,Button} from 'antd';
import CheckBeforeSendCode from '../../components/CheckBeforeSendCode'; import CheckBeforeSendCode from '../../components/CheckBeforeSendCode';
import User from '@/common/js/user'; import User from '@/common/js/user';
import WechatLogin from './WechatLogin' import WechatLogin from './WechatLogin'
...@@ -194,7 +194,7 @@ function Login(props) { ...@@ -194,7 +194,7 @@ function Login(props) {
</div> </div>
<div className="submit"> <div className="submit">
<div className="btn"> <div className="btn">
<button id='loginIn' onClick={() => { handleSubmit() }} >登录</button> <span id='loginIn' onClick={() => { handleSubmit() }} >登录</span>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -98,16 +98,14 @@ ...@@ -98,16 +98,14 @@
display: none; display: none;
} }
.ant-tabs-tab { .ant-tabs-tab {
width: 105px;
text-align: center; text-align: center;
margin:0;
} }
.ant-tabs > .ant-tabs-nav .ant-tabs-nav-list { .ant-tabs > .ant-tabs-nav .ant-tabs-nav-list {
margin: 0 auto; margin: 0 auto;
} }
.ant-tabs-top > .ant-tabs-nav .ant-tabs-ink-bar { .ant-tabs-top > .ant-tabs-nav .ant-tabs-ink-bar {
width: 24px !important;
height: 4px; height: 4px;
margin-left: 47px;
} }
.l { .l {
...@@ -167,7 +165,7 @@ ...@@ -167,7 +165,7 @@
flex: 1; flex: 1;
-webkit-flex: 1; -webkit-flex: 1;
height: 100%; height: 100%;
padding: 30px; padding: 24px;
box-sizing: border-box; box-sizing: border-box;
position: relative; position: relative;
&.show-qrcode { &.show-qrcode {
...@@ -433,14 +431,14 @@ ...@@ -433,14 +431,14 @@
} }
} }
.btn { .btn {
button { #loginIn {
display: block; display: block;
width: 100%; width: 100%;
background: @primary; background: @primary;
color: #fff; color: #fff;
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400 !important;
line-height: 40px; line-height: 40px !important;
border-radius: 4px; border-radius: 4px;
-webkit-transition: all 0.3s; -webkit-transition: all 0.3s;
-moz-transition: all 0.3s; -moz-transition: all 0.3s;
...@@ -449,6 +447,7 @@ ...@@ -449,6 +447,7 @@
transition: all 0.3s; transition: all 0.3s;
cursor: pointer; cursor: pointer;
border: none; border: none;
text-align:center;
&:hover { &:hover {
opacity: 0.7; opacity: 0.7;
background: linear-gradient(90deg, #ffb714 0%, #ffad34 100%); background: linear-gradient(90deg, #ffb714 0%, #ffad34 100%);
......
...@@ -101,6 +101,13 @@ ...@@ -101,6 +101,13 @@
padding-left: 22px; padding-left: 22px;
padding-right: 0; padding-right: 0;
width: 117px; width: 117px;
margin-bottom:0 !important;
&:first-child{
margin-top:8px !important;
}
&:last-child{
margin-bottom:8px !important;
}
} }
.listType { .listType {
......
...@@ -26,7 +26,7 @@ export default function WechatLogin(props: any) { ...@@ -26,7 +26,7 @@ export default function WechatLogin(props: any) {
if (status === 0) { if (status === 0) {
Service.Hades("anon/hades/getTicket", {}).then((res: any) => { Service.Hades("anon/hades/getTicket", {}).then((res: any) => {
setTicket(res.result) setTicket(res.result)
const redirect = `${location.origin + location.pathname.replace('index.html', '') + 'h5.html'}?ticket=${res.result}&appTermEnum=XIAOMAI_CLOUD_CLASS_PC_WEB_ADMIN&env=${process.env.DEPLOY_ENV || 'rc'}` const redirect = `${location.origin + location.pathname.replace('index.html', '') + 'h5.html'}?ticket=${res.result}&appTermEnum=XIAOMAI_CLOUD_CLASS_PC_WEB_ADMIN&env=${process.env.DEPLOY_ENV || 'dev'}`
// console.log(redirect) // console.log(redirect)
// const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww409ccf9c6e31f19e&redirect_uri=${encodeURIComponent(redirect)}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect` // const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww409ccf9c6e31f19e&redirect_uri=${encodeURIComponent(redirect)}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
// console.log(url) // console.log(url)
......
.course-catalog-page{ .course-catalog-page{
.child-table{
thead{
display:none;
}
tbody tr td{
border-bottom:none;
background:#FAFAFA;
}
// tr:hover td{
// background: #FAFAFA !important;
// }
// tbody tr:hover{
// background: #FAFAFA !important;
// }
}
.divider-line{ .divider-line{
color: #BFBFBF; color: #BFBFBF;
} }
...@@ -36,13 +20,82 @@ ...@@ -36,13 +20,82 @@
line-height: 20px; line-height: 20px;
cursor: pointer; cursor: pointer;
} }
td{
.empty-child{ .empty-child{
color:#666; color:#666;
font-size:14px; font-size:14px;
text-align:center; text-align:center;
// background: #FAFAFA;
}
&:hover{
.empty-child{
background: none;
}
}
}
.catalog-tabel{
.ant-table-content{
border:1px solid #e8e8e8;
tr{
td{
border:none;
}
.child-table{
.ant-table-content{
border:none;
thead{
display:none;
}
tbody tr td{
border-bottom:none;
// background:#FAFAFA;
}
}
}
}
.odd-row{
background:transparent;
td{
background: #FFF;
}
& + .ant-table-expanded-row{
background:transparent;
td{
background: #FFF;
}
}
&:hover{
& + .ant-table-expanded-row{
background:transparent;
td{
background: #F3f6fa !important;
}
}
}
}
.even-row{
background:transparent;
td{
background: #FAFAFA;
}
& + .ant-table-expanded-row{
background:transparent;
td{
background: #FAFAFA; background: #FAFAFA;
} }
// tr.ant-table-expanded-row:hover > td { }
// background: #FAFAFA !important; &:hover{
// } & + .ant-table-expanded-row{
background:transparent;
td{
background: #F3f6fa !important;
}
}
}
}
}
}
} }
\ No newline at end of file
...@@ -164,7 +164,6 @@ function CourseCatalogPage() { ...@@ -164,7 +164,6 @@ function CourseCatalogPage() {
return ( return (
<div className=" page course-catalog-page"> <div className=" page course-catalog-page">
<div className="page-content">
<div className="content-header">课程分类</div> <div className="content-header">课程分类</div>
<div className="box"> <div className="box">
<div className="box-header"> <div className="box-header">
...@@ -191,6 +190,8 @@ function CourseCatalogPage() { ...@@ -191,6 +190,8 @@ function CourseCatalogPage() {
} }
}} }}
dataSource={courseCatalogList} dataSource={courseCatalogList}
className="catalog-tabel"
rowClassName={(record,index)=>{if(index%2===0){return 'odd-row'}else{ return 'even-row'}}}
/> />
</div> </div>
<div className="box-footer"> <div className="box-footer">
...@@ -215,7 +216,6 @@ function CourseCatalogPage() { ...@@ -215,7 +216,6 @@ function CourseCatalogPage() {
secondCatalogModalVisible && <SecondCatalogAddOrEditModal modalType={secondCatalogModalType} parentId={parentCatalogId} parentName={parentCatalogName} onClose={()=>{setSecondCatalogModalVisible(false)}} choosedItem={choosedItem} refreshCatalogList={getCourseCatalogList} /> secondCatalogModalVisible && <SecondCatalogAddOrEditModal modalType={secondCatalogModalType} parentId={parentCatalogId} parentName={parentCatalogName} onClose={()=>{setSecondCatalogModalVisible(false)}} choosedItem={choosedItem} refreshCatalogList={getCourseCatalogList} />
} }
</div> </div>
</div>
); );
} }
......
.employee-add-modal { .employee-add-modal {
.ant-modal-body {
height: 247px;
}
.mt-4 { .mt-4 {
margin-bottom:-6px !important margin-bottom:-6px !important
} }
......
...@@ -208,6 +208,7 @@ function AddEmployeeModal(props: AddEmployeeModalProps) { ...@@ -208,6 +208,7 @@ function AddEmployeeModal(props: AddEmployeeModalProps) {
onCancel={props.onClose} onCancel={props.onClose}
onOk={handleOk} onOk={handleOk}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
> >
<Row> <Row>
<Col span={16}> <Col span={16}>
......
...@@ -23,4 +23,7 @@ ...@@ -23,4 +23,7 @@
margin-right: 20px; margin-right: 20px;
} }
} }
.ant-checkbox-wrapper {
margin-right: 4px !important;
}
} }
...@@ -305,7 +305,6 @@ function EmployeesManagePage() { ...@@ -305,7 +305,6 @@ function EmployeesManagePage() {
return ( return (
<div className=" page employee-manage-page"> <div className=" page employee-manage-page">
<div className="page-content">
<div className="content-header">员工管理</div> <div className="content-header">员工管理</div>
<div className="box"> <div className="box">
<div className="box-header"> <div className="box-header">
...@@ -314,7 +313,7 @@ function EmployeesManagePage() { ...@@ -314,7 +313,7 @@ function EmployeesManagePage() {
display: "flex", display: "flex",
alignItems: "center", alignItems: "center",
justifyContent: "flex-start", justifyContent: "flex-start",
padding: "15px 0 10px", padding: "0px 0 16px",
}} }}
> >
<div> <div>
...@@ -351,6 +350,7 @@ function EmployeesManagePage() { ...@@ -351,6 +350,7 @@ function EmployeesManagePage() {
} }
setQuery(_query); setQuery(_query);
}} }}
enterButton={<span className="icon iconfont">&#xe832;</span>}
/> />
</div> </div>
...@@ -428,7 +428,6 @@ function EmployeesManagePage() { ...@@ -428,7 +428,6 @@ function EmployeesManagePage() {
</div> </div>
{model} {model}
</div> </div>
</div>
); );
} }
......
.store-decoration-page { .store-decoration-page {
.box {
padding-top:11px!important;
}
thead { thead {
display: none; display: none;
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: wufan * @Author: wufan
* @Date: 2020-11-30 10:47:38 * @Date: 2020-11-30 10:47:38
* @LastEditors: wufan * @LastEditors: wufan
* @LastEditTime: 2021-01-09 15:59:32 * @LastEditTime: 2021-02-01 14:12:38
* @Description: 店铺装修页面 * @Description: 店铺装修页面
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -31,7 +31,6 @@ function StoreDecorationPage(props: StoreDecoprationProps) { ...@@ -31,7 +31,6 @@ function StoreDecorationPage(props: StoreDecoprationProps) {
return ( return (
<div className="page store-decoration-page"> <div className="page store-decoration-page">
<div className="page-content">
<div className="content-header">店铺装修</div> <div className="content-header">店铺装修</div>
<div className="box"> <div className="box">
<Tabs <Tabs
...@@ -54,7 +53,6 @@ function StoreDecorationPage(props: StoreDecoprationProps) { ...@@ -54,7 +53,6 @@ function StoreDecorationPage(props: StoreDecoprationProps) {
</div> </div>
</div> </div>
</div>
); );
} }
......
/* /*
* @Author: wufan * @Author: wufan
* @Date: 2020-11-30 10:47:38 * @Date: 2020-11-30 10:47:38
* @LastEditors: wufan * @LastEditors: zhangleyuan
* @LastEditTime: 2021-01-18 21:22:44 * @LastEditTime: 2021-02-01 14:02:11
* @Description: web店铺banner页面 * @Description: web店铺banner页面
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -164,9 +164,10 @@ class StoreH5Decoration extends React.Component { ...@@ -164,9 +164,10 @@ class StoreH5Decoration extends React.Component {
return confirm({ return confirm({
title: "你确定要删除这个banner吗?", title: "你确定要删除这个banner吗?",
icon: ( icon: (
<span className="icon iconfont default-confirm-icon">&#xe834;</span> <span className="icon iconfont default-confirm-icon">&#xe839; </span>
), ),
okText: "删除", okText: "删除",
okType: 'danger',
cancelText: "取消", cancelText: "取消",
onOk: () => { onOk: () => {
this.handleDeleteDecoration(record); this.handleDeleteDecoration(record);
...@@ -425,6 +426,7 @@ class StoreH5Decoration extends React.Component { ...@@ -425,6 +426,7 @@ class StoreH5Decoration extends React.Component {
this.setState({ visible: false }); this.setState({ visible: false });
}} }}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
footer={[ footer={[
<Button <Button
key="back" key="back"
......
...@@ -163,9 +163,10 @@ class StoreWebDecoration extends React.Component { ...@@ -163,9 +163,10 @@ class StoreWebDecoration extends React.Component {
return confirm({ return confirm({
title: "你确定要删除这个banner吗?", title: "你确定要删除这个banner吗?",
icon: ( icon: (
<span className="icon iconfont default-confirm-icon">&#xe834;</span> <span className="icon iconfont default-confirm-icon">&#xe839; </span>
), ),
okText: "删除", okText: "删除",
okType: 'danger',
cancelText: "取消", cancelText: "取消",
onOk: () => { onOk: () => {
this.handleDeleteDecoration(record); this.handleDeleteDecoration(record);
...@@ -423,6 +424,7 @@ class StoreWebDecoration extends React.Component { ...@@ -423,6 +424,7 @@ class StoreWebDecoration extends React.Component {
this.setState({ visible: false }); this.setState({ visible: false });
}} }}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
footer={[ footer={[
<Button <Button
key="back" key="back"
......
/* /*
* @Author: wufan * @Author: wufan
* @Date: 2020-11-30 10:47:38 * @Date: 2020-11-30 10:47:38
* @LastEditors: wufan * @LastEditors: zhangleyuan
* @LastEditTime: 2020-12-14 19:49:52 * @LastEditTime: 2021-02-02 10:22:34
* @Description: 用户管理页面 * @Description: 用户管理页面
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -81,7 +81,6 @@ function UserManagePage() { ...@@ -81,7 +81,6 @@ function UserManagePage() {
return ( return (
<div className=" page user-manage-page"> <div className=" page user-manage-page">
<div className="page-content">
<div className="content-header">用户管理</div> <div className="content-header">用户管理</div>
<div className="box"> <div className="box">
<div className="box-header"> <div className="box-header">
...@@ -118,6 +117,7 @@ function UserManagePage() { ...@@ -118,6 +117,7 @@ function UserManagePage() {
} }
setQuery(_query); setQuery(_query);
}} }}
enterButton={<span className="icon iconfont">&#xe832;</span>}
/> />
</div> </div>
...@@ -169,7 +169,6 @@ function UserManagePage() { ...@@ -169,7 +169,6 @@ function UserManagePage() {
</div> </div>
</div> </div>
</div> </div>
</div>
); );
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: wufan * @Author: wufan
* @Date: 2020-11-27 16:21:49 * @Date: 2020-11-27 16:21:49
* @LastEditors: zhangleyuan * @LastEditors: zhangleyuan
* @LastEditTime: 2020-12-15 16:12:32 * @LastEditTime: 2021-02-01 14:02:23
* @Description: Description * @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -84,6 +84,7 @@ function CatalogAddOrEditModal(props: CatalogAddOrEditModalProps) { ...@@ -84,6 +84,7 @@ function CatalogAddOrEditModal(props: CatalogAddOrEditModalProps) {
</Button> </Button>
]} ]}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
> >
<Form <Form
labelCol={ {span:5 }} labelCol={ {span:5 }}
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: wufan * @Author: wufan
* @Date: 2020-11-27 16:21:49 * @Date: 2020-11-27 16:21:49
* @LastEditors: zhangleyuan * @LastEditors: zhangleyuan
* @LastEditTime: 2020-12-15 16:13:27 * @LastEditTime: 2021-02-01 14:02:30
* @Description: Description * @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -139,6 +139,7 @@ function SecondCatalogAddOrEditModal(props: SecondCatalogAddOrEditModalProps) { ...@@ -139,6 +139,7 @@ function SecondCatalogAddOrEditModal(props: SecondCatalogAddOrEditModalProps) {
</Button> </Button>
]} ]}
maskClosable={false} maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
> >
<Form <Form
labelCol={ {span:6 }} labelCol={ {span:6 }}
...@@ -168,9 +169,11 @@ function SecondCatalogAddOrEditModal(props: SecondCatalogAddOrEditModalProps) { ...@@ -168,9 +169,11 @@ function SecondCatalogAddOrEditModal(props: SecondCatalogAddOrEditModalProps) {
style={{ width: 240 }} style={{ width: 240 }}
defaultValue={parentName} defaultValue={parentName}
onPopupScroll={handleScroll} onPopupScroll={handleScroll}
suffixIcon={<span className="icon iconfont" style={{fontSize:'12px',color:'#BFBFBF'}}>&#xe835;</span>}
onChange={(value) => { onChange={(value) => {
setSelectParentId(String(value)) setSelectParentId(String(value))
}} }}
> >
{_.map(optionList, (item:any, index) => { {_.map(optionList, (item:any, index) => {
return <Option id={item.id} value={item.id}>{item.categoryName}</Option> return <Option id={item.id} value={item.id}>{item.categoryName}</Option>
......
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