在职党员社区报到
This commit is contained in:
195
project/pingchang/apps/AppCommunityMember/Add.vue
Normal file
195
project/pingchang/apps/AppCommunityMember/Add.vue
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
<template>
|
||||||
|
<ai-detail class="Add">
|
||||||
|
<ai-title slot="title" title="发起活动" isShowBack isShowBottomBorder @onBackClick="cancel"/>
|
||||||
|
<template slot="content">
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="120px" label-position="right">
|
||||||
|
<ai-card title="活动信息">
|
||||||
|
<template #content>
|
||||||
|
<div class="ai-form">
|
||||||
|
<el-form-item label="发布地区" prop="areaId" style="width: 100%">
|
||||||
|
<ai-area-select
|
||||||
|
clearable
|
||||||
|
:instance="instance"
|
||||||
|
v-model="form.areaId"
|
||||||
|
@fullname="v => form.areaName = v"
|
||||||
|
always-show
|
||||||
|
area-level="5"
|
||||||
|
:disabledLevel="disabledLevel"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="标题" prop="title" style="width: 100%">
|
||||||
|
<el-input
|
||||||
|
size="small"
|
||||||
|
v-model="form.title"
|
||||||
|
placeholder="请输入..."
|
||||||
|
clearabel
|
||||||
|
:maxLength="60"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="活动地点" prop="address" style="width: 100%">
|
||||||
|
<el-input
|
||||||
|
size="small"
|
||||||
|
v-model="form.address"
|
||||||
|
placeholder="请输入..."
|
||||||
|
clearabel
|
||||||
|
:maxLength="20"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="参与名额" prop="total" style="width: 100%">
|
||||||
|
<el-input-number v-model="form.total" :min="0" :max="1000" size="small"></el-input-number>
|
||||||
|
<span class="text">*0表示不限制活动报名人数</span>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="活动时间" prop="activeTimeList" style="width: 50%">
|
||||||
|
<el-date-picker size="small" :picker-options="pickerOptions"
|
||||||
|
v-model="form.activeTimeList"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
format="yyyy-MM-dd"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="截至时间" prop="stopSignupTime" style="width: 50%">
|
||||||
|
<el-date-picker size="small" :picker-options="pickerOptions"
|
||||||
|
v-model="form.stopSignupTime"
|
||||||
|
type="date"
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="选择日期"
|
||||||
|
format="yyyy-MM-dd"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="联系人" prop="contactPerson" style="width: 50%">
|
||||||
|
<el-input
|
||||||
|
size="small"
|
||||||
|
v-model="form.contactPerson"
|
||||||
|
placeholder="请输入..."
|
||||||
|
clearabel
|
||||||
|
:maxLength="10"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="联系电话" prop="contactPhone" style="width: 50%">
|
||||||
|
<el-input
|
||||||
|
size="small"
|
||||||
|
v-model="form.contactPhone"
|
||||||
|
placeholder="请输入..."
|
||||||
|
clearabel
|
||||||
|
:maxLength="11"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="活动介绍" prop="content" style="width: 100%">
|
||||||
|
<ai-editor v-model="form.content" :instance="instance"/>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</ai-card>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="cancel">取消</el-button>
|
||||||
|
<el-button type="primary" @click="confirm">提交</el-button>
|
||||||
|
</template>
|
||||||
|
</ai-detail>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {mapState} from "vuex";
|
||||||
|
export default {
|
||||||
|
name: "Add",
|
||||||
|
props: {
|
||||||
|
instance: Function,
|
||||||
|
dict: Object,
|
||||||
|
selected: Object,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState(["user"]),
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
disabledLevel: 0,
|
||||||
|
pickerOptions: {
|
||||||
|
disabledDate(time) {
|
||||||
|
return time.getTime() < Date.now();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
areaId: [{ required: true, message: '请选择发布地区', trigger: 'change' },
|
||||||
|
{
|
||||||
|
validator: (r, v, cb) => {
|
||||||
|
if (/.+0{3}$/.test(v)) {
|
||||||
|
cb("发布地区必须选到村级")
|
||||||
|
} else cb()
|
||||||
|
}, trigger: "blur"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
title: [{ required: true, message: '请输入标题', trigger: 'change' }],
|
||||||
|
address: [{ required: true, message: '请选输入活动地点', trigger: 'change' }],
|
||||||
|
total: [{ required: true, message: '请输入参与人员', trigger: 'change' }],
|
||||||
|
activeTimeList: [{ required: true, message: '请选择活动时间', trigger: 'change' }],
|
||||||
|
stopSignupTime: [{ required: true, message: '请选择截止时间', trigger: 'change' }],
|
||||||
|
contactPerson: [{ required: true, message: '请输入联系人', trigger: 'change' }],
|
||||||
|
contactPhone: [{ required: true, message: '请输入联系电话', trigger: 'change' }],
|
||||||
|
content: [{ required: true, message: '请输入活动介绍', trigger: 'change' }],
|
||||||
|
},
|
||||||
|
form: {
|
||||||
|
areaId: '',
|
||||||
|
areaName: '',
|
||||||
|
title: '',
|
||||||
|
address: '',
|
||||||
|
total: '',
|
||||||
|
activeTimeList: [],
|
||||||
|
stopSignupTime: '',
|
||||||
|
contactPerson: '',
|
||||||
|
contactPhone: '',
|
||||||
|
content: ''
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
console.log(this.user)
|
||||||
|
this.dict.load("education", "sex", "nation", "developStatus")
|
||||||
|
this.disabledLevel = this.user.info.areaList.length - 1
|
||||||
|
this.form.areaId = this.user.info.areaId
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
confirm() {
|
||||||
|
this.$refs.form.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.form.beginTime = this.form.activeTimeList[0]
|
||||||
|
this.form.endTime = this.form.activeTimeList[1]
|
||||||
|
this.instance.post(`/app/apppartyreport/addOrUpdate`, {...this.form}).then((res) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
this.$message.success('发起活动成功')
|
||||||
|
setTimeout(() => {
|
||||||
|
this.cancel()
|
||||||
|
}, 600);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
cancel() {
|
||||||
|
this.$emit("goBack")
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.Add {
|
||||||
|
.ai-form {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.text {
|
||||||
|
display: inline-block;
|
||||||
|
padding-left: 8px;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
::v-deep .el-range-separator {
|
||||||
|
width: 28px!important;
|
||||||
|
}
|
||||||
|
::v-deep .el-date-editor {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
107
project/pingchang/apps/AppCommunityMember/AppCommunityMember.vue
Normal file
107
project/pingchang/apps/AppCommunityMember/AppCommunityMember.vue
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
<template>
|
||||||
|
<div class="AppCommunityMember">
|
||||||
|
<ai-list v-show="!detailShow">
|
||||||
|
<template slot="title">
|
||||||
|
<ai-title title="报到服务" :isShowBottomBorder="false" :instance="instance" :isShowArea="currIndex == 0 ? true : false" v-model="areaId" @change="changeArea"></ai-title>
|
||||||
|
</template>
|
||||||
|
<template slot="tabs">
|
||||||
|
<el-tabs v-model="currIndex">
|
||||||
|
<el-tab-pane v-for="(tab,i) in tabs" :key="i" :name="String(i)" :label="tab.label">
|
||||||
|
<component
|
||||||
|
:is="tab.comp"
|
||||||
|
v-if="currIndex === String(i)"
|
||||||
|
:areaId="areaId"
|
||||||
|
:ref="tab.name"
|
||||||
|
@showDetail="showDetail"
|
||||||
|
:instance="instance"
|
||||||
|
:dict="dict"
|
||||||
|
:permissions="permissions" />
|
||||||
|
</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
</template>
|
||||||
|
</ai-list>
|
||||||
|
<component v-if="detailShow" :is="currDet" :areaId="areaId" :id="id" @goBack="goBack" :instance="instance" :dict="dict" :permissions="permissions"/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import List from './List'
|
||||||
|
import Statistics from './Statistics'
|
||||||
|
import Organization from './Organization'
|
||||||
|
import Add from './Add'
|
||||||
|
import Detail from './Detail'
|
||||||
|
|
||||||
|
import {mapState} from 'vuex'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "AppCommunityMember",
|
||||||
|
label: "在职党员社区报到",
|
||||||
|
components: {List, Statistics, Organization, Add, Detail},
|
||||||
|
props: {
|
||||||
|
instance: Function,
|
||||||
|
dict: Object,
|
||||||
|
permissions: Function
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
tabs() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: "社区活动管理",
|
||||||
|
name: "List",
|
||||||
|
comp: List,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "报到数据",
|
||||||
|
name: "Statistics",
|
||||||
|
comp: Statistics,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "报到组织管理",
|
||||||
|
name: "Organization",
|
||||||
|
comp: Organization,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
...mapState(['user']),
|
||||||
|
currDet() {
|
||||||
|
return this.id ? Detail : Add
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.areaId = this.user.info.areaId;
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
activeName: "List",
|
||||||
|
currIndex: 0,
|
||||||
|
areaId: '',
|
||||||
|
detailShow: false,
|
||||||
|
id: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
goBack() {
|
||||||
|
this.detailShow = false;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.List[0].getListInit()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
showDetail(id) {
|
||||||
|
this.id = id || ''
|
||||||
|
this.detailShow = true
|
||||||
|
},
|
||||||
|
changeArea() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.List[0].getListInit()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.AppCommunityMember {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
89
project/pingchang/apps/AppCommunityMember/Detail.vue
Normal file
89
project/pingchang/apps/AppCommunityMember/Detail.vue
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
<template>
|
||||||
|
<ai-detail class="party-detail">
|
||||||
|
<template slot="title">
|
||||||
|
<ai-title
|
||||||
|
title="活动详情"
|
||||||
|
isShowBack
|
||||||
|
isShowBottomBorder
|
||||||
|
@onBackClick="cancel()"
|
||||||
|
></ai-title>
|
||||||
|
</template>
|
||||||
|
<template slot="content">
|
||||||
|
<div>
|
||||||
|
<ai-card title="活动信息">
|
||||||
|
<template #content>
|
||||||
|
<ai-wrapper label-width="120px">
|
||||||
|
<ai-info-item isLine label="发布地区">{{ info.areaName }}</ai-info-item>
|
||||||
|
<ai-info-item isLine label="标题">{{ info.title }}</ai-info-item>
|
||||||
|
<ai-info-item isLine label="活动地点">{{ info.address }}</ai-info-item>
|
||||||
|
<ai-info-item isLine label="参与名额">{{ info.total }}</ai-info-item>
|
||||||
|
<ai-info-item label="报名状态">{{ dict.getLabel('partyReportSignupStatus', info.signupStatus) }}</ai-info-item>
|
||||||
|
<ai-info-item label="活动状态">{{ dict.getLabel('activityStatus', info.actionStatus) }}</ai-info-item>
|
||||||
|
<ai-info-item label="活动时间">{{ info.beginTime.substring(0, 10) }} 至 {{ info.endTime.substring(0, 10) }}</ai-info-item>
|
||||||
|
<ai-info-item label="截至时间">{{ info.stopSignupTime }}</ai-info-item>
|
||||||
|
<ai-info-item label="联系人">{{ info.contactPerson }}</ai-info-item>
|
||||||
|
<ai-info-item label="联系电话">{{ info.contactPhone }}</ai-info-item>
|
||||||
|
</ai-wrapper>
|
||||||
|
</template>
|
||||||
|
</ai-card>
|
||||||
|
<ai-card title="活动介绍">
|
||||||
|
<template #content>
|
||||||
|
<p v-html="info.content"></p>
|
||||||
|
</template>
|
||||||
|
</ai-card>
|
||||||
|
<ai-card title="报名情况">
|
||||||
|
<template #content>
|
||||||
|
<p v-html="info.content"></p>
|
||||||
|
</template>
|
||||||
|
</ai-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</ai-detail>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapState } from "vuex";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "detail",
|
||||||
|
|
||||||
|
props: {
|
||||||
|
instance: Function,
|
||||||
|
dict: Object,
|
||||||
|
params: Object,
|
||||||
|
id: String
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
info: {},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
...mapState(["user"]),
|
||||||
|
},
|
||||||
|
|
||||||
|
created() {
|
||||||
|
this.dict.load('activityStatus', 'partyReportSignupStatus').then(() => {
|
||||||
|
this.getInfo()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
getInfo() {
|
||||||
|
this.instance.post(`/app/apppartyreport/queryDetailById?id=${this.id}`).then((res) => {
|
||||||
|
if (res?.data) {
|
||||||
|
this.info = res.data;
|
||||||
|
if (this.info.birthday) {
|
||||||
|
this.info.birthday = this.info.birthday.substring(0, 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
cancel() {
|
||||||
|
this.$emit("goBack")
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
155
project/pingchang/apps/AppCommunityMember/List.vue
Normal file
155
project/pingchang/apps/AppCommunityMember/List.vue
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
<template>
|
||||||
|
<ai-list class="partyList">
|
||||||
|
<template slot="content">
|
||||||
|
<ai-search-bar>
|
||||||
|
<template #left>
|
||||||
|
<el-button size="small" type="primary" icon="iconfont iconAdd" @click="toAdd()">发起活动</el-button>
|
||||||
|
<ai-select v-model="search.actionStatus" placeholder="请选择活动状态" :selectList="dict.getDict('activityStatus')"
|
||||||
|
@change="getListInit"></ai-select>
|
||||||
|
<ai-select v-model="search.signupStatus" placeholder="请选择报名状态" :selectList="dict.getDict('partyReportSignupStatus')"
|
||||||
|
@change="getListInit"></ai-select>
|
||||||
|
</template>
|
||||||
|
<template slot="right">
|
||||||
|
<el-input
|
||||||
|
v-model="search.con"
|
||||||
|
size="small"
|
||||||
|
placeholder="请输入活动名称或发布地区"
|
||||||
|
clearable
|
||||||
|
@change="search.current=1,getList()"
|
||||||
|
suffix-icon="iconfont iconSearch"/>
|
||||||
|
</template>
|
||||||
|
</ai-search-bar>
|
||||||
|
<ai-table
|
||||||
|
:dict="dict"
|
||||||
|
:tableData="tableData"
|
||||||
|
:col-configs="colConfigs"
|
||||||
|
:total="total"
|
||||||
|
v-loading="loading"
|
||||||
|
style="margin-top: 6px;"
|
||||||
|
:current.sync="search.current"
|
||||||
|
:size.sync="search.size"
|
||||||
|
@getList="getList">
|
||||||
|
<el-table-column slot="activeTime" width="220px" label="活动时间" align="center">
|
||||||
|
<template slot-scope="{ row }">
|
||||||
|
<div class="table-options">{{row.beginTime.substring(0, 10)}}至{{row.endTime.substring(0, 10)}}</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column slot="options" width="220px" fixed="right" label="操作" align="center">
|
||||||
|
<template slot-scope="{ row }">
|
||||||
|
<div class="table-options">
|
||||||
|
<el-button type="text" @click="toDetail(row.id)">详情</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</ai-table>
|
||||||
|
</template>
|
||||||
|
</ai-list>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {mapState} from 'vuex'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'List',
|
||||||
|
|
||||||
|
props: {
|
||||||
|
instance: Function,
|
||||||
|
permissions: Function,
|
||||||
|
dict: Object,
|
||||||
|
selected: Object,
|
||||||
|
areaId: String
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
search: {
|
||||||
|
current: 1,
|
||||||
|
size: 10,
|
||||||
|
con: '',
|
||||||
|
actionStatus: '',
|
||||||
|
signupStatus: ''
|
||||||
|
},
|
||||||
|
orgName: '',
|
||||||
|
loading: false,
|
||||||
|
total: 0,
|
||||||
|
colConfigs: [
|
||||||
|
{prop: 'title', label: '活动名称', align: 'center'},
|
||||||
|
{prop: 'areaName', label: '发布地区', align: 'center'},
|
||||||
|
{slot: 'activeTime'},
|
||||||
|
{prop: 'total', label: '报名人数', align: 'center', width: 120},
|
||||||
|
{prop: 'signupStatus', label: '报名状态', align: 'center', dict: 'partyReportSignupStatus', width: 120},
|
||||||
|
{prop: 'actionStatus', label: '活动状态', align: 'center', dict: 'activityStatus', width: 120},
|
||||||
|
{slot: 'option'},
|
||||||
|
],
|
||||||
|
tableData: [],
|
||||||
|
ids: '',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState(['user']),
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.dict.load('activityStatus', 'partyReportSignupStatus').then(() => {
|
||||||
|
this.getList()
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getListInit() {
|
||||||
|
this.current = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
getList() {
|
||||||
|
this.instance.post(`/app/apppartyreport/list`, null, {
|
||||||
|
params: {...this.search, areaId: this.areaId}
|
||||||
|
}).then(res => {
|
||||||
|
this.loading = false
|
||||||
|
if (res?.data) {
|
||||||
|
this.tableData = res.data.records
|
||||||
|
this.total = res.data.total
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
toDetail(id) {
|
||||||
|
this.$emit("showDetail", id)
|
||||||
|
},
|
||||||
|
toAdd() {
|
||||||
|
this.$emit("showDetail")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.partyList {
|
||||||
|
.party-table__btns {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .audit-0 {
|
||||||
|
color: #FF8822 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .audit-1 {
|
||||||
|
color: #2EA222 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .ai-list__content--right {
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
|
margin-left: 1px;
|
||||||
|
box-shadow: none;
|
||||||
|
|
||||||
|
.ai-list__content--right-wrapper {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
::v-deep .is-current>.el-tree-node__content{
|
||||||
|
width: 100%!important;
|
||||||
|
padding-right: 16px!important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user