Commit 6b1656ac authored by 张冬's avatar 张冬

采购项目查看和编辑

parent 17a88754
......@@ -9,8 +9,11 @@ html {
}
a {
color:#FF5203 !important;
text-decoration: none;
}
a:hover{color:rgb(51, 218, 193) !important}
button {
border: none
......
<template>
<div class="hello">
<div style="width: 100%;">
<div style="width: 100%">
<el-upload
:http-request="handleUpload"
:before-remove="beforeRemove"
......@@ -10,24 +10,32 @@
:on-remove="handleRemove"
class="upload-demo"
action
multiple>
multiple
>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">{{ tip }}</div>
</el-upload>
</div>
<div style="width: 100%;">
<div style="width: 100%">
<dataTable :table-data="fileList" :columns="columns" :is-pageobj="false">
<el-table-column slot="operate" label="文件大小" align="center" fixed="right" width="300">
<template slot-scope="scope">
<div>{{getMb(scope.row.size)}}KB</div>
<div>{{ getMb(scope.row.size) }}KB</div>
</template>
</el-table-column>
<el-table-column slot="operate" label="价格" align="center" fixed="right" width="300" v-if="type==0">
<el-table-column slot="operate" label="价格" align="center" fixed="right" width="300" v-if="type == 0">
<template slot-scope="scope">
<el-radio-group v-model="scope.row.free">
<el-radio :label="true">免费</el-radio>
<el-radio :label="false">收费</el-radio>
<el-input-number v-model="scope.row.price" v-show="scope.row.free==false" :min="0" :controls="false" :precision="2" placeholder="价格(元)" ></el-input-number>
<el-input-number
v-model="scope.row.price"
v-show="scope.row.free == false"
:min="0"
:controls="false"
:precision="2"
placeholder="价格(元)"
></el-input-number>
</el-radio-group>
</template>
</el-table-column>
......@@ -42,22 +50,17 @@
</template>
<script>
import dataTable from '@components/nopageTable.vue'
import {
put,
getFileNameUUID
} from '@api/ali-oss'
import {
getTime, getcurrentTime
} from '@utils/time'
import dataTable from '@components/nopageTable.vue';
import { put, getFileNameUUID } from '@api/ali-oss';
import { getTime, getcurrentTime } from '@utils/time';
export default {
components: {
dataTable
},
props: {
type:{
type:Number,
default:0
type: {
type: Number,
default: 0
},
accept: {
type: String,
......@@ -90,100 +93,103 @@ export default {
max: {
type: Number,
default: 99
}
},
fileList: {
type: Array,
default: () => []
},
},
data() {
return {
fileList: [],
tableData: [],
columns: [{
columns: [
{
label: '文件名称',
prop: 'name'
},
{
label: '上传时间',
prop: 'time'
prop: 'createTime'
},
{
slot: 'operate'
}
]
}
};
},
created() {
console.log(this.type)
console.log(this.type);
},
methods: {
getMb(size){
let sieze1= size/1024
let integer= sieze1.toFixed(0)
return integer
getMb(size) {
let sieze1 = size / 1024;
let integer = sieze1.toFixed(0);
return integer;
},
emitInput(fileList) {
let value = []
let value = [];
for (let i = 0; i < fileList.length; i++) {
let message = {}
message.name = fileList[0].name
message.size = fileList[0].size
message.time = fileList[0].time
message.url = fileList[0].url
value.push(message)
let message = {};
message.name = fileList[0].name;
message.size = fileList[0].size;
message.createTime = fileList[0].time;
message.url = fileList[0].url;
value.push(message);
}
this.$emit('input', value)
this.$emit('input', value);
},
beforeUpload(file) {
const max = this.max
const isLt2M = file.size / 1024 / 1024 < max
const max = this.max;
const isLt2M = file.size / 1024 / 1024 < max;
if (!isLt2M) {
this.$message.error(`上传附件大小不能超过 ${max} MB!`)
this.$message.error(`上传附件大小不能超过 ${max} MB!`);
}
return isLt2M
return isLt2M;
},
handleRemove(file, fileList, index) {
console.log(fileList)
this.$emit('on-remove', file, fileList)
this.fileList = fileList
this.emitInput(fileList)
console.log(fileList);
this.$emit('on-remove', file, fileList);
this.fileList = fileList;
this.emitInput(fileList);
},
// handleExceed(files, fileList) {
// this.$message.warning(`每次只能上传 ${this.limit} 个文件`)
// },
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}?`)
return this.$confirm(`确定移除 ${file.name}?`);
},
/**
* 自定义上传方法
*/
handleUpload(option) {
const max = this.max
const isLt2M = option.file.size / 1024 / 1024 < max
const max = this.max;
const isLt2M = option.file.size / 1024 / 1024 < max;
if (isLt2M) {
// 生成的文件名称
let objName = getFileNameUUID()
let objName = getFileNameUUID();
// 调用 ali-oss 中的方法
console.log(option)
put(`${objName}${option.file.name}`, option.file).then(res => {
res.size = option.file.size
res.uploadTime = getcurrentTime()
res. time = getTime()
res.free = true
res.price = ''
console.log(option);
put(`${objName}${option.file.name}`, option.file).then((res) => {
res.size = option.file.size;
res.uploadTime = getcurrentTime();
res.time = getTime();
res.free = true;
res.price = '';
// /* res.fileName = res.name */
res.fileName = option.file.name
res.fileUrl = res.url
this.fileList.push(res)
this.$emit('input', this.fileList)
})
res.fileName = option.file.name;
res.fileUrl = res.url;
this.fileList.push(res);
this.$emit('input', this.fileList);
});
}
},
handleDelete(index) {
this.fileList.splice(index, 1)
this.$emit('input', this.fileList)
this.fileList.splice(index, 1);
this.$emit('input', this.fileList);
}
}
}
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
......
......@@ -24,7 +24,7 @@
</div>
<!-- 招标文件上传 -->
<div class="fileUpload">
<fileUpload ref="fileUpload" :detail="detail"></fileUpload>
<fileUpload ref="fileUpload" :ruleForm="detail"></fileUpload>
</div>
</div>
<div class="centerButton">
......@@ -34,6 +34,7 @@
</template>
<script>
import { editProject } from '@api/purchaser/bid';
import { getTime1 } from '@utils/time';
import { projectdetail } from '@api/supply/bid';
import messaage from './message.vue';
......@@ -65,7 +66,19 @@ export default {
await this.$refs.timeSet.next();
await this.$refs.fileUpload.next();
console.log('通过');
console.log(this.detail);
const { msg, code } = await editProject(this.detail);
if (code == 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
});
setTimeout(() => {
this.$router.go(-1)
}, 1500);
} else {
this.$message.error(msg);
}
},
// 获取详情
async getenquiryProjectId() {
......@@ -77,6 +90,24 @@ export default {
data.createTime = data.createTime.substring(0, 10);
data.bidBookInfoPO = data.bidBookInfoDO;
data.earnestInfoPO = data.earnestInfoDO;
let userInfo = JSON.parse(localStorage.getItem('userInfo'));
data.purchaseAgent = userInfo.companyName;
for (let item of data.accessoryDOList) {
item.url = item.accessoryUrl;
item.name = item.fileName;
}
let bidBookPO = [];
bidBookPO.push(data.bidBookPO);
data.bidBookPO = bidBookPO;
for (let item of data.bidBookPO) {
item.url = item.fileUrl;
item.name = item.fileName;
}
for (let item of data.bidBookAccessoryPOList) {
item.url = item.fileUrl;
item.name = item.fileName;
}
console.log(data);
this.detail = data;
}
}
......
......@@ -5,10 +5,10 @@
<div class="details">
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
<el-form-item label="上传附件" prop="file">
<upload :limit="1" accept=".pdf" tip="请上传一个招标文件(pdf),不要超过50M。" :max="50" @input="getfile"></upload>
<upload :limit="1" accept=".pdf" tip="请上传一个招标文件(pdf),不要超过50M。" :max="50" @input="getfile" :fileList="ruleForm.bidBookPO"></upload>
</el-form-item>
<el-form-item label="其他附件">
<upload :limit="5" tip="最多上传五个附件,单个不超过100M。" :type="1" :max="100" @input="getfile1"> </upload>
<upload :limit="5" tip="最多上传五个附件,单个不超过100M。" :type="1" :max="100" @input="getfile1" :fileList="ruleForm.bidBookAccessoryPOList"> </upload>
</el-form-item>
</el-form>
</div>
......@@ -24,7 +24,7 @@ export default {
upload
},
props: {
allForm: {
ruleForm: {
type: Object,
default() {
return {};
......@@ -41,11 +41,6 @@ export default {
}
};
return {
ruleForm: {
bidBookPO: [],
bidBookAccessoryPOList: []
},
fileList: [],
rules: {
file: [
{
......@@ -64,9 +59,6 @@ export default {
getfile1(val) {
this.ruleForm.bidBookAccessoryPOList = val;
},
async next() {
const valid = await this.$refs['ruleForm'].validate();
}
}
};
</script>
......
......@@ -197,7 +197,7 @@
</el-input>
</el-form-item>
<el-form-item label="附件:" prop="file">
<upload :tip="tip" :limit="20" :max="25" accept=".PDF,.JPG,.JPEG,.ZIP,.RAR" @input="getfile"></upload>
<upload :tip="tip" :limit="20" :max="25" accept=".PDF,.JPG,.JPEG,.ZIP,.RAR" @input="getfile" :fileList="ruleForm.accessoryDOList"></upload>
</el-form-item>
</el-form>
</div>
......@@ -509,21 +509,6 @@ export default {
computed: {},
created() {
// 默认操作
let userInfo = JSON.parse(localStorage.getItem('userInfo'));
this.ruleForm.purchaseAgent = userInfo.companyName;
let phone = userInfo.phone;
this.ruleForm.projectManager = userInfo.userId;
this.ruleForm.contactsWay = phone;
this.bidBookInfoPO.phone = phone;
this.earnestInfoPO.phone = phone;
this.ruleForm.contacts = userInfo.name;
this.pageObj.companyId = localStorage.getItem('companyId');
this.bidBookInfoPO.account = userInfo.bankAccount;
this.bidBookInfoPO.bank = userInfo.bankName;
this.bidBookInfoPO.accountName = userInfo.bankAccountName;
this.earnestInfoPO.account = userInfo.bankAccount;
this.earnestInfoPO.bank = userInfo.bankName;
this.earnestInfoPO.userName = userInfo.bankAccountName;
this.userList();
this.industryList();
this.projectClassifyList();
......
......@@ -108,13 +108,6 @@ export default {
}
};
return {
ruleForm: {
releaseTime: '',
startTime: '',
endTime: '',
answerQuestionEndTime: '',
openBidStartTime: ''
},
rules: {
releaseTime: [
{
......
......@@ -2,11 +2,11 @@
<div>
<div class="content-head">
<dataBreadcrumb :breads="breads"></dataBreadcrumb>
<h3>{{type==1?"编辑":"发布"}}投标邀请书</h3>
<h5>{{type==1?"编辑":"发布"}}投标邀请书</h5>
<div v-if="type == 1" class="abs">
<h3>发布投标邀请书</h3>
<h5>发布投标邀请书</h5>
<!-- <div v-if="type == 1" class="abs">
<div>拒绝原因:{{ ruleForm.reason }}</div>
</div>
</div> -->
</div>
<div class="content">
<div class="describe">投标邀请书</div>
......@@ -27,8 +27,7 @@
</div>
<div class="bottomButton">
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="submit1" v-if="type == 1">编辑</el-button>
<el-button type="primary" @click="submit" v-else>提交审核</el-button>
<el-button type="primary" @click="submit">提交审核</el-button>
</div>
</div>
</template>
......@@ -78,11 +77,11 @@ export default {
};
},
created() {
let type = this.$route.query.type;
this.type = type;
if (type == 1) {
this.getbiddingProjectId();
}
// let type = this.$route.query.type;
// this.type = type;
// if (type == 1) {
// this.getbiddingProjectId();
// }
},
methods: {
cancel() {
......@@ -94,17 +93,17 @@ export default {
}
this.ruleForm.accessoryPOList = val;
},
async getbiddingProjectId() {
let projectId = localStorage.getItem('projectId');
const { data, code, msg } = await biddingProjectId(projectId);
if (code == 200) {
for (let item of data.accessoryVOList) {
item.url = item.accessoryUrl;
item.name = item.fileName;
}
this.ruleForm = data;
}
},
// async getbiddingProjectId() {
// let projectId = localStorage.getItem('projectId');
// const { data, code, msg } = await biddingProjectId(projectId);
// if (code == 200) {
// for (let item of data.accessoryVOList) {
// item.url = item.accessoryUrl;
// item.name = item.fileName;
// }
// this.ruleForm = data;
// }
// },
//提交表单
async submit() {
let ruleForm = this.ruleForm;
......@@ -128,31 +127,31 @@ export default {
}
},
//提交表单
async submit1() {
let ruleForm = this.ruleForm;
ruleForm.projectId = localStorage.getItem('projectId');
ruleForm.accessoryPOList = this.accessoryPOList;
try {
const valid = await this.$refs['ruleForm'].validate();
if (valid) {
const { code, msg } = await editBidding(this.ruleForm);
if (code === 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
});
setTimeout(() => {
this.$router.go(-1);
}, 1500);
} else if (code == 500) {
this.$message.error(msg);
}
}
} catch (err) {
console.log(err);
}
}
// async submit1() {
// let ruleForm = this.ruleForm;
// ruleForm.projectId = localStorage.getItem('projectId');
// ruleForm.accessoryPOList = this.accessoryPOList;
// try {
// const valid = await this.$refs['ruleForm'].validate();
// if (valid) {
// const { code, msg } = await editBidding(this.ruleForm);
// if (code === 200) {
// this.$message({
// message: msg,
// type: 'success',
// duration: 1500
// });
// setTimeout(() => {
// this.$router.go(-1);
// }, 1500);
// } else if (code == 500) {
// this.$message.error(msg);
// }
// }
// } catch (err) {
// console.log(err);
// }
// }
}
};
</script>
......
......@@ -2,18 +2,25 @@
<div>
<div class="content-head">
<dataBreadcrumb :breads="breads"></dataBreadcrumb>
<h3>发布招标公告</h3>
<h5>发布招标公告</h5>
<h3>{{ type == 1 ? '编辑' : '发布' }}招标公告</h3>
<h5>{{ type == 1 ? '编辑' : '发布' }}招标公告</h5>
<div v-if="type == 1" class="abs">
<div>拒绝原因:{{ ruleForm.reason }}</div>
</div>
</div>
<div class="content">
<div class="describe">招标公告</div>
<div class="form">
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
<el-form-item label="公告标题" prop="title"><strong></strong>
<el-form-item label="公告标题" prop="title">
<el-input v-model.trim="ruleForm.title" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="上传附件" ><strong></strong>
<singleUpload tip="支持扩展名:.rar .zip .doc .docx .pdf .jpg..." @input="getfile"></singleUpload>
<el-form-item label="上传附件">
<singleUpload
tip="支持扩展名:.rar .zip .doc .docx .pdf .jpg..."
@input="getfile"
:fileList="ruleForm.accessoryPOList"
></singleUpload>
</el-form-item>
<el-form-item label="公告内容" prop="content">
<quill-editor ref="text" v-model="ruleForm.content" :options="editorOption" class="myQuillEditor" />
......@@ -23,23 +30,22 @@
</div>
<div class="bottomButton">
<el-button @click="back">取消</el-button>
<el-button type="primary" @click="submit">提交审核</el-button>
<el-button type="primary" @click="submit1" v-if="type == 1">提交编辑</el-button>
<el-button type="primary" @click="submit" v-else>提交审核</el-button>
</div>
</div>
</template>
<script>
import { biddingProjectId, projectDetail } from '@api/common/list';
import { bidMessage,editBidding} from '@api/purchaser/bid';
import { quillEditor } from 'vue-quill-editor';
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';
import { bidMessage } from '@api/purchaser/bid'
import {
quillEditor
} from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
import singleUpload from '@components/Upload/Upload.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue';
import singleUpload from '@components/Upload/Upload.vue';
export default {
components: {
dataBreadcrumb,
......@@ -50,11 +56,11 @@ export default {
// 检测文件是否上传
let checkupload = (rule, value, callback) => {
if (this.justimg.length === 0) {
callback(new Error('请上传正面照片'))
callback(new Error('请上传正面照片'));
} else {
callback()
}
callback();
}
};
return {
accessoryPOList: [],
editorOption: {},
......@@ -64,76 +70,125 @@ export default {
content: ''
},
rules: {
title: [{
title: [
{
required: true,
message: '请填写',
trigger: 'blue'
}],
content: [{
}
],
content: [
{
required: true,
message: '请填写',
trigger: 'blue'
}]
}
]
},
projectCode: '',
projectName: '',
type: ''
};
},
created() {
let type = this.$route.query.type;
this.type = type;
if (type == 1) {
this.getbiddingProjectId();
}
this.projectCode = localStorage.getItem('projectCode');
this.projectName = localStorage.getItem('projectName');
},
methods: {
back(){
this.$router.go(-1)
back() {
this.$router.go(-1);
},
cancel() {
this.$router.go(-1)
this.$router.go(-1);
},
getfile(val) {
for (let item of val) {
item.accessoryUrl = item.fileUrl
item.accessoryUrl = item.fileUrl;
}
this.accessoryPOList = val;
},
// 获取详情
async getbiddingProjectId() {
let projectId = localStorage.getItem('projectId');
const { data, code, msg } = await biddingProjectId(projectId);
if (code == 200) {
data.accessoryPOList = data.accessoryVOList;
for (let item of data.accessoryPOList) {
item.name = item.fileName;
item.url = item.accessoryUrl;
}
this.ruleForm = data;
}
this.accessoryPOList = val
},
//提交表单
async submit() {
let ruleForm = this.ruleForm
ruleForm.projectId = localStorage.getItem("projectId")
ruleForm.accessoryPOList = this.accessoryPOList
let ruleForm = this.ruleForm;
ruleForm.projectId = localStorage.getItem('projectId');
ruleForm.accessoryPOList = this.accessoryPOList;
try {
const valid = await this.$refs['ruleForm'].validate();
if (valid) {
const { code, msg } = await bidMessage(this.ruleForm);
if (code === 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
});
setTimeout(() => {
this.$router.go(-1);
}, 1500);
} else if (code == 500) {
this.$message.error(msg);
}
}
} catch (err) {
console.log(err);
}
},
async submit1() {
let ruleForm = this.ruleForm;
ruleForm.projectId = localStorage.getItem('projectId');
ruleForm.accessoryPOList = this.accessoryPOList;
try {
const valid = await this.$refs['ruleForm'].validate()
const valid = await this.$refs['ruleForm'].validate();
if (valid) {
const {
code,
msg
} = await bidMessage(this.ruleForm)
const { code, msg } = await editBidding(this.ruleForm);
if (code === 200) {
this.$message({
message: msg,
type: 'success',
duration:1500
})
setTimeout(()=>{
this.$router.go(-1)
},1500)
}else if(code == 500){
this.$message.error(msg)
duration: 1500
});
setTimeout(() => {
this.$router.go(-1);
}, 1500);
} else if (code == 500) {
this.$message.error(msg);
}
}
} catch (err) {
console.log(err)
console.log(err);
}
}
}
}
};
</script>
<style scoped>
.ql-editor{
height:400px;
}
.bottomButton{
.ql-editor {
height: 400px;
}
.bottomButton {
margin-top: 20px;
}
.form{
}
.form {
padding-bottom: 80px;
}
}
</style>
......@@ -5,10 +5,27 @@
<div class="details">
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
<el-form-item label="上传附件" prop="file">
<upload :limit="1" accept=".pdf" tip="请上传一个招标文件(pdf),不要超过50M。" :max="50" @input="getfile"></upload>
<dataTable :table-data="ruleForm.bidBookDO" :columns="columns" :is-pageobj="false">
<el-table-column slot="operate" label="文件大小" align="center" fixed="right" width="300">
<template slot-scope="scope">
<div>{{ getMb(scope.row.size) }}KB</div>
</template>
</el-table-column>
<el-table-column slot="operate" label="价格" align="center" fixed="right" width="300">
<template slot-scope="scope">
<div>{{ scope.row.free ? scope.row.free : '无' }}</div>
</template>
</el-table-column>
</dataTable>
</el-form-item>
<el-form-item label="其他附件">
<upload :limit="5" tip="最多上传五个附件,单个不超过100M。" :type="1" :max="100" @input="getfile1"> </upload>
<dataTable :table-data="ruleForm.bidBookAccessoryDO" :columns="columns" :is-pageobj="false">
<el-table-column slot="operate" label="文件大小" align="center" fixed="right" width="300">
<template slot-scope="scope">
<div>{{ getMb(scope.row.size) }}KB</div>
</template>
</el-table-column>
</dataTable>
</el-form-item>
</el-form>
</div>
......@@ -17,11 +34,12 @@
</template>
<script>
import { creatProject } from '@api/purchaser/bid';
import dataTable from '@components/nopageTable.vue'
import upload from '@components/Upload/specialUpload.vue';
export default {
components: {
upload
upload,
dataTable
},
props: {
allForm: {
......@@ -41,6 +59,20 @@ export default {
}
};
return {
columns: [
{
label: '文件名称',
prop: 'name'
},
{
label: '上传时间',
prop: 'time'
},
{
slot: 'operate'
}
],
ruleForm: {
bidBookPO: [],
bidBookAccessoryPOList: []
......@@ -64,9 +96,6 @@ export default {
getfile1(val) {
this.ruleForm.bidBookAccessoryPOList = val;
},
async next() {
const valid = await this.$refs['ruleForm'].validate();
}
}
};
</script>
......
......@@ -195,11 +195,12 @@
</el-input>
</el-form-item>
<el-form-item label="附件:" prop="file">
<ul>
<li>
<a href=""></a>
<ul v-if='ruleForm.accessoryDOList!==undefined && ruleForm.accessoryDOList.length>0'>
<li v-for="(item,i) in ruleForm.accessoryDOList" :key="i">
<a :href="item.accessoryUrl">{{item.fileName}}</a>
</li>
</ul>
<div v-else></div>
</el-form-item>
</el-form>
</div>
......@@ -517,22 +518,6 @@ export default {
// },
computed: {},
created() {
// 默认操作
// let userInfo = JSON.parse(localStorage.getItem('userInfo'));
// this.ruleForm.purchaseAgent = userInfo.companyName;
// let phone = userInfo.phone;
// this.ruleForm.projectManager = userInfo.userId;
// this.ruleForm.contactsWay = phone;
// this.bidBookInfoPO.phone = phone;
// this.earnestInfoPO.phone = phone;
// this.ruleForm.contacts = userInfo.name;
// this.pageObj.companyId = localStorage.getItem('companyId');
// this.bidBookInfoPO.account = userInfo.bankAccount;
// this.bidBookInfoPO.bank = userInfo.bankName;
// this.bidBookInfoPO.accountName = userInfo.bankAccountName;
// this.earnestInfoPO.account = userInfo.bankAccount;
// this.earnestInfoPO.bank = userInfo.bankName;
// this.earnestInfoPO.userName = userInfo.bankAccountName;
this.userList();
this.industryList();
this.projectClassifyList();
......
......@@ -73,6 +73,8 @@ export default {
data.createTime = data.createTime.substring(0, 10);
data.bidBookInfoPO=data.bidBookInfoDO
data.earnestInfoPO=data.earnestInfoDO
let userInfo=JSON.parse(localStorage.getItem("userInfo"))
data.purchaseAgent=userInfo.companyName
this.detail = data;
}
}
......
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