Commit b7df0ef8 by member

add: 提交回家过年可能要使用

parent 61191db1
......@@ -3,5 +3,5 @@
["env", { "modules": false }],
"stage-3"
],
"plugins": ["transform-vue-jsx"]
"plugins": ["transform-vue-jsx", "transform-runtime"]
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"name": "@gic-test/vue-gic-people",
"description": "vue-gic-people Plugin",
"author": "fairyly <498745097@qq.com>",
"version": "1.4.2",
"author": "shiyao <syolmm@qq.com>",
"version": "1.8.91",
"license": "MIT",
"private": false,
"main": "dist/vue-gic-people.js",
......@@ -11,10 +11,15 @@
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
},
"dependencies": {
"@gic-test/vue-gic-datepicker": "^1.2.9",
"@gic-test/vue-gic-store-new": "^1.0.9",
"@gic-test/vue-gic-datepicker": "^1.3.8",
"@gic-test/vue-gic-people": "^1.7.0",
"@gic-test/vue-gic-store-new": "^1.3.1",
"@riophae/vue-treeselect": "0.0.35",
"axios": "^0.18.0",
"babel-plugin-transform-runtime": "^6.23.0",
"element-ui": "^2.4.11",
"less": "^3.9.0",
"less-loader": "^4.1.0",
"localforage": "^1.7.2",
"vue": "^2.5.11"
},
......
<template>
<div id="app">
<vue-gic-people :projectName="projectName" :useId="useId" :hasSearchData="hasSearchData" :sceneValue="sceneValue" ref="peopleFilter" @findFilter="findFilter" @getBackData="getBackData" @editHide= "editHide" @editShow="editShow" @hideBtn="hideBtn"></vue-gic-people>
<!-- <vue-gic-people :projectName="projectName" :useId="useId" :hasSearchData="hasSearchData" :sceneValue="sceneValue" ref="peopleFilter" @findFilter="findFilter" @getBackData="getBackData" @editHide= "editHide" @editShow="editShow" @hideBtn="hideBtn"></vue-gic-people>
<!-- // 按钮根据当前使用场景设置,有的无保存 -->
<!--
<div v-if="toggleTag">
<button @click="getData">确定</button>
<button @click="cancelFilter">取消</button>
</div>
<div v-else>
<button @click="saveTempData">保存</button>
</div>
</div> -->
<!-- <gicSelect></gicSelect> -->
</div>
</template>
<script>
import vueGicPeople from './lib/vue-gic-people'
import gicSelect from './lib/gic-select';
export default {
name: 'app',
......@@ -30,7 +33,7 @@ export default {
}
},
components: {
vueGicPeople
gicSelect
},
methods: {
// 父组件调用子组件方法,触发父组件事件
......@@ -92,11 +95,3 @@ export default {
},
}
</script>
<style lang="scss">
* {
margin: 0;
padding: 0;
}
</style>
<template>
<div class="birth-select">
<div class="start-date date-block">
<el-select v-model="startVal[0]" style="width: 100px" placeholder="月份" @change="handleStartMonthChange">
<el-option v-for="item in MonthList"
:value="item.value"
:key="item.key"
:label="item.label">
</el-option>
</el-select>
<span class="space"></span>
<el-select v-model="startVal[1]" style="width: 100px" placeholder="日期" @change="handleStartDateChange">
<el-option v-for="item in startDateList"
:value="item.value"
:key="item.key"
:label="item.label">
</el-option>
</el-select>
</div>
<span class="range"></span>
<div class="end-date date-block">
<el-select v-model="endVal[0]" style="width: 100px" placeholder="月份" @change="handleEndMonthChange">
<el-option v-for="item in MonthList"
:value="item.value"
:key="item.key"
:label="item.label">
</el-option>
</el-select>
<span class="space"></span>
<el-select v-model="endVal[1]" style="width: 100px" placeholder="日期" @change="handleEndDateChange">
<el-option v-for="item in endDateList"
:value="item.value"
:key="item.key"
:label="item.label">
</el-option>
</el-select>
</div>
</div>
</template>
<script>
export default {
name: 'GicSelect',
props: {
dateval: [String, Array]
},
data() {
return {
startVal: ['', ''],
endVal: ['', ''],
// 月份
MonthList: [
{ key: 1, value: '01', label: '1月' },
{ key: 2, value: '02', label: '2月' },
{ key: 3, value: '03', label: '3月' },
{ key: 4, value: '04', label: '4月' },
{ key: 5, value: '05', label: '5月' },
{ key: 6, value: '06', label: '6月' },
{ key: 7, value: '07', label: '7月' },
{ key: 8, value: '08', label: '8月' },
{ key: 9, value: '09', label: '9月' },
{ key: 10, value: '10', label: '10月' },
{ key: 11, value: '11', label: '11月' },
{ key: 12, value: '12', label: '12月' },
],
// 日期
daysList: [ ['01', '03', '05', '07', '08', '10', '12'], ['02'], ['04', '06', '09', '11'] ],
startDateList: [
{ key: 1, value: '01', label: '1日' },
{ key: 2, value: '02', label: '2日' },
{ key: 3, value: '03', label: '3日' },
{ key: 4, value: '04', label: '4日' },
{ key: 5, value: '05', label: '5日' },
{ key: 6, value: '06', label: '6日' },
{ key: 7, value: '07', label: '7日' },
{ key: 8, value: '08', label: '8日' },
{ key: 9, value: '09', label: '9日' },
{ key: 10, value: '10', label: '10日' },
{ key: 11, value: '11', label: '11日' },
{ key: 12, value: '12', label: '12日' },
{ key: 13, value: '13', label: '13日' },
{ key: 14, value: '14', label: '14日' },
{ key: 15, value: '15', label: '15日' },
{ key: 16, value: '16', label: '16日' },
{ key: 17, value: '17', label: '17日' },
{ key: 18, value: '18', label: '18日' },
{ key: 19, value: '19', label: '19日' },
{ key: 20, value: '20', label: '20日' },
{ key: 21, value: '21', label: '21日' },
{ key: 22, value: '22', label: '22日' },
{ key: 23, value: '23', label: '23日' },
{ key: 24, value: '24', label: '24日' },
{ key: 25, value: '25', label: '25日' },
{ key: 26, value: '26', label: '26日' },
{ key: 27, value: '27', label: '27日' },
{ key: 28, value: '28', label: '28日' },
{ key: 29, value: '29', label: '29日' },
{ key: 30, value: '30', label: '30日' },
{ key: 31, value: '31', label: '31日' }
],
endDateList: [
{ key: 1, value: '01', label: '1日' },
{ key: 2, value: '02', label: '2日' },
{ key: 3, value: '03', label: '3日' },
{ key: 4, value: '04', label: '4日' },
{ key: 5, value: '05', label: '5日' },
{ key: 6, value: '06', label: '6日' },
{ key: 7, value: '07', label: '7日' },
{ key: 8, value: '08', label: '8日' },
{ key: 9, value: '09', label: '9日' },
{ key: 10, value: '10', label: '10日' },
{ key: 11, value: '11', label: '11日' },
{ key: 12, value: '12', label: '12日' },
{ key: 13, value: '13', label: '13日' },
{ key: 14, value: '14', label: '14日' },
{ key: 15, value: '15', label: '15日' },
{ key: 16, value: '16', label: '16日' },
{ key: 17, value: '17', label: '17日' },
{ key: 18, value: '18', label: '18日' },
{ key: 19, value: '19', label: '19日' },
{ key: 20, value: '20', label: '20日' },
{ key: 21, value: '21', label: '21日' },
{ key: 22, value: '22', label: '22日' },
{ key: 23, value: '23', label: '23日' },
{ key: 24, value: '24', label: '24日' },
{ key: 25, value: '25', label: '25日' },
{ key: 26, value: '26', label: '26日' },
{ key: 27, value: '27', label: '27日' },
{ key: 28, value: '28', label: '28日' },
{ key: 29, value: '29', label: '29日' },
{ key: 30, value: '30', label: '30日' },
{ key: 31, value: '31', label: '31日' }
]
};
},
methods: {
//
handleMonthValue(position, val) {
const WM = this.daysList.findIndex((item, i) => {
return item.includes(val);
});
if (position == 'start') {
this.handleChangeData(this.startDateList, WM);
} else if ('end') {
this.handleChangeData(this.endDateList, WM);
}
},
handleChangeData(data, inx) {
const length = data.length; // 31 29 30
if (inx == 0) {
// 31天
this.handleLength(length, data, 0);
} else if (inx == 2) {
// 如果升级 30天
this.handleLength(length, data, 1);
} else {
// 29天
this.handleLength(length, data, 2);
}
},
handleLength(length, data, days) {
if (length == 31) {
if (days == 0) {
return;
} else if (days == 1) {
data.pop();
} else if (days == 2) {
data.splice(29, 2);
}
} else if (length == 30) {
if (days == 0) {
data.push({ key: 31, value: '31', label: '31日' });
} else if (days == 1) {
return;
} else if (days == 2) {
data.splice(29, 1);
}
} else if (length == 29) {
if (days == 0) {
data.push({ key: 30, value: '30', label: '30日' });
data.push({ key: 31, value: '31', label: '31日' });
} else if (days == 1) {
data.push({ key: 30, value: '30', label: '30日' });
} else if (days == 2) {
return;
}
}
},
// 开始月份
handleStartMonthChange(val) {
this.handleMonthValue('start', val);
this.handleDate();
this.$emit('change');
},
handleStartDateChange(val) {
this.handleDate();
this.$emit('change');
},
handleEndMonthChange(val) {
this.handleMonthValue('end', val);
this.handleDate();
this.$emit('change');
},
handleEndDateChange(val) {
this.handleDate();
this.$emit('change');
},
handleDate() {
if (!this.startVal[0] || !this.startVal[0] || !this.endVal[0] || !this.endVal[1]) {
return;
}
const start = this.startVal.join('');
const end = this.endVal.join('');
if (start - end > 0) {
this.$message.warning('开始生日日期不能大于结束日期');
this.$emit('update:dateval', '');
return;
}
const value = [start, end];
this.$emit('update:dateval', value);
},
// 回显数据
replay(start, end) {
this.startVal[0] = start.slice(0, 2);
this.startVal[1] = start.slice(2, 4);
this.endVal[0] = end.slice(0, 2);
this.endVal[1] = end.slice(2, 4);
}
},
created() {
if (this.dateval[0] && this.dateval[1]) {
this.replay(this.dateval[0], this.dateval[1]);
}
}
};
</script>
<style lang="scss" scoped>
.birth-select {
.date-block {
display: inline-block;
.space {
display: inline-block;
width: 10px;
}
}
.range {
display: inline-block;
vertical-align: middle;
width: 30px;
height: 32px;
line-height: 32px;
font-size: 12px;
text-align: center;
}
}
</style>
<template>
<p class="filtertxt">
<span v-if="singleTxt">{{singleTxt}}</span>
<span v-for="(txt, i) in templateArr" :key="i" v-if="templateArr && templateArr.length">
<div class="filtertxt" v-if="templateArr.length > 0">
<span v-if="templateArr.length === 1 && templateArr[0].length === 1">
<span>(</span>
<span v-for="(txt, i) in templateArr[0]" :key="'hash' + i.toString()" class="light-txt">{{txt}}</span>
<span>)</span>
</span>
<span v-if="templateArr.length === 1 && templateArr[0].length > 1">
<span>(</span>
<span v-for="(txt, i) in templateArr[0]" :key="'hash' + i.toString()">
<span v-if="i !== 0 && templateArr[0].length - 1 && txt">&nbsp;或者&nbsp;</span>
<span class='light-txt' v-if="txt">{{txt}}</span>
</span>
<span>)</span>
</span>
<span v-if="templateArr.length > 1 && templateArr[i][0]" v-for="(txt, i) in templateArr" :key="'hash' + i.toString()">
<span v-if="i !== 0">&nbsp;&nbsp;</span>
<span>(</span>
<span v-for="(item, index) in templateArr[i]" :key="'hashinner' + index.toString()">
<span v-if="index !== 0 && templateArr[i].length - 1 && item">&nbsp;或者&nbsp;</span>
<span class='light-txt' v-if="item">{{item}}</span>
</span>
<span>)</span>
</span>
<!-- <span v-for="(txt, i) in templateArr" :key="i" v-if="templateArr.length > 1">
<span v-if="i !== 0">&nbsp;&nbsp;</span>
<span v-for="(item, index) in templateArr[i]" :key="index">
<span v-if="index !== 0 && index !== templateArr[i].length - 1">&nbsp;&nbsp;</span>
<span :class="(index !== 0 && index !== templateArr[i].length - 1) ? 'light-txt' : ''">{{item}}</span>
</span>
</span>
</p>
</span> -->
</div>
<div v-else>
</div>
</template>
<script>
......@@ -23,39 +52,74 @@ export default {
data() {
return {
templateArr: [],
singleTxt: ''
singleTxt: '',
templateText: ''
}
},
beforeMount() {
let middletxt = this.templatetxt;
// 只有一条 没有或
if (!middletxt.includes('或') && !middletxt.includes('且')) {
this.singleTxt = middletxt;
}
// 只有一条 有或 没有且
if (middletxt.includes('或') && !middletxt.includes('且')) {
middletxt = middletxt.replace(/\)/g, '').split('或');
middletxt.push(')');
this.templateArr = [middletxt];
}
// 两条 有且 有或 没有 或
if (middletxt.includes('且')) {
if (middletxt.includes('或')) {
// (年龄等于12且(所属主门店包含自营)
middletxt = middletxt.split('且');
middletxt = middletxt.map(ele => {
let eletxt = ele.replace(/\)/g, '');
let ret = eletxt.split('或');
ret.push(')');
return ret;
});
this.templateArr = middletxt;
} else {
this.singleTxt = middletxt;
methods: {
getText() {
let middletxt = this.templateText;
if (!middletxt) {
return;
}
// 只有括号
if (!middletxt.replace(/[\(|\)]/g, '')) {
return;
}
// 只有一条 没有或 没有且
// middletxt
if (!middletxt.includes('或') && !middletxt.includes('且')) {
middletxt = middletxt.replace(/[\(|\)]/g, '');
this.templateArr.push([middletxt]);
}
// 只有一条 有或 没有且
if (middletxt.includes('或') && !middletxt.includes('且')) {
middletxt = middletxt.replace(/[\(|\)]/g, '');
middletxt = middletxt.split('或');
this.templateArr.push(middletxt);
}
// 两条 有且 有或 没有 或
// (所属主门店包含自营...)且(会员开卡时间2018-11-09 00:00:00至2018-12-04 23:59:59)
if (middletxt.includes('且')) {
if (middletxt.includes('或')) {
// (年龄等于12且(所属主门店包含自营)
middletxt = middletxt.split('且');
middletxt.forEach(ele => {
let txt = ele.replace(/[\(|\)]/g, '');
let txtArr = txt.split('或');
this.templateArr.push(txtArr);
});
} else {
middletxt = middletxt.split('且');
middletxt.forEach(ele => {
let txt = ele.replace(/[\(|\)]/g, '');
this.templateArr.push([txt]);
});
}
}
console.log(this.templateArr);
}
},
watch: {
templatetxt: {
immediate: true,
handler(newval) {
this.templateArr = [];
this.templateText = newval;
this.getText();
}
}
}
};
</script>
<style>
......
......@@ -253,4 +253,7 @@ export default {
.vue-input-tag-wrapper.read-only {
cursor: default;
}
.new-tag::placeholder {
color: #ccc;
}
</style>
This source diff could not be displayed because it is too large. You can view the blob instead.
import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui'
Vue.use(ElementUI);
new Vue({
el: '#app',
......
.people-content {
width: 100%;
padding: 24px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
background: #f2f3f4;
.people-temp-head {
.member-templates-title {
display: inline-block;
width: 100px;
text-align: right;
margin-right: 30px;
line-height: 32px;
}
.el-select {
width: 195px;
/*height: 40px;*/
border-radius: 4px;
line-height: 32px;
/*border: 1px solid #e7e7eb;*/
position: relative;
cursor: pointer;
color: #888;
}
.input-search-select {
.el-select {
width: 375px;
overflow: hidden;
text-overflow: ellipsis;
/deep/.el-select__tags-text {
max-width: 262px;
overflow: hidden;
text-overflow: ellipsis;
display: inline-block;
vertical-align: top;
}
}
}
}
.el-select .el-input__inner {
border: none !important;
border-radius: 2px !important;
}
}
/*去掉输入框右侧*/
.input-tags /deep/ {
.el-input__suffix-inner {
display: none;
}
}
.el-select > .el-input {
border: none;
}
.temp-select .el-input__inner {
border: none;
border-radius: 2px;
}
.screening-condition {
margin-left: 100px;
margin-top: 14px;
}
.screening-condition .btn-edit-group,
.screening-condition .btn-cancel-group {
color: #909399;
cursor: pointer;
display: inline-block;
font-size: 14px;
margin-left: 4px;
position: relative;
width: 14px;
height: 14px;
top: 1px;
/*background: url('../../images/14x14icon@2x.png') no-repeat center center;*/
}
.screening-condition .btn-edit-group:hover {
color: #1890ff;
}
.screening-condition .el-icon-delete:hover {
color: #f56c6c;
}
.screening-condition .btn-edit-group {
background-position: 0 -355px;
}
.screening-condition .btn-cancel-group {
background-position: -59px -298px;
}
.detail {
display: inline;
cursor: pointer;
/*margin-top: 14px;*/
font-size: 14px;
color: #858585;
line-height: 20px;
}
.detail span {
font-size: 14px;
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
.detail .bg_blue {
display: inline-block;
background: #effcff;
padding: 6px 7px;
border-radius: 3px;
color: #858585;
margin: 0 5px 5px 5px;
height: 18px;
}
.detail .word {
margin: 0px 10px;
}
.detail .bg_yellow {
display: inline-block;
background: #fffeeb;
padding: 6px 7px;
border-radius: 3px;
color: #858585;
margin: 0 5px 5px 5px;
height: 18px;
}
.gic-btn {
height: 36px;
line-height: 36px;
color: #fff;
padding: 0 24px;
font-size: 14px;
border-radius: 2px;
background: #1890ff;
border: none;
outline: none;
cursor: pointer;
margin-top: 30px;
&:hover {
/*background: #fceb88;*/
}
}
/* 筛选条件 */
@media screen and (min-width: 1131px) {
.ration .groupbox {
/*min-width: 1241px;*/
min-width: 750px;
padding-right: 30px;
}
}
@media screen and (max-width: 1131px) {
.ration .groupbox {
/*min-width: 1241px;*/
min-width: 750px;
padding-right: 30px;
}
}
.el-input__inner {
/*border: 0px solid #dcdfe6;*/
}
.filter-message {
position: relative;
background: #fff;
padding: 10px 30px;
}
.filter-content {
margin-top: 0;
min-width: 1100px;
position: relative;
}
.filter-content .member-templates-condition-title {
width: 80px;
vertical-align: top;
position: absolute;
left: 0;
top: 0;
text-align: right;
margin: 0px;
z-index: 2;
font-size: 14px;
line-height: 28px;
color: #303133;
}
.filter-box {
border-left: 10px solid #1890ff;
}
.filter-message {
position: relative;
background: #fff;
padding-left: 30px;
padding-bottom: 10px;
font-size: 0;
}
.fliter-message-title {
margin-right: 7px;
line-height: 32px;
height: 32px;
font-size: 14px;
margin: 0;
}
.marginLeft134 {
margin-left: 100px;
}
.inline-block {
display: inline-block;
vertical-align: top;
}
.filter-or {
display: inline-block;
margin-right: 20px;
}
.filter-button li {
padding: 8px 15px;
display: inline-block;
background: #e3e7ee;
border-radius: 20px;
font-size: 12px;
line-height: 12px;
margin-right: 10px;
cursor: pointer;
box-sizing: border-box;
-webkit-box-sizing: border-box;
}
.filter-button li:hover {
background: #1890ff;
color: #fff;
}
.filter-button .filter-active {
background: #1890ff;
color: #fff;
}
.filter-and {
display: flex;
margin: 10px 10px 10px -10px;
font-size: 14px;
}
.filter-close {
color: #909399;
cursor: pointer;
position: absolute;
right: 10px;
top: 20px;
font-size: 14px;
}
.filter-close:hover {
color: #f56c6c;
}
.filter-button {
margin: 0px 10px 0px 15px;
}
.add-or-box {
display: flex;
margin: 10px 0 0 16px;
}
.add-or-box .add-or-words {
margin-right: 16px;
padding: 3px 0 0;
/*line-height: 30px;*/
font-size: 14px;
}
.andlabels {
margin: 10px 10px 10px -10px;
font-size: 14px;
}
.group_combo > .orlabels {
height: 30px;
line-height: 30px;
margin-left: 15px;
color: #292929;
font-size: 14px;
}
.gic-select-wrap {
position: relative;
margin-left: 8px;
}
/* btns */
.people-temp-btns {
width: 100%;
margin-top: 20px;
display: inline-block;
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding-left: 130px;
}
/*tree*/
.el-tree-out {
position: absolute;
left: 0;
}
.el-tree-contain {
position: relative;
left: 0px;
width: 400px;
height: 300px;
z-index: 91008;
border: 1px solid #e4e7ed;
border-radius: 4px;
background: #fff;
-webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.el-tree {
position: absolute;
left: 0px;
min-width: 398px;
height: 230px;
overflow: auto;
z-index: 91008;
border-bottom: 1px solid #e4e7ed;
margin: 15px 0;
}
.tree-btns {
position: absolute;
left: 0px;
top: 251px;
min-width: 398px;
height: 50px;
text-align: right;
.el-button.el-button--primary {
margin-right: 30px;
}
}
.select-wrap-input {
width: 100px;
margin-right: 10px;
}
.vue-treeselect /deep/ {
width: 217px;
font-size: 12px;
/deep/ .vue-treeselect__control {
height: 32px;
/*line-height: 36px;*/
cursor: pointer;
}
/deep/ .vue-treeselect__multi-value-item {
color: #909399;
background: #f0f2f5;
}
/deep/ .vue-treeselect__value-remove {
color: #909399;
}
.vue-treeselect__placeholder {
line-height: 32px;
font-size: 13.3333px;
}
.vue-treeselect--searchable:not(.vue-treeselect--disabled)
.vue-treeselect__value-container {
cursor: pointer;
}
.vue-treeselect__control-arrow {
display: none;
}
.vue-treeselect__control-arrow-container {
position: relative;
}
/deep/.vue-treeselect__control-arrow-container:after,
.vue-treeselect__control-arrow-container:before {
border: 6px solid transparent;
border-left: 6px solid #fff;
width: 0;
height: 0;
position: absolute;
top: 50%;
left: 50%;
margin-left: -6px;
content: " ";
margin-top: -3px;
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
-webkit-transition: -webkit-transform 0.3s;
transition: -webkit-transform 0.3s;
transition: transform 0.3s;
transition: transform 0.3s, -webkit-transform 0.3s;
transition: transform 0.3s, -webkit-transform 0.3s;
}
/deep/ .vue-treeselect__control-arrow-container:before {
border-left-color: #c0c4cc;
top: 52%;
}
&.vue-treeselect--focused .vue-treeselect__control-arrow-container:after,
&.vue-treeselect--focused .vue-treeselect__control-arrow-container:before {
margin-top: -6px;
-webkit-transform: rotateZ(-90deg);
-moz-transform: rotateZ(-90deg);
-o-transform: rotateZ(-90deg);
transform: rotateZ(-90deg);
-webkit-transition: -webkit-transform 0.3s;
transition: -webkit-transform 0.3s;
transition: transform 0.3s;
transition: transform 0.3s, -webkit-transform 0.3s;
transition: transform 0.3s, -webkit-transform 0.3s;
}
&.vue-treeselect--focused .vue-treeselect__control-arrow-container:before {
border-left-color: #c0c4cc;
top: 47%;
}
.vue-treeselect--has-value .vue-treeselect__multi-value {
margin-bottom: 0;
}
}
.gic-select-wrap .el-input__inner {
/*border-width: 1px;*/
}
\ No newline at end of file
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