yujialong 2 months ago
parent ceb4845179
commit b6568bd97c
  1. 17
      src/components/editor.js
  2. 6
      src/pages/achievement/show/index.vue
  3. 1
      src/pages/match/manage/matchSignup.vue
  4. 321
      src/pages/student/list/index.vue

@ -4,7 +4,7 @@ export default {
//skin:'oxide-dark',
language: 'zh_CN',
language_url: './styles/tinymce/langs/zh_CN.js',
plugins: 'print powerpaste preview searchreplace autolink directionality visualblocks visualchars fullscreen image link media template advcode codesample table charmap hr pagebreak nonbreaking anchor insertdatetime advlist lists wordcount imagetools textpattern help emoticons autosave autoresize formatpainter',
plugins: 'print powerpaste preview searchreplace autolink directionality visualblocks visualchars fullscreen image link media template advcode codesample table charmap hr pagebreak nonbreaking anchor insertdatetime advlist lists wordcount imagetools textpattern help emoticons autoresize formatpainter',
toolbar: 'code undo redo restoredraft | cut copy powerpaste pastetext | forecolor backcolor headings fontsize lineHeight bold italic underline strikethrough link anchor | alignleft aligncenter alignright alignjustify | \
styleselect fontselect fontsizeselect | bullist numlist | blockquote subscript superscript removeformat | \
table image media charmap emoticons hr pagebreak insertdatetime print preview | fullscreen | indent2em formatpainter',
@ -212,7 +212,8 @@ export default {
},
//为内容模板插件提供预置模板
templates: [
{ title: '个股分析报告', description: '', content: `
{
title: '个股分析报告', description: '', content: `
<div class="tiny-report">
<h2>个股分析报告</h2>
<h6>1.引言</h6>
@ -271,7 +272,8 @@ export default {
`
},
{ title: '行业数据分析报告', description: '', content: `
{
title: '行业数据分析报告', description: '', content: `
<div class="tiny-report">
<h2>行业数据分析报告</h2>
<h6>1.引言</h6>
@ -344,7 +346,8 @@ export default {
`
},
{ title: '宏观数据分析报告', description: '', content: `
{
title: '宏观数据分析报告', description: '', content: `
<div class="tiny-report">
<h2>宏观数据分析报告</h2>
<h6>1.引言</h6>
@ -403,7 +406,8 @@ export default {
`
},
{ title: '可视化报告', description: '', content: `
{
title: '可视化报告', description: '', content: `
<div class="tiny-report">
<h2>可视化报告</h2>
<h6>1.封面</h6>
@ -474,7 +478,8 @@ export default {
`
},
{ title: '数据分析报告', description: '', content: `
{
title: '数据分析报告', description: '', content: `
<div class="tiny-report">
<h2>数据分析报告</h2>
<h6>1.引言</h6>

@ -169,8 +169,6 @@ export default {
this.loading = true
const { report, userScores } = await this.$get(`${this.api.reportDetail}?reportId=${this.reportId}`)
this.form = report
this.expData = userScores
this.isLc = this.expData.find(e => e.lcRuleRecords) // lcRuleRecords
let form = this.form;
this.infoData = {
workNumber: form.workNumber,
@ -184,16 +182,16 @@ export default {
className: form.className
}
const data = report.data
this.userScores = userScores
// data使
if (!data) {
this.userScores = userScores
this.handleList(userScores)
this.$post(this.api.editExperimentalData, {
reportId,
data: JSON.stringify(userScores)
}).then(res => { }).catch(err => { })
} else {
this.handleList(userScores.find(e => e.lcRuleRecords) ? userScores : JSON.parse(data))
this.handleList(JSON.parse(data))
}
},
//

@ -25,6 +25,7 @@
<div slot="content">
<p style="margin-bottom: 5px;">报名结束前设置的自动分配将在报名结束时触发一次系统自动分配取消则不触发</p>
<p>报名结束后也可以手动点击自动分配按钮来立即触发系统自动分配并且点击一次就触发一次</p>
<p>自动分配仅对触发时已报名的人员进行对于分配后才报名的人员如需自动分配则需手动再次触发自动分配</p>
</div>
<i class="el-icon-question"
style="margin: 0 10px 0 5px;font-size: 16px;color: #8f8f8f;cursor: pointer;"></i>

@ -1,11 +1,9 @@
<template>
<div class="flex">
<div class="page"
style="width: 320px">
<div class="page" style="width: 320px">
<div class="m-b-20">
<h6 class="p-title">学生</h6>
<el-radio-group v-model="studentType"
@change="changeStudentType">
<el-radio-group v-model="studentType" @change="changeStudentType">
<div class="m-b-20">
<el-radio :label="1">所有学生</el-radio>
</div>
@ -17,39 +15,22 @@
<el-divider></el-divider>
<div>
<div class="flex-between m-b-20">
<h6 class="p-title"
style="margin-bottom: 0">学生组织架构</h6>
<el-button v-auth="'学生组织架构添加'"
type="text"
@click="handleAdd">添加</el-button>
<h6 class="p-title" style="margin-bottom: 0">学生组织架构</h6>
<el-button v-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"
<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"
:current-node-key="architectureId"
:props="{ children: 'children', label: 'organizationName', isLeaf: 'leaf' }">
<span class="custom-tree-node"
slot-scope="{ node, data }">
<span class="name"
:title="node.label">{{ node.label }}</span>
<span class="custom-tree-node" slot-scope="{ node, data }">
<span class="name" :title="node.label">{{ node.label }}</span>
<span>
<el-button v-auth="'学生组织架构编辑'"
type="text"
icon="el-icon-edit-outline"
<el-button v-auth="'学生组织架构编辑'" type="text" icon="el-icon-edit-outline"
@click="() => handleEdit(node, data)">
</el-button>
<el-button v-auth="'学生组织架构添加'"
v-if="node.level < 3"
type="text"
icon="el-icon-circle-plus-outline"
<el-button v-auth="'学生组织架构添加'" v-if="node.level < 3" type="text" icon="el-icon-circle-plus-outline"
@click="() => handleAdd(node, data)">
</el-button>
</span>
@ -58,225 +39,113 @@
</div>
</div>
<el-dialog :title="orgTitle"
:visible.sync="orgVisible"
:close-on-click-modal="false"
width="50%"
<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 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 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 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>
</div>
<div class="page flex-1 m-l-20"
style="max-width: calc(100% - 320px)">
<div class="page flex-1 m-l-20" style="max-width: calc(100% - 320px)">
<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"
<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-auth
@click="addStudent">新增学生</el-button>
<el-button type="primary"
v-auth
@click="batchImport">批量导入</el-button>
<el-button type="primary"
v-auth
@click="delAllSelection">批量删除</el-button>
<el-button type="info" v-auth @click="addStudent">新增学生</el-button>
<el-button type="primary" v-auth @click="batchImport">批量导入</el-button>
<el-button type="primary" v-auth @click="delAllSelection">批量删除</el-button>
</div>
</div>
<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"
<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">
<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="180"></el-table-column>
<el-table-column label="操作"
align="center"
width="300">
<el-table-column prop="loginNumber" label="登录次数" align="center" width="100"></el-table-column>
<el-table-column prop="lastLoginTime" label="上次登录时间" align="center" width="180"></el-table-column>
<el-table-column label="操作" align="center" width="300">
<template slot-scope="scope">
<el-button v-auth
v-if="isRemove"
type="text"
@click="removeStudent(scope.row)">移除</el-button>
<el-button v-auth
type="text"
@click="editStudent(scope.row,true)">查看</el-button>
<el-button v-auth
type="text"
@click="editStudent(scope.row,false)">编辑</el-button>
<el-button v-auth
type="text"
@click="resetPassword(scope.row)">重置密码</el-button>
<el-button v-auth
type="text"
@click="handleDelete(scope.row)">删除</el-button>
<el-switch v-auth="'禁用'"
v-model="scope.row.isEnable"
:active-value="1"
:inactive-value="0"
style="margin: 0 5px"
@change="switchOff(scope.row)"></el-switch>
<el-button v-auth v-if="isRemove" type="text" @click="removeStudent(scope.row)">移除</el-button>
<el-button v-auth type="text" @click="editStudent(scope.row, true)">查看</el-button>
<el-button v-auth type="text" @click="editStudent(scope.row, false)">编辑</el-button>
<el-button v-auth type="text" @click="resetPassword(scope.row)">重置密码</el-button>
<el-button v-auth type="text" @click="handleDelete(scope.row)">删除</el-button>
<el-switch v-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"
<el-pagination background @current-change="currentChange" :current-page="page" layout="total, prev, pager, next"
:total="total"></el-pagination>
</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-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.trim="form.workNumber"
placeholder="学生学号"
@blur="workNumberChange"></el-input>
<el-form-item prop="workNumber" label="学生学号">
<el-input v-model.trim="form.workNumber" placeholder="学生学号" @blur="workNumberChange"></el-input>
</el-form-item>
<el-form-item prop="userName"
label="学生姓名">
<el-input v-model.trim="form.userName"
placeholder="请输入学生姓名"></el-input>
<el-form-item prop="userName" label="学生姓名">
<el-input v-model.trim="form.userName" placeholder="请输入学生姓名"></el-input>
</el-form-item>
<el-form-item prop="roleId"
label="账号角色">
<el-form-item prop="roleId" label="账号角色">
学生
</el-form-item>
<el-form-item prop="phone"
label="手机号">
<el-input v-model.trim="form.phone"
placeholder="可用于登录平台,以及找回密码"
maxlength="11"></el-input>
<el-form-item prop="phone" label="手机号">
<el-input v-model.trim="form.phone" placeholder="可用于登录平台,以及找回密码" maxlength="11"></el-input>
</el-form-item>
<el-form-item prop="email"
label="邮箱">
<el-input v-model.trim="form.email"
placeholder="可用于登录平台,以及找回密码"></el-input>
<el-form-item prop="email" label="邮箱">
<el-input v-model.trim="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 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-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"
<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 class="custom-tree-node" slot-scope="{ node, data }">
<span style="display: inline-block; margin-right: 20px">{{ node.label }}</span>
<span>
<el-button v-auth="'学生组织架构添加'"
v-if="node.level < 3"
type="text"
icon="el-icon-circle-plus-outline"
@click="() => handleAdd(node, data)">
<el-button v-auth="'学生组织架构添加'" v-if="node.level < 3" type="text"
icon="el-icon-circle-plus-outline" @click="() => handleAdd(node, data)">
</el-button>
</span>
</span>
@ -287,55 +156,28 @@
</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 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">
<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>
<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-button type="primary"
class="ml20">上传文件<i class="el-icon-upload2 el-icon--right"></i></el-button>
<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>
<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 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>
@ -1119,6 +961,7 @@ export default {
display: inline-flex;
align-items: center;
}
.name {
display: inline-block;
max-width: 160px;

Loading…
Cancel
Save