diff --git a/public/react/src/modules/message/js/MessagSub.js b/public/react/src/modules/message/js/MessagSub.js index ab814aab8..fa57036e3 100644 --- a/public/react/src/modules/message/js/MessagSub.js +++ b/public/react/src/modules/message/js/MessagSub.js @@ -470,6 +470,13 @@ class MessagSub extends Component{ } case "Discuss": return window.open(`/shixuns/${item.identifier}/shixun_discuss`); + case "Video": + if(item.tiding_type==="Apply"){ + return window.open(`/managements/video_applies`); + }else if(item.tiding_type==="System"){ + return window.open(`/users/${this.props.current_user.login}/videos`); + } + return ''; default : return window.open("/") } diff --git a/public/react/src/modules/user/usersInfo/Infos.js b/public/react/src/modules/user/usersInfo/Infos.js index 488287b0e..242e25464 100644 --- a/public/react/src/modules/user/usersInfo/Infos.js +++ b/public/react/src/modules/user/usersInfo/Infos.js @@ -298,7 +298,7 @@ class Infos extends Component{ > {/* 项目 */} - () } diff --git a/public/react/src/modules/user/usersInfo/InfosBanner.js b/public/react/src/modules/user/usersInfo/InfosBanner.js index c3badce13..fdc361dc6 100644 --- a/public/react/src/modules/user/usersInfo/InfosBanner.js +++ b/public/react/src/modules/user/usersInfo/InfosBanner.js @@ -101,10 +101,10 @@ class InfosBanner extends Component{ to={`/users/${username}/package`}>众包 {((is_current && current_user && current_user.is_teacher ) || current_user && current_user.admin) - &&
  • + &&
  • this.setState({moduleName: 'videoes'})} - to={`/users/${username}/videoes`}>视频 + onClick={() => this.setState({moduleName: 'videos'})} + to={`/users/${username}/videos`}>视频
  • } diff --git a/public/react/src/modules/user/usersInfo/InfosIndex.js b/public/react/src/modules/user/usersInfo/InfosIndex.js index 092ae9009..89d69ab5d 100644 --- a/public/react/src/modules/user/usersInfo/InfosIndex.js +++ b/public/react/src/modules/user/usersInfo/InfosIndex.js @@ -23,6 +23,10 @@ const VideoPublishSuccess = Loadable({ loader: () => import('./video/VideoPublishSuccess'), loading: Loading, }) +const VideoProtocol = Loadable({ + loader: () => import('./video/VideoProtocol'), + loading: Loading, +}) const $ = window.$; class InfosIndex extends Component{ @@ -52,16 +56,23 @@ class InfosIndex extends Component{ {/* 视频发布 */} - () } > - () } > + () + } + > + + diff --git a/public/react/src/modules/user/usersInfo/common/HeadlessModal.js b/public/react/src/modules/user/usersInfo/common/HeadlessModal.js index 8e1d38c6f..b208cb951 100644 --- a/public/react/src/modules/user/usersInfo/common/HeadlessModal.js +++ b/public/react/src/modules/user/usersInfo/common/HeadlessModal.js @@ -40,6 +40,7 @@ function HeadlessModal (props) { width: 14px; height: 8px; margin-right: 0px; + z-index: 9; } .headless .icon-htmal5icon19:before { left: -4px; diff --git a/public/react/src/modules/user/usersInfo/video/AliyunUploaderManager.js b/public/react/src/modules/user/usersInfo/video/AliyunUploaderManager.js index e9789ba6c..ea7b060ad 100644 --- a/public/react/src/modules/user/usersInfo/video/AliyunUploaderManager.js +++ b/public/react/src/modules/user/usersInfo/video/AliyunUploaderManager.js @@ -7,6 +7,7 @@ let _path = isDev() ? 'public' : 'build' let _testHost = '' ; // 'http://192.168.2.63:3001/api' ; // '' ; let login = 'innov' +// https://help.aliyun.com/document_detail/52204.html?spm=5176.2020520165.120.d52204.19a47029YWhro7#%E4%B8%8A%E4%BC%A0%E5%9C%B0%E5%9D%80%E5%92%8C%E5%87%AD%E8%AF%81%E6%96%B9%E5%BC%8F(%E6%8E%A8%E8%8D%90%E4%BD%BF%E7%94%A8) let uploader; let $ = window.$ function loadLib(callback) { @@ -46,7 +47,7 @@ function doCreateUploader (options) { addFileSuccess: function (uploadInfo) { console.log("addFileSuccess: " + uploadInfo.file.name) - + options.addFileSuccess && options.addFileSuccess(uploadInfo) uploader.startUpload() }, // 开始上传 @@ -63,10 +64,11 @@ function doCreateUploader (options) { if (!uploadInfo.videoId) { - var createUrl = `${_testHost}/users/${login}/video_auths.json?debug=true` + var createUrl = `${_testHost}/users/${login}/video_auths.json` + const _random = '' // Math.random().toString().substring(3, 6)+'-' axios.post(createUrl, { - title: fileName, - file_name: fileName + title: _random+fileName, + file_name: _random+fileName }).then((response) => { // if (response.data.status == ) const data = response.data.data @@ -75,7 +77,7 @@ function doCreateUploader (options) { var videoId = data.VideoId uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress, videoId) - options.addFileSuccess && options.addFileSuccess(uploadInfo) + }).catch((error) => { // 删除当前出错的,并执行下一个任务 @@ -89,10 +91,12 @@ function doCreateUploader (options) { console.log("onUploadStarted:" + uploadInfo.file.name + ", endpoint:" + uploadInfo.endpoint + ", bucket:" + uploadInfo.bucket + ", object:" + uploadInfo.object) } else { // 如果videoId有值,根据videoId刷新上传凭证 - var refreshUrl = `${_testHost}/users/${login}/video_auths.json?debug=true` + var refreshUrl = `${_testHost}/users/${login}/video_auths.json` axios.put(refreshUrl, { video_id: uploadInfo.videoId, + title: fileName, + file_name: fileName }).then((response) => { if (response.data.status == -1) { options.onUploadError && options.onUploadError(uploadInfo) @@ -102,9 +106,10 @@ function doCreateUploader (options) { var uploadAuth = data.UploadAuth var uploadAddress = data.UploadAddress var videoId = data.VideoId - uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress, videoId) + uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress) + // , videoId - options.addFileSuccess && options.addFileSuccess(uploadInfo) + }).catch((error) => { uploader.deleteFile(uploader._curIndex) uploader.nextUpload() @@ -145,7 +150,7 @@ function doCreateUploader (options) { // 需要根据 uploadInfo.videoId 调用刷新视频上传凭证接口(https://help.aliyun.com/document_detail/55408.html)重新获取 UploadAuth // 然后调用 resumeUploadWithAuth 方法, 这里是测试接口, 所以我直接获取了 UploadAuth $('#status').text('文件上传超时!') - var refreshUrl = `${_testHost}/users/${login}/video_auths.json?debug=true` + var refreshUrl = `${_testHost}/users/${login}/video_auths.json` axios.put(refreshUrl, { diff --git a/public/react/src/modules/user/usersInfo/video/EditVideoModal.js b/public/react/src/modules/user/usersInfo/video/EditVideoModal.js index 2e4bd7c3a..4ed20d3cd 100644 --- a/public/react/src/modules/user/usersInfo/video/EditVideoModal.js +++ b/public/react/src/modules/user/usersInfo/video/EditVideoModal.js @@ -14,10 +14,10 @@ function EditVideoModal (props) { const _title = form.getFieldsValue().title; function toList() { - history.push(`/users/${username}/videoes`) + history.push(`/users/${username}/videos`) } function toUpload() { - history.push(`/users/${username}/videoes/upload`) + history.push(`/users/${username}/videos/upload`) } function onOk() { form.validateFieldsAndScroll((err, values) => { @@ -57,8 +57,9 @@ function EditVideoModal (props) { { setLoading(false) if (response.data.videos) { - setVideoes(response.data.videos) + setvideos(response.data.videos) setCount(response.data.count) } }).catch(() => { }) } - function fetchReviewVideoes() { + function fetchReviewvideos() { const fetchUrl = `/users/${username}/videos/review.json` + const sorts = sortKey.split('-') setLoading(true) axios.get(fetchUrl, { params: { - per_page: 200 + page: pageObj.current, + per_page: PAGE_SIZE, + sort_by: sorts[0], + sort_direction: sorts[1], } }) .then((response) => { setLoading(false) if (response.data.videos) { - setReviewVideoes(response.data.videos) + setReviewvideos(response.data.videos) setCount(response.data.count) } }).catch(() => { @@ -119,16 +123,24 @@ function InfoVideo (props) { } useEffect(() => { - fetchVideoes() - }, [pageObj.current, sortKey]) + if (pageObj.current == 1) { + if (categoryObj.category == 'all') { + fetchvideos() + } else { + fetchReviewvideos() + } + } else { + pageObj.onChange(1) + } + }, [categoryObj.category]) useEffect(() => { if (categoryObj.category == 'all') { - fetchVideoes() + fetchvideos() } else { - fetchReviewVideoes() + fetchReviewvideos() } - }, [categoryObj.category]) + }, [ pageObj.current, sortKey ]) useEffect(() => { if (videoModalObj.visible == false) { @@ -139,6 +151,8 @@ function InfoVideo (props) { _clipboard = null; } } else { + videoEl.current && videoEl.current.play() + setTimeout(() => { if (!_clipboard) { _clipboard = new ClipboardJS('.copybtn'); @@ -155,7 +169,7 @@ function InfoVideo (props) { }, []) function editSuccess() { - fetchVideoes() + fetchvideos() } function onEditVideo(item) { @@ -201,6 +215,7 @@ function InfoVideo (props) { width={800 - 1} >