添加活动预约
This commit is contained in:
parent
88bc74be41
commit
2c84b6bc43
62
src/api/activity.js
Normal file
62
src/api/activity.js
Normal file
@ -0,0 +1,62 @@
|
||||
import request from '@/utils/request'
|
||||
/**
|
||||
* 新增EbActivity
|
||||
* @param pram
|
||||
*/
|
||||
export function activityCreateApi(data) {
|
||||
return request({
|
||||
url: 'admin/activity/save',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* ebactivity更新
|
||||
* @param pram
|
||||
*/
|
||||
export function ebactivityUpdateApi(data) {
|
||||
return request({
|
||||
url: `admin/activity/update?id=${data.id}`,
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* ebactivity详情
|
||||
* @param pram
|
||||
*/
|
||||
export function ebactivityDetailInfoApi(data) {
|
||||
return request({
|
||||
url: `admin/activity/info`,
|
||||
method: 'GET',
|
||||
params:data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* ebactivity删除
|
||||
* @param data
|
||||
*/
|
||||
export function activityDeleteApi(data) {
|
||||
return request({
|
||||
url: `/admin/activity/delete`,
|
||||
method: 'get',
|
||||
params:data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ebactivity列表
|
||||
* @param pram
|
||||
*/
|
||||
export function activityListApi(params) {
|
||||
return request({
|
||||
url: 'admin/activity/list',
|
||||
method: 'GET',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
@ -172,6 +172,20 @@ const marketingRouter = {
|
||||
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'activity',
|
||||
component: () => import('@/views/marketing/activity/activityList/index'),
|
||||
name: 'activity',
|
||||
meta: { title: '活动', icon: '' },
|
||||
children: [
|
||||
{
|
||||
path: 'activityList',
|
||||
component: () => import('@/views/marketing/activity/activityList/index'),
|
||||
name: 'activityList',
|
||||
meta: { title: '活动管理', icon: '' }
|
||||
},
|
||||
]
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
|
@ -33,14 +33,14 @@
|
||||
</router-link>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col v-bind="grid" class="ivu-mb" v-if="checkPermi(['admin:pass:login'])">
|
||||
<el-card :bordered="false">
|
||||
<router-link :to="{path:'/operation/systemSms/config'}">
|
||||
<i class="el-icon-message" style="color:#ffd666" />
|
||||
<p>短信配置</p>
|
||||
</router-link>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<!-- <el-col v-bind="grid" class="ivu-mb" v-if="checkPermi(['admin:pass:login'])">-->
|
||||
<!-- <el-card :bordered="false">-->
|
||||
<!-- <router-link :to="{path:'/operation/systemSms/config'}">-->
|
||||
<!-- <i class="el-icon-message" style="color:#ffd666" />-->
|
||||
<!-- <p>短信配置</p>-->
|
||||
<!-- </router-link>-->
|
||||
<!-- </el-card>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col v-bind="grid" class="ivu-mb" v-if="checkPermi(['admin:article:list'])">
|
||||
<el-card :bordered="false">
|
||||
<router-link :to="{path:'/content/articleManager'}">
|
||||
|
@ -0,0 +1,233 @@
|
||||
<template>
|
||||
<!-- 基于 Element UI 新增和修改弹窗 -->
|
||||
<el-dialog
|
||||
:title="!dataForm.id ? '添加' : '修改'"
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="visible">
|
||||
<!-- 新增和创建表单表单 -->
|
||||
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()" label-width="120px">
|
||||
|
||||
<el-form-item label="活动类型" prop="cid">
|
||||
<el-select v-model="dataForm.cid" placeholder="请选择活动类型">
|
||||
<el-option label="活动预约" value="0"></el-option>
|
||||
<el-option label="采茶预约" value="1"></el-option>
|
||||
<el-option label="其他预约" value="2"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="活动标题" prop="title">
|
||||
<el-input v-model="dataForm.title" placeholder="活动标题"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="活动图片" prop="imageInput">
|
||||
<div class="upLoadPicBox" @click="modalPicTap('1')" :disabled="isDisabled">
|
||||
<div v-if="dataForm.imageInput" class="pictrue"><img :src="dataForm.imageInput"></div>
|
||||
<div v-else class="upLoad">
|
||||
<i class="el-icon-camera cameraIconfont"/>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="活动人数" prop="activityNum">
|
||||
<el-input-number v-model="dataForm.activityNum" :min="1" :max="2000" label="活动人数"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="费用" prop="activityPrice">
|
||||
<el-input-number v-model="dataForm.activityPrice" :min="1" :max="2000" :precision="2" label="费用"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="活动地址" prop="activityAddr">
|
||||
<el-input v-model="dataForm.activityAddr" placeholder="活动地址"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="活动标签" prop="tag">
|
||||
<el-input v-model="dataForm.tag" placeholder="活动标签,英文逗号分隔"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="活动内容" prop="title">
|
||||
<el-input v-model="dataForm.content" type="textarea" maxlength="2000" :rows="3"
|
||||
placeholder="活动内容"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="开始时间" prop="beginTime">
|
||||
<el-date-picker
|
||||
v-model="dataForm.beginTime"
|
||||
type="datetime"
|
||||
placeholder="开始时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="截至时间" prop="endTime">
|
||||
<el-date-picker
|
||||
v-model="dataForm.endTime"
|
||||
type="datetime"
|
||||
placeholder="截至时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否热门" prop="isHot">
|
||||
|
||||
<el-switch v-model="dataForm.isHot" :active-value="1" :inactive-value="0"></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否轮播" prop="isBanner">
|
||||
<el-switch v-model="dataForm.isBanner" :active-value="1" :inactive-value="0"></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input-number v-model="dataForm.sort" :min="1" :max="99999" label="排序"></el-input-number>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="visible = false">取消</el-button>
|
||||
<el-button type="primary" @click="dataSubmit()">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as api from "@/api/activity";
|
||||
import {activityCreateApi, ebactivityDetailInfoApi, ebactivityUpdateApi} from "@/api/activity";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
isDisabled: this.$route.params.isDisabled === '1' ? true : false,
|
||||
visible: false,
|
||||
dataForm: {
|
||||
title: '',
|
||||
author: '',
|
||||
imageInput: '',
|
||||
synopsis: '',
|
||||
shareTitle: '',
|
||||
shareSynopsis: '',
|
||||
visit: '',
|
||||
sort: '',
|
||||
status: '',
|
||||
activityAddr: '',
|
||||
activityTime: '',
|
||||
activityNum: '',
|
||||
activityPrice: '',
|
||||
tags: '',
|
||||
hide: 0,
|
||||
isHot: 0,
|
||||
isBanner: 0,
|
||||
content: '',
|
||||
createTime: '',
|
||||
updateTime: '',
|
||||
beginTime: '',
|
||||
endTime: ''
|
||||
},
|
||||
dataRule: {
|
||||
title: [
|
||||
{required: true, message: '活动标题 为必填项', trigger: 'blur'}
|
||||
], cid: [
|
||||
{required: true, message: '活动类型请选择', trigger: 'blur'}
|
||||
],
|
||||
author: [
|
||||
{required: true, message: '活动作者 为必填项', trigger: 'blur'}
|
||||
],
|
||||
imageInput: [
|
||||
{required: true, message: '活动图片 为必填项', trigger: 'blur'}
|
||||
],
|
||||
synopsis: [
|
||||
{required: true, message: '活动简介 为必填项', trigger: 'blur'}
|
||||
],
|
||||
shareTitle: [
|
||||
{required: true, message: '活动分享标题 为必填项', trigger: 'blur'}
|
||||
],
|
||||
shareSynopsis: [
|
||||
{required: true, message: '活动分享简介 为必填项', trigger: 'blur'}
|
||||
],
|
||||
visit: [
|
||||
{required: true, message: '浏览次数 为必填项', trigger: 'blur'}
|
||||
],
|
||||
sort: [
|
||||
{required: true, message: '排序 为必填项', trigger: 'blur'}
|
||||
],
|
||||
status: [
|
||||
{required: true, message: '状态 0有效,1无效 为必填项', trigger: 'blur'}
|
||||
],
|
||||
activityAddr: [
|
||||
{required: true, message: '活动地址 为必填项', trigger: 'blur'}
|
||||
],
|
||||
activityTime: [
|
||||
{required: true, message: '活动时间 为必填项', trigger: 'blur'}
|
||||
],
|
||||
activityNum: [
|
||||
{required: true, message: '活动人数 为必填项', trigger: 'blur'}
|
||||
],
|
||||
activityPrice: [
|
||||
{required: true, message: '费用 为必填项', trigger: 'blur'}
|
||||
],
|
||||
tags: [
|
||||
{required: true, message: '标签 为必填项', trigger: 'blur'}
|
||||
],
|
||||
hide: [
|
||||
{required: true, message: '是否隐藏 0不隐藏,1隐藏 为必填项', trigger: 'blur'}
|
||||
],
|
||||
isHot: [
|
||||
{required: true, message: '是否热门(小程序) 0非,1是 为必填项', trigger: 'blur'}
|
||||
],
|
||||
isBanner: [
|
||||
{required: true, message: '是否轮播(小程序) 为必填项', trigger: 'blur'}
|
||||
],
|
||||
content: [
|
||||
{required: true, message: '活动内容 为必填项', trigger: 'blur'}
|
||||
],
|
||||
createTime: [
|
||||
{required: true, message: '创建时间 为必填项', trigger: 'blur'}
|
||||
],
|
||||
updateTime: [
|
||||
{required: true, message: '更新时间 为必填项', trigger: 'blur'}
|
||||
],
|
||||
beginTime: [
|
||||
{required: true, message: '开始时间 为必填项', trigger: 'blur'}
|
||||
],
|
||||
endTime: [
|
||||
{required: true, message: '结束时间 为必填项', trigger: 'blur'}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
modalPicTap(tit, num, i, status) {
|
||||
const _this = this;
|
||||
this.$modalUpload(function (img) {
|
||||
if (tit === '1' && !num) {
|
||||
_this.dataForm.imageInput = img[0].sattDir
|
||||
|
||||
}
|
||||
}, tit, 'content')
|
||||
},
|
||||
init(id) { // 初始化表单验证规则
|
||||
this.dataForm.id = id || 0
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs['dataForm'].resetFields()
|
||||
if (this.dataForm.id) {
|
||||
ebactivityDetailInfoApi({id: id}).then(res => {
|
||||
this.dataForm = res;
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 表单数据提交
|
||||
dataSubmit() {
|
||||
this.$refs['dataForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
if (this.dataForm.id){
|
||||
console.log(this.dataForm)
|
||||
ebactivityUpdateApi(this.dataForm).then(res => {
|
||||
this.visible = false
|
||||
this.$message.success("修改成功!");
|
||||
this.$emit('refreshDataList');
|
||||
})
|
||||
}else {
|
||||
delete this.dataForm.id
|
||||
activityCreateApi(this.dataForm).then(res => {
|
||||
this.visible = false
|
||||
this.$message.success("添加成功!");
|
||||
this.$emit('refreshDataList');
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
246
src/views/marketing/activity/activityList/index.vue
Normal file
246
src/views/marketing/activity/activityList/index.vue
Normal file
@ -0,0 +1,246 @@
|
||||
<template>
|
||||
<div class="divBox">
|
||||
<el-form :inline="true" :model="tableFrom" @keyup.enter.native="getDataList()">
|
||||
<el-form-item>
|
||||
<el-input v-model="tableFrom.keywords" placeholder="查询参数" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="getDataList()">查询</el-button>
|
||||
<el-button v-hasPermi="['admin:activity:save']" type="primary" @click="addOrUpdateHandle()">新增活动</el-button>
|
||||
|
||||
|
||||
<!-- <el-button v-hasPermi="['autogencode:ebactivity:delete']" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button>-->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table
|
||||
:data="dataList"
|
||||
v-loading="dataListLoading"
|
||||
|
||||
style="width: 100%;">
|
||||
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="id"-->
|
||||
<!-- header-align="center"-->
|
||||
<!-- align="center"-->
|
||||
<!-- label="活动编号">-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column
|
||||
prop="cid"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="活动类型">
|
||||
<template slot-scope="scope">
|
||||
<div class="demo-image__preview">
|
||||
<span v-if="scope.row.cid == 0">活动预约</span>
|
||||
<span v-else-if="scope.row.cid == 1">采茶预约</span>
|
||||
<span v-else-if="scope.row.cid == 2">其他预约</span>
|
||||
<span v-else>类型错误</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
width="150"
|
||||
prop="title"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="标题">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="imageInput"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="图片">
|
||||
<template slot-scope="scope">
|
||||
<div class="demo-image__preview">
|
||||
<el-image
|
||||
style="width: 36px; height: 36px"
|
||||
:src="scope.row.imageInput"
|
||||
:preview-src-list="[scope.row.imageInput]"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="activityAddr"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="地址">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="activityNum"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="活动人数">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="activityPrice"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="费用">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="content"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="活动内容">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
width="300"
|
||||
prop="beginTime"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="开始时间 - 结束时间">
|
||||
<template slot-scope="scope">
|
||||
{{scope.row.beginTime}} - {{scope.row.endTime}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="是否热门">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
@change='changeStatus($event,scope.row,"hot")'
|
||||
v-model="scope.row.isHot"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949">
|
||||
</el-switch>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="是否轮播">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
@change='changeStatus($event,scope.row,"banner")'
|
||||
v-model="scope.row.isBanner"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949">
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column
|
||||
prop="sort"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="排序">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
fixed="right"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="150"
|
||||
label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
|
||||
<el-button v-hasPermi="['admin:activity:update']" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">预约记录</el-button>
|
||||
<el-button v-hasPermi="['admin:activity:delete']" type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
@size-change="sizeChangeHandle"
|
||||
@current-change="currentChangeHandle"
|
||||
:current-page="tableFrom.page"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:page-size="tableFrom.limit"
|
||||
:total="totalPage"
|
||||
layout="total, sizes, prev, pager, next, jumper">
|
||||
</el-pagination>
|
||||
<!-- 表单弹窗, 新增数据和修改数据-->
|
||||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
import {activityDeleteApi, activityListApi, ebactivityUpdateApi} from "@/api/activity"
|
||||
import AddOrUpdate from "@/views/marketing/activity/activityList/activity-add-and-update"
|
||||
export default {
|
||||
data(){
|
||||
return{
|
||||
dataListLoading: false,
|
||||
dataList: [],
|
||||
tableFrom: {
|
||||
page: 1,
|
||||
limit: 20,
|
||||
name: '',
|
||||
keywords: '',
|
||||
},
|
||||
totalPage: 0,
|
||||
addOrUpdateVisible: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
AddOrUpdate
|
||||
},
|
||||
mounted () {
|
||||
this.getDataList()
|
||||
},
|
||||
methods:{
|
||||
changeStatus($event,val,type){
|
||||
if (type ==='banner'){
|
||||
val.isBanner = $event
|
||||
}
|
||||
if (type ==='hot'){
|
||||
val.isHot = $event
|
||||
}
|
||||
ebactivityUpdateApi(val).then(res => {
|
||||
this.$message.success("修改成功!");
|
||||
this.getDataList()
|
||||
})
|
||||
},
|
||||
addOrUpdateHandle (id) {
|
||||
this.addOrUpdateVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.addOrUpdate.init(id)
|
||||
})
|
||||
},
|
||||
deleteHandle(id){
|
||||
this.$confirm('确定删除当前数据?').then(() => {
|
||||
activityDeleteApi({id:id}).then(data => {
|
||||
this.$message.success('删除成功')
|
||||
this.getDataList()
|
||||
})
|
||||
})
|
||||
},
|
||||
sizeChangeHandle(val){
|
||||
this.tableFrom.limit = val
|
||||
this.getDataList ()
|
||||
},
|
||||
currentChangeHandle(page){
|
||||
this.tableFrom.page = page
|
||||
this.getDataList ()
|
||||
},
|
||||
// 多选
|
||||
selectionChangeHandle (val) {
|
||||
// this.dataListSelections = val
|
||||
},
|
||||
// 获取数据列表
|
||||
getDataList () {
|
||||
this.dataListLoading = true
|
||||
activityListApi(this.tableFrom).then(res => {
|
||||
// TODO 获取数据列表
|
||||
this.dataList = res.list
|
||||
this.totalPage = res.total
|
||||
this.tableFrom.limit = res.total
|
||||
this.tableFrom.page = res.page
|
||||
|
||||
this.dataListLoading = false
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
|
||||
</style>
|
@ -20,8 +20,8 @@
|
||||
<router-link :to=" { path:'/store/list/creatProduct' } ">
|
||||
<el-button size="small" type="primary" class="mr10" v-hasPermi="['admin:product:save']">添加商品</el-button>
|
||||
</router-link>
|
||||
<el-button size="small" type="success" class="mr10" @click="onCopy" v-hasPermi="['admin:product:save']">商品采集</el-button>
|
||||
<el-button size="small" icon="el-icon-upload2" @click="exports" v-hasPermi="['admin:export:excel:product']">导出</el-button>
|
||||
<!-- <el-button size="small" type="success" class="mr10" @click="onCopy" v-hasPermi="['admin:product:save']">商品采集</el-button>-->
|
||||
<!-- <el-button size="small" icon="el-icon-upload2" @click="exports" v-hasPermi="['admin:export:excel:product']">导出</el-button>-->
|
||||
</div>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
|
@ -25,6 +25,14 @@
|
||||
<el-radio :label="false">关闭</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="核销员">
|
||||
<el-radio-group v-model="ruleForm.isProsecutor">
|
||||
<el-radio :label="1">开启</el-radio>
|
||||
<el-radio :label="0">关闭</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="状态">
|
||||
<el-radio-group v-model="ruleForm.status">
|
||||
<el-radio :label="true">开启</el-radio>
|
||||
@ -89,7 +97,7 @@
|
||||
id : res.uid,
|
||||
mark: res.mark,
|
||||
// phone: res.phone,
|
||||
// realName: res.realName,
|
||||
isProsecutor: res.isProsecutor,
|
||||
status: res.status,
|
||||
addres: res.addres,
|
||||
groupId: Number(res.groupId) || '',
|
||||
|
Loading…
Reference in New Issue
Block a user