Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xiaomai-cloud-class-web
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xiaomai-cloud-class
xiaomai-cloud-class-web
Commits
830257c3
Commit
830257c3
authored
Jun 25, 2021
by
zhangleyuan
Browse files
Options
Browse Files
Download
Plain Diff
feat:解决合并代码后的冲突
parents
007fc7db
3bd26be0
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
197 additions
and
828 deletions
+197
-828
src/bu-components/PreviewFileModal.jsx
+0
-0
src/bu-components/PreviewFileModal.less
+0
-0
src/data-source/aidTool/request-apis.ts
+2
-2
src/data-source/base/request-apis.ts
+13
-2
src/domains/basic-domain/baseService.ts
+18
-3
src/domains/basic-domain/constants.ts
+6
-1
src/modules/course-manage/modal/ManageCoursewareModal.jsx
+91
-24
src/modules/prepare-lesson/components/FolderList.jsx
+0
-703
src/modules/prepare-lesson/components/FolderManage.jsx
+0
-22
src/modules/resource-disk/components/FolderList.jsx
+66
-59
src/modules/root/Menu.tsx
+1
-12
No files found.
src/
modules/resource-disk/modal
/PreviewFileModal.jsx
→
src/
bu-components
/PreviewFileModal.jsx
View file @
830257c3
File moved
src/
modules/resource-disk/modal
/PreviewFileModal.less
→
src/
bu-components
/PreviewFileModal.less
View file @
830257c3
File moved
src/data-source/aidTool/request-apis.ts
View file @
830257c3
/*
/*
* @Author: yuananting
* @Author: yuananting
* @Date: 2021-03-03 15:13:12
* @Date: 2021-03-03 15:13:12
* @LastEditors:
fusanqiasng
* @LastEditors:
Please set LastEditors
* @LastEditTime: 2021-06-
16 09:57:18
* @LastEditTime: 2021-06-
22 14:31:46
* @Description: 助学工具接口
* @Description: 助学工具接口
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
...
...
src/data-source/base/request-apis.ts
View file @
830257c3
/*
/*
* @Author: wufan
* @Author: wufan
* @Date: 2020-12-01 17:21:21
* @Date: 2020-12-01 17:21:21
* @LastEditors:
zhangleyuan
* @LastEditors:
Please set LastEditors
* @LastEditTime: 2021-0
4-09 14:28:09
* @LastEditTime: 2021-0
6-25 11:04:13
* @Description: Description
* @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
import
Service
from
"@/common/js/service"
;
import
Service
from
"@/common/js/service"
;
import
User
from
"@/common/js/user"
;
import
User
from
"@/common/js/user"
;
import
axios
from
'axios'
;
export
function
sendLoginAuthCode
(
params
:
object
)
{
export
function
sendLoginAuthCode
(
params
:
object
)
{
return
Service
.
Hades
(
"anon/hades/sendLoginAuthCode"
,
params
);
return
Service
.
Hades
(
"anon/hades/sendLoginAuthCode"
,
params
);
}
}
...
@@ -51,6 +52,15 @@ export function getWXWorkLoginNoCheck(params: object) {
...
@@ -51,6 +52,15 @@ export function getWXWorkLoginNoCheck(params: object) {
export
function
getLesseeVersionMsg
()
{
export
function
getLesseeVersionMsg
()
{
return
Service
.
Hades
(
"public/customerHades/getLesseeVersionMsg"
,{
enterpriseId
:
User
.
getEnterpriseId
()})
return
Service
.
Hades
(
"public/customerHades/getLesseeVersionMsg"
,{
enterpriseId
:
User
.
getEnterpriseId
()})
}
}
export
function
getYoZoSign
(
params
:
object
)
{
return
Service
.
Apollo
(
'public/apollo/getYoZoSign'
,
params
);
}
export
function
saveYoZoFileVersionId
(
params
:
object
)
{
return
Service
.
Apollo
(
'public/apollo/saveYoZoFileVersionId'
,
params
);
}
export
function
yoZoUpload
(
ossUrl
:
String
,
appId
:
String
,
uploadSign
:
String
){
return
axios
.
post
(
`https://dmc.yozocloud.cn/api/file/http?fileUrl=
${
ossUrl
}
&appId=
${
appId
}
&sign=
${
uploadSign
}
`
)
}
export
const
getOssClient
=
(
export
const
getOssClient
=
(
data
:
object
,
data
:
object
,
instId
:
string
,
instId
:
string
,
...
@@ -67,3 +77,4 @@ export const getOssClient = (
...
@@ -67,3 +77,4 @@ export const getOssClient = (
});
});
}
}
src/domains/basic-domain/baseService.ts
View file @
830257c3
/*
/*
* @Author: wufan
* @Author: wufan
* @Date: 2020-12-01 17:20:49
* @Date: 2020-12-01 17:20:49
* @LastEditors:
zhangleyuan
* @LastEditors:
Please set LastEditors
* @LastEditTime: 2021-0
4-09 14:28:59
* @LastEditTime: 2021-0
6-25 11:02:06
* @Description: Description
* @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
import
{
getUserStore
,
getUserPermission
,
logout
,
getStoreUser
,
sendBizAuthCode
,
editUserPhone
,
checkBizAuthCode
,
sendNewPhoneAuthCode
,
sendLoginAuthCode
,
login
,
getLastedVersion
,
getEnterpriseUser
,
getWXWorkLoginNoCheck
,
getLesseeVersionMsg
}
from
'@/data-source/base/request-apis'
;
import
{
getUserStore
,
getUserPermission
,
logout
,
getStoreUser
,
sendBizAuthCode
,
editUserPhone
,
checkBizAuthCode
,
sendNewPhoneAuthCode
,
sendLoginAuthCode
,
login
,
getLastedVersion
,
getEnterpriseUser
,
getWXWorkLoginNoCheck
,
getLesseeVersionMsg
,
getYoZoSign
,
saveYoZoFileVersionId
,
yoZoUpload
}
from
'@/data-source/base/request-apis'
;
export
default
class
StoreService
{
export
default
class
StoreService
{
// 获取员工列表
// 获取员工列表
...
@@ -59,4 +59,18 @@ export default class StoreService {
...
@@ -59,4 +59,18 @@ export default class StoreService {
static
getLesseeVersionMsg
()
{
static
getLesseeVersionMsg
()
{
return
getLesseeVersionMsg
();
return
getLesseeVersionMsg
();
}
}
static
getYoZoSign
(
params
:
any
){
return
new
Promise
((
resolve
)
=>
{
getYoZoSign
(
params
).
then
((
res
:
any
)
=>
{
const
{
result
=
[]
}
=
res
;
resolve
(
result
)
});
})
}
static
saveYoZoFileVersionId
(
params
:
any
){
return
saveYoZoFileVersionId
(
params
);
}
static
yoZoUpload
(
ossUrl
:
String
,
appId
:
String
,
uploadSign
:
String
){
return
yoZoUpload
(
ossUrl
,
appId
,
uploadSign
);
}
}
}
\ No newline at end of file
src/domains/basic-domain/constants.ts
View file @
830257c3
/*
/*
* @Author: 陈剑宇
* @Author: 陈剑宇
* @Date: 2020-05-07 14:43:01
* @Date: 2020-05-07 14:43:01
* @LastEditTime: 2021-06-
11 16:44:17
* @LastEditTime: 2021-06-
22 16:49:06
* @LastEditors: Please set LastEditors
* @LastEditors: Please set LastEditors
* @Description:
* @Description:
* @FilePath: /wheat-web-demo/src/domains/basic-domain/constants.ts
* @FilePath: /wheat-web-demo/src/domains/basic-domain/constants.ts
...
@@ -26,6 +26,10 @@ const PATH_MAP: MapInterface = {
...
@@ -26,6 +26,10 @@ const PATH_MAP: MapInterface = {
prod
:
'https://res.xiaomai0.com/xiaomai-cloud-class-web/h5.html'
,
prod
:
'https://res.xiaomai0.com/xiaomai-cloud-class-web/h5.html'
,
}
}
export
const
YZ_APPId
=
"yozoqvpO2Hvz8346"
;
export
const
YZ_PREVIEW_URL
:
string
=
'http://eic.yozocloud.cn/api/view/file'
export
const
OFFICE_PREVIEW_URL
:
string
=
'https://view.officeapps.live.com/op/view.aspx'
// axios headers config
// axios headers config
export
const
TIME_OUT
:
number
=
20000
export
const
TIME_OUT
:
number
=
20000
export
const
USER_TYPE
:
string
=
'B'
export
const
USER_TYPE
:
string
=
'B'
...
@@ -37,3 +41,4 @@ export const USER_PREFIX = 'store-live'
...
@@ -37,3 +41,4 @@ export const USER_PREFIX = 'store-live'
// host
// host
export
const
BASIC_HOST
:
string
=
BASIC_HOST_MAP
[
ENV
]
export
const
BASIC_HOST
:
string
=
BASIC_HOST_MAP
[
ENV
]
export
const
PATH
:
string
=
PATH_MAP
[
ENV
]
export
const
PATH
:
string
=
PATH_MAP
[
ENV
]
src/modules/course-manage/modal/ManageCoursewareModal.jsx
View file @
830257c3
...
@@ -16,6 +16,9 @@ import { FileVerifyMap, FileTypeIcon } from '@/common/constants/academic/lessonE
...
@@ -16,6 +16,9 @@ import { FileVerifyMap, FileTypeIcon } from '@/common/constants/academic/lessonE
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
Service
from
'@/common/js/service'
;
import
BaseService
from
"@/domains/basic-domain/baseService"
;
import
PreviewFileModal
from
'@/bu-components/PreviewFileModal'
;
import
{
YZ_APPId
,
YZ_PREVIEW_URL
,
OFFICE_PREVIEW_URL
}
from
'@/domains/basic-domain/constants'
;
import
'./ManageCoursewareModal.less'
;
import
'./ManageCoursewareModal.less'
;
...
@@ -33,7 +36,10 @@ class ManageCoursewareModal extends React.Component {
...
@@ -33,7 +36,10 @@ class ManageCoursewareModal extends React.Component {
scanFileModal
:
false
,
scanFileModal
:
false
,
isLessonPermission
:
false
,
isLessonPermission
:
false
,
diskList
:
[],
// 机构可见的磁盘目录
diskList
:
[],
// 机构可见的磁盘目录
selectedFileList
:
[]
selectedFileList
:
[],
showPreviewModal
:
false
,
//是否显示loading
previewing
:
false
,
//是否正在预览
previewStatus
:
'UPLOAD'
//预览文件的生成状态
}
}
}
}
...
@@ -164,17 +170,17 @@ class ManageCoursewareModal extends React.Component {
...
@@ -164,17 +170,17 @@ class ManageCoursewareModal extends React.Component {
}
}
// 预览文件
// 预览文件
handleScanFile
(
item
)
{
handleScanFile
=
async
(
item
)
=>
{
if
(
!
item
.
srcDocUrl
)
return
null
;
if
(
!
item
.
srcDocUrl
)
return
null
;
const
suffix
=
_
.
last
(
item
.
fileName
.
split
(
'.'
)).
toLowerCase
();
const
suffix
=
_
.
last
(
item
.
fileName
.
split
(
'.'
)).
toLowerCase
();
const
type
=
suffixType
[
suffix
]
const
type
=
suffixType
[
suffix
]
const
fileType
=
FileVerifyMap
[
type
].
type
;
const
fileType
=
FileVerifyMap
[
type
].
type
;
const
that
=
this
;
switch
(
fileType
)
{
switch
(
fileType
)
{
case
"PDF"
:
case
"PDF"
:
window
.
open
(
item
.
srcDocUrl
,
"_blank"
);
//
window.open(item.srcDocUrl, "_blank");
break
;
//
break;
case
"Excel"
:
case
"Excel"
:
case
"EXCEL"
:
case
"EXCEL"
:
case
"PPT"
:
case
"PPT"
:
...
@@ -183,25 +189,78 @@ class ManageCoursewareModal extends React.Component {
...
@@ -183,25 +189,78 @@ class ManageCoursewareModal extends React.Component {
case
"WORD"
:
case
"WORD"
:
case
"DOCX"
:
case
"DOCX"
:
case
"DOC"
:
case
"DOC"
:
let
size
=
parseFloat
(
item
.
fileSize
.
replace
(
/M$|KB$/g
,
''
));
// let size = parseFloat(item.fileSize.replace(/M$|KB$/g, ''));
if
(
item
.
fileSize
.
includes
(
'KB'
))
{
// if (item.fileSize.includes('KB')) {
size
=
0
;
// size = 0;
// }
// if (((fileType == 'word' || fileType == 'PPT') && size > 10) || ((fileType == 'Excel') && size > 5)) {
// Modal.confirm({
// title: '抱歉,不能在线预览',
// content: '由于文件较大,不支持在线预览,请下载后再查看',
// icon: <QuestionCircleOutlined />,
// okText:"下载",
// onOk:() => {
// const a = document.createElement('a');
// a.href = item.srcDocUrl;
// a.click();
// }
// });
// } else {
// const scanUrl = "https://view.officeapps.live.com/op/view.aspx?src=" + encodeURIComponent(item.srcDocUrl);
// window.open(scanUrl, "_blank");
// }
if
(
!
item
.
fileVersionId
){
this
.
setState
({
previewing
:
true
,
showPreviewModal
:
true
,
previewStatus
:
'UPLOAD'
},
async
()
=>
{
const
uploadParams
=
{
fileUrl
:
item
.
srcDocUrl
,
instId
:
User
.
getStoreId
(),
yoZoTypeEnum
:
'UPLOAD'
}
const
uploadSign
=
await
BaseService
.
getYoZoSign
(
uploadParams
);
BaseService
.
yoZoUpload
(
item
.
srcDocUrl
,
YZ_APPId
,
uploadSign
).
then
(
async
function
(
response
){
const
saveParams
=
{
fileVersionId
:
response
.
data
.
data
.
fileVersionId
,
folderId
:
item
.
folderId
,
instId
:
User
.
getStoreId
(),
}
BaseService
.
saveYoZoFileVersionId
(
saveParams
);
const
{
previewing
}
=
that
.
state
;
if
(
previewing
){
const
previewParams
=
{
fileVersionId
:
response
.
data
.
data
.
fileVersionId
,
instId
:
User
.
getStoreId
(),
yoZoTypeEnum
:
'VIEW'
,
htmlTitle
:
item
.
fileName
}
const
previewSign
=
await
BaseService
.
getYoZoSign
(
previewParams
);
const
url
=
`
${
YZ_PREVIEW_URL
}
?fileVersionId=
${
response
.
data
.
data
.
fileVersionId
}
&appId=
${
YZ_APPId
}
&sign=
${
previewSign
}
&htmlTitle=
${
item
.
fileName
}
`
that
.
setState
({
previewStatus
:
'UPLOAD_SUCCESS'
,
url
})
}
})
})
}
else
{
const
previewParams
=
{
fileVersionId
:
item
.
fileVersionId
,
instId
:
User
.
getStoreId
(),
yoZoTypeEnum
:
'VIEW'
,
htmlTitle
:
item
.
fileName
}
}
if
(((
fileType
==
'word'
||
fileType
==
'PPT'
)
&&
size
>
10
)
||
((
fileType
==
'Excel'
)
&&
size
>
5
))
{
const
previewSign
=
await
BaseService
.
getYoZoSign
(
previewParams
);
Modal
.
confirm
({
const
url
=
`
${
YZ_PREVIEW_URL
}
?fileVersionId=
${
item
.
fileVersionId
}
&appId=
${
YZ_APPId
}
&sign=
${
previewSign
}
&htmlTitle=
${
item
.
fileName
}
`
title
:
'抱歉,不能在线预览'
,
content
:
'由于文件较大,不支持在线预览,请下载后再查看'
,
icon
:
<
QuestionCircleOutlined
/>,
okText
:
"下载"
,
onOk
:()
=>
{
const
a
=
document
.
createElement
(
'a'
);
const
a
=
document
.
createElement
(
'a'
);
a
.
href
=
item
.
srcDocUrl
;
document
.
body
.
appendChild
(
a
);
a
.
setAttribute
(
'href'
,
url
);
a
.
setAttribute
(
'target'
,
'_blank'
);
a
.
click
();
a
.
click
();
}
document
.
body
.
removeChild
(
a
)
});
}
else
{
const
scanUrl
=
"https://view.officeapps.live.com/op/view.aspx?src="
+
encodeURIComponent
(
item
.
srcDocUrl
);
window
.
open
(
scanUrl
,
"_blank"
);
}
}
break
;
break
;
case
"JPG"
:
case
"JPG"
:
...
@@ -214,8 +273,13 @@ class ManageCoursewareModal extends React.Component {
...
@@ -214,8 +273,13 @@ class ManageCoursewareModal extends React.Component {
break
;
break
;
}
}
};
};
cancelPreview
=
()
=>
{
this
.
setState
({
previewing
:
false
,
showPreviewModal
:
false
,
previewStatus
:
'UPLOAD'
})
}
render
()
{
render
()
{
const
columns
=
[
const
columns
=
[
{
{
...
@@ -299,7 +363,7 @@ class ManageCoursewareModal extends React.Component {
...
@@ -299,7 +363,7 @@ class ManageCoursewareModal extends React.Component {
const
{
const
{
list
,
scanFileModal
,
editData
,
cancelObject
,
list
,
scanFileModal
,
editData
,
cancelObject
,
showSelectFileModal
,
selectedFileList
,
showSelectFileModal
,
selectedFileList
,
diskList
diskList
,
showPreviewModal
,
previewStatus
,
url
}
=
this
.
state
;
}
=
this
.
state
;
const
_list
=
_
.
reject
(
list
,
(
item
)
=>
cancelObject
[
item
.
id
]);
const
_list
=
_
.
reject
(
list
,
(
item
)
=>
cancelObject
[
item
.
id
]);
return
(
return
(
...
@@ -365,6 +429,9 @@ class ManageCoursewareModal extends React.Component {
...
@@ -365,6 +429,9 @@ class ManageCoursewareModal extends React.Component {
}
}
}
}
onSelect=
{
this
.
handleAddFile
}
onSelect=
{
this
.
handleAddFile
}
/>
/>
{
showPreviewModal
&&
<
PreviewFileModal
onCancel=
{
()
=>
this
.
cancelPreview
()
}
previewStatus=
{
previewStatus
}
url=
{
url
}
/>
}
</
Modal
>
</
Modal
>
)
)
}
}
...
...
src/modules/prepare-lesson/components/FolderList.jsx
deleted
100644 → 0
View file @
007fc7db
/*
* @Author: 吴文洁
* @Date: 2020-06-09 10:47:51
* @Last Modified by: 吴文洁
* @Last Modified time: 2020-07-23 09:33:09
* @Description: 文件夹列表
*/
import
React
from
'react'
;
import
{
Table
,
Menu
,
Dropdown
,
Upload
,
Modal
,
message
,
Tooltip
,
Icon
}
from
'antd'
;
import
{
PageControl
}
from
'@/components'
;
import
DefaultIcon
from
'@/modules/common/DefaultIcon'
;
import
{
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
import
{
FileTypeIcon
,
SupportFileType
,
DEFAULT_SIZE_UNIT
}
from
"@/common/constants/academic/lessonEnum"
;
import
ScanFileModal
from
'../modal/ScanFileModal'
;
import
CreateFolderModal
from
'../modal/CreateFolderModal'
;
import
UploadProgressModal
from
'../modal/UploadProgressModal'
;
import
SelectPrepareFileModal
from
'../modal/SelectPrepareFileModal'
;
const
DEL_FOLDER_URL_MAP
=
{
'MYSELF'
:
'public/apollo/delFolder'
,
'COMMON'
:
'public/apollo/delCommonFolder'
}
let
count
=
0
;
class
FolderList
extends
React
.
Component
{
constructor
(
props
)
{
super
(
props
);
this
.
state
=
{
localFileList
:
[],
// 本地文件列表(待上传)
currentFolder
:
{},
// 当前文件/文件夹(操作列表中的文件/文件夹的时候需要用到)
uploadFolderPath
:
{},
// 上传文件的目录,防止中途切换文件夹
renameModalData
:
{},
// 重命名弹窗
scanFileModal
:
null
,
// 预览文件弹窗
showUploadModal
:
false
,
// 上传进度弹窗,
nonCompliantFileList
:
[]
}
}
componentWillReceiveProps
(
nextProps
)
{
const
{
folderPathList
}
=
nextProps
const
currentFolder
=
folderPathList
[
folderPathList
.
length
-
1
];
this
.
setState
({
currentFolder
})
}
//预览文件
handleSelect
=
(
folder
)
=>
{
// 只有文件才有预览功能
if
(
folder
.
folderType
===
'FOLDER'
)
{
this
.
handleSelectFolder
(
folder
);
}
else
{
this
.
handleScanFile
(
folder
);
}
}
// 埋点
handleDataDot
=
(
folderFormat
)
=>
{
switch
(
folderFormat
)
{
case
'PDF'
:
window
.
WEBTRACING
(
'resource_disk_file_preview_pdf'
,
'资料云盘_点击预览_pdf'
);
break
;
case
'WORD'
:
case
'DOCX'
:
case
'DOC'
:
window
.
WEBTRACING
(
'resource_disk_file_preview_word'
,
'资料云盘_点击预览_word'
);
break
;
case
'EXCEL'
:
window
.
WEBTRACING
(
'resource_disk_file_preview_excel'
,
'资料云盘_点击预览_excel'
);
break
;
case
'PPT'
:
case
'PPTX'
:
window
.
WEBTRACING
(
'resource_disk_file_preview_ppt'
,
'资料云盘_点击预览_ppt'
);
break
;
default
:
break
;
}
}
// 预览文件
handleScanFile
=
(
folder
)
=>
{
const
{
folderFormat
,
folderSize
,
ossUrl
}
=
folder
;
switch
(
folderFormat
)
{
case
'PDF'
:
window
.
open
(
ossUrl
,
"_blank"
);
break
;
case
"WORD"
:
case
"DOCX"
:
case
"DOC"
:
case
"EXCEL"
:
case
"PPT"
:
case
"PPTX"
:
case
"PDF"
:
if
((
folderFormat
===
'PPT'
||
folderFormat
===
'PPTX'
||
folderFormat
===
'DOCX'
||
folderFormat
===
'WORD'
||
folderFormat
===
'DOC'
)
&&
folderSize
>
10
*
DEFAULT_SIZE_UNIT
)
{
Modal
.
confirm
({
title
:
'抱歉,不能在线预览'
,
content
:
'由于文件较大,不支持在线预览,请下载后再查看'
,
icon
:
<
QuestionCircleOutlined
/>,
okText
:
"下载"
,
onOk
:()
=>
{
const
a
=
document
.
createElement
(
'a'
);
a
.
href
=
ossUrl
;
a
.
click
();
}
});
break
;
}
if
(
folderFormat
===
'EXCEL'
&&
folderSize
>
5
*
DEFAULT_SIZE_UNIT
)
{
Modal
.
confirm
({
title
:
'抱歉,不能在线预览'
,
content
:
'由于文件较大,不支持在线预览,请下载后再查看'
,
icon
:
<
QuestionCircleOutlined
/>,
okText
:
"下载"
,
onOk
:()
=>
{
const
a
=
document
.
createElement
(
'a'
);
a
.
href
=
ossUrl
;
a
.
click
();
}
});
break
;
}
const
prefixUrl
=
"https://view.officeapps.live.com/op/view.aspx?src="
;
const
scanUrl
=
`
${
prefixUrl
}${
encodeURIComponent
(
ossUrl
)}
`
window
.
open
(
scanUrl
,
"_blank"
);
break
;
default
:
const
scanFileModal
=
<
ScanFileModal
fileType=
{
folderFormat
}
item=
{
folder
}
close=
{
()
=>
{
this
.
setState
({
scanFileModal
:
null
})
}
}
/>
this
.
setState
({
scanFileModal
});
break
;
}
// 预览文件埋点
this
.
handleDataDot
(
folderFormat
);
}
// 选择文件夹
handleSelectFolder
=
(
folder
)
=>
{
const
{
folderPathList
,
showResultPage
,
currentRootDisk
}
=
this
.
props
;
// 判断是否是员工文件的根目录
const
employeeDisk
=
currentRootDisk
.
disk
===
'EMPLOYEE'
&&
folderPathList
.
length
===
1
;
if
(
showResultPage
)
{
folderPathList
.
pop
();
}
folderPathList
.
push
({
id
:
folder
.
id
,
folderName
:
folder
.
folderName
});
this
.
props
.
onChangeFolderPath
(
folderPathList
);
this
.
props
.
onRefresh
({
parentId
:
folder
.
id
,
folderIdType
:
employeeDisk
?
'USER'
:
'FOLDER'
});
}
// 修改文件路径
handleChangeFolderPath
=
(
folder
)
=>
{
const
{
instId
}
=
window
.
currentUserInstInfo
;
const
{
id
}
=
folder
;
const
{
currentRootDisk
}
=
this
.
props
;
const
params
=
{
id
,
instId
:
instId
||
LS
.
get
(
'instId'
),
disk
:
currentRootDisk
.
disk
,
}
axios
.
Apollo
(
'public/apollo/folderPath'
,
params
).
then
((
res
)
=>
{
const
{
result
=
[]
}
=
res
;
this
.
props
.
onChangeFolderPath
(
result
,
false
);
})
}
parseColumns
=
()
=>
{
const
{
currentRootDisk
,
showResultPage
,
folderPathList
}
=
this
.
props
;
const
hasManagementAuthority
=
currentRootDisk
.
uploadPower
;
// 判断是否是员工文件的根目录
const
employeeDisk
=
currentRootDisk
.
disk
===
'EMPLOYEE'
&&
folderPathList
.
length
===
1
;
const
columns
=
[
{
title
:
'名称'
,
key
:
'folderName'
,
dataIndex
:
'folderName'
,
width
:
'28%'
,
sorter
:
(
employeeDisk
||
!
hasManagementAuthority
)
?
false
:
true
,
render
:
(
value
,
record
)
=>
{
const
{
folderType
,
folderFormat
}
=
record
;
const
isFolder
=
folderType
===
'FOLDER'
;
let
imgSrc
=
!
isFolder
?
FileTypeIcon
[
folderFormat
]
:
'https://xiaomai-image.oss-cn-hangzhou.aliyuncs.com/1594871430788.png'
;
if
(
employeeDisk
)
{
imgSrc
=
'https://xiaomai-image.oss-cn-hangzhou.aliyuncs.com/1594871440736.png'
}
return
(
<
div
className=
"file-name"
onClick=
{
()
=>
this
.
handleSelect
(
record
)
}
>
{
<
img
alt=
"img-src"
className=
"file-name__icon"
src=
{
imgSrc
}
/>
}
<
span
className=
{
`file-name__text ${!isFolder ? 'highlight' : ''}`
}
>
{
value
}
</
span
>
</
div
>
)
}
},
{
title
:
'更新时间'
,
key
:
'updated'
,
dataIndex
:
'updated'
,
sorter
:
(
employeeDisk
||
!
hasManagementAuthority
)
?
false
:
true
,
render
:
(
value
)
=>
{
return
<
span
>
{
formatDate
(
'YYYY-MM-DD H:i'
,
value
)
}
</
span
>
}
},
{
title
:
'大小'
,
key
:
'folderSize'
,
dataIndex
:
'folderSize'
,
width
:
'10%'
,
sorter
:
(
employeeDisk
||
!
hasManagementAuthority
)
?
false
:
true
,
render
:
(
value
,
record
)
=>
{
const
{
folderType
}
=
record
;
const
_fileSize
=
Number
(
value
);
let
_size
=
`
${(
_fileSize
/
DEFAULT_SIZE_UNIT
).
toFixed
(
1
)}
M`
;
if
(
_fileSize
<
0.1
*
DEFAULT_SIZE_UNIT
)
{
_size
=
`
${(
_fileSize
/
1024
).
toFixed
(
1
)}
kb`
;
}
return
(
<
span
>
{
folderType
===
'FILE'
?
_size
:
'-'
}
</
span
>
)
}
},
{
title
:
'操作'
,
key
:
'operate'
,
render
:
(
value
,
record
)
=>
{
if
(
!
(
currentRootDisk
.
disk
===
'EMPLOYEE'
&&
(
folderPathList
.
length
===
1
||
record
.
folderType
===
'FOLDER'
))
||
hasManagementAuthority
)
{
return
(
<
Dropdown
overlay=
{
this
.
renderMenu
(
record
)
}
trigger=
{
[
'hover'
]
}
>
<
span
className=
"icon iconfont"
>

</
span
>
</
Dropdown
>
)
}
return
<
span
>
-
</
span
>
}
}
]
// 公共文件需要显示创建者
if
(
currentRootDisk
.
disk
===
'COMMON'
)
{
columns
.
splice
(
1
,
0
,
{
title
:
'创建者'
,
key
:
'createName'
,
dataIndex
:
'createName'
});
}
// 搜索结果需要显示所在目录
if
(
showResultPage
)
{
columns
.
push
({
title
:
'所在目录'
,
key
:
'parentName'
,
dataIndex
:
'parentName'
,
render
:
(
value
,
record
)
=>
{
return
<
span
className=
"file-path"
onClick=
{
()
=>
this
.
handleChangeFolderPath
(
record
)
}
>
{
value
||
currentRootDisk
.
folderName
}
</
span
>
}
})
}
return
columns
;
}
// 删除文件
handleDeleteFolder
=
(
folder
)
=>
{
const
{
currentRootDisk
:
{
disk
}
}
=
this
.
props
;
const
{
instId
}
=
window
.
currentUserInstInfo
;
// 判断此文件是否有关联的课次
axios
.
Apollo
(
'public/apollo/judgeRelation'
,
{
folderIds
:
[
folder
.
id
],
instId
:
instId
||
LS
.
get
(
'instId'
)
}).
then
((
res
)
=>
{
// 如果有关联的文件,二次弹窗确认
const
hasRelative
=
!!
res
.
result
;
Modal
.
confirm
({
title
:
'确认删除所选的文件吗?'
,
content
:
hasRelative
?
'此文件已关联了课次,删除后,学员将不能查看到此文件。'
:
'删除后,数据将无法恢复。'
,
icon
:<
span
className=
"icon iconfont default-confirm-icon"
>

</
span
>,
okType
:
'danger'
,
onOk
:
()
=>
{
const
{
currentFolder
}
=
this
.
state
;
axios
.
Apollo
(
DEL_FOLDER_URL_MAP
[
disk
],
{
ids
:
[
folder
.
id
],
instId
:
instId
||
LS
.
get
(
'instId'
)
}).
then
(()
=>
{
message
.
success
(
'删除成功'
);
this
.
props
.
onRefresh
({
parentId
:
currentFolder
.
id
||
null
});
})
}
});
})
}
// 重命名
handleRename
=
(
folder
)
=>
{
this
.
setState
({
renameModalData
:
{
visible
:
true
,
id
:
folder
.
id
,
folderName
:
folder
.
folderName
,
}
});
}
// 重命名完成或者取消重命名之后隐藏重命名弹窗
handleRenameDone
=
(
folderName
)
=>
{
const
{
renameModalData
,
currentFolder
}
=
this
.
state
;
// 名称未修改不发送请求
if
(
folderName
===
renameModalData
.
folderName
)
{
this
.
setState
({
renameModalData
:
{}
});
return
;
}
// 判断是否有同名文件
this
.
handleGetSameNameFiles
(
folderName
).
then
((
res
)
=>
{
if
(
res
)
{
message
.
warning
(
'此目录下已存在同名文件'
);
return
;
}
axios
.
Apollo
(
'public/apollo/renameFolder'
,
{
id
:
renameModalData
.
id
,
name
:
folderName
}).
then
(()
=>
{
message
.
success
(
'重命名成功'
);
this
.
setState
({
renameModalData
:
{}
});
this
.
props
.
onRefresh
({
parentId
:
currentFolder
.
id
||
null
});
})
});
}
// 获取同名文件
handleGetSameNameFiles
=
async
(
folderName
)
=>
{
const
{
currentRootDisk
,
folderPathList
}
=
this
.
props
;
const
currentFolder
=
folderPathList
[
folderPathList
.
length
-
1
];
const
{
instId
}
=
window
.
currentUserInstInfo
;
const
params
=
{
name
:
folderName
,
disk
:
currentRootDisk
.
disk
,
parentId
:
currentFolder
.
id
,
folderType
:
'FOLDER'
,
instId
:
instId
||
LS
.
get
(
'instId'
)
}
const
res
=
await
axios
.
Apollo
(
'public/apollo/sameNameFile'
,
params
);
const
{
result
}
=
res
;
return
!!
result
||
result
&&
Object
.
keys
(
result
).
length
;
}
// 显示移动文件弹窗
handleShowSelectFileModal
=
(
file
)
=>
{
this
.
setState
({
currentFile
:
file
,
showSelectFileModal
:
true
});
}
getBlob
=
(
url
)
=>
{
return
new
Promise
((
resolve
)
=>
{
const
xhr
=
new
XMLHttpRequest
()
xhr
.
open
(
'GET'
,
url
,
true
)
xhr
.
responseType
=
'blob'
xhr
.
onload
=
()
=>
{
if
(
xhr
.
status
===
200
)
{
resolve
(
xhr
.
response
)
}
}
xhr
.
send
()
})
}
saveAs
=
(
blob
,
filename
)
=>
{
if
(
window
.
navigator
.
msSaveOrOpenBlob
)
{
navigator
.
msSaveBlob
(
blob
,
filename
)
}
else
{
const
link
=
document
.
createElement
(
'a'
)
const
body
=
document
.
querySelector
(
'body'
)
// 创建对象url
link
.
href
=
window
.
URL
.
createObjectURL
(
blob
)
link
.
download
=
filename
body
.
appendChild
(
link
)
link
.
click
()
body
.
removeChild
(
link
)
// 通过调用 URL.createObjectURL() 创建的 URL 对象
window
.
URL
.
revokeObjectURL
(
link
.
href
)
}
}
// 下载文件
handleDownload
=
(
folder
)
=>
{
this
.
getBlob
(
folder
.
ossUrl
).
then
((
blob
)
=>
{
this
.
saveAs
(
blob
,
folder
.
folderName
)
})
}
handleChooseFile
=
async
()
=>
{
// 判断是否欠费,旗舰版用户不需要校验余额
const
{
instId
}
=
window
.
currentUserInstInfo
;
const
ultimateRes
=
await
axios
.
Business
(
'public/inst/checkInstProduct'
,
{
instId
:
instId
||
LS
.
get
(
"instId"
),
productCodeList
:
[
'ULTIMATESELL'
,
'PIP_TO_ULTIMATE'
,
'HIGH_TO_ULTIMATE'
]
});
const
{
balance
}
=
this
.
props
;
if
(
balance
<=
0
&&
!
ultimateRes
.
result
)
{
this
.
handleShowNoticeModal
();
return
;
}
const
dom
=
document
.
querySelector
(
'#detailFileInput'
);
dom
.
click
();
}
// 准备上传
handleUpload
=
(
event
)
=>
{
const
fileList
=
event
.
target
.
files
;
// 判断文件的大小是否超出了限制
const
nonCompliantFileList
=
[];
const
_fileList
=
[...
fileList
];
_fileList
.
map
((
file
,
index
)
=>
{
let
{
size
,
type
,
name
}
=
file
;
if
(
!
type
)
{
type
=
getFileTypeByName
(
name
);
}
if
(
type
.
indexOf
(
'image'
)
>
-
1
&&
size
>
50
*
DEFAULT_SIZE_UNIT
)
{
nonCompliantFileList
.
push
(
file
);
_fileList
.
splice
(
index
,
1
);
}
if
(
type
.
indexOf
(
'audio'
)
>
-
1
&&
size
>
50
*
DEFAULT_SIZE_UNIT
)
{
nonCompliantFileList
.
push
(
file
);
_fileList
.
splice
(
index
,
1
);
}
if
(
type
.
indexOf
(
'video'
)
>
-
1
&&
size
>
2000
*
DEFAULT_SIZE_UNIT
)
{
nonCompliantFileList
.
push
(
file
);
_fileList
.
splice
(
index
,
1
);
}
if
(
localFileType
.
indexOf
(
type
)
>
-
1
&&
size
>
100
*
DEFAULT_SIZE_UNIT
)
{
nonCompliantFileList
.
push
(
file
);
_fileList
.
splice
(
index
,
1
);
}
file
.
key
=
count
++
;
});
// 不符合规则的文件列表
if
(
nonCompliantFileList
.
length
>
0
)
{
this
.
setState
({
nonCompliantFileList
,
showNonCompliantFileModal
:
true
,
})
}
else
{
this
.
handleShowUploadModal
(
_fileList
);
}
// 清空文件,防止第二次无法上传同一个文件
const
dom
=
document
.
querySelector
(
'#detailFileInput'
);
dom
.
value
=
''
;
}
// 显示上传进度弹窗
handleShowUploadModal
=
(
fileList
)
=>
{
// 保存当前路径
const
{
folderPathList
}
=
this
.
props
;
if
(
fileList
.
length
)
{
this
.
setState
({
showUploadModal
:
true
,
localFileList
:
fileList
,
uploadFolderPath
:
folderPathList
[
folderPathList
.
length
-
1
]
});
}
}
// 上传成功
handleUploadDone
=
(
file
,
resourceId
)
=>
{
this
.
props
.
onCreate
(
file
,
resourceId
);
}
// 取消上传
handleHiddenUploadModal
=
()
=>
{
this
.
setState
({
showUploadModal
:
false
,
localFileList
:
[]
});
}
// 余额欠费提示弹窗
handleShowNoticeModal
=
()
=>
{
const
{
balance
}
=
this
.
props
;
Modal
.
info
({
title
:
'无法继续操作'
,
content
:
'直播服务已升级,请联系运营老师。'
,
icon
:
<
span
className=
"icon iconfont default-confirm-icon"
>

</
span
>
})
}
// 排序
handleChangeTable
=
(
pagination
,
filters
,
sorter
)
=>
{
const
{
columnKey
,
order
}
=
sorter
;
let
sort
=
null
;
if
(
columnKey
===
'folderName'
&&
order
===
'ascend'
)
{
sort
=
'NAME_ASC'
;
}
if
(
columnKey
===
'folderName'
&&
order
===
'descend'
)
{
sort
=
'NAME_DESC'
;
}
if
(
columnKey
===
'folderSize'
&&
order
===
'ascend'
)
{
sort
=
'SIZE_ASC'
;
}
if
(
columnKey
===
'folderSize'
&&
order
===
'descend'
)
{
sort
=
'SIZE_DESC'
;
}
if
(
columnKey
===
'updated'
&&
order
===
'ascend'
)
{
sort
=
'UPDATE_ASC'
;
}
if
(
columnKey
===
'updated'
&&
order
===
'descend'
)
{
sort
=
'UPDATE_DESC'
;
}
const
{
currentFolder
}
=
this
.
state
;
this
.
props
.
onRefresh
({
sort
,
parentId
:
currentFolder
.
id
||
null
});
}
renderMenu
=
(
record
)
=>
{
const
{
currentRootDisk
}
=
this
.
props
;
// 是否有编辑权限
const
hasManagementAuthority
=
currentRootDisk
.
uploadPower
;
const
{
folderType
}
=
record
;
const
menu
=
(
<
Menu
>
{
folderType
===
'FILE'
&&
<
Menu
.
Item
key=
"download"
>
<
span
onClick=
{
()
=>
{
this
.
handleDownload
(
record
)
}
}
>
下载
</
span
>
</
Menu
.
Item
>
}
{
hasManagementAuthority
&&
[
<
Menu
.
Item
key=
"move"
>
<
span
onClick=
{
()
=>
this
.
handleShowSelectFileModal
(
record
)
}
>
移动
</
span
>
</
Menu
.
Item
>,
<
Menu
.
Item
key=
"rename"
>
<
span
onClick=
{
()
=>
this
.
handleRename
(
record
)
}
>
重命名
</
span
>
</
Menu
.
Item
>,
<
Menu
.
Item
key=
"delete"
>
<
span
onClick=
{
()
=>
this
.
handleDeleteFolder
(
record
)
}
>
删除
</
span
>
</
Menu
.
Item
>
]
}
</
Menu
>
);
return
menu
;
}
render
()
{
const
{
currentFolder
,
showScanFileModal
,
currentFile
,
renameModalData
,
showSelectFileModal
,
showUploadModal
,
localFileList
,
currentFolderName
}
=
this
.
state
;
const
{
selectedFileIds
,
folderList
,
showResultPage
,
folderPathList
,
currentRootDisk
,
balance
,
query
,
totalCount
}
=
this
.
props
;
// 是否有编辑权限
const
hasManagementAuthority
=
currentRootDisk
.
uploadPower
;
// 是否已经欠费
const
hasOwnedFee
=
balance
<=
0
;
return
(
<
div
className=
"file-list"
>
{
!
_
.
isEmpty
(
folderList
)
?
[<
Table
key=
"table"
rowKey=
{
(
record
)
=>
record
.
id
}
columns=
{
this
.
parseColumns
()
}
dataSource=
{
folderList
}
rowSelection=
{
hasManagementAuthority
?
{
selectedRowKeys
:
selectedFileIds
,
onChange
:
this
.
props
.
onChangeRow
}
:
null
}
pagination=
{
false
}
onChange=
{
this
.
handleChangeTable
}
/>,
<
div
className=
"box-footer"
key=
"pagination"
>
<
PageControl
current=
{
query
.
current
-
1
}
pageSize=
{
query
.
size
}
total=
{
totalCount
}
showSizeChanger=
{
true
}
toPage=
{
(
page
)
=>
this
.
props
.
onChangePage
(
'current'
,
page
+
1
)
}
onShowSizeChange=
{
(
current
,
size
)
=>
this
.
props
.
onChangePage
(
'size'
,
size
)
}
/>
</
div
>]
:
<
DefaultIcon
type=
'student'
title=
{
!
showResultPage
?
<
div
className=
"desc"
>
<
input
multiple
type=
"file"
style=
{
{
display
:
'none'
}
}
id=
"detailFileInput"
accept=
".ppt,.pptx,.doc,.docx,.pdf,.jpg,.jpeg,.png,.mp3,.mp4,.xlsx,.xls"
onChange=
{
(
e
)
=>
this
.
handleUpload
(
e
)
}
/>
{
hasManagementAuthority
?
<
div
>
你还没有上传文件,点击
<
Tooltip
title=
"支持文件类型:ppt、word、excel、pdf、jpg、mp3、mp4"
>
<
span
className=
"upload-btn"
onClick=
{
this
.
handleChooseFile
}
>
上传文件
</
span
>
</
Tooltip
>
按钮
</
div
>
:
<
span
>
这个文件夹是空的
</
span
>
}
</
div
>
:
<
div
className=
"desc"
>
搜索无结果
</
div
>
}
/>
}
<
CreateFolderModal
title=
"重命名"
folderName=
{
renameModalData
.
folderName
}
isOpen=
{
renameModalData
.
visible
}
onClose=
{
()
=>
{
this
.
setState
({
renameModalData
:
{}
})}
}
onOk=
{
this
.
handleRenameDone
}
/>
<
UploadProgressModal
isOpen=
{
showUploadModal
}
currentFolder=
{
currentFolder
}
fileList=
{
localFileList
}
onUpload=
{
this
.
handleUploadDone
}
onCancel=
{
this
.
handleHiddenUploadModal
}
/>
<
SelectPrepareFileModal
multiple=
{
true
}
isOpen=
{
showSelectFileModal
}
currentRootDisk=
{
currentRootDisk
}
onClose=
{
()
=>
{
this
.
setState
({
showSelectFileModal
:
false
});
}
}
onMove=
{
(
targetFolder
)
=>
{
this
.
setState
({
showSelectFileModal
:
false
});
this
.
props
.
onMove
(
targetFolder
,
[
currentFile
.
id
]);
}
}
/>
{
this
.
state
.
scanFileModal
}
{
this
.
state
.
chargeModal
}
</
div
>
)
}
}
export
default
FolderList
;
\ No newline at end of file
src/modules/prepare-lesson/components/FolderManage.jsx
View file @
830257c3
...
@@ -13,7 +13,6 @@ import { Spin, message } from 'antd';
...
@@ -13,7 +13,6 @@ import { Spin, message } from 'antd';
import
User
from
'@/common/js/user'
;
import
User
from
'@/common/js/user'
;
import
OperateArea
from
'./OperateArea'
;
import
OperateArea
from
'./OperateArea'
;
import
FolderList
from
'./FolderList'
;
import
{
DISK_MAP
,
suffixMap
}
from
"@/common/constants/academic/lessonEnum"
;
import
{
DISK_MAP
,
suffixMap
}
from
"@/common/constants/academic/lessonEnum"
;
...
@@ -301,27 +300,6 @@ class FolderManage extends React.Component {
...
@@ -301,27 +300,6 @@ class FolderManage extends React.Component {
onChangeFolderPath=
{
this
.
handleChangeFolderPath
}
onChangeFolderPath=
{
this
.
handleChangeFolderPath
}
onRefresh=
{
this
.
handleFetchFolderList
}
onRefresh=
{
this
.
handleFetchFolderList
}
/>
/>
{
/* 文件夹列表 */
}
<
FolderList
query=
{
query
}
totalCount=
{
totalCount
}
balance=
{
balance
}
showResultPage=
{
showResultPage
}
currentRootDisk=
{
currentRootDisk
}
hasManagementAuthority=
{
hasManagementAuthority
}
folderList=
{
folderList
}
folderPathList=
{
folderPathList
}
selectedFileIds=
{
selectedFileIds
}
onChangeRow=
{
this
.
handleChangeRow
}
onChangeFolderPath=
{
this
.
handleChangeFolderPath
}
onMove=
{
this
.
handleMove
}
onUpload=
{
this
.
handleUploadDone
}
onChangePage=
{
this
.
handleChangePage
}
onRefresh=
{
this
.
handleFetchFolderList
}
/>
</
div
>
</
div
>
</
Spin
>
</
Spin
>
...
...
src/modules/resource-disk/components/FolderList.jsx
View file @
830257c3
...
@@ -21,9 +21,9 @@ import UploadProgressModal from '@/bu-components/UploadProgressModal';
...
@@ -21,9 +21,9 @@ import UploadProgressModal from '@/bu-components/UploadProgressModal';
import
SelectPrepareFileModal
from
'@/bu-components/SelectPrepareFileModal'
;
import
SelectPrepareFileModal
from
'@/bu-components/SelectPrepareFileModal'
;
import
CopyFileModal
from
'@/bu-components/CopyFileModal'
;
import
CopyFileModal
from
'@/bu-components/CopyFileModal'
;
import
ManagingMembersModal
from
'@/bu-components/ManagingMembersModal'
;
import
ManagingMembersModal
from
'@/bu-components/ManagingMembersModal'
;
import
PreviewFileModal
from
'
../modal/PreviewFileModal'
import
PreviewFileModal
from
'
@/bu-components/PreviewFileModal'
;
import
{
YZ_APPId
,
YZ_PREVIEW_URL
,
OFFICE_PREVIEW_URL
}
from
'@/domains/basic-domain/constants'
;
import
BaseService
from
"@/domains/basic-domain/baseService"
;
import
ScanFileModal
from
'../modal/ScanFileModal'
;
import
ScanFileModal
from
'../modal/ScanFileModal'
;
import
CreateFolderModal
from
'../modal/CreateFolderModal'
;
import
CreateFolderModal
from
'../modal/CreateFolderModal'
;
import
User
from
'@/common/js/user'
;
import
User
from
'@/common/js/user'
;
...
@@ -121,40 +121,40 @@ class FolderList extends React.Component {
...
@@ -121,40 +121,40 @@ class FolderList extends React.Component {
break
;
break
;
}
}
}
}
getYoZoSign
=
(
data
,
type
,
folderName
)
=>
{
//
getYoZoSign = (data,type,folderName)=>{
return
new
Promise
((
resolve
)
=>
{
//
return new Promise((resolve) => {
let
uploadParams
;
//
let uploadParams;
if
(
type
===
"UPLOAD"
){
//
if(type==="UPLOAD"){
uploadParams
=
{
//
uploadParams ={
fileUrl
:
data
,
//
fileUrl:data,
instId
:
window
.
currentUserInstInfo
.
instId
,
//
instId:window.currentUserInstInfo.instId,
yoZoTypeEnum
:
'UPLOAD'
//
yoZoTypeEnum:'UPLOAD'
}
//
}
}
else
{
//
}else{
uploadParams
=
{
//
uploadParams ={
fileVersionId
:
data
,
//
fileVersionId:data,
instId
:
window
.
currentUserInstInfo
.
instId
,
//
instId:window.currentUserInstInfo.instId,
yoZoTypeEnum
:
'VIEW'
,
//
yoZoTypeEnum:'VIEW',
htmlTitle
:
folderName
//
htmlTitle:folderName
}
//
}
}
//
}
Service
.
Apollo
(
'public/apollo/getYoZoSign'
,
uploadParams
).
then
(
res
=>
{
//
Service.Apollo('public/apollo/getYoZoSign', uploadParams).then(res => {
const
{
result
=
[]
}
=
res
;
//
const { result = [] } = res;
resolve
(
result
)
//
resolve(result)
});
//
});
})
//
})
}
//
}
saveYoZoFileVersionId
=
(
fileVersionId
,
folderId
)
=>
{
//
saveYoZoFileVersionId = (fileVersionId,folderId)=>{
const
params
=
{
//
const params ={
fileVersionId
,
//
fileVersionId,
folderId
,
//
folderId,
instId
:
window
.
currentUserInstInfo
.
instId
,
//
instId: window.currentUserInstInfo.instId,
}
//
}
Service
.
Apollo
(
'public/apollo/saveYoZoFileVersionId'
,
params
).
then
(
res
=>
{
//
Service.Apollo('public/apollo/saveYoZoFileVersionId', params).then(res => {
});
//
});
}
//
}
// 预览文件
// 预览文件
handleScanFile
=
async
(
folder
)
=>
{
handleScanFile
=
async
(
folder
)
=>
{
const
{
folderFormat
,
folderSize
,
ossUrl
,
rights
,
fileVersionId
,
id
,
folderName
}
=
folder
;
const
{
folderFormat
,
folderSize
,
ossUrl
,
rights
,
fileVersionId
,
id
,
folderName
}
=
folder
;
...
@@ -177,24 +177,46 @@ class FolderList extends React.Component {
...
@@ -177,24 +177,46 @@ class FolderList extends React.Component {
showPreviewModal
:
true
,
showPreviewModal
:
true
,
previewStatus
:
'UPLOAD'
previewStatus
:
'UPLOAD'
},
async
()
=>
{
},
async
()
=>
{
const
uploadSign
=
await
that
.
getYoZoSign
(
ossUrl
,
"UPLOAD"
);
const
uploadParams
=
{
axios
.
post
(
`https://dmc.yozocloud.cn/api/file/http?fileUrl=
${
ossUrl
}
&appId=
${
appId
}
&sign=
${
uploadSign
}
`
)
fileUrl
:
ossUrl
,
.
then
(
async
function
(
response
){
instId
:
User
.
getStoreId
(),
that
.
saveYoZoFileVersionId
(
response
.
data
.
data
.
fileVersionId
,
id
);
yoZoTypeEnum
:
'UPLOAD'
}
const
uploadSign
=
await
BaseService
.
getYoZoSign
(
uploadParams
);
BaseService
.
yoZoUpload
(
ossUrl
,
YZ_APPId
,
uploadSign
).
then
(
async
function
(
response
){
const
saveParams
=
{
fileVersionId
:
response
.
data
.
data
.
fileVersionId
,
folderId
:
id
,
instId
:
User
.
getStoreId
(),
}
BaseService
.
saveYoZoFileVersionId
(
saveParams
);
const
{
previewing
}
=
that
.
state
;
const
{
previewing
}
=
that
.
state
;
if
(
previewing
){
if
(
previewing
){
const
previewSign
=
await
that
.
getYoZoSign
(
response
.
data
.
data
.
fileVersionId
,
"VIEW"
,
folderName
);
const
previewParams
=
{
const
url
=
`https://eic.yozocloud.cn/api/view/file?fileVersionId=
${
response
.
data
.
data
.
fileVersionId
}
&appId=
${
appId
}
&sign=
${
previewSign
}
&htmlTitle=
${
folderName
}
`
fileVersionId
:
response
.
data
.
data
.
fileVersionId
,
instId
:
User
.
getStoreId
(),
yoZoTypeEnum
:
'VIEW'
,
htmlTitle
:
folderName
}
const
previewSign
=
await
BaseService
.
getYoZoSign
(
previewParams
);
const
url
=
`
${
YZ_PREVIEW_URL
}
?fileVersionId=
${
response
.
data
.
data
.
fileVersionId
}
&appId=
${
YZ_APPId
}
&sign=
${
previewSign
}
&htmlTitle=
${
folderName
}
`
that
.
setState
({
that
.
setState
({
previewStatus
:
'UPLOAD_SUCCESS'
,
previewStatus
:
'UPLOAD_SUCCESS'
,
url
url
})
})
}
}
})
})
})
})
}
else
{
}
else
{
const
previewSign
=
await
that
.
getYoZoSign
(
fileVersionId
,
"VIEW"
,
folderName
);
const
previewParams
=
{
const
url
=
`http://eic.yozocloud.cn/api/view/file?fileVersionId=
${
fileVersionId
}
&appId=
${
appId
}
&sign=
${
previewSign
}
&htmlTitle=
${
folderName
}
`
fileVersionId
,
instId
:
User
.
getStoreId
(),
yoZoTypeEnum
:
'VIEW'
,
htmlTitle
:
folderName
}
const
previewSign
=
await
BaseService
.
getYoZoSign
(
previewParams
);
const
url
=
`
${
YZ_PREVIEW_URL
}
?fileVersionId=
${
fileVersionId
}
&appId=
${
YZ_APPId
}
&sign=
${
previewSign
}
&htmlTitle=
${
folderName
}
`
const
a
=
document
.
createElement
(
'a'
);
const
a
=
document
.
createElement
(
'a'
);
document
.
body
.
appendChild
(
a
);
document
.
body
.
appendChild
(
a
);
a
.
setAttribute
(
'href'
,
url
);
a
.
setAttribute
(
'href'
,
url
);
...
@@ -234,7 +256,6 @@ class FolderList extends React.Component {
...
@@ -234,7 +256,6 @@ class FolderList extends React.Component {
Modal
.
confirm
({
Modal
.
confirm
({
title
:
'抱歉,不能在线预览'
,
title
:
'抱歉,不能在线预览'
,
content
:
'由于文件较大,不支持在线预览,请下载后再查看'
,
content
:
'由于文件较大,不支持在线预览,请下载后再查看'
,
// icon: <Icon type="question-circle" theme="filled" style={{ color: '#FF8534' }}></Icon>,
okText
:
"下载"
,
okText
:
"下载"
,
onOk
:
()
=>
{
onOk
:
()
=>
{
const
a
=
document
.
createElement
(
'a'
);
const
a
=
document
.
createElement
(
'a'
);
...
@@ -244,21 +265,7 @@ class FolderList extends React.Component {
...
@@ -244,21 +265,7 @@ class FolderList extends React.Component {
});
});
break
;
break
;
}
}
// if (folderFormat === 'EXCEL') {
const
prefixUrl
=
`
${
OFFICE_PREVIEW_URL
}
?src=`
;
// Modal.confirm({
// title: '抱歉,不能在线预览',
// content: ' 该文件类型不支持在线预览,请下载后再查看',
// // icon: <Icon type="question-circle" theme="filled" style={{ color: '#FF8534' }}></Icon>,
// okText: "下载",
// onOk: () => {
// const a = document.createElement('a');
// a.href = ossUrl;
// a.click();
// }
// });
// break;
// }
const
prefixUrl
=
"https://view.officeapps.live.com/op/view.aspx?src="
;
const
scanUrl
=
`
${
prefixUrl
}${
encodeURIComponent
(
ossUrl
)}
`
const
scanUrl
=
`
${
prefixUrl
}${
encodeURIComponent
(
ossUrl
)}
`
window
.
open
(
scanUrl
,
"_blank"
);
window
.
open
(
scanUrl
,
"_blank"
);
break
;
break
;
...
...
src/modules/root/Menu.tsx
View file @
830257c3
...
@@ -119,7 +119,6 @@ function Aside(props: any) {
...
@@ -119,7 +119,6 @@ function Aside(props: any) {
const
ctx
:
any
=
useContext
(
XMContext
);
const
ctx
:
any
=
useContext
(
XMContext
);
const
[
selectKey
,
setSelectKey
]
=
useState
();
const
[
selectKey
,
setSelectKey
]
=
useState
();
const
[
openKeys
,
setOpenKeys
]
=
useState
([
''
]);
const
[
openKeys
,
setOpenKeys
]
=
useState
([
''
]);
const
[
lastOpenKeys
,
setLastOpenKeys
]
=
useState
([
''
]);
const
[
topLogoUrl
,
setTopLogoUrl
]
=
useState
(
""
)
const
[
topLogoUrl
,
setTopLogoUrl
]
=
useState
(
""
)
const
[
collapsed
,
setCollapsed
]
=
useState
(
false
)
const
[
collapsed
,
setCollapsed
]
=
useState
(
false
)
const
rootSubmenuKeys
=
_
.
pluck
(
menuList
,
'groupCode'
);
const
rootSubmenuKeys
=
_
.
pluck
(
menuList
,
'groupCode'
);
...
@@ -129,7 +128,6 @@ function Aside(props: any) {
...
@@ -129,7 +128,6 @@ function Aside(props: any) {
if
(
link
.
indexOf
(
item
.
link
)
!==
-
1
)
{
if
(
link
.
indexOf
(
item
.
link
)
!==
-
1
)
{
setSelectKey
(
item
.
groupCode
);
setSelectKey
(
item
.
groupCode
);
setOpenKeys
([])
setOpenKeys
([])
setLastOpenKeys
([])
}
else
if
(
item
.
children
)
{
}
else
if
(
item
.
children
)
{
item
.
children
.
map
((
_item
:
any
,
_index
:
any
)
=>
{
item
.
children
.
map
((
_item
:
any
,
_index
:
any
)
=>
{
if
(
link
.
indexOf
(
_item
.
link
)
!==
-
1
)
{
if
(
link
.
indexOf
(
_item
.
link
)
!==
-
1
)
{
...
@@ -166,10 +164,8 @@ function Aside(props: any) {
...
@@ -166,10 +164,8 @@ function Aside(props: any) {
if
(
typeof
key
===
"string"
)
{
if
(
typeof
key
===
"string"
)
{
if
(
openKeys
.
includes
(
key
))
{
if
(
openKeys
.
includes
(
key
))
{
setOpenKeys
([]);
setOpenKeys
([]);
setLastOpenKeys
([]);
}
else
{
}
else
{
setOpenKeys
([
key
]);
setOpenKeys
([
key
]);
setLastOpenKeys
([
key
])
}
}
}
}
}
}
...
@@ -181,10 +177,8 @@ function Aside(props: any) {
...
@@ -181,10 +177,8 @@ function Aside(props: any) {
if
(
typeof
key
===
"string"
)
{
if
(
typeof
key
===
"string"
)
{
if
(
openKeys
.
includes
(
key
))
{
if
(
openKeys
.
includes
(
key
))
{
setOpenKeys
([]);
setOpenKeys
([]);
setLastOpenKeys
([]);
}
else
{
}
else
{
setOpenKeys
([
key
]);
setOpenKeys
([
key
]);
setLastOpenKeys
([
key
])
}
}
}
}
}
}
...
@@ -192,11 +186,6 @@ function Aside(props: any) {
...
@@ -192,11 +186,6 @@ function Aside(props: any) {
function
handleMenu
()
{
function
handleMenu
()
{
handleMenuType
();
handleMenuType
();
setCollapsed
(
!
collapsed
)
setCollapsed
(
!
collapsed
)
if
(
!
collapsed
)
{
setOpenKeys
([])
}
else
{
setOpenKeys
(
lastOpenKeys
)
}
}
}
return
(
return
(
...
@@ -235,7 +224,7 @@ function Aside(props: any) {
...
@@ -235,7 +224,7 @@ function Aside(props: any) {
<
Menu
<
Menu
style=
{
menuType
?
{
minHeight
:
"100%"
,
background
:
'#0E1935'
}:{
minHeight
:
"100%"
,
background
:
'#0E1935'
,
width
:
"56px"
}
}
style=
{
menuType
?
{
minHeight
:
"100%"
,
background
:
'#0E1935'
}:{
minHeight
:
"100%"
,
background
:
'#0E1935'
,
width
:
"56px"
}
}
selectedKeys=
{
selectKey
}
selectedKeys=
{
selectKey
}
openKeys=
{
openKeys
}
openKeys=
{
menuType
?
openKeys
:
[]
}
onOpenChange=
{
onOpenChange
}
onOpenChange=
{
onOpenChange
}
inlineCollapsed=
{
collapsed
}
inlineCollapsed=
{
collapsed
}
mode=
{
menuType
?
"inline"
:
"vertical"
}
mode=
{
menuType
?
"inline"
:
"vertical"
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment