Commit 9e66ce76 by zhangleyuan

feat:调整左侧导航的样式和个人设置页的获取验证码

parent 83965c05
...@@ -11,11 +11,10 @@ import Service from '@/common/js/service'; ...@@ -11,11 +11,10 @@ import Service from '@/common/js/service';
class Upload { class Upload {
static uploadBlobToOSS(Blob, name, dir, dataType = 'url') { static uploadBlobToOSS(Blob, name, dir, dataType = 'url') {
// 上传图片和视频 // 上传图片和视频
return Service.MFS('anon/mfs/webTokenWithAccessUrl', { resourceName: name, instId: (!!window.currentUserInstInfo && window.currentUserInstInfo.instId) || LS.get('instId') || '1000000000000000000' }).then((res) => { return Service.Hades('/public/store/commonOssAuthority', { resourceName: name, instId:'0'}).then((res) => {
console.log(0) console.log(0)
const signInfo = res.result; const signInfo = res.result;
const { url } = res.result const { url } = res.result
console.log('signInfo', signInfo);
return this.uploadBlobToNewOSS(Blob, name, dir, signInfo.signatureVO || signInfo).then(() => { return this.uploadBlobToNewOSS(Blob, name, dir, signInfo.signatureVO || signInfo).then(() => {
return dataType === 'url' ? url : signInfo return dataType === 'url' ? url : signInfo
}); });
......
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Modal, Button, Input} from 'antd'; import { Modal, Button, Input,Popover} from 'antd';
import _ from 'underscore'; import _ from 'underscore';
import './ChangePhoneModal.less'; import './ChangePhoneModal.less';
import Form from 'antd/lib/form/Form'; import Form from 'antd/lib/form/Form';
import BaseService from "@/domains/basic-domain/baseService"; import BaseService from "@/domains/basic-domain/baseService";
import CheckBeforeSendCode from '@/components/CheckBeforeSendCode';
interface changePhoneModalProps { interface changePhoneModalProps {
onClose:() => void, onClose:() => void,
onConfirm:(e:any) => void
} }
function ChangePhoneModal(props: changePhoneModalProps) { function ChangePhoneModal(props: changePhoneModalProps) {
const { onClose,onConfirm } = props; const { onClose} = props;
const [newPhone,setNewPhone] = useState(''); const [newPhone,setNewPhone] = useState('');
const [phoneVerify,setPhoneVerify] = useState(''); const [phoneVerify,setPhoneVerify] = useState('');
const [codeText, setCodeText] = useState('发送验证码'); const [codeText, setCodeText] = useState('发送验证码');
const [waitStatus, setWaitStatus] = useState(false); // 验证码是否在倒计时 const [waitStatus, setWaitStatus] = useState(false); // 验证码是否在倒计时
const [newPhoneError,setNewPhoneError] = useState(false); const [newPhoneError,setNewPhoneError] = useState(false);
const [phoneVerifyError,setPhoneVerifyError] = useState(false); const [phoneVerifyError,setPhoneVerifyError] = useState(false);
//Todo
const [errorMessageText,setErrorMessageText] = useState(''); const [errorMessageText,setErrorMessageText] = useState('');
const [openCheck, setOpenCheck] = useState(false); //滑块验证是否是打开状态
const [checking, setChecking] = useState(false);
useEffect(() => { useEffect(() => {
}) })
async function checkAccount(code:any, callback = () => { }) {
callback();
}
function checkPhoneVerify():any{ function checkPhoneVerify():any{
if(!phoneVerify){ if(!phoneVerify){
setErrorMessageText('请输入验证码'); setErrorMessageText('请输入验证码');
...@@ -31,8 +35,7 @@ function ChangePhoneModal(props: changePhoneModalProps) { ...@@ -31,8 +35,7 @@ function ChangePhoneModal(props: changePhoneModalProps) {
return; return;
} }
} }
function handleSendCode():any{ function checkSendPhone(){
if (waitStatus) return;
if(!newPhone){ if(!newPhone){
setErrorMessageText('请输入手机号'); setErrorMessageText('请输入手机号');
setNewPhoneError(true); setNewPhoneError(true);
...@@ -43,10 +46,19 @@ function ChangePhoneModal(props: changePhoneModalProps) { ...@@ -43,10 +46,19 @@ function ChangePhoneModal(props: changePhoneModalProps) {
setNewPhoneError(true); setNewPhoneError(true);
return; return;
} }
setOpenCheck(true);
}
function handleSendSMSCode(checkData:any){
if (waitStatus) return;
let timer:any; let timer:any;
const param ={ const param ={
phone:newPhone, phone:newPhone,
bizType:'CLOUD_CLASS_MODIFY_PHONE' serverType:'CLOUD_CLASS_MODIFY_PHONE',
sig: checkData.sig,
sessionId: checkData.csessionid,
token: checkData.token,
scene: 'nc_login'
} }
BaseService.sendBizAuthCode(param).then((res) => { BaseService.sendBizAuthCode(param).then((res) => {
timeSub(60,0); timeSub(60,0);
...@@ -150,10 +162,45 @@ function ChangePhoneModal(props: changePhoneModalProps) { ...@@ -150,10 +162,45 @@ function ChangePhoneModal(props: changePhoneModalProps) {
}} }}
style={{ width:200,height:32}} style={{ width:200,height:32}}
/> />
<span className="send-code" {/* <span className="send-code"
onClick={() => { onClick={() => {
handleSendCode(); handleSendCode();
}}>{codeText}</span> }}>{codeText}</span> */}
<Popover
visible={openCheck}
trigger="click"
title=""
content={<div>
<span style={{ fontSize: '12px', color: '#999', marginBottom: 8, display: 'block' }}>请完成安全验证</span>
<CheckBeforeSendCode
callback={(data:any, nc:any) => {
checkAccount(1, () => {
handleSendSMSCode(data);
setTimeout(() => {
setOpenCheck(false);
}, 500)
})
}}
/>
</div>}
onVisibleChange={(value) => {
if (!value) {
setOpenCheck(false);
}
}}
placement="bottomRight"
>
<div
className="send-code"
id="sendVerifyCode"
onClick={() => {
if(checking){
return false;
}
checkSendPhone()
}}
>{codeText}</div>
</Popover>
</div> </div>
<div className="error-message">{errorMessageText}</div> <div className="error-message">{errorMessageText}</div>
</Modal> </Modal>
......
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Modal, Form, Button, Input, Radio, Row, Col ,InputNumber } from 'antd'; import { Modal, Form, Button, Input, Radio, Row, Col ,InputNumber,Popover} from 'antd';
import _ from 'underscore'; import _ from 'underscore';
import './IdentificationModal.less'; import './IdentificationModal.less';
import BaseService from "@/domains/basic-domain/baseService"; import BaseService from "@/domains/basic-domain/baseService";
import CheckBeforeSendCode from '@/components/CheckBeforeSendCode';
interface IdentificationModalProps { interface IdentificationModalProps {
onClose:() => void, onClose:() => void,
phone:String, phone:String,
...@@ -17,11 +18,16 @@ function IdentificationModal(props: IdentificationModalProps) { ...@@ -17,11 +18,16 @@ function IdentificationModal(props: IdentificationModalProps) {
const [phoneVerifyError,setPhoneVerifyError] = useState(false); const [phoneVerifyError,setPhoneVerifyError] = useState(false);
const [errorMessageText,setErrorMessageText] = useState(''); const [errorMessageText,setErrorMessageText] = useState('');
const [openCheck, setOpenCheck] = useState(false); //滑块验证是否是打开状态
const [checking, setChecking] = useState(false);
useEffect(() => { useEffect(() => {
}) })
function handleConfirm():any { async function checkAccount(code:any, callback = () => { }) {
callback();
}
function handleConfirm(){
if(!phoneVerify){ if(!phoneVerify){
setPhoneVerifyError(true); setPhoneVerifyError(true);
setErrorMessageText('请输入验证码'); setErrorMessageText('请输入验证码');
...@@ -40,12 +46,16 @@ function IdentificationModal(props: IdentificationModalProps) { ...@@ -40,12 +46,16 @@ function IdentificationModal(props: IdentificationModalProps) {
} }
}); });
} }
function handleSendCode():any { function handleSendSMSCode(checkData:any){
if (waitStatus) return; if (waitStatus) return;
let timer:any; let timer:any;
const param ={ const param ={
phone, phone,
serverType:'CLOUD_CLASS_MODIFY_PHONE' serverType:'CLOUD_CLASS_MODIFY_PHONE',
sig: checkData.sig,
sessionId: checkData.csessionid,
token: checkData.token,
scene: 'nc_login'
} }
BaseService.sendBizAuthCode(param).then((res) => { BaseService.sendBizAuthCode(param).then((res) => {
timeSub(60,0); timeSub(60,0);
...@@ -105,13 +115,48 @@ function IdentificationModal(props: IdentificationModalProps) { ...@@ -105,13 +115,48 @@ function IdentificationModal(props: IdentificationModalProps) {
}} }}
style={{ width:200,height:32}} style={{ width:200,height:32}}
/> />
<span {/* <span
className="send-code" className="send-code"
onClick={() => { onClick={() => {
handleSendCode(); handleSendCode();
}}> }}>
{codeText} {codeText}
</span> </span> */}
<Popover
visible={openCheck}
trigger="click"
title=""
content={<div>
<span style={{ fontSize: '12px', color: '#999', marginBottom: 8, display: 'block' }}>请完成安全验证</span>
<CheckBeforeSendCode
callback={(data:any, nc:any) => {
checkAccount(1, () => {
handleSendSMSCode(data);
setTimeout(() => {
setOpenCheck(false);
}, 500)
})
}}
/>
</div>}
onVisibleChange={(value) => {
if (!value) {
setOpenCheck(false);
}
}}
placement="bottomRight"
>
<div
className="send-code"
id="sendVerifyCode"
onClick={() => {
if(checking){
return false;
}
setOpenCheck(true);
}}
>{codeText}</div>
</Popover>
</div> </div>
<div className="error-message">{errorMessageText}</div> <div className="error-message">{errorMessageText}</div>
......
...@@ -135,7 +135,7 @@ function PersonalInfoPage() { ...@@ -135,7 +135,7 @@ function PersonalInfoPage() {
} }
{ {
changePhoneModalVisible && <ChangePhoneModal onClose={()=>{setChangePhoneModalVisible(false)}} onConfirm={()=>{changePhoneModalConfirm()}}/> changePhoneModalVisible && <ChangePhoneModal onClose={()=>{setChangePhoneModalVisible(false)}}/>
} }
</div> </div>
......
...@@ -5,142 +5,128 @@ ...@@ -5,142 +5,128 @@
* @LastEditTime: 2020-12-04 15:30:49 * @LastEditTime: 2020-12-04 15:30:49
* @Description: * @Description:
*/ */
import React from 'react'; import React , { useContext, useEffect ,useState}from 'react';
import './Header.less'; import './Header.less';
import { import {
Menu, Menu,
Dropdown, Dropdown,
Icon, Modal
message,
Modal,
Input,
Avatar,
Button,
Row,
Col,
Badge,
Tooltip,
Radio,
} from 'antd'; } from 'antd';
import { QuestionCircleOutlined } from "@ant-design/icons";
import { withRouter } from 'react-router-dom'; import { withRouter } from 'react-router-dom';
import Bus from '@/core/bus'; import Bus from '@/core/bus';
import User from '@/common/js/user'; import User from '@/common/js/user';
import axios from 'axios';
import BaseService from "@/domains/basic-domain/baseService"; import BaseService from "@/domains/basic-domain/baseService";
// var $topContainer = $('#top-container'); import { XMContext } from '@/store/context';
class Header extends React.Component { import baseImg from '@/common/images/xiaomai-IMG.png';
constructor(props) { const { confirm } = Modal;
super(props); function Header(){
this.state = { const [menuType, setMenuType] = useState(1);
menuType: 1, const ctx: any = useContext(XMContext);
}; function userMenu() {
}
componentDidMount() {
}
userMenu() {
const style = {
whiteSpace: "normal",
wordBreak: "break-all"
};
return ( return (
<Menu <Menu
style={{ style={{
maxWidth: "250px", maxWidth: "250px",
marginTop: 5, marginTop: 5,
}} }}
onClick={e => {
if (e.key === '1') {
window.RCHistory.push('/user_info');
Bus.trigger('clearSearchText')
} else {
this.handleLogout();
}
}}
> >
<Menu.Item <Menu.Item
style={style} style={{whiteSpace: "normal", wordBreak: "break-all"}}
key="1"
onClick={() => toPersonalInfoPage()}
>
个人设置
</Menu.Item>
<Menu.Item
style={{whiteSpace: "normal", wordBreak: "break-all"}}
key="2" key="2"
onClick={e => {
handleLogoutConfirm();
}}
> >
退出登录 退出登录
</Menu.Item> </Menu.Item>
</Menu> </Menu>
); );
} }
handleMenu = () => { function handleMenu(){
const menuType = !this.state.menuType;
this.setState({ menuType }, () => {
Bus.trigger('menuTypeChange', menuType);
});
}; };
handleLogout() { function toPersonalInfoPage(){
// const AxiosInstance = axios.create({ window.RCHistory.push({
// headers: { pathname: `/personal-info`,
// xmToken: User.getToken(), })
// } }
// }); function handleLogoutConfirm(){
return confirm({
// AxiosInstance.post('https://dev-heimdall.xiaomai5.com/hades/public/store/logout').then((res) => { title: "你确定要删除此讲师吗?",
// User.removeUserId(); content: "删除后,讲师将不能登录系统,此操作不能被撤销",
// User.removeToken(); icon: <QuestionCircleOutlined />,
// window.RCHistory.push({ okText: "删除",
// pathname: `/login`, okType: "danger",
// }) cancelText: "取消",
// }) onOk: () => {
BaseService.logout().then((res) => { handleLogout();
},
});
}
function handleLogout(){
BaseService.logout({}).then((res) => {
User.removeUserId(); User.removeUserId();
User.removeToken(); User.removeToken();
window.RCHistory.push({ window.RCHistory.push({
pathname: `/login`, pathname: `/login`,
}) })
}); });
}
render() { }
const { return (
} = this.state; <div id="top-container" className="top-container">
return ( <div className="top top-nav">
<div id="top-container" className="top-container"> <div>
<div className="top top-nav"> {menuType ? (
<div> <img src="https://image.xiaomaiketang.com/xm/TP2x7aQ24y.png" className="logo" alt="" />
{this.state.menuType ? ( ):(
<img src="https://image.xiaomaiketang.com/xm/TP2x7aQ24y.png" className="logo" alt="" /> <img src="https://dev.xiaomai5.com/admin/static/images/logo.928339cd.png" className="logo" alt="" />
):(
<img src="https://dev.xiaomai5.com/admin/static/images/logo.928339cd.png" className="logo" alt="" />
)}
</div>
{this.state.menuType ? (
<span className="icon iconfont cursor ml20 handLike" onClick={this.handleMenu}>
&#xe83d;{' '}
</span>
) : (
<span className="icon iconfont cursor ml20 handLike" onClick={this.handleMenu}>
&#xe615;
</span>
)} )}
<div className="message-help"> </div>
<Dropdown overlay={this.userMenu()}> {menuType ? (
<div className="user"> <span className="icon iconfont cursor ml20 handLike" onClick={handleMenu}>
<Avatar &#xe83d;{' '}
style={{ </span>
width: 32 + "px",
height: 32 + "px", ) : (
borderRadius: "50%", <span className="icon iconfont cursor ml20 handLike" onClick={handleMenu}>
overflow: "hidden", &#xe615;
flexShrink: 0, </span>
}} )}
size="large" <div className="message-help">
src="@/common/images/xiaomai-IMG.png" <Dropdown overlay={userMenu()}>
/> <div className="user">
<span className="name">张乐园</span> <img
</div> style={{
</Dropdown> width: 32 + "px",
</div> height: 32 + "px",
borderRadius: "50%",
overflow: "hidden",
flexShrink: 0,
}}
src={(ctx.xmState && ctx.xmState.storeList &&ctx.xmState.storeList[0].avatar) ? ctx.xmState.storeList[0].avatar:baseImg}
/>
{ ctx.xmState && ctx.xmState.storeList && (
<span className="name">{ctx.xmState.storeList[0].nickName}</span>
)
}
</div>
</Dropdown>
</div> </div>
</div> </div>
); </div>
} );
} }
export default withRouter(Header); export default withRouter(Header);
...@@ -17,6 +17,7 @@ function Login(props) { ...@@ -17,6 +17,7 @@ function Login(props) {
const [waitStatus, setWaitStatus] = useState(false); // 验证码是否在倒计时 const [waitStatus, setWaitStatus] = useState(false); // 验证码是否在倒计时
const [errorMessage,setErrorMessage] = useState(''); const [errorMessage,setErrorMessage] = useState('');
const [phoneError,setPhoneError] = useState(false); const [phoneError,setPhoneError] = useState(false);
useEffect(() => { useEffect(() => {
}, []) }, [])
...@@ -40,8 +41,6 @@ function Login(props) { ...@@ -40,8 +41,6 @@ function Login(props) {
function handleSendSMSCode(checkData, userType) { function handleSendSMSCode(checkData, userType) {
if (waitStatus) return; if (waitStatus) return;
let timer; let timer;
// timeSub(60);
// setChecking1(true)
const params = { const params = {
phone: phone, phone: phone,
sig: checkData.sig, sig: checkData.sig,
...@@ -54,7 +53,6 @@ function Login(props) { ...@@ -54,7 +53,6 @@ function Login(props) {
if (!res.data.success) { if (!res.data.success) {
setErrorMessage(res.data.message); setErrorMessage(res.data.message);
} else { } else {
console.log('111');
timeSub(60); timeSub(60);
setChecking1(true) setChecking1(true)
} }
...@@ -181,9 +179,6 @@ function Login(props) { ...@@ -181,9 +179,6 @@ function Login(props) {
<button id='loginIn' onClick={ () => { handleSubmit() } }>登录</button> <button id='loginIn' onClick={ () => { handleSubmit() } }>登录</button>
</div> </div>
</div> </div>
{/* <div className="network-message">
<span className="icon iconfont">&#xe834;</span>网络不给力,请<span className="refresh">点击刷新</span>
</div> */}
</div> </div>
</div> </div>
</div> </div>
......
...@@ -40,15 +40,49 @@ ...@@ -40,15 +40,49 @@
.icon { .icon {
margin-right: 20px margin-right: 20px
} }
.ant-menu-item { .listType {
color: @xm-color-text-menu; width: 5px;
height: 5px;
background: #9A9DA7;
border-radius: 50%;
top: 18px;
left: 38px;
position: absolute;
} }
.ant-menu-item-selected{
.ant-menu-item-selected { color:@active-color;
.name { }
color: #fff; .ant-menu-sub{
.ant-menu-item{
padding-left:58px
} }
} }
.ant-menu-submenu-selected{
color:@active-color;
.ant-menu-item-selected{
color:#FFF;
.listType {
background: @active-color;
}
}
}
// .first-menu-item{
// &::active{
// color:@active-color !important;
// }
// }
// .ant-menu-item {
// color: @xm-color-text-menu;
// }
// .ant-menu-item-selected {
// .name {
// color: #fff;
// }
// }
} }
} }
...@@ -71,3 +105,51 @@ ...@@ -71,3 +105,51 @@
.ant-menu.ant-menu-dark, .ant-menu-dark .ant-menu-sub, .ant-menu.ant-menu-dark .ant-menu-sub{ .ant-menu.ant-menu-dark, .ant-menu-dark .ant-menu-sub, .ant-menu.ant-menu-dark .ant-menu-sub{
background: @menu-bakg !important; background: @menu-bakg !important;
} }
// .ant-menu-submenu-popup>.ant-menu {
// background: @menu-bakg !important;
// color: #9A9DA7;
// padding-left: 15px;
// width: 132px;
// min-width: auto;
// li {
// padding-left: 22px;
// padding-right: 0;
// width: 117px;
// }
// .listType {
// width: 5px;
// height: 5px;
// background: #9A9DA7;
// border-radius: 50%;
// top: 18px;
// left: 5px;
// position: absolute;
// }
// .ant-menu-item-selected {
// background: @menu-bakg;
// color: #fff;
// .listType {
// background: @active-color;
// }
// }
// &:hover {
// .ant-menu-item-active {
// color: #fff;
// .listType {
// background: #fff;
// }
// }
// .ant-menu-item-selected {
// .listType {
// background: @active-color;
// }
// }
// }
// }
...@@ -2,7 +2,7 @@ import React, { useContext, useEffect, useState } from 'react'; ...@@ -2,7 +2,7 @@ import React, { useContext, useEffect, useState } from 'react';
import { import {
withRouter, withRouter,
} from 'react-router-dom'; } from 'react-router-dom';
import { Menu } from 'antd'; import { Menu,Badge} from 'antd';
import { menuList } from '../../routes//config/menuList' import { menuList } from '../../routes//config/menuList'
import { XMContext } from '../../store/context'; import { XMContext } from '../../store/context';
import Bus from '@/core/bus' import Bus from '@/core/bus'
...@@ -18,9 +18,11 @@ function Aside(props: any) { ...@@ -18,9 +18,11 @@ function Aside(props: any) {
useEffect(() => { useEffect(() => {
const link = props.location.pathname; const link = props.location.pathname;
console.log('link',link);
menuList.map((item: any, index: any) => { menuList.map((item: any, index: any) => {
if (link.indexOf(item.link) !== -1) { if (link.indexOf(item.link) !== -1) {
setSelectKey(item.groupCode); setSelectKey(item.groupCode);
console.log('selectKey',selectKey);
setOpenKeys([]) setOpenKeys([])
} else if (item.children) { } else if (item.children) {
item.children.map((_item: any, _index: any) => { item.children.map((_item: any, _index: any) => {
...@@ -32,7 +34,7 @@ function Aside(props: any) { ...@@ -32,7 +34,7 @@ function Aside(props: any) {
return item; return item;
}) })
}, [props.location.pathname]) }, [props.location.pathname])
function taggleMenu(item: any) { function toggleMenu(item: any) {
window.RCHistory.push(item.link) window.RCHistory.push(item.link)
} }
function onOpenChange(openKeys:any){ function onOpenChange(openKeys:any){
...@@ -67,26 +69,29 @@ function Aside(props: any) { ...@@ -67,26 +69,29 @@ function Aside(props: any) {
return null; return null;
} }
if (item.children) { if (item.children) {
return <SubMenu key={item.groupCode} style={{ marginTop: 0 }} title={<div> return <SubMenu key={item.groupCode} style={{ marginTop: 0 }} className="first-menu-item" title={<div >
<span style={{ marginRight: 6 }} className="iconfont icon" dangerouslySetInnerHTML={{ __html:item.icon}}></span> <span style={{ marginRight: 6 }} className="iconfont icon" dangerouslySetInnerHTML={{ __html:item.icon}}></span>
<span>{item.groupName}</span></div>}> <span>{item.groupName}</span></div>}>
{ {
item.children.map((item: any, _index: any) => { item.children.map((item: any, _index: any) => {
return <Menu.Item onClick={() => { taggleMenu(item) }} style={{ marginTop: 0 }} key={item.groupCode + index + _index}> return <Menu.Item onClick={() => { toggleMenu(item) }} style={{ marginTop: 0 }} key={item.groupCode + index + _index}>
<span>{item.groupName}</span> <span className="listType"></span>
<span className="name">{item.groupName}</span>
</Menu.Item> </Menu.Item>
}) })
} }
</SubMenu> </SubMenu>
} else { } else {
return <Menu.Item onClick={() => { taggleMenu(item) }} key={item.groupCode}> return <Menu.Item onClick={() => { toggleMenu(item) }} key={item.groupCode} className="first-menu-item">
<span style={{ marginRight: 6 }} className="iconfont icon" dangerouslySetInnerHTML={{ __html:item.icon}}></span> <span style={{ marginRight: 6 }} className="iconfont icon" dangerouslySetInnerHTML={{ __html:item.icon}}></span>
<span>{item.groupName}</span> <span>{item.groupName}</span>
</Menu.Item> </Menu.Item>
} }
}) })
} }
</Menu> </Menu>
</div> </div>
</div> </div>
......
...@@ -198,12 +198,15 @@ function CourseCatalogPage() { ...@@ -198,12 +198,15 @@ function CourseCatalogPage() {
</div> </div>
<div className="box-footer"> <div className="box-footer">
<PageControl <PageControl
current={query.current} current={query.current}
pageSize={query.size} pageSize={query.size}
total={total} total={total}
toPage={(page) => { toPage={(page: any) => {
const queryStates = _.clone(query);
queryStates.current = page;
setQuery(queryStates);
}}
}}
/> />
</div> </div>
</div> </div>
......
...@@ -19,7 +19,7 @@ interface SecondCatalogAddOrEditModalProps { ...@@ -19,7 +19,7 @@ interface SecondCatalogAddOrEditModalProps {
onClose: (e: any) => void; onClose: (e: any) => void;
modalType:string; modalType:string;
parentId:string; parentId:string;
choosedItem:any
} }
function SecondCatalogAddOrEditModal(props: SecondCatalogAddOrEditModalProps) { function SecondCatalogAddOrEditModal(props: SecondCatalogAddOrEditModalProps) {
......
...@@ -7,14 +7,12 @@ export const menuList: any = [ ...@@ -7,14 +7,12 @@ export const menuList: any = [
{ {
groupName: "直播课", groupName: "直播课",
groupCode: "CourseLiveClass", groupCode: "CourseLiveClass",
icon: '', link: '/CourseLiveClass'
link: ''
}, },
{ {
groupName: "视频课", groupName: "视频课",
groupCode: "CourseVideoClass", groupCode: "CourseVideoClass",
icon: '', link: '/CourseVideoClass'
link: ''
} }
] ]
}, },
...@@ -23,7 +21,7 @@ export const menuList: any = [ ...@@ -23,7 +21,7 @@ export const menuList: any = [
groupName: "资料云盘", groupName: "资料云盘",
groupCode: "CloudDisk", groupCode: "CloudDisk",
icon: '&#xe83b;', icon: '&#xe83b;',
link: '' link: '/CloudDisk'
}, },
{ {
groupName: "店铺管理", groupName: "店铺管理",
......
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