Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
alumni-show-h5
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
alumni-show-h5
Commits
a7ff9b31
提交
a7ff9b31
authored
6月 11, 2020
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore: 组织创建和组织详情页字段调整
上级
55680f4f
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
197 行增加
和
74 行删除
+197
-74
base.css
src/assets/css/base.css
+4
-1
Form.vue
src/components/Form.vue
+102
-52
main.js
src/main.js
+2
-1
area.js
src/utils/area.js
+0
-0
Group.vue
src/views/create/Group.vue
+47
-10
Item.vue
src/views/group/Item.vue
+42
-10
没有找到文件。
src/assets/css/base.css
浏览文件 @
a7ff9b31
...
@@ -176,12 +176,15 @@ body {
...
@@ -176,12 +176,15 @@ body {
.form
.van-field__label
{
.form
.van-field__label
{
margin-bottom
:
10px
;
margin-bottom
:
10px
;
}
}
.form
.van-field__right-icon
{
position
:
absolute
;
right
:
10px
;
}
.form
.van-field--error
.van-field__control
,
.form
.van-field--error
.van-field__control
,
.form
.van-field--error
.van-field__control
::placeholder
{
.form
.van-field--error
.van-field__control
::placeholder
{
color
:
#999
;
color
:
#999
;
-webkit-text-fill-color
:
currentColor
;
-webkit-text-fill-color
:
currentColor
;
}
}
.line-clamp
{
.line-clamp
{
display
:
-webkit-box
;
display
:
-webkit-box
;
-webkit-line-clamp
:
2
;
-webkit-line-clamp
:
2
;
...
...
src/components/Form.vue
浏览文件 @
a7ff9b31
...
@@ -14,11 +14,13 @@
...
@@ -14,11 +14,13 @@
<van-field
<van-field
readonly
readonly
clickable
clickable
right-icon=
"arrow-down"
:border=
"false"
:border=
"false"
:required=
"false"
:required=
"false"
v-bind=
"item"
v-bind=
"item"
v-model=
"ruleForm[item.name]"
v-model=
"ruleForm[item.name]"
@
click=
"showPicker(item)"
@
click=
"showPicker(item)"
v-if=
"item.isShow ? item.isShow(ruleForm) : true"
>
>
<template
#
label
>
<template
#
label
>
{{
item
.
label
}}
{{
item
.
label
}}
...
@@ -26,16 +28,39 @@
...
@@ -26,16 +28,39 @@
</
template
>
</
template
>
</van-field>
</van-field>
</template>
</template>
<!-- 地区 -->
<
template
v-else-if=
"item.fieldType === 'area'"
>
<van-field
readonly
clickable
right-icon=
"arrow-down"
:border=
"false"
:required=
"false"
v-bind=
"item"
v-model=
"ruleForm[item.name]"
@
click=
"showPicker(item)"
v-if=
"item.isShow ? item.isShow(ruleForm) : true"
>
<template
#
label
>
{{
item
.
label
}}
<span
class=
"red"
v-if=
"item.required"
>
*
</span>
</
template
>
</van-field>
</template>
<!-- 选择 -->
<!-- 选择 -->
<
template
v-else-if=
"item.fieldType === 'select'"
>
<
template
v-else-if=
"item.fieldType === 'select'"
>
<van-field
<van-field
readonly
readonly
clickable
clickable
right-icon=
"arrow-down"
:border=
"false"
:border=
"false"
:required=
"false"
:required=
"false"
:value=
"ruleForm[item.name] | pickerValueText(item)"
:value=
"ruleForm[item.name] | pickerValueText(item)"
v-bind=
"item"
v-bind=
"item"
@
click=
"showPicker(item)"
@
click=
"showPicker(item)"
v-if=
"item.isShow ? item.isShow(ruleForm) : true"
>
>
<template
#
label
>
<template
#
label
>
{{
item
.
label
}}
{{
item
.
label
}}
...
@@ -43,61 +68,70 @@
...
@@ -43,61 +68,70 @@
</
template
>
</
template
>
</van-field>
</van-field>
</template>
</template>
<!-- 上传图片 -->
<!-- 上传图片 -->
<van-field
<
template
v-else-if=
"item.fieldType === 'uploader'"
>
:border=
"false"
<van-field
:required=
"false"
:border=
"false"
v-bind=
"item"
:required=
"false"
v-model=
"ruleForm[item.name]"
v-bind=
"item"
v-else-if=
"item.fieldType === 'uploader'"
v-model=
"ruleForm[item.name]"
>
v-if=
"item.isShow ? item.isShow(ruleForm) : true"
<
template
#
label
>
>
{{
item
.
label
}}
<template
#
label
>
<span
class=
"red"
v-if=
"item.required"
>
*
</span>
{{
item
.
label
}}
</
template
>
<span
class=
"red"
v-if=
"item.required"
>
*
</span>
<
template
#
input
>
</
template
>
<upload
v-model=
"ruleForm[item.name]"
:max-count=
"1"
/>
<
template
#
input
>
</
template
>
<upload
v-model=
"ruleForm[item.name]"
:max-count=
"1"
/>
</van-field>
</
template
>
</van-field>
</template>
<!-- 单选 -->
<!-- 单选 -->
<van-field
<
template
v-else-if=
"item.fieldType === 'radio'"
>
:border=
"false"
<van-field
:required=
"false"
:border=
"false"
v-bind=
"item"
:required=
"false"
v-model=
"ruleForm[item.name]"
v-bind=
"item"
v-else-if=
"item.fieldType === 'radio'"
v-model=
"ruleForm[item.name]"
>
v-if=
"item.isShow ? item.isShow(ruleForm) : true"
<
template
#
label
>
>
{{
item
.
label
}}
<template
#
label
>
<span
class=
"red"
v-if=
"item.required"
>
*
</span>
{{
item
.
label
}}
</
template
>
<span
class=
"red"
v-if=
"item.required"
>
*
</span>
<
template
#
input
>
</
template
>
<van-radio-group
<
template
#
input
>
v-model=
"ruleForm[item.name]"
<van-radio-group
direction=
"horizontal"
v-model=
"ruleForm[item.name]"
>
direction=
"horizontal"
<van-radio
:name=
"item.name"
v-for=
"item in item.values"
:key=
"item.name"
>
{{
item
.
text
}}
</van-radio
>
>
</van-radio-group>
<van-radio
</
template
>
:name=
"item.name"
</van-field>
v-for=
"item in item.values"
:key=
"item.name"
>
{{
item
.
text
}}
</van-radio
>
</van-radio-group>
</
template
>
</van-field>
</template>
<!-- 文本框 -->
<!-- 文本框 -->
<van-field
<
template
v-else
>
:border=
"false"
<van-field
:required=
"false"
:border=
"false"
v-bind=
"item"
:required=
"false"
v-model=
"ruleForm[item.name]"
v-bind=
"item"
v-else
v-model=
"ruleForm[item.name]"
>
v-if=
"item.isShow ? item.isShow(ruleForm) : true"
<
template
#
label
>
>
{{
item
.
label
}}
<template
#
label
>
<span
class=
"red"
v-if=
"item.required"
>
*
</span>
{{
item
.
label
}}
</
template
>
<span
class=
"red"
v-if=
"item.required"
>
*
</span>
</van-field>
</
template
>
</van-field>
</template>
<van-popup
v-model=
"picker.visible"
position=
"bottom"
>
<van-popup
v-model=
"picker.visible"
position=
"bottom"
>
<van-datetime-picker
<van-datetime-picker
...
@@ -116,6 +150,13 @@
...
@@ -116,6 +150,13 @@
@
cancel=
"picker.visible = false"
@
cancel=
"picker.visible = false"
v-if=
"picker.fieldType === 'select'"
v-if=
"picker.fieldType === 'select'"
/>
/>
<van-area
:area-list=
"areaList"
:columns-num=
"2"
@
confirm=
"onAreaPickerConfirm"
@
cancel=
"picker.visible = false"
v-if=
"picker.fieldType === 'area'"
/>
</van-popup>
</van-popup>
</div>
</div>
</template>
</template>
...
@@ -126,6 +167,7 @@
...
@@ -126,6 +167,7 @@
<
script
>
<
script
>
import
dayjs
from
'dayjs'
import
dayjs
from
'dayjs'
import
Upload
from
'@/components/Upload'
import
Upload
from
'@/components/Upload'
import
areaList
from
'@/utils/area.js'
export
default
{
export
default
{
name
:
'VForm'
,
name
:
'VForm'
,
...
@@ -168,7 +210,8 @@ export default {
...
@@ -168,7 +210,8 @@ export default {
remote
:
null
remote
:
null
},
},
minDate
:
new
Date
(),
minDate
:
new
Date
(),
pickerActive
:
{}
pickerActive
:
{},
areaList
}
}
},
},
filters
:
{
filters
:
{
...
@@ -202,6 +245,7 @@ export default {
...
@@ -202,6 +245,7 @@ export default {
this
.
getPickerOptions
(
field
)
this
.
getPickerOptions
(
field
)
}
}
},
},
// 选择确定
onPickerConfirm
(
data
)
{
onPickerConfirm
(
data
)
{
this
.
ruleForm
[
this
.
picker
.
name
]
=
data
[
this
.
picker
.
valueKey
]
this
.
ruleForm
[
this
.
picker
.
name
]
=
data
[
this
.
picker
.
valueKey
]
this
.
picker
.
visible
=
false
this
.
picker
.
visible
=
false
...
@@ -209,12 +253,18 @@ export default {
...
@@ -209,12 +253,18 @@ export default {
this
.
pickerActive
=
data
this
.
pickerActive
=
data
}
}
},
},
// 时间选择确定
onTimePickerConfirm
(
time
)
{
onTimePickerConfirm
(
time
)
{
this
.
ruleForm
[
this
.
picker
.
name
]
=
dayjs
(
time
)
this
.
ruleForm
[
this
.
picker
.
name
]
=
dayjs
(
time
)
.
second
(
0
)
.
second
(
0
)
.
format
(
'YYYY-MM-DD HH:mm:ss'
)
.
format
(
'YYYY-MM-DD HH:mm:ss'
)
this
.
picker
.
visible
=
false
this
.
picker
.
visible
=
false
},
},
// 地区选择确定
onAreaPickerConfirm
(
values
)
{
this
.
ruleForm
[
this
.
picker
.
name
]
=
values
.
map
(
item
=>
item
.
name
).
join
(
'-'
)
this
.
picker
.
visible
=
false
},
submit
()
{
submit
()
{
return
this
.
$refs
.
form
.
submit
()
return
this
.
$refs
.
form
.
submit
()
},
},
...
...
src/main.js
浏览文件 @
a7ff9b31
...
@@ -6,7 +6,8 @@ import router from './router'
...
@@ -6,7 +6,8 @@ import router from './router'
// vue-meta
// vue-meta
import
VueMeta
from
'vue-meta'
import
VueMeta
from
'vue-meta'
Vue
.
use
(
VueMeta
)
Vue
.
use
(
VueMeta
)
import
{
Icon
}
from
'vant'
Vue
.
use
(
Icon
)
// vant
// vant
import
{
Notify
}
from
'vant'
import
{
Notify
}
from
'vant'
Vue
.
use
(
Notify
)
Vue
.
use
(
Notify
)
...
...
src/utils/area.js
0 → 100644
浏览文件 @
a7ff9b31
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/views/create/Group.vue
浏览文件 @
a7ff9b31
<
template
>
<
template
>
<card
title=
"创建新组织"
style=
"margin:0 20px;"
>
<card
title=
"创建新组织"
style=
"margin:0 20px;"
>
<v-form
ref=
"form"
:fields=
"fields"
@
submit=
"onSubmit"
>
<v-form
ref=
"form"
:
model=
"formModel"
:
fields=
"fields"
@
submit=
"onSubmit"
>
<input
<input
type=
"button"
type=
"button"
value=
"确认创建,提交审核"
value=
"确认创建,提交审核"
...
@@ -21,6 +21,7 @@ export default {
...
@@ -21,6 +21,7 @@ export default {
components
:
{
Card
,
VForm
},
components
:
{
Card
,
VForm
},
data
()
{
data
()
{
return
{
return
{
formModel
:
{},
fields
:
[
fields
:
[
{
{
fieldType
:
'select'
,
fieldType
:
'select'
,
...
@@ -41,7 +42,31 @@ export default {
...
@@ -41,7 +42,31 @@ export default {
label
:
'名称'
,
label
:
'名称'
,
required
:
true
,
required
:
true
,
placeholder
:
'请输入组织名称'
,
placeholder
:
'请输入组织名称'
,
rules
:
[{
required
:
true
,
message
:
'请输入组织名称'
}]
rules
:
[{
required
:
true
,
message
:
'请输入组织名称'
}],
isShow
(
data
)
{
return
[
'2'
,
'3'
].
includes
(
data
.
org_type
)
}
},
{
fieldType
:
'area'
,
name
:
'area'
,
label
:
'城市'
,
required
:
true
,
placeholder
:
'选择组织所在城市'
,
rules
:
[{
required
:
true
,
message
:
'选择组织所在城市'
}],
isShow
(
data
)
{
return
[
'1'
,
'3'
].
includes
(
data
.
org_type
)
}
},
{
name
:
'industry'
,
label
:
'行业'
,
required
:
true
,
placeholder
:
'请输入组织所在行业'
,
rules
:
[{
required
:
true
,
message
:
'请输入组织所在行业'
}],
isShow
(
data
)
{
return
data
.
org_type
===
'2'
}
},
},
{
{
name
:
'purpose'
,
name
:
'purpose'
,
...
@@ -66,13 +91,6 @@ export default {
...
@@ -66,13 +91,6 @@ export default {
placeholder
:
'请输入组织发起人'
,
placeholder
:
'请输入组织发起人'
,
rules
:
[{
required
:
true
,
message
:
'请输入组织发起人'
}]
rules
:
[{
required
:
true
,
message
:
'请输入组织发起人'
}]
},
},
{
name
:
'org_city'
,
label
:
'城市'
,
required
:
true
,
placeholder
:
'请输入组织所在城市'
,
rules
:
[{
required
:
true
,
message
:
'请输入组织所在城市'
}]
},
{
{
type
:
'textarea'
,
type
:
'textarea'
,
name
:
'rules'
,
name
:
'rules'
,
...
@@ -101,17 +119,36 @@ export default {
...
@@ -101,17 +119,36 @@ export default {
]
]
}
}
},
},
watch
:
{
$route
:
{
immediate
:
true
,
deep
:
true
,
handler
(
route
)
{
this
.
formModel
=
Object
.
assign
(
this
.
formModel
,
route
.
query
)
}
}
},
methods
:
{
methods
:
{
handleSubmit
()
{
handleSubmit
()
{
this
.
$refs
.
form
.
submit
()
this
.
$refs
.
form
.
submit
()
},
},
onSubmit
(
data
)
{
onSubmit
(
data
)
{
const
ruleForm
=
this
.
$refs
.
form
.
ruleForm
const
ruleForm
=
this
.
$refs
.
form
.
ruleForm
data
.
org_type
=
ruleForm
.
org_type
// 头像
if
(
data
.
logo
)
{
if
(
data
.
logo
)
{
const
[
first
=
{
url
:
''
}]
=
data
.
logo
const
[
first
=
{
url
:
''
}]
=
data
.
logo
data
.
logo
=
first
.
url
data
.
logo
=
first
.
url
}
}
data
.
org_type
=
ruleForm
.
org_type
||
1
// 城市
if
(
data
.
area
)
{
const
[
province
,
city
]
=
data
.
area
.
split
(
'-'
)
data
.
org_province
=
province
data
.
org_city
=
city
}
if
(
data
.
org_type
===
'1'
)
{
data
.
org_name
=
`
${
data
.
org_city
}
校友会`
}
api
.
addGroup
(
data
).
then
(
response
=>
{
api
.
addGroup
(
data
).
then
(
response
=>
{
if
(
response
.
success
)
{
if
(
response
.
success
)
{
this
.
$dialog
this
.
$dialog
...
...
src/views/group/Item.vue
浏览文件 @
a7ff9b31
...
@@ -5,17 +5,39 @@
...
@@ -5,17 +5,39 @@
<h6
class=
"leave-group"
v-if=
"detail.button_show === 3"
>
退出组织
</h6>
<h6
class=
"leave-group"
v-if=
"detail.button_show === 3"
>
退出组织
</h6>
</
template
>
-->
</
template
>
-->
<div
class=
"info"
>
<div
class=
"info"
>
<div
class=
"info-item"
v-for=
"item in fields"
:key=
"item.name"
>
<
template
v-for=
"item in fields"
>
<div
class=
"info-item__label"
>
{{ item.label }}
</div>
<div
class=
"info-item"
:key=
"item.name"
v-if=
"detail[item.name]"
>
<div
class=
"info-item__content"
>
<div
class=
"info-item__label"
>
{{
item
.
label
}}
</div>
<
template
v-if=
"item.computed"
>
<div
class=
"info-item__content"
>
<div
v-html=
"item.computed(detail[item.name], detail)"
></div>
<template
v-if=
"item.computed"
>
</
template
>
<div
v-html=
"item.computed(detail[item.name], detail)"
></div>
<
template
v-else
>
</
template
>
{{
detail
[
item
.
name
]
}}
<
template
v-else
>
</
template
>
{{
detail
[
item
.
name
]
}}
</
template
>
</div>
</div>
</div>
</div>
</template>
</div>
<!-- 自己创建的组织 -->
<div
class=
"buttons"
v-if=
"detail.is_mine"
>
<input
type=
"button"
class=
"button button-info"
value=
"查看更多活动"
@
click=
"$router.push({ name: 'groupActivity', params: { id: pid } })"
/>
<input
type=
"button"
class=
"button button-primary"
value=
"创建活动"
@
click=
"
$router.push({
name: 'createGroup',
query: { org_type: detail.org_type }
})
"
/>
</div>
</div>
<div
class=
"buttons"
>
<div
class=
"buttons"
>
<input
<input
...
@@ -49,7 +71,9 @@ export default {
...
@@ -49,7 +71,9 @@ export default {
fields
:
[
fields
:
[
{
name
:
'org_name'
,
label
:
'名称'
},
{
name
:
'org_name'
,
label
:
'名称'
},
{
name
:
'org_type_str'
,
label
:
'类型'
},
{
name
:
'org_type_str'
,
label
:
'类型'
},
{
name
:
'org_province'
,
label
:
'省份'
},
{
name
:
'org_city'
,
label
:
'城市'
},
{
name
:
'org_city'
,
label
:
'城市'
},
{
name
:
'industry'
,
label
:
'行业'
},
{
name
:
'purpose'
,
label
:
'宗旨'
},
{
name
:
'purpose'
,
label
:
'宗旨'
},
{
name
:
'goal'
,
label
:
'目的'
},
{
name
:
'goal'
,
label
:
'目的'
},
{
name
:
'initiator'
,
label
:
'主要发起人'
},
{
name
:
'initiator'
,
label
:
'主要发起人'
},
...
@@ -136,6 +160,7 @@ export default {
...
@@ -136,6 +160,7 @@ export default {
color
:
#fff
;
color
:
#fff
;
text-align
:
center
;
text-align
:
center
;
border-radius
:
20px
;
border-radius
:
20px
;
margin
:
0
10px
;
}
}
.button-default
{
.button-default
{
background
:
#ccc
;
background
:
#ccc
;
...
@@ -147,6 +172,13 @@ export default {
...
@@ -147,6 +172,13 @@ export default {
rgba
(
18
,
186
,
244
,
1
)
100%
rgba
(
18
,
186
,
244
,
1
)
100%
);
);
}
}
.button-info
{
background
:
linear-gradient
(
180deg
,
rgba
(
255
,
201
,
44
,
1
)
0%
,
rgba
(
255
,
116
,
42
,
1
)
100%
);
}
::v-deep
.group-avatar
{
::v-deep
.group-avatar
{
width
:
100px
;
width
:
100px
;
height
:
100px
;
height
:
100px
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论