提交 9ea843e3 编写于 作者: 张平's avatar 张平

Merge branch 'dev-cme-20191227' into 'release'

Dev cme 20191227 工作站新增CME学分审核管理等页面 codereviewer 张平

工作站新增CME学分审核管理等页面 codereviewer 张平

See merge request !132
[1112/102746.726:ERROR:process_info.cc(329)] VirtualQueryEx: 拒绝访问。 (0x5)
[1112/102746.728:ERROR:process_info.cc(556)] ReadMemoryInfo failed
[1112/102746.728:ERROR:scoped_process_suspend.cc(40)] NtResumeProcess: 已尝试访问正在退出的过程。 (0xc000010a)
......@@ -12,6 +12,7 @@ const addManager = r => require.ensure([], () => r(require('../views/education/a
const editManager = r => require.ensure([], () => r(require('../views/education/edit-manager.vue')), 'edit-manager')
const itemRole = r => require.ensure([], () => r(require('../views/system/item-role.vue')), 'item-role')
const msgPush = r => require.ensure([], () => r(require('../views/msgpush/msg-push.vue')), 'msg-push')
const editCme = r => require.ensure([], () => r(require('../views/education/edit-cme.vue')), 'edit-cme')
import patientsRouters from './patients'
import followRouters from './follow'
......@@ -33,6 +34,11 @@ const entryManager = r => require.ensure([], () => r(require('../views/education
const editEntry = r => require.ensure([], () => r(require('../views/education/edit-entry.vue')), 'edit-entry')
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')
const applyDetail = r => require.ensure([], () => r(require('../views/cme/apply-detail.vue')), 'apply-detail')
export default [{
path: '/',
component: App,
......@@ -63,6 +69,9 @@ export default [{
},{
path: '/edit-manager',
component: editManager
},{
path: '/edit-cme',
component: editCme
},{
path: '/item-component',
component: itemComponent
......@@ -134,8 +143,22 @@ export default [{
component: editNotice,
// redirect: 'msgpush/msg-push',
},
{
path: '/credit-manage',
component: creditManage,
},
{
path: '/review-access-manage',
component: reviewAccessManage,
},
{
path: '/credit-send-manage',
component: creditSendManage,
},
{
path: '/apply-detail',
component: applyDetail,
},
// {
// path: '/followup',
// name: 'followUp',
......
const cmeStore = {
namespaced: true,
state: {
isOutsideUser: false,
},
mutations: {
UPDATE_OUTSIDE_USER_STATUS: (state, data) => {
state.isOutsideUser = data;
}
},
actions: {
updateOutUserStatus({ commit }, data) {
commit('UPDATE_OUTSIDE_USER_STATUS', data);
}
}
}
export default cmeStore;
\ No newline at end of file
......@@ -7,6 +7,9 @@ import getters from './getters'
//居民诊断
import patientsDiagnose from './patientsManage/patientsDiagnose';
// cme
import cmeStore from './cme/cmeStore';
Vue.use(Vuex)
......@@ -15,6 +18,7 @@ export default new Vuex.Store({
common,
...followModules,
patientsDiagnose,
cmeStore,
},
getters
})
......
import fetch from '../fetch';
import { getBaseUrl, getSaasDomain, getSaasApiDomain } from '@/utils/index'
let headers = {
'Content-Type': 'application/json;charset=UTF-8',
token: localStorage.getItem('storageToken'),
};
// 是否是外部用户
export const getUserTypeReq = (type) => {
return fetch({
headers,
url: getBaseUrl(`cme/admin/auth/external`),
method: 'get',
description: '获取是否是外部用户',
})
};
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,
url: getBaseUrl(`cme/credit/deploy/${id}`),
method: 'post',
data: data,
description: '上架',
})
}
export const goDownReq = (data, id) => {
return fetch({
headers,
url: getBaseUrl(`cme/credit/revoke/${id}`),
method: 'post',
data: data,
description: '下架',
})
}
export const goAddNewReq = (data) => {
return fetch({
headers,
// url: 'http://10.177.15.4:13801/cme/credit/create',
url: getBaseUrl(`cme/credit/create`),
method: 'post',
data: data,
description: '新增学分记录',
})
}
// 审核权限管理页面
export const getAuthTableReq = (data) => {
return fetch({
headers,
url: getBaseUrl(`cme/admin/auth/list`),
method: 'post',
data: data,
description: '获取table列表',
})
}
export const getAccessListReq = (params) => {
return fetch({
url: getBaseUrl(`cme/constants/list?code=approval_auth`),
method: 'get',
params: params,
description: '获取权限下拉列表',
})
};
export const getUserListReq = (params) => {
return fetch({
headers,
url: getBaseUrl(`cme/admin/auth/userList`),
method: 'get',
params: params,
description: '获取待选用户列表',
})
};
export const handleSaveEditReq = (data) => {
return fetch({
headers,
url: getBaseUrl(`cme/admin/auth/save`),
method: 'post',
data: data,
description: '新增/编辑权限',
})
}
export const handleDeleteReq = (data) => {
return fetch({
headers,
url: getBaseUrl(`cme/admin/auth/remove`),
method: 'post',
data: data,
description: '删除',
})
}
// 学分发放管理页面
export const getSendListReq = (data) => {
return fetch({
headers,
url: getBaseUrl(`cme/admin/credit/creditList`),
method: 'post',
data: data,
description: '学分发放管理列表',
})
}
// 学分申请明细页面
export const getDetailListReq = (data) => {
return fetch({
headers,
url: getBaseUrl(`cme/admin/credit/creditDetails`),
method: 'post',
data: data,
description: '学分申请明细列表',
})
}
export const getCreditStatusReq = (params) => {
return fetch({
headers,
url: getBaseUrl(`cme/admin/credit/creditStatusList`),
method: 'get',
params: params,
description: '获取学分状态列表',
})
};
export const handleImportReq = (data) => {
return fetch({
headers,
url: getBaseUrl(`cme/admin/credit/importExcel`),
method: 'post',
data: data,
description: '导入',
})
}
export const handleExportReq = (data) => {
return fetch({
headers,
url: getBaseUrl(`cme/admin/credit/exportExcel`),
method: 'post',
data: data,
description: '导出',
})
}
\ No newline at end of file
......@@ -6,14 +6,14 @@ export const envConfig = {
// // baseUrl: 'http://10.177.15.180:10202/',
// // baseUrl: 'http://192.168.140.14:10201/',
// baseUrl: 'https://test1-sc.yunqueyi.com/',
baseUrl: 'https://test1-sc.yunqueyi.com/',
// baseUrl: 'https://uat-sc.yunqueyi.com/',
// baseUrl: 'http://10.177.15.150:10401/',
// baseUrl: 'http://10.177.15.150:11905/',
// baseUrl: 'https://dev-sc.yunqueyi.com/',
// baseUrl: 'https://test1-sc.yunqueyi.com/',
// baseUrl: 'https://sc.yunqueyi.com/',
baseUrl: 'https://uat-sc.yunqueyi.com/',
// baseUrl: 'https://uat-sc.yunqueyi.com/',
apiUrl: 'https://uat-api.yunqueyi.com/',
qiniuFileUrl: "https://uat-sc.yunqueyi.com/contents/admin/qiniu/token1",
qiniuResourceUrl: "https://test1-videos.yunqueyi.com",
......@@ -35,6 +35,7 @@ export const envConfig = {
// reportUrl: 'https://uat-sc-report.yunqueyi.com/',
excelUrl: 'https://uat-file.yunqueyi.com/File/template/portal/',
itemFileUrl: 'http://pica-test-huabei2.oss-cn-beijing.aliyuncs.com/File/template/portal/',
cmsUrl: ' http://dev-cms.yunqueyi.com/',
},
dev: {
baseUrl: 'https://dev-sc.yunqueyi.com/',
......@@ -52,6 +53,7 @@ export const envConfig = {
reportUrl: 'https://dev-sc-report.yunqueyi.com/',
excelUrl: 'https://test-file.yunqueyi.com/File/template/portal/',
itemFileUrl: 'http://pica-test-huabei2.oss-cn-beijing.aliyuncs.com/File/template/portal/',
cmsUrl: ' http://dev-cms.yunqueyi.com/',
},
test: {
baseUrl: 'https://test1-sc.yunqueyi.com/',
......@@ -69,6 +71,7 @@ export const envConfig = {
reportUrl: 'https://test1-sc-report.yunqueyi.com/',
excelUrl: 'https://test-file.yunqueyi.com/File/template/portal/',
itemFileUrl: 'http://pica-test-huabei2.oss-cn-beijing.aliyuncs.com/File/template/portal/',
cmsUrl: ' http://test1-cms.yunqueyi.com/',
},
test2: {
baseUrl: 'https://test2-work.yunqueyi.com/sc/',
......@@ -85,6 +88,7 @@ export const envConfig = {
reportUrl: 'https://test2-sc-report.yunqueyi.com/',
excelUrl: 'https://test-file.yunqueyi.com/File/template/portal/',
itemFileUrl: 'http://pica-test-huabei2.oss-cn-beijing.aliyuncs.com/File/template/portal/',
cmsUrl: ' http://test2-cms.yunqueyi.com/',
},
uat: {
baseUrl: 'https://uat-sc.yunqueyi.com/',
......@@ -102,6 +106,7 @@ export const envConfig = {
reportUrl: 'https://uat-sc-report.yunqueyi.com/',
excelUrl: 'https://test-file.yunqueyi.com/File/template/portal/',
itemFileUrl: 'http://pica-test-huabei2.oss-cn-beijing.aliyuncs.com/File/template/portal/',
cmsUrl: ' http://uat-cms.yunqueyi.com/',
},
pro: {
baseUrl: 'https://sc.yunqueyi.com/',
......@@ -119,5 +124,6 @@ export const envConfig = {
reportUrl: 'https://sc-report.yunqueyi.com/',
excelUrl: 'https://file.yunqueyi.com/File/template/portal/',
itemFileUrl: 'http://pica-test-huabei2.oss-cn-beijing.aliyuncs.com/File/template/portal/',
cmsUrl: ' http://cms.yunqueyi.com/',
}
}
......@@ -54,9 +54,7 @@ service.interceptors.request.use(config => {
}
if( process.env.BUILD_ENV == "development" ){ // 本地开发环境
// console.log('环境变量>>>> ', process.env.BUILD_ENV);
// config.headers['token'] = 'BFD804F3A3194FBBBE113962222839F6';
// config.headers['token'] = 'F8209898391C40A0B8DBC1ED9E157291';
config.headers['token'] = '1653940AC9EE4C56B12440F98BE202D3';
config.headers['token'] = 'E5F82EDD958941C29BCDDDED410ACDB3';
}else{
config.headers['token'] = localStorage.getItem('storageToken')
}
......
......@@ -144,6 +144,16 @@ const vueFilter = {
return '已下架'
}else if(value[0] == 6) {
return '已拒绝'
}else if(value[0] == 7) {
return '待初审'
}else if(value[0] == 8) {
return '初审未通过'
}else if(value[0] == 9) {
return '待复审'
}else if(value[0] == 10) {
return '复审未通过'
}else if(value[0] == 11) {
return '复审通过'
}
},
projeceRoleType: (value) => {
......
......@@ -220,4 +220,9 @@ export function getExeclUrl(url) {
// 获取教培项目文件地址
export function getItemFileUrl(url) {
return getConfigByEnvType('itemFileUrl') + url
}
// 获取老的cms接口域名地址
export function getCmsUrl(url) {
return getConfigByEnvType('cmsUrl') + url
}
\ No newline at end of file
import fetch from '@/utils/fetch'
import { getBaseUrl, getReportUrl, getWorkApi } from '@/utils/index'
import { getBaseUrl, getReportUrl, getWorkApi, getCmsUrl } from '@/utils/index'
import { CryptoJS } from '@/plugins/aes'
import 'jsencrypt'
......@@ -253,7 +253,7 @@ module.exports = {
params: para
})
},
// 通用DELETE请求
DELETE(api, para, callback,str) {
// para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE"
......@@ -291,6 +291,15 @@ module.exports = {
data: para
})
},
// 老的cms请求
cmsPOST(api, para, callback) {
// para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE"
return fetch({
url: getCmsUrl(api),
method: 'post',
data: para
})
},
// 通用saas-POST请求
saasPOST(api, para, cType) {
// para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE"
......
......@@ -752,4 +752,36 @@ export function learnTimeValue(value) {
result = ""+parseInt(h)+"小时"+result;
}
return result;
}
export function getProjectLevelList(data) {
let list = [];
for(let i = 0;i < data.length ; i++) {
let obj = {
value: data[i].id,
label: data[i].text,
}
list.push(obj);
}
return list;
}
export function getProjectLeaderList(data) {
let list = [];
for(let i = 0;i < data.length ; i++) {
let obj = {
value: data[i].id,
label: data[i].name,
}
list.push(obj);
}
return list;
}
export function getCreditList(data) {
let list = [];
for(let i = 0;i < data.length ; i++) {
let obj = data[i];
obj.id = data[i].id;
obj.label = data[i].name;
list.push(obj);
}
return list;
}
\ No newline at end of file
此差异已折叠。
此差异已折叠。
<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.serialNo" size="small" class="form-width" placeholder="请输入项目编号"></el-input>
</el-form-item>
<el-form-item label="项目名称:" class="search-item">
<el-input v-model="searchForm.projectName" size="small" class="form-width" placeholder="请输入项目名称"></el-input>
</el-form-item>
<el-form-item label="项目时间:" class="search-item">
<el-date-picker
v-model="searchForm.beginTime"
type="datetime"
size="small"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择开始日期">
</el-date-picker>
<span style="color: #DCDFE6;"></span>
<el-date-picker
v-model="searchForm.endTime"
type="datetime"
size="small"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择结束日期">
</el-date-picker>
</el-form-item>
</div>
<div style="width: 25%; float: right;">
<el-form-item class="btn-list">
<el-button @click="goToSearch" type="primary" size="small">查询</el-button>
<el-button @click="handleReset" 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 align="center" prop="serialNo" 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="beginTime" 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>
<template slot-scope="scope">
{{ returnStatusText(scope.row.timeStatus ) }}
</template>
</el-table-column>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button @click="goToApplyDetail(scope.row)" type="text" size="small">查看申请明细</el-button>
</template>
</el-table-column>
<div slot="empty">
<div class="table-empty">
<img src="../../assets/image/no-content1.png">
<p>没有查询到相关结果</p>
</div>
</div>
</el-table>
<div class="pagination">
<el-pagination
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>
</div>
</template>
<script>
import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "../../components/breadcrumb.vue";
import * as commonUtil from "../../utils/utils";
import {
getSendListReq,
} from '@/utils/cme/cmeApi'
export default {
data() {
return {
curmbFirst: "CME",
curmbSecond: "学分发放管理",
totalRows: 0,
searchForm: {
serialNo: '',
projectName: '',
beginTime: '',
endTime: '',
pageNo: 1,
pageSize: 15,
},
projectStatus: {
1: '进行中',
2: '已结束',
},
tableData: [],
multipleSelection: [],
}
},
components: {
BreadCrumb
},
created() {
this.goToSearch();
},
mounted() {
commonUtil.resizeHeight();
},
methods: {
goToSearch() {
this.searchForm.pageNo = 1;
// this.searchForm.pageSize = 15;
this.getSendList();
},
getSendList() {
let req = this.searchForm;
openLoading(this);
getSendListReq(req).then(res => {
closeLoading(this);
if (res.code == "000000") {
// console.log('@@@@@@@', res)
if (res.data && res.data.data) {
this.tableData = res.data.data;
this.totalRows = res.data.totalRows;
} else {
this.tableData = [];
}
} else {
this.$message(res.message);
}
}).catch(err => {
this.$message.error('请求失败');
});
},
handleReset() {
this.searchForm.serialNo = '';
this.searchForm.projectName = '';
this.searchForm.beginTime = '';
this.searchForm.endTime = '';
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
returnStatusText(status) {
let statusVal = this.projectStatus[status];
return statusVal ? statusVal : '-';
},
goToApplyDetail(row) {
// console.log('去申请明细页面 ', row);
this.$router.push({
path: '/apply-detail',
query: {
id: row.id
}
})
},
handleSizeChange(val){
// console.log('handleSizeChange>>>')
this.searchForm.pageSize = val;
this.goToSearch();
},
handleCurrentChange(val){
// 切换当前页
this.searchForm.pageNo = val;
this.getSendList();
},
},
}
</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 20px;
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;
}
.table-empty {
img {
width: 100px;
}
p {
margin-top: -50px;
}
}
}
}
</style>
\ No newline at end of file
此差异已折叠。
......@@ -183,14 +183,34 @@
<el-col :span="10" class="item-icon">
<span class="require">*</span>
<el-form-item label="关联考试">
<el-select v-model="item3.content2" filterable @focus="examIDfocus(index,index1,index2,index3)" @change="changeExamID" :disabled="fieldDisabled(item)" size="small" placeholder="请选择考试ID" style="width:288px;">
<el-select placeholder="请选择" v-model="item3.content3" @focus="examIDfocus(index,index1,index2,index3)" @change="handleExamTypeChange" size="small" :disabled="fieldDisabled(item)">
<el-option
v-for="(itemTest,indexTest) in testIdSelect"
:key="indexTest"
:label="itemTest.onlineExamName"
:value="itemTest.id + ''">
v-for="(examItem, examTypeIndex) in examTypeList"
:key="examTypeIndex"
:label="examItem.text"
:value="examItem.type">
</el-option>
</el-select>
<el-select v-model="item3.content2" filterable @focus="examIDfocus(index,index1,index2,index3)" @change="changeExamID" :disabled="fieldDisabled(item)" size="small" placeholder="请选择考试ID" style="width:288px;">
<!-- 所有考试 列表-->
<template v-if="item3.content3 == 0">
<el-option
v-for="(itemTest,indexTest) in testIdSelect"
:key="indexTest"
:label="itemTest.onlineExamName"
:value="itemTest.id + ''">
</el-option>
</template>
<!-- 需审核考试 列表 -->
<template v-if="item3.content3 == 1">
<el-option
v-for="(itemTest,indexTest) in examSelectList"
:key="indexTest"
:label="itemTest.onlineExamName"
:value="itemTest.id + ''">
</el-option>
</template>
</el-select>
</el-form-item>
</el-col>
</el-row>
......@@ -409,7 +429,12 @@ export default {
}],
templateDataList: [],
templetIndex: 0,
testIdSelect: [], // 考试ID下拉列表
examTypeList: [ // 考试类型: 0所有考试 1需审核考试
{ text: '所有考试', type: '0' },
{ text: '需审核考试', type: '1' },
],
testIdSelect: [], // 考试ID下拉列表 (所有考试)
examSelectList: [], // 考试ID下拉列表 (需审核考试)
certificateIdSelect: [], // 证书下拉列表
courseIdSelect: [], // 课程下拉列表
dialogData: [],
......@@ -699,12 +724,22 @@ export default {
getTestListData() {
vm.GET('portal/portalComponent/OnlineExamList').then((res) => {
if( res.code == '000000') {
vm.testIdSelect = res.data.onlineExamList
vm.testIdSelect = res.data.onlineExamList;
for(let i=0; i<vm.testIdSelect.length; i++) {
let type = vm.testIdSelect[i].isNeedApproval; // isNeedApproval: 0 全部考试 1 需审核考试
if( type && type == 1 ) {
vm.examSelectList.push( vm.testIdSelect[i] )
}
}
}else {
vm.$message.info(res.message)
}
})
},
// 考试种类切换 清空考试选择
handleExamTypeChange(value) {
vm.componentList.moduleModelList[vm.examIndex].templetModelList[vm.examIndex1].partModelList[vm.examIndex2].partContentModelList[vm.examIndex3].content2 = '';
},
// 根据考试ID填充考试名称
changeExamID(value) {
let examName = ''
......@@ -915,7 +950,7 @@ export default {
seqNo: '',
content1: '',
content2: '',
content3: '',
content3: '0',
content4: ''
}]
})
......
此差异已折叠。
<template>
<div id="slidebar-container" class="slidebar-container">
<el-menu :default-active="onRoutes" class="el-menu-vertical-demo" theme="dark" unique-opened router>
<template v-for="(item,_index) in items">
<template v-if="item.subs">
<el-submenu :index=" 'index_' + _index" :key="item.index">
<template slot="title"><i :class="item.icon"></i>{{item.title}}</template>
<el-menu-item v-for="(subItem,i) in item.subs" :key="i" :index="'/'+subItem.index">
<i class="sub-icon" :class="subItem.icon"></i>
{{subItem.title}}
<p class="redNum"
v-if="subItem.title == '资料不全居民'
&&notCompleteCount
&&$route.path!='/patients-manage/not-complete/uncompleted-list'"
>
<span v-if="notCompleteCount>999">+999</span>
<span v-else>{{notCompleteCount}}</span>
</p>
</el-menu-item>
</el-submenu>
</template>
<template v-else>
<template v-if="item.isMessageSend">
<el-menu-item :index="'/'+item.index" :key="item.index" @click="goToMessageSendPage(item.checkAuth)" class="set-normal-background">
<i :class="item.icon"></i>{{ item.title }}
</el-menu-item>
<template v-if="isOutsideGetted && isOutsideUser">
<el-menu-item v-for="(outItem, outIndex) in outsideItems" :index="'/'+outItem.index" :key="outItem.index">
<i :class="outItem.icon"></i>{{ outItem.title }}
</el-menu-item>
</template>
<template v-if="isOutsideGetted && !isOutsideUser">
<template v-for="(item,_index) in items">
<template v-if="item.subs">
<el-submenu :index=" 'index_' + _index" :key="item.index">
<template slot="title"><i :class="item.icon"></i>{{item.title}}</template>
<el-menu-item v-for="(subItem,i) in item.subs" :key="i" :index="'/'+subItem.index">
<i class="sub-icon" :class="subItem.icon"></i>
{{subItem.title}}
<p class="redNum"
v-if="subItem.title == '资料不全居民'
&&notCompleteCount
&&$route.path!='/patients-manage/not-complete/uncompleted-list'"
>
<span v-if="notCompleteCount>999">+999</span>
<span v-else>{{notCompleteCount}}</span>
</p>
</el-menu-item>
</el-submenu>
</template>
<template v-else>
<el-menu-item :index="'/'+item.index" :key="item.index">
<i :class="item.icon"></i>{{ item.title }}
</el-menu-item>
<template v-if="item.isMessageSend">
<el-menu-item :index="'/'+item.index" :key="item.index" @click="goToMessageSendPage(item.checkAuth)" class="set-normal-background">
<i :class="item.icon"></i>{{ item.title }}
</el-menu-item>
</template>
<template v-else>
<el-menu-item :index="'/'+item.index" :key="item.index">
<i :class="item.icon"></i>{{ item.title }}
</el-menu-item>
</template>
</template>
</template>
</template>
......@@ -40,6 +47,8 @@
import { mapGetters } from 'vuex'
import { setTimeout } from 'timers'
import { isNotEmptyUtils } from '../../utils/utils'
import { getUserTypeReq } from '@/utils/cme/cmeApi'
let vm = null
export default {
props: {
......@@ -64,6 +73,8 @@
},
data() {
return {
isOutsideUser: false, // 是否是外部用户;(外部用户:只展示一个页面路由; 非外部用户:正常展示之前的逻辑)
isOutsideGetted: false,
items: [
{
title: '数据总览',
......@@ -144,8 +155,36 @@
index: 'export-download'
}
]
},{
title: 'CME',
icon: 'el-icon-reading',
index: 'credit-manage',
subs: [
{
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'
},
]
},
]
],
outsideItems: [ // 外部用户 路由
{
title: '学分发放管理',
icon: 'el-icon-document',
index: 'credit-send-manage'
},
],
}
},
computed: {
......@@ -155,6 +194,7 @@
},
created() {
vm = this;
this.getUserType();
},
mounted(){
if(vm.storageIdType==2){
......@@ -187,6 +227,33 @@
}
},
methods: {
getUserType() {
// console.log('当前路由地址:', this.$route.path, typeof this.$route.path)
let currentPath = this.$route.path || '';
let req = {};
// console.log('isOutsideUser: ', this.$store.state.cmeStore.isOutsideUser)
getUserTypeReq(req).then(res => {
// debugger;
this.isOutsideGetted = true;
if (res.code == '000000') {
if (res.data.code == "yes") { // 外部用户,siderbar只展示一个:学分发放管理页面
this.isOutsideUser = true;
this.$store.dispatch('cmeStore/updateOutUserStatus', true);
if (currentPath && currentPath == '/apply-detail') { // 申请明细页面 则刷新时不重定向
return;
}
this.$router.replace({
path: '/credit-send-manage'
});
} else { // 非外部用户 正常展示多路由
this.isOutsideUser = false;
this.$store.dispatch('cmeStore/updateOutUserStatus', false);
}
}
}).catch(err => {
this.$message.error('请求失败');
});
},
setFollowSide(){
const followSider = {
title: '履约管理',
......
<template>
<div id="screenSet" class="blank-wrap screenSet">
<div class="blank-content">
</div>
</div>
</template>
<script>
import * as commonUtil from '../utils/utils'
export default {
data() {
return {
}
},
// 挂载到Dom完成时
mounted: function() {
commonUtil.resizeHeight(100)
}
}
</script>
<style lang="scss">
.blank-wrap {
background: #fff;
margin: 20px !important;
position: relative;
text-align: center;
.blank-content {
position: absolute;
top: 50%;
left: 50%;
width: 400px;
height: 100px;
margin-top: -50px;
margin-left: -200px;
p {
margin-top: 20px;
font-size: 20px;
color: #999;
}
img {
width: 100px;
}
}
}
</style>
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册