Commit 699d2bd5 authored by baixian's avatar baixian

微官网

parent 2cde7958
......@@ -3862,6 +3862,51 @@
}
}
},
"braft-convert": {
"version": "2.3.0",
"resolved": "https://registry.npm.taobao.org/braft-convert/download/braft-convert-2.3.0.tgz",
"integrity": "sha1-J9WQUTbDNJA9CDt6I1KnIEVieIg=",
"requires": {
"draft-convert": "^2.0.0",
"draft-js": "^0.10.3"
}
},
"braft-editor": {
"version": "2.3.9",
"resolved": "https://registry.npm.taobao.org/braft-editor/download/braft-editor-2.3.9.tgz?cache=0&sync_timestamp=1582864845919&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbraft-editor%2Fdownload%2Fbraft-editor-2.3.9.tgz",
"integrity": "sha1-/SuOI+pxGRAWV5oe2CMdFq2PW0o=",
"requires": {
"@babel/runtime": "^7.0.0",
"braft-convert": "^2.3.0",
"braft-finder": "^0.0.19",
"braft-utils": "^3.0.8",
"draft-convert": "^2.0.0",
"draft-js": "^0.10.3",
"draft-js-multidecorators": "^1.0.0",
"draftjs-utils": "^0.9.4",
"immutable": "~3.7.4"
}
},
"braft-extensions": {
"version": "0.1.0",
"resolved": "https://registry.npm.taobao.org/braft-extensions/download/braft-extensions-0.1.0.tgz",
"integrity": "sha1-Xd3iLqkzmTZJBiBkl7d9j7oke1c=",
"requires": {
"@babel/runtime": "^7.0.0",
"braft-convert": "^2.1.10",
"braft-utils": "^3.0.12"
}
},
"braft-finder": {
"version": "0.0.19",
"resolved": "https://registry.npm.taobao.org/braft-finder/download/braft-finder-0.0.19.tgz",
"integrity": "sha1-wyTYJSbtNHapPehsybQH9OGIvI0="
},
"braft-utils": {
"version": "3.0.12",
"resolved": "https://registry.npm.taobao.org/braft-utils/download/braft-utils-3.0.12.tgz",
"integrity": "sha1-K3Vc4dg5fZa2J7Z2f3TQfyVynYU="
},
"brorand": {
"version": "1.1.0",
"resolved": "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz",
......@@ -5600,6 +5645,16 @@
"domelementtype": "1"
}
},
"draft-convert": {
"version": "2.1.8",
"resolved": "https://registry.npm.taobao.org/draft-convert/download/draft-convert-2.1.8.tgz",
"integrity": "sha1-BQjvr+6nnhHleTuncZSBKLoVEpE=",
"requires": {
"@babel/runtime": "^7.5.5",
"immutable": "~3.7.4",
"invariant": "^2.2.1"
}
},
"draft-js": {
"version": "0.10.5",
"resolved": "https://registry.npm.taobao.org/draft-js/download/draft-js-0.10.5.tgz",
......@@ -5610,6 +5665,19 @@
"object-assign": "^4.1.0"
}
},
"draft-js-multidecorators": {
"version": "1.0.0",
"resolved": "https://registry.npm.taobao.org/draft-js-multidecorators/download/draft-js-multidecorators-1.0.0.tgz",
"integrity": "sha1-bEvo17eN0rlm7lHubMF5ubU15hI=",
"requires": {
"immutable": "*"
}
},
"draftjs-utils": {
"version": "0.9.4",
"resolved": "https://registry.npm.taobao.org/draftjs-utils/download/draftjs-utils-0.9.4.tgz?cache=0&sync_timestamp=1575816792357&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdraftjs-utils%2Fdownload%2Fdraftjs-utils-0.9.4.tgz",
"integrity": "sha1-l2xhqhM9u7/t1lrh3WYn17mMbwg="
},
"duplexer": {
"version": "0.1.1",
"resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.1.tgz",
......
......@@ -26,6 +26,8 @@
"bizcharts": "^3.5.5",
"bizcharts-plugin-slider": "^2.1.1-beta.1",
"blueimp-md5": "^2.10.0",
"braft-editor": "^2.3.9",
"braft-extensions": "^0.1.0",
"bundle-loader": "^0.5.6",
"clipboard": "^2.0.4",
"co": "^4.6.0",
......
......@@ -119,7 +119,8 @@ export default {
setBanner: `${dakaapi}member/website/school/set_banner`,
courseInfoAdd: `${dakaapi}member/website/course`,
courseInfoUpdate: `${dakaapi}member/website/course`,
schoolIntro: `${dakaapi}member/website/intro`,
schoolIntro: `${dakaapi}member/website/intros`,
schoolIntroSave: `${dakaapi}member/website/intro/save`,
schoolIntroDel: `${dakaapi}member/website/intro/destroy`,
moduleSort: `${dakaapi}member/website/school/module_sort`,
clockList: `${dakaapi}common/clock`,
......
This diff is collapsed.
......@@ -64,6 +64,7 @@ export default {
signature, avatorUploader, files, uploaderLoading, uploadtype, orgIndex, imgIndex, orgType, action,
} = payload;
const file = files.files ? files.files[0] : null;
console.log(file, 'file');
uploaderLoading();
const filename = `${signature.dir}${getRandomFilename(file.name)}`;
const params = {
......@@ -173,6 +174,7 @@ export default {
bannerImg, course, orgdescs,
adCarousel,
classMoment,
schoolIntro,
} = yield select(state => state.officialweb);
const {
cropperUrl, filename, uploadtype, orgType, orgIndex, imgIndex, action,
......@@ -264,6 +266,16 @@ export default {
classMoment: [...classMoment],
},
});
} else if (uploadtype == 'uploadSchoolIntro') {
if (orgType == 1) {
schoolIntro[imgIndex].content = `${filename}?x-oss-process=${cropperUrl}`;
yield put({
type: 'officialweb/updateState',
payload: {
schoolIntro: [...schoolIntro],
},
});
}
}
},
* unloadstates({ payload }, { call, put }) { // 释放该页面存储的所有状态
......
import React from 'react';
import { Modal, Icon } from 'antd';
import BraftEditor from 'braft-editor';
import pageStyle from './RichText.less';
import api from '../../common/api';
import { getRandomFilename, LocalStorage } from '../../utils';
// eslint-disable-next-line import/first
class RichText extends React.Component {
constructor(props) {
super(props);
this.state = {
};
}
componentDidMount() { // 挂载
// let { editorValue } = this.props;
// setTimeout(() => {
// // eslint-disable-next-line no-const-assign
// editorValue = BraftEditor.createEditorState(editorValue);
// }, 1000);
}
componentWillUnmount() { // 卸载
}
myUploadFn = async (param) => {
const formData = new FormData();
const { sid } = this.props;
const user = LocalStorage.getItem('user');
console.log(param.file, 'param.file');
formData.append('file', param.file);
const res = await fetch(`${api.imgupload}?school_id=${sid}`, {
method: 'GET',
headers: {
Authorization: `Bearer ${user.token}}`,
},
}).then(response => response.json());
console.log(res.data, 'access');
const {
accessid,
policy,
signature,
host,
callback,
dir,
} = res.data;
const filename = `${dir}${param.file.name}`;
const formData2 = new FormData();
formData2.append('key', filename);
formData2.append('policy', policy);
formData2.append('OSSAccessKeyId', accessid);
formData2.append('signature', signature);
if (callback) {
formData2.append('callback', callback);
}
formData2.append('success_action_status', 200);
formData2.append('file', param.file);
const res2 = await fetch(host, {
method: 'POST',
body: formData2,
}).then(response => response.json());
if (res2.status == 'ok') {
console.log(res2, 'res21111111');
param.success({
url: `${host}/${filename}`,
});
}
}
handleChangeEditor = (editorState) => {
const { handleChangeEditor, index } = this.props;
console.log(editorState, 'editorState');
handleChangeEditor(editorState, index);
}
render() {
const {
editorValue,
} = this.props;
const controls = [
'undo', 'redo', 'separator',
'font-size', 'line-height', 'letter-spacing', 'separator',
'text-color', 'bold', 'italic', 'underline', 'strike-through', 'separator',
'remove-styles', 'emoji', 'separator', 'text-align', 'headings', 'list-ul', 'list-ol', 'separator', 'hr',
'media', 'separator',
'clear',
];
console.log(editorValue, 'editorValue');
const newValue = BraftEditor.createEditorState(editorValue);
return (
<div className={pageStyle.container}>
<BraftEditor
contentStyle={{ height: 210, boxShadow: 'inset 0 1px 3px rgba(0,0,0,.1)' }}
media={{ uploadFn: this.myUploadFn }}
controls={controls}
onChange={this.handleChangeEditor}
value={newValue}
/>
</div>
);
}
}
RichText.propTypes = {
};
export default RichText;
This diff is collapsed.
......@@ -20,6 +20,10 @@ import OnlineClass from './pagecomponent/OnlineClass';
import OnlineClassEditor from './pagecomponent/OnlineClassEditor';
import TogetherClock from './pagecomponent/TogetherClock';
import TogetherClockEditor from './pagecomponent/TogetherClockEditor';
import SchoolIntro from './pagecomponent/SchoolIntro';
import SchoolIntroEditor from './pagecomponent/SchoolIntroEditor';
import Teacher from './pagecomponent/Teacher';
import TeacherEditor from './pagecomponent/TeacherEditor';
import Cropper from '../../components/Cropper';
class Officialweb extends React.Component {
componentDidMount() { // 挂载
......@@ -223,6 +227,64 @@ class Officialweb extends React.Component {
</div>
);
break;
case 'orgdesc':
renderDom = (
<div className={pageStyle.box} key={ele.type}>
<div
className={`${pageStyle.ContentBox} ${index == moduleSelect ? pageStyle.moduleSelect : ''}`}
key={ele.type}
onClick={event => this.moduleSelect(index, event)}
>
<SchoolIntro
orgdescs={ele.data}
/>
{dragoverindex == index && <div className={pageStyle.dropendbox}>松开鼠标,模块会放在这里</div>}
</div>
{moduleSelect == index &&
<div className={pageStyle.blockOperateBox}>
{index == 4 && <div className={`${pageStyle.blockOperateItem} ${pageStyle.blockOperateItemGrey}`}><Icon className={pageStyle.blockOperateItemIcon} type="arrow-up" /></div>}
{index > 4 && <div className={pageStyle.blockOperateItem} onClick={() => this.pageBlockMove(index, 'up')}><Icon className={pageStyle.blockOperateItemIcon} type="arrow-up" /></div>}
{index < (newPageInfo.length - 1) && <div className={pageStyle.blockOperateItem} onClick={() => this.pageBlockMove(index, 'down')}><Icon className={pageStyle.blockOperateItemIcon} type="arrow-down" /></div>}
{index == (newPageInfo.length - 1) && <div className={`${pageStyle.blockOperateItem} ${pageStyle.blockOperateItemGrey}`}><Icon className={pageStyle.blockOperateItemIcon} type="arrow-down" /></div>}
</div>
}
{moduleSelect == index &&
<div className={pageStyle.editbox}>
<SchoolIntroEditor />
</div>
}
</div>
);
break;
case 'teacher':
renderDom = (
<div className={pageStyle.box} key={ele.type}>
<div
className={`${pageStyle.ContentBox} ${index == moduleSelect ? pageStyle.moduleSelect : ''}`}
key={ele.type}
onClick={event => this.moduleSelect(index, event)}
>
<Teacher
orgdescs={ele.data}
/>
{dragoverindex == index && <div className={pageStyle.dropendbox}>松开鼠标,模块会放在这里</div>}
</div>
{moduleSelect == index &&
<div className={pageStyle.blockOperateBox}>
{index == 4 && <div className={`${pageStyle.blockOperateItem} ${pageStyle.blockOperateItemGrey}`}><Icon className={pageStyle.blockOperateItemIcon} type="arrow-up" /></div>}
{index > 4 && <div className={pageStyle.blockOperateItem} onClick={() => this.pageBlockMove(index, 'up')}><Icon className={pageStyle.blockOperateItemIcon} type="arrow-up" /></div>}
{index < (newPageInfo.length - 1) && <div className={pageStyle.blockOperateItem} onClick={() => this.pageBlockMove(index, 'down')}><Icon className={pageStyle.blockOperateItemIcon} type="arrow-down" /></div>}
{index == (newPageInfo.length - 1) && <div className={`${pageStyle.blockOperateItem} ${pageStyle.blockOperateItemGrey}`}><Icon className={pageStyle.blockOperateItemIcon} type="arrow-down" /></div>}
</div>
}
{moduleSelect == index &&
<div className={pageStyle.editbox}>
<TeacherEditor />
</div>
}
</div>
);
break;
case 'clocklist':
renderDom = (
<div className={pageStyle.box} key={ele.type}>
......@@ -247,35 +309,6 @@ class Officialweb extends React.Component {
</div>
);
break;
case 'orgdesc':
renderDom = (
<div className={pageStyle.box} key={ele.type}>
<div
className={`${pageStyle.ContentBox} ${index == moduleSelect ? pageStyle.moduleSelect : ''}`}
key={ele.type}
onClick={event => this.moduleSelect(index, event)}
>
<Orgdesc
orgdescs={ele.data}
/>
{dragoverindex == index && <div className={pageStyle.dropendbox}>松开鼠标,模块会放在这里</div>}
</div>
{moduleSelect == index &&
<div className={pageStyle.blockOperateBox}>
{index == 4 && <div className={`${pageStyle.blockOperateItem} ${pageStyle.blockOperateItemGrey}`}><Icon className={pageStyle.blockOperateItemIcon} type="arrow-up" /></div>}
{index > 4 && <div className={pageStyle.blockOperateItem} onClick={() => this.pageBlockMove(index, 'up')}><Icon className={pageStyle.blockOperateItemIcon} type="arrow-up" /></div>}
{index < (newPageInfo.length - 1) && <div className={pageStyle.blockOperateItem} onClick={() => this.pageBlockMove(index, 'down')}><Icon className={pageStyle.blockOperateItemIcon} type="arrow-down" /></div>}
{index == (newPageInfo.length - 1) && <div className={`${pageStyle.blockOperateItem} ${pageStyle.blockOperateItemGrey}`}><Icon className={pageStyle.blockOperateItemIcon} type="arrow-down" /></div>}
</div>
}
{moduleSelect == index &&
<div className={pageStyle.editbox}>
<OrgdescEditor />
</div>
}
</div>
);
break;
case 'classmoments':
renderDom = (
<div className={pageStyle.box} key={ele.type}>
......
......@@ -15,6 +15,7 @@ import StudentClock from './pagecomponent/StudentClock';
import BtnPermission from '../../components/BtnPermission';
import AdCarousel from './pagecomponent/AdCarousel';
import ClassMoments from './pagecomponent/ClassMoments';
import SchoolIntro from './pagecomponent/SchoolIntro';
import Cropper from '../../components/Cropper';
class Officialweb extends React.Component {
componentDidMount() { // 挂载
......@@ -189,7 +190,7 @@ class Officialweb extends React.Component {
className={`${pageStyle.ContentBox}`}
key={ele.type}
>
<Orgdesc
<SchoolIntro
orgdescs={ele.data}
/>
</div>
......
......@@ -157,7 +157,6 @@ class ClassMomentsEditor extends React.Component {
sm: { span: 20 },
},
};
console.log(classMoment, '11111');
return (
<div className={`${PageStyle.SchoolInfoEditorcontainer} SchoolInfoEditorcontainer`}>
{progressRate && progressRate > 0 ?
......
import React from 'react';
import { connect } from 'dva';
import { Carousel, Icon } from 'antd';
import PageStyle from './SchoolIntro.less';
import { ossVideofy, imagify, videoPoster } from '../../../utils/index';
class SchoolIntro extends React.Component {
constructor(props) {
super(props);
this.state = {
};
}
componentWillMount() {
}
componentWillUnmount() {
}
render() {
const { banner } = this.props;
return (
<div className={PageStyle.Bannercontainer}>
学校介绍
</div>
);
}
}
SchoolIntro.propTypes = {
};
function mapStateToProps(state) {
const {
menus, defaultMenu, collapsed,
} = state.webapp;
return {
menus,
defaultMenu,
collapsed,
};
}
export default connect(mapStateToProps)(SchoolIntro);
This diff is collapsed.
@import '../../../less/variables.less';
@images: '@{imagesroot}/webapp/';
.SchoolInfoEditorcontainer {
}
.header {
color: #000;
font-size: 14px;
font-weight: 700;
line-height: 50px;
padding-left: 20px;
border-bottom: 1px solid rgba(0,0,0,0.05);
}
.FormBox {
padding-top: 30px;
padding-bottom: 30px;
max-height: 400px;
overflow-y: scroll;
.formItem {
display: flex;
margin-bottom: 15px;
}
.formLeft {
height: 104px;
width: 41px;
border-radius: 10px;
background-color: #fff;
margin-right: 24px;
display: flex;
flex-direction: column;
overflow: hidden;
margin-left: 12px;
.formItemIcon {
flex: 1;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
&:hover {
background-color: #19B5FE;
.itemIcon {
color: #fff;
}
}
&.formItemIconGray {
color: #E5E5E5;
&:hover {
cursor: no-drop;
background-color: #fff;
}
}
}
}
.formRight {
display: flex;
align-items: center;
width: 524px;
border: 1px solid #979797;
background-color: #fff;
padding: 15px 10px;
border-radius:5px;
.formRightItem {
width: 350px;
}
.formRightImg {
width: 128px;
height: 128px;
position: relative;
border: 1px solid #979797;
margin-right: 15px;
line-height: 128px;
color: #0091FF;
text-align: center;
font-size: 14px;
.uploadInput {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
opacity: 0;
z-index: 5;
}
.closeAdIcon {
width: 30px;
height: 30px;
position: absolute;
right: 0;
top: 0;
color: #fff;
font-size: 20px;
cursor: pointer;
background-color: rgba(0,0,0,0.8);
line-height: 30px;
}
.img {
width: 100%;
height: 100%;
display: block;
object-fit: contain;
}
}
}
}
.FormItemClass {
padding-left: 30px;
margin-bottom: 8px;
display: flex;
align-items: center;
}
.btnbox {
text-align: right;
padding: 14px 35px 12px 0;
.SubmitBtn {
height: 34px;
line-height: 34px;
background-color: #FFFFFF;
color: #000000;
font-size: 14px;
border: 1px solid #ECECEC;
&:hover {
background-color: #FFFFFF;
color: #000000;
font-size: 14px;
border: 1px solid #ECECEC;
}
&:active {
background-color: #FFFFFF;
color: #000000;
font-size: 14px;
border: 1px solid #ECECEC;
}
&:focus {
background-color: #FFFFFF;
color: #000000;
font-size: 14px;
border: 1px solid #ECECEC;
}
}
}
.addPlate {
width: 524px;
height: 54px;
line-height: 54px;
text-align: center;
font-size:14px;
font-family:PingFangSC-Regular,PingFang SC;
font-weight:400;
color:rgba(0,145,255,1);
margin: 20px auto 0;
background-color: #fff;
border:1px dashed rgba(151,151,151,1);
margin-left: 75px;
cursor: pointer;
&:hover {
.AddFloatbox {
display: block;
}
}
.AddFloatbox {
border-radius: 4px;
width: 152px;
height: 88px;
background-color: #fff;
box-shadow:0px 2px 10px 0px rgba(0, 0, 0, 0.14);
position: absolute;
left: 50%;
top: 75%;
display: none;
}
.AddVideoItem {
border-bottom: 1px solid rgba(0,0,0,0.05);
}
.AddItem {
line-height: 44px;
text-align: center;
font-size: 14px;
color: #000000;
cursor: pointer;
&:hover {
color: #19B5FE;
}
}
}
::-webkit-scrollbar {
width: 8px;
height: 10px;
background-color: rgba(0,0,0,0);
}
::-webkit-scrollbar-thumb {
border-radius: 6px;
background-color: rgba(0,0,0,.2);
transition: all .4s ease;
-moz-transition: all .4s ease;
-webkit-transition: all .4s ease;
-o-transition: all .4s ease;
}
.progressWrap {
width: 300px;
height: 300px;
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-color: #f1f1f1;
border-radius: 15px;
z-index: 9999;
&>p {
font-size: 18px;
margin-top: 30px;
color: #1e8bff;
}
}
.formIntroWrap {
position: relative;
width: 94%;
margin: 0 auto;
.sizeNumber {
position: absolute;
bottom: 8px;
right: 10px;
}
}
import React from 'react';
import { connect } from 'dva';
import { Carousel, Icon } from 'antd';
import PageStyle from './Teacher.less';
import { ossVideofy, imagify, videoPoster } from '../../../utils/index';
class Teacher extends React.Component {
constructor(props) {
super(props);
this.state = {
};
}
componentWillMount() {
}
componentWillUnmount() {
}
render() {
const { banner } = this.props;
return (
<div className={PageStyle.Bannercontainer}>
名师风采
</div>
);
}
}
Teacher.propTypes = {
};
function mapStateToProps(state) {
const {
menus, defaultMenu, collapsed,
} = state.webapp;
return {
menus,
defaultMenu,
collapsed,
};
}
export default connect(mapStateToProps)(Teacher);
This diff is collapsed.
@import '../../../less/variables.less';
@images: '@{imagesroot}/webapp/';
.SchoolInfoEditorcontainer {
}
.header {
color: #000;
font-size: 14px;
font-weight: 700;
line-height: 50px;
padding-left: 20px;
border-bottom: 1px solid rgba(0,0,0,0.05);
}
.FormBox {
padding-top: 30px;
padding-bottom: 30px;
max-height: 400px;
overflow-y: scroll;
.formItem {
display: flex;
margin-bottom: 15px;
}
.formLeft {
height: 104px;
width: 41px;
border-radius: 10px;
background-color: #fff;
margin-right: 24px;
display: flex;
flex-direction: column;
overflow: hidden;
margin-left: 12px;
.formItemIcon {
flex: 1;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
&:hover {
background-color: #19B5FE;
.itemIcon {
color: #fff;
}
}
&.formItemIconGray {
color: #E5E5E5;
&:hover {
cursor: no-drop;
background-color: #fff;
}
}
}
}
.formRightWrap {
width: 524px;
border: 1px solid #979797;
background-color: #fff;
padding: 15px 10px;
border-radius:5px;
}
.formRight {
display: flex;
align-items: center;
.formRightItem {
width: 400px;
.formRightItemFlex {
display: flex;
align-items: center;
}
}
.formRightImg {
width: 92px;
height: 92px;
position: relative;
border: 1px solid #979797;
margin-right: 15px;
line-height: 92px;
color: #0091FF;
text-align: center;
font-size: 14px;
border-radius: 50%;
.uploadInput {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
opacity: 0;
z-index: 5;
}
.closeAdIcon {
width: 25px;
height: 25px;
position: absolute;
right: 0;
top: 0;
color: #fff;
font-size: 20px;
cursor: pointer;
background-color: rgba(0,0,0,0.8);
line-height: 30px;
}
&>img {
width: 100%;
height: 100%;
display: block;
}
}
}
}
.FormItemClass {
padding-left: 30px;
margin-bottom: 8px;
display: flex;
align-items: center;
}
.btnbox {
text-align: right;
padding: 14px 35px 12px 0;
.SubmitBtn {
height: 34px;
line-height: 34px;
background-color: #FFFFFF;
color: #000000;
font-size: 14px;
border: 1px solid #ECECEC;
&:hover {
background-color: #FFFFFF;
color: #000000;
font-size: 14px;
border: 1px solid #ECECEC;
}
&:active {
background-color: #FFFFFF;
color: #000000;
font-size: 14px;
border: 1px solid #ECECEC;
}
&:focus {
background-color: #FFFFFF;
color: #000000;
font-size: 14px;
border: 1px solid #ECECEC;
}
}
}
.addPlate {
width: 524px;
height: 54px;
line-height: 54px;
text-align: center;
font-size:14px;
font-family:PingFangSC-Regular,PingFang SC;
font-weight:400;
color:rgba(0,145,255,1);
margin: 20px auto 0;
background-color: #fff;
border:1px dashed rgba(151,151,151,1);
margin-left: 75px;
}
::-webkit-scrollbar {
width: 8px;
height: 10px;
background-color: rgba(0,0,0,0);
}
::-webkit-scrollbar-thumb {
border-radius: 6px;
background-color: rgba(0,0,0,.2);
transition: all .4s ease;
-moz-transition: all .4s ease;
-webkit-transition: all .4s ease;
-o-transition: all .4s ease;
}
......@@ -164,3 +164,11 @@ export function subjectMixtureSave(params) {
data,
});
}
export function schoolIntroSave(params) {
const data = qs.stringify(params);
return request({
url: `${api.officaialweb.schoolIntroSave}`,
method: 'POST',
data,
});
}
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