Commit 2be47c4a authored by 张伯涛's avatar 张伯涛

项目搭建

parent 29f91c56
......@@ -3,8 +3,8 @@ ENV = 'development'
# base api
VUE_APP_BASE_API = '/dev-api'
VUE_APP_BASE_API = '/dev-api'
VUE_APP_BASE_APIS = 'http://49.232.167.247:20020/teaServer'
VUE_CLI_BABEL_TRANSPILE_MODULES = true
# just a flag
ENV = 'test'
ENV = 'production'
# 测试环境
# base api
VUE_APP_BASE_API = 'http://192.144.239.97:20075/'
VUE_APP_BASE_API = 'http://49.232.167.247:20024/'
VUE_APP_BASE_APIS = 'http://49.232.167.247:20020/teaServer'
......@@ -18,7 +18,7 @@
"axios": "0.18.1",
"bpmn-js": "^6.1.1",
"bpmn-js-properties-panel": "^0.33.1",
"echarts": "^5.3.2",
"echarts": "^4.9.0",
"element-resize-detector": "^1.2.4",
"element-ui": "2.13.0",
"gm-crypt": "^0.0.2",
......@@ -26,6 +26,7 @@
"js-base64": "^2.6.2",
"js-cookie": "2.2.0",
"jsencrypt": "^3.0.0-rc.1",
"less-loader": "^5.0.0",
"markdown-loader": "^5.1.0",
"moment": "^2.27.0",
"normalize.css": "7.0.0",
......@@ -37,10 +38,11 @@
"v-viewer": "^1.6.4",
"viewerjs": "^1.11.6",
"vue": "2.7.10",
"vue-cropper": "^0.5.4",
"vue-pdf": "^4.1.0",
"vue-print-nb": "^1.7.5",
"vue-cropper": "^0.5.11",
"vue-pdf": "^4.3.0",
"vue-router": "3.0.6",
"vue-video-player": "^5.0.0",
"vue2-editor": "^2.10.3",
"vuedraggable": "^2.23.2",
"vuex": "3.1.0"
},
......@@ -50,28 +52,32 @@
"@vue/cli-plugin-babel": "3.6.0",
"@vue/cli-plugin-eslint": "^3.9.1",
"@vue/cli-plugin-unit-jest": "3.6.3",
"@vue/cli-service": "3.6.0",
"@vue/cli-service": "4.4.6",
"@vue/test-utils": "1.0.0-beta.29",
"autoprefixer": "^9.5.1",
"babel-core": "7.0.0-bridge.0",
"babel-eslint": "10.0.1",
"chalk": "2.4.2",
"compression-webpack-plugin": "^1.1.12",
"connect": "3.6.6",
"crypto-js": "4.1.1",
"eslint": "5.15.3",
"eslint-plugin-vue": "5.2.2",
"html-webpack-plugin": "3.2.0",
"less": "^3.9.0",
"mockjs": "1.0.1-beta3",
"node-sass": "^4.9.0",
"runjs": "^4.3.2",
"sass-loader": "^7.1.0",
"sass-loader": "^7.3.1",
"script-ext-html-webpack-plugin": "2.1.3",
"serve-static": "^1.13.2",
"style-loader": "^4.0.0",
"stylus": "^0.54.7",
"stylus-loader": "^3.0.2",
"svg-sprite-loader": "4.1.3",
"svgo": "1.2.2",
"vue-template-compiler": "2.6.10",
"crypto-js": "4.1.1"
"terser-webpack-plugin": "^5.3.10",
"vue-template-compiler": "2.6.10"
},
"engines": {
"node": ">=8.9",
......
......@@ -4,10 +4,10 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="<%= BASE_URL %>liulanqi_logo.png">
<link rel="icon" href="<%= BASE_URL %>collapseMenuLogo.png">
<!-- <link rel="stylesheet" href="//at.alicdn.com/t/font_2011217_f70ptj9y4oc.css">-->
<!-- <title><%= webpackConfig.name %></title>-->
<title>师能力测评系统</title>
<title>学资源云平台</title>
</head>
<body>
<noscript>
......
......@@ -3,12 +3,13 @@ import { encrypt } from '@/utils/jsencrypt'
import Qs from 'qs'
// 登录方法
export function login(username, password, code, uuid) {
export function login(username, password, code, uuid,type) {
const data = {
username,
password,
code,
uuid
uuid,
type
}
console.log('加密前数据', data)
return request({
......
......@@ -11,7 +11,7 @@ import Qs from 'qs'
// 查询异常日志列表
export function list(query) {
return request({
url: '/monitor/errorLog/list',
url: '/monitor/errorLog/queryErrorLogListByPagination',
method: 'get',
params: query
})
......
......@@ -11,7 +11,7 @@ import Qs from 'qs'
// 查询登录日志列表
export function list(query) {
return request({
url: '/monitor/loginInfo/list',
url: '/monitor/loginInfo/querySysLoginListByPagination',
method: 'get',
params: query
})
......
......@@ -11,7 +11,7 @@ import Qs from 'qs'
// 查询操作日志列表
export function list(query) {
return request({
url: '/monitor/operLog/list',
url: '/monitor/operLog/queryOperLogListByPagination',
method: 'get',
params: query
})
......
import request from '@/utils/request'
import Qs from 'qs'
/**
* 1. 列表查询
* 2. 查询详细信息
* 3. 新增
* 4. 修改
* 5. 逻辑删除
* 6. 导出
*
*/
// 1. 查询通用_学生列表
export function listSysStudent(query) {
return request({
url: '/sysstudent/querySysStudentByPagination',
method: 'get',
params: query
})
}
// 2. 查询通用_学生详细信息
export function getSysStudent(businessId) {
return request({
url: '/sysstudent/detail/' + businessId,
method: 'get'
})
}
// 3. 新增通用_学生
export function addSysStudent(data) {
data = Qs.stringify(data)
return request({
url: '/sysstudent/add',
method: 'post',
data: data
})
}
// 4. 修改通用_学生
export function updateSysStudent(data) {
const businessId = data.businessId
data = Qs.stringify(data)
return request({
url: '/sysstudent/update/' + businessId,
method: 'put',
data
})
}
// 5. 逻辑删除通用_学生
export function delSysStudent(businessId) {
return request({
url: '/sysstudent/deleteLogical/' + businessId,
method: 'delete'
})
}
// 6. 导出通用_学生
export function exportSysStudent(query) {
return request({
url: '/sysstudent/export',
method: 'get',
params: query,
responseType: 'blob'
})
}
......@@ -155,4 +155,12 @@ export function transformDept(data) {
})
}
// 17.查询所属部门
export function listAllDept(query) {
return request({
url: '/system/dept/listAll',
method: 'get',
params: query
})
}
......@@ -75,10 +75,11 @@ export function getMenu(menuId) {
}
// 10.查询菜单下拉树结构
export function treeSelect() {
export function treeSelect(params) {
return request({
url: '/system/menu/treeSelect',
method: 'get'
method: 'get',
params
})
}
......
......@@ -94,6 +94,14 @@ export function changeRoleStatus(businessId, flag) {
// 9.查询角色下拉
export function getListRole() {
return request({
url: 'system/role/listAllExcludeUnitRole',
method: 'get'
})
}
// 9.查询角色下拉--老
export function getListRoleOld() {
return request({
url: 'system/role/listAll',
method: 'get'
......
......@@ -58,10 +58,18 @@ export function listUser(query) {
params: query
})
}
// 4.分页查询用户列表
export function listUserWeb(query) {
return request({
url: '/pc/sysuser/weblist',
method: 'get',
params: query
})
}
// 5.查询用户列表
export function getListUser() {
return request({
url: 'system/role/listAll',
url: 'system/role/listAllExcludeUnitRole',
method: 'get'
})
}
......@@ -179,3 +187,12 @@ export function uploadFalseFile(params) {
responseType: 'blob'
})
}
// 17.分页查询用户列表
export function listByIdentity(query) {
return request({
url: '/pc/sysuser/listByIdentity',
method: 'get',
params: query
})
}
import request from '@/utils/request'
import Qs from 'qs'
/**
* 1. 列表查询
* 2. 查询详细信息
* 3. 新增
* 4. 修改
* 5. 逻辑删除
* 6. 导出
*
*/
// 1. 查询通用_学生列表
export function listSysStudent(query) {
return request({
url: '/sysstudent/querySysStudentByPagination',
method: 'get',
params: query
})
}
// 2. 查询通用_学生详细信息
export function getSysStudent(businessId) {
return request({
url: '/sysstudent/detail/' + businessId,
method: 'get'
})
}
// 3. 新增通用_学生
export function addSysStudent(data) {
data = Qs.stringify(data)
return request({
url: '/sysstudent/add',
method: 'post',
data: data
})
}
// 4. 修改通用_学生
export function updateSysStudent(data) {
const businessId = data.businessId
data = Qs.stringify(data)
return request({
url: '/sysstudent/update/' + businessId,
method: 'put',
data
})
}
// 5. 逻辑删除通用_学生
export function delSysStudent(businessId) {
return request({
url: '/sysstudent/deleteLogical/' + businessId,
method: 'delete'
})
}
// 6. 导出通用_学生
export function exportSysStudent(query) {
return request({
url: '/sysstudent/export',
method: 'get',
params: query,
responseType: 'blob'
})
}
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1603195985670" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3613" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M1001.91129653 452.07671895v-4.65416756a36.65157036 36.65157036 0 0 0-50.61407304-11.05364835L488.20754334 734.23563151a36.65157036 36.65157036 0 0 0-11.05364828 50.61407304l3.4906264 4.65416754a36.65157036 36.65157036 0 0 0 50.61407302 11.05364831l460.18082479-297.86672846a36.65157036 36.65157036 0 0 0 10.47187726-50.61407299z" fill="#2c2c2c" p-id="3614"></path><path d="M450.39243187 816.84710735l-6.39948078-9.3083351a67.48543104 67.48543104 0 0 1-3.49062543-64.5765757v-3.4906264a66.90366 66.90366 0 0 1 22.10729566-25.59792206l392.11362366-255.39744843V100.68706308A97.73752063 97.73752063 0 0 0 758.73103758 2.36777139h-639.94805017A97.73752063 97.73752063 0 0 0 22.79077997 100.68706308v823.20590002a97.73752063 97.73752063 0 0 0 98.31929169 97.73752063h639.9480492a97.73752063 97.73752063 0 0 0 97.73752063-97.73752063v-290.88547764L546.38463931 838.95440399A67.48543104 67.48543104 0 0 1 450.39243187 816.84710735zM179.86893767 167.00895097h533.48396551c22.10729663 0 39.5604247 12.79896052 39.56042469 29.08854845s-17.45312907 29.08854743-39.56042469 29.08854749H179.86893767c-21.52552556 0-39.5604247-12.79896052-39.56042472-29.08854749s18.03489916-29.08854743 39.56042472-29.08854845z m0 178.0219122h533.48396551c22.10729663 0 39.5604247 12.79896052 39.56042469 29.08854848s-17.45312907 29.08854743-39.56042469 29.08854746H179.86893767c-21.52552556 0-39.5604247-13.38073158-39.56042472-29.08854746s18.03489916-29.08854743 39.56042472-29.08854848zM179.86893767 525.96163072h257.14276159c22.10729663 0 39.5604247 13.38073158 39.56042472 29.08854746s-17.45312907 29.08854743-39.56042471 29.08854745H179.86893767c-21.52552556 0-40.72396684-11.63541939-40.72396686-27.92500535S158.34341207 525.96163072 179.86893767 525.96163072z m143.69742607 280.41359939a29.08854743 29.08854743 0 0 1 29.08854747 29.08854746 29.08854743 29.08854743 0 0 1-29.08854747 29.08854847h-47.70521867v25.59792205a29.08854743 29.08854743 0 0 1-29.08854746 29.08854744 29.08854743 29.08854743 0 0 1-29.08854748-29.08854744v-25.59792205h-48.28698973a29.08854743 29.08854743 0 0 1-29.08854745-29.08854847 29.67031855 29.67031855 0 0 1 29.08854745-29.08854746h48.28698973v-7.56302191h-48.28698973a29.08854743 29.08854743 0 0 1-29.08854745-29.08854845 29.67031855 29.67031855 0 0 1 29.08854745-29.08854744h11.63541939l-30.83386068-37.81511154a29.08854743 29.08854743 0 0 1 47.12344762-35.48802822l51.77761416 62.83126249 52.94115731-63.41303356a28.5067764 28.5067764 0 0 1 40.72396686-3.49062642 29.08854743 29.08854743 0 0 1 4.07239649 40.72396685l-33.16094397 37.81511252h11.05364731a29.08854743 29.08854743 0 0 1 29.08854846 29.08854747 29.08854743 29.08854743 0 0 1-29.08854846 29.08854745h-48.86875982v7.5630229z" fill="#2c2c2c" p-id="3615"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1603195985670" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3613" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M1001.91129653 452.07671895v-4.65416756a36.65157036 36.65157036 0 0 0-50.61407304-11.05364835L488.20754334 734.23563151a36.65157036 36.65157036 0 0 0-11.05364828 50.61407304l3.4906264 4.65416754a36.65157036 36.65157036 0 0 0 50.61407302 11.05364831l460.18082479-297.86672846a36.65157036 36.65157036 0 0 0 10.47187726-50.61407299z" fill="currentColor" p-id="3614"></path><path d="M450.39243187 816.84710735l-6.39948078-9.3083351a67.48543104 67.48543104 0 0 1-3.49062543-64.5765757v-3.4906264a66.90366 66.90366 0 0 1 22.10729566-25.59792206l392.11362366-255.39744843V100.68706308A97.73752063 97.73752063 0 0 0 758.73103758 2.36777139h-639.94805017A97.73752063 97.73752063 0 0 0 22.79077997 100.68706308v823.20590002a97.73752063 97.73752063 0 0 0 98.31929169 97.73752063h639.9480492a97.73752063 97.73752063 0 0 0 97.73752063-97.73752063v-290.88547764L546.38463931 838.95440399A67.48543104 67.48543104 0 0 1 450.39243187 816.84710735zM179.86893767 167.00895097h533.48396551c22.10729663 0 39.5604247 12.79896052 39.56042469 29.08854845s-17.45312907 29.08854743-39.56042469 29.08854749H179.86893767c-21.52552556 0-39.5604247-12.79896052-39.56042472-29.08854749s18.03489916-29.08854743 39.56042472-29.08854845z m0 178.0219122h533.48396551c22.10729663 0 39.5604247 12.79896052 39.56042469 29.08854848s-17.45312907 29.08854743-39.56042469 29.08854746H179.86893767c-21.52552556 0-39.5604247-13.38073158-39.56042472-29.08854746s18.03489916-29.08854743 39.56042472-29.08854848zM179.86893767 525.96163072h257.14276159c22.10729663 0 39.5604247 13.38073158 39.56042472 29.08854746s-17.45312907 29.08854743-39.56042471 29.08854745H179.86893767c-21.52552556 0-40.72396684-11.63541939-40.72396686-27.92500535S158.34341207 525.96163072 179.86893767 525.96163072z m143.69742607 280.41359939a29.08854743 29.08854743 0 0 1 29.08854747 29.08854746 29.08854743 29.08854743 0 0 1-29.08854747 29.08854847h-47.70521867v25.59792205a29.08854743 29.08854743 0 0 1-29.08854746 29.08854744 29.08854743 29.08854743 0 0 1-29.08854748-29.08854744v-25.59792205h-48.28698973a29.08854743 29.08854743 0 0 1-29.08854745-29.08854847 29.67031855 29.67031855 0 0 1 29.08854745-29.08854746h48.28698973v-7.56302191h-48.28698973a29.08854743 29.08854743 0 0 1-29.08854745-29.08854845 29.67031855 29.67031855 0 0 1 29.08854745-29.08854744h11.63541939l-30.83386068-37.81511154a29.08854743 29.08854743 0 0 1 47.12344762-35.48802822l51.77761416 62.83126249 52.94115731-63.41303356a28.5067764 28.5067764 0 0 1 40.72396686-3.49062642 29.08854743 29.08854743 0 0 1 4.07239649 40.72396685l-33.16094397 37.81511252h11.05364731a29.08854743 29.08854743 0 0 1 29.08854846 29.08854747 29.08854743 29.08854743 0 0 1-29.08854846 29.08854745h-48.86875982v7.5630229z" fill="currentColor" p-id="3615"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1543827724451" class="icon" style="" viewBox="0 0 1084 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10233" xmlns:xlink="http://www.w3.org/1999/xlink" width="211.71875" height="200"><defs><style type="text/css">@font-face { font-family: rbicon; src: url("chrome-extension://dipiagiiohfljcicegpgffpbnjmgjcnf/fonts/rbicon.woff2") format("woff2"); font-weight: normal; font-style: normal; }
</style></defs><path d="M1080.09609 434.500756c-4.216302-23.731757-26.9241-47.945376-50.595623-53.185637l-17.648235-4.095836a175.940257 175.940257 0 0 1-101.612877-80.832531 177.807476 177.807476 0 0 1-18.732427-129.801867l5.541425-16.684509c7.10748-23.129428-2.108151-54.992624-20.599646-70.833873 0 0-16.624276-14.094495-63.244529-41.199293-46.800951-26.984332-66.858502-34.513443-66.858502-34.513443-22.76803-8.372371-54.631227-0.361397-71.255503 17.407304l-12.287509 13.251234a173.470708 173.470708 0 0 1-120.465769 48.065842A174.13327 174.13327 0 0 1 421.329029 33.590675L409.583617 20.761071C393.140039 2.99237 361.096144-4.898138 338.267881 3.353767c0 0-20.358715 7.529111-67.099434 34.513443-46.800951 27.34573-63.244529 41.440225-63.244529 41.440225-18.431263 15.66055-27.646894 47.222582-20.539413 70.592941l5.059562 16.865207a178.048407 178.048407 0 0 1-18.672194 129.621169 174.916297 174.916297 0 0 1-102.275439 81.073463l-17.045906 3.854904c-23.310126 5.42096-46.258856 29.333415-50.595623 53.185637 0 0-3.854905 21.382674-3.854905 75.712737 0 54.330062 3.854905 75.712736 3.854905 75.712736 4.216302 23.972688 26.9241 47.945376 50.595623 53.185637l16.624276 3.854905a174.253736 174.253736 0 0 1 102.395904 81.314394c23.310126 40.837896 28.911785 87.337683 18.732427 129.801867l-4.81863 16.443578c-7.10748 23.129428 2.108151 54.992624 20.599646 70.833872 0 0 16.624276 14.094495 63.244529 41.199293 46.800951 27.104798 66.918735 34.513443 66.918735 34.513443 22.707798 8.372371 54.631227 0.361397 71.255503-17.407303l11.624947-12.588673a175.096996 175.096996 0 0 1 242.256662 0.120465l11.624947 12.648906c16.383345 17.708468 48.427239 25.598976 71.255503 17.347071 0 0 20.358715-7.529111 67.159666-34.513443 46.740719-27.104798 63.124063-41.199293 63.124064-41.199293 18.491496-15.600317 27.707127-47.463513 20.599646-70.833873l-5.059562-17.106139a176.723284 176.723284 0 0 1 18.672194-129.139305 176.060722 176.060722 0 0 1 102.395904-81.314394l16.68451-3.854905c23.310126-5.42096 46.258856-29.333415 50.595623-53.185637 0 0 3.854905-21.382674 3.854904-75.712737-0.240932-54.330062-4.095836-75.833202-4.095836-75.833202z m-537.819428 293.334149c-119.261112 0-216.175824-97.336342-216.175824-217.621412a216.657687 216.657687 0 0 1 216.236057-217.320249c119.200879 0 216.115591 97.276109 216.11559 217.56118-0.240932 120.044139-96.974945 217.320248-216.175823 217.320249z" p-id="10234" fill="#bfbfbf"></path></svg>
\ No newline at end of file
</style></defs><path d="M1080.09609 434.500756c-4.216302-23.731757-26.9241-47.945376-50.595623-53.185637l-17.648235-4.095836a175.940257 175.940257 0 0 1-101.612877-80.832531 177.807476 177.807476 0 0 1-18.732427-129.801867l5.541425-16.684509c7.10748-23.129428-2.108151-54.992624-20.599646-70.833873 0 0-16.624276-14.094495-63.244529-41.199293-46.800951-26.984332-66.858502-34.513443-66.858502-34.513443-22.76803-8.372371-54.631227-0.361397-71.255503 17.407304l-12.287509 13.251234a173.470708 173.470708 0 0 1-120.465769 48.065842A174.13327 174.13327 0 0 1 421.329029 33.590675L409.583617 20.761071C393.140039 2.99237 361.096144-4.898138 338.267881 3.353767c0 0-20.358715 7.529111-67.099434 34.513443-46.800951 27.34573-63.244529 41.440225-63.244529 41.440225-18.431263 15.66055-27.646894 47.222582-20.539413 70.592941l5.059562 16.865207a178.048407 178.048407 0 0 1-18.672194 129.621169 174.916297 174.916297 0 0 1-102.275439 81.073463l-17.045906 3.854904c-23.310126 5.42096-46.258856 29.333415-50.595623 53.185637 0 0-3.854905 21.382674-3.854905 75.712737 0 54.330062 3.854905 75.712736 3.854905 75.712736 4.216302 23.972688 26.9241 47.945376 50.595623 53.185637l16.624276 3.854905a174.253736 174.253736 0 0 1 102.395904 81.314394c23.310126 40.837896 28.911785 87.337683 18.732427 129.801867l-4.81863 16.443578c-7.10748 23.129428 2.108151 54.992624 20.599646 70.833872 0 0 16.624276 14.094495 63.244529 41.199293 46.800951 27.104798 66.918735 34.513443 66.918735 34.513443 22.707798 8.372371 54.631227 0.361397 71.255503-17.407303l11.624947-12.588673a175.096996 175.096996 0 0 1 242.256662 0.120465l11.624947 12.648906c16.383345 17.708468 48.427239 25.598976 71.255503 17.347071 0 0 20.358715-7.529111 67.159666-34.513443 46.740719-27.104798 63.124063-41.199293 63.124064-41.199293 18.491496-15.600317 27.707127-47.463513 20.599646-70.833873l-5.059562-17.106139a176.723284 176.723284 0 0 1 18.672194-129.139305 176.060722 176.060722 0 0 1 102.395904-81.314394l16.68451-3.854905c23.310126-5.42096 46.258856-29.333415 50.595623-53.185637 0 0 3.854905-21.382674 3.854904-75.712737-0.240932-54.330062-4.095836-75.833202-4.095836-75.833202z m-537.819428 293.334149c-119.261112 0-216.175824-97.336342-216.175824-217.621412a216.657687 216.657687 0 0 1 216.236057-217.320249c119.200879 0 216.115591 97.276109 216.11559 217.56118-0.240932 120.044139-96.974945 217.320248-216.175823 217.320249z" p-id="10234" fill="currentColor"></path></svg>
<!-- @author zhengjie -->
<template>
<div class="icon-body">
<el-input v-model="name" style="position: relative;" clearable placeholder="请输入图标名称" @clear="filterIcons" @input.native="filterIcons">
<el-input v-model.trim="name" style="position: relative;" clearable placeholder="请输入图标名称" @clear="filterIcons" @input.native="filterIcons">
<i slot="suffix" class="el-icon-search el-input__icon" />
</el-input>
<div class="icon-list">
......
......@@ -216,7 +216,7 @@
:value="item.value"
/>
</el-select>
<el-input v-else v-model="isEditText" disabled />
<el-input v-else v-model.trim="isEditText" disabled />
</template>
</el-table-column>
<el-table-column label="显示隐藏">
......@@ -246,7 +246,7 @@
<div v-if="showPanel3" class="custom-panel">
<el-form label-width="80px" style="margin-top: 80px">
<el-form-item label="结束事件">
<el-input v-model="listenEntityPath" :maxlength="100" show-word-limit size="small" placeholder="请输入结束事件" />
<el-input v-model.trim="listenEntityPath" :maxlength="100" show-word-limit size="small" placeholder="请输入结束事件" />
</el-form-item>
</el-form>
</div>
......
......@@ -41,6 +41,8 @@ export default {
{ value: '2', label: '风格2' },
{ value: '3', label: '风格3' },
{ value: '4', label: '风格4' },
{ value: '5', label: '风格5' },
{ value: '6', label: '风格6' },
]
}
},
......
<template>
<div class="sidebar-logo-container" :class="{'collapse':collapse}">
<div v-if="collapse" class="sidebar-logo-containerCollapse" :class="{'collapse':collapse}">
<transition name="sidebarLogoFade">
<router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
<img :src="logo" class="sidebar-logo">
<!-- <div class="sidebar-title">{{ title }} </div>-->
<router-link key="collapse" class="sidebar-logo-link" to="/">
12222
<img :src="collapseLogo" class="sidebar-logo2">
</router-link>
<router-link v-else key="expand" class="sidebar-logo-link" to="/">
</transition>
</div>
<div v-else class="sidebar-logo-container" :class="{'collapse':collapse}">
<transition name="sidebarLogoFade">
<router-link key="expand" class="sidebar-logo-link" to="/">
<div class="sidebar-logoTitle">
<div class="sidebar-logoRow"><img :src="logo" class="sidebar-logo"></div>
<div class="sidebar-title">{{ title }} </div>
<div class="sidebar-title title-current">{{ title }} </div>
</div>
</router-link>
</transition>
......@@ -28,7 +32,8 @@ export default {
},
data() {
return {
title: '教师能力测评系统'
collapseLogo: require('@/assets/image/logo3.png'),
title: '教学资源云平台'
// logo: require('@/assets/image/denglu_logo@2x.png')
}
},
......@@ -37,13 +42,17 @@ export default {
// eslint-disable-next-line vue/return-in-computed-property
logo() {
if (!localStorage.getItem('theme') || localStorage.getItem('theme') === '1') {
return require('@/assets/image/denglu_logo@2x.png')
return require('@/assets/image/logo2.png')
} else if (localStorage.getItem('theme') === '2') {
return require('@/assets/themeBImage/menuLogo.png')
} else if (localStorage.getItem('theme') === '3') {
return require('@/assets/themeCImage/menuLogo.png')
} else if (localStorage.getItem('theme') === '4') {
return require('@/assets/themeDImage/menuLogo.png')
} else if (localStorage.getItem('theme') === '5') {
return require('@/assets/themeDImage/menuLogo.png')
} else if (localStorage.getItem('theme') === '6') {
return require('@/assets/image/denglu_logo@2x.png')
}
}
},
......@@ -56,5 +65,11 @@ export default {
</script>
<style lang="scss" scoped>
.sidebar-logo-container .sidebar-logo-link .sidebar-title.title-current{
color: #fff !important
}
.sidebar-logo2{
margin-right: 0;
vertical-align: middle;
}
</style>
......@@ -22,10 +22,12 @@
import { mapGetters } from 'vuex'
import Logo from './Logo'
import SidebarItem from './SidebarItem'
import variables from '@/styles/themeA/variables.scss'
import variables from '@/styles/variables.scss'
import themeBvariables from '@/styles/themeB/variables.scss'
import themeCvariables from '@/styles/themeC/variables.scss'
import themeDvariables from '@/styles/themeD/variables.scss'
import themeEvariables from '@/styles/themeE/variables.scss'
import themeFvariables from '@/styles/themeF/variables.scss'
export default {
components: { SidebarItem, Logo },
......@@ -57,6 +59,10 @@ export default {
return themeCvariables
} else if (localStorage.getItem('theme') === '4') {
return themeDvariables
} else if (localStorage.getItem('theme') === '5') {
return themeEvariables
} else if (localStorage.getItem('theme') === '6') {
return themeFvariables
}
},
isCollapse() {
......
......@@ -77,18 +77,5 @@ export default {
</script>
<style lang="scss" scoped>
.scroll-container {
white-space: nowrap;
position: relative;
overflow: hidden;
width: 100%;
/deep/ {
.el-scrollbar__bar {
bottom: 0px;
}
.el-scrollbar__wrap {
height: 49px;
}
}
}
</style>
......@@ -24,7 +24,7 @@ export default {
},
data() {
return {
title: '教师能力测评系统',
title: '教学资源云平台',
logo: 'https://image-1252351428.cos.ap-beijing.myqcloud.com/home_logo.png'
}
},
......
......@@ -2,8 +2,8 @@ import Vue from 'vue'
import 'normalize.css/normalize.css' // A modern alternative to CSS resets
import moment from 'moment'
import Element from 'element-ui'
import echarts from "echarts";
import './utils/rem.js' // 自适应分辨率
import Print from 'vue-print-nb'
// import ElementUI from 'element-ui'
// import './styles/element-variables.scss'
// import locale from 'element-ui/lib/locale/lang/en' // lang i18n
......@@ -20,6 +20,10 @@ if (!storageValue || storageValue === '1') {
import('@/styles/themeC/index.scss')
} else if (storageValue === '4') {
import('@/styles/themeD/index.scss')
} else if (storageValue === '5') {
import('@/styles/themeE/index.scss')
} else if (storageValue === '6') {
import('@/styles/themeF/index.scss')
}
import halberd from '@/utils/halberd'
import App from './App'
......@@ -58,8 +62,7 @@ Viewer.setDefaults({
'keyboard': true, minZoomRatio: 0.50, maxZoomRatio: 150
}
})
// 全局引用
Vue.use(Print);
// 全局方法挂载
Vue.prototype.getDict = getDict
Vue.prototype.getConfigKey = getConfigKey
......@@ -75,6 +78,7 @@ Vue.prototype.UIUrl = process.env.VUE_APP_UI
Vue.prototype.$ha = halberd
Vue.prototype.$uploadFile = uploadPublic
Vue.prototype.$haveAuth = includePermission
Vue.prototype.$echarts = echarts;
// set ElementUI lang to EN
Vue.prototype.$axios = xhr
......
module.exports = {
title: '信息化管理系统',
title: '教学资源云平台',
/**
* @type {boolean} true | false
......
......@@ -38,12 +38,14 @@ const user = {
actions: {
// 登录
Login({ commit }, userInfo) {
console.log('userInfo', userInfo)
const username = userInfo.username.trim()
const password = userInfo.password
const code = userInfo.code
const uuid = userInfo.uuid
const type = userInfo.type
return new Promise((resolve, reject) => {
login(username, password, code, uuid).then(res => {
login(username, password, code, uuid, type).then(res => {
setToken(res.data)
commit('SET_TOKEN', res.data)
resolve()
......
......@@ -187,7 +187,7 @@ body .el-table th.gutter{
th {
padding: 0;
color: #333333;
background-color: #ecf9fe;
background-color: #F2F2F2;
border-right: 1px dashed #EBEEF5;
.cell {
font-size: 14px;
......@@ -348,7 +348,7 @@ label {
margin-left: 15px;
font-size: 16px;
font-weight: bold;
color: #46BCF3;
color: #214E90;
}
// 时间选择器样式改写
.el-date-editor {
......
......@@ -34,6 +34,7 @@ html {
height: inherit;
}
}
*,
*:before,
*:after {
......
......@@ -228,26 +228,26 @@
// hover样式
.el-submenu__title:hover {
color: #46bcf2 !important;
color: #214E90 !important;
.el-submenu__icon-arrow {
color: #46bcf2 !important;
color: #214E90 !important;
}
}
.nest-menu .el-submenu > .el-submenu__title:hover {
background-color: #fff !important;
color: #46bcf2 !important;
color: #214E90 !important;
}
.is-active > .el-submenu__title:hover {
color: #46bcf2 !important;
color: #214E90 !important;
}
.el-submenu .el-menu-item:hover {
color: #46bcf2 !important;
color: #214E90 !important;
}
.el-menu-item.submenu-title-noDropdown:hover {
color: #46bcf2 !important;
color: #214E90 !important;
}
.el-menu--vertical .el-menu-item:hover {
color: #46bcf2 !important;
color: #214E90 !important;
}
.el-submenu.is-opened {
......@@ -255,10 +255,10 @@
> .el-submenu__title {
background-color: #fff !important;
color: #46bcf2 !important;
color: #214E90 !important;
.el-submenu__icon-arrow {
color: #46bcf2 !important;
color: #214E90 !important;
}
}
......@@ -268,7 +268,7 @@
color: #000000 !important;
&.is-active {
color: #46bcf2 !important;
color: #214E90 !important;
}
}
}
......@@ -279,7 +279,7 @@
color: #000000 !important;
.el-submenu__icon-arrow {
color: #46bcf2 !important;
color: #214E90 !important;
}
}
}
......
......@@ -15,247 +15,3 @@
left: 576px!important;
padding: 12px 10px;
}
//新增按钮
.addBtn{
//width: 72px;
//height: 34px;
background: #FFFFFF!important;
border: 1px solid #6672FB!important;
border-radius: 4px;
font-size: 16px;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #6672FB;
&:hover {
opacity: 0.85;
background: #FFFFFF;
color: #6672FB;
border: 1px solid #6672FB!important;
}
&:focus {
opacity: 0.85;
background: #FFFFFF;
color: #6672FB;
border: 1px solid #6672FB!important;
}
}
// 弹窗确定按钮
.submitBtn{
width: 74px;
height: 38px;
background: #6672FB;
border: 1px solid #6672FB!important;
border-radius: 4px;
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 16px;
color: #FFFFFF;
&:hover {
opacity: 0.85;
background: #6672FB;
border: 1px solid #6672FB!important;
}
&:focus {
opacity: 0.85;
background: #6672FB;
border: 1px solid #6672FB!important;
}
}
//弹窗取消按钮
.cancelBtn{
width: 74px;
height: 38px;
background: #ffffff;
border: 1px solid #6672FB;
border-radius: 4px;
font-size: 16px;
font-family: Microsoft YaHei, Microsoft YaHei-400;
font-weight: 400;
color: #6672FB;
&:hover {
opacity: 0.85;
background: #ffffff;
border: 1px solid #6672FB!important;
}
&:focus {
opacity: 0.85;
background: #ffffff;
border: 1px solid #6672FB!important;
}
}
//导入按钮
.importBtn{
//width: 72px;
//height: 34px;
background: #FFFFFF!important;
border: 1px solid #6672FB!important;
border-radius: 4px;
font-size: 16px;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #6672FB;
&:hover {
opacity: 0.85;
background: #FFFFFF;
color: #6672FB;
border: 1px solid #6672FB!important;
}
&:focus {
opacity: 0.85;
background: #FFFFFF;
color: #6672FB;
border: 1px solid #6672FB!important;
}
}
//导出按钮
.exportBtn{
//width: 72px;
//height: 34px;
background: #FFFFFF!important;
border: 1px solid #6672FB!important;
border-radius: 4px;
font-size: 16px;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #6672FB;
&:hover {
opacity: 0.85;
background: #FFFFFF;
color: #6672FB;
border: 1px solid #6672FB!important;
}
&:focus {
opacity: 0.85;
background: #FFFFFF;
color: #6672FB;
border: 1px solid #6672FB!important;
}
}
//修改按钮文字类型样式
.updateBtn{
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 16px;
color: #6672FB
}
.resetBtnText{
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 16px;
color: #6672FB
}
.delBtn{
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 16px;
color: #6672FB
}
// switch开样式
.el-switch__core{
width: 40px!important;
}
.el-switch.is-checked .el-switch__core{
border-color: #6672FB;
background-color: #6672FB;
}
.el-message-box__btns button:nth-child(2){
border-color: #6672FB;
background-color: #6672FB;
}
.search{
.formClass{
padding: 0 35px 19px 53px;
border-bottom: 1px solid #F5F6F9;
.el-form-item{
margin-right: 20px;
}
.el-input__inner{
width: 300px;
height: 38px;
}
}
.btnRow{
padding: 25px 0 53px 52px;
}
// 查询按钮
.queryBtn{
width: 74px;
height: 38px;
background: #6672FB;
border: 1px solid #6672FB!important;
border-radius: 4px;
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 16px;
color: #FFFFFF;
&:hover {
opacity: 0.85;
background: #6672FB;
border: 1px solid #6672FB!important;
}
&:focus {
opacity: 0.85;
background: #6672FB;
border: 1px solid #6672FB!important;
}
}
//重置按钮
.resetBtn{
width: 74px;
height: 38px;
background: #ffffff;
border: 1px solid #6672FB;
border-radius: 4px;
font-size: 16px;
font-family: Microsoft YaHei, Microsoft YaHei-400;
font-weight: 400;
color: #6672FB;
&:hover {
opacity: 0.85;
background: #ffffff;
border: 1px solid #6672FB!important;
}
&:focus {
opacity: 0.85;
background: #ffffff;
border: 1px solid #6672FB!important;
}
}
}
.table-content{
padding: 0 54px 0 53px;
}
.el-table th .cell{
justify-content: center;
}
.el-table td .cell{
display: flex;
justify-content: center;
align-items: center;
}
.el-table th {
border-right: none;
background-color: #F6F7FD;
}
.el-table th .cell{
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 16px;
color: #222222;
}
.el-table td{
border-bottom: 1px solid #F3F3F3;
border-right: none;
}
.el-table td .cell{
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 16px;
color: #222222;
}
.el-pagination{
text-align: center!important;
}
.el-pagination.is-background .el-pager li:not(.disabled).active{
background-color: #6672FB;
}
......@@ -16,7 +16,7 @@
//position: absolute;
top: 0;
width: 100%;
z-index: 1001;
z-index: 1;
}
.nav-container-two{
width: 100%;
......
......@@ -3,26 +3,48 @@
display: flex;
justify-content: center;
align-items: center;
height: 100%;
background-image: url("../../assets/image/login-background.jpg");
width: 1920px;
height: 923px;
background-image: url("../../assets/image/login-bg.png");
background-size: cover;
.el-checkbox__input.is-checked .el-checkbox__inner{
width: 14px;
height: 14px;
background: #214e90;
border-radius: 2px;
border-color: #214e90;
}
.el-checkbox .el-checkbox__inner:hover{
border: 1px solid #214e90!important;
}
.el-checkbox__input.is-focus .el-checkbox__inner{
border: 1px solid #214e90!important;
}
.el-checkbox__input.is-checked+.el-checkbox__label{
font-size: 14px;
font-family: Microsoft YaHei, Microsoft YaHei-400;
font-weight: 400;
color: #333333;
}
.login_logoRow{
padding-top: 10px;
padding-bottom: 10px;
padding-top: 50px;
padding-bottom: 39px;
display: flex;
justify-content: center;
width: 100%;
.login_form_logo{
width: 64px;
height: 64px;
background-image: url("../../assets/image/login_logo.png");
background-repeat: no-repeat;
background-size: 100%;
width: 319px;
height: 39px;
background-image: url("../../assets/image/loginLogo.png");
}
}
.loginTitleRow{
width: 100%;
display: flex;
justify-content: center;
margin-top: 20px;
margin-bottom: 40px;
.title {
font-size: 24px;
font-family: Microsoft YaHei, Microsoft YaHei-700;
......@@ -46,7 +68,7 @@
font-size: 16px;
}
.el-form-item {
margin-bottom: 4vh;
margin-bottom: 30px;
}
}
......@@ -54,31 +76,25 @@
position: absolute;
backdrop-filter: blur(4px);
display: inline;
flex-direction: column;
align-items: flex-end;
border-radius: 6px;
background: #ffffff no-repeat;
background-size: 59%;
background-position-y: 57px;
width: 650px;
height: 550px;
padding: 25px 25px 5px 25px;
width: 499px;
height: 560px;
background-image: url("../../assets/image/loginForm-bg.png");
border-radius: 20px;
background-repeat: no-repeat;
background-size: 100%;
.login-form-content{
position: absolute;
top: 40%;
right: 28%;
width: 45%;
display: flex;
flex-direction: column;
align-items: center;
.el-form-item{
width: 343px;
height: 44px;
.el-input__inner{
border-radius: 4px;
}
}
.loginCode_formItem{
width: 80%;
width: 343px;
display: flex;
justify-content: space-between;
//align-items: center;
......@@ -86,22 +102,30 @@
.el-form-item{
width: 400px;
}
.el-form-item__content{
width: 210px!important;
}
}
.blue-btn{
border: none;
width: 343px;
height: 40px;
height: 44px;
background: #214e90;
border-radius: 4px;
font-size: 18px;
font-size: 16px;
font-family: Microsoft YaHei, Microsoft YaHei-700;
font-weight: 700;
color: #ffffff;
}
}
.el-input {
height: 38px;
height: 44px;
input {
height: 38px;
height: 44px;
}
}
.input-icon {
height: 39px;
height: 44px;
width: 14px;
margin-left: 2px;
}
......@@ -113,10 +137,10 @@
}
.login-code {
//width: 33%;
height: 38px;
height: 44px;
//float: right;
img {
height: 38px;
height: 44px;
cursor: pointer;
vertical-align: middle;
}
......@@ -138,7 +162,10 @@
width: 343px;
justify-content: space-between;
.rem-code span{
color: $font-dark;
font-size: 14px!important;
font-family: Microsoft YaHei, Microsoft YaHei-400;
font-weight: 400!important;
color: #333333!important;
}
.el-link span{
color: $color-theme;
......
......@@ -11,13 +11,63 @@
.sidebar-logo-container {
position: relative;
width: 100%;
height: 50px;
height: 150px!important;
line-height: 50px;
background: #FFFFFF;
background: #214E90;
padding-left: 11px;
overflow: hidden;
.sidebar-logoTitle{
display: flex;
//.sidebar-logoTitle{
// display: flex;
//}
.sidebar-logoRow{
padding-top: 28px!important;
padding-bottom: 2px!important;
text-align: center!important;
}
& .sidebar-logo-link {
height: 100%;
width: 100%;
& .sidebar-logo {
width: 85px;
height: 39px;
vertical-align: middle;
margin-right: 12px;
}
& .sidebar-title {
text-align: center!important;
color: #333333!important;
margin: 0;
font-weight: 600;
line-height: 50px;
font-size: 16px;
font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
vertical-align: middle;
}
}
&.collapse {
.sidebar-logo {
margin-right: 0px;
}
}
}
.sidebar-logo-containerCollapse {
position: relative;
width: 100%;
height: 70px!important;
line-height: 70px;
background: #214E90;
padding-left: 11px;
overflow: hidden;
//.sidebar-logoTitle{
// display: flex;
//}
.sidebar-logoRow{
padding-top: 28px!important;
padding-bottom: 2px!important;
text-align: center!important;
}
& .sidebar-logo-link {
height: 100%;
......@@ -31,13 +81,13 @@
}
& .sidebar-title {
font-family: Alibaba PuHuiTi;
font-weight: bold;
font-size: 18px;
color: #222222;
display: inline-block;
text-align: center!important;
color: #333333!important;
margin: 0;
font-weight: 600;
line-height: 50px;
font-size: 16px;
font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
vertical-align: middle;
}
}
......
@import '../../styles/variables';
@import './variables';
#app {
.main-container {
padding-top: 6.4vh;
......@@ -11,7 +11,7 @@
.sidebar-container {
transition: width 0.28s;
width: $sideBarWidth !important;
background-color: #FFFFFF;
background-color: $menuBg;
height: 100%;
position: fixed;
font-size: 0px;
......@@ -211,7 +211,7 @@
}
.el-submenu__icon-arrow {
color: #222222 !important;
color: #ffffff !important;
}
.is-active.submenu-title-noDropdown {
......@@ -228,51 +228,47 @@
// hover样式
.el-submenu__title:hover {
color: #6672FB!important;
color: #214E90 !important;
.el-submenu__icon-arrow {
color: #6672FB!important;
color: #214E90 !important;
}
}
.nest-menu .el-submenu > .el-submenu__title:hover {
background-color: #fff !important;
color: #6672FB!important;
color: #214E90 !important;
}
.is-active > .el-submenu__title:hover {
color: #6672FB!important;
color: #214E90 !important;
}
.el-submenu .el-menu-item:hover {
color: #6672FB!important;
color: #214E90 !important;
}
.el-menu-item.submenu-title-noDropdown:hover {
color: #6672FB!important;
color: #214E90 !important;
}
.el-menu--vertical .el-menu-item:hover {
color: #6672FB!important;
}
.el-submenu__title{
font-size: 18px!important;
}
.el-menu-item{
font-size: 18px!important;
color: #214E90 !important;
}
.el-submenu.is-opened {
background-color: #FFFFFF !important;
> .el-submenu__title {
background-color: #fff !important;
color: #6672FB!important;
color: #214E90 !important;
.el-submenu__icon-arrow {
color: #6672FB!important;
color: #214E90 !important;
}
}
.el-menu {
.el-menu-item {
background-color: #fff !important;
color: #000000;
color: #000000 !important;
&.is-active {
color: #6672FB !important;
color: #214E90 !important;
}
}
}
......@@ -281,8 +277,9 @@
.el-submenu__title {
background-color: #fff !important;
color: #000000 !important;
.el-submenu__icon-arrow {
color: #6672FB!important;
color: #214E90 !important;
}
}
}
......
......@@ -27,7 +27,7 @@
}
&.active {
background-color: #fff;
color: #6672FB;
color: $color-theme;
border-color: transparent;
//&::before {
// content: '';
......
......@@ -9,7 +9,7 @@ $color-theme: #f4ac10;
margin-left: 15px;
font-size: 16px;
font-weight: bold;
color: #46BCF3;
color: #214E90;
}
.paddingFixed {
.el-dialog__body {
......
// 主题色
$color-theme: #46BCF3;
$color-theme: #214E90;
$color-red: #F57b7b;
$color-purple: #ff33a9;
$color-orange: #f4ac10;
......@@ -36,7 +36,7 @@ $color-green-light: #80e4e9;
// 线框、线段、列表 虚线分割线、表单不可修改
$color-border: #e5e5e5;
// 查询 新增 申请 tab标签 分页列表中除修改之外的其他按钮
$blue-prime: #46BCF3;
$blue-prime: #214E90;
$blue-prime-hover: #6bc9f5;
$blue-prime-active: #0098de;
// 导出 导入 修改
......@@ -80,14 +80,14 @@ $bg-page-light: #f9f9f9;
$bg-menu-hover: #f2f6fc;
// sidebar
$menuText:#222222;
$menuActiveText:#6672FB;
$subMenuActiveText:#6672FB; //https://github.com/ElemeFE/element/issues/12951
$menuText:#fff;
$menuActiveText:#214E90;
$subMenuActiveText:#f4f4f5; //https://github.com/ElemeFE/element/issues/12951
$menuBg:#FFFFFF;
$menuBg:#214E90;
$menuHover:#fff;
$subMenuBg:#46BCF2;
$subMenuBg:#214E90;
$subMenuHover:#fff;
$sideBarWidth: 254px;
......
......@@ -11,6 +11,8 @@
justify-content: center;
width: 100%;
.login_form_logo{
background-repeat: no-repeat;
background-size: 100%;
width: 64px;
height: 64px;
background-image: url("../../assets/themeBImage/login_logo.png");
......@@ -53,6 +55,8 @@
background: #ffffff no-repeat;
background-size: 59%;
background-position-y: 57px;
background-repeat: no-repeat;
background-size: 100%;
.login-form-content{
padding-top: 35px;
width: 100%;
......
......@@ -36,7 +36,7 @@ $color-green-light: #80e4e9;
// 线框、线段、列表 虚线分割线、表单不可修改
$color-border: #e5e5e5;
// 查询 新增 申请 tab标签 分页列表中除修改之外的其他按钮
$blue-prime: #46BCF3;
$blue-prime: #214E90;
$blue-prime-hover: #6bc9f5;
$blue-prime-active: #0098de;
// 导出 导入 修改
......@@ -81,13 +81,13 @@ $bg-menu-hover: #f2f6fc;
// sidebar
$menuText:#333333;
$menuActiveText:#46BCF2;
$menuActiveText:#214E90;
$subMenuActiveText:#f4f4f5; //https://github.com/ElemeFE/element/issues/12951
$menuBg:#FFFFFF;
$menuHover:#fff;
$subMenuBg:#46BCF2;
$subMenuBg:#214E90;
$subMenuHover:#fff;
$sideBarWidth: 219px;
......
......@@ -12,6 +12,8 @@
justify-content: center;
width: 100%;
.login_form_logo{
background-repeat: no-repeat;
background-size: 100%;
width: 64px;
height: 64px;
background-image: url("../../assets/themeCImage/login_logo.png");
......
......@@ -36,7 +36,7 @@ $color-green-light: #80e4e9;
// 线框、线段、列表 虚线分割线、表单不可修改
$color-border: #e5e5e5;
// 查询 新增 申请 tab标签 分页列表中除修改之外的其他按钮
$blue-prime: #46BCF3;
$blue-prime: #214E90;
$blue-prime-hover: #6bc9f5;
$blue-prime-active: #0098de;
// 导出 导入 修改
......@@ -87,7 +87,7 @@ $subMenuActiveText:#f4f4f5; //https://github.com/ElemeFE/element/issues/12951
$menuBg:#FFFFFF;
$menuHover:#fff;
$subMenuBg:#46BCF2;
$subMenuBg:#214E90;
$subMenuHover:#fff;
$sideBarWidth: 219px;
......
......@@ -12,6 +12,8 @@
justify-content: center;
width: 100%;
.login_form_logo{
background-repeat: no-repeat;
background-size: 100%;
width: 64px;
height: 64px;
background-image: url("../../assets/themeDImage/login_logo.png");
......
......@@ -36,7 +36,7 @@ $color-green-light: #80e4e9;
// 线框、线段、列表 虚线分割线、表单不可修改
$color-border: #e5e5e5;
// 查询 新增 申请 tab标签 分页列表中除修改之外的其他按钮
$blue-prime: #46BCF3;
$blue-prime: #214E90;
$blue-prime-hover: #6bc9f5;
$blue-prime-active: #0098de;
// 导出 导入 修改
......@@ -87,7 +87,7 @@ $subMenuActiveText:#f4f4f5; //https://github.com/ElemeFE/element/issues/12951
$menuBg:#F6F6F6;
$menuHover:#fff;
$subMenuBg:#46BCF2;
$subMenuBg:#214E90;
$subMenuHover:#fff;
$sideBarWidth: 219px;
......
// 主题色
$color-theme: #46BCF3;
$color-theme: #214E90;
$color-red: #F57b7b;
$color-purple: #ff33a9;
$color-orange: #f4ac10;
......@@ -36,7 +36,7 @@ $color-green-light: #80e4e9;
// 线框、线段、列表 虚线分割线、表单不可修改
$color-border: #e5e5e5;
// 查询 新增 申请 tab标签 分页列表中除修改之外的其他按钮
$blue-prime: #46BCF3;
$blue-prime: #214E90;
$blue-prime-hover: #6bc9f5;
$blue-prime-active: #0098de;
// 导出 导入 修改
......@@ -81,13 +81,13 @@ $bg-menu-hover: #f2f6fc;
// sidebar
$menuText:#fff;
$menuActiveText:#46BCF2;
$menuActiveText:#214E90;
$subMenuActiveText:#f4f4f5; //https://github.com/ElemeFE/element/issues/12951
$menuBg:#46BCF2;
$menuBg:#214E90;
$menuHover:#fff;
$subMenuBg:#46BCF2;
$subMenuBg:#214E90;
$subMenuHover:#fff;
$sideBarWidth: 254px;
......
import Cookies from 'js-cookie'
const TokenKey = 'Admin-Token'
const TokenKey = 'Admin-TokenWeb'
export function getToken() {
return Cookies.get(TokenKey)
......
const TokenKey = 'token'
const TokenKey = 'tokenWeb'
const emailKey = 'email'
export function getToken() {
......
......@@ -135,6 +135,20 @@ export function praseStrEmpty(str) {
}
return str
}
export function deepClone(source) {
if (!source && typeof source !== 'object') {
throw new Error('error arguments', 'deepClone')
}
const targetObj = source.constructor === Array ? [] : {}
Object.keys(source).forEach(keys => {
if (source[keys] && typeof source[keys] === 'object') {
targetObj[keys] = deepClone(source[keys])
} else {
targetObj[keys] = source[keys]
}
})
return targetObj
}
/**
* 构造树型结构数据
......
......@@ -49,3 +49,22 @@ export function passwordDecrypt(txt) {
return encryptor.decrypt(txt)
}
const urlPrivateKey = 'MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCstNcEy/A6v3BddApjjCN8VESMSh95q3TeFd//1E+36CA1WMIshzP1sL0L9wTHfVjUK/Ii6agsVXkstMMC1+HqavoSz42krvrgadfzEJIepOK4Z2E25YTcyIZ1dt7HgKxz+xhXZWRvbEYdLZrVMVJtjltagFB80RjKStv85U94Z6DMXBF8bZA8DMYGv7+p2Sszl3BUk79X2XLBoF+h2d9Jn0Rl0xKfxPS1k7tSfEVGk0VJArEUZJNAzrr/zCMhH+CN8LISQ/8sI1VYHTx2E85/KhcnewtHjb2P6h5q0fnZ5ELgsf1Bxj/dl2GxW+ybeW1Ir+tyNJWbMz/N7XTZUaLHAgMBAAECggEALCFBV/5scfZ81cRS60DhyGEX6uj9xe8ju6PHSu2LOSjdIgR+CTa69iqlA6uo0viafAyGoJkn2bw1bFD8C3vyRB31rFzQiqYTgMhK39b6H05uiEQSOR7Ipkmu4dDv9/ZPGousmphT44y9FbOTfqpNr6TSfvuOlXYwaXBbafGGLvOQRKqeP0mVq6xmiQOKg9yBAwN1dcoGx77OsvMEV2o0JR0+/0BMd3qRZQLAYH03zv3LE8xkI0zta9Gmmbh44YPwWGW/mMY24Iae1/pKnZxWTGty+X/pLGqHQdtxz6qQr/pCSA9lESNkkocHzVI9D6SxX5+bHWc0AX17EHomB2HawQKBgQDZYIAagH0tRR1XtIsexv1OpAOoHbXnpNmMPkAurpGlIzBlZlQYevPg0gcs7GBA90ZAyt68bkq4ABZ1CYPMEMazcMa2TOMaf9yw5bxnD8Ek2KWOnR4juQqKOyL8/2ddLPBV0J2Boo2D9MFSucyHB3lvRZF/DlYuLbj+GNdt9IZjFwKBgQDLZHosddeLo9Ux4mTChveMdo9nFzrXZZ83mbMPETTJ3EygQGqWmMUUQx9iWkiHWUYyyel/jafdIxOnaZfTEvcYcMDOsj3kDNZ5a1v+ZswqwT5fzQBv4huO3X8CrN7hnNsv9HIVrbT2ZlHhSI0g4Q0nfzSjxo7rYF50vJ6Qk+VL0QKBgQCtGadpc0A7OHpxSRgv3g4A/aLb0Sz11dRXVYsOoXzhn+/+D0qQY/io4xdLsr/DfCW5mtNcAggGFivL71PAwOs6IWhb60Y95+v6AjfRaj5H9S2BL6S8lbHK+eSWy1uoWwzXiVSj0qoWlmUMV2CDdnRBI4kFQIloJIjX7zg+GyaY6QKBgFCyUs7lCln67JFYM4YCqqDuQUMzskLXrO4QazylJP6aC0ThieiqQDcj0oXhMDmTMAjil2PmPh281wVrHbO/KI5n3fekPG4IseeGsv8ipgqolSjJW00ItspeExBqqht1cnl6UPFM9Cl2uzHY6TWMVP3AuI/qLbYxjAhg9cCDDUyhAoGBAI9h0SJjnSivVWl9OCQ8HT17Erl5lPpoI9GA+BjnuHnpWhKu4mxjPKzDMUxF1jmENLpvmGzK6KoeiRSLik2DOosQ1ip4U8N1IlSqJDkwzAVAHpDErwIiIox4bMpnD3vt/MgE1OIkK4PvjYyKfxngygof3gaHaEULTJFFIZVV1KM7'
const urlPublicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArLTXBMvwOr9wX\n' +
'XQKY4wjfFREjEofeat03hXf/9RPt+ggNVjCLIcz9bC9C/cEx31Y1CvyIumoLFV5LLTDAtfh6mr6Es+NpK764GnX8x\n' +
'CSHqTiuGdhNuWE3MiGdXbex4Csc/sYV2Vkb2xGHS2a1TFSbY5bWoBQfNEYykrb/OVPeGegzFwRfG2QPAzGBr+/qdk\n' +
'rM5dwVJO/V9lywaBfodnfSZ9EZdMSn8T0tZO7UnxFRpNFSQKxFGSTQM66/8wjIR/gjfCyEkP/LCNVWB08dhPOfyoX\n' +
'J3sLR429j+oeatH52eRC4LH9QcY/3ZdhsVvsm3ltSK/rcjSVmzM/ze102VGixwIDAQAB'
// 视频,pdf加密
export function urlEncrypt(txt) {
const encryptor = new JSEncrypt()
encryptor.setPublicKey(urlPublicKey) // 设置公钥
return encryptor.encrypt(txt) // 对需要加密的数据进行加密
}
// 视频,pdf解密
export function urlDecrypt(txt) {
const encryptor = new JSEncrypt()
encryptor.setPrivateKey(urlPrivateKey)
return encryptor.decrypt(txt)
}
......@@ -2,15 +2,19 @@
// 基准大小
const baseSize = 16
// 设置 rem 函数
function setRem () {
// 当前页面屏幕分辨率相对于 1920宽的缩放比例,可根据自己需要修改
function setRem() {
// 当前页面屏幕分辨率相对于 的缩1920宽放比例,可根据自己需要修改
const scale = document.documentElement.clientWidth / 1920
// 设置页面根节点字体大小(“Math.min(scale, 2)” 指最高放大比例为2,可根据实际业务需求调整)
document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
// document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
// 设置页面根节点字体大小, 字体大小最小为12
const fontSize = (baseSize * Math.min(scale, 2)) > 16 ? (baseSize * Math.min(scale, 2)) : 16
document.documentElement.style.fontSize = fontSize + 'px'
}
// 初始化
setRem()
// 改变窗口大小时重新设置 rem
window.onresize = function () {
window.onresize = function() {
setRem()
}
<script setup>
</script>
<template>
<div>classReport</div>
</template>
<style scoped lang="scss">
</style>
<script setup>
</script>
<template>
<div>测评列表 list</div>
</template>
<style scoped lang="scss">
</style>
<script setup>
</script>
<template>
<div>评估组管理 team</div>
</template>
<style scoped lang="scss">
</style>
<script setup>
</script>
<template>
<div>index</div>
</template>
<style scoped lang="scss">
</style>
<template>
<div class="login">
<!-- v-loading="vLoading"-->
<el-form ref="loginForm" :model="loginForm" :rules="rules" class="login-form">
<el-form ref="loginForm" v-loading="vLoading" :model="loginForm" :rules="rules" class="login-form">
<!-- <img class="fy-logo" src="../../assets/image/denglu_logo.png">-->
<div class="login_logoRow">
<div class="login_form_logo" />
</div>
<div class="loginTitleRow">
<div class="title">师能力测评系统</div>
<div class="title">学资源云后台管理</div>
</div>
<div class="login-form-content">
<el-form-item prop="username">
<el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">
<el-input v-model="loginForm.username" auto-complete="off" placeholder="账号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="loginForm.password"
type="password"
auto-complete="off"
type="password"
placeholder="密码"
@keypress.enter.native="handleLogin"
>
......@@ -87,10 +86,9 @@
:loading="loading"
size="medium"
type="primary"
:disabled="!verify"
@click.native.prevent="handleLogin"
>
<!-- :disabled="!verify"-->
<span v-if="!loading">{{ '登 录' }}</span>
<span v-else>登 录 中...</span>
</el-button>
......@@ -128,6 +126,7 @@ export default {
codeUrl: '',
cookiePassword: '',
loginForm: {
type: '1',
username: '',
password: '',
rememberMe: false,
......@@ -195,11 +194,13 @@ export default {
})
},
getCookie() {
const username = Cookies.get('username')
const password = Cookies.get('password')
const rememberMe = Cookies.get('rememberMe')
const username = Cookies.get('usernameWeb')
const password = Cookies.get('passwordWeb')
const type = Cookies.get('typeWeb')
const rememberMe = Cookies.get('rememberMeWeb')
this.loginForm = {
username: username === undefined ? this.loginForm.username : username,
type: type === undefined ? this.loginForm.type : type,
password: password === undefined ? this.loginForm.password : passwordDecrypt(password),
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
}
......@@ -230,13 +231,15 @@ export default {
},
rememberMe() {
if (this.loginForm.rememberMe) {
Cookies.set('username', this.loginForm.username, { expires: 30 })
Cookies.set('password', passwordEncrypt(this.loginForm.password), { expires: 30 })
Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 })
Cookies.set('usernameWeb', this.loginForm.username, { expires: 30 })
Cookies.set('typeWeb', this.loginForm.type, { expires: 30 })
Cookies.set('passwordWeb', passwordEncrypt(this.loginForm.password), { expires: 30 })
Cookies.set('rememberMeWeb', this.loginForm.rememberMe, { expires: 30 })
} else {
Cookies.remove('username')
Cookies.remove('password')
Cookies.remove('rememberMe')
Cookies.remove('usernameWeb')
Cookies.remove('typeWeb')
Cookies.remove('passwordWeb')
Cookies.remove('rememberMeWeb')
}
},
successLogin() {
......@@ -246,9 +249,6 @@ export default {
// this.$router.push({ path: `http://main.court.com${this.redirect || "/"}` });
// this.$router.push('/welcome')
this.$router.push('/controlPlatform/control')
setTimeout(() => {
this.loading = false
}, 1000)
}).catch(() => {
this.loading = false
this.verify = false
......
......@@ -14,7 +14,7 @@
<el-input
v-model="pwdList.pass"
type="password"
placeholder="8~16位,由字母和数字混合组成"
placeholder="6~20位,由字母和数字混合组成"
/>
</el-form-item>
<el-form-item
......@@ -104,11 +104,11 @@ export default {
if (value === '') {
callback(new Error('请输入密码'))
} else {
const pw_pattern = '^(?![A-Za-z]+$)(?![a-z\\W]+$)(?![A-Z\\W]+$)(?![0-9\\W]+$)[a-zA-Z0-9\\W]{8,16}$'
const pw_pattern = '^(?![A-Za-z]+$)(?![a-z\\W]+$)(?![A-Z\\W]+$)(?![0-9\\W]+$)[a-zA-Z0-9\\W]{6,20}$'
if (value.match(pw_pattern)) {
callback()
} else {
callback(new Error('8~16位,由字母和数字混合组成'))
callback(new Error('6~20位,由字母和数字混合组成'))
}
}
},
......
......@@ -2,9 +2,9 @@
<div class="loginInfo-manage">
<div class="search" style="border-bottom: 14px solid #f4f4f4">
<el-form v-show="showSearch" ref="queryForm" style="padding: 0 0 0 10px" :model="queryParams" :inline="true" label-width="auto">
<el-form-item label="用户名称" prop="userName">
<el-form-item label="用户名称:" prop="userName">
<el-input
v-model="queryParams.username"
v-model.trim="queryParams.username"
placeholder="请输入用户名称"
clearable
:maxlength="30"
......@@ -13,7 +13,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="登录时间" prop="loginTime">
<el-form-item label="登录时间:" prop="loginTime">
<el-date-picker
v-model="queryParams.loginTime"
type="month"
......
......@@ -2,9 +2,9 @@
<div class="operlog-manage">
<div class="search" style="border-bottom: 14px solid #f4f4f4">
<el-form ref="queryForm" style="padding: 0 0 0 10px" :model="queryParams" :inline="true" label-width="auto">
<el-form-item label="系统模块" prop="title">
<el-form-item label="系统模块:" prop="title">
<el-input
v-model="queryParams.title"
v-model.trim="queryParams.title"
placeholder="请输入系统模块"
clearable
style="width: 170px"
......@@ -13,9 +13,9 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="用户名称" prop="operName">
<el-form-item label="用户名称:" prop="operName">
<el-input
v-model="queryParams.operName"
v-model.trim="queryParams.operName"
style="width: 170px"
placeholder="请输入用户名称"
clearable
......@@ -24,7 +24,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="操作月份" prop="operTime">
<el-form-item label="操作月份:" prop="operTime">
<el-date-picker
v-model="queryParams.operTime"
type="month"
......
......@@ -10,7 +10,7 @@
>
<el-form-item
prop="oldPass"
label="旧密码"
label="旧密码:"
>
<el-input
v-model="pwdList.oldPass"
......@@ -20,17 +20,17 @@
</el-form-item>
<el-form-item
prop="pass"
label="新密码"
label="新密码:"
>
<el-input
v-model="pwdList.pass"
type="password"
placeholder="8~16位,由字母和数字混合组成"
placeholder="6~20位,由字母和数字混合组成"
/>
</el-form-item>
<el-form-item
prop="checkPass"
label="确认密码"
label="确认密码:"
>
<el-input
v-model="pwdList.checkPass"
......@@ -100,11 +100,11 @@ export default {
if (value === '') {
callback(new Error('请输入密码'))
} else {
const pw_pattern = '^(?![A-Za-z]+$)(?![a-z\\W]+$)(?![A-Z\\W]+$)(?![0-9\\W]+$)[a-zA-Z0-9\\W]{8,16}$'
const pw_pattern = '^(?![A-Za-z]+$)(?![a-z\\W]+$)(?![A-Z\\W]+$)(?![0-9\\W]+$)[a-zA-Z0-9\\W]{6,20}$'
if (value.match(pw_pattern)) {
callback()
} else {
callback(new Error('8~16位,由字母和数字混合组成'))
callback(new Error('6~20位,由字母和数字混合组成'))
}
}
},
......
......@@ -2,8 +2,8 @@
<div class="dictData-manage">
<div class="search" style="border-bottom: 14px solid #f4f4f4">
<el-form v-show="showSearch" ref="queryForm" style="padding: 0 0 0 10px" :model="queryParams" :inline="true">
<el-form-item label="字典名称" prop="dictType">
<el-select disabled v-model="queryParams.dictType" placeholder="请选择字典名称" clearable size="small">
<el-form-item label="字典名称:" prop="dictType">
<el-select v-model="queryParams.dictType" disabled placeholder="请选择字典名称" clearable size="small">
<el-option
v-for="item in typeOptions"
:key="item.businessId"
......@@ -12,9 +12,9 @@
/>
</el-select>
</el-form-item>
<el-form-item label="字典标签" prop="dictLabel">
<el-form-item label="字典标签:" prop="dictLabel">
<el-input
v-model="queryParams.dictLabel"
v-model.trim="queryParams.dictLabel"
placeholder="请输入字典标签"
clearable
:maxlength="30"
......@@ -22,7 +22,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="flag">
<el-form-item label="状态:" prop="flag">
<el-select v-model="queryParams.flag" placeholder="数据状态" clearable size="small">
<el-option
v-for="dict in statusOptions"
......@@ -45,15 +45,15 @@
size="small"
@click="handleImport"
>导入</el-button>
<el-button
v-has-permi="['sys:dict:export']"
class="exportBtn"
type="success"
icon="el-icon-download"
size="small"
@click="handleExport"
>导出
</el-button>
<!-- <el-button-->
<!-- v-has-permi="['sys:dict:export']"-->
<!-- class="exportBtn"-->
<!-- type="success"-->
<!-- icon="el-icon-download"-->
<!-- size="small"-->
<!-- @click="handleExport"-->
<!-- >导出-->
<!-- </el-button>-->
<right-toolbar :show-search.sync="showSearch" @queryTable="getList" />
</div>
</el-form>
......@@ -124,19 +124,19 @@
<!-- 添加或修改参数配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="字典类型">
<el-form-item label="字典类型:">
<el-input v-model.trim="form.dictType" :disabled="true" show-word-limit maxlength="30" placeholder="请输入字典类型" />
</el-form-item>
<el-form-item label="参数标签" prop="dictLabel">
<el-form-item label="参数标签:" prop="dictLabel">
<el-input v-model.trim="form.dictLabel" show-word-limit maxlength="30" placeholder="请输入参数标签" />
</el-form-item>
<el-form-item label="参数键值" prop="dictValue">
<el-form-item label="参数键值:" prop="dictValue">
<el-input v-model.trim="form.dictValue" show-word-limit maxlength="300" placeholder="请输入参数键值" />
</el-form-item>
<el-form-item label="参数排序" prop="dictSort">
<el-form-item label="参数排序:" prop="dictSort">
<el-input-number v-model="form.dictSort" style="width: 100%" controls-position="right" :min="0" />
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-form-item label="备注:" prop="remarks">
<el-input v-model.trim="form.remarks" type="textarea" show-word-limit maxlength="200" placeholder="请输入内容" />
</el-form-item>
</el-form>
......@@ -245,11 +245,11 @@ export default {
statusOptions: [
{
dictLabel: '正常',
dictValue: '0'
dictValue: '1'
},
{
dictLabel: '停用',
dictValue: '1'
dictValue: '0'
}
],
// 类型数据字典
......@@ -298,9 +298,9 @@ export default {
const dictId = this.$route.params && this.$route.params.dictId
this.getType(dictId)
this.getTypeList()
this.getDict(dictCons['NORMAL_DISABLE']).then(response => {
/* this.getDict(dictCons['NORMAL_DISABLE']).then(response => {
this.statusOptions = response.data
})
})*/
},
methods: {
// 状态
......
......@@ -2,9 +2,9 @@
<div class="dict-manage">
<div class="search" style="border-bottom: 14px solid #f4f4f4">
<el-form ref="queryForm" style="padding: 0 0 0 10px" :model="queryParams" :inline="true" label-width="auto">
<el-form-item label="字典名称" prop="dictName">
<el-form-item label="字典名称:" prop="dictName">
<el-input
v-model="queryParams.dictName"
v-model.trim="queryParams.dictName"
placeholder="请输入字典名称"
clearable
:maxlength="30"
......@@ -13,7 +13,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="字典类型" prop="dictType">
<el-form-item label="字典类型:" prop="dictType">
<el-input
v-model.trim="queryParams.dictType"
placeholder="请输入字典类型"
......@@ -24,23 +24,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="flag">
<el-select
v-model="queryParams.flag"
placeholder="字典状态"
clearable
size="small"
style="width: 200px"
>
<el-option
v-for="dict in statusOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-form-item label="创建时间:">
<el-date-picker
v-model="dateRange"
size="small"
......@@ -80,14 +64,14 @@
@click="handleAdd"
>{{ commonField.addName }}</el-button>
<!-- //导出-->
<el-button
v-hasPermi="exportHaspermi"
:class="commonField.exportClass"
:type="commonField.typeSuccess"
:icon="commonField.exportIcon"
:size="commonField.smallSize"
@click="handleExport"
>{{ commonField.exportName }}</el-button>
<!-- <el-button-->
<!-- v-hasPermi="exportHaspermi"-->
<!-- :class="commonField.exportClass"-->
<!-- :type="commonField.typeSuccess"-->
<!-- :icon="commonField.exportIcon"-->
<!-- :size="commonField.smallSize"-->
<!-- @click="handleExport"-->
<!-- >{{ commonField.exportName }}</el-button>-->
</div>
</el-form>
......@@ -166,15 +150,15 @@
@pagination="getList"
/>
<!-- 添加或修改参数配置对话框 -->
<el-dialog title="字典信息" :visible.sync="open" width="500px" append-to-body @close="reset">
<el-dialog title="字典信息:" :visible.sync="open" width="500px" append-to-body @close="reset">
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="字典名称" prop="dictName">
<el-form-item label="字典名称:" prop="dictName">
<el-input v-model.trim="form.dictName" :maxlength="30" placeholder="请输入字典名称" />
</el-form-item>
<el-form-item label="字典类型" prop="dictType">
<el-form-item label="字典类型:" prop="dictType">
<el-input v-model.trim="form.dictType" :maxlength="30" placeholder="请输入字典类型" />
</el-form-item>
<el-form-item label="父字典名称">
<el-form-item label="父字典名称:">
<el-select v-model="form.parentId" style="width: 100%" clearable placeholder="请选择父字典类型" @clear="setRules" @change="getOptions">
<el-option
v-for="item in options"
......@@ -198,7 +182,7 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-form-item label="备注:" prop="remarks">
<el-input v-model.trim="form.remarks" maxlength="200" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
......
<script setup>
</script>
<template>
<div>日志</div>
</template>
<style scoped lang="scss">
</style>
<template>
<div id="nbprint" class="menu-manage">
<div class="menu-manage">
<div class="search" style="border-bottom: 14px solid #f4f4f4">
<el-form style="padding: 0 0 0 10px" :inline="true">
<el-form-item label="菜单名称">
<el-form-item label="菜单名称:">
<el-input
v-model="queryParams.menuName"
v-model.trim="queryParams.menuName"
placeholder="请输入菜单名称"
clearable
:maxlength="30"
......@@ -30,10 +30,6 @@
>{{ commonField.resetName }}</el-button>
</el-form-item>
<div style="float: right">
<el-button
:class="commonField.addClass"
:type="commonField.typePrimary"
v-print="printOption">打印</el-button>
<el-form-item>
<!-- //新增按钮-->
<el-button
......@@ -136,7 +132,7 @@
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-row>
<el-col :span="24">
<el-form-item label="上级菜单" prop="parentId">
<el-form-item label="上级菜单:" prop="parentId">
<treeSelect
v-model="form.parentId"
......@@ -145,13 +141,13 @@
:options="menuOptions"
:normalizer="normalizer"
:show-count="true"
placeholder="选择上级菜单"
placeholder="选择上级菜单:"
style="width: 95%"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="菜单类型" prop="menuType">
<el-form-item label="菜单类型:" prop="menuType">
<el-radio-group v-model="form.menuType">
<el-radio label="M">目录</el-radio>
<el-radio label="C">菜单</el-radio>
......@@ -160,7 +156,7 @@
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item v-if="form.menuType !== 'F'" label="菜单图标">
<el-form-item v-if="form.menuType !== 'F'" label="菜单图标:">
<el-popover
placement="bottom-start"
width="460"
......@@ -182,22 +178,22 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="菜单名称" prop="menuName">
<el-form-item label="菜单名称:" prop="menuName">
<el-input v-model.trim="form.menuName" show-word-limit maxlength="20" placeholder="请输入菜单名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="菜单排序" prop="orderNum">
<el-form-item label="菜单排序:" prop="orderNum">
<el-input-number v-model="form.orderNum" style="width: 88%" controls-position="right" :min="0" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item v-if="form.menuType !== 'M'" label="权限标识">
<el-form-item v-if="form.menuType !== 'M'" label="权限标识:">
<el-input v-model.trim="form.perms" style="width: 95%" show-word-limit maxlength="50" placeholder="请权限标识" />
</el-form-item>
</el-col>
<el-col :span="12" style="margin-right: 1px">
<el-form-item v-if="form.menuType !== 'F'" label="是否外链">
<el-form-item v-if="form.menuType !== 'F'" label="是否外链:">
<el-radio-group v-model="form.isFrame">
<el-radio label="0"></el-radio>
<el-radio label="1"></el-radio>
......@@ -205,7 +201,7 @@
</el-form-item>
</el-col>
<el-col :span="12" style="margin-right: -1px">
<el-form-item v-if="form.menuType !== 'F'" label="是工作流">
<el-form-item v-if="form.menuType !== 'F'" label="是工作流:">
<el-radio-group v-model="form.isProcess">
<el-radio label="0"></el-radio>
<el-radio label="1"></el-radio>
......@@ -213,7 +209,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item v-if="form.menuType !== 'F'" label="显示状态">
<el-form-item v-if="form.menuType !== 'F'" label="显示状态:">
<el-radio-group v-model="form.visible">
<el-radio label="1">显示</el-radio>
<el-radio label="0">隐藏</el-radio>
......@@ -221,7 +217,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item v-if="form.menuType !== 'F'" label="菜单状态">
<el-form-item v-if="form.menuType !== 'F'" label="菜单状态:">
<el-radio-group v-model="form.flag">
<el-radio label="1">启用</el-radio>
<el-radio label="0">停用</el-radio>
......@@ -229,12 +225,12 @@
</el-form-item>
</el-col>
<el-col :span="12" style="width: 100%;">
<el-form-item v-if="form.menuType !== 'F'" label="路由地址" prop="path">
<el-form-item v-if="form.menuType !== 'F'" label="路由地址:" prop="path">
<el-input v-model.trim="form.path" style="width: 95%" show-word-limit maxlength="100" placeholder="请输入路由地址" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item v-if="form.menuType !== 'F' && form.isProcess==='0'" label="工作流">
<el-form-item v-if="form.menuType !== 'F' && form.isProcess==='0'" label="工作流:">
<el-select v-model="form.processId" clearable placeholder="请选择工作流">
<el-option
v-for="item in workFlows"
......@@ -246,7 +242,7 @@
</el-form-item>
</el-col>
<el-col v-if="form.menuType === 'C'" :span="12">
<el-form-item label="组件路径" prop="component">
<el-form-item label="组件路径:" prop="component">
<el-input v-model.trim="form.component" show-word-limit maxlength="100" placeholder="请输入组件路径" />
</el-form-item>
</el-col>
......@@ -279,10 +275,6 @@ export default {
callback()
}
return {
printOption: {
id: 'nbprint', // 打印元素的id 不需要携带#号
popTitle: '打印信息' // 页眉标题 默认浏览器标题 空字符串时显示undefined 使用html语言
},
hasDelMenuPerm: ['sys:menu:delete'],
hasUpdateMenuPerm: ['sys:menu:update'],
hasAddMenuPerm: ['sys:menu:add'],
......
<template>
<div class="role-manage">
<div class="search" >
<el-form ref="queryForm" class="formClass" :model="queryParams" :inline="true">
<el-form-item prop="roleName">
<div class="search" style="border-bottom: 14px solid #f4f4f4">
<el-form ref="queryForm" style="padding: 0 0 0 10px" :model="queryParams" :inline="true">
<el-form-item label="角色名称:" prop="roleName">
<el-input
v-model="queryParams.roleName"
v-model.trim="queryParams.roleName"
placeholder="请输入角色名称"
clearable
:maxlength="30"
size="small"
style="width: 150px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item prop="roleKey">
<el-input
v-model="queryParams.roleKey"
placeholder="请输入权限字符"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item prop="flag">
<el-form-item label="角色状态:" prop="flag">
<el-select
v-model="queryParams.flag"
placeholder="请选择角色状态"
clearable
size="small"
style="width: 150px"
>
<el-option
v-for="dict in statusOptions"
......@@ -41,54 +34,53 @@
<el-button
:class="commonField.queryClass"
:type="commonField.typePrimary"
:icon="commonField.queryIcon"
:size="commonField.smallSize"
@click="handleQuery"
>{{ commonField.queryName }}</el-button>
<!-- //重置按钮-->
<el-button
:class="commonField.resetClass"
:icon="commonField.resetIcon"
:size="commonField.smallSize"
@click="resetQuery"
>{{ commonField.resetName }}</el-button>
</el-form-item>
<div style="float: right">
<el-form-item>
<!-- //新增按钮-->
<el-button
v-hasPermi="hasAddPerm"
:class="commonField.addClass"
:type="commonField.typePrimary"
:icon="commonField.addIcon"
:size="commonField.smallSize"
@click="handleAdd"
>{{ commonField.addName }}</el-button>
<!-- //导出-->
<!-- <el-button-->
<!-- v-hasPermi="hasExportPerm"-->
<!-- :class="commonField.exportClass"-->
<!-- :type="commonField.typeSuccess"-->
<!-- :icon="commonField.exportIcon"-->
<!-- :size="commonField.smallSize"-->
<!-- @click="handleExport"-->
<!-- >{{ commonField.exportName }}</el-button>-->
</el-form-item>
</div>
</el-form>
<div class="btnRow">
<!-- //新增按钮-->
<el-button
v-hasPermi="hasAddPerm"
:class="commonField.addClass"
:size="commonField.smallSize"
@click="handleAdd"
>{{ commonField.addName }}</el-button>
<!-- //导出-->
<el-button
v-hasPermi="hasExportPerm"
:class="commonField.exportClass"
:size="commonField.smallSize"
@click="handleExport"
>{{ commonField.exportName }}</el-button>
</div>
</div>
<div class="table-content">
<!-- <div class="tableTitle">角色管理列表</div>-->
<div style="padding:5px 10px">
<div class="tableTitle">角色管理列表</div>
<el-table v-loading="loading" border :data="roleList" @selection-change="handleSelectionChange">
<el-table-column type="index" label="序号" width="90" />
<el-table-column label="名称" prop="roleName" :show-overflow-tooltip="true">
<el-table-column type="index" label="序号" width="50" />
<el-table-column label="角色编号" prop="number" />
<el-table-column label="角色名称" prop="roleName" :show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.roleName || '-' }}
</template>
</el-table-column>
<el-table-column label="权限字符" prop="roleKey">
<template slot-scope="scope">
{{ scope.row.roleKey || '-' }}
</template>
</el-table-column>
<el-table-column label="显示顺序" prop="roleSort">
<template slot-scope="scope">
{{ scope.row.roleSort || '-' }}
</template>
</el-table-column>
<el-table-column label="状态" align="center" width="100">
<el-table-column label="角色状态" align="center" width="100">
<template slot-scope="scope">
<el-switch
v-model="scope.row.flag"
......@@ -103,6 +95,11 @@
<span>{{ scope.row.createDate | transformDateByFormat('YYYY-MM-DD HH:mm') }}</span>
</template>
</el-table-column>
<el-table-column label="更新时间" :show-overflow-tooltip="true" align="center" prop="createTime">
<template slot-scope="scope">
<span>{{ scope.row.updateDate | transformDateByFormat('YYYY-MM-DD HH:mm') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" class-name="small-padding fixed-width" width="200px">
<template slot-scope="scope">
<!-- //修改-->
......@@ -114,13 +111,13 @@
@click="handleUpdate(scope.row)"
>{{ commonField.updateName }}</el-button>
<!-- //数据权限-->
<el-button
v-hasPermi="hasDelPerm"
:class="commonField.delClass"
:type="commonField.typeParent"
:size="commonField.size"
@click="handleMenu(scope.row)"
>{{ commonField.dataPower }}</el-button>
<!-- <el-button-->
<!-- v-hasPermi="hasDelPerm"-->
<!-- :class="commonField.delClass"-->
<!-- :type="commonField.typeParent"-->
<!-- :size="commonField.size"-->
<!-- @click="handleMenu(scope.row)"-->
<!-- >{{ commonField.dataPower }}</el-button>-->
<!-- //删除-->
<el-button
v-hasPermi="hasDelPerm"
......@@ -143,20 +140,20 @@
<!-- 添加或修改角色配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="auto">
<el-form-item label="名称" prop="roleName">
<el-form-item label="名称:" prop="roleName">
<el-input v-model.trim="form.roleName" show-word-limit :maxlength="30" placeholder="请输入角色名称" />
</el-form-item>
<el-form-item label="权限字符" prop="roleKey">
<el-form-item label="权限字符:" prop="roleKey">
<el-input v-model.trim="form.roleKey" show-word-limit :maxlength="30" placeholder="请输入权限字符" />
</el-form-item>
<el-form-item label="排序" prop="roleSort">
<el-form-item label="排序:" prop="roleSort">
<el-input-number v-model="form.roleSort" style="width: 100%" controls-position="right" :min="0" />
</el-form-item>
<el-form-item label="状态">
<el-form-item label="状态:">
<el-radio v-model="form.flag" label="1">启用</el-radio>
<el-radio v-model="form.flag" label="0">停用</el-radio>
</el-form-item>
<el-form-item label="菜单权限" prop="menuIds">
<el-form-item label="菜单权限:" prop="menuIds">
<el-tree
ref="menu"
:check-strictly="true"
......@@ -169,7 +166,7 @@
@check="handleCheck"
/>
</el-form-item>
<el-form-item label="备注">
<el-form-item label="备注:">
<el-input v-model.trim="form.remarks" maxlength="200" show-word-limit type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
......@@ -441,15 +438,23 @@ export default {
this.loading = true
listRole(this.queryParams).then(
response => {
this.roleList = []
this.roleList = response.rows
/* response.rows.forEach(item => {
if (item.businessId === 1 || item.businessId === 2 || item.businessId === 108) {
this.roleList.push(item)
}
})*/
// this.roleList = response.rows
this.total = response.total
// this.total = this.roleList.length
this.loading = false
}
)
},
/** 查询菜单树结构 */
getMenuTreeSelect() {
menuTreeSelect().then(response => {
menuTreeSelect({ flag: '1' }).then(response => {
this.menuOptions = response.data
this.updateMenu.push(this.menuOptions[0].id)
})
......
This diff is collapsed.
<script setup>
</script>
<template>
<div>教师档案 profiles</div>
</template>
<style scoped lang="scss">
</style>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -8,6 +8,8 @@ const D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate())
const h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours())
const m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes())
const now = Y + M + D + h + m
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = ['js', 'css']
function resolve(dir) {
return path.join(__dirname, dir)
}
......@@ -57,8 +59,9 @@ module.exports = {
open: false,
proxy: {
[process.env.VUE_APP_BASE_API]: {
// target: `http://192.168.1.78:8089/`,
target: `http://192.168.1.41:8089/`,
// target: `http://49.232.167.247:20024/`,
// target: `http://192.168.1.119:8090/`,
target: `http://192.168.1.29:8090/`, // 奕霖后端
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
}
......@@ -67,6 +70,15 @@ module.exports = {
},
configureWebpack: {
name: name,
plugins: [
new CompressionWebpackPlugin({
filename: '[path].gz[query]', // 提示compression-webpack-plugin@3.0.0的话asset改为filename
algorithm: 'gzip',
test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
threshold: 10240,
minRatio: 0.8
})
],
resolve: {
alias: {
'@': resolve('src')
......@@ -74,6 +86,15 @@ module.exports = {
}
},
chainWebpack(config) {
// 删除注释
// config.optimization.minimizer('terser').tap(args => {
// // 直接修改 terserOptions 下的属性值,保留原有配置
// // 这里访问 terserOptions 的时候并没有 output,访问不到 output.comments 需要直接赋值
// args[0].terserOptions.output = {
// comments: false,
// }
// return args
// })
config.plugins.delete('preload') // TODO: need test
config.plugins.delete('prefetch') // TODO: need test
config.module
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment