Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
iBiz-Vue-Mob-R7-Res
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBiz-R7前端标准模板
iBiz-Vue-Mob-R7-Res
提交
28ddd16e
提交
28ddd16e
编写于
6月 05, 2020
作者:
zcdtk
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
文件上传参数格式化
上级
e26ce439
变更
2
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
121 行增加
和
146 行删除
+121
-146
app-mob-file-upload.vue
src/components/app-mob-file-upload/app-mob-file-upload.vue
+59
-146
view-tool.ts
src/utils/view-tool/view-tool.ts
+62
-0
未找到文件。
src/components/app-mob-file-upload/app-mob-file-upload.vue
浏览文件 @
28ddd16e
...
...
@@ -2,7 +2,7 @@
<div
class=
"app-mobile-file-upload"
>
<ion-item-group
v-if=
"files.length > 0"
>
<ion-item
v-for=
"file in files"
:key=
"file.id"
>
<ion-label><a
class=
"file"
>
{{
file
.
name
}}
</a></ion-label>
<ion-label><a
class=
"file"
@
click=
"onDownload(file)"
>
{{
file
.
name
}}
</a></ion-label>
<ion-icon
name=
"close-circle-outline"
@
click=
"onDelete(file, null)"
></ion-icon>
</ion-item>
</ion-item-group>
...
...
@@ -29,6 +29,7 @@ import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorat
import
{
Environment
}
from
'@/environments/environment'
;
import
{
Subject
,
Unsubscribable
}
from
'rxjs'
;
import
Axios
from
'axios'
;
import
qs
from
'qs'
;
import
{
Uploader
}
from
'vant'
;
...
...
@@ -106,10 +107,7 @@ export default class AppMobFileUpload extends Vue {
* @memberof AppMobFileUpload
*/
public
onDelete
(
file
:
any
,
detail
:
any
):
void
{
this
.
onRemove
({
id
:
file
.
id
,
name
:
file
.
name
},
this
.
files
);
this
.
onRemove
({
id
:
file
.
id
,
name
:
file
.
name
},
this
.
files
);
}
/**
...
...
@@ -121,6 +119,7 @@ export default class AppMobFileUpload extends Vue {
* @memberof AppMobFileUpload
*/
public
beforeRead
(
file
:
any
,
detail
:
any
):
boolean
{
this
.
dataProcess
();
if
(
file
&&
Array
.
isArray
(
file
))
{
this
.
$notice
.
warning
(
'该功能只支持单个文件上传'
);
return
false
;
...
...
@@ -162,6 +161,14 @@ export default class AppMobFileUpload extends Vue {
}
// MOB LOGIC END
/**
* 是否支持多个上传
*
* @type {boolean}
* @memberof AppMobFileUpload
*/
@
Prop
({
default
:
true
})
public
multiple
?:
boolean
;
/**
* 表单状态
*
...
...
@@ -241,28 +248,36 @@ export default class AppMobFileUpload extends Vue {
@
Prop
()
public
disabled
?:
boolean
;
/**
*
上传参数
*
视图上下文
*
* @type {
string
}
* @type {
*
}
* @memberof AppMobFileUpload
*/
@
Prop
(
)
public
uploadparams
?:
string
;
@
Prop
(
{
default
:
{}
})
context
:
any
;
/**
*
下载
参数
*
视图
参数
*
* @type {string}
* @type {*}
* @memberof AppMobFileUpload
*/
@
Prop
({
default
:
{}
})
viewparams
:
any
;
/**
* 上传参数
*
* @type {*}
* @memberof AppMobFileUpload
*/
@
Prop
(
)
public
exportparams
?:
string
;
@
Prop
(
{
default
:
{}
})
uploadParam
:
any
;
/**
*
自定义
参数
*
下载
参数
*
* @type {*}
* @memberof AppMobFileUpload
*/
@
Prop
(
)
public
customparams
?
:
any
;
@
Prop
(
{
default
:
{}
})
exportParam
:
any
;
/**
* 上传文件路径
...
...
@@ -285,30 +300,6 @@ export default class AppMobFileUpload extends Vue {
*/
@
Provide
()
public
files
:
Array
<
any
>
=
[];
/**
* 上传keys
*
* @type {Array<any>}
* @memberof AppMobFileUpload
*/
public
upload_keys
:
Array
<
any
>
=
[];
/**
* 导出keys
*
* @type {Array<any>}
* @memberof AppMobFileUpload
*/
public
export_keys
:
Array
<
any
>
=
[];
/**
* 自定义数组
*
* @type {Array<any>}
* @memberof AppMobFileUpload
*/
public
custom_arr
:
Array
<
any
>
=
[];
/**
* 应用参数
*
...
...
@@ -324,21 +315,18 @@ export default class AppMobFileUpload extends Vue {
* @memberof AppMobFileUpload
*/
private
dataProcess
():
void
{
let
upload_arr
:
Array
<
string
>
=
[];
let
export_arr
:
Array
<
string
>
=
[];
const
_data
:
any
=
JSON
.
parse
(
this
.
data
);
this
.
upload_keys
.
forEach
((
key
:
string
)
=>
{
upload_arr
.
push
(
`
${
key
}
=
${
_data
[
key
]}
`
);
});
this
.
export_keys
.
forEach
((
key
:
string
)
=>
{
export_arr
.
push
(
`
${
key
}
=
${
_data
[
key
]}
`
);
});
const
{
context
:
uploadContext
,
param
:
uploadParam
}
=
this
.
$viewTool
.
doEditorItemParam
(
this
.
uploadParam
,
this
.
context
,
this
.
viewparams
,
JSON
.
parse
(
this
.
data
));
const
{
context
:
exportContext
,
param
:
exportParam
}
=
this
.
$viewTool
.
doEditorItemParam
(
this
.
exportParam
,
this
.
context
,
this
.
viewparams
,
JSON
.
parse
(
this
.
data
));
let
_url
=
`
${
Environment
.
BaseUrl
}${
Environment
.
UploadFile
}
`
;
if
(
upload_arr
.
length
>
0
||
this
.
custom_arr
.
length
>
0
)
{
_url
=
`
${
_url
}
?
${
upload_arr
.
join
(
'&'
)}${
upload_arr
.
length
>
0
?
'&'
:
''
}${
this
.
custom_arr
.
join
(
'&'
)}
`
;
let
_uploadUrl
=
`
${
Environment
.
BaseUrl
}${
Environment
.
UploadFile
}
`
;
const
uploadContextStr
:
string
=
qs
.
stringify
(
uploadContext
,
{
delimiter
:
'&'
});
const
uploadParamStr
:
string
=
qs
.
stringify
(
uploadParam
,
{
delimiter
:
'&'
});
if
(
!
Object
.
is
(
uploadContextStr
,
''
)
||
!
Object
.
is
(
uploadParamStr
,
''
))
{
_uploadUrl
=
`
${
_uploadUrl
}
?
${
uploadContextStr
}
&
${
uploadParamStr
}
`
;
}
this
.
uploadUrl
=
_url
;
this
.
uploadUrl
=
_u
ploadU
rl
;
this
.
files
.
forEach
((
file
:
any
)
=>
{
if
(
process
.
env
.
NODE_ENV
===
'development'
)
{
...
...
@@ -349,11 +337,14 @@ export default class AppMobFileUpload extends Vue {
}
return
;
}
let
url
=
`
${
this
.
downloadUrl
}
/
${
file
.
id
}
`
;
if
(
upload_arr
.
length
>
0
||
this
.
custom_arr
.
length
>
0
)
{
url
=
`
${
url
}
?
${
upload_arr
.
join
(
'&'
)}${
upload_arr
.
length
>
0
?
'&'
:
''
}${
this
.
custom_arr
.
join
(
'&'
)}
`
;
let
_downloadUrl
=
`
${
this
.
downloadUrl
}
/
${
file
.
id
}
`
;
const
exportContextStr
:
string
=
qs
.
stringify
(
exportContext
,
{
delimiter
:
'&'
});
const
exportParamStr
:
string
=
qs
.
stringify
(
exportParam
,
{
delimiter
:
'&'
});
if
(
!
Object
.
is
(
exportContextStr
,
''
)
||
!
Object
.
is
(
exportParamStr
,
''
))
{
_downloadUrl
=
`
${
_downloadUrl
}
?
${
exportContextStr
}
&
${
exportParamStr
}
`
;
}
file
.
url
=
u
rl
;
file
.
url
=
_downloadU
rl
;
});
}
...
...
@@ -368,11 +359,14 @@ export default class AppMobFileUpload extends Vue {
// 表单加载完成
if
(
Object
.
is
(
$event
.
type
,
'load'
))
{
if
(
this
.
value
)
{
// console.log(this.value);
this
.
files
=
JSON
.
parse
(
this
.
value
);
}
this
.
dataProcess
();
}
// 表单保存完成 和 表单项更新
if
(
Object
.
is
(
$event
.
type
,
"save"
)
||
Object
.
is
(
$event
.
type
,
"updateformitem"
))
{
this
.
dataProcess
();
}
});
}
}
...
...
@@ -384,33 +378,11 @@ export default class AppMobFileUpload extends Vue {
*/
public
mounted
()
{
this
.
appData
=
this
.
$store
.
getters
.
getAppData
();
let
custom_arr
:
Array
<
string
>
=
[];
let
upload_keys
:
Array
<
string
>
=
[];
let
export_keys
:
Array
<
string
>
=
[];
if
(
this
.
uploadparams
&&
!
Object
.
is
(
this
.
uploadparams
,
''
))
{
upload_keys
=
this
.
uploadparams
.
split
(
';'
);
}
if
(
this
.
exportparams
&&
!
Object
.
is
(
this
.
exportparams
,
''
))
{
export_keys
=
this
.
exportparams
.
split
(
';'
);
}
if
(
this
.
customparams
&&
!
Object
.
is
(
this
.
customparams
,
''
))
{
Object
.
keys
(
this
.
customparams
).
forEach
((
name
:
string
)
=>
{
custom_arr
.
push
(
`
${
name
}
=
${
this
.
customparams
[
name
]}
`
);
});
}
this
.
upload_keys
=
upload_keys
;
this
.
export_keys
=
export_keys
;
this
.
custom_arr
=
custom_arr
;
if
(
this
.
value
)
{
this
.
files
=
JSON
.
parse
(
this
.
value
);
}
this
.
dataProcess
();
this
.
changeLabelStyle
();
}
/**
...
...
@@ -457,16 +429,6 @@ export default class AppMobFileUpload extends Vue {
}
}
/**
* 上传之前
*
* @param {*} file
* @memberof AppMobFileUpload
*/
public
beforeUpload
(
file
:
any
)
{
// console.log('上传之前');
}
/**
* 上传成功回调
*
...
...
@@ -480,24 +442,15 @@ export default class AppMobFileUpload extends Vue {
if
(
!
response
)
{
return
;
}
const
data
=
{
name
:
response
.
name
,
id
:
response
.
id
};
const
data
=
{
name
:
response
.
name
,
id
:
response
.
id
};
let
arr
:
Array
<
any
>
=
[];
this
.
files
.
forEach
((
_file
:
any
)
=>
{
arr
.
push
({
name
:
_file
.
name
,
id
:
_file
.
id
})
arr
.
push
({
name
:
_file
.
name
,
id
:
_file
.
id
});
});
arr
.
push
(
data
);
let
value
:
any
=
arr
.
length
>
0
?
JSON
.
stringify
(
arr
)
:
null
;
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
name
,
value
:
value
});
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
name
,
value
:
value
});
}
/**
...
...
@@ -523,17 +476,11 @@ export default class AppMobFileUpload extends Vue {
let
arr
:
Array
<
any
>
=
[];
fileList
.
forEach
((
f
:
any
)
=>
{
if
(
f
.
id
!=
file
.
id
)
{
arr
.
push
({
name
:
f
.
name
,
id
:
f
.
id
});
arr
.
push
({
name
:
f
.
name
,
id
:
f
.
id
});
}
});
let
value
:
any
=
arr
.
length
>
0
?
JSON
.
stringify
(
arr
)
:
null
;
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
name
,
value
:
value
});
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
name
,
value
:
value
});
}
/**
...
...
@@ -543,43 +490,9 @@ export default class AppMobFileUpload extends Vue {
* @memberof AppMobFileUpload
*/
public
onDownload
(
file
:
any
)
{
this
.
dataProcess
();
window
.
open
(
file
.
url
);
}
/**
* 预览图片地址
*
* @type {string}
* @memberof AppMobFileUpload
*/
public
dialogImageUrl
:
string
=
''
;
/**
* 是否显示预览界面
*
* @type {boolean}
* @memberof AppMobFileUpload
*/
public
dialogVisible
:
boolean
=
false
;
/**
* 是否支持多个上传
*
* @type {boolean}
* @memberof AppMobFileUpload
*/
@
Prop
({
default
:
true
})
public
multiple
?:
boolean
;
/**
* 预览
*
* @param {*} file
* @memberof AppMobFileUpload
*/
public
onPreview
(
file
:
any
)
{
this
.
dialogImageUrl
=
file
.
url
;
this
.
dialogVisible
=
true
;
}
}
</
script
>
...
...
src/utils/view-tool/view-tool.ts
浏览文件 @
28ddd16e
...
...
@@ -270,4 +270,66 @@ export class ViewTool {
public
getIndexViewParam
():
any
{
return
this
.
indexViewParam
;
}
/**
* 处理编辑器参数
*
* @param {*} [itemParam={}] 预定义编辑器参数
* @param {*} [context={}] 视图上下文
* @param {*} [viewparams={}] 视图参数
* @param {*} [formData={}] 表单数据
* @returns {{ context: {}, param: {} }} 返回的对象
* @memberof ViewTool
*/
public
doEditorItemParam
(
itemParam
:
any
=
{},
context
:
any
=
{},
viewparams
:
any
=
{},
formData
:
any
=
{}):
{
context
:
{},
param
:
{}
}
{
let
_itemParam
=
{
context
:
{},
param
:
{}
};
const
{
context
:
_context
,
param
:
_param
}
=
itemParam
;
// 处理上下文
if
(
_context
&&
Object
.
keys
(
_context
).
length
>
0
)
{
Object
.
keys
(
_context
).
forEach
((
name
:
string
)
=>
{
if
(
!
name
)
{
return
;
}
let
value
:
string
|
null
=
_context
[
name
];
if
(
value
&&
value
.
startsWith
(
'%'
)
&&
value
.
endsWith
(
'%'
))
{
const
key
:
string
=
value
.
slice
(
1
,
-
1
);
if
(
!
(
context
&&
context
.
hasOwnProperty
(
key
))
&&
!
(
formData
&&
formData
.
hasOwnProperty
(
key
)))
{
return
;
}
if
(
context
&&
context
.
hasOwnProperty
(
key
))
{
value
=
context
[
key
];
}
if
(
formData
&&
formData
.
hasOwnProperty
(
key
))
{
value
=
formData
[
key
];
}
}
Object
.
assign
(
_itemParam
.
context
,
{
[
name
]:
value
});
});
}
// 处理参数
if
(
_param
&&
Object
.
keys
(
_param
).
length
>
0
)
{
Object
.
keys
(
_param
).
forEach
((
name
:
string
)
=>
{
if
(
!
name
)
{
return
;
}
let
value
:
string
|
null
=
_param
[
name
];
if
(
value
&&
value
.
startsWith
(
'%'
)
&&
value
.
endsWith
(
'%'
))
{
const
key
:
string
=
value
.
slice
(
1
,
-
1
);
if
(
!
(
viewparams
&&
viewparams
.
hasOwnProperty
(
key
))
&&
!
(
formData
&&
formData
.
hasOwnProperty
(
key
)))
{
return
;
}
if
(
viewparams
&&
viewparams
.
hasOwnProperty
(
key
))
{
value
=
viewparams
[
key
];
}
if
(
formData
&&
formData
.
hasOwnProperty
(
key
))
{
value
=
formData
[
key
];
}
}
Object
.
assign
(
_itemParam
.
param
,
{
[
name
]:
value
});
});
}
return
_itemParam
;
}
}
\ No newline at end of file
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录