提交 6248f4f5 authored 作者: 王鹏飞's avatar 王鹏飞

chore: 增加组织编辑页面

上级 b4fa39bb
......@@ -11,7 +11,7 @@
<b>类型:</b><span>{{ data.org_type_str }}</span>
</p>
<p>
<b>宗旨:</b><span>{{ data.org_name }}</span>
<b>宗旨:</b><span>{{ data.purpose }}</span>
</p>
<p>
<b>审核状态:</b
......@@ -25,8 +25,15 @@
</div>
<div class="my-group-item-ft">
<ul>
<li v-if="data.is_mine">
<div class="button default-button">编辑</div>
<li v-if="data.is_mine && data.approve_status === '-1'">
<div
class="button default-button"
@click.stop="
$router.push({ name: 'groupUpdate', params: { id: data.id } })
"
>
编辑
</div>
</li>
<li v-else><div class="button default-button">详情</div></li>
<li>
......
......@@ -149,12 +149,18 @@ const routes = [
name: 'activity',
component: () => import('@/views/activity/Index.vue')
},
// 活动详情
// 活动详情
{
path: '/activity/:id',
name: 'activityItem',
component: () => import('@/views/activity/Item.vue')
},
// 编辑活动
{
path: '/activity/:id/update',
name: 'activityUpdate',
component: () => import('@/views/activity/Update.vue')
},
// 活动成员列表
{
path: '/activity/:id/member',
......@@ -173,6 +179,12 @@ const routes = [
name: 'groupItem',
component: () => import('@/views/group/Item.vue')
},
// 编辑组织
{
path: '/group/:id/update',
name: 'groupUpdate',
component: () => import('@/views/group/Update.vue')
},
// 组织成员列表
{
path: '/group/:id/member',
......
<template>
<div class="main">
<card title="创建活动">
<v-form ref="form" :model="formModel" :fields="fields" @submit="onSubmit">
<input
type="button"
value="确认创建,提交审核"
class="submit-button"
@click="handleSubmit"
/>
</v-form>
</card>
</div>
</template>
<script>
import Card from '@/components/Card'
import VForm from '@/components/Form'
import * as api from '@/api'
export default {
name: 'CreateActivity',
components: { Card, VForm },
data() {
return {
formModel: {},
fields: [
{
name: 'activity_name',
label: '主题',
required: true,
placeholder: '请输入活动主题',
rules: [{ required: true, message: '请输入活动主题' }]
},
{
fieldType: 'uploader',
name: 'activity_image',
label: '封面',
required: true,
placeholder: '请上传活动封面'
},
{
type: 'textarea',
name: 'activity_contents',
label: '描述',
required: true,
placeholder: '请简单描述一下该活动',
autosize: { maxHeight: 120, minHeight: 120 },
rules: [{ required: true, message: '请简单描述一下该活动' }]
},
{
fieldType: 'datetime',
name: 'activity_time',
label: '时间',
required: true,
placeholder: '请选择活动时间',
rules: [{ required: true, message: '请选择活动时间' }]
},
{
name: 'activity_city',
label: '城市',
required: true,
placeholder: '请输入活动城市',
rules: [{ required: true, message: '请输入活动城市' }]
},
{
name: 'activity_address',
label: '具体地址',
required: true,
placeholder: '请输入活动具体地址',
rules: [{ required: true, message: '请输入活动具体地址' }]
},
{
fieldType: 'select',
name: 'org_id',
label: '审核渠道',
required: true,
placeholder: '请选择审核本活动的上级组织',
rules: [{ required: true, message: '请选择审核本活动的上级组织' }],
labelKey: 'org_name',
valueKey: 'id',
remote: { method: api.getJoinedGroupes }
},
{
fieldType: 'select',
name: 'visibility',
label: '活动可见性',
required: true,
placeholder: '请选择本活动对哪些用户组可见',
rules: [{ required: true, message: '请选择本活动对哪些用户组可见' }],
values: [
{ text: '所有人可见', value: '1' },
{ text: '所在组织可见', value: '2' },
{ text: '审核组织可见', value: '3' }
]
}
],
groups: []
}
},
watch: {
$route: {
immediate: true,
deep: true,
handler(route) {
this.formModel = Object.assign(this.formModel, route.query)
}
}
},
methods: {
handleSubmit() {
this.$refs.form.submit()
},
onSubmit(data) {
const ruleForm = this.$refs.form.ruleForm
if (data.activity_image) {
const [first = { url: '' }] = data.activity_image
data.activity_image = first.url
}
data.org_id = ruleForm.org_id
data.visibility = ruleForm.visibility
api.addActivity(data).then(response => {
if (response.success) {
this.$dialog
.alert({
confirmButtonText: '确定',
message: '活动创建成功,已提交审核'
})
.then(() => {
this.$router.replace({ name: 'my', query: { tab: '1' } })
})
} else {
this.$toast(response.message)
}
})
}
}
}
</script>
<style lang="scss"></style>
<template>
<div class="main">
<card title="创建活动">
<v-form ref="form" :fields="fields" @submit="onSubmit">
<v-form ref="form" :model="formModel" :fields="fields" @submit="onSubmit">
<input
type="button"
value="确认创建,提交审核"
......@@ -23,6 +23,7 @@ export default {
components: { Card, VForm },
data() {
return {
formModel: {},
fields: [
{
name: 'activity_name',
......@@ -97,6 +98,15 @@ export default {
groups: []
}
},
watch: {
$route: {
immediate: true,
deep: true,
handler(route) {
this.formModel = Object.assign(this.formModel, route.query)
}
}
},
methods: {
handleSubmit() {
this.$refs.form.submit()
......
......@@ -33,8 +33,8 @@
value="创建活动"
@click="
$router.push({
name: 'createGroup',
query: { org_type: detail.org_type }
name: 'createActivity',
query: { org_id: detail.id }
})
"
/>
......
<template>
<card title="编辑组织" style="margin:0 20px;">
<v-form ref="form" :model="formModel" :fields="fields" @submit="onSubmit">
<input
type="button"
value="提交"
class="submit-button"
@click="handleSubmit"
/>
</v-form>
</card>
</template>
<script>
import Card from '@/components/Card'
import VForm from '@/components/Form'
import * as api from '@/api'
export default {
name: 'CreateGroup',
components: { Card, VForm },
data() {
return {
formModel: {},
fields: [
{
fieldType: 'select',
name: 'org_type',
label: '类型',
required: true,
placeholder: '请选择您要创建的组织类型',
rules: [{ required: true, message: '请选择您要创建的组织类型' }],
values: [
{ name: '1', text: '地方校友会' },
{ name: '2', text: '行业研究会' },
{ name: '3', text: '俱乐部' }
],
valueKey: 'name'
},
{
name: 'org_name',
label: '名称',
required: true,
placeholder: '请输入组织名称',
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',
label: '宗旨',
required: true,
placeholder: '请简述您的创建组织的宗旨',
rules: [{ required: true, message: '请简述您的创建组织的宗旨' }]
},
{
type: 'textarea',
name: 'goal',
label: '目的',
required: true,
placeholder: '请输入组织目的',
autosize: { maxHeight: 160, minHeight: 120 },
rules: [{ required: true, message: '请输入组织目的' }]
},
{
name: 'initiator',
label: '发起人',
required: true,
placeholder: '请输入组织发起人',
rules: [{ required: true, message: '请输入组织发起人' }]
},
{
type: 'textarea',
name: 'rules',
label: '组织章程',
required: true,
placeholder: '请输入组织章程',
autosize: { maxHeight: 160, minHeight: 120 },
rules: [{ required: true, message: '请输入组织章程' }]
},
{
type: 'textarea',
name: 'plan',
label: '活动计划',
required: true,
placeholder: '请简述您所创建组织的活动计划',
autosize: { maxHeight: 160, minHeight: 120 },
rules: [{ required: true, message: '请简述您所创建组织的活动计划' }]
},
{
fieldType: 'uploader',
name: 'logo',
label: '头像',
required: true,
placeholder: '请上传组织头像'
}
]
}
},
computed: {
pid() {
return this.$route.params.id
}
},
methods: {
handleSubmit() {
this.$refs.form.submit()
},
onSubmit(data) {
const ruleForm = this.$refs.form.ruleForm
data.org_type = ruleForm.org_type
// 头像
if (data.logo) {
const [first = { url: '' }] = data.logo
data.logo = first.url
}
// 城市
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.updateGroup(this.pid, data).then(response => {
if (response.success) {
this.$dialog
.alert({
confirmButtonText: '确定',
message: '组织创建成功,已提交审核'
})
.then(() => {
this.$router.replace({ name: 'my' })
})
} else {
this.$toast(response.message)
}
})
},
getDetail() {
const toast = this.$toast.loading({
message: '加载中...',
forbidClick: true,
duration: 0
})
api
.getGroup(this.pid)
.then(response => {
this.formModel = response
toast.clear()
})
.catch(toast.clear)
}
},
beforeMount() {
this.getDetail()
}
}
</script>
<style lang="scss"></style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论