Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica.cloud.web-education-admin
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
提交
打开侧边栏
com.pica.cloud.education.frontend
pica.cloud.web-education-admin
提交
425604a2
提交
425604a2
编写于
12月 26, 2019
作者:
chengxiang.li
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
CME项目学分发放页面及审核权限管理页面开发
上级
c373a262
变更
11
显示空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
933 行增加
和
108 行删除
+933
-108
router.js
src/router/router.js
+5
-1
cmeStore.js
src/store/cme/cmeStore.js
+18
-0
index.js
src/store/index.js
+4
-0
cmeApi.js
src/utils/cme/cmeApi.js
+110
-12
fetch.js
src/utils/fetch.js
+1
-1
apply-detail.vue
src/views/cme/apply-detail.vue
+399
-0
credit-manage.vue
src/views/cme/credit-manage.vue
+2
-3
credit-send-manage.vue
src/views/cme/credit-send-manage.vue
+96
-23
review-access-manage.vue
src/views/cme/review-access-manage.vue
+183
-41
slidebar.vue
src/views/layout/slidebar.vue
+67
-27
temp-show.vue
src/views/temp-show.vue
+48
-0
未找到文件。
src/router/router.js
浏览文件 @
425604a2
...
...
@@ -30,6 +30,7 @@ const editNotice = r => require.ensure([], () => r(require('../views/education/e
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
:
'/'
,
...
...
@@ -124,7 +125,10 @@ export default [{
path
:
'/credit-send-manage'
,
component
:
creditSendManage
,
},
{
path
:
'/apply-detail'
,
component
:
applyDetail
,
},
// {
// path: '/followup',
// name: 'followUp',
...
...
src/store/cme/cmeStore.js
0 → 100644
浏览文件 @
425604a2
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
src/store/index.js
浏览文件 @
425604a2
...
...
@@ -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
})
...
...
src/utils/cme/cmeApi.js
浏览文件 @
425604a2
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
({
...
...
@@ -42,10 +56,7 @@ export const getRelatedCreditReq = (params) => {
export
const
goUpReq
=
(
data
,
id
)
=>
{
return
fetch
({
headers
:
{
'Content-Type'
:
'application/json;charset=UTF-8'
,
token
:
localStorage
.
getItem
(
'storageToken'
),
},
headers
,
url
:
getBaseUrl
(
`cme/credit/deploy/
${
id
}
`
),
method
:
'post'
,
data
:
data
,
...
...
@@ -55,10 +66,7 @@ export const goUpReq = (data, id) => {
export
const
goDownReq
=
(
data
,
id
)
=>
{
return
fetch
({
headers
:
{
'Content-Type'
:
'application/json;charset=UTF-8'
,
token
:
localStorage
.
getItem
(
'storageToken'
),
},
headers
,
url
:
getBaseUrl
(
`cme/credit/revoke/
${
id
}
`
),
method
:
'post'
,
data
:
data
,
...
...
@@ -68,10 +76,7 @@ export const goDownReq = (data, id) => {
export
const
goAddNewReq
=
(
data
)
=>
{
return
fetch
({
headers
:
{
'Content-Type'
:
'application/json;charset=UTF-8'
,
token
:
localStorage
.
getItem
(
'storageToken'
),
},
headers
,
// url: 'http://10.177.15.4:13801/cme/credit/create',
url
:
getBaseUrl
(
`cme/credit/create`
),
method
:
'post'
,
...
...
@@ -80,3 +85,96 @@ export const goAddNewReq = (data) => {
})
}
// 审核权限管理页面
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
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
src/utils/fetch.js
浏览文件 @
425604a2
...
...
@@ -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'
]
=
'A
686102457254CA986639F97DFB4F9F6
'
;
config
.
headers
[
'token'
]
=
'A
2F48933424E4AD38E750E77F59D0619
'
;
}
else
{
config
.
headers
[
'token'
]
=
localStorage
.
getItem
(
'storageToken'
)
}
...
...
src/views/cme/apply-detail.vue
0 → 100644
浏览文件 @
425604a2
<
template
>
<div
class=
"credit-manage-wrap"
>
<bread-crumb
:curmbFirst=
"curmbFirst"
:curmbSecond=
"curmbSecond"
:curmbThird=
"curmbThird"
:jumPathThird=
"jumPathThird"
>
</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.name"
size=
"small"
class=
"form-width"
placeholder=
"请输入项目编号"
></el-input>
</el-form-item>
<el-form-item
label=
"身份证号:"
class=
"search-item"
>
<el-input
v-model=
"searchForm.Idcard"
size=
"small"
class=
"form-width"
placeholder=
"请输入项目名称"
></el-input>
</el-form-item>
<el-form-item
label=
"工作单位:"
class=
"search-item"
>
<el-input
v-model=
"searchForm.hospital"
size=
"small"
class=
"form-width"
placeholder=
"请输入项目名称"
></el-input>
</el-form-item>
<el-form-item
label=
"学分状态:"
class=
"search-item"
>
<el-select
v-model=
"searchForm.status"
placeholder=
"请选择"
size=
"small"
class=
"form-width"
>
<el-option
v-for=
"(item, index) in statusList"
: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"
type=
"primary"
size=
"small"
>
查询
</el-button>
<el-button
@
click=
"handleReset"
size=
"small"
>
重置
</el-button>
</el-form-item>
</div>
</el-form>
<div
v-if=
"$store.state.cmeStore.isOutsideUser"
>
<el-upload
class=
"upload-import"
action=
"#"
accept=
".xlsx"
:limit=
"1"
:on-exceed=
"handleExceed"
:before-upload=
"uploadImport"
>
<!--
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
-->
<el-button
size=
"small"
class=
"new-add"
id=
"cmeImportBtn"
>
导入
</el-button>
</el-upload>
<el-button
@
click=
"handleExport('part')"
type=
"primary"
size=
"small"
class=
"new-add"
>
部分导出
</el-button>
<el-button
@
click=
"handleExport('all')"
type=
"primary"
size=
"small"
class=
"new-add"
>
全部导出
</el-button>
</div>
<el-table
ref=
"multipleTable"
:data=
"tableData"
tooltip-effect=
"dark"
style=
"width: 100%"
class=
"table-list"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
></el-table-column>
<el-table-column
align=
"center"
prop=
"cmeIcCardNumber"
label=
"IC卡号"
show-overflow-tooltip
width=
"200"
></el-table-column>
<el-table-column
align=
"center"
prop=
"name"
label=
"姓名"
show-overflow-tooltip
width=
"150"
></el-table-column>
<el-table-column
align=
"center"
prop=
"card"
label=
"身份证号"
show-overflow-tooltip
width=
"200"
></el-table-column>
<el-table-column
align=
"center"
prop=
"serialNo"
label=
"课题编号"
show-overflow-tooltip
width=
"150"
></el-table-column>
<el-table-column
align=
"center"
prop=
"courseName"
label=
"课程名称"
show-overflow-tooltip
width=
"150"
></el-table-column>
<el-table-column
align=
"center"
prop=
"studyType"
label=
"学分类别"
show-overflow-tooltip
width=
"150"
></el-table-column>
<el-table-column
align=
"center"
prop=
"creditValue"
label=
"学分"
show-overflow-tooltip
width=
"100"
></el-table-column>
<el-table-column
align=
"center"
prop=
"creditTime"
label=
"学时"
show-overflow-tooltip
width=
"100"
></el-table-column>
<el-table-column
align=
"center"
prop=
"title"
label=
"职称"
show-overflow-tooltip
width=
"150"
></el-table-column>
<el-table-column
align=
"center"
prop=
"hospital"
label=
"单位名称"
show-overflow-tooltip
width=
"200"
></el-table-column>
<el-table-column
align=
"center"
prop=
"taskType"
label=
"活动形式"
show-overflow-tooltip
width=
"150"
></el-table-column>
<el-table-column
align=
"center"
prop=
"department"
label=
"所属学科"
show-overflow-tooltip
width=
"150"
></el-table-column>
<el-table-column
align=
"center"
prop=
"authName"
label=
"授分单位"
show-overflow-tooltip
width=
"150"
></el-table-column>
<el-table-column
align=
"center"
prop=
"taskTime"
label=
"活动日期"
show-overflow-tooltip
width=
"150"
></el-table-column>
<el-table-column
align=
"center"
label=
"学分状态"
show-overflow-tooltip
width=
"150"
>
<template
slot-scope=
"scope"
>
{{
returnStatusText
(
scope
.
row
.
creditStatus
)
}}
</
template
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"disapprove"
label=
"失败原因"
show-overflow-tooltip
width=
"200"
></el-table-column>
</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>
<el-dialog
title=
"提示"
:visible
.
sync=
"importFailVisible"
width=
"600px"
class=
"import-fail-wrap"
:close-on-click-modal=
"false"
center
>
<p
class=
"top-title"
>
导入失败
</p>
<p
class=
"gray response-text"
>
{{ importFailText }}
</p>
<p
class=
"gray"
>
仅支持xls格式的文件
</p>
<p
class=
"gray"
>
每条数据至少包含姓名、手机号、身份证号和IC卡号
</p>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"handleReImport"
>
重新导入
</el-button>
<el-button
@
click=
"importFailVisible = false"
>
取 消
</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
{
getDetailListReq
,
handleExportReq
,
handleImportReq
,
}
from
'@/utils/cme/cmeApi'
export
default
{
data
()
{
return
{
curmbFirst
:
"CME"
,
curmbSecond
:
"学分发放管理"
,
curmbThird
:
"申请明细"
,
jumPathThird
:
'/credit-send-manage'
,
importFailVisible
:
false
,
importFailText
:
''
,
totalRows
:
0
,
searchForm
:
{
cmeProjectId
:
''
,
name
:
''
,
Idcard
:
''
,
hospital
:
''
,
status
:
''
,
pageNo
:
1
,
pageSize
:
15
,
},
statusList
:
[],
tableData
:
[
// { code: 11, name:'撒地方的阿萨德李开复就j克拉的房客哦佛i额我joie就哦覅我', startTime: '20191224', endTime: '20201111', status:'已结束' },
],
creditStatus
:
{
//学分状态: 1 审核中; 2 审核通过 3 审核失败
1
:
'审核中'
,
2
:
'审核通过'
,
3
:
'审核失败'
,
},
multipleSelection
:
[],
}
},
components
:
{
BreadCrumb
},
created
()
{
this
.
searchForm
.
cmeProjectId
=
this
.
$route
.
query
.
id
;
// console.log(this.searchForm.cmeProjectId);
this
.
goToSearch
();
},
mounted
()
{
commonUtil
.
resizeHeight
();
},
methods
:
{
goToSearch
()
{
this
.
searchForm
.
pageNo
=
1
;
// this.searchForm.pageSize = 15;
this
.
getDetailList
();
},
getDetailList
()
{
let
req
=
this
.
searchForm
;
// let req = {
// cmeProjectId: 3,
// pageNo: 1,
// pageSize: 15,
// };
openLoading
(
this
);
getDetailListReq
(
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
.
name
=
''
;
this
.
searchForm
.
Idcard
=
''
;
this
.
searchForm
.
hospital
=
''
;
this
.
searchForm
.
status
=
''
;
},
returnStatusText
(
status
)
{
let
statusVal
=
this
.
creditStatus
[
status
];
return
statusVal
?
statusVal
:
'-'
;
},
handleSelectionChange
(
val
)
{
this
.
multipleSelection
=
val
;
},
handleExport
(
type
)
{
// debugger;
let
req
=
{};
if
(
type
==
'all'
)
{
// all 全选 part 非全选
req
=
{
cmeId
:
this
.
$route
.
query
.
id
,
idList
:
[],
selectedStatus
:
1
,
// 1 全选 2 非全选
};
}
else
{
let
selectList
=
this
.
multipleSelection
;
if
(
selectList
.
length
<
1
){
this
.
$message
.
error
(
'请勾选导出项后,再执行部分导出'
);
return
;
}
let
list
=
[];
for
(
let
i
=
0
;
i
<
selectList
.
length
;
i
++
){
list
.
push
(
selectList
[
i
].
id
)
}
req
=
{
cmeId
:
this
.
$route
.
query
.
id
,
idList
:
list
,
selectedStatus
:
2
,
// 1 全选 2 非全选
};
}
openLoading
(
this
);
handleExportReq
(
req
).
then
(
res
=>
{
closeLoading
(
this
);
// debugger;
if
(
res
.
code
==
"000000"
)
{
console
.
log
(
'导出'
,
res
)
if
(
res
.
data
)
{
this
.
downloadFile
(
res
.
data
)
}
else
{
this
.
$message
.
error
(
'接口返回数据错误'
);
}
}
else
{
this
.
$message
(
res
.
message
);
}
}).
catch
(
err
=>
{
this
.
$message
.
error
(
'请求失败'
);
});
},
handleExceed
()
{
},
downloadFile
(
base64
)
{
let
a
=
document
.
createElement
(
'a'
);
let
uploadHref
=
'data:application/xls;base64,'
+
base64
;
a
.
setAttribute
(
'href'
,
uploadHref
);
let
exportFileName
=
'学分明细'
+
'.xlsx'
;
a
.
setAttribute
(
'download'
,
exportFileName
);
a
.
click
();
},
uploadImport
(
file
)
{
console
.
log
(
'上传file: '
,
file
)
let
req
=
{
file
:
file
,
};
let
fd
=
new
FormData
()
fd
.
append
(
'file'
,
file
,
'黑河'
)
// openLoading(this);
handleImportReq
(
fd
).
then
(
res
=>
{
// closeLoading(this);
console
.
log
(
'上传》》》@@@@@@@'
,
res
)
if
(
res
.
code
==
"000000"
)
{
this
.
$message
({
message
:
'上传成功!'
,
type
:
'success'
});
}
else
{
// 显示上传错误弹窗
this
.
importFailVisible
=
true
;
this
.
importFailText
=
res
.
message
;
}
}).
catch
(
err
=>
{
this
.
$message
.
error
(
'请求失败'
);
});
},
handleReImport
()
{
this
.
importFailVisible
=
false
;
let
btn
=
document
.
getElementById
(
'cmeImportBtn'
);
btn
.
click
();
},
handleSizeChange
(
val
){
console
.
log
(
'handleSizeChange>>>'
)
this
.
searchForm
.
pageSize
=
val
;
this
.
getDetailList
();
},
handleCurrentChange
(
val
){
// 切换当前页
this
.
searchForm
.
pageNo
=
val
;
this
.
getDetailList
();
},
},
}
</
script
>
<
style
lang=
"scss"
>
.credit-manage-wrap
{
@mixin
scroll-bar
{
/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
&
:
:-
webkit-scrollbar
{
width
:
20px
!
important
;
height
:
20px
!
important
;
background-color
:
#FFF
;
}
/*定义滚动条轨道 内阴影+圆角*/
&
:
:-
webkit-scrollbar-track
{
border-radius
:
0px
;
background
:
#f1f1f1
;
}
/*定义滑块 内阴影+圆角*/
&
:
:-
webkit-scrollbar-thumb
{
border-radius
:
0px
;
-webkit-box-shadow
:
inset
0
0
6px
#c1c1c1
;
background-color
:
#c1c1c1
;
}
}
.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
;
}
.new-add
{
float
:
right
;
margin
:
10px
0
20px
15px
;
}
.upload-import
{
float
:
right
;
}
.el-table__body-wrapper
{
@include
scroll-bar
;
}
}
.import-fail-wrap
{
.top-title
{
text-align
:
center
;
font-size
:
18px
;
font-weight
:
700
;
padding-bottom
:
10px
;
}
.gray
{
padding-left
:
100px
;
line-height
:
20px
;
font-size
:
14px
;
&
.response-text
{
color
:
#6f6f6f
;
line-height
:
30px
;
}
}
}
}
</
style
>
\ No newline at end of file
src/views/cme/credit-manage.vue
浏览文件 @
425604a2
...
...
@@ -205,14 +205,13 @@
goToSearch
()
{
this
.
searchForm
.
pageNo
=
1
;
this
.
searchForm
.
pageSize
=
15
;
//
this.searchForm.pageSize = 15;
this
.
getCreditList
();
},
// 获取 学分table列表
getCreditList
()
{
let
req
=
{};
req
=
this
.
searchForm
;
let
req
=
this
.
searchForm
;
openLoading
(
this
);
getCreditListReq
(
req
).
then
(
res
=>
{
closeLoading
(
this
);
...
...
src/views/cme/credit-send-manage.vue
浏览文件 @
425604a2
...
...
@@ -7,25 +7,33 @@
<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-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.
n
ame"
size=
"small"
class=
"form-width"
placeholder=
"请输入项目名称"
></el-input>
<el-input
v-model=
"searchForm.
projectN
ame"
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=
"结束日期"
>
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
type=
"primary"
size=
"small"
>
查询
</el-button>
<el-button
size=
"small"
>
重置
</el-button>
<el-button
@
click=
"goToSearch"
type=
"primary"
size=
"small"
>
查询
</el-button>
<el-button
@
click=
"handleReset"
size=
"small"
>
重置
</el-button>
</el-form-item>
</div>
</el-form>
...
...
@@ -35,19 +43,30 @@
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=
"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=
"
start
Time"
label=
"项目开始时间"
show-overflow-tooltip
></el-table-column>
<el-table-column
align=
"center"
prop=
"
begin
Time"
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>
<el-button
@
click=
"goToApplyDetail(scope.row)"
type=
"text"
size=
"small"
>
查看申请明细
</el-button>
</
template
>
</el-table-column>
</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>
...
...
@@ -58,7 +77,7 @@
import
BreadCrumb
from
"../../components/breadcrumb.vue"
;
import
*
as
commonUtil
from
"../../utils/utils"
;
import
{
getSendListReq
,
}
from
'@/utils/cme/cmeApi'
...
...
@@ -70,16 +89,15 @@
totalRows
:
0
,
searchForm
:
{
code
:
''
,
name
:
''
,
date
:
[],
serialNo
:
''
,
projectName
:
''
,
beginTime
:
''
,
endTime
:
''
,
pageNo
:
1
,
pageSize
:
15
,
},
tableData
:
[
{
code
:
11
,
name
:
'撒地方的阿萨德李开复就j克拉的房客哦佛i额我joie就哦覅我'
,
startTime
:
'20191224'
,
endTime
:
'20201111'
,
status
:
'已结束'
},
],
tableData
:
[],
multipleSelection
:
[],
}
...
...
@@ -90,15 +108,70 @@
},
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
;
},
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
.
getSendList
();
},
handleCurrentChange
(
val
){
// 切换当前页
this
.
searchForm
.
pageNo
=
val
;
this
.
getSendList
();
},
},
...
...
@@ -120,7 +193,7 @@
width
:
200px
;
}
.header-title
{
padding
:
10px
12px
;
padding
:
10px
12px
20px
;
font-size
:
14px
;
color
:
#606266
;
border-bottom
:
1px
solid
#efefef
;
...
...
src/views/cme/review-access-manage.vue
浏览文件 @
425604a2
...
...
@@ -6,15 +6,15 @@
<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.
n
ame"
size=
"small"
class=
"form-width"
placeholder=
"请输入姓名"
></el-input>
<el-input
v-model=
"searchForm.
doctorN
ame"
size=
"small"
class=
"form-width"
placeholder=
"请输入姓名"
></el-input>
</el-form-item>
<el-form-item
label=
"权限:"
class=
"search-item"
>
<el-select
v-model=
"searchForm.a
ccess
"
placeholder=
"请选择"
size=
"small"
class=
"form-width"
>
<el-select
v-model=
"searchForm.a
uthId
"
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=
"goToSearch
(1)
"
type=
"primary"
size=
"small"
>
查询
</el-button>
<el-button
@
click=
"goToReset"
size=
"small"
>
重置
</el-button>
</el-form-item>
</el-form>
...
...
@@ -22,9 +22,9 @@
<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=
"
n
ame"
label=
"姓名"
></el-table-column>
<el-table-column
align=
"center"
prop=
"a
ccess
"
label=
"权限"
></el-table-column>
<el-table-column
align=
"center"
prop=
"seq"
label=
"编号
"
></el-table-column>
<el-table-column
align=
"center"
prop=
"
doctorN
ame"
label=
"姓名"
></el-table-column>
<el-table-column
align=
"center"
prop=
"a
uthName
"
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>
...
...
@@ -33,6 +33,18 @@
</el-table-column>
</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>
<!-- 新增/编辑 弹窗 -->
...
...
@@ -44,14 +56,14 @@
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-form-item
label=
"姓名:"
class=
"search-item"
prop=
"
doctorId
"
>
<el-select
v-model=
"addEditForm.
doctorId
"
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=
"a
ccess
"
>
<el-select
v-model=
"addEditForm.a
ccess
"
placeholder=
"请选择"
size=
"small"
class=
"form-width"
>
<el-option
v-for=
"(item, index) in
name
List"
:key=
"index"
:label=
"item.text"
:value=
"item.id"
></el-option>
<el-form-item
label=
"权限:"
class=
"search-item"
prop=
"a
uthId
"
>
<el-select
v-model=
"addEditForm.a
uthId
"
placeholder=
"请选择"
size=
"small"
class=
"form-width"
>
<el-option
v-for=
"(item, index) in
access
List"
:key=
"index"
:label=
"item.text"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
</el-form>
...
...
@@ -70,7 +82,7 @@
:close-on-click-modal=
"false"
width=
"600px"
center
>
<p
style=
"text-align: center;"
>
确定删除
XXX考试审核人的
权限?
</p>
<p
style=
"text-align: center;"
>
确定删除
该
权限?
</p>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"confirmDelete"
>
确 定
</el-button>
<el-button
@
click=
"hideDeleteFrom"
>
取 消
</el-button>
...
...
@@ -85,7 +97,11 @@
import
BreadCrumb
from
"../../components/breadcrumb.vue"
;
import
*
as
commonUtil
from
"../../utils/utils"
;
import
{
getAccessListReq
,
getAuthTableReq
,
getUserListReq
,
handleSaveEditReq
,
handleDeleteReq
,
}
from
'@/utils/cme/cmeApi'
...
...
@@ -94,28 +110,29 @@
return
{
curmbFirst
:
"CME"
,
curmbSecond
:
"审核权限管理"
,
searchForm
:
{
name
:
''
,
access
:
''
,
},
accessList
:
[],
// 权限列表
tableData
:
[
{
name
:
11
,
access
:
88
}
],
totalRows
:
0
,
addEditVisible
:
false
,
isAdd
:
true
,
// 新增或编辑状态:新增 true; 编辑 false
deleteVisible
:
false
,
currentRow
:
null
,
// 当前行数据
searchForm
:
{
doctorName
:
''
,
authId
:
''
,
pageNo
:
1
,
pageSize
:
15
,
},
addEditForm
:
{
name
:
''
,
a
ccess
:
''
,
doctorId
:
''
,
a
uthId
:
''
,
},
accessList
:
[],
// 权限列表
tableData
:
[],
nameList
:
[],
rules
:
{
name
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}],
access
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}],
}
doctorId
:
[{
required
:
true
,
message
:
'请选择'
,
trigger
:
'blur'
}],
authId
:
[{
required
:
true
,
message
:
'请选择'
,
trigger
:
'blur'
}],
},
}
},
...
...
@@ -124,57 +141,182 @@
},
created
()
{
this
.
getAccessList
();
this
.
goToSearch
(
1
);
this
.
getUserList
();
},
mounted
()
{
commonUtil
.
resizeHeight
();
},
methods
:
{
// 获取权限 下拉列表
getAccessList
()
{
let
req
=
{};
getAccessListReq
(
req
).
then
(
res
=>
{
if
(
res
.
code
==
"000000"
)
{
// console.log('权限列表 ', res)
this
.
accessList
=
res
.
data
;
}
else
{
this
.
$message
(
res
.
message
);
}
}).
catch
(
err
=>
{
this
.
$message
.
error
(
'请求失败'
);
});
},
// 搜索
goToSearch
()
{
goToSearch
(
pageNo
)
{
if
(
pageNo
){
// 自定义第几页,不传则表示当前页
this
.
searchForm
.
pageNo
=
pageNo
;
}
this
.
getAuthTable
();
},
getAuthTable
()
{
let
req
=
this
.
searchForm
;
getAuthTableReq
(
req
).
then
(
res
=>
{
if
(
res
.
code
==
"000000"
)
{
console
.
log
(
'表格列表 '
,
res
)
// this.accessList = res.data;
this
.
tableData
=
res
.
data
.
contentList
;
this
.
totalRows
=
res
.
data
.
total
;
}
else
{
this
.
$message
(
res
.
message
);
}
}).
catch
(
err
=>
{
this
.
$message
.
error
(
'请求失败'
);
});
},
// 重置
goToReset
()
{
this
.
searchForm
=
{
doctorName
:
''
,
authId
:
''
,
pageNo
:
1
,
pageSize
:
15
,
};
},
// 新增
goToAdd
()
{
this
.
isAdd
=
true
;
this
.
addEditVisible
=
true
;
},
// 编辑
goToEdit
(
row
)
{
this
.
isAdd
=
false
;
this
.
currentRow
=
row
;
// console.log('编辑 ', row)
this
.
addEditVisible
=
true
;
console
.
log
(
'编辑 '
,
row
)
// 编辑回显状态
this
.
addEditForm
=
{
authId
:
row
.
authId
,
doctorId
:
row
.
doctorId
,
};
},
goToDelete
()
{
this
.
deleteVisible
=
true
;
// 获取新增、编辑的用户列表
getUserList
()
{
let
req
=
{};
getUserListReq
(
req
).
then
(
res
=>
{
if
(
res
.
code
==
"000000"
)
{
console
.
log
(
'获取用户列表 '
,
res
)
this
.
nameList
=
res
.
data
;
}
else
{
this
.
$message
(
res
.
message
);
}
}).
catch
(
err
=>
{
this
.
$message
.
error
(
'请求失败'
);
});
},
resetForm
(
formName
)
{
this
.
$refs
[
formName
].
resetFields
();
goToDelete
(
row
)
{
this
.
deleteVisible
=
true
;
this
.
currentRow
=
row
;
},
submitForm
(
formName
)
{
this
.
$refs
[
formName
].
validate
((
valid
)
=>
{
if
(
valid
)
{
alert
(
'submit!'
);
// alert('submit!');
this
.
handleSaveEdit
();
}
else
{
console
.
log
(
'error submit!!'
);
return
false
;
}
});
},
resetForm
(
formName
)
{
this
.
$refs
[
formName
].
resetFields
();
},
handleSaveEdit
()
{
// 新增、编辑传参不同
// debugger;
let
req
=
{};
if
(
this
.
isAdd
)
{
// let { authId, doctorId } = this.addEditForm;
req
=
{
authId
:
this
.
addEditForm
.
authId
,
doctorId
:
this
.
addEditForm
.
doctorId
,
}
}
else
{
req
=
{
authId
:
this
.
addEditForm
.
authId
,
doctorId
:
this
.
addEditForm
.
doctorId
,
id
:
this
.
currentRow
.
id
,
};
}
handleSaveEditReq
(
req
).
then
(
res
=>
{
if
(
res
.
code
==
"000000"
)
{
this
.
addEditVisible
=
false
;
this
.
goToSearch
();
console
.
log
(
'新增/编辑权限 '
,
res
)
}
else
{
this
.
$message
(
res
.
message
);
}
}).
catch
(
err
=>
{
this
.
$message
.
error
(
'请求失败'
);
});
},
hideAddEditForm
()
{
this
.
addEditVisible
=
false
;
this
.
resetForm
(
'addEditForm'
);
this
.
addEditForm
=
{
doctorId
:
''
,
authId
:
''
,
};
},
confirmDelete
()
{
// 调接口
let
req
=
{
id
:
this
.
currentRow
.
id
,
};
handleDeleteReq
(
req
).
then
(
res
=>
{
if
(
res
.
code
==
"000000"
)
{
console
.
log
(
'删除用户列表 '
,
res
)
// this.nameList = res.data;
}
else
{
this
.
$message
(
res
.
message
);
}
}).
catch
(
err
=>
{
this
.
$message
.
error
(
'请求失败'
);
});
},
hideDeleteFrom
()
{
this
.
deleteVisible
=
false
;
},
handleSizeChange
(
val
){
console
.
log
(
'handleSizeChange>>>'
)
this
.
searchForm
.
pageSize
=
val
;
this
.
getAuthTable
();
},
handleCurrentChange
(
val
){
// 切换当前页
this
.
searchForm
.
pageNo
=
val
;
this
.
getAuthTable
();
},
},
}
...
...
@@ -189,7 +331,7 @@
font-size
:
14px
;
}
.header-title
{
padding
:
10px
12px
;
padding
:
10px
12px
20px
;
font-size
:
14px
;
color
:
#606266
;
border-bottom
:
1px
solid
#efefef
;
...
...
@@ -210,7 +352,7 @@
}
.new-add
{
float
:
right
;
margin
:
10px
0
3
0px
;
margin
:
10px
0
2
0px
;
}
}
}
...
...
src/views/layout/slidebar.vue
浏览文件 @
425604a2
<
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-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"
>
...
...
@@ -32,6 +38,7 @@
</
template
>
</template>
</template>
</template>
</el-menu>
</div>
</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
:
'数据总览'
,
...
...
@@ -166,7 +177,14 @@
},
]
},
]
],
outsideItems
:
[
// 外部用户 路由
{
title
:
'学分发放管理'
,
icon
:
'el-icon-document'
,
index
:
'credit-send-manage'
},
],
}
},
computed
:
{
...
...
@@ -176,6 +194,7 @@
},
created
()
{
vm
=
this
;
this
.
getUserType
();
},
mounted
(){
if
(
vm
.
storageIdType
==
2
){
...
...
@@ -208,6 +227,27 @@
}
},
methods
:
{
getUserType
()
{
// console.log('当前路由地址:', this.$route.path, typeof this.$route.path)
// let currentPath = this.$route.path;
let
req
=
{};
console
.
log
(
'cmeStore: '
,
this
.
$store
.
state
.
cmeStore
.
isOutsideUser
)
getUserTypeReq
(
req
).
then
(
res
=>
{
this
.
isOutsideGetted
=
true
;
if
(
res
.
code
==
"219015"
)
{
// 外部用户,只展示一个页面
this
.
isOutsideUser
=
true
;
this
.
$store
.
dispatch
(
'cmeStore/updateOutUserStatus'
,
true
);
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
:
'履约管理'
,
...
...
src/views/temp-show.vue
0 → 100644
浏览文件 @
425604a2
<
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
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录