|
|
|
@ -1,250 +1,244 @@ |
|
|
|
|
<template> |
|
|
|
|
<div> |
|
|
|
|
<el-row :gutter="20"> |
|
|
|
|
<el-col :span="4"> |
|
|
|
|
<div class="page"> |
|
|
|
|
<div class="m-b-20"> |
|
|
|
|
<h6 class="p-title">学生</h6> |
|
|
|
|
<el-radio-group v-model="studentType" @change="changeStudentType"> |
|
|
|
|
<div class="m-b-20"> |
|
|
|
|
<el-radio :label="1">所有学生</el-radio> |
|
|
|
|
</div> |
|
|
|
|
<div> |
|
|
|
|
<el-radio :label="2">未加入班级的学生</el-radio> |
|
|
|
|
</div> |
|
|
|
|
</el-radio-group> |
|
|
|
|
</div> |
|
|
|
|
<el-divider></el-divider> |
|
|
|
|
<div> |
|
|
|
|
<div class="flex-between m-b-20"> |
|
|
|
|
<h6 class="p-title" style="margin-bottom: 0">学生组织架构</h6> |
|
|
|
|
<el-button v-if="auth('学生组织架构添加')" type="text" @click="handleAdd">添加</el-button> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div style="height: 504px; max-height: 504px; overflow: auto"> |
|
|
|
|
<org-tree |
|
|
|
|
v-if="treeVisible" |
|
|
|
|
default-expand-all |
|
|
|
|
ref="orgTree" |
|
|
|
|
node-key="id" |
|
|
|
|
highlight-current |
|
|
|
|
lazy |
|
|
|
|
:load="loadNodeTree" |
|
|
|
|
:expand-on-click-node="false" |
|
|
|
|
@node-click="handleNodeClick" |
|
|
|
|
:props="{children: 'children', label: 'organizationName', isLeaf: 'leaf'}" |
|
|
|
|
> |
|
|
|
|
<span class="custom-tree-node" slot-scope="{ node, data }"> |
|
|
|
|
<span style="display: inline-block; margin-right: 20px">{{ node.label }}</span> |
|
|
|
|
<span> |
|
|
|
|
<el-button |
|
|
|
|
v-if="auth('学生组织架构编辑')" |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-edit-outline" |
|
|
|
|
@click="() => handleEdit(node, data)"> |
|
|
|
|
</el-button> |
|
|
|
|
<el-button |
|
|
|
|
v-if="auth('学生组织架构添加')&&node.level < 3" |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-circle-plus-outline" |
|
|
|
|
@click="() => handleAdd(node, data)"> |
|
|
|
|
</el-button> |
|
|
|
|
</span> |
|
|
|
|
</span> |
|
|
|
|
</org-tree> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="flex"> |
|
|
|
|
<div class="page" style="width: 17%"> |
|
|
|
|
<div class="m-b-20"> |
|
|
|
|
<h6 class="p-title">学生</h6> |
|
|
|
|
<el-radio-group v-model="studentType" @change="changeStudentType"> |
|
|
|
|
<div class="m-b-20"> |
|
|
|
|
<el-radio :label="1">所有学生</el-radio> |
|
|
|
|
</div> |
|
|
|
|
<div> |
|
|
|
|
<el-radio :label="2">未加入班级的学生</el-radio> |
|
|
|
|
</div> |
|
|
|
|
</el-radio-group> |
|
|
|
|
</div> |
|
|
|
|
<el-divider></el-divider> |
|
|
|
|
<div> |
|
|
|
|
<div class="flex-between m-b-20"> |
|
|
|
|
<h6 class="p-title" style="margin-bottom: 0">学生组织架构</h6> |
|
|
|
|
<el-button v-if="auth('学生组织架构添加')" type="text" @click="handleAdd">添加</el-button> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<el-dialog |
|
|
|
|
:title="orgTitle" |
|
|
|
|
:visible.sync="orgVisible" |
|
|
|
|
:close-on-click-modal="false" |
|
|
|
|
width="50%" |
|
|
|
|
@close="handleClose" |
|
|
|
|
> |
|
|
|
|
<el-form v-if="orgVisible" ref="orgForm" :model="orgForm" :rules="rules" label-width="100px"> |
|
|
|
|
<el-form-item :label="labelName" prop="organizationName"> |
|
|
|
|
<el-input v-model.trim="orgForm.organizationName" placeholder="请输入"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-form-item label="上级部门"> |
|
|
|
|
<el-cascader |
|
|
|
|
v-if="showCascader" |
|
|
|
|
v-model="cascaderValue" |
|
|
|
|
:props="cascaderProps" |
|
|
|
|
@change="handleChangeCascader" |
|
|
|
|
clearable |
|
|
|
|
style="width: 100%" |
|
|
|
|
> |
|
|
|
|
</el-cascader> |
|
|
|
|
<span v-else>{{ orgForm.parentName }}</span> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-form> |
|
|
|
|
<span slot="footer" class="dialog-footer"> |
|
|
|
|
<el-button v-if="isAddOrg" @click="handleClose">取 消</el-button> |
|
|
|
|
<el-button v-if="!isAddOrg" type="danger" plain @click="handleDel">删除</el-button> |
|
|
|
|
<el-button type="primary" @click="orgSubmit">确 定</el-button> |
|
|
|
|
<div style="height: 504px; max-height: 504px; overflow: auto"> |
|
|
|
|
<org-tree |
|
|
|
|
v-if="treeVisible" |
|
|
|
|
default-expand-all |
|
|
|
|
ref="orgTree" |
|
|
|
|
node-key="id" |
|
|
|
|
highlight-current |
|
|
|
|
lazy |
|
|
|
|
:load="loadNodeTree" |
|
|
|
|
:expand-on-click-node="false" |
|
|
|
|
@node-click="handleNodeClick" |
|
|
|
|
:props="{children: 'children', label: 'organizationName', isLeaf: 'leaf'}" |
|
|
|
|
> |
|
|
|
|
<span class="custom-tree-node" slot-scope="{ node, data }"> |
|
|
|
|
<span style="display: inline-block; margin-right: 20px">{{ node.label }}</span> |
|
|
|
|
<span> |
|
|
|
|
<el-button |
|
|
|
|
v-if="auth('学生组织架构编辑')" |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-edit-outline" |
|
|
|
|
@click="() => handleEdit(node, data)"> |
|
|
|
|
</el-button> |
|
|
|
|
<el-button |
|
|
|
|
v-if="auth('学生组织架构添加')&&node.level < 3" |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-circle-plus-outline" |
|
|
|
|
@click="() => handleAdd(node, data)"> |
|
|
|
|
</el-button> |
|
|
|
|
</span> |
|
|
|
|
</el-dialog> |
|
|
|
|
</span> |
|
|
|
|
</org-tree> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="20"> |
|
|
|
|
<div class="page"> |
|
|
|
|
<h6 class="p-title">筛选</h6> |
|
|
|
|
<div class="tool"> |
|
|
|
|
<ul class="filter"> |
|
|
|
|
<li> |
|
|
|
|
<el-input style="width: 250px;" placeholder="请输入学生姓名/学号" prefix-icon="el-icon-search" v-model="keyWord" clearable></el-input> |
|
|
|
|
</li> |
|
|
|
|
</ul> |
|
|
|
|
<div> |
|
|
|
|
<el-button type="info" v-if="auth('新增学生')" @click="addStudent">新增学生</el-button> |
|
|
|
|
<el-button type="primary" v-if="auth('批量导入')" @click="batchImport">批量导入</el-button> |
|
|
|
|
<el-button type="primary" v-if="auth('批量删除')" @click="delAllSelection">批量删除</el-button> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<el-dialog |
|
|
|
|
:title="orgTitle" |
|
|
|
|
:visible.sync="orgVisible" |
|
|
|
|
:close-on-click-modal="false" |
|
|
|
|
width="50%" |
|
|
|
|
@close="handleClose" |
|
|
|
|
> |
|
|
|
|
<el-form v-if="orgVisible" ref="orgForm" :model="orgForm" :rules="rules" label-width="100px"> |
|
|
|
|
<el-form-item :label="labelName" prop="organizationName"> |
|
|
|
|
<el-input v-model.trim="orgForm.organizationName" placeholder="请输入"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-form-item label="上级部门"> |
|
|
|
|
<el-cascader |
|
|
|
|
v-if="showCascader" |
|
|
|
|
v-model="cascaderValue" |
|
|
|
|
:props="cascaderProps" |
|
|
|
|
@change="handleChangeCascader" |
|
|
|
|
clearable |
|
|
|
|
style="width: 100%" |
|
|
|
|
> |
|
|
|
|
</el-cascader> |
|
|
|
|
<span v-else>{{ orgForm.parentName }}</span> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-form> |
|
|
|
|
<span slot="footer" class="dialog-footer"> |
|
|
|
|
<el-button v-if="isAddOrg" @click="handleClose">取 消</el-button> |
|
|
|
|
<el-button v-if="!isAddOrg" type="danger" plain @click="handleDel">删除</el-button> |
|
|
|
|
<el-button type="primary" @click="orgSubmit">确 定</el-button> |
|
|
|
|
</span> |
|
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
|
<el-table :data="listData" class="table" ref="table" stripe header-align="center" @selection-change="handleSelectionChange" :row-key="getRowKeys"> |
|
|
|
|
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column> |
|
|
|
|
<el-table-column type="index" width="60" label="序号" align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="userName" label="学生姓名" align="center" min-width="100"></el-table-column> |
|
|
|
|
<el-table-column prop="workNumber" label="学生学号" align="center" min-width="100"></el-table-column> |
|
|
|
|
<el-table-column prop="className" label="班级" align="center" min-width="200" show-overflow-tooltip></el-table-column> |
|
|
|
|
<el-table-column prop="countries" label="账号角色" align="center" width="100"> |
|
|
|
|
<template slot-scope="scope">学生</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column prop="loginNumber" label="登录次数" align="center" width="100"></el-table-column> |
|
|
|
|
<el-table-column prop="lastLoginTime" label="上次登录时间" align="center" width="120"></el-table-column> |
|
|
|
|
<el-table-column label="操作" align="center" width="300"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<el-button v-if="isRemove && auth('移除')" type="text" @click="removeStudent(scope.row)">移除</el-button> |
|
|
|
|
<el-button v-if="auth('查看')" type="text" @click="editStudent(scope.row,true)">查看</el-button> |
|
|
|
|
<el-button v-if="auth('编辑')" type="text" @click="editStudent(scope.row,false)">编辑</el-button> |
|
|
|
|
<el-button v-if="auth('重置密码')" type="text" @click="resetPassword(scope.row)">重置密码</el-button> |
|
|
|
|
<el-button v-if="auth('删除')" type="text" @click="handleDelete(scope.row)">删除</el-button> |
|
|
|
|
<el-switch |
|
|
|
|
v-if="auth('禁用')" |
|
|
|
|
v-model="scope.row.isEnable" |
|
|
|
|
:active-value="1" |
|
|
|
|
:inactive-value="0" |
|
|
|
|
style="margin: 0 5px" |
|
|
|
|
@change="switchOff(scope.row)" |
|
|
|
|
></el-switch> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
</el-table> |
|
|
|
|
<div class="pagination"> |
|
|
|
|
<el-pagination background @current-change="currentChange" :current-page="page" layout="total, prev, pager, next" :total="total"></el-pagination> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="page flex-1 m-l-20"> |
|
|
|
|
<h6 class="p-title">筛选</h6> |
|
|
|
|
<div class="tool"> |
|
|
|
|
<ul class="filter"> |
|
|
|
|
<li> |
|
|
|
|
<el-input style="width: 250px;" placeholder="请输入学生姓名/学号" prefix-icon="el-icon-search" v-model="keyWord" clearable></el-input> |
|
|
|
|
</li> |
|
|
|
|
</ul> |
|
|
|
|
<div> |
|
|
|
|
<el-button type="info" v-if="auth('新增学生')" @click="addStudent">新增学生</el-button> |
|
|
|
|
<el-button type="primary" v-if="auth('批量导入')" @click="batchImport">批量导入</el-button> |
|
|
|
|
<el-button type="primary" v-if="auth('批量删除')" @click="delAllSelection">批量删除</el-button> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<el-dialog |
|
|
|
|
class="dialog" |
|
|
|
|
width="60%" |
|
|
|
|
:title="isDetail ? '查看学生' : (isAdd ? '新增学生' : '编辑学生')" |
|
|
|
|
:visible.sync="studentVisible" |
|
|
|
|
:close-on-click-modal="false" |
|
|
|
|
@close="closeStudent" |
|
|
|
|
> |
|
|
|
|
<el-form ref="form" :model="form" :rules="rules" :disabled="isDetail" label-width="100px"> |
|
|
|
|
<el-row :gutter="20"> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item prop="workNumber" label="学生学号"> |
|
|
|
|
<el-input v-model="form.workNumber" placeholder="学生学号" @blur="workNumberChange"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-form-item prop="userName" label="学生姓名"> |
|
|
|
|
<el-input v-model="form.userName" placeholder="请输入学生姓名"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-form-item prop="roleId" label="账号角色"> |
|
|
|
|
学生 |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-table :data="listData" class="table" ref="table" stripe header-align="center" @selection-change="handleSelectionChange" :row-key="getRowKeys"> |
|
|
|
|
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column> |
|
|
|
|
<el-table-column type="index" width="60" label="序号" align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="userName" label="学生姓名" align="center" min-width="100"></el-table-column> |
|
|
|
|
<el-table-column prop="workNumber" label="学生学号" align="center" min-width="100"></el-table-column> |
|
|
|
|
<el-table-column prop="className" label="班级" align="center" min-width="200" show-overflow-tooltip></el-table-column> |
|
|
|
|
<el-table-column prop="countries" label="账号角色" align="center" width="100"> |
|
|
|
|
<template slot-scope="scope">学生</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column prop="loginNumber" label="登录次数" align="center" width="100"></el-table-column> |
|
|
|
|
<el-table-column prop="lastLoginTime" label="上次登录时间" align="center" width="120"></el-table-column> |
|
|
|
|
<el-table-column label="操作" align="center" width="300"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<el-button v-if="isRemove && auth('移除')" type="text" @click="removeStudent(scope.row)">移除</el-button> |
|
|
|
|
<el-button v-if="auth('查看')" type="text" @click="editStudent(scope.row,true)">查看</el-button> |
|
|
|
|
<el-button v-if="auth('编辑')" type="text" @click="editStudent(scope.row,false)">编辑</el-button> |
|
|
|
|
<el-button v-if="auth('重置密码')" type="text" @click="resetPassword(scope.row)">重置密码</el-button> |
|
|
|
|
<el-button v-if="auth('删除')" type="text" @click="handleDelete(scope.row)">删除</el-button> |
|
|
|
|
<el-switch |
|
|
|
|
v-if="auth('禁用')" |
|
|
|
|
v-model="scope.row.isEnable" |
|
|
|
|
:active-value="1" |
|
|
|
|
:inactive-value="0" |
|
|
|
|
style="margin: 0 5px" |
|
|
|
|
@change="switchOff(scope.row)" |
|
|
|
|
></el-switch> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
</el-table> |
|
|
|
|
<div class="pagination"> |
|
|
|
|
<el-pagination background @current-change="currentChange" :current-page="page" layout="total, prev, pager, next" :total="total"></el-pagination> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<el-form-item prop="phone" label="手机号"> |
|
|
|
|
<el-input v-model="form.phone" placeholder="可用于登录平台,以及找回密码" maxlength="11"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-form-item prop="email" label="邮箱"> |
|
|
|
|
<el-input v-model="form.email" placeholder="可用于登录平台,以及找回密码"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-form-item prop="uniqueIdentification" label="唯一标识"> |
|
|
|
|
<el-input disabled v-model="form.uniqueIdentification"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="10"> |
|
|
|
|
<el-form-item prop="classId" label="所在班级"> |
|
|
|
|
<el-input |
|
|
|
|
placeholder="输入关键字进行过滤" |
|
|
|
|
v-model="filterText" |
|
|
|
|
style="margin-bottom: 10px" |
|
|
|
|
> |
|
|
|
|
</el-input> |
|
|
|
|
<div style="max-height: 245px; border: 1px solid #DCDFE6; border-radius: 4px; padding: 10px 10px 10px 0px; overflow: auto"> |
|
|
|
|
<org-tree |
|
|
|
|
v-if="showTree && treeVisible" |
|
|
|
|
ref="classTree" |
|
|
|
|
show-checkbox |
|
|
|
|
node-key="id" |
|
|
|
|
highlight-current |
|
|
|
|
default-expand-all |
|
|
|
|
lazy |
|
|
|
|
:load="loadClassTree" |
|
|
|
|
:default-checked-keys="defaultCheckedKeys" |
|
|
|
|
:filter-node-method="filterNode" |
|
|
|
|
:props="{children: 'children', label: 'organizationName', isLeaf: 'leaf'}" |
|
|
|
|
> |
|
|
|
|
<span class="custom-tree-node" slot-scope="{ node, data }"> |
|
|
|
|
<span style="display: inline-block; margin-right: 20px">{{ node.label }}</span> |
|
|
|
|
<span> |
|
|
|
|
<el-button |
|
|
|
|
v-if="auth('学生组织架构添加')&&node.level < 3" |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-circle-plus-outline" |
|
|
|
|
@click="() => handleAdd(node, data)"> |
|
|
|
|
</el-button> |
|
|
|
|
</span> |
|
|
|
|
</span> |
|
|
|
|
</org-tree> |
|
|
|
|
</div> |
|
|
|
|
<p style="color: #C0C4CC;">提示:需创建班级后才可以勾选</p> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
</el-form> |
|
|
|
|
<span slot="footer" class="dialog-footer" v-if="!isDetail"> |
|
|
|
|
<el-button type="primary" :disabled="disableds" @click="saveData(0)">保存</el-button> |
|
|
|
|
<el-button v-if="isAdd" type="primary" :disabled="disableds" @click="saveData(1)">保存并继续添加</el-button> |
|
|
|
|
<el-button size="small" @click="closeStudent">取消</el-button> |
|
|
|
|
</span> |
|
|
|
|
</el-dialog> |
|
|
|
|
<el-dialog |
|
|
|
|
class="dialog" |
|
|
|
|
width="60%" |
|
|
|
|
:title="isDetail ? '查看学生' : (isAdd ? '新增学生' : '编辑学生')" |
|
|
|
|
:visible.sync="studentVisible" |
|
|
|
|
:close-on-click-modal="false" |
|
|
|
|
@close="closeStudent" |
|
|
|
|
> |
|
|
|
|
<el-form ref="form" :model="form" :rules="rules" :disabled="isDetail" label-width="100px"> |
|
|
|
|
<el-row :gutter="20"> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item prop="workNumber" label="学生学号"> |
|
|
|
|
<el-input v-model="form.workNumber" placeholder="学生学号" @blur="workNumberChange"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-form-item prop="userName" label="学生姓名"> |
|
|
|
|
<el-input v-model="form.userName" placeholder="请输入学生姓名"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-form-item prop="roleId" label="账号角色"> |
|
|
|
|
学生 |
|
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
|
<el-dialog title="批量导入" :visible.sync="importVisible" width="24%" :close-on-click-modal="false"> |
|
|
|
|
<div style="text-align: center"> |
|
|
|
|
<div style="margin-bottom: 10px;"> |
|
|
|
|
<el-button type="primary" @click="downLoad">模板下载<i class="el-icon-download el-icon--right"></i></el-button> |
|
|
|
|
</div> |
|
|
|
|
<el-upload |
|
|
|
|
name="file" |
|
|
|
|
accept=".xls,.xlsx" |
|
|
|
|
:on-remove="handleRemove" |
|
|
|
|
:on-error="uploadError" |
|
|
|
|
:on-success="uploadSuccess" |
|
|
|
|
:before-remove="beforeRemove" |
|
|
|
|
:limit="1" |
|
|
|
|
:on-exceed="handleExceed" |
|
|
|
|
:action="this.api.importStudent" |
|
|
|
|
:file-list="uploadList" |
|
|
|
|
:headers="headers" |
|
|
|
|
<el-form-item prop="phone" label="手机号"> |
|
|
|
|
<el-input v-model="form.phone" placeholder="可用于登录平台,以及找回密码" maxlength="11"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-form-item prop="email" label="邮箱"> |
|
|
|
|
<el-input v-model="form.email" placeholder="可用于登录平台,以及找回密码"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-form-item prop="uniqueIdentification" label="唯一标识"> |
|
|
|
|
<el-input disabled v-model="form.uniqueIdentification"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="10"> |
|
|
|
|
<el-form-item prop="classId" label="所在班级"> |
|
|
|
|
<el-input |
|
|
|
|
placeholder="输入关键字进行过滤" |
|
|
|
|
v-model="filterText" |
|
|
|
|
style="margin-bottom: 10px" |
|
|
|
|
> |
|
|
|
|
<el-button type="primary" class="ml20">上传文件<i class="el-icon-upload2 el-icon--right"></i></el-button> |
|
|
|
|
</el-upload> |
|
|
|
|
<el-link v-if="uploadFaild" type="primary" @click="showFaild">部分数据导入失败,查看失败原因</el-link> |
|
|
|
|
</div> |
|
|
|
|
<span slot="footer" class="dialog-footer"> |
|
|
|
|
<el-button size="small" @click="importVisible = false">取 消</el-button> |
|
|
|
|
<el-button size="small" type="primary" @click="uploadSure">确 定</el-button> |
|
|
|
|
</span> |
|
|
|
|
</el-dialog> |
|
|
|
|
</el-input> |
|
|
|
|
<div style="max-height: 245px; border: 1px solid #DCDFE6; border-radius: 4px; padding: 10px 10px 10px 0px; overflow: auto"> |
|
|
|
|
<org-tree |
|
|
|
|
v-if="showTree && treeVisible" |
|
|
|
|
ref="classTree" |
|
|
|
|
show-checkbox |
|
|
|
|
node-key="id" |
|
|
|
|
highlight-current |
|
|
|
|
default-expand-all |
|
|
|
|
lazy |
|
|
|
|
:load="loadClassTree" |
|
|
|
|
:default-checked-keys="defaultCheckedKeys" |
|
|
|
|
:filter-node-method="filterNode" |
|
|
|
|
:props="{children: 'children', label: 'organizationName', isLeaf: 'leaf'}" |
|
|
|
|
> |
|
|
|
|
<span class="custom-tree-node" slot-scope="{ node, data }"> |
|
|
|
|
<span style="display: inline-block; margin-right: 20px">{{ node.label }}</span> |
|
|
|
|
<span> |
|
|
|
|
<el-button |
|
|
|
|
v-if="auth('学生组织架构添加')&&node.level < 3" |
|
|
|
|
type="text" |
|
|
|
|
icon="el-icon-circle-plus-outline" |
|
|
|
|
@click="() => handleAdd(node, data)"> |
|
|
|
|
</el-button> |
|
|
|
|
</span> |
|
|
|
|
</span> |
|
|
|
|
</org-tree> |
|
|
|
|
</div> |
|
|
|
|
<p style="color: #C0C4CC;">提示:需创建班级后才可以勾选</p> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
</el-form> |
|
|
|
|
<span slot="footer" class="dialog-footer" v-if="!isDetail"> |
|
|
|
|
<el-button type="primary" :disabled="disableds" @click="saveData(0)">保存</el-button> |
|
|
|
|
<el-button v-if="isAdd" type="primary" :disabled="disableds" @click="saveData(1)">保存并继续添加</el-button> |
|
|
|
|
<el-button size="small" @click="closeStudent">取消</el-button> |
|
|
|
|
</span> |
|
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
|
<el-dialog title="批量导入" :visible.sync="importVisible" width="24%" :close-on-click-modal="false"> |
|
|
|
|
<div style="text-align: center"> |
|
|
|
|
<div style="margin-bottom: 10px;"> |
|
|
|
|
<el-button type="primary" @click="downLoad">模板下载<i class="el-icon-download el-icon--right"></i></el-button> |
|
|
|
|
</div> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
<el-upload |
|
|
|
|
name="file" |
|
|
|
|
accept=".xls,.xlsx" |
|
|
|
|
:on-remove="handleRemove" |
|
|
|
|
:on-error="uploadError" |
|
|
|
|
:on-success="uploadSuccess" |
|
|
|
|
:before-remove="beforeRemove" |
|
|
|
|
:limit="1" |
|
|
|
|
:on-exceed="handleExceed" |
|
|
|
|
:action="this.api.importStudent" |
|
|
|
|
:file-list="uploadList" |
|
|
|
|
:headers="headers" |
|
|
|
|
> |
|
|
|
|
<el-button type="primary" class="ml20">上传文件<i class="el-icon-upload2 el-icon--right"></i></el-button> |
|
|
|
|
</el-upload> |
|
|
|
|
<el-link v-if="uploadFaild" type="primary" @click="showFaild">部分数据导入失败,查看失败原因</el-link> |
|
|
|
|
</div> |
|
|
|
|
<span slot="footer" class="dialog-footer"> |
|
|
|
|
<el-button size="small" @click="importVisible = false">取 消</el-button> |
|
|
|
|
<el-button size="small" type="primary" @click="uploadSure">确 定</el-button> |
|
|
|
|
</span> |
|
|
|
|
</el-dialog> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|