Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
enterprise-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
enterprise-platform
Commits
d5fe213f
Commit
d5fe213f
authored
Jan 06, 2025
by
廖旭伟
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
a6dedc49
f13a3003
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
500 additions
and
167 deletions
+500
-167
enterprise-manager-ui/admin/src/router.js
enterprise-manager-ui/admin/src/router.js
+1
-0
enterprise-manager-ui/admin/src/views/bussinesscard/drawershow.vue
...e-manager-ui/admin/src/views/bussinesscard/drawershow.vue
+247
-157
enterprise-manager-ui/admin/src/views/company/drawershow.vue
enterprise-manager-ui/admin/src/views/company/drawershow.vue
+15
-10
enterprise-manager-ui/admin/src/views/resourceImage/drawershow.vue
...e-manager-ui/admin/src/views/resourceImage/drawershow.vue
+132
-0
enterprise-manager-ui/admin/src/views/resourceImage/list.vue
enterprise-manager-ui/admin/src/views/resourceImage/list.vue
+105
-0
No files found.
enterprise-manager-ui/admin/src/router.js
View file @
d5fe213f
...
...
@@ -51,6 +51,7 @@ const router = new Router({
...
restBuilder
(
"
feedback
"
,
"
feedback
"
),
//反馈信息
...
restBuilder
(
"
bussinesscard/record
"
,
"
bussinesscard/record
"
),
//流量管理
...
restBuilder
(
"
resourceImage
"
,
"
resourceImage
"
),
//名片管理
...
restBuilder
(
"
staff
"
,
"
staff
"
),
//员工基本信息
...
restBuilder
(
"
staff/leave
"
,
"
staff/leave
"
),
//员工离职信息
...
restBuilder
(
"
bussinesscard
"
,
"
bussinesscard
"
),
//名片基本信息
...
...
enterprise-manager-ui/admin/src/views/bussinesscard/drawershow.vue
View file @
d5fe213f
<
template
>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
:destroy-on-close=
"true"
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
:span=
"20"
label=
"所属关联员工"
prop=
"staffId"
v-model=
"form.staffId"
type=
"select"
:enumData=
"dict.staffId"
placeholder=
"请输入名片所属关联员工ID"
/>
<Field
:span=
"20"
label=
"名片姓名"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入名片姓名"
/>
<Field
:span=
"20"
label=
"性别"
prop=
"gender"
v-model=
"form.gender"
type=
"select"
:enumData=
"dict.gender"
placeholder=
"请选择性别"
/>
<Field
:span=
"20"
label=
"出生日期"
prop=
"birthday"
v-model=
"form.birthday"
type=
"date"
/>
<Field
:span=
"20"
label=
"照片"
prop=
"photoPath"
placeholder=
"请输入照片"
><imageUpload
v-model=
"form.photoPath"
prePath=
"/file/preview"
/>
</Field>
<Field
:span=
"20"
label=
"邮件地址"
prop=
"email"
v-model=
"form.email"
placeholder=
"请输入邮件地址"
/>
<Field
:span=
"20"
label=
"联系电话"
prop=
"phoneNumber"
v-model=
"form.phoneNumber"
placeholder=
"请输入联系电话"
/>
<Field
:span=
"20"
label=
"身份证号码"
prop=
"idCard"
v-model=
"form.idCard"
placeholder=
"请输入身份证号码"
/>
<Field
:span=
"20"
label=
"所在公司"
prop=
"companyId"
v-model=
"form.companyId"
type=
"select"
:enumData=
"dict.companyId"
placeholder=
"请输入记录名片持有者所在公司或组织的名称ID"
/>
<Field
:span=
"20"
label=
"职位"
prop=
"positionId"
v-model=
"form.positionId"
type=
"select"
:enumData=
"dict.positionId"
placeholder=
"请输入职位ID"
/>
<Field
:span=
"20"
label=
"简介"
prop=
"bio"
v-model=
"form.bio"
type=
"textarea"
placeholder=
"请输入简介"
/>
<Field
:span=
"20"
label=
"社交媒体链接"
prop=
"socialMedia"
v-model=
"form.socialMedia"
type=
"textarea"
placeholder=
"请输入社交媒体链接, 可以是一个包含社交媒体账号的JSON对象或单独的字段"
/>
<Field
:span=
"20"
label=
"二维码图片"
prop=
"qRCode"
placeholder=
"请输入二维码图片"
><imageUpload
v-model=
"form.qRCode"
prePath=
"/file/preview"
/>
</Field>
<Field
:span=
"20"
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
<form-buttons
@
submit=
'submitForm'
v-if=
"pageInfo.type!='view'"
noCancelBtn
/>
</el-form>
</el-drawer>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
:destroy-on-close=
"true"
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
:span=
"20"
label=
"所属关联员工"
prop=
"staffId"
v-model=
"form.staffId"
type=
"select"
:enumData=
"dict.staffId"
placeholder=
"请输入名片所属关联员工ID"
/>
<Field
:span=
"20"
label=
"名片姓名"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入名片姓名"
/>
<Field
:span=
"20"
label=
"性别"
prop=
"gender"
v-model=
"form.gender"
type=
"select"
:enumData=
"dict.gender"
placeholder=
"请选择性别"
/>
<Field
:span=
"20"
label=
"出生日期"
prop=
"birthday"
v-model=
"form.birthday"
type=
"date"
/>
<Field
:span=
"20"
label=
"照片"
prop=
"photoPath"
placeholder=
"请输入照片"
>
<imageUpload
v-model=
"form.photoPath"
prePath=
"/file/preview"
:slotP=
"'请上传 62*62px 的2MB以内的图片'"
/>
</Field>
<Field
:span=
"20"
label=
"邮件地址"
prop=
"email"
v-model=
"form.email"
placeholder=
"请输入邮件地址"
/>
<Field
:span=
"20"
label=
"联系电话"
prop=
"phoneNumber"
v-model=
"form.phoneNumber"
placeholder=
"请输入联系电话"
/>
<Field
:span=
"20"
label=
"身份证号码"
prop=
"idCard"
v-model=
"form.idCard"
placeholder=
"请输入身份证号码"
/>
<Field
:span=
"20"
label=
"所在公司"
prop=
"companyId"
v-model=
"form.companyId"
type=
"select"
:enumData=
"dict.companyId"
placeholder=
"请输入记录名片持有者所在公司或组织的名称ID"
/>
<Field
:span=
"20"
label=
"职位"
prop=
"positionId"
v-model=
"form.positionId"
type=
"select"
:enumData=
"dict.positionId"
placeholder=
"请输入职位ID"
/>
<Field
:span=
"20"
label=
"简介"
prop=
"bio"
v-model=
"form.bio"
type=
"textarea"
placeholder=
"请输入简介"
/>
<Field
:span=
"20"
label=
"社交媒体链接"
prop=
"socialMedia"
v-model=
"form.socialMedia"
type=
"textarea"
placeholder=
"请输入社交媒体链接, 可以是一个包含社交媒体账号的JSON对象或单独的字段"
/>
<Field
:span=
"20"
label=
"二维码图片"
prop=
"qRCode"
placeholder=
"请输入二维码图片"
><imageUpload
v-model=
"form.qRCode"
prePath=
"/file/preview"
/>
</Field>
<Field
:span=
"20"
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
<form-buttons
@
submit=
"submitForm"
v-if=
"pageInfo.type != 'view'"
noCancelBtn
/>
</el-form>
</el-drawer>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
BussinesscardDetail
"
,
mixins
:
[
form
],
components
:
{
},
created
()
{
this
.
changePath
(
"
bussinesscard
"
)
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
名片基本信息
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:[
"
gender
"
,
"
staffId
"
,
"
companyId
"
,
"
positionId
"
,
],
toDate
:[
"
birthday
"
,
],
// 表单校验
rules
:
{
staffId
:
[
{
required
:
true
,
message
:
"
请选择员工
"
,
trigger
:
"
blur
"
},
],
name
:
[
{
required
:
true
,
message
:
"
请输入名片姓名
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
,},
],
companyId
:
[
{
required
:
true
,
message
:
"
请选择所在公司
"
,
trigger
:
"
blur
"
},
],
positionId
:
[
{
required
:
true
,
message
:
"
请选择职位
"
,
trigger
:
"
blur
"
},
],
}
};
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
bussinesscard/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
title
=
"
修改名片基本信息
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
()
this
.
urls
.
currUrl
=
"
bussinesscard/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
title
=
"
新增名片基本信息
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
bussinesscard/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
this
.
title
=
"
名片基本信息详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
staffId
:
null
,
staffName
:
""
,
name
:
""
,
gender
:
1
,
birthday
:
null
,
photoPath
:
""
,
email
:
""
,
phoneNumber
:
""
,
idCard
:
""
,
companyId
:
""
,
companyName
:
""
,
positionId
:
null
,
positionName
:
""
,
bio
:
""
,
socialMedia
:
""
,
qRCode
:
""
,
remark
:
""
,
sumViews
:
0
,
viewsByDay
:
0
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
BussinesscardDetail
"
,
mixins
:
[
form
],
components
:
{},
created
()
{
this
.
changePath
(
"
bussinesscard
"
);
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
名片基本信息
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:
[
"
gender
"
,
"
staffId
"
,
"
companyId
"
,
"
positionId
"
],
toDate
:
[
"
birthday
"
],
// 表单校验
rules
:
{
staffId
:
[{
required
:
true
,
message
:
"
请选择员工
"
,
trigger
:
"
blur
"
}],
name
:
[
{
required
:
true
,
message
:
"
请输入名片姓名
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
],
companyId
:
[
{
required
:
true
,
message
:
"
请选择所在公司
"
,
trigger
:
"
blur
"
},
],
positionId
:
[
{
required
:
true
,
message
:
"
请选择职位
"
,
trigger
:
"
blur
"
},
],
},
};
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
bussinesscard/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改名片基本信息
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
();
this
.
urls
.
currUrl
=
"
bussinesscard/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增名片基本信息
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
bussinesscard/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
名片基本信息详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
staffId
:
null
,
staffName
:
""
,
name
:
""
,
gender
:
1
,
birthday
:
null
,
photoPath
:
""
,
email
:
""
,
phoneNumber
:
""
,
idCard
:
""
,
companyId
:
""
,
companyName
:
""
,
positionId
:
null
,
positionName
:
""
,
bio
:
""
,
socialMedia
:
""
,
qRCode
:
""
,
remark
:
""
,
sumViews
:
0
,
viewsByDay
:
0
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
enterprise-manager-ui/admin/src/views/company/drawershow.vue
View file @
d5fe213f
...
...
@@ -40,7 +40,7 @@
<p>
当前选中的行政区划编码为:
{{
regionCodeList
}}
</p>
<el-cascader
v-model=
"regionCodeList"
:props=
"areaprops"
></el-cascader>
</Field>
-->
<el-row>
<
!--
<
el-row>
<Field
:span=
"24"
label=
"经营地址"
...
...
@@ -53,13 +53,14 @@
@
addressSelect=
"addressSelect"
></area-select>
</Field>
</el-row>
</el-row>
-->
<el-row>
<!--
<Field
label=
"所在地"
prop=
"location"
v-model=
"form.location"
placeholder=
"请输入所在地"
/>
-->
<Field
prop=
"location"
v-model=
"form.location"
placeholder=
"请输入详细地址"
label=
"经营地址"
placeholder=
"请输入详细经营地址"
/>
</el-row>
<el-row>
...
...
@@ -344,6 +345,9 @@ export default {
{
validator
:
checkPhone
,
trigger
:
"
blur
"
},
{
max
:
32
,
message
:
"
最多只能录入32个字符
"
,
trigger
:
"
blur
"
},
],
location
:
[
{
required
:
true
,
message
:
"
请输入经营地址
"
,
trigger
:
"
blur
"
},
],
lon
:
[
{
required
:
true
,
message
:
"
请输入经度
"
,
trigger
:
"
blur
"
},
{
max
:
32
,
message
:
"
最多只能录入32个字符
"
,
trigger
:
"
blur
"
},
...
...
@@ -363,13 +367,14 @@ export default {
methods
:
{
hanndleSubmit
()
{
this
.
form
.
businessAdress
=
this
.
$refs
.
areaselect
.
provinceName
+
this
.
$refs
.
areaselect
.
cityName
+
this
.
$refs
.
areaselect
.
areaName
+
this
.
$refs
.
areaselect
.
streetName
+
this
.
$refs
.
areaselect
.
communityName
+
this
.
form
.
location
;
this
.
form
.
businessAdress
=
this
.
form
.
location
;
// this.form.businessAdress =
// this.$refs.areaselect.provinceName +
// this.$refs.areaselect.cityName +
// this.$refs.areaselect.areaName +
// this.$refs.areaselect.streetName +
// this.$refs.areaselect.communityName +
// this.form.location;
// 检查知识产权list中类型不能为空
if
(
this
.
companyPatentsList
&&
this
.
companyPatentsList
.
length
>
0
)
{
let
isNull
=
false
;
...
...
enterprise-manager-ui/admin/src/views/resourceImage/drawershow.vue
0 → 100644
View file @
d5fe213f
<
template
>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
:destroy-on-close=
"true"
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
:span=
"20"
label=
"图片名称"
prop=
"imageName"
v-model=
"form.imageName"
placeholder=
"请输入图片名称"
/>
<Field
:span=
"20"
label=
"图片类型"
prop=
"imageType"
v-model=
"form.imageType"
type=
"select"
:enum-data=
"dict.imageType"
placeholder=
"请选择图片类型"
/>
<Field
:span=
"20"
label=
"图片"
prop=
"url"
placeholder=
"请传入图片"
><imageUpload
v-model=
"form.url"
prePath=
"/file/preview"
:slotP=
"'请上传2MB以内的图片'"
/>
</Field>
</el-row>
<form-buttons
@
submit=
"submitForm"
v-if=
"pageInfo.type != 'view'"
noCancelBtn
/>
</el-form>
</el-drawer>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
FavoritesProductDetail
"
,
mixins
:
[
form
],
components
:
{},
created
()
{
this
.
changePath
(
"
favorites/product
"
);
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
收藏产品
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:
[
"
imageType
"
],
toDate
:
[
"
favoriteTime
"
],
// 表单校验
rules
:
{
imageName
:
[{
required
:
true
,
message
:
"
请输入图片名称
"
}],
url
:
[{
required
:
true
,
message
:
"
请上传图片
"
}],
},
};
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
resourceImage/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改名片背景
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
();
this
.
urls
.
currUrl
=
"
resourceImage/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增名片背景
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
resourceImage/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
名片背景详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
imageName
:
null
,
imageType
:
null
,
url
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
enterprise-manager-ui/admin/src/views/resourceImage/list.vue
0 → 100644
View file @
d5fe213f
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
notDel
:config=
"tableConfig"
>
</LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
FavoritesProductList
"
,
components
:
{
drawerShow
,
},
mixins
:
[
table
],
created
()
{},
methods
:
{
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
drawerform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
drawerform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
},
},
data
()
{
return
{
config
:
{
search
:
[
{
name
:
"
imageType
"
,
type
:
"
select
"
,
placeholder
:
"
请选择图片类型
"
,
label
:
"
图片类型
"
,
},
{
name
:
"
imageName
"
,
type
:
"
text
"
,
label
:
"
图片名称
"
,
fuzzy
:
true
,
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
图片名称
"
,
prop
:
"
imageName
"
,
formatter
:
this
.
formatter
},
{
label
:
"
图片类型
"
,
prop
:
"
imageType
"
,
formatter
:
this
.
formatter
},
{
label
:
"
图片
"
,
prop
:
"
url
"
,
formatter
:
(
row
)
=>
{
return
row
.
url
!=
""
?
(
<
el
-
image
style
=
"
width: 70px; height: 70px
"
src
=
{
row
.
url
}
preview
-
src
-
list
=
{[
row
.
url
]}
>
<
div
slot
=
"
error
"
class
=
"
image-slot
"
style
=
"
width: 70px; height: 70px;display:flex;justify-content: center;align-items: center;
"
>
<
i
class
=
"
el-icon-picture-outline
"
style
=
"
font-size:26px
"
><
/i
>
<
/div
>
<
/el-image
>
)
:
(
"
--
"
);
},
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
(
row
)
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
},
},
],
},
};
},
};
</
script
>
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