Commit 4af66253 by zhangleyuan

feat:联调课件管理的接口

parent 91e69252
...@@ -77,6 +77,7 @@ ...@@ -77,6 +77,7 @@
"react-async-component": "^2.0.0", "react-async-component": "^2.0.0",
"react-dev-utils": "^10.2.1", "react-dev-utils": "^10.2.1",
"react-dom": "^16.13.1", "react-dom": "^16.13.1",
"react-infinite-scroller": "^1.2.4",
"react-router-dom": "^5.2.0", "react-router-dom": "^5.2.0",
"react-sortable-hoc": "^1.11.0", "react-sortable-hoc": "^1.11.0",
"resolve": "1.15.0", "resolve": "1.15.0",
......
...@@ -17,7 +17,7 @@ import * as news from '../lottie/news/data.json'; ...@@ -17,7 +17,7 @@ import * as news from '../lottie/news/data.json';
import * as studentData from '../lottie/student/data.json'; import * as studentData from '../lottie/student/data.json';
import './DefaultIcon.less'; import './DefaultIcon.less';
class DefaultIcon extends BaseComponent { class DefaultIcon extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { this.state = {
......
...@@ -21,7 +21,7 @@ import DownloadLiveModal from '@/components/DownloadLiveModal'; ...@@ -21,7 +21,7 @@ import DownloadLiveModal from '@/components/DownloadLiveModal';
// import StartLiveModal from '../modal/StartLiveModal'; // import StartLiveModal from '../modal/StartLiveModal';
// import ClassRecordModal from '../modal/ClassRecordModal'; // import ClassRecordModal from '../modal/ClassRecordModal';
// import PlayBackRecordModal from '../modal/PlayBackRecordModal'; // import PlayBackRecordModal from '../modal/PlayBackRecordModal';
// import ManageCoursewareModal from '../modal/ManageCoursewareModal'; import ManageCoursewareModal from '../modal/ManageCoursewareModal';
import ShareLiveModal from '../modal/ShareLiveModal'; import ShareLiveModal from '../modal/ShareLiveModal';
// import AccountChargeModal from '../modal/AccountChargeModal'; // import AccountChargeModal from '../modal/AccountChargeModal';
// import SelectStudent from '../modal/select-student'; // import SelectStudent from '../modal/select-student';
...@@ -424,7 +424,7 @@ class LiveCourseList extends React.Component { ...@@ -424,7 +424,7 @@ class LiveCourseList extends React.Component {
/> />
</div> </div>
{ this.state.shareLiveModal } { this.state.shareLiveModal }
{/* {openCoursewareModal && ( {openCoursewareModal && (
<ManageCoursewareModal <ManageCoursewareModal
data={editData} data={editData}
type={type} type={type}
...@@ -433,7 +433,7 @@ class LiveCourseList extends React.Component { ...@@ -433,7 +433,7 @@ class LiveCourseList extends React.Component {
this.setState({ openCoursewareModal: false }); this.setState({ openCoursewareModal: false });
}} }}
/> />
)} */} )}
{openDownloadModal && ( {openDownloadModal && (
<DownloadLiveModal <DownloadLiveModal
url={downloadUrl} url={downloadUrl}
......
...@@ -15,10 +15,10 @@ import { suffixType, DEFAULT_SIZE_UNIT, SupportFileType } from '@/common/constan ...@@ -15,10 +15,10 @@ import { suffixType, DEFAULT_SIZE_UNIT, SupportFileType } from '@/common/constan
import { FileVerifyMap, FileTypeIcon, DISK_MAP } from '@/common/constants/academic/lessonEnum'; import { FileVerifyMap, FileTypeIcon, DISK_MAP } from '@/common/constants/academic/lessonEnum';
import ScanFileModal from '@/modules/prepare-lesson/modal/ScanFileModal' import ScanFileModal from '@/modules/prepare-lesson/modal/ScanFileModal'
import SelectPrepareFileModal from '@/modules/prepare-lesson/modal/SelectPrepareFileModal'; import SelectPrepareFileModal from '@/modules/prepare-lesson/modal/SelectPrepareFileModal';
import Service from '@/common/js/service';
import './ManageCoursewareModal.less'; import './ManageCoursewareModal.less';
const { instId, teacherId } = window.currentUserInstInfo;
class ManageCoursewareModal extends React.Component { class ManageCoursewareModal extends React.Component {
constructor(props) { constructor(props) {
...@@ -38,27 +38,26 @@ class ManageCoursewareModal extends React.Component { ...@@ -38,27 +38,26 @@ class ManageCoursewareModal extends React.Component {
componentDidMount() { componentDidMount() {
this.getCoursewareList(); this.getCoursewareList();
this.handleFetchDiskList(); // this.handleFetchDiskList();
if (teacherId) { // if (teacherId) {
this.judgeLessonPermisson(); // this.judgeLessonPermisson();
} // }
} }
// 判断资料云盘权限 // 判断资料云盘权限
judgeLessonPermisson = () => { // judgeLessonPermisson = () => {
const query = { // const query = {
instId, // permissionCode: "2001"
permissionCode: "2001" // };
}; // axios.Apollo("public/apollo/judgeLessonPermission", query).then(res => {
axios.Apollo("public/apollo/judgeLessonPermission", query).then(res => { // this.setState({ isLessonPermission: res.result })
this.setState({ isLessonPermission: res.result }) // });
}); // };
};
// 获取课件列表 // 获取课件列表
getCoursewareList(id) { getCoursewareList(id) {
const { liveCourseId } = this.props.data; const { liveCourseId } = this.props.data;
axios.Apollo('anon/businessLive/getCourseDocList', { liveCourseId }).then((res) => { Service.Hades('/anon/courseWare/getCourseWareDocList', { liveCourseId }).then((res) => {
let newList = []; let newList = [];
const { list } = this.state; const { list } = this.state;
const data = _.find(res.result, item => item.docId == id); const data = _.find(res.result, item => item.docId == id);
...@@ -102,27 +101,23 @@ class ManageCoursewareModal extends React.Component { ...@@ -102,27 +101,23 @@ class ManageCoursewareModal extends React.Component {
} }
// 获取机构可见的磁盘目录 // 获取机构可见的磁盘目录
handleFetchDiskList = () => { // handleFetchDiskList = () => {
axios.Apollo('public/apollo/getUserDisk', {}).then((res) => { // Service.Hades('public/apollo/getUserDisk', {}).then((res) => {
const { result = [] } = res; // const { result = [] } = res;
const diskList = result.map((item) => { // const diskList = result.map((item) => {
return { // return {
...item, // ...item,
folderName: DISK_MAP[item.disk] // folderName: DISK_MAP[item.disk]
} // }
}); // });
this.setState({ // this.setState({
diskList, // diskList,
}); // });
}); // });
} // }
// 上传文件 // 上传文件
addFile() { addFile() {
// 校验是否欠费
this.handleCheckBalance().then((res) => {
if (!res) return;
// 判断是否早于开课前45分钟 // 判断是否早于开课前45分钟
const { startTime } = this.props.data; const { startTime } = this.props.data;
const currentTime = new Date().getTime(); const currentTime = new Date().getTime();
...@@ -152,7 +147,7 @@ class ManageCoursewareModal extends React.Component { ...@@ -152,7 +147,7 @@ class ManageCoursewareModal extends React.Component {
selectedFileList: list, selectedFileList: list,
showSelectFileModal: true, // 选择文件弹窗 showSelectFileModal: true, // 选择文件弹窗
}) })
})
} }
handleAddFile = (addFolderIds) => { handleAddFile = (addFolderIds) => {
...@@ -161,16 +156,13 @@ class ManageCoursewareModal extends React.Component { ...@@ -161,16 +156,13 @@ class ManageCoursewareModal extends React.Component {
}); });
const { liveCourseId } = this.props.data; const { liveCourseId } = this.props.data;
const { teacherId } = window.currentUserInstInfo;
const params = { const params = {
addFolderIds, addFolderIds,
liveCourseId, liveCourseId,
checkTime: true, checkTime: true,
operatorId: teacherId || User.tid() || User.aid(), operatorId: User.getUserId(),
operatorType: (!teacherId && !User.tid()) ? 1 : 2 // 1: 教务 2: 老师
}; };
Service.Hades('public/courseWare/uploadCourseWareFile', params).then((res) => {
axios.Apollo('public/businessLive/relationLessonFile', params).then((res) => {
this.getCoursewareList(); this.getCoursewareList();
}); });
} }
...@@ -240,10 +232,9 @@ class ManageCoursewareModal extends React.Component { ...@@ -240,10 +232,9 @@ class ManageCoursewareModal extends React.Component {
// 校验余额 // 校验余额
handleCheckBalance = async () => { handleCheckBalance = async () => {
const { type } = this.props; const { type } = this.props;
const balanceRes = await axios.Business("public/liveAssets/query", { instId }); const balanceRes = await axios.Business("public/liveAssets/query", { });
// 判断是否欠费,旗舰版用户不需要校验余额 // 判断是否欠费,旗舰版用户不需要校验余额
const ultimateRes = await axios.Business('public/inst/checkInstProduct', { const ultimateRes = await axios.Business('public/inst/checkInstProduct', {
instId,
productCodeList: ['ULTIMATESELL', 'PIP_TO_ULTIMATE', 'HIGH_TO_ULTIMATE'] productCodeList: ['ULTIMATESELL', 'PIP_TO_ULTIMATE', 'HIGH_TO_ULTIMATE']
}); });
...@@ -356,26 +347,20 @@ class ManageCoursewareModal extends React.Component { ...@@ -356,26 +347,20 @@ class ManageCoursewareModal extends React.Component {
{_.isEmpty(_list) ? {_.isEmpty(_list) ?
<div className="empty-body"> <div className="empty-body">
<img className="empty-image" src="https://image.xiaomaiketang.com/xm/s8xkAPCDex.png" alt="" /> <img className="empty-image" src="https://image.xiaomaiketang.com/xm/s8xkAPCDex.png" alt="" />
{
((!teacherId && Permission.hasClassBook()) || isLessonPermission) &&
<Button <Button
className="empty-button" className="empty-button"
type="primary" type="primary"
onClick={() => this.addFile()} onClick={() => this.addFile()}
>上传课件</Button> >上传课件</Button>
}
<p className="empty-tip">提前上传直播需要的课件和素材,直播将会变得更便捷!</p> <p className="empty-tip">提前上传直播需要的课件和素材,直播将会变得更便捷!</p>
</div> </div>
: <div className="manage-body"> : <div className="manage-body">
<div className="header"> <div className="header">
{
((!teacherId && Permission.hasClassBook()) || isLessonPermission) &&
<Button <Button
className="header-button" className="header-button"
type="primary" type="primary"
onClick={() => this.addFile()} onClick={() => this.addFile()}
>上传课件</Button> >上传课件</Button>
}
</div> </div>
<Table <Table
size="small" size="small"
......
...@@ -101,4 +101,5 @@ class CreateFolderModal extends React.Component { ...@@ -101,4 +101,5 @@ class CreateFolderModal extends React.Component {
} }
} }
export default Form.create()(CreateFolderModal); // export default Form.create()(CreateFolderModal);
\ No newline at end of file export default CreateFolderModal;
\ No newline at end of file
...@@ -15,7 +15,8 @@ import { getEllipsText } from "@/core/util"; ...@@ -15,7 +15,8 @@ import { getEllipsText } from "@/core/util";
import DefaultIcon from '@/modules/common/DefaultIcon'; import DefaultIcon from '@/modules/common/DefaultIcon';
import UploadProgressModal from './UploadProgressModal'; import UploadProgressModal from './UploadProgressModal';
import NonCompliantFileModal from './NonCompliantFileModal'; import NonCompliantFileModal from './NonCompliantFileModal';
import Service from '@/common/js/service';
import _ from 'underscore';
import { import {
DEFAULT_SIZE_UNIT, FileTypeIcon, NonCompliantFileMap, DEFAULT_SIZE_UNIT, FileTypeIcon, NonCompliantFileMap,
DISK_LIST, SupportFileType, LocalFileType DISK_LIST, SupportFileType, LocalFileType
...@@ -32,15 +33,15 @@ const defaultQuery = { ...@@ -32,15 +33,15 @@ const defaultQuery = {
} }
const defaultRootDisk = { const defaultRootDisk = {
folderName: '我的文件', folderName: '公共文件',
disk: 'MYSELF', disk: 'COMMON',
uploadPower: false uploadPower: false
} }
const FOLDERLIST_URL_MAP = { const FOLDERLIST_URL_MAP = {
'MYSELF': 'public/apollo/folderList', 'MYSELF': 'public/hadesStore/folderList',
'COMMON': 'public/apollo/commonFolderList', 'COMMON': 'public/hadesStore/folderList',
'EMPLOYEE': 'public/apollo/employeeFolderList' 'EMPLOYEE': 'public/hadesStore/folderList'
}; };
// 支持本地上传的文件类型 // 支持本地上传的文件类型
...@@ -101,16 +102,17 @@ class SelectPrepareFileModal extends React.Component { ...@@ -101,16 +102,17 @@ class SelectPrepareFileModal extends React.Component {
const _params = { const _params = {
...query, ...query,
...params, ...params,
instId: instId || LS.get('instId'),
disk: params.disk || currentRootDisk.disk, disk: params.disk || currentRootDisk.disk,
sort: 'NAME_ASC' sort: 'NAME_ASC',
storeId:User.getStoreId(),
createId:User.getUserId()
} }
if (selectTypeList) { if (selectTypeList) {
_params.folderFileType = selectTypeList _params.folderFileType = selectTypeList
} }
axios.Apollo(FOLDERLIST_URL_MAP[currentRootDisk.disk], _params).then((res) => { Service.Hades(FOLDERLIST_URL_MAP[currentRootDisk.disk], _params).then((res) => {
const { result = {} } = res; const { result = {} } = res;
const { records = [], total = 0 } = result; const { records = [], total = 0 } = result;
this.setState({ this.setState({
......
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