提交 fb12a838 编写于 作者: yi.li's avatar yi.li

Merge branch 'dev-followUp-20190312' of...

Merge branch 'dev-followUp-20190312' of 192.168.110.53:com.pica.cloud.education.frontend/pica.cloud.web-education-admin into dev-followUp-20190312
...@@ -7,3 +7,4 @@ dist/ ...@@ -7,3 +7,4 @@ dist/
node_modules/ node_modules/
.DS_Store .DS_Store
.vscode .vscode
envConfig.js
\ No newline at end of file
...@@ -2821,12 +2821,14 @@ ...@@ -2821,12 +2821,14 @@
"balanced-match": { "balanced-match": {
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"balanced-match": "^1.0.0", "balanced-match": "^1.0.0",
"concat-map": "0.0.1" "concat-map": "0.0.1"
...@@ -2841,17 +2843,20 @@ ...@@ -2841,17 +2843,20 @@
"code-point-at": { "code-point-at": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"concat-map": { "concat-map": {
"version": "0.0.1", "version": "0.0.1",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"console-control-strings": { "console-control-strings": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"core-util-is": { "core-util-is": {
"version": "1.0.2", "version": "1.0.2",
...@@ -2968,7 +2973,8 @@ ...@@ -2968,7 +2973,8 @@
"inherits": { "inherits": {
"version": "2.0.3", "version": "2.0.3",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"ini": { "ini": {
"version": "1.3.5", "version": "1.3.5",
...@@ -2980,6 +2986,7 @@ ...@@ -2980,6 +2986,7 @@
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"number-is-nan": "^1.0.0" "number-is-nan": "^1.0.0"
} }
...@@ -2994,6 +3001,7 @@ ...@@ -2994,6 +3001,7 @@
"version": "3.0.4", "version": "3.0.4",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"brace-expansion": "^1.1.7" "brace-expansion": "^1.1.7"
} }
...@@ -3001,12 +3009,14 @@ ...@@ -3001,12 +3009,14 @@
"minimist": { "minimist": {
"version": "0.0.8", "version": "0.0.8",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"minipass": { "minipass": {
"version": "2.2.4", "version": "2.2.4",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"safe-buffer": "^5.1.1", "safe-buffer": "^5.1.1",
"yallist": "^3.0.0" "yallist": "^3.0.0"
...@@ -3025,6 +3035,7 @@ ...@@ -3025,6 +3035,7 @@
"version": "0.5.1", "version": "0.5.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"minimist": "0.0.8" "minimist": "0.0.8"
} }
...@@ -3105,7 +3116,8 @@ ...@@ -3105,7 +3116,8 @@
"number-is-nan": { "number-is-nan": {
"version": "1.0.1", "version": "1.0.1",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"object-assign": { "object-assign": {
"version": "4.1.1", "version": "4.1.1",
...@@ -3117,6 +3129,7 @@ ...@@ -3117,6 +3129,7 @@
"version": "1.4.0", "version": "1.4.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"wrappy": "1" "wrappy": "1"
} }
...@@ -3238,6 +3251,7 @@ ...@@ -3238,6 +3251,7 @@
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"code-point-at": "^1.0.0", "code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0", "is-fullwidth-code-point": "^1.0.0",
......
<template> <template>
<div> <div>
<v-header></v-header> <v-header :userName="userName" :portrait="portrait" :idType="idType"></v-header>
<v-slidebar></v-slidebar> <v-slidebar :authList="authList" :tokenValue="token"></v-slidebar>
<el-container> <el-container>
<div class="content" id="body-content"> <div class="content" id="body-content">
<transition name="router-fade" mode="out-in"> <transition name="router-fade" mode="out-in">
...@@ -14,48 +14,108 @@ ...@@ -14,48 +14,108 @@
</transition> </transition>
<v-footer></v-footer> <v-footer></v-footer>
</div> </div>
</el-container> </el-container>
</div> </div>
</template> </template>
<script> <script>
import VHeader from './views/layout/header.vue' import VHeader from './views/layout/header.vue'
import VSlidebar from './views/layout/slidebar.vue' import VSlidebar from './views/layout/slidebar.vue'
import VFooter from './views/layout/footer.vue' import VFooter from './views/layout/footer.vue'
let vm = null import { base64decode, isNotEmptyUtils, getUrlParamsMap } from "./utils/utils.js"
export default { import { mapActions, mapGetters } from 'vuex'
components:{ import { getLoginUrl } from './utils/index.js'
VHeader, let vm = null
VSlidebar, export default {
VFooter components:{
}, VHeader,
data() { VSlidebar,
return { VFooter
},
data() {
return {
idType: 0,
token: '',
userName: '',
portrait: '',
authList: {}
}
},
computed:{
...mapGetters([
'_token'
])
},
created() {
vm = this
vm.getToken()
},
mounted() {
// setInterval(function(){
// vm.pushMessage()
// },60000)
},
methods: {
// 解密token
getToken() {
let href = window.location.href
let offset = href.indexOf("?")
if(offset !== -1) {
let paramStr = href.substring(offset + 1, href.length)
let pars = base64decode(paramStr)
let paramMap = getUrlParamsMap(pars, "&")
if (isNotEmptyUtils(paramMap["token"]) || localStorage.getItem('storageToken')) {
vm.token = paramMap["token"]
} else {
window.location.href = getLoginUrl() // 没有token返回登录页面
return
}
}else {
if(!localStorage.getItem('storageToken')) {
window.location.href = getLoginUrl() // 没有token返回登录页面
return
}
} }
vm.changeToken(vm.token)
vm.getUserAuth(vm.token)
}, },
created() { // 实时消息推送
vm = this pushMessage() {
vm.$notify({
title: '警告',
message: '这是一条警告的提示消息',
type: 'warning'
});
}, },
mounted() { // 修改token
setInterval(function(){ ...mapActions([
vm.pushMessage() 'changeToken',
},60000) 'changeIdType'
}, ]),
methods: { // 获取用户权限
// 实时消息推送 getUserAuth(token) {
pushMessage() { let req = null
vm.$notify({ if(localStorage.getItem('storageToken')) {
title: '警告', req = {
message: '这是一条警告的提示消息', token: localStorage.getItem('storageToken')
type: 'warning' }
}); } else {
req = {
token: token
}
} }
vm.GET('common/v1/role',req).then((res) => {
if(res.code == '000000') {
vm.changeIdType(res.data.idType)
vm.idType = res.data.idType
vm.userName = res.data.name
vm.portrait = res.data.imageUrl
vm.authList = res.data.auth
}
})
} }
} }
}
</script> </script>
<style lang="scss"> <style lang="scss">
......
import * as types from './mutations-types'
export const changeToken = ({commit}, data) => {
commit(types.TOKEN, data)
}
export const changeIdType = ({commit}, data) => {
commit(types.ID_TYPE, data)
}
\ No newline at end of file
const getters = { export const _token = state => state._token
userInfo: state => state.sousuo.userInfo, export const idType = state => state.idType
statusBarHeight: state => state.sousuo.statusBarHeight,
}
export default getters
import Vue from 'vue' import Vue from 'vue'
import Vuex from 'vuex' import Vuex from 'vuex'
import lecturer from './modules/lecturer' import * as actions from './actions'
import getters from './getters' import * as getters from './getters'
import state from './state'
import mutations from './mutations'
Vue.use(Vuex) Vue.use(Vuex)
const store = new Vuex.Store({ export default new Vuex.Store({
modules: { actions,
lecturer getters,
}, state,
getters mutations,
}) })
export default store
const lecturer = {
state: {
userInfo: {},
statusBarHeight: {}
},
mutations: {
SET_USER_INFO: (state, userInfo) => {
state.userInfo = userInfo
},
SET_STATUS_BAR_HEIGHT: (state, statusBarHeight) => {
state.statusBarHeight = statusBarHeight
},
},
actions: {
setUserInfo({ commit }, userInfo) {
commit('SET_USER_INFO', userInfo)
},
setStatusBarHeight({ commit }, statusBarHeight) {
commit('SET_STATUS_BAR_HEIGHT', statusBarHeight)
},
}
}
export default lecturer
export const TOKEN = 'TOKEN'
export const ID_TYPE = 'ID_TYPE'
\ No newline at end of file
import * as types from './mutations-types'
const mutations = {
[types.TOKEN](state, tokenData) {
state._token = tokenData
},
[types.ID_TYPE](state, idTypeData) {
state.idType = idTypeData
}
}
export default mutations
\ No newline at end of file
const state = {
_token: '',
idType: ''
}
export default state
\ No newline at end of file
...@@ -125,6 +125,7 @@ html,body{ ...@@ -125,6 +125,7 @@ html,body{
.screenSet{ .screenSet{
// width: 163vh !important; // width: 163vh !important;
// height: 66vh !important; // height: 66vh !important;
height: 430px !important;
margin: 88px 30px 0px; margin: 88px 30px 0px;
overflow: auto; overflow: auto;
} }
...@@ -133,6 +134,7 @@ html,body{ ...@@ -133,6 +134,7 @@ html,body{
.screenSet{ .screenSet{
// width: 166vh !important; // width: 166vh !important;
// height: 78vh !important; // height: 78vh !important;
height: 800px !important;
overflow: auto; overflow: auto;
margin: 88px 30px 0px; margin: 88px 30px 0px;
} }
...@@ -173,16 +175,47 @@ html,body{ ...@@ -173,16 +175,47 @@ html,body{
top: 130px !important; top: 130px !important;
} }
// 按钮样式 // 弹框按钮样式
.el-button--default { .el-message-box {
width: 360px;
height: 160px;
.el-message-box__header {
text-align: center;
}
.el-message-box__status {
display: none;
}
.el-message-box__btns {
text-align: center !important;
button {
height: 32px;
width: 78px;
}
}
} }
.el-button--primary {
.el-button--primary {
line-height: 40px; line-height: 40px;
background: #449284 !important; background: #449284 !important;
border: 1px solid #449284 !important; border: 1px solid #449284 !important;
} }
.el-pagination.is-background .el-pager li:not(.disabled).active { .el-pagination.is-background .el-pager li:not(.disabled).active {
background: #449284 !important; background: #449284 !important;
}
// 主题样式修改
.el-radio__input.is-checked .el-radio__inner {
border-color: #449284 !important;
background: #449284 !important;
}
.el-radio__input.is-checked+.el-radio__label, .el-tabs__item.is-active {
color: #449284 !important;
}
// 面包屑导航
.el-breadcrumb__inner a, .el-breadcrumb__inner.is-link {
font-weight: 300 !important;
}
.el-breadcrumb__inner.is-link:hover {
color: #449284 !important;
} }
\ No newline at end of file
...@@ -41,3 +41,7 @@ ...@@ -41,3 +41,7 @@
.el-checkbox__input.is-focus,.el-checkbox__inner:hover,.el-checkbox__inner.is-focus { .el-checkbox__input.is-focus,.el-checkbox__inner:hover,.el-checkbox__inner.is-focus {
border-color: #449284!important; border-color: #449284!important;
} }
/*重置textarea聚焦样式*/
.el-textarea__inner:focus {
border-color: #449284!important;
}
...@@ -19,42 +19,52 @@ export const envConfig = { ...@@ -19,42 +19,52 @@ export const envConfig = {
qiniuUrl: "http://localhost:10201/contents/admin/qiniu/token", qiniuUrl: "http://localhost:10201/contents/admin/qiniu/token",
qiniuFileUrl: "http://localhost:10201/contents/admin/qiniu/token1", qiniuFileUrl: "http://localhost:10201/contents/admin/qiniu/token1",
qiniuResourceUrl: "https://test1-videos.yunqueyi.com", qiniuResourceUrl: "https://test1-videos.yunqueyi.com",
qiniuImgUrl: "https://test1-file.yunqueyi.com" qiniuImgUrl: "https://test1-file.yunqueyi.com",
loginUrl: 'https://dev-saas.yunqueyi.com/pica-login/work_station.html',
innerLoginUrl: 'http://localhost:8090/PICA_SSO_FE/html/pica_login.html'
}, },
dev: { dev: {
baseUrl: 'https://dev-sc.yunqueyi.com/portal', baseUrl: 'https://dev-sc.yunqueyi.com/portal/',
apiUrl: 'https://dev-api.yunqueyi.com/', apiUrl: 'https://dev-api.yunqueyi.com/',
webPageUrl: 'https://dev-phome.yunqueyi.com/', webPageUrl: 'https://dev-phome.yunqueyi.com/',
qiniuUrl: "http://localhost:11905/contents/admin/qiniu/token", qiniuUrl: "http://localhost:11905/contents/admin/qiniu/token",
qiniuFileUrl: "http://localhost:11905/contents/admin/qiniu/token1", qiniuFileUrl: "http://localhost:11905/contents/admin/qiniu/token1",
qiniuResourceUrl: "https://test1-videos.yunqueyi.com", qiniuResourceUrl: "https://test1-videos.yunqueyi.com",
qiniuImgUrl: "https://test1-file.yunqueyi.com" qiniuImgUrl: "https://test1-file.yunqueyi.com",
loginUrl: 'https://dev-saas.yunqueyi.com/pica-login/work_station.html',
innerLoginUrl: 'https://dev-sso.yunqueyi.com/PICA_SSO_FE/html/pica_login.html'
}, },
test: { test: {
baseUrl: 'https://test1-sc.yunqueyi.com/portal', baseUrl: 'https://test1-sc.yunqueyi.com/portal/',
apiUrl: 'https://test1-api.yunqueyi.com/', apiUrl: 'https://test1-api.yunqueyi.com/',
webPageUrl: 'https://test1-phome.yunqueyi.com/', webPageUrl: 'https://test1-phome.yunqueyi.com/',
qiniuUrl: "https://test1-sc.yunqueyi.com/contents/admin/qiniu/token", qiniuUrl: "https://test1-sc.yunqueyi.com/contents/admin/qiniu/token",
qiniuFileUrl: "https://test1-sc.yunqueyi.com/contents/admin/qiniu/token1", qiniuFileUrl: "https://test1-sc.yunqueyi.com/contents/admin/qiniu/token1",
qiniuResourceUrl: "https://test1-videos.yunqueyi.com", qiniuResourceUrl: "https://test1-videos.yunqueyi.com",
qiniuImgUrl: "https://test1-file.yunqueyi.com" qiniuImgUrl: "https://test1-file.yunqueyi.com",
loginUrl: 'https://test1-saas.yunqueyi.com/pica-login/work_station.html',
innerLoginUrl: 'https://test1-sso.yunqueyi.com/PICA_SSO_FE/html/pica_login.html'
}, },
uat: { uat: {
baseUrl: 'https://uat-sc.yunqueyi.com/portal', baseUrl: 'https://uat-sc.yunqueyi.com/portal/',
apiUrl: 'https://uat-api.yunqueyi.com/', apiUrl: 'https://uat-api.yunqueyi.com/',
webPageUrl: 'https://uat-phome.yunqueyi.com/', webPageUrl: 'https://uat-phome.yunqueyi.com/',
qiniuUrl: "https://uat-sc.yunqueyi.com/contents/admin/qiniu/token", qiniuUrl: "https://uat-sc.yunqueyi.com/contents/admin/qiniu/token",
qiniuFileUrl: "https://uat-sc.yunqueyi.com/contents/admin/qiniu/token1", qiniuFileUrl: "https://uat-sc.yunqueyi.com/contents/admin/qiniu/token1",
qiniuResourceUrl: "https://videos.yunqueyi.com", // 视频 qiniuResourceUrl: "https://videos.yunqueyi.com", // 视频
qiniuImgUrl: "https://file.yunqueyi.com" qiniuImgUrl: "https://file.yunqueyi.com",
loginUrl: 'https://uat-saas.yunqueyi.com/pica-login/work_station.html',
innerLoginUrl: 'https://uat-sso.yunqueyi.com/PICA_SSO_FE/html/pica_login.html'
}, },
pro: { pro: {
baseUrl: 'https://sc.yunqueyi.com/portal', baseUrl: 'https://sc.yunqueyi.com/portal/',
apiUrl: 'https://api.yunqueyi.com/', apiUrl: 'https://api.yunqueyi.com/',
webPageUrl: 'https://phome.yunqueyi.com/', webPageUrl: 'https://phome.yunqueyi.com/',
qiniuUrl: "https://sc.yunqueyi.com/contents/admin/qiniu/token", qiniuUrl: "https://sc.yunqueyi.com/contents/admin/qiniu/token",
qiniuFileUrl: "https://sc.yunqueyi.com/contents/admin/qiniu/token1", qiniuFileUrl: "https://sc.yunqueyi.com/contents/admin/qiniu/token1",
qiniuResourceUrl: "https://videos.yunqueyi.com", qiniuResourceUrl: "https://videos.yunqueyi.com",
qiniuImgUrl: "https://file.yunqueyi.com" qiniuImgUrl: "https://file.yunqueyi.com",
loginUrl: 'https://saas.yunqueyi.com/pica-login/work_station.html',
innerLoginUrl: 'https://sso.yunqueyi.com/PICA_SSO_FE/html/pica_login.html'
} }
} }
...@@ -11,8 +11,12 @@ const service = axios.create({ ...@@ -11,8 +11,12 @@ const service = axios.create({
// request拦截器 // request拦截器
service.interceptors.request.use(config => { service.interceptors.request.use(config => {
if(config.data && config.data.token) {
localStorage.setItem('storageToken',config.data.token)
}
config.headers['sysCode'] = 12 config.headers['sysCode'] = 12
config.headers['token'] = 'AB14D7D7675E4D09B4B1566170076122' config.headers['token'] = localStorage.getItem('storageToken')
//config.headers['token'] = 'AB14D7D7675E4D09B4B1566170076122'
config.headers['deviceInfo'] = JSON.stringify({ "app_channel": "", "app_mac": "", "app_uuid": "", "app_version": "", "device_brand": "", "device_ip": "", "device_model": "", "device_net": "", "device_ops": "", "resolution_wh": "", "system_level": "", "device_type": '10' }) config.headers['deviceInfo'] = JSON.stringify({ "app_channel": "", "app_mac": "", "app_uuid": "", "app_version": "", "device_brand": "", "device_ip": "", "device_model": "", "device_net": "", "device_ops": "", "resolution_wh": "", "system_level": "", "device_type": '10' })
// if (config.data && config.data.setEntry) { // if (config.data && config.data.setEntry) {
// config.headers['sysCode'] = config.data.sysCode || 10 // config.headers['sysCode'] = config.data.sysCode || 10
......
...@@ -125,6 +125,7 @@ const vueFilter = { ...@@ -125,6 +125,7 @@ const vueFilter = {
return '已禁用' return '已禁用'
} }
}, },
//项目管理
statusProject: (value) => { statusProject: (value) => {
if(value == 1) { if(value == 1) {
return '草稿' return '草稿'
...@@ -139,6 +140,18 @@ const vueFilter = { ...@@ -139,6 +140,18 @@ const vueFilter = {
}else { }else {
return '已拒绝' return '已拒绝'
} }
} },
projeceRoleType: (value) => {
if(value == "L1") {
return '内部管理员'
}else if(value == "L2") {
return '项目负责人'
}else if(value == "L3") {
return '次级负责人'
} else if(value == "L4") {
return '普通用户'
}
},
} }
export default vueFilter export default vueFilter
\ No newline at end of file
...@@ -164,6 +164,14 @@ export function getQiniuToken1() { ...@@ -164,6 +164,14 @@ export function getQiniuToken1() {
return getConfigByEnvType('qiniuFileUrl') return getConfigByEnvType('qiniuFileUrl')
} }
// 登录URL
export function getLoginUrl() {
return getConfigByEnvType('loginUrl')
}
export function getInnerLoginUrl() {
return getConfigByEnvType('innerLoginUrl')
}
// 七牛上传视频和图片 // 七牛上传视频和图片
export function uploadVideo() { export function uploadVideo() {
return getConfigByEnvType('qiniuResourceUrl') return getConfigByEnvType('qiniuResourceUrl')
......
...@@ -146,6 +146,7 @@ module.exports = { ...@@ -146,6 +146,7 @@ module.exports = {
GET(api, para, callback,str) { GET(api, para, callback,str) {
// para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE" // para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE"
let url = api + this.getUrlPara(para) let url = api + this.getUrlPara(para)
url = encodeURI(url);
return fetch({ return fetch({
url: getBaseUrl(url), url: getBaseUrl(url),
method: 'get', method: 'get',
...@@ -153,6 +154,17 @@ module.exports = { ...@@ -153,6 +154,17 @@ module.exports = {
}) })
}, },
// 通用DELETE请求
DELETE(api, para, callback,str) {
// para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE"
let url = api + this.getUrlPara(para)
return fetch({
url: getBaseUrl(url),
method: 'delete',
data: para
})
},
// 通用POST请求 // 通用POST请求
POST(api, para, callback) { POST(api, para, callback) {
// para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE" // para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE"
......
...@@ -31,11 +31,22 @@ export function isvalidUsername(str) { ...@@ -31,11 +31,22 @@ export function isvalidUsername(str) {
return reg.test(str) return reg.test(str)
} }
// 2-150个中文 // 2-150个中英文字符
export function validateWord150(str) { export function validateWord150(rule, value, callback, message) {
const reg = /^[\u4e00-\u9fa5]{2,150}$/ if(!/^[\u4e00-\u9fffa-zA-Z]{2,150}$/.test(value)) {
return reg.test(str) callback(new Error(message))
} else {
callback()
}
} }
// 考试30个中英文字符
export function validateWord30(value,message) {
if(!/^[\u4e00-\u9fffa-zA-Z]{0,30}$/.test(value)) {
callback(new Error('考试名称长度不超过30个中文字符长度'))
} else {
callback()
}
}
/* 通用密码验证(数字、字母、下划线或特殊字符且长度为0-150位) */ /* 通用密码验证(数字、字母、下划线或特殊字符且长度为0-150位) */
export function isValidPassword(rule, value, callback, message) { export function isValidPassword(rule, value, callback, message) {
if (!/^(?:\d+|[a-zA-Z]+|[!@#$%^&*]+){0,150}$/.test(value)) { if (!/^(?:\d+|[a-zA-Z]+|[!@#$%^&*]+){0,150}$/.test(value)) {
......
<template> <template>
<div> <div class="blank-wrap screenSet">
很抱歉,您暂时还没开通工作站功能 <div class="blank-content">
<img src="../assets/image/no-content.png"/>
<p>很抱歉,您暂时还没开通工作站功能</p>
</div>
</div> </div>
</template> </template>
<script> <script>
...@@ -8,8 +11,30 @@ export default { ...@@ -8,8 +11,30 @@ export default {
} }
</script> </script>
<style> <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> </style>
此差异已折叠。
...@@ -45,10 +45,10 @@ ...@@ -45,10 +45,10 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="200"> <el-table-column label="操作" fixed="right" align="center" min-width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="primary" v-if="scope.row.status == 1 ||scope.row.status == 2" size="small" @click="editComponentList(scope.row)">编辑</el-button> <el-button type="primary" v-if="scope.row.status == 1 || scope.row.status == 2" size="small" @click="editComponentList(scope.row)">编辑</el-button>
<el-button type="primary" v-if="scope.row.status == 1 ||scope.row.status == 2" size="small" @click="enableAndDisable(scope.row,1)">启用</el-button> <el-button type="primary" v-if="scope.row.status == 1 || scope.row.status == 2 || scope.row.status == 4" size="small" @click="enableAndDisable(scope.row,1)">启用</el-button>
<el-button type="primary" v-if="scope.row.status == 3" size="small" @click="enableAndDisable(scope.row,2)">禁用</el-button> <el-button type="primary" v-if="scope.row.status == 3" size="small" @click="enableAndDisable(scope.row,2)">禁用</el-button>
<el-button type="primary" v-if="scope.row.status == 1 ||scope.row.status == 2" size="small" @click="deleteComponent(scope.row)">删除</el-button> <el-button type="primary" v-if="scope.row.status == 1 || scope.row.status == 2" size="small" @click="deleteComponent(scope.row)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -72,6 +72,8 @@ ...@@ -72,6 +72,8 @@
import BreadCrumb from '../../components/breadcrumb.vue' import BreadCrumb from '../../components/breadcrumb.vue'
import { doUpload, getFilePath } from "../../utils/qiniuUtil" import { doUpload, getFilePath } from "../../utils/qiniuUtil"
import { validateWord } from "../../utils/validate.js" import { validateWord } from "../../utils/validate.js"
import { mapGetters } from 'vuex'
import { openLoading, closeLoading } from '../../utils/utils';
let vm = null let vm = null
export default { export default {
components: { components: {
...@@ -120,6 +122,11 @@ export default { ...@@ -120,6 +122,11 @@ export default {
} }
}, },
computed: {
...mapGetters([
'_token'
])
},
created() { created() {
vm = this vm = this
vm.search() vm.search()
...@@ -127,7 +134,9 @@ export default { ...@@ -127,7 +134,9 @@ export default {
methods: { methods: {
// 列表查询 // 列表查询
search() { search() {
vm.GET('/portalComponent/queryPortalComponent',vm.searchParam).then((res) => { openLoading(vm)
vm.GET('portalComponent/queryPortalComponent',vm.searchParam).then((res) => {
closeLoading(vm)
if( res.code == '000000' ) { if( res.code == '000000' ) {
vm.tableData = res.data.queryList vm.tableData = res.data.queryList
vm.totalRows = res.data.total vm.totalRows = res.data.total
...@@ -148,9 +157,17 @@ export default { ...@@ -148,9 +157,17 @@ export default {
createComponent() { createComponent() {
vm.$router.push({path: 'create-component'}) vm.$router.push({path: 'create-component'})
}, },
// 编辑 // 编辑(验证可编辑范围)
editComponentList(row) { editComponentList(row) {
vm.$router.push({path: 'create-component',query: {id:row.id,status: row.status}}) let req = {
token: vm._token,
componentId: row.id
}
vm.GET('portalComponent/componentEditRange',req).then((res) => {
if(res.code == "000000") {
vm.$router.push({path: 'create-component',query: {id:row.id,status: row.status,resultFlag: res.data.resultFlag}})
}
})
}, },
// 启用(禁用) // 启用(禁用)
enableAndDisable(row,flag) { enableAndDisable(row,flag) {
...@@ -231,7 +248,7 @@ export default { ...@@ -231,7 +248,7 @@ export default {
.search-title { .search-title {
padding: 10px 12px; padding: 10px 12px;
font-size: 12px; font-size: 12px;
color: #409EFF; color: #449284;
border-bottom: 1px solid #efefef; border-bottom: 1px solid #efefef;
} }
.create-button { .create-button {
......
<template>
<div class="finish-followup" v-if="showThisPage">
<el-dialog
title="结束随访"
:visible.sync="showFinishFollowup"
v-if="showThisPage"
:before-close="clickClose"
width="30%"
center>
<div class="finish-content">
<el-form
:model="finishData"
:rules="rules"
label-width="85px">
<el-form-item label="居民:">
{{finishData.patientName}}
</el-form-item>
<el-form-item label="结束原因:" prop="finishReason">
<el-input
type="textarea"
v-model="finishData.finishReason"
placeholder="请输入原因"
maxlength="30"
rows="3"
resize="none"></el-input>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button class="button-green" @click="clickClose" type="primary">取 消</el-button>
<el-button class="button-white" @click="clickClose" plain>确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import customTextarea from "@/components/followup/customTextarea";
export default {
name: "finish-followup",
components: {
customTextarea
},
props: {
showThisPage: { //是否显示model
type: Boolean,
default: function () {
return false;
}
},
finishData: {
type: Object,
default: function () {
return {};
}
}
},
data() {
return {
showFinishFollowup: true,
rules: {
finishReason: [
{ required: true, message: '请输入结束原因', trigger: 'blur' },
{ min: 1, max: 30, message: '长度在30个字符内', trigger: 'blur' }
],
}
}
},
methods: {
clickClose() {
this.$emit('closeFinishFollowup',false)
},
}
}
</script>
<style scoped>
.el-input__inner:disabled {
background-color: #ffffff!important;
}
</style>
<style lang="scss" scoped>
@import '../../../../style/followup/followup-common';
@import '../../../../style/followup/element-reset.css';
</style>
...@@ -11,13 +11,13 @@ ...@@ -11,13 +11,13 @@
<div class="title"><p>基本信息</p></div> <div class="title"><p>基本信息</p></div>
<div class="h-btn"> <div class="h-btn">
<el-button class="button-white" plain @click="changePlan">计划变更</el-button> <el-button class="button-white" plain @click="changePlan">计划变更</el-button>
<el-button class="button-white" plain>结束随访</el-button> <el-button class="button-white" plain @click="finishFollowup">结束随访</el-button>
</div> </div>
</div> </div>
<div class="base-info"> <div class="base-info">
<div class="resident-info base-content"> <div class="resident-info base-content">
<div class="content-div"> <div class="content-div">
<div class="c-title">随访开始时间</div> <div class="c-title">姓名</div>
<div class="c-content">戴佳康</div> <div class="c-content">戴佳康</div>
</div> </div>
<div class="content-div "> <div class="content-div ">
...@@ -99,6 +99,7 @@ ...@@ -99,6 +99,7 @@
</div> </div>
</div> </div>
<change-plan :showThisPage="showChangePlan" @closeChangePlan="closeChangePlan"></change-plan> <change-plan :showThisPage="showChangePlan" @closeChangePlan="closeChangePlan"></change-plan>
<finish-followup :showThisPage="showFinishFollowup" @closeFinishFollowup="closeFinishFollowup"></finish-followup>
</div> </div>
</template> </template>
...@@ -106,11 +107,14 @@ ...@@ -106,11 +107,14 @@
import BreadCrumb from '@/components/breadcrumb'; import BreadCrumb from '@/components/breadcrumb';
//变更计划dialog //变更计划dialog
import ChangePlan from '@/views/followup/plan-manage/dialog/change-plan'; import ChangePlan from '@/views/followup/plan-manage/dialog/change-plan';
//结束随访dialog
import FinishFollowup from '@/views/followup/plan-manage/dialog/finish-followup';
export default { export default {
name: "resident-detail", name: "resident-detail",
components: { components: {
BreadCrumb, BreadCrumb,
ChangePlan ChangePlan,
FinishFollowup,
}, },
data() { data() {
return { return {
...@@ -122,6 +126,7 @@ ...@@ -122,6 +126,7 @@
/*面包屑配置*/ /*面包屑配置*/
timeNodes: 0,//时间节点 timeNodes: 0,//时间节点
showChangePlan: false,//是否展示变更计划 showChangePlan: false,//是否展示变更计划
showFinishFollowup: false, //是否展示结束随访
} }
}, },
methods: { methods: {
...@@ -130,7 +135,13 @@ ...@@ -130,7 +135,13 @@
}, },
closeChangePlan(isShow) { closeChangePlan(isShow) {
this.showChangePlan = isShow this.showChangePlan = isShow
} },
finishFollowup() {
this.showFinishFollowup = true;
},
closeFinishFollowup(isShow) {
this.showFinishFollowup = isShow
},
} }
} }
</script> </script>
...@@ -155,7 +166,7 @@ ...@@ -155,7 +166,7 @@
flex-direction: row; flex-direction: row;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
line-height: 35px; padding: 10px 0;
.content-div { .content-div {
.c-title { .c-title {
width: 115px; width: 115px;
......
<template> <template>
<div class="home-wrap"> <div class="home-wrap">
<bread-crumb :curmbFirst="curmbFirst"></bread-crumb> <bread-crumb :curmbFirst="curmbFirst"></bread-crumb>
<div class="message-content screenSet"> <div class="message-content">
<el-row> <el-row>
<el-col class="visitor" :span="24"> <el-col class="visitor" :span="24" v-if="tableData.length > 0">
<div class="visitor-title"> <div class="visitor-title">
<div class="title">今日随访:<span style="color:#449284;">10人</span></div> <div class="title">今日随访:<span style="color:#449284;">10人</span></div>
<span class="visitor-more" @click="lookMore">查看更多</span> <span class="visitor-more" @click="lookMore">查看更多</span>
...@@ -19,22 +19,24 @@ ...@@ -19,22 +19,24 @@
</el-table> </el-table>
</div> </div>
</el-col> </el-col>
<el-col class="message" :span="24"> <el-col class="message screenSet" :span="24">
<div class="message-title">系统消息 <span>今日消息:3</span></div> <div class="message-title">系统消息 <span>今日消息:{{count}}</span></div>
<div class="message-info" v-if="messageList"> <div class="message-info" v-if="messageList.length > 0">
<div class="message-item" v-for="(item,index) in messageList" :key="index"> <div class="message-item" v-for="(item,index) in messageList" :key="index">
<div class="text-top"> <div class="text-top">
<i class="el-icon-error" v-if="item.type == 2" style="color:#FA5555"></i> <i class="el-icon-error" v-if="item.type == 2" style="color:#FA5555"></i>
<i class="el-icon-success" v-if="item.type == 3" style="color:#67C23A"></i> <i class="el-icon-success" v-if="item.type == 3" style="color:#67C23A"></i>
<i class="el-icon-warning" v-if="item.type == 1" style="color:#FAAD14"></i> <i class="el-icon-warning" v-if="item.type == 1" style="color:#FAAD14"></i>
<span>{{item.status}}</span> <span>{{item.menuName}}</span>
<span>{{item.date}}</span> <span>{{item.portalTime}}</span>
</div> </div>
<div class="text-bottom">{{item.info}}</div> <div class="text-bottom">{{item.content}}</div>
</div> </div>
</div> </div>
<div v-else> <div class="no-message" v-else>
<div>
<img src="../assets/image/noData.png"/>
</div>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
...@@ -43,7 +45,8 @@ ...@@ -43,7 +45,8 @@
</template> </template>
<script> <script>
import BreadCrumb from '../components/breadcrumb.vue' import BreadCrumb from '../components/breadcrumb.vue'
import { setTimeout, setInterval } from 'timers'; import { setTimeout, setInterval } from 'timers'
import { mapGetters } from 'vuex'
let vm = null let vm = null
export default { export default {
components: { components: {
...@@ -54,46 +57,50 @@ export default { ...@@ -54,46 +57,50 @@ export default {
curmbFirst: '数据总览', curmbFirst: '数据总览',
spanFirstNum: 12, spanFirstNum: 12,
spanSecondNum: 12, spanSecondNum: 12,
tableData: [ tableData: [],
{ count: 0,
date: '2016-05-02', messageList:[
name: '王小虎', // {
style: '电话随访', // menuName: '审核提醒',
content: '糖尿病患者第20190228定期随访登记' // type: 1,
},{ // portalTime: '2019-01-02',
date: '2016-05-02', // content: '王小波创建了"浙江省2019高血压第一季度考试"项目,提醒您审核。'
name: '王小虎', // },{
style: '电话随访', // menuName: '审核未通过',
content: '糖尿病患者第20190228定期随访登记' // type: 2,
},{ // portalTime: '2019-01-02',
date: '2016-05-02', // content: '王小波创建了"浙江省2019高血压第一季度考试"项目,提醒您审核。'
name: '王小虎', // },{
style: '电话随访', // menuName: '审核通过',
content: '糖尿病患者第20190228定期随访登记' // type: 3,
} // portalTime: '2019-01-02',
], // content: '王小波创建了"浙江省2019高血压第一季度考试"项目,提醒您审核。'
messageList:[{ // }
status: '审核提醒', ]
type: 1,
date: '2019-01-02',
info: '王小波创建了"浙江省2019高血压第一季度考试"项目,提醒您审核。'
},{
status: '审核未通过',
type: 2,
date: '2019-01-02',
info: '王小波创建了"浙江省2019高血压第一季度考试"项目,提醒您审核。'
},{
status: '审核通过',
type: 3,
date: '2019-01-02',
info: '王小波创建了"浙江省2019高血压第一季度考试"项目,提醒您审核。'
}]
} }
}, },
created() {
vm = this
vm.getSystemData()
},
computed: {
...mapGetters([
'_token'
])
},
methods: { methods: {
// 查看更多 // 查看更多
lookMore() { lookMore() {
},
// 获取系统消息数据
getSystemData() {
vm.GET('portalMessage/queryPortalMessageInfo',{token: vm._token, pageNo: 1, pageSize: 15}).then((res) => {
if( res.code == '000000') {
vm.messageList = res.data.portalMessageModels
vm.count = res.data.count
}
})
} }
} }
} }
...@@ -165,7 +172,13 @@ export default { ...@@ -165,7 +172,13 @@ export default {
} }
} }
} }
.no-message {
text-align: center;
img {
width: 100px;
margin-top: 17%;
}
}
} }
} }
</style> </style>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="footer-wrap"> <div class="footer-wrap">
<span>Copyright© 2019 云鹊医疗科技 (上海) 有限公司</span> <span>Copyright© 2019 云鹊医疗科技 (上海) 有限公司</span>
<span>沪ICP:16018581号-1</span> <span>沪ICP:16018581号-1</span>
<span>京ICP:14044861号</span> <span><img src="../../assets/image/footer-icon.png"/>京ICP备:14044861号</span>
</div> </div>
</template> </template>
<script> <script>
...@@ -17,6 +17,13 @@ export default { ...@@ -17,6 +17,13 @@ export default {
line-height: 75px; line-height: 75px;
font-size: 12px; font-size: 12px;
color: #838486; color: #838486;
span {
padding: 0 10px;
}
img {
width: 12px;
padding-right: 5px;
}
} }
</style> </style>
......
...@@ -7,49 +7,55 @@ ...@@ -7,49 +7,55 @@
<div class="user-info"> <div class="user-info">
<el-dropdown trigger="click" @command="handleCommand"> <el-dropdown trigger="click" @command="handleCommand">
<div class="el-dropdown-link"> <div class="el-dropdown-link">
<img class="user-logo" src="../../assets/image/img.jpg"> <img class="user-logo" :src="portrait">
<span id="headName">{{name}}</span><i class="el-icon-caret-bottom"></i> <span id="headName">{{userName}}</span><i class="el-icon-caret-bottom"></i>
</div> </div>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<!-- <el-dropdown-item command="logout">退出</el-dropdown-item> -->
<el-dropdown-item command="logout">注销</el-dropdown-item> <el-dropdown-item command="logout">注销</el-dropdown-item>
<el-dropdown-item @click="forward">返回云鹊医首页</el-dropdown-item> <el-dropdown-item command="forward">返回云鹊医首页</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</div> </div>
<!--导航-->
<!-- <div class="user-info" style="padding-right:10px;">
<el-dropdown trigger="click" @command="handleCommand">
<div>
<span class="el-dropdown-link">返回云鹊医首页</span>
<span class="line">|</span>
</div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="logout">注销</el-dropdown-item>
<el-dropdown-item @click="forward">返回云鹊医首页</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div> -->
</div> </div>
</template> </template>
<script> <script>
import { getLoginUrl,getInnerLoginUrl } from '../../utils/index.js'
let vm = null
export default { export default {
props: {
portrait: {
type: String
},
userName: {
type: String
},
idType: {
type: Number
}
},
data() { data() {
return { return {
name: 'hws', name: '',
systemInfoList: [] systemInfoList: []
} }
}, },
computed: {}, computed: {},
created() {
vm = this
},
methods: { methods: {
handleCommand(command) { handleCommand(command) {
if (command === 'logout') { if (command === 'logout') {
localStorage.removeItem('storageToken')
if(vm.idType == 1) { // 内部
window.location.href = getInnerLoginUrl()
} else {
window.location.href = getLoginUrl()
}
}
if(command === 'forward') {
window.location.href = 'https://www.yunqueyi.com/'
} }
},
forward() {
window.location.href = 'https://www.yunqueyi.com/'
} }
} }
} }
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
<i class="sub-icon" :class="subItem.icon"></i> <i class="sub-icon" :class="subItem.icon"></i>
{{subItem.title}} {{subItem.title}}
</el-menu-item> </el-menu-item>
</el-submenu> </el-submenu>
</template> </template>
<template v-else> <template v-else>
...@@ -22,9 +21,22 @@ ...@@ -22,9 +21,22 @@
</div> </div>
</template> </template>
<script> <script>
import { mapGetters } from 'vuex'
import { setTimeout } from 'timers';
let vm = null
export default { export default {
props: {
tokenValue: {
type: String
},
authList: {
type: Object,
default: () => {}
}
},
data() { data() {
return { return {
// authList: {},
items: [ items: [
{ {
title: '数据总览', title: '数据总览',
...@@ -87,6 +99,46 @@ export default { ...@@ -87,6 +99,46 @@ export default {
onRoutes() { onRoutes() {
return this.$route.path; return this.$route.path;
} }
},
created() {
vm = this
vm.authSelect()
},
methods: {
// 获取菜单数据
authSelect() {
vm.$nextTick(() => {
vm.getUserAuth()
})
// let req = {
// "token": vm.tokenValue,
// "system_type": "25"
// }
// vm.POST('portalComponent/menu/list',req).then((res) => {
// if( res.code == '000000') {
// vm.items = res.data.picapMenuModels
// vm.$nextTick(() => {
// vm.getUserAuth()
// })
// }
// })
},
// 获取用户权限
getUserAuth() {
if(vm.authList && vm.authList.length > 0) {
if(!vm.authList.P001) { // 项目管理
vm.items[1].subs[1].index = 'blank'
}
if(!vm.authList.P002) { // 组件管理
vm.items[1].subs[0].index = 'blank'
}
if(!vm.authList.P001) { // 角色管理
vm.items[2].subs[0].index = 'blank'
}
}
}
} }
} }
</script> </script>
...@@ -110,14 +162,15 @@ export default { ...@@ -110,14 +162,15 @@ export default {
} }
.el-menu-item.is-active { .el-menu-item.is-active {
color: #fff; color: #fff;
background: #509284; background: #509284 !important
}
.el-menu-item:hover,
.el-submenu__title:hover,
.slidebar-container .el-menu .el-menu-item:hover,
.slidebar-container .el-menu .el-submenu__title:hover {
color: #fff;
background: #06232C;
} }
// .el-menu-item:focus, .el-menu-item:hover,
// .el-submenu__title:hover,.slidebar-container .el-menu .el-menu-item:focus,
// .slidebar-container .el-menu .el-menu-item:hover,
// .slidebar-container .el-menu .el-submenu__title:hover {
// background: #06232C;
// }
} }
} }
</style> </style>
......
...@@ -46,6 +46,7 @@ let tablePerson = [{ ...@@ -46,6 +46,7 @@ let tablePerson = [{
let treeData = [ let treeData = [
{ {
id: 11, id: 11,
name: "一级 1",
label: "一级 1", label: "一级 1",
children: [ children: [
{ {
...@@ -99,10 +100,29 @@ let treeData = [ ...@@ -99,10 +100,29 @@ let treeData = [
] ]
} }
]; ];
// 按钮type类型: 0-编辑
// 1-暂存 2-完成 3-上架 4-通过 5-下架 6-拒绝
// 7- 提醒审核 8(5)-取消审核 9-删除
let buttonStatus = [
//L1 内部管理员 L2项目负责人 L3次级负责人
//草稿
{ L1: "09", L2: "09", L3: "" },
//未上架
{ L1: "09", L2: "039", L3: "0" },
//待审批、审批中
{ L1: "46", L2: "78", L3: "" },
//已上架
{ L1: "05", L2: "05", L3: "5" },
//已下架
{ L1: "03", L2: "03", L3: "0" },
//已拒绝/未上架
{ L1: "09", L2: "039", L3: "0" },
];
export function returnData() { export function returnData() {
let data = {}; let data = {};
data.tableOrganization = tableOrganization; data.tableOrganization = tableOrganization;
data.tablePerson = tablePerson; data.tablePerson = tablePerson;
data.treeData = treeData; data.treeData = treeData;
data.buttonStatus = buttonStatus;
return data; return data;
} }
\ No newline at end of file
此差异已折叠。
<template> <template>
<div class="main-container"> <div class="role-wrap">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond"></bread-crumb> <bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond"></bread-crumb>
<div class="component-content"> <div class="component-content screenSet">
<div class="header-title">查询条件</div> <div class="header-title">查询条件</div>
<el-form :inline="true" :model="formInline" class="demo-form-inline"> <el-row :gutter="30" class="row" type="flex" style="margin-top: 10px;">
<el-form-item label="项目名称:"> <el-form ref="formInline" :model="formInline" label-width="75px" style="width:100%;">
<el-input v-model="formInline.name" placeholder="审批人"></el-input> <el-col :span="6">
</el-form-item> <el-form-item label="项目名称:">
<el-form-item label="项目时间:"> <el-input v-model="formInline.projectName" size="mini" placeholder="请输入项目名称"></el-input>
<el-date-picker v-model="formInline.startDates" type="date" placeholder="请选择开始时间"></el-date-picker> </el-form-item>
<el-date-picker v-model="formInline.endDate" type="date" placeholder="请选择结束时间"></el-date-picker> </el-col>
</el-form-item> <el-col :span="6">
<el-form-item class="to-right"> <el-form-item label="项目时间:">
<el-button class="button-white" plain>重置</el-button> <el-date-picker
</el-form-item> size="mini"
<el-form-item class="to-right"> type="daterange"
<el-button class="button-green" type="primary">查询</el-button> start-placeholder="请选择项目开始时间"
</el-form-item> end-placeholder="请选择项目结束时间"
</el-form> v-model="formInline.duringTime"
value-format="yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12" style="padding:0;text-align:right;padding-right:15px;">
<el-button type="primary" size="small" @click="search">查询</el-button>
<el-button type="default" size="small" @click="resetForm" style="margin-left:0;">重置</el-button>
</el-col>
</el-form>
</el-row>
<el-table <el-table
v-loading="loading" v-loading="loading"
:data="tableData" :data="tableData"
:header-cell-style="{background:'#FAFAFA',color:'#000'}" :header-cell-style="{background:'#FAFAFA',color:'#000'}"
> >
<el-table-column prop="id" label="ID编号" width="140"></el-table-column> <el-table-column prop="createdId" label="ID编号" min-width="100" align="center"></el-table-column>
<el-table-column prop="projectName" label="项目名称" width="120"></el-table-column> <el-table-column prop="projectName" label="项目名称" min-width="100" align="center"></el-table-column>
<el-table-column prop="createName" label="创建人"></el-table-column> <el-table-column prop="createdName" label="创建人" align="center"></el-table-column>
<el-table-column prop="projectBrief" label="项目简介"></el-table-column> <el-table-column prop="projectIntro" label="项目简介" align="center"></el-table-column>
<el-table-column prop="address" label="所属地区"></el-table-column> <el-table-column prop="projectBegintime" label="项目开始时间" align="center"></el-table-column>
<el-table-column prop="startTime" label="项目开始时间"></el-table-column> <el-table-column prop="projectEndtime" label="项目结束时间" align="center"></el-table-column>
<el-table-column prop="endTime" label="项目结束时间"></el-table-column> <el-table-column prop="projectStatus" label="状态" align="center">
<el-table-column prop="state" label="状态"></el-table-column>
<el-table-column fixed="right" label="操作" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button class="title" type="text" size="small" @click="toPage()">查看项目人员</el-button> <span>{{ scope.row.projectStatus | statusProject }}</span>
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="200" align="center">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="toPage(scope.row)">查看项目人员</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination <div class="pagination">
@size-change="handleSizeChange" <el-pagination
@current-change="handleCurrentChange" background
:current-page="currentPage" @size-change="handleSizeChange"
:page-sizes="[100, 200, 300, 400]" @current-change="handleCurrentChange"
:page-size="100" :current-page="formInline.pageNo"
layout="total, sizes, prev, pager, next, jumper" :page-sizes="[10, 30, 50, 100]"
:total="400" :page-size="formInline.pageSize"
></el-pagination> layout="total, sizes, prev, pager, next, jumper"
:total="totalRows"
></el-pagination>
</div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import BreadCrumb from "../../components/breadcrumb.vue"; import BreadCrumb from "../../components/breadcrumb.vue";
import { create } from "domain"; import { create } from "domain";
let vm = null;
export default { export default {
components: { components: {
BreadCrumb BreadCrumb
}, },
data() { data() {
const item = {
id: "298490",
projectName: "浙江省防控中心指空中...",
createName: "李雷",
projectBrief: "显示项目简介简介",
address: "浙江省",
startTime: "2018-12-15 15:39:23",
endTime: "2018-12-15 15:39:23",
state: "草稿"
};
return { return {
curmbFirst: "系统管理", curmbFirst: "系统管理",
curmbSecond: "角色管理", curmbSecond: "角色管理",
tableData: Array(10).fill(item), tableData: [],
loading: false, loading: false,
timingTime: "", timingTime: "",
currentPage: 1, currentPage: 1,
duringTime: 0,
totalRows: 0,
formInline: { formInline: {
name: "", projectName: "",
startDate: "", projectBegintime: "",
endDate: "", projectEndtime: "",
type: "" duringTime: "",
}, pageNo: 1,
pickerOptions: { pageSize: 10
shortcuts: [
{
text: "最近一周",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit("pick", [start, end]);
}
},
{
text: "最近一个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit("pick", [start, end]);
}
},
{
text: "最近三个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit("pick", [start, end]);
}
}
]
} }
}; };
}, },
create() {}, created() {
vm = this;
this.search();
},
methods: { methods: {
toPage() { setParam(data) {
this.$router.push("item-role"); let param = {};
if (
data.duringTime !== null &&
data.duringTime !== "" &&
data.duringTime[0] !== null &&
data.duringTime[1] !== null
) {
param.projectBegintime = data.duringTime[0];
param.projectEndtime = data.duringTime[1];
}
for (let key in data) {
if (
key !== "duringTime" &&
key !== "projectBegintime" &&
key !== "projectEndtime"
) {
param[key] = data[key];
}
}
console.log(param);
return param;
},
search() {
let req = {};
console.log(this.formInline);
req = this.setParam(this.formInline);
vm.GET("portalInfo/getProjectList", req).then(res => {
if (res.code == "000000") {
vm.tableData = res.data.data;
vm.totalRows = res.data.totalRows;
this.loading = false;
}
});
},
resetForm() {
vm.formInline = Object.assign(
{},
{
projectName: "",
projectBegintime: "",
projectEndtime: "",
duringTime: "",
pageNo: 1,
pageSize: 10
}
);
vm.search();
},
toPage(row) {
this.$router.push("item-role?portalProjectId=" + row.id);
}, },
handleSizeChange(val) { handleSizeChange(val) {
console.log(`每页 ${val} 条`); console.log(`每页 ${val} 条`);
}, },
handleCurrentChange(val) { handleCurrentChange(val) {
console.log(`当前页: ${val}`); console.log(`当前页: ${val}`);
}, }
} }
}; };
</script> </script>
<style lang="scss"> <style lang="scss">
.main-container { .role-wrap {
.component-content { .component-content {
margin-top: 50px;
padding: 10px; padding: 10px;
.button-green { background: #fff;
color: #ffffff;
background: #449284;
border-color: #bfdad5;
border-radius: 2px;
}
.button-white {
color: #606266;
background: #ffffff;
border-color: #ecedf1;
border-radius: 2px;
}
.header-title { .header-title {
padding: 10px 12px; padding: 10px 12px;
font-size: 12px; font-size: 12px;
color: #409eff; color: #449284;
border-bottom: 1px solid #efefef; border-bottom: 1px solid #efefef;
} }
.to-right { .to-right {
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册