Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
so-manage-ui
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
smart-operation
so-manage-ui
Commits
50365532
Commit
50365532
authored
Nov 11, 2022
by
赵伟庚
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix some bugs
parent
3feed9b4
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
383 additions
and
334 deletions
+383
-334
src/bg-ui/bg-upload.vue
src/bg-ui/bg-upload.vue
+4
-0
src/page/main/config/dict/index.vue
src/page/main/config/dict/index.vue
+11
-2
src/page/main/develop/account/add/contact-form.vue
src/page/main/develop/account/add/contact-form.vue
+35
-24
src/page/main/develop/account/add/index.vue
src/page/main/develop/account/add/index.vue
+1
-1
src/page/main/develop/account/add/system-form.vue
src/page/main/develop/account/add/system-form.vue
+53
-35
src/page/main/system/organization/org-form.vue
src/page/main/system/organization/org-form.vue
+101
-87
src/page/main/system/organization/org-user/index.vue
src/page/main/system/organization/org-user/index.vue
+2
-2
src/page/main/system/organization/platform-user/index.vue
src/page/main/system/organization/platform-user/index.vue
+2
-2
src/page/main/system/organization/user-detail/index.vue
src/page/main/system/organization/user-detail/index.vue
+173
-180
src/page/main/system/role/index.vue
src/page/main/system/role/index.vue
+1
-1
No files found.
src/bg-ui/bg-upload.vue
View file @
50365532
...
...
@@ -176,6 +176,10 @@ export default {
},
handleExceed
(
file
,
fileList
)
{
console
.
log
(
file
,
fileList
);
if
(
fileList
&&
fileList
.
length
==
this
.
limit
)
{
this
.
$message
.
error
(
`最多只允许上传
${
this
.
limit
}
个文件`
)
return
false
}
},
handlePreview
(
val
)
{
let
a
=
document
.
createElement
(
"
a
"
);
// 生成一个a元素
...
...
src/page/main/config/dict/index.vue
View file @
50365532
...
...
@@ -103,6 +103,16 @@
<el-form-item
label=
"名称"
prop=
"name"
>
<el-input
v-model=
"formData.name"
show-word-limit
:maxlength=
"
nodeClassifyId == 'eb9c7d70-c123-42b7-8e61-dde1b022b669'
? 6
: nodeClassifyId == 'efd9ec3b-7f18-49e2-9d88-bcca022243bb'
? 4
: nodeClassifyId == '949a1138-4995-464e-97a9-424d097eb271'
? 2
: 20
"
placeholder=
"请输入名称"
></el-input>
</el-form-item>
...
...
@@ -232,8 +242,7 @@ const state = reactive({
},
rules
:
{
name
:
[
{
required
:
true
,
message
:
"
请输入名称
"
,
trigger
:
"
blur
"
},
{
max
:
20
,
message
:
"
名称最大为20字
"
,
trigger
:
"
blur
"
}
{
required
:
true
,
message
:
"
请输入名称
"
,
trigger
:
"
blur
"
}
],
describe
:
[
{
required
:
true
,
message
:
"
请输入描述
"
,
trigger
:
"
blur
"
},
...
...
src/page/main/develop/account/add/contact-form.vue
View file @
50365532
...
...
@@ -17,7 +17,7 @@
<el-input
v-model=
"contactForm.contact_email"
/>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"remark"
>
<el-input
type=
"textarea"
:rows=
"3"
v-model=
"contactForm.remark"
/>
<el-input
type=
"textarea"
:rows=
"3"
v-model=
"contactForm.remark"
show-word-limit
maxlength=
"300"
/>
</el-form-item>
</el-form>
</
template
>
...
...
@@ -44,37 +44,47 @@ const props = defineProps({
});
const
checkPhone
=
(
rule
,
value
,
callback
)
=>
{
var
phone_ruler
=
/^
(?:(?:\+
|00
)
86
)?
1
[
3-9
]\d{9}
$/
;
setTimeout
(()
=>
{
if
(
!
phone_ruler
.
test
(
value
)
&&
value
.
length
!==
0
)
{
callback
(
new
Error
(
"
请输入正确的手机号码
"
));
}
else
{
callback
();
}
});
var
phone_ruler
=
/^
(?:(?:\+
|00
)
86
)?
1
[
3-9
]\d{9}
$/
;
setTimeout
(()
=>
{
if
(
!
phone_ruler
.
test
(
value
)
&&
value
.
length
!==
0
)
{
callback
(
new
Error
(
"
请输入正确的手机号码
"
));
}
else
{
callback
();
}
});
};
const
checkPhoneRepet
=
(
rule
,
value
,
callback
)
=>
{
let
params
=
null
;
if
(
props
.
id
){
params
=
{
id
:
parseInt
(
props
.
id
),
contact_phone
:
value
,}
}
else
{
params
=
{
id
:
0
,
contact_phone
:
value
}
}
let
params
=
null
;
if
(
props
.
id
){
params
=
{
id
:
parseInt
(
props
.
id
),
contact_phone
:
value
,}
}
else
{
params
=
{
id
:
0
,
contact_phone
:
value
}
}
$axios
.
post
(
`/apaas/system/v5/org/check`
,
params
)
.
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
callback
()
}
else
{
callback
(
new
Error
(
res
.
data
.
data
))
}
})
}
$axios
.
post
(
`/apaas/system/v5/org/check`
,
params
)
.
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
callback
()
}
else
{
callback
(
new
Error
(
res
.
data
.
data
))
}
})
}
const
checkName
=
(
rule
,
value
,
callback
)
=>
{
var
reg
=
/^
[
a-zA-Z0-9
\u
4e00-
\u
9fa5
]
+$/
if
(
!
reg
.
test
(
value
))
{
callback
(
new
Error
(
"
只能输入字母、数字和汉字
"
))
}
else
{
callback
()
}
}
const
contactFormRules
=
reactive
({
contact_name
:
[
{
required
:
true
,
message
:
'
请输入联系人姓名
'
,
trigger
:
'
blur
'
},
{
max
:
50
,
message
:
"
联系人姓名最大长度为50个字符
"
,
trigger
:
"
blur
"
},
{
validator
:
checkName
,
trigger
:
'
blur
'
},
],
contact_phone
:
[
{
required
:
true
,
message
:
'
请输入联系人手机号
'
,
trigger
:
'
blur
'
},
...
...
@@ -83,6 +93,7 @@ const contactFormRules = reactive({
],
contact_email
:
[
{
type
:
'
email
'
,
message
:
'
请输入正确的邮箱
'
,
trigger
:
'
blur
'
},
{
max
:
100
,
message
:
"
邮箱最大长度为100个字符
"
,
trigger
:
"
blur
"
},
]
})
const
contactRef
=
ref
(
null
)
...
...
src/page/main/develop/account/add/index.vue
View file @
50365532
...
...
@@ -191,7 +191,7 @@ const getDetail = () => {
systemFormRef
.
value
.
setForm
({
organization_id
:
form
.
organization_id
,
system_role_id
:
form
.
system_role_id
,
logo
:
[{
url
:
form
.
logo
}
],
logo
:
form
.
logo
?
[{
url
:
form
.
logo
}]
:
[
],
business_code
:
form
.
business_code
,
business_name
:
form
.
business_name
,
business_desc
:
form
.
business_desc
,
...
...
src/page/main/develop/account/add/system-form.vue
View file @
50365532
...
...
@@ -29,7 +29,7 @@
<bg-upload-image
v-model=
"systemForm.logo"
:showTips=
"true"
:limit=
"1"
:fileSize=
"500"
:fileSizeUnit=
"'KB'"
listType=
"picture-card"
:accept=
"['.jpg','.jpeg','.png']"
customTips=
"请选择图片上传:大小120 * 120像素支持jpg、png等格式,图片需小于500KB"
></bg-upload-image>
</el-form-item>
<el-form-item
label=
"业务系统概述"
prop=
"business_desc"
>
<el-input
type=
"textarea"
:rows=
"3"
v-model=
"systemForm.business_desc"
/>
<el-input
type=
"textarea"
:rows=
"3"
v-model=
"systemForm.business_desc"
show-word-limit
maxlength=
"300"
/>
</el-form-item>
<el-form-item
label=
"角色"
prop=
"system_role_id"
v-if=
"!formType"
>
<el-select
v-model=
"systemForm.system_role_id"
placeholder=
"请选择角色"
:disabled=
"true"
style=
"width: 100%"
>
...
...
@@ -118,39 +118,49 @@ const validatePass = (rule, value, callback) => {
}
}
const
validateBusinessName
=
(
rule
,
value
,
callback
)
=>
{
let
params
=
null
;
if
(
props
.
id
){
params
=
{
id
:
parseInt
(
props
.
id
),
business_name
:
value
,
organization_id
:
systemForm
.
organization_id
}
}
else
{
params
=
{
business_name
:
value
,
organization_id
:
systemForm
.
organization_id
}
}
$axios
.
post
(
`/apaas/system/v5/user/check/business`
,
params
)
.
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
callback
()
}
else
{
let
reg
=
/^
[
a-zA-Z0-9
\u
4e00-
\u
9fa5
]
+$/
if
(
!
reg
.
test
(
value
))
{
callback
(
new
Error
(
"
只能输入字母、数字和汉字
"
))
}
else
{
let
params
=
null
;
if
(
props
.
id
){
params
=
{
id
:
parseInt
(
props
.
id
),
business_name
:
value
,
organization_id
:
systemForm
.
organization_id
}
}
else
{
params
=
{
business_name
:
value
,
organization_id
:
systemForm
.
organization_id
}
}
$axios
.
post
(
`/apaas/system/v5/user/check/business`
,
params
)
.
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
callback
()
}
else
{
callback
(
new
Error
(
res
.
data
.
data
))
}
})
}
})
}
}
const
validateSystemAccount
=
(
rule
,
value
,
callback
)
=>
{
let
params
=
null
;
if
(
props
.
id
){
params
=
{
id
:
parseInt
(
props
.
id
),
system_account
:
value
,}
}
else
{
params
=
{
system_account
:
value
}
}
$axios
.
post
(
`/apaas/system/v5/user/check/account`
,
params
)
.
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
callback
()
}
else
{
let
reg
=
/^
[
a-zA-Z0-9
]
+$/
if
(
!
reg
.
test
(
value
))
{
callback
(
new
Error
(
"
只能输入字母和数字
"
))
}
else
{
let
params
=
null
;
if
(
props
.
id
){
params
=
{
id
:
parseInt
(
props
.
id
),
system_account
:
value
,}
}
else
{
params
=
{
system_account
:
value
}
}
$axios
.
post
(
`/apaas/system/v5/user/check/account`
,
params
)
.
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
callback
()
}
else
{
callback
(
new
Error
(
res
.
data
.
data
))
}
})
}
})
}
}
const
formRules
=
reactive
({
...
...
@@ -159,6 +169,7 @@ const formRules = reactive({
],
business_name
:
[
{
required
:
true
,
message
:
'
请输入业务系统名称
'
,
trigger
:
'
blur
'
},
{
max
:
50
,
message
:
'
业务系统名称最大长度为50个字符
'
,
trigger
:
'
blur
'
},
{
validator
:
validateBusinessName
,
trigger
:
'
blur
'
},
],
system_role_id
:
[
...
...
@@ -166,16 +177,24 @@ const formRules = reactive({
],
system_account
:
[
{
required
:
true
,
message
:
'
请输入账号
'
,
trigger
:
'
blur
'
},
{
min
:
4
,
message
:
'
帐号长度不得低于4个字符
'
,
trigger
:
'
blur
'
},
{
max
:
20
,
message
:
'
帐号最大长度为20个字符
'
,
trigger
:
'
blur
'
},
{
validator
:
validateSystemAccount
,
trigger
:
'
blur
'
},
],
password
:
[
{
required
:
true
,
message
:
'
请输入密码
'
,
trigger
:
'
blur
'
},
{
min
:
8
,
message
:
'
密码长度不得低于8位
'
,
trigger
:
'
blur
'
}
{
min
:
8
,
message
:
'
密码长度不得低于8位
'
,
trigger
:
'
blur
'
}
],
confirm_password
:
[
{
required
:
true
,
message
:
'
请确认密码
'
,
trigger
:
'
blur
'
},
{
validator
:
validatePass
,
trigger
:
'
blur
'
}
],
access_address
:
[
{
max
:
500
,
message
:
'
访问地址最大长度为500个字符
'
,
trigger
:
'
blur
'
},
],
develop_id
:
[
{
required
:
true
,
message
:
"
请选择开发厂商
"
,
trigger
:
"
change
"
}
]
})
const
systemRef
=
ref
(
null
)
...
...
@@ -258,14 +277,13 @@ const getRoleList = () => {
const
getFirmList
=
()
=>
{
$axios
.
get
(
`/apaas/system/v5/dictionary/developer/list`
)
.
then
((
res
)
=>
{
.
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
firmList
.
value
=
res
.
data
.
data
;
firmList
.
value
=
res
.
data
.
data
||
[];
}
else
{
$message
.
error
(
res
.
data
.
data
)
}
})
})
}
onBeforeMount
(()
=>
{
...
...
src/page/main/system/organization/org-form.vue
View file @
50365532
...
...
@@ -26,13 +26,13 @@
<el-input
v-model=
"orgForm.organization_code"
/>
</el-form-item>
<el-form-item
label=
"组织介绍"
prop=
"description"
>
<el-input
type=
"textarea"
:rows=
"3"
v-model=
"orgForm.description"
/>
<el-input
type=
"textarea"
:rows=
"3"
v-model=
"orgForm.description"
maxlength=
"300"
show-word-limit
/>
</el-form-item>
<el-form-item
label=
"组织附件"
prop=
"logo"
>
<bg-upload
v-model=
"orgForm.attachment"
customTips
:limit=
"3"
:limit=
"3"
:fileTypes=
"['doc','docx','xls','xlsx','pdf','jpg','jpeg','png','zip','rar']"
:otherInfo=
"'最多可上传三个附件,可上传zip,rar,doc,docx,xlsx,xls,png,jpg,可上传营业执照和相关协议文件等'"
>
...
...
@@ -44,105 +44,119 @@
<
script
setup
>
import
{
reactive
,
ref
,
onMounted
,
onBeforeMount
,
getCurrentInstance
}
from
'
vue
'
const
props
=
defineProps
({
const
props
=
defineProps
({
formType
:
{
type
:
String
,
default
:
'
create
'
,
//false 新建 true 编辑
},
});
const
{
proxy
}
=
getCurrentInstance
()
const
{
$axios
,
$message
}
=
proxy
const
orgForm
=
reactive
({
p_organization_id
:
''
,
level
:
false
,
name
:
''
,
organization_code
:
''
,
description
:
''
,
attachment
:
[]
})
const
formRules
=
reactive
({
p_organization_id
:
[
{
required
:
true
,
message
:
'
输入上级目录
'
,
trigger
:
'
blur
'
},
],
name
:
[
{
required
:
true
,
message
:
'
请输入机构名称
'
,
trigger
:
'
blur
'
},
],
organization_code
:
[
{
required
:
true
,
message
:
'
请输入组织机构代码
'
,
trigger
:
'
blur
'
},
],
})
type
:
String
,
default
:
'
create
'
,
//false 新建 true 编辑
},
});
const
{
proxy
}
=
getCurrentInstance
()
const
{
$axios
,
$message
}
=
proxy
const
orgForm
=
reactive
({
p_organization_id
:
''
,
level
:
false
,
name
:
''
,
organization_code
:
''
,
description
:
''
,
attachment
:
[]
})
const
orgRef
=
ref
(
null
)
const
emit
=
defineEmits
([
'
action
'
])
const
checkCode
=
(
rule
,
value
,
callback
)
=>
{
var
reg
=
/^
[
a-zA-Z0-9
]
+$/
if
(
!
reg
.
test
(
value
))
{
callback
(
new
Error
(
"
只能输入字母和数字
"
))
}
else
{
callback
()
}
}
const
submitForm
=
async
()
=>
{
if
(
!
orgRef
)
return
await
orgRef
.
value
.
validate
((
valid
,
fields
)
=>
{
if
(
valid
)
{
emit
(
'
action
'
,
orgForm
)
}
else
{
emit
(
'
action
'
,
null
)
}
})
const
checkName
=
(
rule
,
value
,
callback
)
=>
{
var
reg
=
/^
[
a-zA-Z
\u
4e00-
\u
9fa5
]
+$/
if
(
!
reg
.
test
(
value
))
{
callback
(
new
Error
(
"
只能输入字母和汉字
"
))
}
else
{
callback
()
}
}
const
clearForm
=
()
=>
{
if
(
!
orgRef
)
return
orgRef
.
value
.
resetFields
()
}
const
formRules
=
reactive
({
p_organization_id
:
[
{
required
:
true
,
message
:
'
输入上级目录
'
,
trigger
:
'
blur
'
},
],
name
:
[
{
required
:
true
,
message
:
'
请输入机构名称
'
,
trigger
:
'
blur
'
},
{
max
:
50
,
message
:
'
机构名称最大长度为50位
'
,
trigger
:
'
blur
'
},
{
validator
:
checkName
,
trigger
:
'
blur
'
}
],
organization_code
:
[
{
required
:
true
,
message
:
'
请输入组织机构代码
'
,
trigger
:
'
blur
'
},
{
max
:
18
,
message
:
'
组织机构代码最大长度为18位
'
,
trigger
:
'
blur
'
},
{
validator
:
checkCode
,
trigger
:
'
blur
'
}
],
})
const
setForm
=
(
data
)
=>
{
Object
.
assign
(
orgForm
,
data
);
}
const
orgRef
=
ref
(
null
)
const
emit
=
defineEmits
([
'
action
'
])
const
orgData
=
ref
([])
const
treeProps
=
{
label
:
'
name
'
,
children
:
'
Child
'
,
value
:
'
organization_id
'
,
disabled
:
'
disabled
'
}
const
getOrgTree
=
()
=>
{
$axios
.
get
(
`/apaas/system/v5/org/tree`
)
.
then
((
res
)
=>
{
const
submitForm
=
async
()
=>
{
if
(
!
orgRef
)
return
await
orgRef
.
value
.
validate
((
valid
,
fields
)
=>
{
if
(
valid
)
{
emit
(
'
action
'
,
orgForm
)
}
else
{
emit
(
'
action
'
,
null
)
}
})
}
const
clearForm
=
()
=>
{
if
(
!
orgRef
)
return
orgRef
.
value
.
resetFields
()
}
const
setForm
=
(
data
)
=>
{
Object
.
assign
(
orgForm
,
data
);
}
const
orgData
=
ref
([])
const
treeProps
=
{
label
:
'
name
'
,
children
:
'
Child
'
,
value
:
'
organization_id
'
,
disabled
:
'
disabled
'
}
const
getOrgTree
=
()
=>
{
$axios
.
get
(
`/apaas/system/v5/org/tree`
)
.
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
const
orgDataTemp
=
res
.
data
.
data
||
[]
orgDataTemp
.
shift
()
orgData
.
value
=
filterOrg
(
orgDataTemp
);
const
orgDataTemp
=
res
.
data
.
data
||
[]
orgDataTemp
.
shift
()
orgData
.
value
=
filterOrg
(
orgDataTemp
);
}
else
{
$message
.
error
(
res
.
data
.
data
)
$message
.
error
(
res
.
data
.
data
)
}
})
}
const
filterOrg
=
(
data
)
=>
{
if
(
data
.
length
>
0
)
{
data
.
forEach
(
item
=>
{
item
.
disabled
=
item
.
data_type
===
0
?
false
:
true
;
})
}
if
(
item
.
Child
){
filterOrg
(
item
.
Child
)
}
else
{
return
}
})
const
filterOrg
=
(
data
)
=>
{
if
(
data
.
length
>
0
)
{
data
.
forEach
(
item
=>
{
item
.
disabled
=
item
.
data_type
===
0
?
false
:
true
;
if
(
item
.
Child
){
filterOrg
(
item
.
Child
)
}
else
{
return
}
return
data
;
}
const
isTop
=
(
data
)
=>
{
orgForm
.
p_organization_id
=
data
?
'
'
:
''
;
//空格绕过表单非空校验
})
}
return
data
;
}
onBeforeMount
((
)
=>
{
getOrgTree
()
})
onMounted
(()
=>
{
})
const
isTop
=
(
data
)
=>
{
orgForm
.
p_organization_id
=
data
?
'
'
:
''
;
//空格绕过表单非空校验
}
onBeforeMount
(()
=>
{
getOrgTree
()
})
onMounted
(()
=>
{
})
defineExpose
({
submitForm
,
clearForm
,
setForm
})
</
script
>
\ No newline at end of file
src/page/main/system/organization/org-user/index.vue
View file @
50365532
...
...
@@ -4,7 +4,7 @@
<el-breadcrumb
separator=
"/"
>
<el-breadcrumb-item>
组织管理
</el-breadcrumb-item>
<el-breadcrumb-item
:to=
"
{ path: '/system/organization' }"> 组织管理
</el-breadcrumb-item>
<el-breadcrumb-item>
新增组织管理员
</el-breadcrumb-item>
<el-breadcrumb-item>
{{
route
.
query
.
id
?
'
编辑组织用户
'
:
'
新增组织管理员
'
}}
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div
class=
"page_content flex_cloumn"
>
...
...
@@ -192,7 +192,7 @@ const getDetail = () => {
orgAccountRef
.
value
.
setForm
({
organization_id
:
form
.
organization_id
,
select_role
:
form
.
select_role
,
logo
:
[{
url
:
form
.
logo
}
],
logo
:
form
.
logo
?
[{
url
:
form
.
logo
}]
:
[
],
system_account
:
form
.
system_account
,
contact_phone
:
form
.
contact_phone
,
state
:
form
.
state
,
...
...
src/page/main/system/organization/platform-user/index.vue
View file @
50365532
...
...
@@ -4,7 +4,7 @@
<el-breadcrumb
separator=
"/"
>
<el-breadcrumb-item>
组织管理
</el-breadcrumb-item>
<el-breadcrumb-item
:to=
"
{ path: '/system/organization' }"> 组织管理
</el-breadcrumb-item>
<el-breadcrumb-item>
新增平台用户
</el-breadcrumb-item>
<el-breadcrumb-item>
{{
route
.
query
.
id
?
'
编辑平台用户
'
:
'
新增平台用户
'
}}
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div
class=
"page_content flex_cloumn"
>
...
...
@@ -217,7 +217,7 @@ const getDetail = () => {
if
(
res
.
data
.
code
==
200
)
{
const
form
=
res
.
data
.
data
;
platformAccountFormRef
.
value
.
setForm
({
logo
:
[{
url
:
form
.
logo
}
],
logo
:
form
.
logo
?
[{
url
:
form
.
logo
}]
:
[
],
system_account
:
form
.
system_account
,
contact_phone
:
form
.
contact_phone
,
state
:
form
.
state
,
...
...
src/page/main/system/organization/user-detail/index.vue
View file @
50365532
This diff is collapsed.
Click to expand it.
src/page/main/system/role/index.vue
View file @
50365532
...
...
@@ -146,7 +146,7 @@
</
template
>
</el-cascader>
<el-input
v-model=
"userFilter.search"
v-model
.trim
=
"userFilter.search"
placeholder=
"请输入内容"
style=
"width: 200px"
:prefix-icon=
"Search"
...
...
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