Commit 7c5063c1 by H.wb.wang.peixun

接口对接

parent fbd877c9
...@@ -3,7 +3,7 @@ import request from '@/utils/request' ...@@ -3,7 +3,7 @@ import request from '@/utils/request'
// 查询字典列表 // 查询字典列表
export function listDict(query) { export function listDict(query) {
return request({ return request({
url: '/school-paper/dict/list', url: '/school-paper/question-type/list',
method: 'get', method: 'get',
params: query params: query
}) })
...@@ -12,7 +12,7 @@ export function listDict(query) { ...@@ -12,7 +12,7 @@ export function listDict(query) {
// 查询字典详细 // 查询字典详细
export function getDict(id) { export function getDict(id) {
return request({ return request({
url: '/school-paper/dict/' + id, url: '/school-paper/question-type/' + id,
method: 'get' method: 'get'
}) })
} }
...@@ -20,7 +20,7 @@ export function getDict(id) { ...@@ -20,7 +20,7 @@ export function getDict(id) {
// 新增字典 // 新增字典
export function addDict(data) { export function addDict(data) {
return request({ return request({
url: '/school-paper/dict', url: '/school-paper/question-type',
method: 'post', method: 'post',
data: data data: data
}) })
...@@ -29,7 +29,7 @@ export function addDict(data) { ...@@ -29,7 +29,7 @@ export function addDict(data) {
// 修改字典 // 修改字典
export function updateDict(data) { export function updateDict(data) {
return request({ return request({
url: '/school-paper/dict', url: '/school-paper/question-type',
method: 'put', method: 'put',
data: data data: data
}) })
...@@ -38,7 +38,7 @@ export function updateDict(data) { ...@@ -38,7 +38,7 @@ export function updateDict(data) {
// 删除字典 // 删除字典
export function delDict(id) { export function delDict(id) {
return request({ return request({
url: '/school-paper/dict/' + id, url: '/school-paper/question-type/' + id,
method: 'delete' method: 'delete'
}) })
} }
...@@ -43,9 +43,9 @@ export function updateQuestionBank(data) { ...@@ -43,9 +43,9 @@ export function updateQuestionBank(data) {
} }
// 删除题库主 // 删除题库主
export function delQuestionBank(id) { export function delQuestionBank(ids) {
return request({ return request({
url: '/school-paper/questionBank/' + id, url: '/school-paper/questionBank/' + ids,
method: 'delete' method: 'delete'
}) })
} }
\ No newline at end of file
...@@ -16,11 +16,10 @@ export function getTestPaper(id) { ...@@ -16,11 +16,10 @@ export function getTestPaper(id) {
method: 'get' method: 'get'
}) })
} }
// 新增试卷 // 新增试卷
export function addTestPaper(data) { export function addTestPaper(data) {
return request({ return request({
url: '/school-paper/testPaper', url: '/school-paper/testPaper/randomGeneration',
method: 'post', method: 'post',
data: data data: data
}) })
...@@ -42,3 +41,12 @@ export function delTestPaper(id) { ...@@ -42,3 +41,12 @@ export function delTestPaper(id) {
method: 'delete' method: 'delete'
}) })
} }
// 查询题库主列表
export function questionType(query) {
return request({
url: '/school-paper/question-type/list',
method: 'get',
params: query
})
}
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
:headers="headers" :headers="headers"
:file-list="fileList" :file-list="fileList"
:on-preview="handlePictureCardPreview" :on-preview="handlePictureCardPreview"
:class="{hide: this.fileList.length >= this.limit}" :class="{ hide: this.fileList.length >= this.limit }"
> >
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
</el-upload> </el-upload>
...@@ -23,8 +23,12 @@ ...@@ -23,8 +23,12 @@
<!-- 上传提示 --> <!-- 上传提示 -->
<div class="el-upload__tip" slot="tip" v-if="showTip"> <div class="el-upload__tip" slot="tip" v-if="showTip">
请上传 请上传
<template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template> <template v-if="fileSize">
<template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b>
</template>
<template v-if="fileType">
格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b>
</template>
的文件 的文件
</div> </div>
...@@ -67,8 +71,8 @@ export default { ...@@ -67,8 +71,8 @@ export default {
// 是否显示提示 // 是否显示提示
isShowTip: { isShowTip: {
type: Boolean, type: Boolean,
default: true default: true,
} },
}, },
data() { data() {
return { return {
...@@ -78,40 +82,68 @@ export default { ...@@ -78,40 +82,68 @@ export default {
dialogVisible: false, dialogVisible: false,
hideUpload: false, hideUpload: false,
baseUrl: process.env.VUE_APP_BASE_API, baseUrl: process.env.VUE_APP_BASE_API,
uploadImgUrl: process.env.VUE_APP_BASE_API + "/school-paper/banner/uploadFile", // 上传的图片服务器地址 // uploadImgUrl: "https://farming.nyinhong.com/api/admin/bicycle/maintenance/upload", // 上传的图片服务器地址
// uploadImgUrl: process.env.VUE_APP_BASE_API + "/admin/bicycle/maintenance/uploadFile", // 上传的图片服务器地址
// headers: {
// Authorization: "Bearer " + getToken(),
// },
uploadImgUrl: process.env.VUE_APP_BASE_API + '/admin/bicycle/maintenance/uploadFile',
headers: { headers: {
Authorization: "Bearer " + getToken(), Authorization: "Bearer " + getToken(),
}, },
fileList: [] fileList: [],
}; };
}, },
watch: { watch: {
value: { value: {
async handler(val) { async handler(val) {
if (val) { if (val) {
// 首先将值转为数组 let list = [];
let list; // 用于确定传递的值是否是一个
if (Array.isArray(val)) { if (Array.isArray(val)) {
list = val; list = val;
} else { } else {
await listByIds(val).then(res => { list.push(val);
list = res.data; // await listByIds(val).then(res => {
}) // list = res.data;
// })
} }
// 然后将数组转为对象数组 this.fileList = list.map((item) => {
this.fileList = list.map(item => {
// 此处name使用ossId 防止删除出现重名 // 此处name使用ossId 防止删除出现重名
item = { name: item.ossId, url: item.url, ossId: item.ossId }; if (item.hasOwnProperty("url")) {
item = { url: item.url };
} else {
item = { url: item };
}
return item; return item;
}); });
console.log(this.fileList, "土地你");
// this.uploadList = this.fileList
// 然后将数组转为对象数组
// 首先将值转为数组
// let list;
// if (Array.isArray(val)) {
// list = val;
// } else {
// await listByIds(val).then(res => {
// list = res.data;
// })
// }
// // 然后将数组转为对象数组
// this.fileList = list.map(item => {
// // 此处name使用ossId 防止删除出现重名
// item = { name: item.ossId, url: item.url, ossId: item.ossId };
// return item;
// });
} else { } else {
this.fileList = []; this.fileList = [];
return []; return [];
} }
}, },
deep: true, deep: true,
immediate: true immediate: true,
} },
}, },
computed: { computed: {
// 是否显示提示 // 是否显示提示
...@@ -138,7 +170,9 @@ export default { ...@@ -138,7 +170,9 @@ export default {
} }
if (!isImg) { if (!isImg) {
this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`); this.$modal.msgError(
`文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`
);
return false; return false;
} }
if (this.fileSize) { if (this.fileSize) {
...@@ -157,8 +191,10 @@ export default { ...@@ -157,8 +191,10 @@ export default {
}, },
// 上传成功回调 // 上传成功回调
handleUploadSuccess(res, file) { handleUploadSuccess(res, file) {
console.log(res, "上传成功回调");
if (res.code === 200) { if (res.code === 200) {
this.uploadList.push({ name: res.data.fileName, url: res.data.url, ossId: res.data.ossId }); // this.uploadList.push({ name: res.data.fileName, url: res.data.url, ossId: res.data.ossId });
this.uploadList.push({ url: res.data.url });
this.uploadedSuccessfully(); this.uploadedSuccessfully();
} else { } else {
this.number--; this.number--;
...@@ -170,13 +206,19 @@ export default { ...@@ -170,13 +206,19 @@ export default {
}, },
// 删除图片 // 删除图片
handleDelete(file) { handleDelete(file) {
const findex = this.fileList.map(f => f.name).indexOf(file.name); console.log(file,'文件')
if(findex > -1) { const findex = this.fileList.map((f) => f.url).indexOf(file.url);
let ossId = this.fileList[findex].ossId; if (findex > -1) {
delOss(ossId);
this.fileList.splice(findex, 1); this.fileList.splice(findex, 1);
this.$emit("input", this.listToString(this.fileList)); this.$emit("input", this.fileList);
} }
// const findex = this.fileList.map((f) => f.name).indexOf(file.name);
// if (findex > -1) {
// let ossId = this.fileList[findex].ossId;
// delOss(ossId);
// this.fileList.splice(findex, 1);
// this.$emit("input", this.listToString(this.fileList));
// }
}, },
// 上传失败 // 上传失败
handleUploadError(res) { handleUploadError(res) {
...@@ -185,11 +227,13 @@ export default { ...@@ -185,11 +227,13 @@ export default {
}, },
// 上传结束处理 // 上传结束处理
uploadedSuccessfully() { uploadedSuccessfully() {
if (this.number > 0 && this.uploadList.length === this.number) { // && this.uploadList.length === this.number
if (this.number > 0) {
this.fileList = this.fileList.concat(this.uploadList); this.fileList = this.fileList.concat(this.uploadList);
this.uploadList = []; this.uploadList = [];
this.number = 0; this.number = 0;
this.$emit("input", this.listToString(this.fileList)); this.$emit("input", this.fileList);
// this.$emit("input", this.listToString(this.fileList));
this.$modal.closeLoading(); this.$modal.closeLoading();
} }
}, },
...@@ -203,13 +247,18 @@ export default { ...@@ -203,13 +247,18 @@ export default {
let strs = ""; let strs = "";
separator = separator || ","; separator = separator || ",";
for (let i in list) { for (let i in list) {
if (list[i].ossId) { if (list[i].url) {
strs += list[i].ossId + separator; strs += list[i].url + separator;
} }
} }
// for (let i in list) {
// if (list[i].ossId) {
// strs += list[i].ossId + separator;
// }
// }
return strs != "" ? strs.substr(0, strs.length - 1) : ""; return strs != "" ? strs.substr(0, strs.length - 1) : "";
} },
} },
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
...@@ -223,9 +272,9 @@ export default { ...@@ -223,9 +272,9 @@ export default {
transition: all 0s; transition: all 0s;
} }
::v-deep .el-list-enter, .el-list-leave-active { ::v-deep .el-list-enter,
.el-list-leave-active {
opacity: 0; opacity: 0;
transform: translateY(0); transform: translateY(0);
} }
</style> </style>
// 图片上传地址
let hostUrl = 'http://farming.nyinhong.com/api'
// 基础配置
const apiBaseConfig = {
// 图片上传地址
domain: hostUrl, //后端请求路径
}
export default apiBaseConfig
\ No newline at end of file
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
<el-input v-model="form.bannerTitle" placeholder="请输入标题" /> <el-input v-model="form.bannerTitle" placeholder="请输入标题" />
</el-form-item> </el-form-item>
<el-form-item label="上传" prop="url"> <el-form-item label="上传" prop="url">
<imageUpload :limit="1" v-model="form.url" /> <imageUpload :limit="1" v-model="form.url" ref="refUpload" placeholder="请上传图片"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer" style="text-align: center;"> <div slot="footer" class="dialog-footer" style="text-align: center;">
......
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
<el-table v-loading="loading" :data="dictList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="dictList" @selection-change="handleSelectionChange">
<!-- <el-table-column type="selection" width="55" align="center" /> --> <!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column label="类别名称" prop="name" /> <el-table-column label="类别名称" prop="typeValue" />
<!-- <el-table-column label="父级id" align="center" prop="parentId" /> <!-- <el-table-column label="父级id" align="center" prop="parentId" />
<el-table-column label="类型:1 类别,2 阶段,3 班级" align="center" prop="type" /> <el-table-column label="类型:1 类别,2 阶段,3 班级" align="center" prop="type" />
<el-table-column label="名称" align="center" prop="typeValue" /> <el-table-column label="名称" align="center" prop="typeValue" />
...@@ -107,18 +107,18 @@ ...@@ -107,18 +107,18 @@
<!-- 添加或修改字典对话框 --> <!-- 添加或修改字典对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<!-- <el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="父级id" prop="parentId"> <!-- <el-form-item label="父级id" prop="parentId">
<el-input v-model="form.parentId" placeholder="请输入父级id" /> <el-input v-model="form.parentId" placeholder="请输入父级id" />
</el-form-item> </el-form-item>
<el-form-item label="名称" prop="typeValue"> <el-form-item label="名称" prop="typeValue">
<el-input v-model="form.typeValue" placeholder="请输入名称" /> <el-input v-model="form.typeValue" placeholder="请输入名称" />
</el-form-item> -->
<el-form-item label="类别名称" prop="typeValue">
<el-input v-model="form.typeValue" placeholder="请输入类别名称" />
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> </el-form>
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form> -->
<el-input v-model="form.remark" placeholder="请输入类别名称" />
<div slot="footer" class="dialog-footer" style="text-align: center;"> <div slot="footer" class="dialog-footer" style="text-align: center;">
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button> <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
...@@ -129,7 +129,7 @@ ...@@ -129,7 +129,7 @@
</template> </template>
<script> <script>
// import { listDict, getDict, delDict, addDict, updateDict } from "@/api/school-paper/dict"; import { listDict, getDict, delDict, addDict, updateDict } from "@/api/school-paper/dict";
export default { export default {
name: "Dict", name: "Dict",
...@@ -150,9 +150,7 @@ export default { ...@@ -150,9 +150,7 @@ export default {
// 总条数 // 总条数
total: 0, total: 0,
// 字典表格数据 // 字典表格数据
dictList: [{ dictList: [],
name:'1'
}],
// 弹出层标题 // 弹出层标题
title: "", title: "",
// 是否显示弹出层 // 是否显示弹出层
...@@ -170,29 +168,14 @@ export default { ...@@ -170,29 +168,14 @@ export default {
form: {}, form: {},
// 表单校验 // 表单校验
rules: { rules: {
id: [
{ required: true, message: "主键id不能为空", trigger: "blur" }
],
parentId: [
{ required: true, message: "父级id不能为空", trigger: "blur" }
],
type: [
{ required: true, message: "类型:1 类别,2 阶段,3 班级不能为空", trigger: "change" }
],
typeValue: [ typeValue: [
{ required: true, message: "名称不能为空", trigger: "blur" } { required: true, message: "请输入类别名称", trigger: "blur" }
],
remark: [
{ required: true, message: "备注不能为空", trigger: "blur" }
],
typeStatus: [
{ required: true, message: "状态:0正常,1删除不能为空", trigger: "change" }
], ],
} }
}; };
}, },
created() { created() {
// this.getList(); this.getList();
}, },
methods: { methods: {
/** 查询字典列表 */ /** 查询字典列表 */
...@@ -212,16 +195,7 @@ export default { ...@@ -212,16 +195,7 @@ export default {
// 表单重置 // 表单重置
reset() { reset() {
this.form = { this.form = {
id: undefined,
parentId: undefined,
type: undefined,
typeValue: undefined, typeValue: undefined,
remark: undefined,
typeStatus: undefined,
createTime: undefined,
updateTime: undefined,
createBy: undefined,
updateBy: undefined
}; };
this.resetForm("form"); this.resetForm("form");
}, },
...@@ -245,7 +219,7 @@ export default { ...@@ -245,7 +219,7 @@ export default {
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.open = true; this.open = true;
this.title = "请输入类别名称"; this.title = "新增类别";
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
...@@ -256,7 +230,7 @@ export default { ...@@ -256,7 +230,7 @@ export default {
this.loading = false; this.loading = false;
this.form = response.data; this.form = response.data;
this.open = true; this.open = true;
this.title = "修改字典"; this.title = "修改类别";
}); });
}, },
/** 提交按钮 */ /** 提交按钮 */
......
...@@ -2,21 +2,14 @@ ...@@ -2,21 +2,14 @@
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="题库类别" prop="categoryId"> <el-form-item label="题库类别" prop="categoryId">
<el-select clearable v-model="queryParams.categoryId" placeholder="请选择题库类别" @change="handleQuery"> <el-select clearable v-model="queryParams.categoryId" placeholder="请选择题库类别" >
<el-option v-for="item in [ <el-option v-for="item in category" :key="item.id" :label="item.typeValue" :value="item.id">
{ label: '全部', value: '' },
{ label: '集合', value: '1' },
{ label: '不等式', value: '2' },
{ label: '函数', value: '3' },
{ label: '数列', value: '4' },
{ label: '立体几何', value: '5' },
]" :key="item.value" :label="item.label" :value="item.value">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="习题种类:" prop="species"> <el-form-item label="习题种类:" prop="species">
<!-- 1填空,2选择,3解答 --> <!-- 1填空,2选择,3解答 -->
<el-select clearable v-model="queryParams.species" placeholder="请选择习题种类" @change="handleQuery"> <el-select clearable v-model="queryParams.species" placeholder="请选择习题种类">
<el-option v-for="item in [ <el-option v-for="item in [
{ label: '全部', value: '' }, { label: '全部', value: '' },
{ label: '填空', value: '1' }, { label: '填空', value: '1' },
...@@ -27,7 +20,7 @@ ...@@ -27,7 +20,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="阶段" prop="phaseId"> <el-form-item label="阶段" prop="phaseId">
<el-select clearable v-model="queryParams.phaseId" placeholder="请选择阶段" @change="handleQuery"> <el-select clearable v-model="queryParams.phaseId" placeholder="请选择阶段" >
<el-option v-for="item in [ <el-option v-for="item in [
{ label: '全部', value: '' }, { label: '全部', value: '' },
{ label: '高一', value: '1' }, { label: '高一', value: '1' },
...@@ -38,7 +31,7 @@ ...@@ -38,7 +31,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="类型" prop="type"> <el-form-item label="类型" prop="type">
<el-select clearable v-model="queryParams.type" placeholder="请选择类型" @change="handleQuery"> <el-select clearable v-model="queryParams.type" placeholder="请选择类型">
<el-option v-for="item in [ <el-option v-for="item in [
{ label: '全部', value: '' }, { label: '全部', value: '' },
{ label: '典例精讲', value: '1' }, { label: '典例精讲', value: '1' },
...@@ -48,7 +41,7 @@ ...@@ -48,7 +41,7 @@
</el-form-item> </el-form-item>
<el-form-item label="强度分类:" prop="intensity"> <el-form-item label="强度分类:" prop="intensity">
<!-- 1基础,2中等,3提高 --> <!-- 1基础,2中等,3提高 -->
<el-select clearable v-model="queryParams.intensity" placeholder="请选择强度" @change="handleQuery"> <el-select clearable v-model="queryParams.intensity" placeholder="请选择强度" >
<el-option v-for="item in [ <el-option v-for="item in [
{ label: '全部', value: '' }, { label: '全部', value: '' },
{ label: '基础', value: '1' }, { label: '基础', value: '1' },
...@@ -153,7 +146,7 @@ ...@@ -153,7 +146,7 @@
<div class="app-container-list-item-html" v-html="item.topic"></div> <div class="app-container-list-item-html" v-html="item.topic"></div>
<div class="app-container-list-item-footer"> <div class="app-container-list-item-footer">
<el-button icon="el-icon-edit-outline" @click="handleUpdate(item)">编辑</el-button> <el-button icon="el-icon-edit-outline" @click="handleUpdate(item)">编辑</el-button>
<el-button icon="el-icon-delete">删除</el-button> <el-button icon="el-icon-delete" @click="handleDelete(item)">删除</el-button>
</div> </div>
</div> </div>
</div> </div>
...@@ -230,7 +223,7 @@ ...@@ -230,7 +223,7 @@
<el-col :span="6"> <el-col :span="6">
<el-form-item label="题库类别:" prop="categoryId"> <el-form-item label="题库类别:" prop="categoryId">
<el-select clearable v-model="form.categoryId" placeholder="请选择题库类别"> <el-select clearable v-model="form.categoryId" placeholder="请选择题库类别">
<el-option v-for="item in category" :key="item.id" :label="item.remark" :value="item.id"> <el-option v-for="item in category" :key="item.id" :label="item.typeValue" :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -297,7 +290,7 @@ ...@@ -297,7 +290,7 @@
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="标准答案" prop="rightAnswers" v-if="form.options && form.options.length"> <el-form-item label="标准答案" prop="rightAnswers" v-if="form.options && form.options.length">
<el-radio-group v-model="form.rightAnswers" @change='changeRadio'> <el-radio-group v-model="form.rightAnswers">
<el-radio :label="index" v-for="(item, index) in form.options" :key="index">{{ index | <el-radio :label="index" v-for="(item, index) in form.options" :key="index">{{ index |
filterType(form.options) }}</el-radio> filterType(form.options) }}</el-radio>
</el-radio-group> </el-radio-group>
......
<template>
<!-- <div class="main">
<div class="tree"> -->
<Treeselect
v-model="value"
:options="options"
:placeholder="'请选择人员'"
:multiple="multiple"
@input="treeSelectInput"
@select="treeSelectChange"
@deselect="treeSelectDeselect"
@search-change="treeSelectSearch"
@open="treeSelectOpen"
@close="treeSelectClose"
/>
<!-- </div>
</div> -->
</template>
<script>
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user";
// import treeData from './data/tree'
export default {
data() {
return {
value: null,
options: []
}
},
props:{
multiple:{
type:false
}
},
components: { Treeselect },
mounted(){
// 延迟模拟请求数据
setTimeout(() => {
// this.options = treeData
// this.value = [ "1682295245318119426", "1682295184152584194"] // 测试回显操作
}, 300)
this.getDeptTree()
},
methods:{
/** 查询部门下拉树结构 */
getDeptTree() {
deptTreeSelect().then(response => {
this.options = response.data;
});
},
// 选中触发(第一次回显的时候会触发,清除值的时候会触发, value值为undefined) input事件用于v-model双向绑定组件更新父组件值
treeSelectInput(value, instanceId) {
console.log(value, 'input事件')
console.log(this.value, 'this.value -- input') // 这个不需要 延迟
},
// 选中触发(清除值的时候不会触发)
treeSelectChange(raw, instanceId) {
console.log(raw, '当前的对象')
setTimeout(() => { // 如果用到this.value 需要setTimeout延迟一下拿到最新的值
console.log(this.value, 'this.value -- select')
})
},
// 移除选项时触发 当设置multiple为true时生效 raw为当前移除的对象
treeSelectDeselect(raw, instanceId) {
console.log(raw, 'deselect-->>')
},
// 搜索
treeSelectSearch(searchQuery, instanceId) {
console.log(searchQuery, '当前搜索的值')
},
// 展开触发
treeSelectOpen(instanceId) {
console.log('展开了')
},
// 关闭触发
treeSelectClose(value, instanceId) {
console.log(value, '当前的value值')
},
// 字段默认 id label 用于规范化数据源
tenantIdnormalizer(node, instanceId) {
if (node.children && !node.children.length) {
delete node.children
}
return {
id: node.id,
label: node.title,
children: node.children
}
}
}
}
</script>
<style scoped>
.main {
width: 100%;
height: 100%;
padding: 60px 0 0 200px;
}
.main .tree {
width: 240px;
height: 40px;
}
::v-deep .vue-treeselect__label {
color: #606266;
}
</style>
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="审批阅卷" prop="testName"> <el-form-item label="审批阅卷" prop="testName">
<el-input v-model="queryParams.testName" placeholder="请输入试卷名称搜索" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.testName" placeholder="请输入试卷名称搜索" clearable />
</el-form-item> </el-form-item>
<el-form-item label="阶段" prop="categoryId"> <el-form-item label="阶段" prop="categoryId">
<el-select v-model="value" placeholder="请选择"> <el-select v-model="value" placeholder="请选择">
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
<el-table-column label="状态:0正常,1删除" align="center" prop="status" /> --> <el-table-column label="状态:0正常,1删除" align="center" prop="status" /> -->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="primary" size="medium " @click="handleQuery">查看试题</el-button> <el-button type="primary" size="medium " @click="handleUpdate(scope.row)">查看试题</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -105,23 +105,24 @@ ...@@ -105,23 +105,24 @@
<el-form-item label="试卷名称" prop="testName"> <el-form-item label="试卷名称" prop="testName">
<el-input v-model="form.testName" placeholder="请输入试卷名称" /> <el-input v-model="form.testName" placeholder="请输入试卷名称" />
</el-form-item> </el-form-item>
<el-form-item label="试卷类型" prop="categoryId"> <el-form-item label="题库类别" prop="categoryId">
<el-select v-model="value" placeholder="请选择试卷类型"> <el-select v-model="form.categoryId" placeholder="请选择题库类别" >
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in category" :key="item.id" :label="item.typeValue" :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="阶段" prop="phaseId"> <el-form-item label="强度" prop="intensitys">
<el-select v-model="value" placeholder="请选择阶段"> <el-select v-model="form.intensitys" placeholder="请选择强度" multiple collapse-tags>
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in [
{ label: '基础', id: 1 },
{ label: '中等', id: 2 },
{ label: '提高', id: 3 },
]" :key="item.id" :label="item.label" :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="班级" prop="classId"> <el-form-item label="班级" prop="classId">
<el-select v-model="value" placeholder="请选择班级"> <treeselect ref="refSelect" :multiple="multiple" />
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="mark"> <div class="mark">
...@@ -140,7 +141,7 @@ ...@@ -140,7 +141,7 @@
</el-dialog> </el-dialog>
<!-- 详情对话框 --> <!-- 详情对话框 -->
<el-dialog :title="title" :visible.sync="opens" append-to-body> <el-dialog :title="title" :visible.sync="opens" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rulest" label-width="80px">
<el-form-item label="题目" prop="userId"> <el-form-item label="题目" prop="userId">
<editor v-model="form.optionContent" :min-height="192" :iconType="['image']" /> <editor v-model="form.optionContent" :min-height="192" :iconType="['image']" />
</el-form-item> </el-form-item>
...@@ -167,13 +168,21 @@ ...@@ -167,13 +168,21 @@
</template> </template>
<script> <script>
import { listTestPaper, getTestPaper, delTestPaper, addTestPaper, updateTestPaper } from "@/api/school-paper/testPaper"; import { listTestPaper, getTestPaper, delTestPaper, addTestPaper, updateTestPaper, questionType } from "@/api/school-paper/testPaper";
import Treeselect from "./components/treeselect.vue"
export default { export default {
name: "TestPaper", name: "TestPaper",
components: { Treeselect },
data() { data() {
return { return {
markSiz: 0, rightAnswers: '',
srcList: [],
url: '',
category: [], // 题库类别
options: [],
textarea: '',
markSiz: 1,
value: '', value: '',
// 按钮loading // 按钮loading
buttonLoading: false, buttonLoading: false,
...@@ -184,7 +193,7 @@ export default { ...@@ -184,7 +193,7 @@ export default {
// 非单个禁用 // 非单个禁用
single: true, single: true,
// 非多个禁用 // 非多个禁用
multiple: true, multiple: false,
// 显示搜索条件 // 显示搜索条件
showSearch: true, showSearch: true,
// 总条数 // 总条数
...@@ -195,7 +204,7 @@ export default { ...@@ -195,7 +204,7 @@ export default {
title: "", title: "",
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
opens: true, opens: false,
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
...@@ -207,34 +216,23 @@ export default { ...@@ -207,34 +216,23 @@ export default {
totalPoints: undefined, totalPoints: undefined,
status: undefined, status: undefined,
}, },
rulest:{},
// 表单参数 // 表单参数
form: {}, form: {},
// 表单校验 // 表单校验
rules: { rules: {
id: [
{ required: true, message: "主键id不能为空", trigger: "blur" }
],
testName: [ testName: [
{ required: true, message: "试卷名称不能为空", trigger: "blur" } { required: true, message: "试卷名称不能为空", trigger: "blur" }
], ],
categoryId: [ categoryId: [
{ required: true, message: "类别id不能为空", trigger: "blur" } { required: true, message: "请选择题库类别", trigger: "blur" }
], ],
phaseId: [ intensitys: [
{ required: true, message: "阶段id不能为空", trigger: "blur" } { required: true, message: "请选择强度", trigger: "blur" }
], ],
classId: [ classId: [
{ required: true, message: "班级id不能为空", trigger: "blur" } { required: true, message: "班级id不能为空", trigger: "blur" }
], ],
totalPoints: [
{ required: true, message: "总分:100,150不能为空", trigger: "blur" }
],
remark: [
{ required: true, message: "备注不能为空", trigger: "blur" }
],
status: [
{ required: true, message: "状态:0正常,1删除不能为空", trigger: "change" }
],
}, },
checkList: [{ checkList: [{
html: "", html: "",
...@@ -281,8 +279,17 @@ export default { ...@@ -281,8 +279,17 @@ export default {
}, },
created() { created() {
this.getList(); this.getList();
this.questionType()
}, },
methods: { methods: {
//题库类别
questionType() {
questionType({ pageSize: 9999, pageNum: 1 }).then((res) => {
this.category = res.rows
// console.log(res,'this.questionBankList======')
})
},
clickMark(val) { clickMark(val) {
// if(val == 1){ // if(val == 1){
this.markSiz = val this.markSiz = val
...@@ -305,18 +312,10 @@ export default { ...@@ -305,18 +312,10 @@ export default {
// 表单重置 // 表单重置
reset() { reset() {
this.form = { this.form = {
id: undefined,
testName: undefined, testName: undefined,
categoryId: undefined, categoryId: undefined,
phaseId: undefined, intensitys: undefined,
classId: undefined, classId: undefined,
totalPoints: undefined,
remark: undefined,
status: undefined,
createTime: undefined,
createBy: undefined,
updateTime: undefined,
updateBy: undefined
}; };
this.resetForm("form"); this.resetForm("form");
}, },
...@@ -325,6 +324,10 @@ export default { ...@@ -325,6 +324,10 @@ export default {
this.queryParams.pageNum = 1; this.queryParams.pageNum = 1;
this.getList(); this.getList();
}, },
// 查看试卷
clickView(){
this.opens = true
},
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.resetForm("queryForm"); this.resetForm("queryForm");
...@@ -334,13 +337,16 @@ export default { ...@@ -334,13 +337,16 @@ export default {
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.id) this.ids = selection.map(item => item.id)
this.single = selection.length !== 1 this.single = selection.length !== 1
this.multiple = !selection.length // this.multiple = !selection.length
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.open = true; this.open = true;
this.title = "添加试卷"; this.title = "添加试卷";
setTimeout(() => {
this.$refs['refSelect'].value = null
}, 300)
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
...@@ -356,6 +362,14 @@ export default { ...@@ -356,6 +362,14 @@ export default {
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
// this.form.lassId = this.$refs['refSelect'].value
this.$set(this.form,'classId',this.$refs['refSelect'].value)
console.log(this.form,'this.form========')
if (this.markSiz == 1) {
this.form.totalPoints = 100
} else {
this.form.totalPoints = 150
}
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
this.buttonLoading = true; this.buttonLoading = true;
......
...@@ -127,13 +127,13 @@ ...@@ -127,13 +127,13 @@
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['system:role:edit']" v-hasPermi="['system:role:edit']"
>修改</el-button> >修改</el-button>
<el-button <!-- <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['system:role:remove']" v-hasPermi="['system:role:remove']"
>删除</el-button> >删除</el-button> -->
<el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:role:edit']"> <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:role:edit']">
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button> <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
......
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
<!--用户数据--> <!--用户数据-->
<el-col :span="20" :xs="24"> <el-col :span="20" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<div class="radioClass">
<el-form-item label="用户名称" prop="userName"> <el-form-item label="用户名称" prop="userName">
<el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable style="width: 240px" <el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable style="width: 240px"
@keyup.enter.native="handleQuery" /> @keyup.enter.native="handleQuery" />
...@@ -70,16 +72,30 @@ ...@@ -70,16 +72,30 @@
></el-date-picker> ></el-date-picker>
</el-form-item>--> </el-form-item>-->
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <!-- <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> -->
<!-- <view class="radioClass"> -->
<el-radio-group v-model="queryParams.sex" @input="clickInput">
<el-radio-button label="0">学生</el-radio-button>
<el-radio-button label="1">老师</el-radio-button>
</el-radio-group>
<!-- </view> -->
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['system:user:add']">新增人员</el-button>
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport"
v-hasPermi="['system:user:import']">一键导入</el-button>
</el-form-item> </el-form-item>
</div>
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <!-- <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['system:user:add']">新增人员</el-button> v-hasPermi="['system:user:add']">新增人员</el-button>
</el-col>
</el-col> -->
<!-- <el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button <el-button
type="success" type="success"
...@@ -102,10 +118,10 @@ ...@@ -102,10 +118,10 @@
v-hasPermi="['system:user:remove']" v-hasPermi="['system:user:remove']"
>删除</el-button> >删除</el-button>
</el-col>--> </el-col>-->
<el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport" <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport"
v-hasPermi="['system:user:import']">导入</el-button> v-hasPermi="['system:user:import']">导入</el-button>
</el-col> </el-col> -->
<!-- <el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button <el-button
type="warning" type="warning"
...@@ -116,8 +132,8 @@ ...@@ -116,8 +132,8 @@
v-hasPermi="['system:user:export']" v-hasPermi="['system:user:export']"
>导出</el-button> >导出</el-button>
</el-col>--> </el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row> </el-row> -->
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" /> <el-table-column type="selection" width="50" align="center" />
...@@ -216,7 +232,7 @@ ...@@ -216,7 +232,7 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="身份"> <el-form-item label="身份">
<el-select v-model="form.sex" placeholder="请选择身份" @change="clickChange()"> <el-select v-model="form.sex" placeholder="请选择身份" :disabled="true" @change="clickChange()">
<el-option v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option> :value="dict.value"></el-option>
</el-select> </el-select>
...@@ -281,9 +297,9 @@ ...@@ -281,9 +297,9 @@
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip text-center" slot="tip">
<div class="el-upload__tip" slot="tip"> <!-- <div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据 <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据
</div> </div> -->
<span>仅允许导入xls、xlsx格式文件。</span> <span>仅允许导入xls、xlsx格式文件。</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;"
@click="importTemplate">下载模板</el-link> @click="importTemplate">下载模板</el-link>
...@@ -310,6 +326,7 @@ export default { ...@@ -310,6 +326,7 @@ export default {
components: { Treeselect }, components: { Treeselect },
data() { data() {
return { return {
radio: '学生',
// multiple:false, // 班级多选 // multiple:false, // 班级多选
// props: { multiple: true }, // props: { multiple: true },
// 遮罩层 // 遮罩层
...@@ -363,7 +380,7 @@ export default { ...@@ -363,7 +380,7 @@ export default {
// 设置上传的请求头部 // 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() }, headers: { Authorization: "Bearer " + getToken() },
// 上传的地址 // 上传的地址
url: process.env.VUE_APP_BASE_API + "/system/user/importData" url: process.env.VUE_APP_BASE_API + "/system/user/importDataNew"
}, },
// 查询参数 // 查询参数
queryParams: { queryParams: {
...@@ -372,7 +389,8 @@ export default { ...@@ -372,7 +389,8 @@ export default {
userName: undefined, userName: undefined,
phonenumber: undefined, phonenumber: undefined,
status: undefined, status: undefined,
deptId: undefined deptId: undefined,
sex: '0'
}, },
// 列信息 // 列信息
columns: [ columns: [
...@@ -429,11 +447,10 @@ export default { ...@@ -429,11 +447,10 @@ export default {
}, },
methods: { methods: {
clickChange() { clickChange() {
console.log(this.form.sex, 'dict-------')
this.$refs['refSelect'].value = null this.$refs['refSelect'].value = null
if(this.form.sex == 0){ if (this.form.sex == 1) {
this.multiple = true this.multiple = true
}else{ } else {
this.multiple = false this.multiple = false
} }
}, },
...@@ -494,7 +511,8 @@ export default { ...@@ -494,7 +511,8 @@ export default {
remark: undefined, remark: undefined,
postIds: [], postIds: [],
roleIds: [], roleIds: [],
deptList: '' sex: '',
deptList:undefined
}; };
this.resetForm("form"); this.resetForm("form");
}, },
...@@ -530,6 +548,10 @@ export default { ...@@ -530,6 +548,10 @@ export default {
break; break;
} }
}, },
clickInput(e) {
this.queryParams.pageNum = 1;
this.getList();
},
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset();
...@@ -538,7 +560,16 @@ export default { ...@@ -538,7 +560,16 @@ export default {
this.roleOptions = response.data.roles; this.roleOptions = response.data.roles;
this.open = true; this.open = true;
this.title = "添加用户"; this.title = "添加用户";
this.form.sex = this.queryParams.sex
this.form.password = this.initPassword; this.form.password = this.initPassword;
if (this.form.sex == 1) {
this.multiple = true
} else {
this.multiple = false
}
setTimeout(() => {
this.$refs['refSelect'].value = null
}, 300)
}); });
}, },
...@@ -555,6 +586,14 @@ export default { ...@@ -555,6 +586,14 @@ export default {
this.open = true; this.open = true;
this.title = "修改用户"; this.title = "修改用户";
this.form.password = ""; this.form.password = "";
if (this.form.sex == 1) {
this.multiple = true
} else {
this.multiple = false
}
setTimeout(() => {
this.$refs['refSelect'].value = response.data.user.deptListArray
}, 300)
}); });
}, },
/** 重置密码按钮操作 */ /** 重置密码按钮操作 */
...@@ -578,11 +617,19 @@ export default { ...@@ -578,11 +617,19 @@ export default {
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm: function () { submitForm: function () {
console.log(this.$refs['refSelect'].value, "this.$refs['refSelect'].value") // this.form.deptList = this.$refs['refSelect'].value
let obj = []
obj.push(this.$refs['refSelect'].value)
if(this.form.sex == 0){
this.form.deptInsetArray = obj
}else{
this.form.deptInsetArray = this.$refs['refSelect'].value
}
// console.log(this.form,'this.form----------')
// return
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
if (this.form.userId != undefined) { if (this.form.userId != undefined) {
updateUser(this.form).then(response => { updateUser(this.form).then(response => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
...@@ -621,7 +668,7 @@ export default { ...@@ -621,7 +668,7 @@ export default {
}, },
/** 下载模板操作 */ /** 下载模板操作 */
importTemplate() { importTemplate() {
this.download('system/user/importTemplate', { this.download('system/user/importTemplateNew', {
}, `user_template_${new Date().getTime()}.xlsx`) }, `user_template_${new Date().getTime()}.xlsx`)
}, },
// 文件上传中处理 // 文件上传中处理
...@@ -643,3 +690,13 @@ export default { ...@@ -643,3 +690,13 @@ export default {
} }
}; };
</script> </script>
<style scoped lang="scss">
.radioClass {
display: flex;
justify-content: space-between;
}
::v-deep .el-radio-group {
margin: 0 10px;
}
</style>
\ No newline at end of file
...@@ -35,8 +35,9 @@ module.exports = { ...@@ -35,8 +35,9 @@ module.exports = {
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
// target: `https://farming.nyinhong.com/api`, target: `http://farming.nyinhong.com/api`,
target: `http://192.168.0.195:8111/`, // target: `http://192.168.0.195:8111/`,
// target: `http://192.168.0.165:8111/`,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: '' ['^' + process.env.VUE_APP_BASE_API]: ''
......
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