You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

376 lines
15 KiB

<template>
<div>
<el-card v-if="showBack" shadow="hover" class="mgb20">
<div class="flex-between">
<div class="per_title" v-preventReClick @click="goback()">
<i class="el-icon-arrow-left"></i>
<span class="per_back">返回</span>
</div>
</div>
</el-card>
<el-card shadow="hover" class="mgb20">
<div>
<div class="flex-center mgb20">
<p class="hr_tag"></p>
<span>筛选</span>
</div>
<div>
<el-form label-width="80px" class="flex-between no-mb">
<div class="flex-center">
<div>
<el-form-item label="创建人">
<el-select v-model="queryData.founder" clearable placeholder="请选择创建人" @change="getData()">
<el-option v-for="(item,index) in founder" :key="index" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</div>
<div>
<el-form-item label="状态">
<el-select v-model="queryData.state" clearable placeholder="请选择状态" @change="getData()">
<el-option v-for="(item,index) in state" :key="index" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</div>
<div>
<el-form-item label="权限">
<el-select v-model="queryData.projectPermissions" placeholder="请选择" @change="getData()">
<el-option
v-for="item in projectPermissions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</div>
</div>
<div>
<el-form-item>
<el-input placeholder="请输入项目名称" prefix-icon="el-icon-search" v-model="keyword" clearable></el-input>
</el-form-item>
</div>
</el-form>
</div>
</div>
</el-card>
<el-card shadow="hover">
<div class="flex-between mgb20">
<div class="flex-center">
<p class="hr_tag"></p>
<span>项目列表</span>
</div>
<div>
<el-button type="primary" size="small" round @click="add">新增项目</el-button>
<el-button type="primary" size="small" round @click="delAllData">批量删除</el-button>
</div>
</div>
<el-table :data="projectData" class="table" ref="table" stripe header-align="center" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"></el-table-column>
<el-table-column type="index" width="100" label="序号" align="center">
</el-table-column>
<el-table-column prop="projectName" label="实验项目名称" align="center">
</el-table-column>
<el-table-column prop="founder" label="创建人" align="center"></el-table-column>
<el-table-column label="权限" align="center">
<template slot-scope="scope">
{{projectPermissions.find(n => n.value === scope.row.projectPermissions).label}}
</template>
</el-table-column>
<el-table-column label="模式" align="center">
<template slot-scope="scope">
{{patternList.find(n => n.value === scope.row.pattern).label}}
</template>
</el-table-column>
<el-table-column prop="creationTime" label="创建时间" align="center">
</el-table-column>
<el-table-column prop="status" label="状态" align="center">
<template slot-scope="scope">
{{transferStatus(scope.row.state)}}
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="text" @click="edit(scope.row)" v-if="roleId == 1 || (roleId == 13 && scope.row.founder != '超级管理员') || (roleId == 14 && scope.row.founder == '老师')">编辑</el-button>
<el-button type="text" @click="delData(scope.row)" v-if="roleId == 1 || (roleId == 13 && scope.row.founder != '超级管理员') || (roleId == 14 && scope.row.founder == '老师')">删除</el-button>
<!-- <el-button type="text" @click="copyData(scope.row)">复制</el-button> -->
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background @current-change="handleCurrentChange" layout="total, prev, pager, next" :total="totals">
</el-pagination>
</div>
</el-card>
<el-dialog title="复制" :visible.sync="copyVisible" width="24%" center :close-on-click-modal="false">
<el-form>
<el-form-item>
<el-input placeholder="请输入项目名称" v-model="projectName" @change="projectNameExistis"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="copyVisible = false">取 消</el-button>
<el-button type="primary" @click="copySubmit"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import bus from '../common/bus';
export default {
data() {
return {
systemId: this.$config.systemId,
showBack: JSON.stringify(this.$store.state.addClass) == '{}' ? false : true,
roleId: this.$store.state.userRoleId.includes(',') ? 13 : Number(this.$store.state.userRoleId),
userId: this.$store.state.userLoginId,
queryData: {
projectPermissions: "",
founder: "",
state: "",
projectName: "",
userId: this.$store.state.userLoginId,
systemId: this.systemId
},
keyword: '',
status: '',
projectData:[],
totals: 0,
patternList: [
{
value: 0,
label: "基础模式"
},
{
value: 1,
label: "挑战模式"
}
],
projectPermissions: [
{
value: "",
label: "不限"
},
{
value: 0,
label: "练习"
},
{
value: 1,
label: "考核"
},
// {
// value: 2,
// label: "竞赛"
// }
],
founder: [
{
value: "",
label: "不限"
},
{
value: 1,
label: "超级管理员"
},
{
value: 2,
label: "管理员"
},
{
value: 3,
label: "老师"
}
],
state: [
{
value: "",
label: "不限"
},
{
value: 0,
label: "草稿箱"
},
{
value: 1,
label: "已发布"
}
],
pageNo: 1,
pageSize: 10,
multipleSelection: [],
copyVisible: false,
projectName: '',
projectNameRepeat: false,
currentRow: {},
projectDataAll: [],
};
},
watch: {
keyword: function(val) {
clearTimeout(this.searchTimer)
this.searchTimer = setTimeout(() => {
this.getData()
},500)
}
},
mounted() {
this.getData()
},
methods: {
getData(){
let data = this.queryData
data.pageNo = this.pageNo
data.pageSize = this.pageSize
data.projectName = this.encodeString(this.keyword)
data.systemId = this.systemId
this.$get(this.api.queryAllManagements,data).then(res => {
let list = res.pageInfo.list
list.map(n => {
if(n.founder.includes(',')){
n.founder = '管理员'
}else{
n.founder = this.roleStatus(n.founder)
}
})
this.projectData = list
this.totals = res.pageInfo.total
}).catch(res => {});
},
transferStatus(status){
return status == 1 ? '已发布' : '草稿箱'
},
handleCurrentChange(val){
this.pageNo = val
this.getData()
},
add(){
this.$store.commit("configData", { config_id : ''});
this.$router.push('/addproject');
},
edit(row){
this.$router.push(`/addproject?id=${row.projectId}`);
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
delData(row) {
this.$confirm('确定要删除吗?', '提示', {
type: 'warning'
})
.then(() => {
this.$post(this.api.removeProjectManagement,[row.projectId]).then(res => {
this.$message.success('删除成功');
this.getData()
}).catch(res => {});
})
.catch(() => {});
},
delAllData() {
if(this.multipleSelection.length != ''){
let newArr = this.multipleSelection
let delList = newArr.map(item => {
return item.projectId
})
this.$confirm('确定要删除吗?', '提示', {
type: 'warning'
})
.then(() => {
this.$post(this.api.removeProjectManagement,delList).then(res => {
this.$refs.table.clearSelection()
this.$message.success('删除成功');
this.getData()
}).catch(res => {});
})
.catch(() => {});
}else{
this.$message.error('请先选择项目 !');
}
},
projectNameExistis(){
let data = {
projectName: this.projectName
}
this.$get(this.api.isNameExistis,data).then(res => {
if(res.status != 200){
this.projectNameRepeat = true
this.$message.warning('该项目名称已存在')
}else{
this.projectNameRepeat = false
}
}).catch(res => {})
},
copyData(row){
this.currentRow.management = {
caseDescription: row.caseDescription,
experimentSuggests: row.experimentSuggests,
experimentalGoal: row.experimentalGoal,
founder: row.founder,
isstartexperimentSuggests: row.isstartexperimentSuggests,
isstartexperimental: row.isstartexperimental,
projectName: row.projectName,
projectPermissions: row.projectPermissions,
state: row.state,
systemId: row.systemId,
userId: row.userId,
knowledgePoints: row.knowledgePoints,
experimentIntroduction: row.experimentIntroduction
}
this.currentRow.founder = row.founder
this.projectName = row.projectName
this.projectNameRepeat = true
this.copyVisible = true
let data = {
projectId: row.projectId
}
this.$get(this.api.getJudgmentPoints,data).then((res) => {
this.currentRow.roleId = res.message.roleList.map(n => n.roleId)
let scoreList = res.message.scoreIndexList
let scores = []
for(let i in scoreList){
scores = scores.concat(scoreList[i])
}
let point = res.message.judgmentPointsList
point.map(n => {
n.judgmentPointsId = n.id
let same = scores.find(e => e.judgmentPointsId == n.id)
if(same) n.score = same.score
})
this.currentRow.pooints = point
this.$message.warning('请修改项目名称')
})
},
copySubmit(){
if(!this.projectName.length) return this.$message.warning('请填写项目名称')
if(this.projectNameRepeat) return this.$message.warning('该项目名称已存在')
let data = this.currentRow
data.management.projectName = this.projectName
data.founder = Number(this.roleId)
data.management.founder = this.roleId
data.management.userId = this.userId
data.pooints.map(n => {
n.userId = this.userId
})
this.$post(this.api.addProjectManagement,data).then((res) => {
this.$message.success('复制成功');
this.copyVisible = false
this.getData()
})
},
goback() {
this.$router.back()
},
}
};
</script>
<style scoped>
.no-mb /deep/.el-form-item{
margin-bottom: 0;
}
</style>