Commit cb715f0a by zhangleyuan

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

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