Commit 7086dc78 authored by youjie's avatar youjie

no message

parent 3a231800
......@@ -143,10 +143,20 @@ export default defineComponent({
font-size: 19px
.fz20
font-size: 20px
.fz22
font-size: 22px
.fz26
font-size: 26px
.fz28
font-size: 28px
.fz32
font-size: 32px
.fz36
font-size: 36px
.fz38
font-size: 38px
.fz40
font-size: 40px
.mycard
box-shadow: 0 0.5rem 1.5rem 0.5rem rgba(0, 0, 0, 0.075) !important
border-radius: 0.475rem !important
......
import { HttpResponse } from '../@types'
import request from './request'
import requestJava from './requestJava'
class passbookService {
// 获取幸福存折详情
static async GetCustomerBigRedEnvelope(CustomerId:Number):Promise<HttpResponse>{
return request('customer_post_GetCustomerBigRedEnvelope',{CustomerId})
}
static async getDepositBankbookDetail(CustomerId:Number):Promise<HttpResponse>{
return requestJava('/api/b2b/user/getDepositBankbookDetail',{CustomerId})
}
static async getBankbookUseDetail(queryTime:string):Promise<HttpResponse>{
return requestJava('/api/b2b/user/getBankbookUseDetail',{queryTime})
}
// static async getDepositBankbookDetail(param:any):Promise<HttpResponse>{
// return requestJava('/api/b2b/user/getDepositBankbookDetail',param)
// }
}
export default passbookService
......@@ -9,24 +9,26 @@
height="59px"/>
</div>
<div class="row justify-between passbookHead-form">
<div class="column">
<div class="column col">
<p class="text-white" style="opacity: .5;">可用余额</p>
<div class="row items-end text-white">
<div class="fz16">
<div class="row items-end text-white" style="position: relative;">
<div class="fz22">
¥
</div>
<div class="fz26 q-pl-sm">
<span style="position: relative; top: 5px;">1298.25</span>
<div class="fz40 q-pl-md">
<span style="position: relative; top: 11px;">{{Client_Balance}}</span>
</div>
<div class="fz12 q-pl-lg cursor-pointer">
<div class="fz12 q-pl-lg cursor-pointer" style="position: absolute;right: 0;bottom: 0;">
使用规则
</div>
</div>
</div>
<div class="row items-center">
<div class="q-pa-xs q-px-sm bg-amber-3 rounded-borders text-orange-14 passbookHeadButtom">
<q-icon class="q-pr-sm" name="list"></q-icon>
<span class="fz14">查看明细</span>
<div class="row items-center justify-end col-7">
<div class="q-pa-xs q-px-sm bg-amber-3 rounded-borders text-orange-14 passbookHeadButtom cursor-pointer" @click="seeDetails">
<q-img src="../../assets/images/personal/ck.png"
width="12px"
height="12px" style="position: relative; top: 0px;"/>
<span class="fz14 q-pl-xs">查看明细</span>
</div>
</div>
</div>
......@@ -34,24 +36,29 @@
</template>
<script lang="ts">
import { useRouter } from 'vue-router';
import { defineComponent, ref, reactive, toRefs, provide } from 'vue'
import { defineComponent, ref, reactive, toRefs, inject } from 'vue'
import { useI18n } from 'vue-i18n'
import { DirtionmaryHelper } from '../../config/dictionary'
export default defineComponent({
name: 'user-info',
props: {
user: {
type: Object,
dataNum: {
type: Number,
require: true
}
},
setup(props) {
setup(props,context) {
const $router = useRouter();
const data=reactive({
isUseDetails: false,
Client_Balance: 0
})
data.Client_Balance = props.dataNum
data.isUseDetails = inject(DirtionmaryHelper.PASSBOOK_DETAILS)
const methods = {
seeDetails(){
data.isUseDetails = true
}
}
return {...toRefs(data),...methods}
}
......@@ -72,7 +79,7 @@
padding: 0 57px;
}
.passbookHead-form{
padding: 36px 0 37px 196px;
padding: 36px 0 37px 246px;
}
.passbookHeadButtom{
border: 2px solid #F6CA58;
......
<template>
<div class="bg-white q-mt-lg">
<rebatehead :title="title"/>
<rebatehead :title="titleHead"/>
<q-separator color="grey-3" class="q-my-sm" />
<div class="row justify-between rebate-form">
<div class="column rebate-left fz14">
<div class="column col rebate-left fz14">
<div class="row items-center left-text text-grey-9">
<div>订单信息</div><div>系列</div>
<div>人数</div><div>返佣</div>
</div>
<q-separator color="grey-3" />
<div class="column">
<div class="column" v-if="dataList.length>0">
<div
v-for="(item,index) in 3"
v-for="(item,index) in dataList"
class="row items-center left-text text-dark">
<div>订单信息</div>
<div>订单信息</div>
<div>订单信息</div>
<div><span class="text-red">+¥4.55</span></div>
<div>{{item.id}}</div>
<div>{{item.teamSeries}}</div>
<div>{{item.peopleNum}}</div>
<div><span :class="{'text-red':item.money>0}"><template v-if="item.money>0">+</template> ¥{{item.money}}</span></div>
</div>
<div class="text-center q-mt-xl q-pb-lg">
</div>
<div class="text-center q-pb-lg"
v-else>
<svg-icon :size="50" color="nav" icon="General/Clipboard.svg"></svg-icon>
<div class="q-mt-md f12 text-grey-6">{{ $t('noneData') }}</div>
</div>
</div>
<div class="col-4 rebate-right column q-px-lg">
<p class="fz14 text-grey-7">线路数据占比</p>
<div class="q-pl-lg">
<div ref="main" style="width: 100%;height: 200px;"></div>
</div>
<div class="rebate-right">
111
</div>
</div>
</div>
</template>
<script lang="ts">
import { ref, toRefs, onMounted } from "vue";
import { useRouter } from 'vue-router';
import { defineComponent, ref, reactive, toRefs, provide } from 'vue'
import { useI18n } from 'vue-i18n'
import * as echarts from "echarts"
import { ApiResult } from '../../@types/enumHelper'
import message from '../../utils/message'
import Store from '../../store'
import rebatehead from '../../components/passbook/rebate/rebatehead.vue'
import passbookService from '../../api/passbook'
export default defineComponent({
name: 'user-info',
components: { rebatehead },
......@@ -47,9 +57,11 @@
},
setup(props) {
const $router = useRouter();
const main = ref();
const data=reactive({
title: '人头返佣',
DetailList: [],
titleHead: '人头返佣',
title: '线路数据占比',
dataList: [],
cols: [
{ name: 'Room', label: '订单信息', field: (row: any) => row.Date, align: 'left' },
{ name: '', label: '系列', field: (row: any) => row.Date, align: 'left' },
......@@ -59,18 +71,137 @@
})
const methods = {
getList(){
let CustomerId
if (Store.state && Store.state.user?.userDetail) {
CustomerId = Store.state.user?.userDetail?.customerId
}
passbookService.getDepositBankbookDetail(CustomerId)
.then(r => {
if (r.data.resultCode == ApiResult.SUCCESS) {
data.dataList= r.data.data.pageData;
} else {
message.errorMsg(r.data.message)
}
})
.catch(r => {
message.errorMsg(r.message)
})
},
getinit() {
// 基于准备好的dom,初始化echarts实例
const myChart = echarts.init(main.value);
const schoolData = [
{
name:'张三',
value:4253
},
{
name:'李四',
value:5691
},
{
name:'王五',
value:4536
},
{
name:'赵六',
value:4369
},
{
name:'周七',
value:5124
}]
// 指定图表的配置项和数据
const option = {
title: {
// text: '线路数据占比',
// left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{b} : {c} ({d}%)'
},
legend: {
// orient: 'vertical',
// left: 'left',
// data: [],
show:false,
top: '5%',
left: 'center'
},
series: []
};
// 赋值
option.series = [
{
name: this.title,
type: 'pie',
selectedMode: 'single',
radius: ['55%', '80%'],
center: ['50%', '45%'],
avoidLabelOverlap: false,
label: {
normal: {
position: 'outside',
formatter: '{b}\n{c}GB ({d}%)'
}
},
itemStyle: {
borderColor: '#fff',
borderWidth: 5,
},
clockwise: false,
// data: res.data.map((v) => {
// return { name: v.name, value: v.value }
// })
data: schoolData,
}
]
option.graphic = { // 添加原生图形元素组件
elements: [
{
type: 'text',
left: 'center',
top: '42%',
left: '50%',
style: {
text: '80GB',
fontSize: 18,
textAlign: 'center',
width: 30,
height: 25,
fill: '#3BA5D9'
}
}]
}
// 赋值
// option.legend = [
// {
// data: schoolData.map((a) => a.name)
// }
// ]
// 赋值
option.legend.data = schoolData.map((a) => a.name)
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
}
}
return {...toRefs(data),...methods}
onMounted(() => {
methods.getList()
methods.getinit();
});
return {...toRefs(data),main,...methods}
}
})
</script>
<style>
<style scoped>
.rebate-form{
padding: 15px 30px 0 30px;
}
.rebate-left {
width: 70%;
/* width: 70%; */
}
.left-text div{
display: inline-block;
......@@ -80,5 +211,8 @@
.left-text:nth-child(2n){
background: #E0E0E0;
}
.rebate-right{
/* width: 28%; */
}
</style>
\ No newline at end of file
<template>
<div class="row justify-between q-px-lg q-py-sm">
<div class="row justify-between q-px-lg q-py-sm q-pt-md">
<span class="fz16 text-weight-bold dark">{{title}}</span>
<span>
<span class="fz12 cursor-pointer">规则说明</span>
<q-popup-proxy class="no-shadow" style="box-shadow: 0 0 50px #ddd !important" :offset="[0, 10]"
<span @click="title=='使用明细'?Return():''">
<span class="fz12 cursor-pointer text-grey-6">
{{title!='使用明细'?'':'返回'}}
<q-icon v-if="title=='使用明细'" name="chevron_right" size="22px" style="position: relative;top: -1px;"/></span>
<!-- <q-popup-proxy v-if="title!='使用明细'" class="no-shadow" style="box-shadow: 0 0 50px #ddd !important" :offset="[0, 10]"
:model-value="canHide">
<div class="q-px-md q-py-sm" style="opacity: 0.5;">
<div>121212195959</div>
......@@ -11,14 +13,15 @@
<div>1212121</div>
</div>
</q-popup-proxy>
</q-popup-proxy> -->
</span>
</div>
</template>
<script lang="ts">
import { useRouter } from 'vue-router';
import { defineComponent, ref, reactive, toRefs, provide } from 'vue'
import { defineComponent, ref, reactive, toRefs, inject } from 'vue'
import { useI18n } from 'vue-i18n'
import { DirtionmaryHelper } from '../../../config/dictionary'
export default defineComponent({
name: 'user-info',
components: { },
......@@ -31,11 +34,15 @@
setup(props) {
const $router = useRouter();
const data=reactive({
isReturn: null,
title: props.title,
canHide: false
})
data.isReturn = inject(DirtionmaryHelper.PASSBOOK_DETAILS)
const methods = {
Return(){
data.isReturn=false
}
}
return {...toRefs(data),...methods}
......
<template>
<div class="bg-white q-mt-lg">
<rebatehead :title="titleHead"/>
<q-separator color="grey-3" class="q-my-sm" />
<div class="row justify-between redEnvelope-form">
<div class="column col redEnvelope-left fz14">
<p class="fz14 text-grey-7">近半年收益</p>
<div ref="main" style="width: 100%;height: 280px;position: relative;left: -30px;"></div>
</div>
<div class="row justify-center">
<q-separator vertical inset style="height: 50%;position: relative;top: 10%;"/>
</div>
<div class="col-4 redEnvelope-right column q-px-lg">
<p class="fz14 text-grey-7 q-pb-xs">本年累计交易总额</p>
<div class="q-pb-lg row items-end">
<span class="fz12">¥</span> <div class="fz32 q-pl-sm"><span style="position: relative;top: 9px;">{{datainfo.Amount}}</span></div>
</div>
<q-separator color="grey-3"/>
<p class="fz14 text-grey-7 q-pt-lg">累计收益</p>
<div class="q-pb-lg row items-end">
<span class="fz12">¥</span> <div class="fz32 q-pl-sm"><span style="position: relative;top: 9px;">{{datainfo.TotalMoney}}</span></div>
</div>
<q-separator color="grey-3"/>
</div>
</div>
<div class="q-px-lg q-pb-lg"><span>当前交易额:</span><span class="q-pl-lg">¥</span><span class="fz32 q-pl-sm">{{datainfo.Amount.toFixed(2)}}</span> </div>
<div class="q-px-lg q-pt-sm">
<div class="row items-center no-wrap q-pb-lg" v-for="(item,index) in datainfo.RatioList" :key="index" >
<q-linear-progress class="col q-mr-lg" stripe rounded size="20px" :value="item.width/100" color="item.percent>1?'orange-9':item.percent<1?'red-5':'cyan-4'"/>
<div class="col-4 row items-center q-ml-lg">
<q-img v-if="item.percent>1" src="../../assets/images/personal/gou.png"
width="20px"
height="20px" style="position: relative;"/>
<q-img v-else src="../../assets/images/personal/x1.png"
width="26px"
height="26px" style="position: relative;"/>
<div class="column q-pl-md">
<span class="fz16 text-weight-bold"
:class="[item.percent>1?'text-light-green-6':item.percent<1?'text-red-5':'text-dark']">
<template v-if="item.percent>1">已激活,预计收益 ¥{{(item.Money*item.Ratio)/1000}}</template>
<template v-if="item.percent<1">还差¥{{item.Money-datainfo.Amount}},预计收益 ¥{{(item.Money*item.Ratio)/1000}}</template>
</span>
<span class="fz12 text-grey-6 q-pt-xs">月交易额已达 ¥ {{item.Money}} 返{{item.Ratio}}‰</span>
</div>
</div>
</div>
<!-- <div class="row items-center no-wrap q-py-lg">
<q-linear-progress class="col q-mr-lg" stripe rounded size="20px" :value="progress2" color="red-5"/>
<div class="col-4 row items-center q-ml-lg">
<q-img src="../../assets/images/personal/gou.png"
width="20px"
height="20px" style="position: relative;"/>
<div class="column q-pl-md">
<span class="fz16 text-red-5 text-weight-bold">还差 ¥360,预计收益 ¥600</span>
<span class="fz12 text-grey-6 q-pt-xs">月交易额已达 ¥ 1000 可返5%</span>
</div>
</div>
</div>
<div class="row items-center no-wrap q-py-lg">
<q-linear-progress class="col q-mr-lg" stripe rounded size="20px" :value="progress2" color="cyan-4"/>
<div class="col-4 row items-center q-ml-lg">
<q-img src="../../assets/images/personal/gou.png"
width="20px"
height="20px" style="position: relative;"/>
<div class="column q-pl-md">
<span class="fz16 text-dark text-weight-bold">期待你的爆发</span>
<span class="fz12 text-grey-6 q-pt-xs"> 月交易额达 ¥300,000.00 可返 6%</span>
</div>
</div>
</div> -->
</div>
</div>
</template>
<script lang="ts">
import { ref, toRefs, onMounted } from "vue";
import { useRouter } from 'vue-router';
import { defineComponent, ref, reactive, toRefs } from 'vue'
import { useI18n } from 'vue-i18n'
import * as echarts from "echarts"
import rebatehead from '../../components/passbook/rebate/rebatehead.vue'
export default defineComponent({
name: 'user-info',
components: { rebatehead },
props: {
Obj: {
type: Object,
require: true
},
info: {
type: Object,
require: true
}
},
setup(props) {
const $router = useRouter();
const main = ref();
const data=reactive({
titleHead: '大红包',
title: '线路数据占比',
DetailList: [],
progress2: 0.5,
xMonth:[],
yMoney1:[],
yMoney2:[],
datainfo: null as any
})
if(props.Obj&&props.info){
data.xMonth = props.Obj.xMonth
data.yMoney1 = props.Obj.yMoney1
data.yMoney2 = props.Obj.yMoney2
data.datainfo = props.info
}
const methods = {
getinit() {
// 基于准备好的dom,初始化echarts实例
const myChart = echarts.init(main.value);
const option = {
title: {
left: "left",
textStyle: {
fontWeight: "bold",
fontSize: 14,
color: "#333333",
height: "30px"
},
padding: [
20, // 上
20, // 右
20, // 下
20 // 左
]
},
xAxis: {
type: 'category',
boundaryGap: false,
axisLine: {
show: false,
lineStyle: {
width: 30
}
},
axisTick: false,
data: data.xMonth,
},
yAxis: {
type: 'value',
boundaryGap: [0, '30%'],
min: '10',
axisTick: true,
splitLine: {
show: true,
lineStyle: {
color: "#fff"
}
}
},
visualMap: {
type: 'piecewise',
show: false,
dimension: 0,
seriesIndex: 0,
pieces: [
{
gt: 1,
lt: 3,
color: 'rgba(0, 0, 180, 0.4)'
},
{
gt: 5,
lt: 7,
color: 'rgba(0, 0, 180, 0.4)'
}
]
},
series:[]
};
option.series = [
{
type: "line",
smooth: 2,
symbol: 'none',
data: data.yMoney1,
lineStyle: {
width: 3,
color: "#36C7D9"
},
itemStyle: {
borderWidth: 5,
color: "#FFFFFF"
},
areaStyle: {
color: "#A4E6EE"
}
},
{
type: "line",
smooth: 2,
data: data.yMoney2,
lineStyle: {
width: 3,
color: "#ED6A6B",
type: 'dashed'
},
itemStyle: {
borderWidth: 5,
},
areaStyle: {
color: "#FAD2D2"
}
}
]
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
}
}
onMounted(() => {
methods.getinit();
});
return {...toRefs(data),main,...methods}
}
})
</script>
<style scoped>
.redEnvelope-form{
padding: 15px 30px 0 30px;
}
.redEnvelope-left {
/* width: 70%; */
}
.redEnvelope-right{
/* width: 28%; */
}
</style>
\ No newline at end of file
<template>
<div class="bg-white q-mt-lg">
<rebatehead :title="titleHead"/>
<q-separator color="grey-3" class="q-my-sm" />
<div class="q-px-lg q-pt-md">
<q-field clearable v-model="queryTime"
label="时间选择" standout class="col-2" style="width: 190px" dense>
<div class="self-center full-width no-outline" tabindex="0">{{ queryTime }}</div>
<q-separator color="grey-3" class="q-my-sm" />
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy">
<q-date v-model="queryTime"
mask="YYYY/MM"
default-view="Months"
@update:model-value="dateRangeHandler"></q-date>
</q-popup-proxy>
</q-field>
</div>
<div class="row justify-between useDetails-form">
<div class="column col useDetails-left fz14">
<div class="row items-center left-text text-grey-9">
<div>时间</div><div>描述</div>
<div>支出(收入)</div>
</div>
<q-separator color="grey-3" />
<div class="column">
<div
v-for="(item,index) in dataList"
class="row items-center left-text text-dark">
<div>{{item.id}}</div>
<div>{{item.teamSeries}}</div>
<div><span :class="{'text-red':item.money>0}"><template v-if="item.money>0">+</template> ¥{{item.money}}</span></div>
</div>
<div class="text-center q-pb-lg">
<svg-icon :size="50" color="nav" icon="General/Clipboard.svg"></svg-icon>
<div class="q-mt-md f12 text-grey-6">{{ $t('noneData') }}</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import { ref, toRefs, onMounted } from "vue";
import { useRouter } from 'vue-router';
import { defineComponent, ref, reactive, toRefs, provide } from 'vue'
import { useI18n } from 'vue-i18n'
import { date, useQuasar } from 'quasar'
import * as echarts from "echarts"
import { ApiResult } from '../../@types/enumHelper'
import message from '../../utils/message'
import Store from '../../store'
import rebatehead from '../../components/passbook/rebate/rebatehead.vue'
import passbookService from '../../api/passbook'
export default defineComponent({
name: 'user-info',
components: { rebatehead },
props: {},
setup(props) {
const $router = useRouter();
const qDateProxy = ref(null) as any
const { t } = useI18n()
const main = ref();
const data=reactive({
dateRange: {} as any,
queryTime: '',
titleHead: '使用明细',
dataList: [],
})
const methods = {
dateRangeHandler(e: any) {
methods.getList()
if (qDateProxy.value) qDateProxy.value.hide()
},
getList(){
passbookService.getBankbookUseDetail(data.queryTime)
.then(r => {
if (r.data.resultCode == ApiResult.SUCCESS) {
data.dataList= r.data.data.pageData;
} else {
message.errorMsg(r.data.message)
}
})
.catch(r => {
message.errorMsg(r.message)
})
},
}
onMounted(() => {
methods.getList()
});
return {...toRefs(data),
qDateProxy,
...methods}
}
})
</script>
<style scoped>
.useDetails-form{
padding: 15px 30px 0 30px;
}
.left-text div{
display: inline-block;
width: 33.33%;
text-indent: 31px;
}
.left-text:nth-child(2n){
background: #E0E0E0;
}
</style>
\ No newline at end of file
......@@ -97,5 +97,9 @@ class DirtionmaryHelper {
* 包机订单列表
*/
static readonly TRAVEL_ORDER_OBJ = "travelOrderObj"
/**
* 幸福存折详情
*/
static readonly PASSBOOK_DETAILS = "passbookDetails"
}
export { userDictionmary,DirtionmaryHelper }
<template>
<div class="column items-center">
<div class="passbook-form q-mt-sm">
<passbookHead/>
<rebate/>
<div class="passbook-form q-mt-sm q-mb-lg">
<template v-if="!isUseDetails">
<passbookHead :dataNum="datainfo?datainfo.Client_Balance:0"/>
<rebate />
<redEnvelope v-if="MonthObj&&datainfo" :Obj="MonthObj" :info="datainfo"/>
</template>
<useDetails v-else/>
</div>
</div>
</template>
<script lang="ts">
import { useRouter } from 'vue-router';
import { defineComponent, ref, reactive, toRefs, provide } from 'vue'
import { useQuasar } from 'quasar'
import { ApiResult } from '../../@types/enumHelper'
import message from '../../utils/message'
import { useI18n } from 'vue-i18n'
import Store from '../../store'
import { DirtionmaryHelper } from '../../config/dictionary'
import passbookHead from '../../components/passbook/passbookHead.vue'
import rebate from '../../components/passbook/rebate.vue'
import redEnvelope from '../../components/passbook/redEnvelope.vue'
import useDetails from '../../components/passbook/useDetails.vue'
import passbookService from '../../api/passbook'
export default defineComponent({
name: 'user-info',
components: { passbookHead,rebate },
props: {
user: {
type: Object,
require: true
}
},
setup(props) {
components: { passbookHead,rebate,redEnvelope,useDetails },
props: {},
setup() {
const $router = useRouter();
const $q = useQuasar()
const data=reactive({
datainfo:null as Object,
xMonth:[],
yMoney1:[],
yMoney2:[],
MonthObj:null as Object
})
const isUseDetails = ref(false)
provide(DirtionmaryHelper.PASSBOOK_DETAILS,isUseDetails)
const methods = {
GetBigRedEnvelope() {
let CustomerId
if (Store.state && Store.state.user?.userDetail) {
CustomerId = Store.state.user?.userDetail?.customerId
}
$q.loading.show()
passbookService.GetCustomerBigRedEnvelope(CustomerId)
.then(r => {
let arr1=['-', '-', '-','-'];
let newarr=[];
if (r.data.resultCode == ApiResult.SUCCESS) {
data.datainfo=r.data.data;
data.datainfo.JQLRList.forEach((item,index)=>{
data.xMonth.push(item.Date)
if(index<5){
data.yMoney1.push(item.Money)
}
if(index>3){
newarr.push(item.Money);
data.yMoney2=arr1.concat(newarr);
}
})
data.datainfo.RatioList.forEach(item=>{
item.percent=data.datainfo.Amount/item.Money;
item.width=(item.percent)*100;
})
data.yMoney1=data.yMoney1.concat(["-"]);
data.MonthObj ={
xMonth: data.xMonth,
yMoney1: data.yMoney1,
yMoney2: data.yMoney2
}
} else {
message.errorMsg(r.data.message)
}
$q.loading.hide()
})
.catch(r => {
$q.loading.hide()
message.errorMsg(r.message)
})
},
}
return {...toRefs(data),...methods}
methods.GetBigRedEnvelope()
return {...toRefs(data),isUseDetails,...methods}
}
})
</script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment