Commit bc1379dd authored by kzy's avatar kzy

Merge branch 'project1' of http://gitlab.91isoft.com:90/yangshuo/template_vue into project1

parents 7546f10d 2d17fcf4
import request from '@/utils/request' import request from '@/utils/request'
import Qs from 'qs'
// 查询基础信息列表 // 查询基础信息列表
export function listWbApply(query) { export function listWbApply(query) {
return request({ return request({
...@@ -8,88 +7,10 @@ export function listWbApply(query) { ...@@ -8,88 +7,10 @@ export function listWbApply(query) {
params: query params: query
}) })
} }
export function getlistRole() { // 逻辑删除基础信息接口
export function deleteLogical(id) {
return request({ return request({
url: 'system/role/listAll', url: '/wbapply/deleteLogical/' + id,
method: 'get'
})
}
// 查询角色详细
export function getRole(businessId) {
return request({
url: '/system/role/detail/' + businessId,
method: 'get'
})
}
// 新增角色
export function addRole(data) {
data = Qs.stringify(data)
return request({
url: '/system/role/add',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
// 修改角色
export function updateRole(data) {
const businessId = data.businessId
data = Qs.stringify(data)
return request({
url: '/system/role/update/' + businessId,
method: 'put',
data,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
// 角色数据权限
export function dataScope(data) {
data = Qs.stringify(data)
return request({
url: '/system/role/dataScope',
method: 'put',
data,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
// 角色状态修改
export function changeRoleStatus(businessId, flag) {
const data = {
businessId,
flag
}
return request({
url: '/system/role/changeStatus',
method: 'put',
params: data
})
}
// 删除角色
export function delRole(roleId) {
return request({
url: '/system/role/deleteLogical/' + roleId,
method: 'delete' method: 'delete'
}) })
} }
// 导出角色
export function exportRole(query) {
return request({
url: '/system/role/export',
method: 'get',
params: query,
responseType: 'blob'
})
}
...@@ -9,6 +9,7 @@ export function listLog(queryParams) { ...@@ -9,6 +9,7 @@ export function listLog(queryParams) {
}) })
} }
/* TODO: 用来查询单项出入库记录的废弃详情信息 */
export function findSingleLogDetail(singleLogIdAndFqYs) { export function findSingleLogDetail(singleLogIdAndFqYs) {
return request({ return request({
url: '/wbwarehouselog/detail', url: '/wbwarehouselog/detail',
...@@ -19,3 +20,12 @@ export function findSingleLogDetail(singleLogIdAndFqYs) { ...@@ -19,3 +20,12 @@ export function findSingleLogDetail(singleLogIdAndFqYs) {
} }
}) })
} }
/* TODO: 用来导出表单信息 */
export function exportInventoryRecord() {
return request({
url: '/wbwarehouselog/export',
method: 'get',
responseType: 'blob'
})
}
<template> <template>
<div style="padding:5px 10px"> <div style="padding:5px 10px">
<div class="mb12 font-small-bold">{{ allTableArguments.listName }}</div> <div class="mb12 font-small-bold">{{ allTableArguments.listName }}</div>
<div class="tableList" style=" height:600px;"> <!-- TODO:如果需要定长度的话可以使用这个在组件外部 <div class="tableList" style=" height: 600px;">-->
<el-scrollbar style="height: 100%;"> <el-scrollbar style="height: 100%;">
<el-table <el-table
v-loading="allTableArguments.loading" v-loading="allTableArguments.loading"
class="processList" class="processList"
border border
:data="allTableArguments.List" :data="allTableArguments.List"
style="width: 100%" style="width: 100%;"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column type="index" label="序号" width="50"/> <el-table-column type="index" label="序号" width="50" />
<!-- TODO: 选择框是否开启,selectable控制是否单行禁用 --> <!-- TODO: 选择框是否开启,selectable控制是否单行禁用 -->
<el-table-column v-if="allTableArguments.columObj.selection" type="selection" :selectable="allTableArguments.columObj.selectable" width="50px" /> <el-table-column v-if="allTableArguments.columObj.selection" type="selection" :selectable="allTableArguments.columObj.selectable" width="50px" />
<!-- TODO: 普通列 --> <!-- TODO: 普通列 -->
<el-table-column <el-table-column
v-for="(column,columIndex) in allTableArguments.columObj.columnData" v-for="(column,columIndex) in allTableArguments.columObj.columnData"
:key="columIndex" :key="columIndex"
:prop="column.prop" :prop="column.prop"
:label="column.label" :label="column.label"
:width="column.width" :width="column.width"
:fixed="column.fixed" :fixed="column.fixed"
:align="column.align || 'center'" :align="column.align || 'center'"
:sortable="column.sortable" :sortable="column.sortable"
:index="columIndex" :index="columIndex"
show-overflow-tooltip show-overflow-tooltip
> >
<template slot-scope="{row,$index}"> <template slot-scope="{row,$index}">
<!-- 默认展示 --> <!-- 默认展示 -->
<span v-if="column.text && column.editRow !== $index">{{ row[column.prop] || '-' }}</span> <span v-if="column.text && column.editRow !== $index">{{ row[column.prop] || '-' }}</span>
<!-- 状态对象展示 --> <!-- 状态对象展示 -->
<span v-if="column.status && row[column.prop]">{{ row[column.prop].msg }}</span> <span v-if="column.status && row[column.prop]">{{ row[column.prop].msg }}</span>
<!-- 自定义内容 --> <!-- 自定义内容 -->
<span v-if="column.ownDefined">{{ column.ownDefinedReturn(row,$index) }}</span> <span v-if="column.ownDefined">{{ column.ownDefinedReturn(row,$index) }}</span>
<!-- TODO: 时间数据 --> <!-- TODO: 时间数据 -->
<span v-if="column.time">{{ row[column.prop] | transformDateByFormat('YYYY-MM-DD HH:mm') }}</span> <span v-if="column.time">{{ row[column.prop] | transformDateByFormat('YYYY-MM-DD HH:mm') }}</span>
<!-- switch开关 --> <!-- switch开关 -->
<el-switch v-if="column.switch" v-model="row[column.prop]" :inactive-text="row[column.prop] ? column.openText:column.closeText" @change="switchChange(row,$index,column.prop)" /> <el-switch v-if="column.switch" v-model="row[column.prop]" :inactive-text="row[column.prop] ? column.openText:column.closeText" @change="switchChange(row,$index,column.prop)" />
<!-- 图片展示 --> <!-- 图片展示 -->
<el-popover trigger="hover" placement="top" popper-class="popper"> <el-popover trigger="hover" placement="top" popper-class="popper">
<img v-if="column.image" :src="viewUrl + row[column.prop]" alt=""> <img v-if="column.image" :src="viewUrl + row[column.prop]" alt="">
<el-image v-if="column.image" slot="reference" :src="viewUrl + row[column.prop]" /> <el-image v-if="column.image" slot="reference" :src="viewUrl + row[column.prop]" />
</el-popover> </el-popover>
<!-- 图片数组 --> <!-- 图片数组 -->
<el-popover v-if="column.imageArr" trigger="hover" placement="top" popper-class="popper"> <el-popover v-if="column.imageArr" trigger="hover" placement="top" popper-class="popper">
<img v-if="row[column.prop].length>0" :src="row[column.prop][0]" alt=""> <img v-if="row[column.prop].length>0" :src="row[column.prop][0]" alt="">
<el-image v-if="row[column.prop].length >0" slot="reference" :src="row[column.prop][0]" :preview-src-list="row[column.prop]" /> <el-image v-if="row[column.prop].length >0" slot="reference" :src="row[column.prop][0]" :preview-src-list="row[column.prop]" />
</el-popover> </el-popover>
<!-- 可编辑input,仅在text默认展示类型才可编辑--> <!-- 可编辑input,仅在text默认展示类型才可编辑-->
<el-input v-if="column.editRow === $index" v-model="row[column.prop]" v-focus @blur="editInputBlur(row,$index,column.prop,columIndex)" /> <el-input v-if="column.editRow === $index" v-model="row[column.prop]" v-focus @blur="editInputBlur(row,$index,column.prop,columIndex)" />
<!-- 操作按钮 --> <!-- 操作按钮 -->
<span v-if="column.isOperation" class="processListBtns"> <span v-if="column.isOperation" class="processListBtns">
<span v-for="(operations, index) in column.operation" :key="index"> <span v-for="(operations, index) in column.operation" :key="index">
<el-button v-if=" operations.clickType === '1' " :icon="operations.icon" :type="typeParent" :style="{color:operations.color}" :size="size" @click="handleDetail(row,$index)">{{ operations.label }}</el-button> <el-button v-if=" operations.clickType === '1' " :icon="operations.icon" :type="typeParent" :style="{color:operations.color}" :size="size" @click="handleDetail(row,$index)">{{ operations.label }}</el-button>
<el-button v-else-if=" operations.clickType === '2' " :icon="operations.icon" :type="typeParent" :style="{color:operations.color}" :size="size" @click="handleUpdate(row,$index)">{{ operations.label }}</el-button> <el-button v-else-if=" operations.clickType === '2' " :icon="operations.icon" :type="typeParent" :style="{color:operations.color}" :size="size" @click="handleUpdate(row,$index)">{{ operations.label }}</el-button>
<el-button v-else-if=" operations.clickType === '3' " :icon="operations.icon" :type="typeParent" :style="{color:operations.color}" :size="size" @click="handleDelete(row,$index)">{{ operations.label }}</el-button> <el-button v-else-if=" operations.clickType === '3' " :icon="operations.icon" :type="typeParent" :style="{color:operations.color}" :size="size" @click="handleDelete(row,$index)">{{ operations.label }}</el-button>
</span>
</span> </span>
</template> </span>
</el-table-column> </template>
</el-table> </el-table-column>
</el-scrollbar> </el-table>
<div /> </el-scrollbar>
</div> <div />
<!-- </div>-->
</div> </div>
</template> </template>
......
...@@ -163,6 +163,7 @@ export default { ...@@ -163,6 +163,7 @@ export default {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
.title{ .title{
font-size: 16px;
color: #333; color: #333;
font-weight: 700; font-weight: 700;
} }
......
...@@ -127,24 +127,21 @@ ...@@ -127,24 +127,21 @@
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body :close-on-click-modal="false" @close="cancel"> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body :close-on-click-modal="false" @close="cancel">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="pn" prop="pn"> <el-form-item label="pn" prop="pn">
<el-input v-model.trim="form.pn" show-word-limit :maxlength="30" placeholder="请输入pn" /> <el-input v-model.trim="form.pn" :maxlength="30" placeholder="请输入pn" />
</el-form-item>
<el-form-item label="ptype" prop="ptype">
<el-input v-model.trim="form.ptype" show-word-limit :maxlength="30" placeholder="请输入ptype" />
</el-form-item> </el-form-item>
<el-form-item label="pgx" prop="pgx"> <el-form-item label="pgx" prop="pgx">
<el-input v-model.trim="form.pgx" show-word-limit :maxlength="30" placeholder="请输入pgx" /> <el-input v-model.trim="form.pgx" :maxlength="30" placeholder="请输入pgx" />
</el-form-item> </el-form-item>
<el-form-item label="prank" prop="prank"> <el-form-item label="prank" prop="prank">
<el-input v-model.trim="form.prank" show-word-limit :maxlength="30" placeholder="请输入prank" /> <el-input v-model.trim="form.prank" :maxlength="30" placeholder="请输入prank" />
</el-form-item> </el-form-item>
<el-form-item label="pissb" prop="pissb"> <el-form-item label="pissb" prop="pissb" >
<el-select <el-select
v-model="form.pissb" v-model="form.pissb"
placeholder="请选择pissb" placeholder="请选择pissb"
clearable clearable
size="small" size="small"
style="width: 150px" style="width: 341px"
> >
<el-option <el-option
v-for="dict in statusOptions" v-for="dict in statusOptions"
...@@ -155,10 +152,10 @@ ...@@ -155,10 +152,10 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="psm" prop="psm"> <el-form-item label="psm" prop="psm">
<el-input v-model.trim="form.psm" show-word-limit :maxlength="30" placeholder="请输入psm" /> <el-input v-model.trim="form.psm" :maxlength="30" placeholder="请输入psm" />
</el-form-item> </el-form-item>
<el-form-item label="psy" prop="psy"> <el-form-item label="psy" prop="psy">
<el-input v-model.trim="form.psy" show-word-limit :maxlength="30" placeholder="请输入psy" /> <el-input v-model.trim="form.psy" :maxlength="30" placeholder="请输入psy" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
...@@ -213,31 +210,6 @@ export default { ...@@ -213,31 +210,6 @@ export default {
dictValue: '0' dictValue: '0'
} }
], ],
// 数据范围选项
dataScopeOptions: [
{
value: '1',
label: '全部数据权限'
},
{
value: '2',
label: '自定数据权限'
},
{
value: '3',
label: '本部门数据权限'
},
{
value: '4',
label: '本部门及以下数据权限'
},
{
value: '5',
label: '仅本人数据权限'
}
],
// 部门列表
tOptions: [],
// 查询参数 // 查询参数
queryParams: { queryParams: {
page: 1, page: 1,
...@@ -308,40 +280,6 @@ export default { ...@@ -308,40 +280,6 @@ export default {
this.loading = false this.loading = false
}) })
}, },
// 所有菜单节点数据
getMenuAllCheckedKeys() {
// 目前被选中的菜单节点
const checkedKeys = this.$refs.menu.getHalfCheckedKeys()
// 半选中的菜单节点
const halfCheckedKeys = this.$refs.menu.getCheckedKeys()
checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys)
return checkedKeys
},
// 所有部门节点数据
getDeptAllCheckedKeys() {
// 目前被选中的部门节点
const checkedKeys = this.$refs.dept.getHalfCheckedKeys()
// // 半选中的部门节点
const halfCheckedKeys = this.$refs.dept.getCheckedKeys()
checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys)
return this.$refs.dept.getCheckedKeys()
},
/** 根据角色ID查询菜单树结构 */
getRoleMenuTreeselect(roleId) {
return roleMenuTreeselect(roleId).then(response => {
this.menuOptions = response.data.menus
return response
})
},
/** 根据角色ID和菜单ID查询部门树结构 */
getRoleDeptTreeselect(roleId, menuId) {
return roleDeptTreeselect(roleId, menuId).then(response => {
this.form.deptCheckStrictly = response.data.deptCheckStrictly
this.deptOptions = response.data.depts
this.form.dataScope = this.dataScopeOptions[response.data.dataScope - 1].value
return response
})
},
// 取消按钮 // 取消按钮
cancel() { cancel() {
this.open = false this.open = false
......
...@@ -157,21 +157,7 @@ ...@@ -157,21 +157,7 @@
</template> </template>
<script> <script>
// import { import { listWbApply, deleteLogical } from '@/api/equipment/draw'
// addRole,
// changeRoleStatus,
// dataScope,
// delRole,
// exportRole,
// getRole,
// listBasicInfo,
// updateRole
// } from '@/api/equipment/basicInfo'
import { roleMenuTreeselect, roleMenuTreeselectMC, treeselect as menuTreeselect } from '@/api/system/menu'
import { roleDeptTreeselect, treeselect as deptTreeselect } from '@/api/system/dept'
import { listBasicInfo } from '@/api/equipment/basicInfo'
import { listWbApply } from '@/api/equipment/draw'
// import { getRolesByInsId } from '../../../api/businessManage/template'
export default { export default {
name: 'Role', name: 'Role',
data() { data() {
...@@ -486,22 +472,22 @@ export default { ...@@ -486,22 +472,22 @@ export default {
this.title = '添加角色' this.title = '添加角色'
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { // handleUpdate(row) {
this.reset() // this.reset()
const roleId = row.businessId || this.ids // const roleId = row.businessId || this.ids
const roleMenu = this.getRoleMenuTreeselect(roleId) // const roleMenu = this.getRoleMenuTreeselect(roleId)
getRole(roleId).then(response => { // getRole(roleId).then(response => {
this.form = response.data // this.form = response.data
this.open = true // this.open = true
this.getMenuTreeselect(roleId) // this.getMenuTreeselect(roleId)
this.$nextTick(() => { // this.$nextTick(() => {
roleMenu.then(res => { // roleMenu.then(res => {
this.$refs.menu.setCheckedKeys(res.data.checkedKeys) // this.$refs.menu.setCheckedKeys(res.data.checkedKeys)
}) // })
}) // })
this.title = '修改角色' // this.title = '修改角色'
}) // })
}, // },
/** 提交按钮 */ /** 提交按钮 */
submitForm: function() { submitForm: function() {
this.$refs['form'].validate(valid => { this.$refs['form'].validate(valid => {
...@@ -528,20 +514,18 @@ export default { ...@@ -528,20 +514,18 @@ export default {
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const roleIds = row.businessId || this.ids const id = row.businessId
this.$confirm('所选择数据被删除后不可再恢复,是否继续?', '提示', { this.$confirm('是否确认操作?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(function() { }).then(res => {
return delRole(roleIds) deleteLogical(id).then(res => {
}).then(() => { if (res.code === 200) {
this.getList() this.$message.success('操作成功')
this.$message({ this.getList()
message: '删除成功', }
type: 'success'
}) })
}).catch(function() {
}) })
} }
} }
......
...@@ -12,9 +12,9 @@ ...@@ -12,9 +12,9 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="phd" prop="phd"> <el-form-item label="phd" prop="phdStr">
<el-input <el-input
v-model="queryParams.phd" v-model="queryParams.phdStr"
placeholder="请输入phd" placeholder="请输入phd"
clearable clearable
size="small" size="small"
...@@ -22,9 +22,9 @@ ...@@ -22,9 +22,9 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="prank" prop="prank"> <el-form-item label="prank" prop="prankStr">
<el-input <el-input
v-model="queryParams.prank" v-model="queryParams.prankStr"
placeholder="请输入prank" placeholder="请输入prank"
clearable clearable
size="small" size="small"
...@@ -157,21 +157,7 @@ ...@@ -157,21 +157,7 @@
</template> </template>
<script> <script>
// import { import { listWbApply, deleteLogical } from '@/api/equipment/draw'
// addRole,
// changeRoleStatus,
// dataScope,
// delRole,
// exportRole,
// getRole,
// listBasicInfo,
// updateRole
// } from '@/api/equipment/basicInfo'
import { roleMenuTreeselect, roleMenuTreeselectMC, treeselect as menuTreeselect } from '@/api/system/menu'
import { roleDeptTreeselect, treeselect as deptTreeselect } from '@/api/system/dept'
import { listBasicInfo } from '@/api/equipment/basicInfo'
import { listWbApply } from '@/api/equipment/draw'
// import { getRolesByInsId } from '../../../api/businessManage/template'
export default { export default {
name: 'Role', name: 'Role',
data() { data() {
...@@ -486,22 +472,22 @@ export default { ...@@ -486,22 +472,22 @@ export default {
this.title = '添加角色' this.title = '添加角色'
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { // handleUpdate(row) {
this.reset() // this.reset()
const roleId = row.businessId || this.ids // const roleId = row.businessId || this.ids
const roleMenu = this.getRoleMenuTreeselect(roleId) // const roleMenu = this.getRoleMenuTreeselect(roleId)
getRole(roleId).then(response => { // getRole(roleId).then(response => {
this.form = response.data // this.form = response.data
this.open = true // this.open = true
this.getMenuTreeselect(roleId) // this.getMenuTreeselect(roleId)
this.$nextTick(() => { // this.$nextTick(() => {
roleMenu.then(res => { // roleMenu.then(res => {
this.$refs.menu.setCheckedKeys(res.data.checkedKeys) // this.$refs.menu.setCheckedKeys(res.data.checkedKeys)
}) // })
}) // })
this.title = '修改角色' // this.title = '修改角色'
}) // })
}, // },
/** 提交按钮 */ /** 提交按钮 */
submitForm: function() { submitForm: function() {
this.$refs['form'].validate(valid => { this.$refs['form'].validate(valid => {
...@@ -528,20 +514,18 @@ export default { ...@@ -528,20 +514,18 @@ export default {
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const roleIds = row.businessId || this.ids const id = row.businessId
this.$confirm('所选择数据被删除后不可再恢复,是否继续?', '提示', { this.$confirm('是否确认操作?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(function() { }).then(res => {
return delRole(roleIds) deleteLogical(id).then(res => {
}).then(() => { if (res.code === 200) {
this.getList() this.$message.success('操作成功')
this.$message({ this.getList()
message: '删除成功', }
type: 'success'
}) })
}).catch(function() {
}) })
} }
} }
......
...@@ -212,7 +212,7 @@ ...@@ -212,7 +212,7 @@
</template> </template>
<script> <script>
import { listLog, findSingleLogDetail } from '@/api/processMangement/InventoryRecord' import { listLog, findSingleLogDetail, exportInventoryRecord } from '@/api/processMangement/InventoryRecord'
import BaseTable from '@/components/Table/BaseTable/index.vue' import BaseTable from '@/components/Table/BaseTable/index.vue'
export default { export default {
...@@ -490,7 +490,7 @@ export default { ...@@ -490,7 +490,7 @@ export default {
/* TODO: 如果库状态==='4' 并且返回的状态码为200的时候,才会将可变的详情字段设置为true,去激活并打开 */ /* TODO: 如果库状态==='4' 并且返回的状态码为200的时候,才会将可变的详情字段设置为true,去激活并打开 */
this.activateAbandonedState = true this.activateAbandonedState = true
} else { } else {
/* TODO: 如果状态码不对则不会激活可变字段,并且抛出错误信息response.message */ /* TODO: 如果状态码不对则不会激活可变字段,只会对普通字段进行赋值,并且抛出错误信息response.message */
this.$message({ this.$message({
showClose: true, showClose: true,
message: response.message, message: response.message,
...@@ -503,6 +503,31 @@ export default { ...@@ -503,6 +503,31 @@ export default {
} }
this.title = '记录详情' this.title = '记录详情'
this.openDetails = true this.openDetails = true
},
handleExport() {
this.$confirm('是否确认导出所有出入库记录信息?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function() {
return exportInventoryRecord().then(response => {
const blob = new Blob([response])
const downloadElement = document.createElement('a')
// TODO: 创建下载的链接
const href = window.URL.createObjectURL(blob)
downloadElement.href = href
// TODO: 下载后文件名
downloadElement.download = '出入库记录' + '.xls'
document.body.appendChild(downloadElement)
// TODO: 点击下载
downloadElement.click()
// TODO: 下载完成移除元素
document.body.removeChild(downloadElement)
// TODO: 释放掉blob对象
window.URL.revokeObjectURL(href)
// this.download(response.msg);
})
})
} }
} }
} }
......
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