|
|
@ -2,20 +2,28 @@ |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<el-row :gutter="20"> |
|
|
|
<el-row :gutter="20"> |
|
|
|
<el-col :span="24"> |
|
|
|
<el-col :span="24"> |
|
|
|
<el-card shadow="hover" class="mgb20"> |
|
|
|
<el-card shadow="hover" |
|
|
|
|
|
|
|
class="mgb20"> |
|
|
|
<div class="flex-between"> |
|
|
|
<div class="flex-between"> |
|
|
|
<div class="per_title" v-preventReClick @click="goback()"> |
|
|
|
<div class="per_title" |
|
|
|
|
|
|
|
v-preventReClick |
|
|
|
|
|
|
|
@click="goback()"> |
|
|
|
<i class="el-icon-arrow-left"></i> |
|
|
|
<i class="el-icon-arrow-left"></i> |
|
|
|
<span class="per_back">返回</span> |
|
|
|
<span class="per_back">返回</span> |
|
|
|
<span class="per_school" v-text="form.cid ? '编辑课程' : '新建课程'"></span> |
|
|
|
<span class="per_school" |
|
|
|
|
|
|
|
v-text="form.cid ? '编辑课程' : '新建课程'"></span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<el-button type="primary" round class="mag" v-preventReClick |
|
|
|
<el-button type="primary" |
|
|
|
|
|
|
|
round |
|
|
|
|
|
|
|
class="mag" |
|
|
|
|
|
|
|
v-preventReClick |
|
|
|
@click="saveAdd">确定 |
|
|
|
@click="saveAdd">确定 |
|
|
|
</el-button> |
|
|
|
</el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-card> |
|
|
|
</el-card> |
|
|
|
|
|
|
|
|
|
|
|
<el-card shadow="hover" class="mgb20 "> |
|
|
|
<el-card shadow="hover" |
|
|
|
|
|
|
|
class="mgb20 "> |
|
|
|
<div class="flex-center mgb20"> |
|
|
|
<div class="flex-center mgb20"> |
|
|
|
<p class="addhr_tag"></p> |
|
|
|
<p class="addhr_tag"></p> |
|
|
|
<span>课程信息</span> |
|
|
|
<span>课程信息</span> |
|
|
@ -23,66 +31,111 @@ |
|
|
|
<div class="border-b-dashed"></div> |
|
|
|
<div class="border-b-dashed"></div> |
|
|
|
|
|
|
|
|
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<el-form :model="form" :rules="rules" ref="form" label-width="100px"> |
|
|
|
<el-form :model="form" |
|
|
|
<el-col :span="6" :offset="5"> |
|
|
|
:rules="rules" |
|
|
|
<el-form-item label="课程名称" prop="curriculumName"> |
|
|
|
ref="form" |
|
|
|
<el-input placeholder="请输入课程名称" v-model.trim="form.curriculumName"></el-input> |
|
|
|
label-width="100px"> |
|
|
|
|
|
|
|
<el-col :span="6" |
|
|
|
|
|
|
|
:offset="5"> |
|
|
|
|
|
|
|
<el-form-item label="课程名称" |
|
|
|
|
|
|
|
prop="curriculumName"> |
|
|
|
|
|
|
|
<el-input placeholder="请输入课程名称" |
|
|
|
|
|
|
|
v-model.trim="form.curriculumName"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
|
|
|
<el-form-item label="学科类别" prop="categoryId"> |
|
|
|
<el-form-item label="学科类别" |
|
|
|
<el-select v-model="form.categoryId" clearable placeholder="请选择学科类别" |
|
|
|
prop="categoryId"> |
|
|
|
@change="getProfessionalClass()" @clear="clearsubjectType()"> |
|
|
|
<el-select v-model="form.categoryId" |
|
|
|
<el-option v-for="(item,index) in subjectList" :key="index" |
|
|
|
clearable |
|
|
|
:label="item.disciplineName" :value="item.disciplineId"></el-option> |
|
|
|
placeholder="请选择学科类别" |
|
|
|
|
|
|
|
@change="getProfessionalClass()" |
|
|
|
|
|
|
|
@clear="clearsubjectType()"> |
|
|
|
|
|
|
|
<el-option v-for="(item,index) in subjectList" |
|
|
|
|
|
|
|
:key="index" |
|
|
|
|
|
|
|
:label="item.disciplineName" |
|
|
|
|
|
|
|
:value="item.disciplineId"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
|
|
|
<el-form-item label="专业" prop="professionalId"> |
|
|
|
<el-form-item label="专业" |
|
|
|
<el-select v-model="form.professionalId" clearable placeholder="请选择专业" |
|
|
|
prop="professionalId"> |
|
|
|
|
|
|
|
<el-select v-model="form.professionalId" |
|
|
|
|
|
|
|
clearable |
|
|
|
|
|
|
|
placeholder="请选择专业" |
|
|
|
:disabled="form.professionalCategoryId ? false : true"> |
|
|
|
:disabled="form.professionalCategoryId ? false : true"> |
|
|
|
<el-option v-for="(item,index) in ProfessionalList" :key="index" |
|
|
|
<el-option v-for="(item,index) in ProfessionalList" |
|
|
|
|
|
|
|
:key="index" |
|
|
|
:label="item.professionalName" |
|
|
|
:label="item.professionalName" |
|
|
|
:value="item.professionalId"></el-option> |
|
|
|
:value="item.professionalId"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="供应厂商" prop="supplier"> |
|
|
|
<el-form-item label="供应厂商" |
|
|
|
<el-select v-model="form.supplier" clearable placeholder="请选择供应厂商" multiple> |
|
|
|
prop="supplier"> |
|
|
|
<el-option v-for="(item, i) in suppliers" :key="i" :label="item.supplierName" :value="item.supplierId"></el-option> |
|
|
|
<el-select v-model="form.supplier" |
|
|
|
|
|
|
|
clearable |
|
|
|
|
|
|
|
placeholder="请选择供应厂商" |
|
|
|
|
|
|
|
multiple> |
|
|
|
|
|
|
|
<el-option v-for="(item, i) in suppliers" |
|
|
|
|
|
|
|
:key="i" |
|
|
|
|
|
|
|
:label="item.supplierName" |
|
|
|
|
|
|
|
:value="item.supplierId"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
<el-col :span="6" :offset="2"> |
|
|
|
<el-col :span="6" |
|
|
|
|
|
|
|
:offset="2"> |
|
|
|
<el-form-item label="课程类别"> |
|
|
|
<el-form-item label="课程类别"> |
|
|
|
<el-select v-model="form.curriculumType" clearable placeholder="请选择课程类型"> |
|
|
|
<el-select v-model="form.curriculumType" |
|
|
|
<el-option label="理论课程" :value="0"></el-option> |
|
|
|
clearable |
|
|
|
<el-option label="实训课程" :value="1"></el-option> |
|
|
|
placeholder="请选择课程类型"> |
|
|
|
|
|
|
|
<el-option label="理论课程" |
|
|
|
|
|
|
|
:value="0"></el-option> |
|
|
|
|
|
|
|
<el-option label="实训课程" |
|
|
|
|
|
|
|
:value="1"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="专业类" prop="professionalCategoryId"> |
|
|
|
<el-form-item label="专业类" |
|
|
|
<el-select v-model="form.professionalCategoryId" clearable placeholder="请选择专业类" |
|
|
|
prop="professionalCategoryId"> |
|
|
|
:disabled="form.categoryId ? false : true" @change="getProfessional()" |
|
|
|
<el-select v-model="form.professionalCategoryId" |
|
|
|
|
|
|
|
clearable |
|
|
|
|
|
|
|
placeholder="请选择专业类" |
|
|
|
|
|
|
|
:disabled="form.categoryId ? false : true" |
|
|
|
|
|
|
|
@change="getProfessional()" |
|
|
|
@clear="clearProfessionalClass()"> |
|
|
|
@clear="clearProfessionalClass()"> |
|
|
|
<el-option v-for="(item,index) in ProfessionalClassList" :key="index" |
|
|
|
<el-option v-for="(item,index) in ProfessionalClassList" |
|
|
|
|
|
|
|
:key="index" |
|
|
|
:label="item.professionalClassName" |
|
|
|
:label="item.professionalClassName" |
|
|
|
:value="item.professionalClassId"></el-option> |
|
|
|
:value="item.professionalClassId"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="预计课时" prop="expectedCourse"> |
|
|
|
<el-form-item label="预计课时" |
|
|
|
<el-select v-model="form.expectedCourse" clearable placeholder="请选择预计课时"> |
|
|
|
prop="expectedCourse"> |
|
|
|
<el-option label="32课时" value="32课时"></el-option> |
|
|
|
<el-select v-model="form.expectedCourse" |
|
|
|
<el-option label="64课时" value="64课时"></el-option> |
|
|
|
clearable |
|
|
|
|
|
|
|
placeholder="请选择预计课时"> |
|
|
|
|
|
|
|
<el-option label="32课时" |
|
|
|
|
|
|
|
value="32课时"></el-option> |
|
|
|
|
|
|
|
<el-option label="64课时" |
|
|
|
|
|
|
|
value="64课时"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
<el-col :span="14" :offset="5"> |
|
|
|
<el-col :span="14" |
|
|
|
<el-form-item label="课程简介" prop="briefIntroduction"> |
|
|
|
:offset="5"> |
|
|
|
<el-input type="textarea" :autosize="{ minRows: 4 }" placeholder="请输入课程简介" |
|
|
|
<el-form-item label="课程简介" |
|
|
|
|
|
|
|
prop="briefIntroduction"> |
|
|
|
|
|
|
|
<el-input type="textarea" |
|
|
|
|
|
|
|
:autosize="{ minRows: 4 }" |
|
|
|
|
|
|
|
placeholder="请输入课程简介" |
|
|
|
v-model.trim="form.briefIntroduction"></el-input> |
|
|
|
v-model.trim="form.briefIntroduction"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="教学目标" prop="teachingObjectives"> |
|
|
|
<el-form-item label="教学目标" |
|
|
|
<el-input type="textarea" :autosize="{ minRows: 4 }" placeholder="请输入教学目标" |
|
|
|
prop="teachingObjectives"> |
|
|
|
|
|
|
|
<el-input type="textarea" |
|
|
|
|
|
|
|
:autosize="{ minRows: 4 }" |
|
|
|
|
|
|
|
placeholder="请输入教学目标" |
|
|
|
v-model.trim="form.teachingObjectives"></el-input> |
|
|
|
v-model.trim="form.teachingObjectives"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
@ -91,7 +144,8 @@ |
|
|
|
</el-card> |
|
|
|
</el-card> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 练习配置 --> |
|
|
|
<!-- 练习配置 --> |
|
|
|
<el-card shadow="hover" class="mgb20"> |
|
|
|
<el-card shadow="hover" |
|
|
|
|
|
|
|
class="mgb20"> |
|
|
|
<div class="mgb20 flex-between"> |
|
|
|
<div class="mgb20 flex-between"> |
|
|
|
<div class="flex-center "> |
|
|
|
<div class="flex-center "> |
|
|
|
<p class="addhr_tag"></p> |
|
|
|
<p class="addhr_tag"></p> |
|
|
@ -99,41 +153,64 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<el-button @click="handleBatchDelete(0)">批量移除</el-button> |
|
|
|
<el-button @click="handleBatchDelete(0)">批量移除</el-button> |
|
|
|
<el-button @click="handleConfig(0)" icon="el-icon-plus" circle></el-button> |
|
|
|
<el-button @click="handleConfig(0)" |
|
|
|
|
|
|
|
icon="el-icon-plus" |
|
|
|
|
|
|
|
circle></el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="border-b-dashed"></div> |
|
|
|
<div class="border-b-dashed"></div> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<el-table :data="practiceData" class="table" stripe header-align="center" max-height="400" |
|
|
|
<el-table :data="practiceData" |
|
|
|
|
|
|
|
class="table" |
|
|
|
|
|
|
|
stripe |
|
|
|
|
|
|
|
header-align="center" |
|
|
|
|
|
|
|
max-height="400" |
|
|
|
@selection-change="handleSelectionPractice"> |
|
|
|
@selection-change="handleSelectionPractice"> |
|
|
|
<el-table-column type="selection" width="55" align="center"></el-table-column> |
|
|
|
<el-table-column type="selection" |
|
|
|
<el-table-column type="index" width="100" label="序号" align="center"></el-table-column> |
|
|
|
width="55" |
|
|
|
<el-table-column prop="projectName" label="项目名称" align="center"></el-table-column> |
|
|
|
align="center"></el-table-column> |
|
|
|
<el-table-column prop="remark" label="备注名称" align="center"></el-table-column> |
|
|
|
<el-table-column type="index" |
|
|
|
<el-table-column prop="applicationName" label="系统名称" align="center"> |
|
|
|
width="100" |
|
|
|
|
|
|
|
label="序号" |
|
|
|
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="projectName" |
|
|
|
|
|
|
|
label="项目名称" |
|
|
|
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="remark" |
|
|
|
|
|
|
|
label="备注名称" |
|
|
|
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="applicationName" |
|
|
|
|
|
|
|
label="系统名称" |
|
|
|
|
|
|
|
align="center"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
{{ scope.row.applicationName || systemAll.find(e => e.systemId == scope.row.systemId).systemName }} |
|
|
|
{{ scope.row.applicationName || systemAll.find(e => e.systemId == scope.row.systemId).systemName }} |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="排序" align="center" width="100"> |
|
|
|
<el-table-column label="排序" |
|
|
|
|
|
|
|
align="center" |
|
|
|
|
|
|
|
width="100"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-input v-model.trim="scope.row.sort" |
|
|
|
<el-input v-model.trim="scope.row.sort" |
|
|
|
@input="practiceSortChange(scope.row, scope.$index)"></el-input> |
|
|
|
@input="practiceSortChange(scope.row, scope.$index)"></el-input> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="展示控制" align="center" width="100"> |
|
|
|
<el-table-column label="展示控制" |
|
|
|
|
|
|
|
align="center" |
|
|
|
|
|
|
|
width="100"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-switch |
|
|
|
<el-switch v-model="scope.row.isShow" |
|
|
|
v-model="scope.row.isShow" |
|
|
|
|
|
|
|
:active-value="0" |
|
|
|
:active-value="0" |
|
|
|
:inactive-value="1" |
|
|
|
:inactive-value="1" |
|
|
|
:disabled="scope.row.disabled"> |
|
|
|
:disabled="scope.row.disabled"> |
|
|
|
</el-switch> |
|
|
|
</el-switch> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="操作" align="center" width="100"> |
|
|
|
<el-table-column label="操作" |
|
|
|
|
|
|
|
align="center" |
|
|
|
|
|
|
|
width="100"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button :disabled="scope.row.disabled" @click.native.prevent="handleDelete(scope.$index, practiceData)">移除 |
|
|
|
<el-button :disabled="scope.row.disabled" |
|
|
|
|
|
|
|
@click.native.prevent="handleDelete(scope.$index, practiceData)">移除 |
|
|
|
</el-button> |
|
|
|
</el-button> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
@ -142,7 +219,8 @@ |
|
|
|
</el-card> |
|
|
|
</el-card> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 考核配置 --> |
|
|
|
<!-- 考核配置 --> |
|
|
|
<el-card shadow="hover" class="mgb20"> |
|
|
|
<el-card shadow="hover" |
|
|
|
|
|
|
|
class="mgb20"> |
|
|
|
<div class="mgb20 flex-between"> |
|
|
|
<div class="mgb20 flex-between"> |
|
|
|
<div class="flex-center "> |
|
|
|
<div class="flex-center "> |
|
|
|
<p class="addhr_tag"></p> |
|
|
|
<p class="addhr_tag"></p> |
|
|
@ -150,42 +228,65 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<el-button @click="handleBatchDelete(1)">批量移除</el-button> |
|
|
|
<el-button @click="handleBatchDelete(1)">批量移除</el-button> |
|
|
|
<el-button @click="handleConfig(1)" icon="el-icon-plus" circle></el-button> |
|
|
|
<el-button @click="handleConfig(1)" |
|
|
|
|
|
|
|
icon="el-icon-plus" |
|
|
|
|
|
|
|
circle></el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="border-b-dashed"></div> |
|
|
|
<div class="border-b-dashed"></div> |
|
|
|
<!-- 实训配置 --> |
|
|
|
<!-- 实训配置 --> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<el-table :data="assessmentData" class="table" stripe header-align="center" max-height="400" |
|
|
|
<el-table :data="assessmentData" |
|
|
|
|
|
|
|
class="table" |
|
|
|
|
|
|
|
stripe |
|
|
|
|
|
|
|
header-align="center" |
|
|
|
|
|
|
|
max-height="400" |
|
|
|
@selection-change="handleSelectionAssessment"> |
|
|
|
@selection-change="handleSelectionAssessment"> |
|
|
|
<el-table-column type="selection" width="55" align="center"></el-table-column> |
|
|
|
<el-table-column type="selection" |
|
|
|
<el-table-column type="index" width="100" label="序号" align="center"></el-table-column> |
|
|
|
width="55" |
|
|
|
<el-table-column prop="projectName" label="项目名称" align="center"></el-table-column> |
|
|
|
align="center"></el-table-column> |
|
|
|
<el-table-column prop="remark" label="备注名称" align="center"></el-table-column> |
|
|
|
<el-table-column type="index" |
|
|
|
<el-table-column prop="applicationName" label="系统名称" align="center"> |
|
|
|
width="100" |
|
|
|
|
|
|
|
label="序号" |
|
|
|
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="projectName" |
|
|
|
|
|
|
|
label="项目名称" |
|
|
|
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="remark" |
|
|
|
|
|
|
|
label="备注名称" |
|
|
|
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="applicationName" |
|
|
|
|
|
|
|
label="系统名称" |
|
|
|
|
|
|
|
align="center"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
{{ scope.row.applicationName || systemAll.find(e => e.systemId == scope.row.systemId).systemName }} |
|
|
|
{{ scope.row.applicationName || systemAll.find(e => e.systemId == scope.row.systemId).systemName }} |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="排序" align="center" width="100"> |
|
|
|
<el-table-column label="排序" |
|
|
|
|
|
|
|
align="center" |
|
|
|
|
|
|
|
width="100"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-input v-model.trim="scope.row.sort" |
|
|
|
<el-input v-model.trim="scope.row.sort" |
|
|
|
@input="assessmentSortChange(scope.row, scope.$index)"></el-input> |
|
|
|
@input="assessmentSortChange(scope.row, scope.$index)"></el-input> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="展示控制" align="center" width="100"> |
|
|
|
<el-table-column label="展示控制" |
|
|
|
|
|
|
|
align="center" |
|
|
|
|
|
|
|
width="100"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-switch |
|
|
|
<el-switch v-model="scope.row.isShow" |
|
|
|
v-model="scope.row.isShow" |
|
|
|
|
|
|
|
:active-value="0" |
|
|
|
:active-value="0" |
|
|
|
:inactive-value="1" |
|
|
|
:inactive-value="1" |
|
|
|
:disabled="scope.row.disabled"> |
|
|
|
:disabled="scope.row.disabled"> |
|
|
|
</el-switch> |
|
|
|
</el-switch> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="操作" align="center" width="100"> |
|
|
|
<el-table-column label="操作" |
|
|
|
|
|
|
|
align="center" |
|
|
|
|
|
|
|
width="100"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button :disabled="scope.row.disabled" @click.native.prevent="handleDelete(scope.$index, assessmentData)">移除</el-button> |
|
|
|
<el-button :disabled="scope.row.disabled" |
|
|
|
|
|
|
|
@click.native.prevent="handleDelete(scope.$index, assessmentData)">移除</el-button> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</el-table> |
|
|
@ -193,7 +294,8 @@ |
|
|
|
</el-card> |
|
|
|
</el-card> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 竞赛配置 --> |
|
|
|
<!-- 竞赛配置 --> |
|
|
|
<el-card shadow="hover" class="mgb20"> |
|
|
|
<el-card shadow="hover" |
|
|
|
|
|
|
|
class="mgb20"> |
|
|
|
<div class="mgb20 flex-between"> |
|
|
|
<div class="mgb20 flex-between"> |
|
|
|
<div class="flex-center "> |
|
|
|
<div class="flex-center "> |
|
|
|
<p class="addhr_tag"></p> |
|
|
|
<p class="addhr_tag"></p> |
|
|
@ -201,41 +303,62 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<el-button @click="handleBatchDelete(2)">批量移除</el-button> |
|
|
|
<el-button @click="handleBatchDelete(2)">批量移除</el-button> |
|
|
|
<el-button @click="handleConfig(2)" icon="el-icon-plus" circle></el-button> |
|
|
|
<el-button @click="handleConfig(2)" |
|
|
|
|
|
|
|
icon="el-icon-plus" |
|
|
|
|
|
|
|
circle></el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="border-b-dashed"></div> |
|
|
|
<div class="border-b-dashed"></div> |
|
|
|
<!-- 实训配置 --> |
|
|
|
<!-- 实训配置 --> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<el-table :data="matches" class="table" stripe header-align="center" max-height="400" |
|
|
|
<el-table :data="matches" |
|
|
|
|
|
|
|
class="table" |
|
|
|
|
|
|
|
stripe |
|
|
|
|
|
|
|
header-align="center" |
|
|
|
|
|
|
|
max-height="400" |
|
|
|
@selection-change="handleSelectionMatch"> |
|
|
|
@selection-change="handleSelectionMatch"> |
|
|
|
<el-table-column type="selection" width="55" align="center"></el-table-column> |
|
|
|
<el-table-column type="selection" |
|
|
|
<el-table-column type="index" width="100" label="序号" align="center"></el-table-column> |
|
|
|
width="55" |
|
|
|
<el-table-column prop="projectName" label="项目名称" align="center"></el-table-column> |
|
|
|
align="center"></el-table-column> |
|
|
|
<el-table-column prop="applicationName" label="系统名称" align="center"> |
|
|
|
<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="applicationName" |
|
|
|
|
|
|
|
label="系统名称" |
|
|
|
|
|
|
|
align="center"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
{{ scope.row.applicationName || systemAll.find(e => e.systemId == scope.row.systemId).systemName }} |
|
|
|
{{ scope.row.applicationName || systemAll.find(e => e.systemId == scope.row.systemId).systemName }} |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="排序" align="center" width="100"> |
|
|
|
<el-table-column label="排序" |
|
|
|
|
|
|
|
align="center" |
|
|
|
|
|
|
|
width="100"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-input v-model.trim="scope.row.sort" |
|
|
|
<el-input v-model.trim="scope.row.sort" |
|
|
|
@input="assessmentSortChange(scope.row, scope.$index)"></el-input> |
|
|
|
@input="assessmentSortChange(scope.row, scope.$index)"></el-input> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="展示控制" align="center" width="100"> |
|
|
|
<el-table-column label="展示控制" |
|
|
|
|
|
|
|
align="center" |
|
|
|
|
|
|
|
width="100"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-switch |
|
|
|
<el-switch v-model="scope.row.isShow" |
|
|
|
v-model="scope.row.isShow" |
|
|
|
|
|
|
|
:active-value="0" |
|
|
|
:active-value="0" |
|
|
|
:inactive-value="1" |
|
|
|
:inactive-value="1" |
|
|
|
:disabled="scope.row.disabled"> |
|
|
|
:disabled="scope.row.disabled"> |
|
|
|
</el-switch> |
|
|
|
</el-switch> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="操作" align="center" width="100"> |
|
|
|
<el-table-column label="操作" |
|
|
|
|
|
|
|
align="center" |
|
|
|
|
|
|
|
width="100"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button :disabled="scope.row.disabled" @click.native.prevent="handleDelete(scope.$index, matches)">移除</el-button> |
|
|
|
<el-button :disabled="scope.row.disabled" |
|
|
|
|
|
|
|
@click.native.prevent="handleDelete(scope.$index, matches)">移除</el-button> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</el-table> |
|
|
@ -246,19 +369,29 @@ |
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 配置弹窗 --> |
|
|
|
<!-- 配置弹窗 --> |
|
|
|
<el-dialog :visible.sync="configVisible" width="1200px" center custom-class="config-dia"> |
|
|
|
<el-dialog :visible.sync="configVisible" |
|
|
|
|
|
|
|
width="1200px" |
|
|
|
|
|
|
|
center |
|
|
|
|
|
|
|
custom-class="config-dia"> |
|
|
|
<div class="config-wrap"> |
|
|
|
<div class="config-wrap"> |
|
|
|
<div class="item system"> |
|
|
|
<div class="item system"> |
|
|
|
<div class="title-wrap flex-center"> |
|
|
|
<div class="title-wrap flex-center"> |
|
|
|
<p class="addhr_tag"></p> |
|
|
|
<p class="addhr_tag"></p> |
|
|
|
<span>系统列表</span> |
|
|
|
<span>系统列表</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<el-input placeholder="请输入系统名称" prefix-icon="el-icon-search" v-model.trim="systemKeyword" clearable></el-input> |
|
|
|
<el-input placeholder="请输入系统名称" |
|
|
|
|
|
|
|
prefix-icon="el-icon-search" |
|
|
|
|
|
|
|
v-model.trim="systemKeyword" |
|
|
|
|
|
|
|
clearable></el-input> |
|
|
|
|
|
|
|
|
|
|
|
<ul class="systems"> |
|
|
|
<ul class="systems"> |
|
|
|
<li v-for="(item, i) in systems" :key="i" :title="item.systemName"> |
|
|
|
<li v-for="(item, i) in systems" |
|
|
|
<el-checkbox v-model="item.check" @change="val => systemChange(val, item)"></el-checkbox> |
|
|
|
:key="i" |
|
|
|
<div :class="['name', {active: curSystem == item.systemId}]" @click="getProject(item)"> |
|
|
|
:title="item.systemName"> |
|
|
|
|
|
|
|
<el-checkbox v-model="item.check" |
|
|
|
|
|
|
|
@change="val => systemChange(val, item)"></el-checkbox> |
|
|
|
|
|
|
|
<div :class="['name', {active: curSystem == item.systemId}]" |
|
|
|
|
|
|
|
@click="getProject(item)"> |
|
|
|
<span>{{ item.systemName }}</span> |
|
|
|
<span>{{ item.systemName }}</span> |
|
|
|
<i class="el-icon-arrow-right"></i> |
|
|
|
<i class="el-icon-arrow-right"></i> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -271,12 +404,22 @@ |
|
|
|
<p class="addhr_tag"></p> |
|
|
|
<p class="addhr_tag"></p> |
|
|
|
<span>项目列表</span> |
|
|
|
<span>项目列表</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<el-input placeholder="请输入项目名称" prefix-icon="el-icon-search" v-model.trim="projectKeyword" clearable></el-input> |
|
|
|
<el-input placeholder="请输入项目名称" |
|
|
|
|
|
|
|
prefix-icon="el-icon-search" |
|
|
|
|
|
|
|
v-model.trim="projectKeyword" |
|
|
|
|
|
|
|
clearable></el-input> |
|
|
|
|
|
|
|
|
|
|
|
<ul class="systems"> |
|
|
|
<ul class="systems"> |
|
|
|
<el-checkbox v-if="projects.length" v-model="checkAll" label="全选" @change="val => checkAllChange(val, projects[0].systemId)"></el-checkbox> |
|
|
|
<el-checkbox v-if="projects.length" |
|
|
|
<li v-for="(item, i) in projects" :key="i" :title="item.projectName"> |
|
|
|
v-model="checkAll" |
|
|
|
<el-checkbox v-model="item.check" :label="item.remark ? item.remark + '(' + item.projectName + ')' : item.projectName" @change="val => projectChange(val, item)"></el-checkbox> |
|
|
|
label="全选" |
|
|
|
|
|
|
|
@change="val => checkAllChange(val, projects[0].systemId)"></el-checkbox> |
|
|
|
|
|
|
|
<li v-for="(item, i) in projects" |
|
|
|
|
|
|
|
:key="i" |
|
|
|
|
|
|
|
:title="item.projectName"> |
|
|
|
|
|
|
|
<el-checkbox v-model="item.check" |
|
|
|
|
|
|
|
:label="item.remark ? item.remark + '(' + item.projectName + ')' : item.projectName" |
|
|
|
|
|
|
|
@change="val => projectChange(val, item)"></el-checkbox> |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -286,33 +429,58 @@ |
|
|
|
<p class="addhr_tag"></p> |
|
|
|
<p class="addhr_tag"></p> |
|
|
|
<span>已选择项目({{ checkeds.length }}个)</span> |
|
|
|
<span>已选择项目({{ checkeds.length }}个)</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<el-input style="width: 200px;margin-bottom: 20px;" placeholder="请输入项目名称" prefix-icon="el-icon-search" v-model.trim="checkedKeyword" clearable></el-input> |
|
|
|
<el-input style="width: 200px;margin-bottom: 20px;" |
|
|
|
<el-table :data="checkeds" class="table" stripe header-align="center" max-height="470"> |
|
|
|
placeholder="请输入项目名称" |
|
|
|
<el-table-column type="index" width="55" label="序号" align="center"></el-table-column> |
|
|
|
prefix-icon="el-icon-search" |
|
|
|
<el-table-column prop="applicationName" label="系统名称" align="center"> |
|
|
|
v-model.trim="checkedKeyword" |
|
|
|
|
|
|
|
clearable></el-input> |
|
|
|
|
|
|
|
<el-table :data="checkeds" |
|
|
|
|
|
|
|
class="table" |
|
|
|
|
|
|
|
stripe |
|
|
|
|
|
|
|
header-align="center" |
|
|
|
|
|
|
|
max-height="470"> |
|
|
|
|
|
|
|
<el-table-column type="index" |
|
|
|
|
|
|
|
width="55" |
|
|
|
|
|
|
|
label="序号" |
|
|
|
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="applicationName" |
|
|
|
|
|
|
|
label="系统名称" |
|
|
|
|
|
|
|
align="center"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
{{ scope.row.applicationName || systemAll.find(e => e.systemId == scope.row.systemId).systemName }} |
|
|
|
{{ scope.row.applicationName || systemAll.find(e => e.systemId == scope.row.systemId).systemName }} |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="projectName" width="80" label="系统类型" align="center"> |
|
|
|
<el-table-column prop="projectName" |
|
|
|
|
|
|
|
width="80" |
|
|
|
|
|
|
|
label="系统类型" |
|
|
|
|
|
|
|
align="center"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
{{ scope.row.type ? '流程类' : '编程类' }} |
|
|
|
{{ scope.row.type ? '流程类' : '编程类' }} |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="remark" label="备注名称" align="center"></el-table-column> |
|
|
|
<el-table-column prop="remark" |
|
|
|
<el-table-column prop="projectName" label="项目名称" align="center"></el-table-column> |
|
|
|
label="备注名称" |
|
|
|
<el-table-column label="操作" align="center" width="55"> |
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="projectName" |
|
|
|
|
|
|
|
label="项目名称" |
|
|
|
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
|
|
|
<el-table-column label="操作" |
|
|
|
|
|
|
|
align="center" |
|
|
|
|
|
|
|
width="55"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<i :class="['el-icon-delete rm', {disabled: scope.row.disabled}]" @click="delProject(scope.$index, scope.row)"></i> |
|
|
|
<i :class="['el-icon-delete rm', {disabled: scope.row.disabled}]" |
|
|
|
|
|
|
|
@click="delProject(scope.$index, scope.row)"></i> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</el-table> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<span slot="footer" class="dialog-footer"> |
|
|
|
<span slot="footer" |
|
|
|
|
|
|
|
class="dialog-footer"> |
|
|
|
<el-button @click="configVisible = false">取 消</el-button> |
|
|
|
<el-button @click="configVisible = false">取 消</el-button> |
|
|
|
<el-button type="primary" @click="handleConfirm">确 定</el-button> |
|
|
|
<el-button type="primary" |
|
|
|
|
|
|
|
@click="handleConfirm">确 定</el-button> |
|
|
|
</span> |
|
|
|
</span> |
|
|
|
</el-dialog> |
|
|
|
</el-dialog> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -320,7 +488,7 @@ |
|
|
|
|
|
|
|
|
|
|
|
<script> |
|
|
|
<script> |
|
|
|
export default { |
|
|
|
export default { |
|
|
|
data() { |
|
|
|
data () { |
|
|
|
return { |
|
|
|
return { |
|
|
|
headers: { |
|
|
|
headers: { |
|
|
|
token: sessionStorage.getItem("token") |
|
|
|
token: sessionStorage.getItem("token") |
|
|
@ -330,15 +498,15 @@ export default { |
|
|
|
cid: this.$route.query.cid, |
|
|
|
cid: this.$route.query.cid, |
|
|
|
curriculumName: "", |
|
|
|
curriculumName: "", |
|
|
|
courseType: "", |
|
|
|
courseType: "", |
|
|
|
categoryId: "", |
|
|
|
categoryId: 1, |
|
|
|
professionalCategoryId: "", |
|
|
|
professionalCategoryId: 1, |
|
|
|
professionalId: "", |
|
|
|
professionalId: 1, |
|
|
|
expectedCourse: "", |
|
|
|
expectedCourse: "", |
|
|
|
briefIntroduction: "", |
|
|
|
briefIntroduction: "", |
|
|
|
teachingObjectives: "", |
|
|
|
teachingObjectives: "", |
|
|
|
systemIdByAssessment: [], |
|
|
|
systemIdByAssessment: [], |
|
|
|
systemIdByPractice: [], |
|
|
|
systemIdByPractice: [], |
|
|
|
supplier: '', |
|
|
|
supplier: [] |
|
|
|
}, |
|
|
|
}, |
|
|
|
rules: { |
|
|
|
rules: { |
|
|
|
curriculumName: [ |
|
|
|
curriculumName: [ |
|
|
@ -350,6 +518,9 @@ export default { |
|
|
|
professionalId: [ |
|
|
|
professionalId: [ |
|
|
|
{ required: true, message: "请选择专业", trigger: "change" } |
|
|
|
{ required: true, message: "请选择专业", trigger: "change" } |
|
|
|
], |
|
|
|
], |
|
|
|
|
|
|
|
supplier: [ |
|
|
|
|
|
|
|
{ required: true, message: "请选择供应厂商", trigger: "change" } |
|
|
|
|
|
|
|
], |
|
|
|
expectedCourse: [ |
|
|
|
expectedCourse: [ |
|
|
|
{ required: true, message: "请选择预计课时", trigger: "change" } |
|
|
|
{ required: true, message: "请选择预计课时", trigger: "change" } |
|
|
|
], |
|
|
|
], |
|
|
@ -422,34 +593,34 @@ export default { |
|
|
|
watch: { |
|
|
|
watch: { |
|
|
|
// 监听信息是否有更改,有的话页面离开的时候要询问是否要保存 |
|
|
|
// 监听信息是否有更改,有的话页面离开的时候要询问是否要保存 |
|
|
|
form: { |
|
|
|
form: { |
|
|
|
handler(){ |
|
|
|
handler () { |
|
|
|
this.updateTime++ |
|
|
|
this.updateTime++ |
|
|
|
}, |
|
|
|
}, |
|
|
|
deep:true |
|
|
|
deep: true |
|
|
|
}, |
|
|
|
}, |
|
|
|
systemKeyword: function(val) { |
|
|
|
systemKeyword: function (val) { |
|
|
|
clearTimeout(this.searchTimer); |
|
|
|
clearTimeout(this.searchTimer); |
|
|
|
this.searchTimer = setTimeout(() => { |
|
|
|
this.searchTimer = setTimeout(() => { |
|
|
|
this.getConfig(); |
|
|
|
this.getConfig(); |
|
|
|
}, 500); |
|
|
|
}, 500); |
|
|
|
}, |
|
|
|
}, |
|
|
|
projectKeyword: function(val) { |
|
|
|
projectKeyword: function (val) { |
|
|
|
clearTimeout(this.searchTimer); |
|
|
|
clearTimeout(this.searchTimer); |
|
|
|
this.searchTimer = setTimeout(() => { |
|
|
|
this.searchTimer = setTimeout(() => { |
|
|
|
this.filterProject(); |
|
|
|
this.filterProject(); |
|
|
|
}, 500); |
|
|
|
}, 500); |
|
|
|
}, |
|
|
|
}, |
|
|
|
checkedKeyword: function(val) { |
|
|
|
checkedKeyword: function (val) { |
|
|
|
clearTimeout(this.searchTimer); |
|
|
|
clearTimeout(this.searchTimer); |
|
|
|
this.searchTimer = setTimeout(() => { |
|
|
|
this.searchTimer = setTimeout(() => { |
|
|
|
this.filterChecked(); |
|
|
|
this.filterChecked(); |
|
|
|
}, 500); |
|
|
|
}, 500); |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
created() { |
|
|
|
created () { |
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
mounted() { |
|
|
|
mounted () { |
|
|
|
this.getSubject() |
|
|
|
this.getSubject() |
|
|
|
this.getConfig() |
|
|
|
this.getConfig() |
|
|
|
this.getSystem() |
|
|
|
this.getSystem() |
|
|
@ -457,18 +628,18 @@ export default { |
|
|
|
this.form.cid && this.getInfoData() |
|
|
|
this.form.cid && this.getInfoData() |
|
|
|
}, |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
methods: { |
|
|
|
getInfoData() { |
|
|
|
getInfoData () { |
|
|
|
this.$post(`${this.api.curriculumDetail}?cid=${this.form.cid}`).then(({ data }) => { |
|
|
|
this.$post(`${this.api.curriculumDetail}?cid=${this.form.cid}`).then(({ data }) => { |
|
|
|
if (data.supplier) data.supplier = data.supplier.split(',').map(e => +e) |
|
|
|
if (data.supplier) data.supplier = data.supplier.split(',').map(e => +e) |
|
|
|
if (data.categoryId) { |
|
|
|
if (data.categoryId) { |
|
|
|
this.$get(this.api.courseProfessionalClass, { disciplineId: data.categoryId }).then(res => { |
|
|
|
this.$get(this.api.courseProfessionalClass, { disciplineId: data.categoryId }).then(res => { |
|
|
|
this.ProfessionalClassList = res.list; |
|
|
|
this.ProfessionalClassList = res.list; |
|
|
|
}).catch(res => {}); |
|
|
|
}).catch(res => { }); |
|
|
|
} |
|
|
|
} |
|
|
|
if (data.professionalCategoryId) { |
|
|
|
if (data.professionalCategoryId) { |
|
|
|
this.$get(this.api.courseProfessional, { professionalClassId: data.professionalCategoryId }).then(res => { |
|
|
|
this.$get(this.api.courseProfessional, { professionalClassId: data.professionalCategoryId }).then(res => { |
|
|
|
this.ProfessionalList = res.list; |
|
|
|
this.ProfessionalList = res.list; |
|
|
|
}).catch(res => {}); |
|
|
|
}).catch(res => { }); |
|
|
|
} |
|
|
|
} |
|
|
|
this.$nextTick(() => { |
|
|
|
this.$nextTick(() => { |
|
|
|
this.form = data; |
|
|
|
this.form = data; |
|
|
@ -495,16 +666,16 @@ export default { |
|
|
|
}); |
|
|
|
}); |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 获取供应厂商 |
|
|
|
// 获取供应厂商 |
|
|
|
getSupplier() { |
|
|
|
getSupplier () { |
|
|
|
const sid = this.$store.state.dataPer.find(e => e.permissionName === '课程管理') |
|
|
|
const sid = this.$store.state.dataPer.find(e => e.permissionName === '课程管理') |
|
|
|
this.$get(this.api.getSupplierListByRole, { |
|
|
|
this.$get(this.api.getSupplierListByRole, { |
|
|
|
permissionId: sid.permissionId |
|
|
|
permissionId: sid.permissionId |
|
|
|
}).then(res => { |
|
|
|
}).then(res => { |
|
|
|
this.suppliers = res.supplierList |
|
|
|
this.suppliers = res.supplierList |
|
|
|
}).catch(res => {}) |
|
|
|
}).catch(res => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 获取系统 |
|
|
|
// 获取系统 |
|
|
|
getSystem() { |
|
|
|
getSystem () { |
|
|
|
const checked = this[!this.permissions ? |
|
|
|
const checked = this[!this.permissions ? |
|
|
|
'practiceData' : |
|
|
|
'practiceData' : |
|
|
|
this.permissions == 1 ? |
|
|
|
this.permissions == 1 ? |
|
|
@ -518,39 +689,41 @@ export default { |
|
|
|
supplierId: sid ? sid.supplierId : '' |
|
|
|
supplierId: sid ? sid.supplierId : '' |
|
|
|
}).then(({ serviceList }) => { |
|
|
|
}).then(({ serviceList }) => { |
|
|
|
this.systemsAll = serviceList.records |
|
|
|
this.systemsAll = serviceList.records |
|
|
|
}).catch(err => {}) |
|
|
|
}).catch(err => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
getSubject() { // 获取学科类别 |
|
|
|
getSubject () { // 获取学科类别 |
|
|
|
this.$get(this.api.courseDiscipline).then(res => { |
|
|
|
this.$get(this.api.courseDiscipline).then(res => { |
|
|
|
this.subjectList = res.list; |
|
|
|
this.subjectList = res.list |
|
|
|
|
|
|
|
this.form.categoryId === 1 && this.getProfessionalClass() |
|
|
|
}).catch(err => { |
|
|
|
}).catch(err => { |
|
|
|
}); |
|
|
|
}); |
|
|
|
}, |
|
|
|
}, |
|
|
|
clearsubjectType() { // 清空学科类别 |
|
|
|
clearsubjectType () { // 清空学科类别 |
|
|
|
this.form.professionalCategoryId = "", |
|
|
|
this.form.professionalCategoryId = this.form.categoryId === 1 ? 1 : '' |
|
|
|
this.form.professionalId = ""; |
|
|
|
this.form.professionalId = this.form.categoryId === 1 ? 1 : '' |
|
|
|
}, |
|
|
|
}, |
|
|
|
getProfessionalClass() { // 获取专业类 |
|
|
|
getProfessionalClass () { // 获取专业类 |
|
|
|
this.clearsubjectType(); |
|
|
|
this.clearsubjectType(); |
|
|
|
this.getProfessionalClassData(); |
|
|
|
this.getProfessionalClassData(); |
|
|
|
}, |
|
|
|
}, |
|
|
|
getProfessionalClassData() { |
|
|
|
getProfessionalClassData () { |
|
|
|
let data = { |
|
|
|
let data = { |
|
|
|
disciplineId: this.form.categoryId |
|
|
|
disciplineId: this.form.categoryId |
|
|
|
}; |
|
|
|
}; |
|
|
|
this.$get(this.api.courseProfessionalClass, data).then(res => { |
|
|
|
this.$get(this.api.courseProfessionalClass, data).then(res => { |
|
|
|
this.ProfessionalClassList = res.list; |
|
|
|
this.ProfessionalClassList = res.list; |
|
|
|
|
|
|
|
this.form.professionalCategoryId === 1 && this.getProfessional() |
|
|
|
}).catch(err => { |
|
|
|
}).catch(err => { |
|
|
|
}); |
|
|
|
}); |
|
|
|
}, |
|
|
|
}, |
|
|
|
clearProfessionalClass() { // 清空专业类 |
|
|
|
clearProfessionalClass () { // 清空专业类 |
|
|
|
this.form.professionalId = ""; |
|
|
|
this.form.professionalId = this.form.professionalCategoryId === 1 ? 1 : '' |
|
|
|
}, |
|
|
|
}, |
|
|
|
getProfessional() { // 获取专业 |
|
|
|
getProfessional () { // 获取专业 |
|
|
|
this.clearProfessionalClass(); |
|
|
|
this.clearProfessionalClass(); |
|
|
|
this.getProfessionalData(); |
|
|
|
this.getProfessionalData(); |
|
|
|
}, |
|
|
|
}, |
|
|
|
getProfessionalData() { |
|
|
|
getProfessionalData () { |
|
|
|
let data = { |
|
|
|
let data = { |
|
|
|
professionalClassId: this.form.professionalCategoryId |
|
|
|
professionalClassId: this.form.professionalCategoryId |
|
|
|
}; |
|
|
|
}; |
|
|
@ -560,7 +733,7 @@ export default { |
|
|
|
}); |
|
|
|
}); |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 练习考核弹框 |
|
|
|
// 练习考核弹框 |
|
|
|
handleConfig(type) { |
|
|
|
handleConfig (type) { |
|
|
|
this.systemKeyword = '' |
|
|
|
this.systemKeyword = '' |
|
|
|
this.projectKeyword = '' |
|
|
|
this.projectKeyword = '' |
|
|
|
this.checkedKeyword = '' |
|
|
|
this.checkedKeyword = '' |
|
|
@ -571,7 +744,7 @@ export default { |
|
|
|
this.checkeds = JSON.parse(JSON.stringify(type == 1 ? this.assessmentData : type == 2 ? this.matches : this.practiceData)) |
|
|
|
this.checkeds = JSON.parse(JSON.stringify(type == 1 ? this.assessmentData : type == 2 ? this.matches : this.practiceData)) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 获取系统 |
|
|
|
// 获取系统 |
|
|
|
getConfig() { |
|
|
|
getConfig () { |
|
|
|
const checked = this[!this.permissions ? |
|
|
|
const checked = this[!this.permissions ? |
|
|
|
'practiceData' : |
|
|
|
'practiceData' : |
|
|
|
this.permissions == 1 ? |
|
|
|
this.permissions == 1 ? |
|
|
@ -598,10 +771,10 @@ export default { |
|
|
|
this.systems = result |
|
|
|
this.systems = result |
|
|
|
this.checkAll = !!checked.find(n => n.systemId == result[0].systemId) // 因为默认显示第一个系统的项目,所以如果系统默认选中,则全选也勾选上 |
|
|
|
this.checkAll = !!checked.find(n => n.systemId == result[0].systemId) // 因为默认显示第一个系统的项目,所以如果系统默认选中,则全选也勾选上 |
|
|
|
result.length && this.getProject(result[0]) |
|
|
|
result.length && this.getProject(result[0]) |
|
|
|
}).catch(err => {}) |
|
|
|
}).catch(err => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 获取项目列表 |
|
|
|
// 获取项目列表 |
|
|
|
getProject(item) { |
|
|
|
getProject (item) { |
|
|
|
const checked = this.checkeds |
|
|
|
const checked = this.checkeds |
|
|
|
this.curSystem = item.systemId |
|
|
|
this.curSystem = item.systemId |
|
|
|
this.$get(`${this.api.getInternalProjectBySystemId}?permissions=${this.permissions}&systemId=${item.systemId}`).then(res => { |
|
|
|
this.$get(`${this.api.getInternalProjectBySystemId}?permissions=${this.permissions}&systemId=${item.systemId}`).then(res => { |
|
|
@ -615,15 +788,15 @@ export default { |
|
|
|
}) |
|
|
|
}) |
|
|
|
this.checkAll = !result.filter(e => !e.check).length |
|
|
|
this.checkAll = !result.filter(e => !e.check).length |
|
|
|
this.projects = result |
|
|
|
this.projects = result |
|
|
|
}).catch(err => {}) |
|
|
|
}).catch(err => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 项目模糊查询 |
|
|
|
// 项目模糊查询 |
|
|
|
filterProject() { |
|
|
|
filterProject () { |
|
|
|
const val = this.projectKeyword |
|
|
|
const val = this.projectKeyword |
|
|
|
this.projects = this.projectAll.filter(e => e.projectName.includes(val)) |
|
|
|
this.projects = this.projectAll.filter(e => e.projectName.includes(val)) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 系统选择回调 |
|
|
|
// 系统选择回调 |
|
|
|
systemChange(val, item) { |
|
|
|
systemChange (val, item) { |
|
|
|
// 项目列表选中状态同步 |
|
|
|
// 项目列表选中状态同步 |
|
|
|
const { projects, checkeds } = this |
|
|
|
const { projects, checkeds } = this |
|
|
|
if (projects.length && projects[0].systemId == item.systemId) { |
|
|
|
if (projects.length && projects[0].systemId == item.systemId) { |
|
|
@ -652,17 +825,17 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
this.checkedAll = JSON.parse(JSON.stringify(checkeds)) // 全部已选项目,另外保存 |
|
|
|
this.checkedAll = JSON.parse(JSON.stringify(checkeds)) // 全部已选项目,另外保存 |
|
|
|
this.getProject(item) |
|
|
|
this.getProject(item) |
|
|
|
}).catch(err => {}) |
|
|
|
}).catch(err => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 项目全选回调 |
|
|
|
// 项目全选回调 |
|
|
|
checkAllChange(val, systemId) { |
|
|
|
checkAllChange (val, systemId) { |
|
|
|
this.systemChange(val, { systemId }) |
|
|
|
this.systemChange(val, { systemId }) |
|
|
|
this.systems.map(e => { |
|
|
|
this.systems.map(e => { |
|
|
|
if (e.systemId == systemId) e.check = val |
|
|
|
if (e.systemId == systemId) e.check = val |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 项目选择回调 |
|
|
|
// 项目选择回调 |
|
|
|
projectChange(val, item) { |
|
|
|
projectChange (val, item) { |
|
|
|
const { systemId } = item |
|
|
|
const { systemId } = item |
|
|
|
const i = this.checkeds.findIndex(e => e.projectId == item.projectId && e.systemId == systemId) |
|
|
|
const i = this.checkeds.findIndex(e => e.projectId == item.projectId && e.systemId == systemId) |
|
|
|
// 选中,则push,否则移除 |
|
|
|
// 选中,则push,否则移除 |
|
|
@ -680,12 +853,12 @@ export default { |
|
|
|
console.log("🚀 ~ file: AddCurriculum.vue ~ line 728 ~ projectChange ~ checkedAll", this.checkeds, item) |
|
|
|
console.log("🚀 ~ file: AddCurriculum.vue ~ line 728 ~ projectChange ~ checkedAll", this.checkeds, item) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 已选择项目模糊查询 |
|
|
|
// 已选择项目模糊查询 |
|
|
|
filterChecked() { |
|
|
|
filterChecked () { |
|
|
|
const val = this.checkedKeyword |
|
|
|
const val = this.checkedKeyword |
|
|
|
this.checkeds = this.checkedAll.filter(e => e.projectName.includes(val)) |
|
|
|
this.checkeds = this.checkedAll.filter(e => e.projectName.includes(val)) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 删除已选项目 |
|
|
|
// 删除已选项目 |
|
|
|
delProject(i, e) { |
|
|
|
delProject (i, e) { |
|
|
|
if (e.disabled) return |
|
|
|
if (e.disabled) return |
|
|
|
this.$confirm("确定要删除吗?", "提示", { |
|
|
|
this.$confirm("确定要删除吗?", "提示", { |
|
|
|
type: "warning" |
|
|
|
type: "warning" |
|
|
@ -704,10 +877,10 @@ export default { |
|
|
|
this.systems.map(n => { |
|
|
|
this.systems.map(n => { |
|
|
|
if (n.systemId == e.systemId) n.check = false |
|
|
|
if (n.systemId == e.systemId) n.check = false |
|
|
|
}) |
|
|
|
}) |
|
|
|
}).catch(() => {}) |
|
|
|
}).catch(() => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 确认系统 |
|
|
|
// 确认系统 |
|
|
|
handleConfirm() { |
|
|
|
handleConfirm () { |
|
|
|
const list = this.checkeds |
|
|
|
const list = this.checkeds |
|
|
|
if (!list.length) { |
|
|
|
if (!list.length) { |
|
|
|
this.$message.warning("请选择系统!"); |
|
|
|
this.$message.warning("请选择系统!"); |
|
|
@ -729,22 +902,22 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
practiceSortChange(row, index) { // 处理排序 |
|
|
|
practiceSortChange (row, index) { // 处理排序 |
|
|
|
this.practiceData.splice(index, 1, row); |
|
|
|
this.practiceData.splice(index, 1, row); |
|
|
|
}, |
|
|
|
}, |
|
|
|
assessmentSortChange(row, index) { // 处理排序 |
|
|
|
assessmentSortChange (row, index) { // 处理排序 |
|
|
|
this.assessmentData.splice(index, 1, row); |
|
|
|
this.assessmentData.splice(index, 1, row); |
|
|
|
}, |
|
|
|
}, |
|
|
|
handleSelectionPractice(val) { // 多选练习项目 |
|
|
|
handleSelectionPractice (val) { // 多选练习项目 |
|
|
|
this.multiplePractice = val; |
|
|
|
this.multiplePractice = val; |
|
|
|
}, |
|
|
|
}, |
|
|
|
handleSelectionAssessment(val) { // 多选考核项目 |
|
|
|
handleSelectionAssessment (val) { // 多选考核项目 |
|
|
|
this.multipleAssessment = val; |
|
|
|
this.multipleAssessment = val; |
|
|
|
}, |
|
|
|
}, |
|
|
|
handleSelectionMatch(val) { // 多选竞赛项目 |
|
|
|
handleSelectionMatch (val) { // 多选竞赛项目 |
|
|
|
this.multipleMatch = val; |
|
|
|
this.multipleMatch = val; |
|
|
|
}, |
|
|
|
}, |
|
|
|
handleBatchDelete(type) { // 批量移除 |
|
|
|
handleBatchDelete (type) { // 批量移除 |
|
|
|
if (type == 1 && !this.multipleAssessment.length) { |
|
|
|
if (type == 1 && !this.multipleAssessment.length) { |
|
|
|
this.$message.warning("请勾选考核项目!"); |
|
|
|
this.$message.warning("请勾选考核项目!"); |
|
|
|
return; |
|
|
|
return; |
|
|
@ -791,7 +964,7 @@ export default { |
|
|
|
this.$message.info("已取消批量移除"); |
|
|
|
this.$message.info("已取消批量移除"); |
|
|
|
}); |
|
|
|
}); |
|
|
|
}, |
|
|
|
}, |
|
|
|
handleDelete(index, data) { // 移除 |
|
|
|
handleDelete (index, data) { // 移除 |
|
|
|
this.$confirm("此操作将移除该项目, 是否继续?", "提示", { |
|
|
|
this.$confirm("此操作将移除该项目, 是否继续?", "提示", { |
|
|
|
type: "warning" |
|
|
|
type: "warning" |
|
|
|
}).then(() => { |
|
|
|
}).then(() => { |
|
|
@ -801,7 +974,7 @@ export default { |
|
|
|
this.$message.info("已取消移除"); |
|
|
|
this.$message.info("已取消移除"); |
|
|
|
}); |
|
|
|
}); |
|
|
|
}, |
|
|
|
}, |
|
|
|
saveAdd(fromBack) { |
|
|
|
saveAdd (fromBack) { |
|
|
|
this.$refs.form.validate((valid) => { |
|
|
|
this.$refs.form.validate((valid) => { |
|
|
|
if (valid) { |
|
|
|
if (valid) { |
|
|
|
if (this.submiting) return false |
|
|
|
if (this.submiting) return false |
|
|
@ -885,7 +1058,7 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
}, |
|
|
|
}, |
|
|
|
goback() { |
|
|
|
goback () { |
|
|
|
const id = this.form.cid |
|
|
|
const id = this.form.cid |
|
|
|
const updateTime = this.updateTime |
|
|
|
const updateTime = this.updateTime |
|
|
|
// 更改了信息才需要提示 |
|
|
|
// 更改了信息才需要提示 |
|
|
@ -902,7 +1075,7 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 返回上一页 |
|
|
|
// 返回上一页 |
|
|
|
backPage() { |
|
|
|
backPage () { |
|
|
|
this.$router.back() |
|
|
|
this.$router.back() |
|
|
|
this.loadIns.close() |
|
|
|
this.loadIns.close() |
|
|
|
} |
|
|
|
} |
|
|
@ -923,7 +1096,7 @@ $avatar-width: 104px; |
|
|
|
overflow: hidden; |
|
|
|
overflow: hidden; |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
&:hover { |
|
|
|
border-color: #409EFF; |
|
|
|
border-color: #409eff; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.uploader-default { |
|
|
|
.uploader-default { |
|
|
@ -1018,8 +1191,9 @@ $avatar-width: 104px; |
|
|
|
align-items: center; |
|
|
|
align-items: center; |
|
|
|
margin-left: 5px; |
|
|
|
margin-left: 5px; |
|
|
|
cursor: pointer; |
|
|
|
cursor: pointer; |
|
|
|
&.active, &:hover { |
|
|
|
&.active, |
|
|
|
color: #9076FF; |
|
|
|
&:hover { |
|
|
|
|
|
|
|
color: #9076ff; |
|
|
|
} |
|
|
|
} |
|
|
|
span { |
|
|
|
span { |
|
|
|
max-width: 200px; |
|
|
|
max-width: 200px; |
|
|
|