提交 c373a262 编写于 作者: chengxiang.li's avatar chengxiang.li

CME审核权限及学分发放页面开发

上级 0e9fb75c
......@@ -28,6 +28,8 @@ const editEntry = r => require.ensure([], () => r(require('../views/education/ed
const editNotice = r => require.ensure([], () => r(require('../views/education/edit-notice.vue')), 'edit-notice')
const creditManage = r => require.ensure([], () => r(require('../views/cme/credit-manage.vue')), 'credit-manage')
const reviewAccessManage = r => require.ensure([], () => r(require('../views/cme/review-access-manage.vue')), 'review-access-manage')
const creditSendManage = r => require.ensure([], () => r(require('../views/cme/credit-send-manage.vue')), 'credit-send-manage')
export default [{
path: '/',
......@@ -114,6 +116,14 @@ export default [{
path: '/credit-manage',
component: creditManage,
},
{
path: '/review-access-manage',
component: reviewAccessManage,
},
{
path: '/credit-send-manage',
component: creditSendManage,
},
// {
// path: '/followup',
......
import fetch from '../fetch';
import { getBaseUrl, getSaasDomain, getSaasApiDomain } from '@/utils/index'
export const getSelectListReq = (type) => {
return fetch({
url: getBaseUrl(`cme/constants/list?code=${type}`),
method: 'get',
description: '获取学分等级 状态 学习形式',
})
};
// export const getConstants = (params) => {
// return fetch({
// headers,
// url: getBaseUrl(`basic-data/constants/`),
// method: 'get',
// params: params,
// description: '获取常量',
// })
// };
export const getCreditListReq = (params) => {
return fetch({
url: getBaseUrl(`cme/credit/list`),
method: 'get',
params: params,
description: '获取积分管理列表',
})
};
export const getRelatedCreditReq = (params) => {
return fetch({
url: getBaseUrl(`contents/certificate/select`),
method: 'get',
params: params,
description: '获取关联学分证书列表',
})
};
export const goUpReq = (data, id) => {
return fetch({
headers: {
'Content-Type': 'application/json;charset=UTF-8',
token: localStorage.getItem('storageToken'),
},
url: getBaseUrl(`cme/credit/deploy/${id}`),
method: 'post',
data: data,
description: '上架',
})
}
export const goDownReq = (data, id) => {
return fetch({
headers: {
'Content-Type': 'application/json;charset=UTF-8',
token: localStorage.getItem('storageToken'),
},
url: getBaseUrl(`cme/credit/revoke/${id}`),
method: 'post',
data: data,
description: '下架',
})
}
export const goAddNewReq = (data) => {
return fetch({
headers: {
'Content-Type': 'application/json;charset=UTF-8',
token: localStorage.getItem('storageToken'),
},
// url: 'http://10.177.15.4:13801/cme/credit/create',
url: getBaseUrl(`cme/credit/create`),
method: 'post',
data: data,
description: '新增学分记录',
})
}
......@@ -56,7 +56,7 @@ service.interceptors.request.use(config => {
// console.log('环境变量>>>> ', process.env.BUILD_ENV);
// config.headers['token'] = 'BFD804F3A3194FBBBE113962222839F6';
// config.headers['token'] = 'F8209898391C40A0B8DBC1ED9E157291';
config.headers['token'] = 'FDFBD0E7DC5748A08DA5E0C2CB8498A6';
config.headers['token'] = 'A686102457254CA986639F97DFB4F9F6';
}else{
config.headers['token'] = localStorage.getItem('storageToken')
}
......
......@@ -4,6 +4,7 @@
<div class="credit-list screenSet" id="screenSet">
<el-form ref="form" :model="searchForm" label-width="80px">
<div style="width: 75%; float:left;">
<el-form-item label="学分名称:" class="search-item">
<el-input v-model="searchForm.name" size="small" class="form-width"></el-input>
</el-form-item>
......@@ -17,14 +18,17 @@
<el-option v-for="(item, index) in creditStatus" :key="index" :label="item.text" :value="item.id"></el-option>
</el-select>
</el-form-item>
</div>
<div style="width: 25%; float: right;">
<el-form-item class="btn-list">
<el-button @click="goToSearch" size="small">搜索</el-button>
<el-button @click="showNewAddForm" type="primary" size="small">新增学分</el-button>
</el-form-item>
</div>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" type="index" label="编号" width="80"></el-table-column>
<el-table-column align="center" prop="id" label="编号" width="80"></el-table-column>
<el-table-column align="center" prop="name" label="学分名称" ></el-table-column>
<el-table-column align="center" prop="org" label="主管机构" ></el-table-column>
<el-table-column align="center" prop="studyTypeText" label="学习形式" ></el-table-column>
......@@ -35,11 +39,27 @@
<el-table-column align="center" prop="statusText" label="状态" ></el-table-column>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button type="text" size="small">{{ returnHandleText(scope.row) }}</el-button>
<el-button @click="operationClick(scope.row)" type="text" size="small">
{{ returnHandleText(scope.row) }}
</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination
v-if="tableData && tableData.length > 0"
class="pagination-style"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:total="totalRows"
:current-page="searchForm.pageNo"
:page-sizes="[15, 30, 50, 100]"
:page-size="searchForm.pageSize"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
</div>
</div>
<!-- 新增学分 弹窗 -->
......@@ -48,7 +68,7 @@
@close="hideNewAddForm"
:visible.sync="centerDialogVisible"
:close-on-click-modal="false"
width="500px"
width="600px"
center>
<el-form ref="addForm" :rules="rules" :model="addForm" label-width="120px">
<el-form-item label="学分名称:" class="search-item" prop="name">
......@@ -71,7 +91,10 @@
<el-input v-model="addForm.value" size="small" class="form-width"></el-input>
</el-form-item>
<el-form-item label="关联学分证书:" class="search-item" prop="certificateId">
<el-input v-model="addForm.certificateId" size="small" class="form-width"></el-input>
<!-- <el-input v-model="addForm.certificateId" size="small" class="form-width"></el-input> -->
<el-select v-model="addForm.certificateId" placeholder="请选择" size="small" class="form-width">
<el-option v-for="(item, index) in relateList" :key="index" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
......@@ -87,12 +110,23 @@
import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "../../components/breadcrumb.vue";
import * as commonUtil from "../../utils/utils";
import {
getSelectListReq,
getCreditListReq,
getRelatedCreditReq,
goUpReq,
goDownReq,
goAddNewReq
} from '@/utils/cme/cmeApi'
export default {
data() {
return {
curmbFirst: "CME",
curmbSecond: "学分管理列表",
totalRows: 0,
searchForm: {
name: '',
grade: '',
......@@ -103,6 +137,7 @@
creditGrade: [], // 学分等级
creditStatus: [], // 状态
studyType: [], // 学习形式
relateList: [], // 关联学分证书列表
centerDialogVisible: false,
......@@ -148,9 +183,8 @@
methods: {
// 获取 学分等级/状态/学习形式 常亮接口
getSelectList(type) {
let req = {};
// openLoading(this);
this.GET(`cme/constants/list?code=${type}`, req).then(res => {
getSelectListReq(type).then(res => {
// closeLoading(this);
if (res.code == "000000") {
if (type == 'credit_grade') {
......@@ -168,22 +202,25 @@
this.$message.error('请求失败');
});
},
goToSearch() {
this.searchForm.pageNo = 1;
this.searchForm.pageSize = 15;
this.getCreditList();
},
// 获取 学分table列表
getCreditList() {
let req = {};
req = this.searchForm;
openLoading(this);
this.GET(`cme/credit/list`, req).then(res => {
getCreditListReq(req).then(res => {
closeLoading(this);
if (res.code == "000000") {
console.log('@@@@@@@', res.data.contentList)
if (res.data && res.data.contentList) {
this.tableData = res.data.contentList;
this.totalRows = res.data.total;
} else {
this.tableData = [];
}
......@@ -201,32 +238,97 @@
console.log('>>>>**** status ', status)
return this.handleStatusText[status] || '';
},
// 获取 关联学分证书
getRelatedCredit() {
let req = {
token: localStorage.getItem('storageToken') || localStorage.getItem('token'),
};
this.cmsPOST("api/PICACertificateModalManageServiceImpl/getCertificateEntryList.validate", req).then(res => {
// let req = {
// token: localStorage.getItem('storageToken') || localStorage.getItem('token'),
// };
// this.cmsPOST("api/PICACertificateModalManageServiceImpl/getCertificateEntryList.validate", req).then(res => {
// if (res.code == "000000") {
// console.log(' 获取 关联学分证书: ', res)
// }
// });
let req = {};
getRelatedCreditReq(req).then(res => {
if (res.code == "000000") {
console.log('获取关联学分证书接口 ', res)
if (res.data && res.data.list) {
this.relateList = res.data.list;
} else {
this.relateList = [];
}
} else {
this.$message(res.message);
}
}).catch(err => {
this.$message.error('请求失败');
});
},
operationClick(row) {
console.log('操作: ', row)
let status = row.status;
// 1 已创建状态>显示上架; 2 上架状态>显示下架; 3 下架状态>显示上架
if (status == 1 || status == 3){ // 去上架
this.goUp(row.id);
} else if (status == 2) { // 去下架
this.goDown(row.id);
}
},
goUp(id) {
openLoading(this);
let req = {};
goUpReq(req, id).then(res => {
closeLoading(this);
console.log('上架英文', res)
if (res.code == "000000") {
this.getCreditList();
}else{
this.$message(res.message);
}
}).catch(err => {
this.$message.error('请求失败');
});
},
goDown(id) {
openLoading(this);
let req = {};
goDownReq(req, id).then(res => {
closeLoading(this);
console.log('下架英文', res)
if (res.code == "000000") {
console.log(' 获取 关联学分证书: ', res)
this.getCreditList();
}else{
this.$message(res.message);
}
}).catch(err => {
this.$message.error('请求失败');
});
},
showNewAddForm() {
this.centerDialogVisible = true;
this.getRelatedCredit();
},
hideNewAddForm() {
this.centerDialogVisible = false;
this.resetForm('addForm');
},
resetForm(formName) {
this.$refs[formName].resetFields();
},
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
alert('submit!');
// alert('submit!');
this.goAddNew();
} else {
console.log('error submit!!');
return false;
......@@ -234,6 +336,33 @@
});
},
goAddNew() {
let req = this.addForm;
goAddNewReq(req).then(res => {
closeLoading(this);
console.log('新增积分记录', res)
if (res.code == "000000") {
this.hideNewAddForm();
this.getCreditList();
}else{
this.$message(res.message);
}
}).catch(err => {
this.$message.error('请求失败');
});
},
handleSizeChange(val){
console.log('handleSizeChange>>>')
this.searchForm.pageSize = val;
this.getCreditList();
},
handleCurrentChange(val){
// 切换当前页
this.searchForm.pageNo = val;
this.getCreditList();
},
},
......@@ -245,6 +374,9 @@
.credit-list{
padding: 10px;
background: #fff;
.el-button--small{
font-size: 14px;
}
.search-item{
float: left;
}
......@@ -253,7 +385,10 @@
}
.btn-list{
float: right;
margin-right: 80px;
margin-right: 30px;
.el-form-item__content{
margin-left: 0 !important;
}
}
}
}
......
<template>
<div class="credit-manage-wrap">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond"></bread-crumb>
<div class="list-wrap screenSet" id="screenSet">
<div class="header-title">学分发放管理</div>
<el-form ref="form" :model="searchForm" label-width="100px" class="search-form-wrap">
<div style="width: 75%; float:left;">
<el-form-item label="项目编号:" class="search-item">
<el-input v-model="searchForm.code" size="small" class="form-width" placeholder="请输入项目编号"></el-input>
</el-form-item>
<el-form-item label="项目名称:" class="search-item">
<el-input v-model="searchForm.name" size="small" class="form-width" placeholder="请输入项目名称"></el-input>
</el-form-item>
<el-form-item label="项目时间:" class="search-item">
<el-date-picker
v-model="searchForm.date"
type="daterange"
range-separator="—"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
</div>
<div style="width: 25%; float: right;">
<el-form-item class="btn-list">
<el-button type="primary" size="small">查询</el-button>
<el-button size="small">重置</el-button>
</el-form-item>
</div>
</el-form>
<el-table
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column align="center" prop="code" label="项目编号" show-overflow-tooltip></el-table-column>
<el-table-column align="center" prop="name" label="项目名称" show-overflow-tooltip></el-table-column>
<el-table-column align="center" prop="startTime" label="项目开始时间" show-overflow-tooltip></el-table-column>
<el-table-column align="center" prop="endTime" label="项目结束时间" show-overflow-tooltip></el-table-column>
<el-table-column align="center" prop="status" label="项目状态" show-overflow-tooltip></el-table-column>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button type="text" size="small">查看申请明细</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "../../components/breadcrumb.vue";
import * as commonUtil from "../../utils/utils";
import {
} from '@/utils/cme/cmeApi'
export default {
data() {
return {
curmbFirst: "CME",
curmbSecond: "学分发放管理",
totalRows: 0,
searchForm: {
code: '',
name: '',
date: [],
pageNo: 1,
pageSize: 15,
},
tableData: [
{ code: 11, name:'撒地方的阿萨德李开复就j克拉的房客哦佛i额我joie就哦覅我', startTime: '20191224', endTime: '20201111', status:'已结束' },
],
multipleSelection: [],
}
},
components: {
BreadCrumb
},
created() {
},
mounted() {
commonUtil.resizeHeight();
},
methods: {
handleSelectionChange(val) {
this.multipleSelection = val;
}
},
}
</script>
<style lang="scss">
.credit-manage-wrap{
.list-wrap{
padding: 10px;
background: #fff;
.el-button--small{
font-size: 14px;
}
.search-item{
float: left;
}
.form-width{
width: 200px;
}
.header-title {
padding: 10px 12px;
font-size: 14px;
color: #606266;
border-bottom: 1px solid #efefef;
}
.btn-list{
float: right;
margin-right: 30px;
.el-form-item__content{
margin-left: 0 !important;
}
}
.search-form-wrap{
padding: 25px 0 20px;
overflow: hidden;
border-bottom: 1px dashed #efefef;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="review-access-wrap">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond"></bread-crumb>
<div class="review-access screenSet" id="screenSet">
<div class="header-title">审核权限管理</div>
<el-form ref="form" :model="searchForm" label-width="100px" class="search-form-wrap">
<el-form-item label="姓名:" class="search-item" >
<el-input v-model="searchForm.name" size="small" class="form-width" placeholder="请输入姓名"></el-input>
</el-form-item>
<el-form-item label="权限:" class="search-item">
<el-select v-model="searchForm.access" placeholder="请选择" size="small" class="form-width">
<el-option v-for="(item, index) in accessList" :key="index" :label="item.text" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item class="btn-list">
<el-button @click="goToSearch" type="primary" size="small">查询</el-button>
<el-button @click="goToReset" size="small">重置</el-button>
</el-form-item>
</el-form>
<div>
<el-button @click="goToAdd" type="primary" size="small" class="new-add">新增</el-button>
</div>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" type="index" label="编号" width="80"></el-table-column>
<el-table-column align="center" prop="name" label="姓名" ></el-table-column>
<el-table-column align="center" prop="access" label="权限" ></el-table-column>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button @click="goToEdit(scope.row)" type="text" size="small">编辑</el-button>
<el-button @click="goToDelete(scope.row)" type="text" size="small">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
<!-- 新增/编辑 弹窗 -->
<el-dialog
title="新增/编辑权限"
@close="hideAddEditForm"
:visible.sync="addEditVisible"
:close-on-click-modal="false"
width="600px"
center>
<el-form ref="addEditForm" :rules="rules" :model="addEditForm" label-width="120px">
<el-form-item label="姓名:" class="search-item" prop="name">
<el-select v-model="addEditForm.name" placeholder="请选择" size="small" class="form-width">
<el-option v-for="(item, index) in nameList" :key="index" :label="item.text" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="权限:" class="search-item" prop="access">
<el-select v-model="addEditForm.access" placeholder="请选择" size="small" class="form-width">
<el-option v-for="(item, index) in nameList" :key="index" :label="item.text" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="hideAddEditForm">取 消</el-button>
<el-button type="primary" @click="submitForm('addEditForm')">确 定</el-button>
</span>
</el-dialog>
<!-- 删除 弹窗 -->
<el-dialog
title="删除"
@close="hideDeleteFrom"
:visible.sync="deleteVisible"
:close-on-click-modal="false"
width="600px"
center>
<p style="text-align: center;">确定删除XXX考试审核人的权限?</p>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="confirmDelete">确 定</el-button>
<el-button @click="hideDeleteFrom">取 消</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "../../components/breadcrumb.vue";
import * as commonUtil from "../../utils/utils";
import {
} from '@/utils/cme/cmeApi'
export default {
data() {
return {
curmbFirst: "CME",
curmbSecond: "审核权限管理",
searchForm: {
name: '',
access: '',
},
accessList: [], // 权限列表
tableData: [
{ name: 11, access: 88 }
],
addEditVisible: false,
deleteVisible: false,
addEditForm: {
name: '',
access: '',
},
nameList: [],
rules: {
name: [{ required: true, message: '请输入', trigger: 'blur' }],
access: [{ required: true, message: '请输入', trigger: 'blur' }],
}
}
},
components: {
BreadCrumb
},
created() {
},
mounted() {
commonUtil.resizeHeight();
},
methods: {
// 搜索
goToSearch() {
},
// 重置
goToReset() {
},
// 新增
goToAdd() {
this.addEditVisible = true;
},
// 编辑
goToEdit(row) {
this.addEditVisible = true;
console.log('编辑 ', row)
},
goToDelete() {
this.deleteVisible = true;
},
resetForm(formName) {
this.$refs[formName].resetFields();
},
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
alert('submit!');
} else {
console.log('error submit!!');
return false;
}
});
},
hideAddEditForm() {
this.addEditVisible = false;
this.resetForm('addEditForm');
},
confirmDelete() {
// 调接口
},
hideDeleteFrom() {
this.deleteVisible = false;
},
},
}
</script>
<style lang="scss">
.review-access-wrap{
.review-access{
padding: 10px;
background: #fff;
.el-button--small{
font-size: 14px;
}
.header-title {
padding: 10px 12px;
font-size: 14px;
color: #606266;
border-bottom: 1px solid #efefef;
}
.search-form-wrap{
padding: 25px 0 20px;
overflow: hidden;
border-bottom: 1px dashed #efefef;
}
.search-item{
float: left;
}
.btn-list{
float: right;
.el-form-item__content{
margin-left: 0 !important;
}
}
.new-add{
float: right;
margin: 10px 0 30px;
}
}
}
</style>
\ No newline at end of file
......@@ -153,7 +153,17 @@
title: '学分管理列表',
icon: 'el-icon-document',
index: 'credit-manage'
}
},
{
title: '审核权限管理',
icon: 'el-icon-document',
index: 'review-access-manage'
},
{
title: '学分发放管理',
icon: 'el-icon-document',
index: 'credit-send-manage'
},
]
},
]
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册