|
|
|
@ -1,19 +1,25 @@ |
|
|
|
|
<template> |
|
|
|
|
<div ref="main" class="main"> |
|
|
|
|
<div ref="main" |
|
|
|
|
class="main"> |
|
|
|
|
<el-row :gutter="20"> |
|
|
|
|
<el-col :span="24"> |
|
|
|
|
<el-card shadow="hover" class="mgb20"> |
|
|
|
|
<el-card shadow="hover" |
|
|
|
|
class="mgb20"> |
|
|
|
|
<div class="flex-between"> |
|
|
|
|
<el-page-header @back="back" content="项目配置"></el-page-header> |
|
|
|
|
<el-page-header @back="back" |
|
|
|
|
content="项目配置"></el-page-header> |
|
|
|
|
<div v-if="!isDetail"> |
|
|
|
|
<el-button type="success" @click="handleSubmit(0,projectManage.isOpen=1,projectManage.ztOpen = 1)">保存为草稿 |
|
|
|
|
<el-button type="success" |
|
|
|
|
@click="handleSubmit(0,projectManage.isOpen=1,projectManage.ztOpen = 1)">保存为草稿 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button type="primary" @click="handleSubmit(1)">确定并发布</el-button> |
|
|
|
|
<el-button type="primary" |
|
|
|
|
@click="handleSubmit(1)">确定并发布</el-button> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</el-card> |
|
|
|
|
|
|
|
|
|
<el-card shadow="hover" class="mgb20"> |
|
|
|
|
<el-card shadow="hover" |
|
|
|
|
class="mgb20"> |
|
|
|
|
<div class="flex-center mgb20"> |
|
|
|
|
<p class="addhr_tag"></p> |
|
|
|
|
<span>课程信息</span> |
|
|
|
@ -24,18 +30,26 @@ |
|
|
|
|
<el-form label-width="80px"> |
|
|
|
|
<div style="display: flex"> |
|
|
|
|
<el-form-item label="项目名称"> |
|
|
|
|
<el-input :disabled="isDetail" v-model.trim="projectManage.projectName" |
|
|
|
|
placeholder="20个字符以内" @blur="projectNameExistis"></el-input> |
|
|
|
|
<el-input :disabled="isDetail" |
|
|
|
|
v-model.trim="projectManage.projectName" |
|
|
|
|
placeholder="20个字符以内" |
|
|
|
|
@blur="projectNameExistis"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-form-item label="备注"> |
|
|
|
|
<el-input v-model.trim="projectManage.remark" placeholder="20个字符以内"></el-input> |
|
|
|
|
<el-input v-model.trim="projectManage.remark" |
|
|
|
|
placeholder="20个字符以内"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-form-item label="项目权限"> |
|
|
|
|
<el-select :disabled="isDetail" v-model="projectManage.permissions" |
|
|
|
|
placeholder="请选择" @change="permissionChange"> |
|
|
|
|
<el-option label="练习" :value="0"></el-option> |
|
|
|
|
<el-option label="考核" :value="1"></el-option> |
|
|
|
|
<el-option label="竞赛" :value="2"></el-option> |
|
|
|
|
<el-form-item label="项目用途"> |
|
|
|
|
<el-select :disabled="isDetail" |
|
|
|
|
v-model="projectManage.permissions" |
|
|
|
|
placeholder="请选择" |
|
|
|
|
@change="permissionChange"> |
|
|
|
|
<el-option label="练习" |
|
|
|
|
:value="0"></el-option> |
|
|
|
|
<el-option label="考核" |
|
|
|
|
:value="1"></el-option> |
|
|
|
|
<el-option label="竞赛" |
|
|
|
|
:value="2"></el-option> |
|
|
|
|
</el-select> |
|
|
|
|
</el-form-item> |
|
|
|
|
</div> |
|
|
|
@ -43,7 +57,8 @@ |
|
|
|
|
</div> |
|
|
|
|
</el-card> |
|
|
|
|
|
|
|
|
|
<el-card shadow="hover" class="mgb20"> |
|
|
|
|
<el-card shadow="hover" |
|
|
|
|
class="mgb20"> |
|
|
|
|
<div class="flex-center mgb20"> |
|
|
|
|
<p class="addhr_tag"></p> |
|
|
|
|
<span>实验目标</span> |
|
|
|
@ -52,14 +67,18 @@ |
|
|
|
|
<div> |
|
|
|
|
<el-form label-width="0"> |
|
|
|
|
<el-form-item> |
|
|
|
|
<quill :border="true" :readonly="isDetail" v-model="projectManage.experimentTarget" |
|
|
|
|
:minHeight="150" :height="150" /> |
|
|
|
|
<quill :border="true" |
|
|
|
|
:readonly="isDetail" |
|
|
|
|
v-model="projectManage.experimentTarget" |
|
|
|
|
:minHeight="150" |
|
|
|
|
:height="150" /> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-form> |
|
|
|
|
</div> |
|
|
|
|
</el-card> |
|
|
|
|
|
|
|
|
|
<el-card shadow="hover" class="mgb20"> |
|
|
|
|
<el-card shadow="hover" |
|
|
|
|
class="mgb20"> |
|
|
|
|
<div class="flex-center mgb20"> |
|
|
|
|
<p class="addhr_tag"></p> |
|
|
|
|
<span>项目背景</span> |
|
|
|
@ -68,21 +87,27 @@ |
|
|
|
|
<div> |
|
|
|
|
<el-form label-width="0"> |
|
|
|
|
<el-form-item> |
|
|
|
|
<quill :border="true" :readonly="isDetail" v-model="projectManage.experimentDescription" |
|
|
|
|
:minHeight="150" :height="150" /> |
|
|
|
|
<quill :border="true" |
|
|
|
|
:readonly="isDetail" |
|
|
|
|
v-model="projectManage.experimentDescription" |
|
|
|
|
:minHeight="150" |
|
|
|
|
:height="150" /> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-form> |
|
|
|
|
</div> |
|
|
|
|
</el-card> |
|
|
|
|
|
|
|
|
|
<el-card shadow="hover" class="mgb20"> |
|
|
|
|
<el-card shadow="hover" |
|
|
|
|
class="mgb20"> |
|
|
|
|
<div class="flex-between mgb20"> |
|
|
|
|
<div class="flex-center"> |
|
|
|
|
<p class="addhr_tag"></p> |
|
|
|
|
<span>实验任务</span> |
|
|
|
|
</div> |
|
|
|
|
<div> |
|
|
|
|
<el-button :disabled="isDetail" type="primary" @click="toJudgePoint('home')">进入判分点 |
|
|
|
|
<el-button :disabled="isDetail" |
|
|
|
|
type="primary" |
|
|
|
|
@click="toJudgePoint('home')">进入判分点 |
|
|
|
|
</el-button> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
@ -90,63 +115,101 @@ |
|
|
|
|
|
|
|
|
|
<div class="mgb20 flex-between"> |
|
|
|
|
<div class="flex-center"> |
|
|
|
|
<div class="m-r-20" style="color: #f00">项目总分值:100分</div> |
|
|
|
|
<div class="m-r-20" |
|
|
|
|
style="color: #f00">项目总分值:100分</div> |
|
|
|
|
<!-- <div>权重 <div class="dib"><el-input></el-input></div></div> --> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div> |
|
|
|
|
<el-button :disabled="isDetail" class="m-r-20" type="text" @click="avgDistributionScore"> |
|
|
|
|
<el-button :disabled="isDetail" |
|
|
|
|
class="m-r-20" |
|
|
|
|
type="text" |
|
|
|
|
@click="avgDistributionScore"> |
|
|
|
|
平均分配分值 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button :disabled="isDetail" class="m-r-20" type="text" @click="manualDistributionScore"> |
|
|
|
|
<el-button :disabled="isDetail" |
|
|
|
|
class="m-r-20" |
|
|
|
|
type="text" |
|
|
|
|
@click="manualDistributionScore"> |
|
|
|
|
手动分配分值 |
|
|
|
|
</el-button> |
|
|
|
|
<span>(待分配分值: {{ handDistributionScore }}/100分)</span> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<el-button :disabled="isDetail" type="primary" icon="el-icon-plus" round |
|
|
|
|
@click="handleAddJudgment" style="margin-bottom: 10px">判分点 |
|
|
|
|
<el-button :disabled="isDetail" |
|
|
|
|
type="primary" |
|
|
|
|
icon="el-icon-plus" |
|
|
|
|
round |
|
|
|
|
@click="handleAddJudgment" |
|
|
|
|
style="margin-bottom: 10px">判分点 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button :disabled="isDetail" type="primary" icon="el-icon-delete" round |
|
|
|
|
@click="batchDeleteProjectJudgment" style="margin-bottom: 10px">批量删除 |
|
|
|
|
<el-button :disabled="isDetail" |
|
|
|
|
type="primary" |
|
|
|
|
icon="el-icon-delete" |
|
|
|
|
round |
|
|
|
|
@click="batchDeleteProjectJudgment" |
|
|
|
|
style="margin-bottom: 10px">批量删除 |
|
|
|
|
</el-button> |
|
|
|
|
<div class="draggable"> |
|
|
|
|
<el-table |
|
|
|
|
ref="projectJudgementTable" |
|
|
|
|
<el-table ref="projectJudgementTable" |
|
|
|
|
:data="projectJudgmentData" |
|
|
|
|
class="table" |
|
|
|
|
stripe |
|
|
|
|
header-align="center" |
|
|
|
|
@selection-change="handleSelectionProjectJudgment" |
|
|
|
|
row-key="judgmentId" |
|
|
|
|
v-loading="listLoading" |
|
|
|
|
> |
|
|
|
|
<el-table-column type="selection" width="55" align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="sort" label="序号" width="80" align="center"> |
|
|
|
|
v-loading="listLoading"> |
|
|
|
|
<el-table-column type="selection" |
|
|
|
|
width="55" |
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="sort" |
|
|
|
|
label="序号" |
|
|
|
|
width="80" |
|
|
|
|
align="center"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
{{ scope.row.sort }} |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column prop="name" label="判分指标" align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="name" label="判分点名称" align="center"></el-table-column> |
|
|
|
|
<el-table-column label="实验要求" align="center" width="600"> |
|
|
|
|
<el-table-column prop="name" |
|
|
|
|
label="判分指标" |
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="name" |
|
|
|
|
label="判分点名称" |
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
<el-table-column label="实验要求" |
|
|
|
|
align="center" |
|
|
|
|
width="600"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<quill :border="true" :readonly="true" elseRead="true" |
|
|
|
|
v-model="scope.row.experimentalRequirements" :minHeight="100" |
|
|
|
|
<quill :border="true" |
|
|
|
|
:readonly="true" |
|
|
|
|
elseRead="true" |
|
|
|
|
v-model="scope.row.experimentalRequirements" |
|
|
|
|
:minHeight="100" |
|
|
|
|
:height="100" /> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column prop="score" label="分数" align="center" width="120"> |
|
|
|
|
<el-table-column prop="score" |
|
|
|
|
label="分数" |
|
|
|
|
align="center" |
|
|
|
|
width="120"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<!--type="number" @blur="updateProjectJudgment"--> |
|
|
|
|
<el-input :disabled="isDetail" v-model.trim="scope.row.score" |
|
|
|
|
<el-input :disabled="isDetail" |
|
|
|
|
v-model.trim="scope.row.score" |
|
|
|
|
@input="scoreChange(scope.row, scope.$index,$event)"></el-input> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column label="操作" width="140" align="center"> |
|
|
|
|
<el-table-column label="操作" |
|
|
|
|
width="140" |
|
|
|
|
align="center"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<el-button :disabled="isDetail" type="text" style="margin-right: 10px" @click="toJudgePoint('edit', scope.row)">自定义</el-button> |
|
|
|
|
<el-button :disabled="isDetail" type="text" @click="delJudgePoint(scope.$index)"> |
|
|
|
|
<el-button :disabled="isDetail" |
|
|
|
|
type="text" |
|
|
|
|
style="margin-right: 10px" |
|
|
|
|
@click="toJudgePoint('edit', scope.row)">自定义</el-button> |
|
|
|
|
<el-button :disabled="isDetail" |
|
|
|
|
type="text" |
|
|
|
|
@click="delJudgePoint(scope.$index)"> |
|
|
|
|
删除 |
|
|
|
|
</el-button> |
|
|
|
|
</template> |
|
|
|
@ -155,7 +218,8 @@ |
|
|
|
|
</div> |
|
|
|
|
</el-card> |
|
|
|
|
|
|
|
|
|
<el-card shadow="hover" class="mgb20"> |
|
|
|
|
<el-card shadow="hover" |
|
|
|
|
class="mgb20"> |
|
|
|
|
<div class="flex-between mgb20"> |
|
|
|
|
<div class="flex-center"> |
|
|
|
|
<p class="addhr_tag"></p> |
|
|
|
@ -163,16 +227,22 @@ |
|
|
|
|
</div> |
|
|
|
|
<div> |
|
|
|
|
启用 |
|
|
|
|
<el-switch :disabled="isDetail" :active-value="0" :inactive-value="1" |
|
|
|
|
<el-switch :disabled="isDetail" |
|
|
|
|
:active-value="0" |
|
|
|
|
:inactive-value="1" |
|
|
|
|
v-model="projectManage.hintOpen"></el-switch> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="border-b-dashed"></div> |
|
|
|
|
<div> |
|
|
|
|
<el-form label-width="0"> |
|
|
|
|
<el-form-item prop="tips" label=""> |
|
|
|
|
<quill :border="true" :readonly="isDetail" v-model="projectManage.experimentHint" |
|
|
|
|
:minHeight="150" :height="150" /> |
|
|
|
|
<el-form-item prop="tips" |
|
|
|
|
label=""> |
|
|
|
|
<quill :border="true" |
|
|
|
|
:readonly="isDetail" |
|
|
|
|
v-model="projectManage.experimentHint" |
|
|
|
|
:minHeight="150" |
|
|
|
|
:height="150" /> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-form> |
|
|
|
|
</div> |
|
|
|
@ -181,15 +251,21 @@ |
|
|
|
|
</el-row> |
|
|
|
|
|
|
|
|
|
<!--选择判分点对话框--> |
|
|
|
|
<el-dialog title="添加判分点" :visible.sync="dialogVisible" width="40%" :close-on-click-modal="false" @close="closeJudgment"> |
|
|
|
|
<el-dialog title="添加判分点" |
|
|
|
|
:visible.sync="dialogVisible" |
|
|
|
|
width="40%" |
|
|
|
|
:close-on-click-modal="false" |
|
|
|
|
@close="closeJudgment"> |
|
|
|
|
<div class="text-right mgb10"> |
|
|
|
|
<div> |
|
|
|
|
<el-input placeholder="请输入需要查找的判分点" prefix-icon="el-icon-search" v-model.trim="judgementpointsquery" clearable></el-input> |
|
|
|
|
<el-input placeholder="请输入需要查找的判分点" |
|
|
|
|
prefix-icon="el-icon-search" |
|
|
|
|
v-model.trim="judgementpointsquery" |
|
|
|
|
clearable></el-input> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<el-table |
|
|
|
|
v-loading="visibleLoading" |
|
|
|
|
<el-table v-loading="visibleLoading" |
|
|
|
|
:data="judgementData" |
|
|
|
|
ref="judgementTable" |
|
|
|
|
class="table" |
|
|
|
@ -197,24 +273,36 @@ |
|
|
|
|
header-align="center" |
|
|
|
|
max-height="400" |
|
|
|
|
@selection-change="handleSelectionJudgment" |
|
|
|
|
:row-key="rowKey" |
|
|
|
|
> |
|
|
|
|
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column> |
|
|
|
|
<el-table-column prop="id" label="序号" align="center" width="100"> |
|
|
|
|
:row-key="rowKey"> |
|
|
|
|
<el-table-column type="selection" |
|
|
|
|
width="55" |
|
|
|
|
align="center" |
|
|
|
|
:reserve-selection="true"></el-table-column> |
|
|
|
|
<el-table-column prop="id" |
|
|
|
|
label="序号" |
|
|
|
|
align="center" |
|
|
|
|
width="100"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
{{ scope.$index + 1 }} |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column prop="name" label="判分点名称" align="center"></el-table-column> |
|
|
|
|
<el-table-column label="操作" align="center" width="100"> |
|
|
|
|
<el-table-column prop="name" |
|
|
|
|
label="判分点名称" |
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
<el-table-column label="操作" |
|
|
|
|
align="center" |
|
|
|
|
width="100"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<el-button size="mini" @click="toJudgePoint('view', scope.row)">查看</el-button> |
|
|
|
|
<el-button size="mini" |
|
|
|
|
@click="toJudgePoint('view', scope.row)">查看</el-button> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
</el-table> |
|
|
|
|
<div slot="footer" class="dialog-footer"> |
|
|
|
|
<div slot="footer" |
|
|
|
|
class="dialog-footer"> |
|
|
|
|
<el-button @click="closeJudgment">取 消</el-button> |
|
|
|
|
<el-button type="primary" @click="saveJudgment">确 定</el-button> |
|
|
|
|
<el-button type="primary" |
|
|
|
|
@click="saveJudgment">确 定</el-button> |
|
|
|
|
</div> |
|
|
|
|
</el-dialog> |
|
|
|
|
</div> |
|
|
|
@ -240,7 +328,7 @@ export default { |
|
|
|
|
founder: 0, // 创建人角色(0、系统 1、老师) |
|
|
|
|
projectName: "", // 项目名称 |
|
|
|
|
remark: '', |
|
|
|
|
permissions: 0, // 项目权限(0、练习 1、考核 2、竞赛) |
|
|
|
|
permissions: 0, // 项目用途(0、练习 1、考核 2、竞赛) |
|
|
|
|
systemId: this.$route.query.systemId, // 系统id |
|
|
|
|
hintOpen: 1, // 实验提示是否开启(0开启 1不开启 默认1) |
|
|
|
|
experimentHint: "", // 实验提示 |
|
|
|
@ -252,7 +340,7 @@ export default { |
|
|
|
|
isDel: 0 // 是否删除(0、未删除 1、已删除 默认0) |
|
|
|
|
}, |
|
|
|
|
projectJudgmentData: [], //实验任务(项目判分点) |
|
|
|
|
oriPer: '', // 原始项目权限,用于保存的时候对比是否有修改该值,如果有,要调另一个接口查询提示 |
|
|
|
|
oriPer: '', // 原始项目用途,用于保存的时候对比是否有修改该值,如果有,要调另一个接口查询提示 |
|
|
|
|
selectedProjectJudgment: [], // 选中的项目判分点 |
|
|
|
|
|
|
|
|
|
dialogVisible: false, // 选择判分点对话框 |
|
|
|
@ -476,7 +564,7 @@ export default { |
|
|
|
|
updateProject (params) { // 更新项目 |
|
|
|
|
this.$post(this.api[params.projectManage.state ? 'updateProjectManage' : 'editProjectDraft'], params).then(res => { |
|
|
|
|
if (res.status === 200) { |
|
|
|
|
// 中台创建的项目,并且更改了项目权限,就需要调这个接口 |
|
|
|
|
// 中台创建的项目,并且更改了项目用途,就需要调这个接口 |
|
|
|
|
if (!params.projectManage.founder && this.oriPer !== params.projectManage.permissions) { |
|
|
|
|
this.$get(`${this.api.checkConfig}?projectId=${this.projectId}`).then(res => { |
|
|
|
|
this.$message.success(res.message === 'success' ? '更新实验项目成功' : res.message) |
|
|
|
|