Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
DolphinScheduler
提交
4929b819
DolphinScheduler
项目概览
apache
/
DolphinScheduler
上一次同步 接近 2 年
通知
707
Star
9572
Fork
3514
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
DolphinScheduler
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4929b819
编写于
10月 13, 2022
作者:
A
Amy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[Feature][UI] Batch upload files.
上级
a7c3747a
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
66 addition
and
61 deletion
+66
-61
dolphinscheduler-ui/src/locales/modules/en_US.ts
dolphinscheduler-ui/src/locales/modules/en_US.ts
+3
-2
dolphinscheduler-ui/src/locales/modules/zh_CN.ts
dolphinscheduler-ui/src/locales/modules/zh_CN.ts
+3
-2
dolphinscheduler-ui/src/service/modules/resources/index.ts
dolphinscheduler-ui/src/service/modules/resources/index.ts
+15
-1
dolphinscheduler-ui/src/service/modules/resources/types.ts
dolphinscheduler-ui/src/service/modules/resources/types.ts
+2
-0
dolphinscheduler-ui/src/views/resource/file/upload/index.tsx
dolphinscheduler-ui/src/views/resource/file/upload/index.tsx
+24
-32
dolphinscheduler-ui/src/views/resource/file/upload/use-form.ts
...inscheduler-ui/src/views/resource/file/upload/use-form.ts
+3
-14
dolphinscheduler-ui/src/views/resource/file/upload/use-upload.ts
...scheduler-ui/src/views/resource/file/upload/use-upload.ts
+16
-10
未找到文件。
dolphinscheduler-ui/src/locales/modules/en_US.ts
浏览文件 @
4929b819
...
...
@@ -225,7 +225,7 @@ const resource = {
folder_name
:
'
Folder Name
'
,
enter_name_tips
:
'
Please enter name
'
,
enter_description_tips
:
'
Please enter description
'
,
enter_content_tips
:
'
Please
enter the resource content
'
,
enter_content_tips
:
'
Please
select the files to upload
'
,
file_format
:
'
File Format
'
,
file_content
:
'
File Content
'
,
delete_confirm
:
'
Delete?
'
,
...
...
@@ -234,7 +234,8 @@ const resource = {
success
:
'
Success
'
,
file_details
:
'
File Details
'
,
return
:
'
Return
'
,
save
:
'
Save
'
save
:
'
Save
'
,
upload_tips
:
'
Click or drag files to this area to upload.
'
},
udf
:
{
udf_resources
:
'
UDF resources
'
,
...
...
dolphinscheduler-ui/src/locales/modules/zh_CN.ts
浏览文件 @
4929b819
...
...
@@ -223,7 +223,7 @@ const resource = {
folder_name
:
'
文件夹名称
'
,
enter_name_tips
:
'
请输入名称
'
,
enter_description_tips
:
'
请输入描述
'
,
enter_content_tips
:
'
请
输入资源内容
'
,
enter_content_tips
:
'
请
选择上传的资源
'
,
enter_suffix_tips
:
'
请输入文件后缀
'
,
file_format
:
'
文件格式
'
,
file_content
:
'
文件内容
'
,
...
...
@@ -233,7 +233,8 @@ const resource = {
success
:
'
成功
'
,
file_details
:
'
文件详情
'
,
return
:
'
返回
'
,
save
:
'
保存
'
save
:
'
保存
'
,
upload_tips
:
'
点击或者拖动文件到该区域来上传
'
},
udf
:
{
udf_resources
:
'
UDF资源
'
,
...
...
dolphinscheduler-ui/src/service/modules/resources/index.ts
浏览文件 @
4929b819
...
...
@@ -31,7 +31,8 @@ import {
ListReq
,
ViewResourceReq
,
ResourceIdReq
,
UdfFuncReq
UdfFuncReq
,
FileType
}
from
'
./types
'
export
function
queryResourceListPaging
(
...
...
@@ -72,6 +73,19 @@ export function createResource(
})
}
export
function
resourceBatchUpload
(
data
:
{
type
:
FileType
files
:
File
[]
pid
:
string
currentDir
:
string
}):
any
{
return
axios
({
url
:
'
/resources/batch-upload
'
,
method
:
'
post
'
,
data
})
}
export
function
authorizedFile
(
params
:
UserIdReq
):
any
{
return
axios
({
url
:
'
/resources/authed-file
'
,
...
...
dolphinscheduler-ui/src/service/modules/resources/types.ts
浏览文件 @
4929b819
...
...
@@ -118,6 +118,8 @@ interface ResourceViewRes {
content
:
string
}
export
type
FileType
=
'
FILE
'
|
'
UDF
'
export
{
FileReq
,
ResourceTypeReq
,
...
...
dolphinscheduler-ui/src/views/resource/file/upload/index.tsx
浏览文件 @
4929b819
...
...
@@ -15,8 +15,16 @@
* limitations under the License.
*/
import
{
defineComponent
,
toRefs
,
PropType
}
from
'
vue
'
import
{
NButton
,
NForm
,
NFormItem
,
NInput
,
NUpload
}
from
'
naive-ui
'
import
{
NForm
,
NFormItem
,
NUpload
,
NUploadDragger
,
NSpace
,
NIcon
,
NText
}
from
'
naive-ui
'
import
{
UploadOutlined
,
LoadingOutlined
}
from
'
@vicons/antd
'
import
{
useI18n
}
from
'
vue-i18n
'
import
Modal
from
'
@/components/modal
'
import
{
useForm
}
from
'
./use-form
'
...
...
@@ -35,25 +43,21 @@ export default defineComponent({
emits
:
[
'
updateList
'
,
'
update:show
'
],
setup
(
props
,
ctx
)
{
const
{
state
,
resetForm
}
=
useForm
()
const
{
handleUploadFile
}
=
useUpload
(
state
)
const
{
onSelectFile
,
handleUploadFile
}
=
useUpload
(
state
)
const
hideModal
=
()
=>
{
ctx
.
emit
(
'
update:show
'
)
}
const
customRequest
=
({
file
}:
any
)
=>
{
state
.
uploadForm
.
name
=
file
.
name
state
.
uploadForm
.
file
=
file
.
file
}
const
handleFile
=
()
=>
{
console
.
log
(
state
.
uploadForm
.
files
)
handleUploadFile
(
ctx
.
emit
,
hideModal
,
resetForm
)
}
return
{
hideModal
,
customRequest
,
handleFile
,
onSelectFile
,
...
toRefs
(
state
)
}
},
...
...
@@ -69,29 +73,17 @@ export default defineComponent({
cancelClassName
=
'btn-cancel'
confirmLoading
=
{
this
.
saving
}
>
<
NForm
rules
=
{
this
.
rules
}
ref
=
'uploadFormRef'
>
<
NFormItem
label
=
{
t
(
'
resource.file.file_name
'
)
}
path
=
'name'
>
<
NInput
v
-
model
=
{
[
this
.
uploadForm
.
name
,
'
value
'
]
}
placeholder
=
{
t
(
'
resource.file.enter_name_tips
'
)
}
class
=
'input-file-name'
/>
</
NFormItem
>
<
NFormItem
label
=
{
t
(
'
resource.file.description
'
)
}
path
=
'description'
>
<
NInput
type
=
'textarea'
v
-
model
=
{
[
this
.
uploadForm
.
description
,
'
value
'
]
}
placeholder
=
{
t
(
'
resource.file.enter_description_tips
'
)
}
class
=
'input-description'
/>
</
NFormItem
>
<
NFormItem
label
=
{
t
(
'
resource.file.upload_files
'
)
}
path
=
'file'
>
<
NUpload
v
-
model
=
{
[
this
.
uploadForm
.
file
,
'
value
'
]
}
customRequest
=
{
this
.
customRequest
}
class
=
'btn-upload'
>
<
NButton
>
{
t
(
'
resource.file.upload_files
'
)
}
</
NButton
>
<
NForm
rules
=
{
this
.
rules
}
ref
=
'uploadFormRef'
model
=
{
this
.
uploadForm
}
>
<
NFormItem
path
=
'files'
>
<
NUpload
class
=
'btn-upload'
on
-
change
=
{
this
.
onSelectFile
}
multiple
>
<
NUploadDragger
>
<
NSpace
vertical
>
<
NIcon
size
=
'48'
depth
=
'3'
>
{
this
.
saving
?
<
LoadingOutlined
/>
:
<
UploadOutlined
/>
}
</
NIcon
>
<
NText
>
{
t
(
'
resource.file.upload_tips
'
)
}
</
NText
>
</
NSpace
>
</
NUploadDragger
>
</
NUpload
>
</
NFormItem
>
</
NForm
>
...
...
dolphinscheduler-ui/src/views/resource/file/upload/use-form.ts
浏览文件 @
4929b819
...
...
@@ -20,9 +20,7 @@ import { useI18n } from 'vue-i18n'
import
type
{
FormRules
}
from
'
naive-ui
'
const
defaultValue
=
()
=>
({
name
:
''
,
file
:
''
,
description
:
''
,
files
:
[],
pid
:
-
1
,
currentDir
:
'
/
'
})
...
...
@@ -39,20 +37,11 @@ export function useForm() {
uploadForm
:
defaultValue
(),
saving
:
false
,
rules
:
{
name
:
{
files
:
{
required
:
true
,
trigger
:
[
'
input
'
,
'
blur
'
],
validator
()
{
if
(
state
.
uploadForm
.
name
===
''
)
{
return
new
Error
(
t
(
'
resource.file.enter_name_tips
'
))
}
}
},
file
:
{
required
:
true
,
trigger
:
[
'
input
'
,
'
blur
'
],
validator
()
{
if
(
state
.
uploadForm
.
file
===
''
)
{
if
(
state
.
uploadForm
.
files
.
length
===
0
)
{
return
new
Error
(
t
(
'
resource.file.enter_content_tips
'
))
}
}
...
...
dolphinscheduler-ui/src/views/resource/file/upload/use-upload.ts
浏览文件 @
4929b819
...
...
@@ -18,9 +18,10 @@
import
{
useI18n
}
from
'
vue-i18n
'
import
{
IEmit
}
from
'
../types
'
import
{
useRouter
}
from
'
vue-router
'
import
type
{
Router
}
from
'
vue-router
'
import
{
useFileStore
}
from
'
@/store/file/file
'
import
{
createResource
}
from
'
@/service/modules/resources
'
import
{
resourceBatchUpload
}
from
'
@/service/modules/resources
'
import
type
{
Router
}
from
'
vue-router
'
import
type
{
UploadFileInfo
}
from
'
naive-ui
'
export
function
useUpload
(
state
:
any
)
{
const
{
t
}
=
useI18n
()
...
...
@@ -40,26 +41,31 @@ export function useUpload(state: any) {
const
pid
=
router
.
currentRoute
.
value
.
params
.
id
||
-
1
const
currentDir
=
fileStore
.
getCurrentDir
||
'
/
'
const
formData
=
new
FormData
()
formData
.
append
(
'
file
'
,
state
.
uploadForm
.
file
)
formData
.
append
(
'
file
s
'
,
state
.
uploadForm
.
files
)
formData
.
append
(
'
type
'
,
'
FILE
'
)
formData
.
append
(
'
name
'
,
state
.
uploadForm
.
name
)
formData
.
append
(
'
pid
'
,
String
(
pid
))
formData
.
append
(
'
currentDir
'
,
currentDir
)
formData
.
append
(
'
description
'
,
state
.
uploadForm
.
description
)
await
createResource
(
formData
as
any
)
await
resourceBatchUpload
(
formData
as
any
)
window
.
$message
.
success
(
t
(
'
resource.file.success
'
))
state
.
saving
=
false
emit
(
'
updateList
'
)
hideModal
()
resetForm
()
}
catch
(
err
)
{
}
finally
{
state
.
saving
=
false
}
}
const
onSelectFile
=
(
options
:
{
file
:
UploadFileInfo
fileList
:
Array
<
UploadFileInfo
>
event
?:
Event
})
=>
{
state
.
uploadForm
.
files
=
options
.
fileList
}
return
{
handleUploadFile
handleUploadFile
,
onSelectFile
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录