新增“赠送道具券”功能
This commit is contained in:
parent
b0a3669433
commit
9fdae9a338
106
src/api/props.js
106
src/api/props.js
@ -1,151 +1,159 @@
|
|||||||
|
import request from "@/utils/request";
|
||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
// 道具资源-分页列表
|
// 道具资源-分页列表
|
||||||
export function pagePropsSource(params) {
|
export function pagePropsSource(params) {
|
||||||
return request({
|
return request({
|
||||||
url: '/props/source/record/page',
|
url: "/props/source/record/page",
|
||||||
method: 'get',
|
method: "get",
|
||||||
params
|
params
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 道具资源-添加
|
// 道具资源-添加
|
||||||
export function addPropsSource(data) {
|
export function addPropsSource(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/props/source/record/add',
|
url: "/props/source/record/add",
|
||||||
method: 'post',
|
method: "post",
|
||||||
data
|
data
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 道具资源-修改
|
// 道具资源-修改
|
||||||
export function updatePropsSource(data) {
|
export function updatePropsSource(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/props/source/record/update',
|
url: "/props/source/record/update",
|
||||||
method: 'post',
|
method: "post",
|
||||||
data
|
data
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 道具资源-上下架
|
// 道具资源-上下架
|
||||||
export function offShelfPropsSource(id, offShelf) {
|
export function offShelfPropsSource(id, offShelf) {
|
||||||
return request({
|
return request({
|
||||||
url: `/props/source/record/off/shelf`,
|
url: `/props/source/record/off/shelf`,
|
||||||
method: 'get',
|
method: "get",
|
||||||
params: { id, offShelf }
|
params: { id, offShelf }
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取资源列表-平台+类型获取
|
// 获取资源列表-平台+类型获取
|
||||||
export function listSysOriginTypeList(sysOrigin, type) {
|
export function listSysOriginTypeList(sysOrigin, type) {
|
||||||
return request({
|
return request({
|
||||||
url: '/props/source/record/sys-origin/type/list',
|
url: "/props/source/record/sys-origin/type/list",
|
||||||
method: 'get',
|
method: "get",
|
||||||
params: { sysOrigin, type }
|
params: { sysOrigin, type }
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取资源列表-类型获取-排除家族资源-根据平台
|
// 获取资源列表-类型获取-排除家族资源-根据平台
|
||||||
export function listNotFamilyBySysOriginType(sysOrigin, type) {
|
export function listNotFamilyBySysOriginType(sysOrigin, type) {
|
||||||
return request({
|
return request({
|
||||||
url: '/props/source/record/sys-origin/type/list/exclude-family',
|
url: "/props/source/record/sys-origin/type/list/exclude-family",
|
||||||
method: 'get',
|
method: "get",
|
||||||
params: { sysOrigin, type }
|
params: { sysOrigin, type }
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 活动道具奖励配置-分页
|
// 活动道具奖励配置-分页
|
||||||
export function pagePropsActivityRewardGroup(params) {
|
export function pagePropsActivityRewardGroup(params) {
|
||||||
return request({
|
return request({
|
||||||
url: '/props/activity/reward/group/page',
|
url: "/props/activity/reward/group/page",
|
||||||
method: 'get',
|
method: "get",
|
||||||
params
|
params
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据资源组ID获得活动道具奖励配置
|
// 根据资源组ID获得活动道具奖励配置
|
||||||
export function getByGroupId(id) {
|
export function getByGroupId(id) {
|
||||||
return request({
|
return request({
|
||||||
url: '/props/activity/reward/group/' + id,
|
url: "/props/activity/reward/group/" + id,
|
||||||
method: 'get'
|
method: "get"
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 活动道具奖励配置-修改/添加
|
// 活动道具奖励配置-修改/添加
|
||||||
export function saveOrUpdatePropsActivityRewardGroup(data) {
|
export function saveOrUpdatePropsActivityRewardGroup(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/props/activity/reward/group/save-or-update',
|
url: "/props/activity/reward/group/save-or-update",
|
||||||
method: 'post',
|
method: "post",
|
||||||
data
|
data
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 活动道具奖励配置-上下架
|
// 活动道具奖励配置-上下架
|
||||||
export function offPropsActivityRewardGroup(id, offShelf) {
|
export function offPropsActivityRewardGroup(id, offShelf) {
|
||||||
return request({
|
return request({
|
||||||
url: `/props/activity/reward/group/off/shelf/${id}/${offShelf}`,
|
url: `/props/activity/reward/group/off/shelf/${id}/${offShelf}`,
|
||||||
method: 'get'
|
method: "get"
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 活动道具规则-分页
|
// 活动道具规则-分页
|
||||||
export function pagePropsActivityRuleConfig(params) {
|
export function pagePropsActivityRuleConfig(params) {
|
||||||
return request({
|
return request({
|
||||||
url: '/props/activity/rule/config/page',
|
url: "/props/activity/rule/config/page",
|
||||||
method: 'get',
|
method: "get",
|
||||||
params
|
params
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 活动道具规则-添加或修改
|
// 活动道具规则-添加或修改
|
||||||
export function savePropsActivityRuleConfig(data) {
|
export function savePropsActivityRuleConfig(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/props/activity/rule/config/save-or-update',
|
url: "/props/activity/rule/config/save-or-update",
|
||||||
method: 'post',
|
method: "post",
|
||||||
data
|
data
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 活动道具规则-删除
|
// 活动道具规则-删除
|
||||||
export function delPropsActivityRuleConfig(id) {
|
export function delPropsActivityRuleConfig(id) {
|
||||||
return request({
|
return request({
|
||||||
url: `/props/activity/rule/config/del/${id}`,
|
url: `/props/activity/rule/config/del/${id}`,
|
||||||
method: 'get'
|
method: "get"
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 上架中的活动道具组
|
// 上架中的活动道具组
|
||||||
export function getGroupActivityList() {
|
export function getGroupActivityList() {
|
||||||
return request({
|
return request({
|
||||||
url: `/props/activity/reward/group/get/activity/list`,
|
url: `/props/activity/reward/group/get/activity/list`,
|
||||||
method: 'get'
|
method: "get"
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 赠送道具给用户
|
// 赠送道具给用户
|
||||||
export function sendPropsGiveUser(data) {
|
export function sendPropsGiveUser(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/props/give/send',
|
url: "/props/give/send",
|
||||||
method: 'post',
|
method: "post",
|
||||||
data
|
data
|
||||||
})
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 赠送道具券给用户
|
||||||
|
export function sendPropsTicketGiveUser(data) {
|
||||||
|
return request({
|
||||||
|
url: "/props/give/grant-coupon",
|
||||||
|
method: "post",
|
||||||
|
data
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 道具商店-分页
|
// 道具商店-分页
|
||||||
export function pagePropsStore(params) {
|
export function pagePropsStore(params) {
|
||||||
return request({
|
return request({
|
||||||
url: '/props/store/page',
|
url: "/props/store/page",
|
||||||
method: 'get',
|
method: "get",
|
||||||
params
|
params
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 道具商店-添加或修改
|
// 道具商店-添加或修改
|
||||||
export function addOrUpdatePropsStore(data) {
|
export function addOrUpdatePropsStore(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/props/store/add-or-update',
|
url: "/props/store/add-or-update",
|
||||||
method: 'post',
|
method: "post",
|
||||||
data
|
data
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -733,6 +733,13 @@ const propsTypes = [
|
|||||||
{ value: "CUSTOMIZE", name: "自定义(只读)" }
|
{ value: "CUSTOMIZE", name: "自定义(只读)" }
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// 道具类型
|
||||||
|
const propsTicket = [
|
||||||
|
{ value: "AVATAR_FRAME", name: "头像框" },
|
||||||
|
{ value: "RIDE", name: "座驾" },
|
||||||
|
{ value: "NOBLE_VIP", name: "贵族" }
|
||||||
|
];
|
||||||
|
|
||||||
// 道具商品类型
|
// 道具商品类型
|
||||||
const propsCommodityTypes = [
|
const propsCommodityTypes = [
|
||||||
{ value: "AVATAR_FRAME", name: "头像框" },
|
{ value: "AVATAR_FRAME", name: "头像框" },
|
||||||
|
|||||||
@ -1,31 +1,35 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
|
<!-- 赠送道具 -->
|
||||||
<el-col v-if="buttonPermissions.includes('send:props')">
|
<el-col v-if="buttonPermissions.includes('send:props')">
|
||||||
<send-props />
|
<send-props />
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<!-- 赠送徽章 -->
|
||||||
<el-col v-if="buttonPermissions.includes('send:props:badge')">
|
<el-col v-if="buttonPermissions.includes('send:props:badge')">
|
||||||
<send-badge />
|
<send-badge />
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<!-- 赠送道具券 -->
|
||||||
|
<el-col v-if="buttonPermissions.includes('send:props:coupon')">
|
||||||
|
<send-ticket />
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
import SendProps from "./send-props";
|
||||||
import SendProps from './send-props'
|
import SendBadge from "./send-badge";
|
||||||
import SendBadge from './send-badge'
|
import SendTicket from "./send-ticket";
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from "vuex";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { SendProps, SendBadge },
|
components: { SendProps, SendBadge, SendTicket },
|
||||||
data() {
|
data() {
|
||||||
return {}
|
return {};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(['buttonPermissions'])
|
...mapGetters(["buttonPermissions"])
|
||||||
},
|
},
|
||||||
created() {
|
created() {}
|
||||||
}
|
};
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
285
src/views/props/props-send-tool/send-ticket.vue
Normal file
285
src/views/props/props-send-tool/send-ticket.vue
Normal file
@ -0,0 +1,285 @@
|
|||||||
|
<template>
|
||||||
|
<div class="send-props">
|
||||||
|
<el-alert
|
||||||
|
title="赠送道具券"
|
||||||
|
style="margin-bottom: 10px;"
|
||||||
|
:closable="false"
|
||||||
|
/>
|
||||||
|
<el-form
|
||||||
|
ref="form"
|
||||||
|
:model="propsGiveForm"
|
||||||
|
:rules="formRules"
|
||||||
|
label-width="85px"
|
||||||
|
>
|
||||||
|
<el-form-item label="接收人" prop="receiverAccounts">
|
||||||
|
<el-input
|
||||||
|
v-model="propsGiveForm.receiverAccounts"
|
||||||
|
placeholder="请输入用户 【短账号】 ,多个短账号用英文','分割;(一批最多15个)短账号"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="选择系统" prop="sysOrigin">
|
||||||
|
<el-form-item>
|
||||||
|
<el-select
|
||||||
|
v-model="propsGiveForm.sysOrigin"
|
||||||
|
placeholder="系统"
|
||||||
|
style="width:100%;"
|
||||||
|
class="filter-item"
|
||||||
|
@change="changeSysOrigin"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in permissionsSysOriginPlatforms"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="选择类型" prop="secondaryType">
|
||||||
|
<el-select
|
||||||
|
v-model="propsGiveForm.secondaryType"
|
||||||
|
placeholder="类型"
|
||||||
|
style="width:100%;"
|
||||||
|
class="filter-item"
|
||||||
|
@change="changePropsType"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in propsTicket"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="选择资源" prop="propId">
|
||||||
|
<div v-if="selectProps.cover" class="payer-source">
|
||||||
|
<div class="paler-icon">
|
||||||
|
<svgaplayer type="popover" :url="selectProps.sourceUrl || ''" />
|
||||||
|
</div>
|
||||||
|
<img :src="selectProps.cover" alt="cover" />
|
||||||
|
</div>
|
||||||
|
<props-source-select-popover
|
||||||
|
v-loading="
|
||||||
|
propsTypeMap[propsGiveForm.secondaryType]
|
||||||
|
? propsTypeMap[propsGiveForm.secondaryType].loading
|
||||||
|
: false
|
||||||
|
"
|
||||||
|
:data="
|
||||||
|
propsTypeMap[propsGiveForm.secondaryType]
|
||||||
|
? propsTypeMap[propsGiveForm.secondaryType].list
|
||||||
|
: []
|
||||||
|
"
|
||||||
|
:property="selectPopoverProperty"
|
||||||
|
:visible="visiblePopover"
|
||||||
|
:show-filter="true"
|
||||||
|
@select="selectPropsSourcePopover"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
v-if="propsGiveForm.secondaryType == 'NOBLE_VIP'"
|
||||||
|
label="贵族来源"
|
||||||
|
prop="vipOrigin"
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
v-model="propsGiveForm.vipOrigin"
|
||||||
|
placeholder="贵族来源"
|
||||||
|
style="width:100%;"
|
||||||
|
class="filter-item"
|
||||||
|
>
|
||||||
|
<el-option label="系统赠送" value="SYSTEM_GIVE" />
|
||||||
|
<el-option label="购买或朋友赠送" value="BUY_OR_GIVE" />
|
||||||
|
<el-option label="活动奖励" value="ACTIVITY_AWARD" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="有效天数" prop="validDays">
|
||||||
|
<el-input
|
||||||
|
v-model="propsGiveForm.validDays"
|
||||||
|
type="number"
|
||||||
|
placeholder="输入正数为赠送,负数为回收"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" :loading="submitLoading" @click="onGiveSubmit"
|
||||||
|
>发送</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
listNotFamilyBySysOriginType,
|
||||||
|
sendPropsTicketGiveUser
|
||||||
|
} from "@/api/props";
|
||||||
|
import { propsTicket } from "@/constant/type";
|
||||||
|
import PropsSourceSelectPopover from "@/components/data/PropsSourceSelectPopover";
|
||||||
|
import { mapGetters } from "vuex";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "SendProps",
|
||||||
|
components: { PropsSourceSelectPopover },
|
||||||
|
data() {
|
||||||
|
const commonRules = [
|
||||||
|
{ required: true, message: "必填字段不可为空", trigger: "blur" }
|
||||||
|
];
|
||||||
|
const propsTypeMap = {};
|
||||||
|
propsTicket.forEach(item => {
|
||||||
|
propsTypeMap[item.value] = {
|
||||||
|
list: [],
|
||||||
|
loading: false,
|
||||||
|
loadData: false
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return {
|
||||||
|
propsTicket,
|
||||||
|
visiblePopover: false,
|
||||||
|
propsTypeMap,
|
||||||
|
selectPopoverProperty: {
|
||||||
|
label: "name",
|
||||||
|
cover: "cover",
|
||||||
|
svgaUrl: "sourceUrl",
|
||||||
|
value: "id"
|
||||||
|
},
|
||||||
|
selectProps: {},
|
||||||
|
submitLoading: false,
|
||||||
|
formRules: {
|
||||||
|
receiverAccounts: commonRules,
|
||||||
|
validDays: [
|
||||||
|
{ required: true, message: "有效天数不能为空", trigger: "blur" },
|
||||||
|
{
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
if (value === "" || isNaN(value)) {
|
||||||
|
callback(new Error("请输入有效数字"));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
propId: commonRules,
|
||||||
|
secondaryType: commonRules,
|
||||||
|
sysOrigin: commonRules
|
||||||
|
},
|
||||||
|
propsGiveForm: {
|
||||||
|
sysOrigin: "",
|
||||||
|
receiverAccounts: "",
|
||||||
|
userIds: [],
|
||||||
|
type: "PROPS",
|
||||||
|
propId: "",
|
||||||
|
validDays: "",
|
||||||
|
secondaryType: "",
|
||||||
|
vipOrigin: null
|
||||||
|
},
|
||||||
|
userInfo: {}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
...mapGetters(["permissionsSysOriginPlatforms"])
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.propsTicket = this.propsTicket.filter(
|
||||||
|
item => !(item.value === "CUSTOMIZE" || item.value === "FRAGMENTS")
|
||||||
|
);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
changeSysOrigin(val) {
|
||||||
|
const that = this;
|
||||||
|
that.propsGiveForm.secondaryType = "";
|
||||||
|
that.selectProps = {};
|
||||||
|
},
|
||||||
|
changePropsType(val) {
|
||||||
|
const that = this;
|
||||||
|
that.propsGiveForm.vipOrigin = null;
|
||||||
|
if (!that.propsGiveForm.sysOrigin) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
that.selectProps = {};
|
||||||
|
that.propsGiveForm.propId = "";
|
||||||
|
const propsTypeItem = that.propsTypeMap[val];
|
||||||
|
propsTypeItem.list = [];
|
||||||
|
// 区分系统,如果要做缓存需要改造支持多系统资源
|
||||||
|
// if (propsTypeItem && propsTypeItem.loadData === true) {
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
propsTypeItem.loading = true;
|
||||||
|
listNotFamilyBySysOriginType(that.propsGiveForm.sysOrigin, val)
|
||||||
|
.then(res => {
|
||||||
|
propsTypeItem.loading = false;
|
||||||
|
propsTypeItem.loadData = true;
|
||||||
|
propsTypeItem.list = res.body || [];
|
||||||
|
})
|
||||||
|
.catch(er => {
|
||||||
|
propsTypeItem.loading = false;
|
||||||
|
console.error(er);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
selectPropsSourcePopover(item) {
|
||||||
|
this.selectProps = item;
|
||||||
|
this.propsGiveForm.propId = item.id;
|
||||||
|
},
|
||||||
|
onGiveSubmit() {
|
||||||
|
const that = this;
|
||||||
|
that.$refs.form.validate(valid => {
|
||||||
|
if (!valid) {
|
||||||
|
console.error("error submit!!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将 receiverAccounts 转换为数组并赋值给 userIds
|
||||||
|
const formToSend = { ...that.propsGiveForm };
|
||||||
|
if (formToSend.receiverAccounts) {
|
||||||
|
formToSend.userIds = formToSend.receiverAccounts
|
||||||
|
.split(",")
|
||||||
|
.map(id => id.trim())
|
||||||
|
.filter(id => id);
|
||||||
|
} else {
|
||||||
|
formToSend.userIds = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
that.submitLoading = true;
|
||||||
|
sendPropsTicketGiveUser(formToSend)
|
||||||
|
.then(res => {
|
||||||
|
if (res.errorCode === 0) {
|
||||||
|
if (res.body) {
|
||||||
|
that.$opsMessage.fail(
|
||||||
|
"无效短账号: " +
|
||||||
|
res.body +
|
||||||
|
" 请处理后再将当前批次所有短账号重新发送."
|
||||||
|
);
|
||||||
|
that.submitLoading = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
that.$opsMessage.success();
|
||||||
|
that.selectProps = {};
|
||||||
|
that.propsGiveForm.propId = "";
|
||||||
|
that.submitLoading = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
that.$opsMessage.fail(res.errorMsg);
|
||||||
|
that.submitLoading = false;
|
||||||
|
})
|
||||||
|
.catch(er => {
|
||||||
|
that.submitLoading = false;
|
||||||
|
console.error(er);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.payer-source {
|
||||||
|
position: relative;
|
||||||
|
.paler-icon {
|
||||||
|
position: absolute;
|
||||||
|
left: 0px;
|
||||||
|
top: -10px;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Loading…
x
Reference in New Issue
Block a user