Commit cc831b79 by duxingshan

1、成绩管理新增、编辑、删除、导入、模版下载接口对接。

2、部分细节修改
parent bcd083b0
...@@ -8,3 +8,37 @@ export function performanceList(query) { ...@@ -8,3 +8,37 @@ export function performanceList(query) {
params: query, params: query,
}); });
} }
//根据身份证号获取学生信息
export function getInfoByIdCard(query) {
return request({
url: `/curricula/studentScore/selectStudent?idCard=${query}`,
method: "get",
});
}
// 新增成绩
export function addPerformance(data) {
return request({
url: "/curricula/studentScore/add",
method: "post",
data,
});
}
// 编辑成绩
export function editPerformance(data) {
return request({
url: "/curricula/studentScore/edit",
method: "put",
data,
});
}
//删除成绩
export function deletePerformance(data) {
return request({
url: `/curricula/studentScore/delete/${data}`,
method: "delete"
});
}
...@@ -23,8 +23,8 @@ ...@@ -23,8 +23,8 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="flexBlock person"> <div class="flexBlock person">
<div>总人数:45</div> <div>总人数:{{totalPerson}}</div>
<div>已选课:<span>40</span></div> <div>已选课:<span>{{choosePerson}}</span></div>
</div> </div>
<el-table v-loading="loading" :data="courseSelectionData" stripe> <el-table v-loading="loading" :data="courseSelectionData" stripe>
<el-table-column label="序号" type="index" width="55" align="center"/> <el-table-column label="序号" type="index" width="55" align="center"/>
...@@ -82,9 +82,13 @@ export default { ...@@ -82,9 +82,13 @@ export default {
courseSelectionData:[], courseSelectionData:[],
loading:false, loading:false,
total:0, total:0,
totalPerson:0, // 总人数
choosePerson:0 // 已选人数
} }
}, },
mounted() { mounted() {
this.totalPerson = this.$route.query.total
this.choosePerson = this.$route.query.choose
this.getList() this.getList()
}, },
methods:{ methods:{
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" <el-button type="danger" plain icon="el-icon-delete"
size="mini" :disabled="!isMultiple" @click="handleDelete">批量删除</el-button> size="mini" :disabled="!isMultiple" @click="handleDelete(1)">批量删除</el-button>
</el-col> </el-col>
</el-row> </el-row>
<el-table v-loading="loading" :data="achievementData" stripe @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="achievementData" stripe @selection-change="handleSelectionChange">
...@@ -38,7 +38,11 @@ ...@@ -38,7 +38,11 @@
<el-table-column fixed="left" label="学号" align="center" prop="studentNumber"/> <el-table-column fixed="left" label="学号" align="center" prop="studentNumber"/>
<el-table-column fixed="left" label="身份证号" align="center" prop="idCard"/> <el-table-column fixed="left" label="身份证号" align="center" prop="idCard"/>
<el-table-column fixed="left" label="班级" align="center" prop="className"/> <el-table-column fixed="left" label="班级" align="center" prop="className"/>
<el-table-column fixed="left" label="考试类型" align="center" prop="examType"/> <el-table-column fixed="left" label="考试类型" align="center" prop="examType">
<template slot-scope="{ row }">
<div>{{ selectDictLabel(dict.type.exam_type,row.examType) }}</div>
</template>
</el-table-column>
<el-table-column label="总成绩" align="center" prop="totalScore"/> <el-table-column label="总成绩" align="center" prop="totalScore"/>
<el-table-column label="学校排名" align="center" prop="ranking"/> <el-table-column label="学校排名" align="center" prop="ranking"/>
<el-table-column label="语文" align="center" prop="language"/> <el-table-column label="语文" align="center" prop="language"/>
...@@ -61,7 +65,7 @@ ...@@ -61,7 +65,7 @@
<el-table-column label="学校排名" align="center" prop="swRanking"/> <el-table-column label="学校排名" align="center" prop="swRanking"/>
<el-table-column fixed="right" label="操作" align="center" prop="orgname" width="150"> <el-table-column fixed="right" label="操作" align="center" prop="orgname" width="150">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<el-button type="text" size="small">删除</el-button> <el-button type="text" size="small" @click="handleDelete(0,row.id)">删除</el-button>
<el-button type="text" size="small" @click="handleOption(1,row)">编辑</el-button> <el-button type="text" size="small" @click="handleOption(1,row)">编辑</el-button>
</template> </template>
</el-table-column> </el-table-column>
...@@ -72,6 +76,7 @@ ...@@ -72,6 +76,7 @@
<!-- 导入弹出框 --> <!-- 导入弹出框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body> <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
:data="{ 'curriculaId':queryParams.curriculaId }"
:action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading" :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
:on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess"
:auto-upload="false" drag> :auto-upload="false" drag>
...@@ -91,39 +96,41 @@ ...@@ -91,39 +96,41 @@
<!-- 新增编辑弹出框 --> <!-- 新增编辑弹出框 -->
<el-dialog title="详细信息" :visible.sync="dialogVisible" width="50%"> <el-dialog title="详细信息" :visible.sync="dialogVisible" width="50%">
<el-form :model="achievementForm" label-width="70px" label-position="left"> <el-form :model="achievementForm" :rules="achievementRules" ref="achievementForm"
label-width="80px" label-position="left">
<el-row :gutter="30"> <el-row :gutter="30">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="学号"> <el-form-item label="身份证号" prop="idCard">
<el-select v-model="achievementForm.id" filterable placeholder="请选择学号" class="selectWidth"> <el-input v-model="achievementForm.idCard" placeholder="请输入身份证号"
<el-option v-for="(item,index) in studentID" @change="searchStudentInfo" :disabled="nowType==1?true:false"></el-input>
:key="index" :label="item" :value="item">
</el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="学生姓名"> <el-form-item label="学生姓名" prop="studentName">
<el-input v-model="achievementForm.id" placeholder="请输入学生姓名"></el-input> <el-input v-model="achievementForm.studentName" placeholder="请输入学生姓名"
:disabled="nowType==1?true:false"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="30"> <el-row :gutter="30">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="班级"> <el-form-item label="班级" prop="className">
<el-input v-model="achievementForm.id" placeholder="请输入班级"></el-input> <el-input v-model="achievementForm.className" placeholder="请输入班级"
:disabled="nowType==1?true:false"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="身份证号"> <el-form-item label="学号" prop="studentNumber">
<el-input v-model="achievementForm.id" placeholder="请输入身份证号"></el-input> <el-input v-model="achievementForm.studentNumber" placeholder="请输入学号"
:disabled="nowType==1?true:false"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="30"> <el-row :gutter="30">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="考试类型"> <el-form-item label="考试类型" prop="examType">
<el-select v-model="achievementForm.id" filterable placeholder="请选择考试类型" class="selectWidth"> <el-select v-model="achievementForm.examType" filterable placeholder="请选择考试类型"
class="selectWidth" :disabled="nowType==1?true:false">
<el-option v-for="(item,index) in dict.type.exam_type" :key="index" <el-option v-for="(item,index) in dict.type.exam_type" :key="index"
:label="item.label" :value="item.value"></el-option> :label="item.label" :value="item.value"></el-option>
</el-select> </el-select>
...@@ -132,128 +139,63 @@ ...@@ -132,128 +139,63 @@
</el-row> </el-row>
<el-row :gutter="30"> <el-row :gutter="30">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="总成绩"> <el-form-item label="语文" prop="language">
<el-input v-model="achievementForm.id" placeholder="请输入总成绩"></el-input> <el-input v-model="achievementForm.language" placeholder="请输入语文"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="学校排名">
<el-input v-model="achievementForm.id" placeholder="请输入学校排名"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="语文">
<el-input v-model="achievementForm.id" placeholder="请输入语文"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="学校排名"> <el-form-item label="数学" prop="math">
<el-input v-model="achievementForm.id" placeholder="请输入学校排名"></el-input> <el-input v-model="achievementForm.math" placeholder="请输入数学"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="30"> <el-row :gutter="30">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="数学"> <el-form-item label="英语" prop="english">
<el-input v-model="achievementForm.id" placeholder="请输入数学"></el-input> <el-input v-model="achievementForm.english" placeholder="请输入英语"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="学校排名"> <el-form-item label="历史" prop="history">
<el-input v-model="achievementForm.id" placeholder="请输入学校排名"></el-input> <el-input v-model="achievementForm.history" placeholder="请输入历史"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="30"> <el-row :gutter="30">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="英语"> <el-form-item label="地理" prop="geography">
<el-input v-model="achievementForm.id" placeholder="请输入英语"></el-input> <el-input v-model="achievementForm.geography" placeholder="请输入地理"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="学校排名"> <el-form-item label="政治" prop="politics">
<el-input v-model="achievementForm.id" placeholder="请输入学校排名"></el-input> <el-input v-model="achievementForm.politics" placeholder="请输入政治"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="30"> <el-row :gutter="30">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="历史"> <el-form-item label="生物" prop="biology">
<el-input v-model="achievementForm.id" placeholder="请输入历史"></el-input> <el-input v-model="achievementForm.biology" placeholder="请输入生物"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="学校排名"> <el-form-item label="物理" prop="physics">
<el-input v-model="achievementForm.id" placeholder="请输入学校排名"></el-input> <el-input v-model="achievementForm.physics" placeholder="请输入物理"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="30"> <el-row :gutter="30">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="地理"> <el-form-item label="化学" prop="chemistry">
<el-input v-model="achievementForm.id" placeholder="请输入地理"></el-input> <el-input v-model="achievementForm.chemistry" placeholder="请输入化学"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="学校排名">
<el-input v-model="achievementForm.id" placeholder="请输入学校排名"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="政治">
<el-input v-model="achievementForm.id" placeholder="请输入政治"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="学校排名">
<el-input v-model="achievementForm.id" placeholder="请输入学校排名"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="生物">
<el-input v-model="achievementForm.id" placeholder="请输入生物"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="学校排名">
<el-input v-model="achievementForm.id" placeholder="请输入学校排名"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="物理">
<el-input v-model="achievementForm.id" placeholder="请输入物理"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="学校排名">
<el-input v-model="achievementForm.id" placeholder="请输入学校排名"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="化学">
<el-input v-model="achievementForm.id" placeholder="请输入化学"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="学校排名">
<el-input v-model="achievementForm.id" placeholder="请输入学校排名"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button> <el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="dialogVisible = false">确 定</el-button> <el-button type="primary" @click="submitForm">确 定</el-button>
</span> </span>
</el-dialog> </el-dialog>
<!-- 新增编辑弹出框 --> <!-- 新增编辑弹出框 -->
...@@ -262,7 +204,11 @@ ...@@ -262,7 +204,11 @@
<script> <script>
import { getToken } from "@/utils/auth"; import { getToken } from "@/utils/auth";
import { performanceList } from "../../../../../api/smartSchool/gradeWork/courseSelection/performance"; import {
addPerformance, deletePerformance, editPerformance,
getInfoByIdCard,
performanceList
} from "../../../../../api/smartSchool/gradeWork/courseSelection/performance";
import { classList } from "../../../../../api/smartSchool/gradeWork/courseSelection/taskPublishing"; import { classList } from "../../../../../api/smartSchool/gradeWork/courseSelection/taskPublishing";
export default { export default {
...@@ -295,13 +241,74 @@ export default { ...@@ -295,13 +241,74 @@ export default {
headers: { Authorization: "Bearer " + getToken() }, headers: { Authorization: "Bearer " + getToken() },
// 上传的地址 // 上传的地址
url: url:
process.env.VUE_APP_BASE_API + "/", process.env.VUE_APP_BASE_API + "/curricula/studentScore/importData",
}, },
achievementForm:{ // 新增、编辑成绩数据 achievementForm:{ // 新增、编辑成绩数据
id:'', id:'',
studentId:'',
classId:'',
studentName:'',
studentNumber:'',
idCard:'',
className:'',
examType:'',
language:'',
math:'',
english:'',
politics:'',
geography:'',
history:'',
physics:'',
chemistry:'',
biology:'',
},
achievementRules:{
idCard: [
{ required: true, message: '请输入身份证号', trigger: 'blur' }
],
studentName: [
{ required: true, message: '请输入学生姓名', trigger: 'blur' }
],
className: [
{ required: true, message: '请输入学生班级', trigger: 'blur' }
],
studentNumber: [
{ required: true, message: '请输入学生学号', trigger: 'blur' }
],
examType: [
{ required: true, message: '请选择考试类型', trigger: 'change' }
],
language: [
{ required: true, message: '请输入语文成绩', trigger: 'blur' }
],
math: [
{ required: true, message: '请输入数学成绩', trigger: 'blur' }
],
english: [
{ required: true, message: '请输入英语成绩', trigger: 'blur' }
],
politics: [
{ required: true, message: '请输入政治成绩', trigger: 'blur' }
],
geography: [
{ required: true, message: '请输入地理成绩', trigger: 'blur' }
],
history: [
{ required: true, message: '请输入历史成绩', trigger: 'blur' }
],
physics: [
{ required: true, message: '请输入物理成绩', trigger: 'blur' }
],
chemistry: [
{ required: true, message: '请输入化学成绩', trigger: 'blur' }
],
biology: [
{ required: true, message: '请输入生物成绩', trigger: 'blur' }
],
}, },
studentID:[1,2,3,4,5], // 学号list
classList:[], // 班级list classList:[], // 班级list
nowType:0, //当前弹框类型 1编辑 0新增
deleteArr:[] //删除数据ID数组
} }
}, },
mounted() { mounted() {
...@@ -345,46 +352,151 @@ export default { ...@@ -345,46 +352,151 @@ export default {
this.getList() this.getList()
}, },
//新增成绩 //新增、编辑成绩
handleOption(type,item){ handleOption(type,item){
this.nowType = type
if(type == 0){ if(type == 0){
//新增 //新增
this.achievementForm = {
studentId:'',
classId:'',
studentName:'',
studentNumber:'',
idCard:'',
className:'',
examType:'',
language:'',
math:'',
english:'',
politics:'',
geography:'',
history:'',
physics:'',
chemistry:'',
biology:'',
}
}else { }else {
//编辑 //编辑
Object.keys(this.achievementForm).forEach(key => {
item[key] && (this.achievementForm[key] = item[key])
})
} }
this.dialogVisible = true this.dialogVisible = true
}, },
//批量删除 //表单提交数据
handleDelete(){ submitForm(){
this.$confirm('此操作将永久删除选中数据, 是否继续?', '提示', { let data = {}
this.$refs['achievementForm'].validate((valid) => {
if (valid) {
if(this.nowType == 0) {
data = {
studentId:this.achievementForm.studentId,
curriculaId:this.$route.query.id,
classId:this.achievementForm.classId,
examType:this.achievementForm.examType,
language:this.achievementForm.language,
math:this.achievementForm.math,
english:this.achievementForm.english,
politics:this.achievementForm.politics,
geography:this.achievementForm.geography,
history:this.achievementForm.history,
physics:this.achievementForm.physics,
chemistry:this.achievementForm.chemistry,
biology:this.achievementForm.biology,
}
//新增
addPerformance(data).then(res=>{
if(res.code == 200){
this.$message.success("成绩添加成功!");
setTimeout(()=>{
this.dialogVisible = false;
this.getList();
},2000)
}
})
}else {
//编辑
data = {
id:this.achievementForm.id,
studentId:this.achievementForm.studentId,
curriculaId:this.$route.query.id,
classId:this.achievementForm.classId,
examType:this.achievementForm.examType,
language:this.achievementForm.language,
math:this.achievementForm.math,
english:this.achievementForm.english,
politics:this.achievementForm.politics,
geography:this.achievementForm.geography,
history:this.achievementForm.history,
physics:this.achievementForm.physics,
chemistry:this.achievementForm.chemistry,
biology:this.achievementForm.biology,
}
editPerformance(data).then(res=>{
if(res.code == 200){
this.$message.success("成绩编辑成功!");
setTimeout(()=>{
this.dialogVisible = false;
this.getList();
},2000)
}
})
}
}
})
},
//根据身份证号获取学生信息
searchStudentInfo(){
const idCard = this.achievementForm.idCard
getInfoByIdCard(idCard).then(res=>{
if(res.code == 200){
Object.keys(this.achievementForm).forEach(key => {
res.data[key] && (this.achievementForm[key] = res.data[key])
})
}
})
},
//批量删除、删除
handleDelete(type,id){
let infoMessaage = type == 1?'此操作将永久删除选中数据, 是否继续?':'此操作将永久删除该数据, 是否继续?'
this.$confirm(infoMessaage, '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$message({ if(id){
type: 'success', this.deleteArr.push(id)
message: '删除成功!' }
}); let deleteStr = this.deleteArr.toString()
deletePerformance(deleteStr).then(res=>{
if(res.code == 200){
this.$message.success('删除成功!');
this.getList()
}else {
this.$message.error("删除失败!")
this.getList()
}
})
}).catch(() => { }).catch(() => {
this.$message({ this.$message.info('已取消删除!')
type: 'info',
message: '已取消删除'
});
}); });
}, },
//table点击事件 //table点击事件
handleSelectionChange(val) { handleSelectionChange(val) {
console.log("val",val)
this.isMultiple = val.length == 0?false:true this.isMultiple = val.length == 0?false:true
this.deleteArr = val.map(item=>{
return item.id
})
}, },
//下载模板 //下载模板
downloadTemplate() { downloadTemplate() {
this.download( this.download(
"", "/curricula/studentScore/importTemplate",{},
{},
`成绩管理数据导入_template_${new Date().getTime()}.xlsx` `成绩管理数据导入_template_${new Date().getTime()}.xlsx`
); );
}, },
......
...@@ -119,7 +119,7 @@ export default { ...@@ -119,7 +119,7 @@ export default {
// 导出 // 导出
handleExport() { handleExport() {
this.download('/curricula/student/exportCj', { this.download('/curricula/student/exportCj', {
...this.queryParams ...this.queryForm
}, `学生春季选课信息_${new Date().getTime()}.xlsx`) }, `学生春季选课信息_${new Date().getTime()}.xlsx`)
} }
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
<div class="task-buttons"> <div class="task-buttons">
<el-button size="mini" icon="el-icon-edit" round @click="handleUpdate(task)">修改</el-button> <el-button size="mini" icon="el-icon-edit" round @click="handleUpdate(task)">修改</el-button>
<el-button type="primary" size="small" round @click="performance(task.id,task.grade)">成绩管理</el-button> <el-button type="primary" size="small" round @click="performance(task.id,task.grade)">成绩管理</el-button>
<el-button type="success" size="small" round @click="courseSelectionsituation(task.id)">选课情况</el-button> <el-button type="success" size="small" round @click="courseSelectionsituation(task.id,task.yxrs,task.zrs)">选课情况</el-button>
<el-button type="warning" size="small" round @click="springView(task.id,task.grade)">春季选课情况</el-button> <el-button type="warning" size="small" round @click="springView(task.id,task.grade)">春季选课情况</el-button>
<el-button type="danger" size="small" round @click="artisticView()">艺体选课情况</el-button> <el-button type="danger" size="small" round @click="artisticView()">艺体选课情况</el-button>
<el-button class="purpleBtn" size="small" round @click="summerViewing()">夏季选课情况</el-button> <el-button class="purpleBtn" size="small" round @click="summerViewing()">夏季选课情况</el-button>
...@@ -174,12 +174,12 @@ export default { ...@@ -174,12 +174,12 @@ export default {
} }
}); });
}, },
// 选课情况按钮 // 选课情况按钮 total总人数 choose已选人数
courseSelectionsituation(id) { courseSelectionsituation(id,total,choose) {
this.$router.push({ this.$router.push({
path: "/gradeWork/courseSelection/courseSelectionsituation", path: "/gradeWork/courseSelection/courseSelectionsituation",
query: { query: {
id id,total,choose
} }
}); });
}, },
......
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