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
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> |
|
|
|
|