commit:更新前端版本到1.9

This commit is contained in:
Jerry
2021-09-28 11:14:39 +08:00
parent a80f29e26a
commit 13ba3386dc
137 changed files with 1111 additions and 526 deletions

View File

@@ -0,0 +1 @@
/src/views/workflow/package/*

View File

@@ -11,7 +11,7 @@ module.exports = {
parser: 'babel-eslint' parser: 'babel-eslint'
}, },
rules: { rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-console': 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'semi': ['off', 'always'], 'semi': ['off', 'always'],
'prefer-promise-reject-errors': ['error', { 'allowEmptyReject': true }], 'prefer-promise-reject-errors': ['error', { 'allowEmptyReject': true }],
@@ -23,8 +23,7 @@ module.exports = {
'lines-between-class-members': ['off'], 'lines-between-class-members': ['off'],
// 'no-undef': ['off', 'always'], // 'no-undef': ['off', 'always'],
// 'no-unused-vars': ['off', 'always'], // 'no-unused-vars': ['off', 'always'],
'no-new-func': ['off', 'always'], 'no-new-func': ['off', 'always']
'no-console': ['off']
}, },
overrides: [ overrides: [
{ {

View File

@@ -26,7 +26,13 @@
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-router": "^3.1.5", "vue-router": "^3.1.5",
"vuex": "^3.1.2", "vuex": "^3.1.2",
"wangeditor": "^3.1.1" "wangeditor": "^3.1.1",
"vue-json-viewer": "^2.2.18",
"min-dash": "^3.5.2",
"vuedraggable": "^2.24.3",
"xml-js": "^1.6.11",
"highlight.js": "^10.5.0",
"bpmn-js-token-simulation": "^0.10.0"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "~4.2.0", "@vue/cli-plugin-babel": "~4.2.0",
@@ -39,6 +45,9 @@
"@vue/eslint-config-standard": "^5.1.0", "@vue/eslint-config-standard": "^5.1.0",
"@vue/test-utils": "1.0.0-beta.31", "@vue/test-utils": "1.0.0-beta.31",
"babel-eslint": "^10.0.3", "babel-eslint": "^10.0.3",
"bpmn-js": "^7.4.0",
"bpmn-js-properties-panel": "^0.37.2",
"camunda-bpmn-moddle": "^4.4.1",
"eslint": "^6.7.2", "eslint": "^6.7.2",
"eslint-plugin-import": "^2.20.1", "eslint-plugin-import": "^2.20.1",
"eslint-plugin-node": "^11.0.0", "eslint-plugin-node": "^11.0.0",

View File

@@ -4,12 +4,11 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> <title>橙单代码生成平台</title>
<title>橙单工程</title>
</head> </head>
<body class="demo-project"> <body class="orange-project">
<noscript> <noscript>
<strong>We're sorry but 橙单工程 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> <strong>We're sorry but 橙单代码生成平台 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript> </noscript>
<div id="app"></div> <div id="app"></div>
<!-- built files will be auto injected --> <!-- built files will be auto injected -->

View File

@@ -59,7 +59,7 @@ export default class DictionaryController {
static dictAreaCode (sender, params, axiosOption, httpOption) { static dictAreaCode (sender, params, axiosOption, httpOption) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
sender.doUrl('/admin/CourseClass/areaCode/listDict', 'get', params, axiosOption, httpOption).then(res => { sender.doUrl('/admin/CourseClass/areaCode/listDict', 'get', params, axiosOption, httpOption).then(res => {
let dictData = new staticDict.DictionaryBase(); let dictData = new staticDict.DictionaryBase('行政区划');
dictData.setList(res.data); dictData.setList(res.data);
resolve(dictData); resolve(dictData);
}).catch(err => { }).catch(err => {
@@ -79,7 +79,7 @@ export default class DictionaryController {
static dictAreaCodeByParentId (sender, params, axiosOption, httpOption) { static dictAreaCodeByParentId (sender, params, axiosOption, httpOption) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
sender.doUrl('/admin/CourseClass/areaCode/listDictByParentId', 'get', params, axiosOption, httpOption).then(res => { sender.doUrl('/admin/CourseClass/areaCode/listDictByParentId', 'get', params, axiosOption, httpOption).then(res => {
let dictData = new staticDict.DictionaryBase(); let dictData = new staticDict.DictionaryBase('行政区划');
dictData.setList(res.data); dictData.setList(res.data);
resolve(dictData); resolve(dictData);
}).catch(err => { }).catch(err => {
@@ -102,7 +102,7 @@ export default class DictionaryController {
static dictCourse (sender, params, axiosOption, httpOption) { static dictCourse (sender, params, axiosOption, httpOption) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
sender.doUrl('/admin/CourseClass/course/listDict', 'get', params, axiosOption, httpOption).then(res => { sender.doUrl('/admin/CourseClass/course/listDict', 'get', params, axiosOption, httpOption).then(res => {
let dictData = new staticDict.DictionaryBase(); let dictData = new staticDict.DictionaryBase('课程');
dictData.setList(res.data); dictData.setList(res.data);
resolve(dictData); resolve(dictData);
}).catch(err => { }).catch(err => {
@@ -113,7 +113,7 @@ export default class DictionaryController {
static dictGrade (sender, params, axiosOption, httpOption) { static dictGrade (sender, params, axiosOption, httpOption) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
sender.doUrl('/admin/CourseClass/grade/listDict', 'get', params, axiosOption, httpOption).then(res => { sender.doUrl('/admin/CourseClass/grade/listDict', 'get', params, axiosOption, httpOption).then(res => {
let dictData = new staticDict.DictionaryBase(); let dictData = new staticDict.DictionaryBase('年级');
dictData.setList(res.data); dictData.setList(res.data);
resolve(dictData); resolve(dictData);
}).catch(err => { }).catch(err => {
@@ -145,7 +145,7 @@ export default class DictionaryController {
static dictSchoolInfo (sender, params, axiosOption, httpOption) { static dictSchoolInfo (sender, params, axiosOption, httpOption) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
sender.doUrl('/admin/CourseClass/schoolInfo/listDict', 'get', params, axiosOption, httpOption).then(res => { sender.doUrl('/admin/CourseClass/schoolInfo/listDict', 'get', params, axiosOption, httpOption).then(res => {
let dictData = new staticDict.DictionaryBase(); let dictData = new staticDict.DictionaryBase('校区');
dictData.setList(res.data); dictData.setList(res.data);
resolve(dictData); resolve(dictData);
}).catch(err => { }).catch(err => {
@@ -156,7 +156,7 @@ export default class DictionaryController {
static dictStudent (sender, params, axiosOption, httpOption) { static dictStudent (sender, params, axiosOption, httpOption) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
sender.doUrl('/admin/CourseClass/student/listDict', 'get', params, axiosOption, httpOption).then(res => { sender.doUrl('/admin/CourseClass/student/listDict', 'get', params, axiosOption, httpOption).then(res => {
let dictData = new staticDict.DictionaryBase(); let dictData = new staticDict.DictionaryBase('学生');
dictData.setList(res.data); dictData.setList(res.data);
resolve(dictData); resolve(dictData);
}).catch(err => { }).catch(err => {

View File

@@ -225,4 +225,12 @@ export default class SystemController {
static listSysMenuByPermIdWithDetail (sender, params, axiosOption, httpOption) { static listSysMenuByPermIdWithDetail (sender, params, axiosOption, httpOption) {
return sender.doUrl('admin/upms/sysPerm/listSysMenuWithDetail', 'get', params, axiosOption, httpOption); return sender.doUrl('admin/upms/sysPerm/listSysMenuWithDetail', 'get', params, axiosOption, httpOption);
} }
// 在线用户
static listSysLoginUser (sender, params, axiosOption, httpOption) {
return sender.doUrl('admin/upms/loginUser/list', 'post', params, axiosOption, httpOption);
}
static deleteSysLoginUser (sender, params, axiosOption, httpOption) {
return sender.doUrl('admin/upms/loginUser/delete', 'post', params, axiosOption, httpOption);
}
} }

View File

@@ -1,13 +1,13 @@
import SystemController from './Controller/SystemController' import SystemController from './Controller/SystemController'
import DictionaryController from './Controller/DictionaryController' import DictionaryController from './Controller/DictionaryController'
import CourseController from './Controller/CourseController.js' import CourseController from './Controller/CourseController.js';
import SchoolInfoController from './Controller/SchoolInfoController.js' import SchoolInfoController from './Controller/SchoolInfoController.js';
import StudentController from './Controller/StudentController.js' import StudentController from './Controller/StudentController.js';
import SysUserController from './Controller/SysUserController.js' import SysUserController from './Controller/SysUserController.js';
import StudentClassController from './Controller/StudentClassController.js' import StudentClassController from './Controller/StudentClassController.js';
import CourseTransStatsController from './Controller/CourseTransStatsController.js' import CourseTransStatsController from './Controller/CourseTransStatsController.js';
import StudentActionStatsController from './Controller/StudentActionStatsController.js' import StudentActionStatsController from './Controller/StudentActionStatsController.js';
import StudentActionTransController from './Controller/StudentActionTransController.js' import StudentActionTransController from './Controller/StudentActionTransController.js';
export { export {
SystemController, SystemController,

View File

@@ -16,7 +16,7 @@ $--color-transition-base: color .2s cubic-bezier(.645,.045,.355,1) !default;
/* Color /* Color
-------------------------- */ -------------------------- */
/// color|1|Brand Color|0 /// color|1|Brand Color|0
$--color-primary: #FFA424 !default; $--color-primary: #FCA834 !default;
/// color|1|Background Color|4 /// color|1|Background Color|4
$--color-white: #FFFFFF !default; $--color-white: #FFFFFF !default;
/// color|1|Background Color|4 /// color|1|Background Color|4
@@ -31,7 +31,7 @@ $--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /
$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */ $--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */
$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */ $--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */
/// color|1|Functional Color|1 /// color|1|Functional Color|1
$--color-success: #67C23A !default; $--color-success: #6DC741 !default;
/// color|1|Functional Color|1 /// color|1|Functional Color|1
$--color-warning: #E6A23C !default; $--color-warning: #E6A23C !default;
/// color|1|Functional Color|1 /// color|1|Functional Color|1
@@ -72,11 +72,10 @@ $--background-color-base: #F5F7FA !default;
// color for left sidebar title // color for left sidebar title
$--color-sidebar-title-text: #FFFFFF; $--color-sidebar-title-text: #FFFFFF;
// color for left sidebar background // color for left sidebar background
$--color-menu-background: #FF7746; $--color-menu-background: #042345;
$--color-menu-item-active-text-color: #FFFFFF; $--color-menu-item-active-text-color: #FFFFFF;
$--color-menu-item-active-background: rgba(255, 255, 255, 0.01); $--color-menu-item-active-background: $--color-primary;
$--color-menu-item-active-background-to: rgba(255, 255, 255, 0.3); $--color-submenu-background: #021F3B;
/* Link /* Link
-------------------------- */ -------------------------- */
$--link-color: $--color-primary-light-2 !default; $--link-color: $--color-primary-light-2 !default;
@@ -738,7 +737,7 @@ $--tree-expand-icon-color: $--color-text-placeholder !default;
/* Dropdown /* Dropdown
-------------------------- */ -------------------------- */
$--dropdown-menu-box-shadow: $--box-shadow-light !default; $--dropdown-menu-box-shadow: $--box-shadow-light !default;
$--dropdown-menuItem-hover-fill: $--color-menu-background !default; $--dropdown-menuItem-hover-fill: $--color-primary !default;
$--dropdown-menuItem-hover-color: $--color-white !default; $--dropdown-menuItem-hover-color: $--color-white !default;
/* Badge /* Badge

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -7,7 +7,7 @@
"theme-blue": "et -c element-variables-blue.scss" "theme-blue": "et -c element-variables-blue.scss"
}, },
"devDependencies": { "devDependencies": {
"element-theme": "^2.0.1", "element-theme": "2.0.1",
"element-theme-chalk": "^2.14.1" "element-theme-chalk": "2.14.1"
} }
} }

View File

@@ -51,8 +51,25 @@ body .layer-dialog {
body .layer-dialog .layui-layer-content { body .layer-dialog .layui-layer-content {
padding: $box-padding-size; padding: $box-padding-size;
} }
/**
* 左树右表弹窗样式
*/
body .layer-advance-dialog {
border-radius: 4px;
border:1px solid #01000000;
background-color: #F8F8F8;
}
.demo-project { body .layer-advance-dialog .layui-layer-title{
border-radius: 4px 4px 0px 0px;
border:1px solid #01000000;
}
body .layer-advance-dialog .layui-layer-content {
padding: 5px 15px;
}
.orange-project {
.el-main { .el-main {
padding: 0px; padding: 0px;
} }
@@ -98,18 +115,18 @@ body .layer-dialog .layui-layer-content {
.page-close-box { .page-close-box {
position: absolute; position: absolute;
background: #13ce66; background: #0092FF;
transform: rotate(45deg); transform: rotate(45deg);
height: 60px; height: 50px;
width: 60px; width: 50px;
right: -30px; right: -25px;
top:-30px; top:-25px;
text-align: center; text-align: center;
.el-button { .el-button {
transform: rotate(-45deg); transform: rotate(-45deg);
color: white; color: white;
margin-top: 30px; margin-top: 20px;
} }
} }
@@ -265,6 +282,12 @@ body .layer-dialog .layui-layer-content {
} }
} }
@if global-variable-exists(--color-submenu-background) {
.left-menu .el-submenu .el-menu {
background-color: $--color-submenu-background;
}
}
/** /**
* 多tab页表单tab样式 * 多tab页表单tab样式
**/ **/
@@ -278,6 +301,45 @@ body .layer-dialog .layui-layer-content {
background-color: $tab-header-background-color; background-color: $tab-header-background-color;
} }
/**
* 操作按钮颜色
**/
.table-btn.delete {
color: #F56C6C;
}
.table-btn.delete:hover {
color: #F78989;
}
.table-btn.delete:disabled {
color: #DCDFE6;
}
.table-btn.success {
color: #67C23A;
}
.table-btn.success:hover {
color: #85CE61;
}
.table-btn.success:disabled {
color: #DCDFE6;
}
.table-btn.warning {
color: #E6A23C;
}
.table-btn.warning:hover {
color: #EBB563;
}
.table-btn.success:disabled {
color: #DCDFE6;
}
/** /**
* 图片上传以及显示样式 * 图片上传以及显示样式
**/ **/

View File

@@ -110,3 +110,8 @@
.form-single-fragment { .form-single-fragment {
// //
} }
.advance-query-form {
padding: 0px!important;
background-color: transparent!important;;
}

View File

@@ -1705,7 +1705,7 @@
min-width: 180px; min-width: 180px;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
color: #FFFFFF; color: #606266;
border-right: solid 1px #E4E7ED; } border-right: solid 1px #E4E7ED; }
.el-cascader-menu:last-child { .el-cascader-menu:last-child {
border-right: none; } border-right: none; }
@@ -1750,9 +1750,9 @@
line-height: 34px; line-height: 34px;
outline: none; } outline: none; }
.el-cascader-node.is-selectable.in-active-path { .el-cascader-node.is-selectable.in-active-path {
color: #FFFFFF; } color: #606266; }
.el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active { .el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active {
color: #FFFFFF; color: #409EFF;
font-weight: bold; } font-weight: bold; }
.el-cascader-node:not(.is-disabled) { .el-cascader-node:not(.is-disabled) {
cursor: pointer; } cursor: pointer; }

View File

@@ -3282,7 +3282,7 @@
min-width: 180px; min-width: 180px;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
color: #FFFFFF; color: #606266;
border-right: solid 1px #E4E7ED; } border-right: solid 1px #E4E7ED; }
.el-cascader-menu:last-child { .el-cascader-menu:last-child {
border-right: none; } border-right: none; }
@@ -3327,9 +3327,9 @@
line-height: 34px; line-height: 34px;
outline: none; } outline: none; }
.el-cascader-node.is-selectable.in-active-path { .el-cascader-node.is-selectable.in-active-path {
color: #FFFFFF; } color: #606266; }
.el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active { .el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active {
color: #FFFFFF; color: #409EFF;
font-weight: bold; } font-weight: bold; }
.el-cascader-node:not(.is-disabled) { .el-cascader-node:not(.is-disabled) {
cursor: pointer; } cursor: pointer; }
@@ -3454,7 +3454,7 @@
margin: 0; margin: 0;
padding: 6px 0; padding: 6px 0;
font-size: 14px; font-size: 14px;
color: #FFFFFF; color: #606266;
text-align: center; } text-align: center; }
.el-cascader__suggestion-item { .el-cascader__suggestion-item {
display: -webkit-box; display: -webkit-box;
@@ -3474,7 +3474,7 @@
.el-cascader__suggestion-item:hover, .el-cascader__suggestion-item:focus { .el-cascader__suggestion-item:hover, .el-cascader__suggestion-item:focus {
background: #F5F7FA; } background: #F5F7FA; }
.el-cascader__suggestion-item.is-checked { .el-cascader__suggestion-item.is-checked {
color: #FFFFFF; color: #409EFF;
font-weight: bold; } font-weight: bold; }
.el-cascader__suggestion-item > span { .el-cascader__suggestion-item > span {
margin-right: 10px; } margin-right: 10px; }
@@ -3489,7 +3489,7 @@
min-width: 60px; min-width: 60px;
margin: 2px 0 2px 15px; margin: 2px 0 2px 15px;
padding: 0; padding: 0;
color: #FFFFFF; color: #606266;
border: none; border: none;
outline: none; outline: none;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;

View File

@@ -46757,7 +46757,7 @@
min-width: 180px; min-width: 180px;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
color: #FFFFFF; color: #606266;
border-right: solid 1px #E4E7ED; } border-right: solid 1px #E4E7ED; }
.el-cascader-menu:last-child { .el-cascader-menu:last-child {
border-right: none; } border-right: none; }
@@ -46802,9 +46802,9 @@
line-height: 34px; line-height: 34px;
outline: none; } outline: none; }
.el-cascader-node.is-selectable.in-active-path { .el-cascader-node.is-selectable.in-active-path {
color: #FFFFFF; } color: #606266; }
.el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active { .el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active {
color: #FFFFFF; color: #409EFF;
font-weight: bold; } font-weight: bold; }
.el-cascader-node:not(.is-disabled) { .el-cascader-node:not(.is-disabled) {
cursor: pointer; } cursor: pointer; }
@@ -46929,7 +46929,7 @@
margin: 0; margin: 0;
padding: 6px 0; padding: 6px 0;
font-size: 14px; font-size: 14px;
color: #FFFFFF; color: #606266;
text-align: center; } text-align: center; }
.el-cascader__suggestion-item { .el-cascader__suggestion-item {
display: -webkit-box; display: -webkit-box;
@@ -46949,7 +46949,7 @@
.el-cascader__suggestion-item:hover, .el-cascader__suggestion-item:focus { .el-cascader__suggestion-item:hover, .el-cascader__suggestion-item:focus {
background: #F5F7FA; } background: #F5F7FA; }
.el-cascader__suggestion-item.is-checked { .el-cascader__suggestion-item.is-checked {
color: #FFFFFF; color: #409EFF;
font-weight: bold; } font-weight: bold; }
.el-cascader__suggestion-item > span { .el-cascader__suggestion-item > span {
margin-right: 10px; } margin-right: 10px; }
@@ -46964,7 +46964,7 @@
min-width: 60px; min-width: 60px;
margin: 2px 0 2px 15px; margin: 2px 0 2px 15px;
padding: 0; padding: 0;
color: #FFFFFF; color: #606266;
border: none; border: none;
outline: none; outline: none;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
@@ -55916,7 +55916,7 @@
min-width: 180px; min-width: 180px;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
color: #FFFFFF; color: #606266;
border-right: solid 1px #E4E7ED; } border-right: solid 1px #E4E7ED; }
.el-cascader-menu:last-child { .el-cascader-menu:last-child {
border-right: none; } border-right: none; }
@@ -55961,9 +55961,9 @@
line-height: 34px; line-height: 34px;
outline: none; } outline: none; }
.el-cascader-node.is-selectable.in-active-path { .el-cascader-node.is-selectable.in-active-path {
color: #FFFFFF; } color: #606266; }
.el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active { .el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active {
color: #FFFFFF; color: #409EFF;
font-weight: bold; } font-weight: bold; }
.el-cascader-node:not(.is-disabled) { .el-cascader-node:not(.is-disabled) {
cursor: pointer; } cursor: pointer; }

View File

@@ -46,10 +46,10 @@ class Dialog {
} }
let observer = { let observer = {
cancel: function (isSuccess = false) { cancel: function (isSuccess = false, data = undefined) {
layer.close(this.index); layer.close(this.index);
if (isSuccess) { if (isSuccess) {
resolve(); resolve(data);
} else { } else {
reject(); reject();
} }

View File

@@ -99,7 +99,6 @@ export default {
return content; return content;
} }
this.editor.customConfig.linkImgCallback = (url) => { this.editor.customConfig.linkImgCallback = (url) => {
console.log(url) // url 即插入图片的地址
} }
this.editor.customConfig.linkCheck = (text, link) => { this.editor.customConfig.linkCheck = (text, link) => {
return true // 返回 true 表示校验成功 return true // 返回 true 表示校验成功
@@ -112,7 +111,6 @@ export default {
} }
// 失去焦点后更新数据 // 失去焦点后更新数据
this.editor.customConfig.onblur = (html) => { this.editor.customConfig.onblur = (html) => {
console.log(html)
this.$emit('input', html); this.$emit('input', html);
} }

View File

@@ -1,4 +1,4 @@
module.exports = { module.exports = {
baseUrl: 'http://localhost:8082/', baseUrl: 'http://localhost:8082/',
projectName: '橙单项目' projectName: '橙单代码生成平台'
} }

View File

@@ -2,8 +2,14 @@ const projectConfig = require('../config/' + process.env.NODE_ENV);
export const globalConfig = { export const globalConfig = {
httpOption: { httpOption: {
// 调用的时候是否显示蒙版
showMask: true, showMask: true,
showError: true // 是否显示公共的错误提示
showError: true,
// 是否开启节流功能同一个url不能频繁重复调用
throttleFlag: false,
// 节流间隔
throttleTimeout: 50
}, },
axiosOption: { axiosOption: {
} }

View File

@@ -135,13 +135,15 @@ const doUrl = function (url, type, params, axiosOption, options) {
options = merge(globalConfig.httpOption, options); options = merge(globalConfig.httpOption, options);
axiosOption = merge(globalConfig.axiosOption, axiosOption); axiosOption = merge(globalConfig.axiosOption, axiosOption);
if (type == null || type === '') type = 'post'; if (type == null || type === '') type = 'post';
if (ajaxThrottleSet.has(url)) { if (ajaxThrottleSet.has(url) && options.throttleFlag) {
return Promise.resolve(); return Promise.resolve();
} else { } else {
if (options.throttleFlag) {
ajaxThrottleSet.add(url); ajaxThrottleSet.add(url);
setTimeout(() => { setTimeout(() => {
ajaxThrottleSet.delete(url); ajaxThrottleSet.delete(url);
}, 50); }, options.throttleTimeout || 50);
}
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (options.showMask) loadingManager.showMask(); if (options.showMask) loadingManager.showMask();
let ajaxCall = null; let ajaxCall = null;

View File

@@ -10,7 +10,8 @@ const service = axios.create({
withCredentials: true, withCredentials: true,
headers: { headers: {
// 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' // 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
'Content-Type': 'application/json; charset=utf-8' 'Content-Type': 'application/json; charset=utf-8',
'deviceType': '4'
}, },
transformResponse: [ transformResponse: [
function (data) { function (data) {

View File

@@ -1,4 +1,5 @@
import '@/core/http'; import '@/core/http';
import JSONbig from 'json-bigint';
import '@/components/Dialog'; import '@/components/Dialog';
import Vue from 'vue'; import Vue from 'vue';
import ElementUI from 'element-ui'; import ElementUI from 'element-ui';
@@ -16,6 +17,8 @@ import FilterBox from '@/components/FilterBox';
import TableProgressColumn from '@/components/TableProgressColumn'; import TableProgressColumn from '@/components/TableProgressColumn';
import VCharts from 'v-charts'; import VCharts from 'v-charts';
window.JSON = new JSONbig({storeAsString: true});
Vue.component('tree-select', TreeSelect); Vue.component('tree-select', TreeSelect);
Vue.component('rich-editor', RichEditor); Vue.component('rich-editor', RichEditor);
Vue.component('input-number-range', InputNumberRange); Vue.component('input-number-range', InputNumberRange);

View File

@@ -33,16 +33,17 @@ const routers = [
{path: 'formSysDict', component: _import('upms/formDictManagement/index'), name: 'formSysDict', meta: {title: '字典管理'}}, {path: 'formSysDict', component: _import('upms/formDictManagement/index'), name: 'formSysDict', meta: {title: '字典管理'}},
{path: 'formSysPermCode', component: _import('upms/formSysPermCode/index'), name: 'formSysPermCode', meta: {title: '权限字管理'}}, {path: 'formSysPermCode', component: _import('upms/formSysPermCode/index'), name: 'formSysPermCode', meta: {title: '权限字管理'}},
{path: 'formSysPerm', component: _import('upms/formSysPerm/index'), name: 'formSysPerm', meta: {title: '权限资源管理'}}, {path: 'formSysPerm', component: _import('upms/formSysPerm/index'), name: 'formSysPerm', meta: {title: '权限资源管理'}},
{path: 'formSysLoginUser', component: _import('upms/formSysLoginUser/index'), name: 'formSysLoginUser', meta: {title: '在线用户'}},
{path: 'welcome', component: _import('welcome/index'), name: 'welcome', meta: {title: '欢迎'}}, {path: 'welcome', component: _import('welcome/index'), name: 'welcome', meta: {title: '欢迎'}},
{path: 'formSchool', component: _import('generated/formSchool/index'), name: 'formSchool', props: getProps, meta: {title: '校区管理'}}, {path: 'formSchool', component: _import('generated/formSchool'), name: 'formSchool', props: getProps, meta: {title: '校区管理'}},
{path: 'formStudent', component: _import('generated/formStudent/index'), name: 'formStudent', props: getProps, meta: {title: '学生管理'}}, {path: 'formStudent', component: _import('generated/formStudent'), name: 'formStudent', props: getProps, meta: {title: '学生管理'}},
{path: 'formCourse', component: _import('generated/formCourse/index'), name: 'formCourse', props: getProps, meta: {title: '课程管理'}}, {path: 'formCourse', component: _import('generated/formCourse'), name: 'formCourse', props: getProps, meta: {title: '课程管理'}},
{path: 'formCourseStats', component: _import('generated/formCourseStats/index'), name: 'formCourseStats', props: getProps, meta: {title: '课程统计'}}, {path: 'formCourseStats', component: _import('generated/formCourseStats'), name: 'formCourseStats', props: getProps, meta: {title: '课程统计'}},
{path: 'formStudentActionStats', component: _import('generated/formStudentActionStats/index'), name: 'formStudentActionStats', props: getProps, meta: {title: '学生行为统计'}}, {path: 'formStudentActionStats', component: _import('generated/formStudentActionStats'), name: 'formStudentActionStats', props: getProps, meta: {title: '学生行为统计'}},
{path: 'formStudentActionDetail', component: _import('generated/formStudentActionDetail/index'), name: 'formStudentActionDetail', props: getProps, meta: {title: '学生行为详情'}}, {path: 'formStudentActionDetail', component: _import('generated/formStudentActionDetail'), name: 'formStudentActionDetail', props: getProps, meta: {title: '学生行为详情'}},
{path: 'formSetClassStudent', component: _import('generated/formSetClassStudent/index'), name: 'formSetClassStudent', props: getProps, meta: {title: '设置班级学生'}}, {path: 'formSetClassStudent', component: _import('generated/formSetClassStudent'), name: 'formSetClassStudent', props: getProps, meta: {title: '设置班级学生'}},
{path: 'formSetClassCourse', component: _import('generated/formSetClassCourse/index'), name: 'formSetClassCourse', props: getProps, meta: {title: '设置班级课程'}}, {path: 'formSetClassCourse', component: _import('generated/formSetClassCourse'), name: 'formSetClassCourse', props: getProps, meta: {title: '设置班级课程'}},
{path: 'formClass', component: _import('generated/formClass/index'), name: 'formClass', props: getProps, meta: {title: '班级管理'}} {path: 'formClass', component: _import('generated/formClass'), name: 'formClass', props: getProps, meta: {title: '班级管理'}}
] ]
} }
]; ];

View File

@@ -4,8 +4,9 @@
import Vue from 'vue'; import Vue from 'vue';
class DictionaryBase extends Map { class DictionaryBase extends Map {
constructor (dataList, keyId = 'id', symbolId = 'symbol') { constructor (name, dataList, keyId = 'id', symbolId = 'symbol') {
super(); super();
this.showName = name;
this.setList(dataList, keyId, symbolId); this.setList(dataList, keyId, symbolId);
} }
@@ -50,7 +51,7 @@ class DictionaryBase extends Map {
} }
} }
const SysUserStatus = new DictionaryBase([ const SysUserStatus = new DictionaryBase('用户状态', [
{ {
id: 0, id: 0,
name: '正常状态', name: '正常状态',
@@ -64,7 +65,7 @@ const SysUserStatus = new DictionaryBase([
]); ]);
Vue.prototype.SysUserStatus = SysUserStatus; Vue.prototype.SysUserStatus = SysUserStatus;
const SysUserType = new DictionaryBase([ const SysUserType = new DictionaryBase('用户类型', [
{ {
id: 0, id: 0,
name: '管理员', name: '管理员',
@@ -83,7 +84,7 @@ const SysUserType = new DictionaryBase([
]); ]);
Vue.prototype.SysUserType = SysUserType; Vue.prototype.SysUserType = SysUserType;
const ClassStatus = new DictionaryBase([ const ClassStatus = new DictionaryBase('班级状态', [
{ {
id: 1, id: 1,
name: '正常', name: '正常',
@@ -97,7 +98,7 @@ const ClassStatus = new DictionaryBase([
]); ]);
Vue.prototype.ClassStatus = ClassStatus; Vue.prototype.ClassStatus = ClassStatus;
const ClassLevel = new DictionaryBase([ const ClassLevel = new DictionaryBase('班级级别', [
{ {
id: 0, id: 0,
name: '初级班', name: '初级班',
@@ -116,7 +117,7 @@ const ClassLevel = new DictionaryBase([
]); ]);
Vue.prototype.ClassLevel = ClassLevel; Vue.prototype.ClassLevel = ClassLevel;
const CourseDifficult = new DictionaryBase([ const CourseDifficult = new DictionaryBase('课程难度', [
{ {
id: 0, id: 0,
name: '容易', name: '容易',
@@ -135,7 +136,7 @@ const CourseDifficult = new DictionaryBase([
]); ]);
Vue.prototype.CourseDifficult = CourseDifficult; Vue.prototype.CourseDifficult = CourseDifficult;
const Subject = new DictionaryBase([ const Subject = new DictionaryBase('学科', [
{ {
id: 0, id: 0,
name: '语文', name: '语文',
@@ -154,7 +155,7 @@ const Subject = new DictionaryBase([
]); ]);
Vue.prototype.Subject = Subject; Vue.prototype.Subject = Subject;
const StudentActionType = new DictionaryBase([ const StudentActionType = new DictionaryBase('学生行为', [
{ {
id: 0, id: 0,
name: '充值', name: '充值',
@@ -213,7 +214,7 @@ const StudentActionType = new DictionaryBase([
]); ]);
Vue.prototype.StudentActionType = StudentActionType; Vue.prototype.StudentActionType = StudentActionType;
const DeviceType = new DictionaryBase([ const DeviceType = new DictionaryBase('设备类型', [
{ {
id: 0, id: 0,
name: 'iOS', name: 'iOS',
@@ -232,7 +233,7 @@ const DeviceType = new DictionaryBase([
]); ]);
Vue.prototype.DeviceType = DeviceType; Vue.prototype.DeviceType = DeviceType;
const Gender = new DictionaryBase([ const Gender = new DictionaryBase('性别', [
{ {
id: 1, id: 1,
name: '男', name: '男',
@@ -246,7 +247,7 @@ const Gender = new DictionaryBase([
]); ]);
Vue.prototype.Gender = Gender; Vue.prototype.Gender = Gender;
const ExpLevel = new DictionaryBase([ const ExpLevel = new DictionaryBase('经验等级', [
{ {
id: 0, id: 0,
name: '初级学员', name: '初级学员',
@@ -265,7 +266,7 @@ const ExpLevel = new DictionaryBase([
]); ]);
Vue.prototype.ExpLevel = ExpLevel; Vue.prototype.ExpLevel = ExpLevel;
const StudentStatus = new DictionaryBase([ const StudentStatus = new DictionaryBase('学生状态', [
{ {
id: 0, id: 0,
name: '正常', name: '正常',
@@ -284,7 +285,7 @@ const StudentStatus = new DictionaryBase([
]); ]);
Vue.prototype.StudentStatus = StudentStatus; Vue.prototype.StudentStatus = StudentStatus;
const SysPermModuleType = new DictionaryBase([ const SysPermModuleType = new DictionaryBase('权限分组类型', [
{ {
id: 0, id: 0,
name: '分组模块', name: '分组模块',
@@ -297,7 +298,7 @@ const SysPermModuleType = new DictionaryBase([
]); ]);
Vue.prototype.SysPermModuleType = SysPermModuleType; Vue.prototype.SysPermModuleType = SysPermModuleType;
const SysPermCodeType = new DictionaryBase([{ const SysPermCodeType = new DictionaryBase('权限字类型', [{
id: 0, id: 0,
name: '表单', name: '表单',
symbol: 'FORM' symbol: 'FORM'
@@ -312,7 +313,7 @@ const SysPermCodeType = new DictionaryBase([{
}]); }]);
Vue.prototype.SysPermCodeType = SysPermCodeType; Vue.prototype.SysPermCodeType = SysPermCodeType;
const SysMenuType = new DictionaryBase([ const SysMenuType = new DictionaryBase('菜单类型', [
{ {
id: 0, id: 0,
name: '目录', name: '目录',
@@ -335,7 +336,6 @@ const SysMenuType = new DictionaryBase([
} }
]); ]);
Vue.prototype.SysMenuType = SysMenuType; Vue.prototype.SysMenuType = SysMenuType;
export { export {
DictionaryBase, DictionaryBase,
SysUserStatus, SysUserStatus,

View File

@@ -11,8 +11,14 @@ export default {
getClientHeight: (state) => { getClientHeight: (state) => {
return state.documentClientHeight; return state.documentClientHeight;
}, },
getClientWidth: (state) => {
return state.documentClienWidth;
},
getMainContextHeight: (state) => { getMainContextHeight: (state) => {
return state.documentClientHeight - (state.supportTags ? 140 : 100); return state.documentClientHeight - (state.supportTags ? 130 : 90);
},
getOnlineFormCache: (state) => {
return state.onlineFormCache;
}, },
getUserInfo: (state) => { getUserInfo: (state) => {
return state.userInfo; return state.userInfo;

View File

@@ -8,6 +8,18 @@ export default {
setClientHeight: (state, height) => { setClientHeight: (state, height) => {
state.documentClientHeight = height; state.documentClientHeight = height;
}, },
setClientWidth: (state, width) => {
state.documentClienWidth = width;
},
addOnlineFormCache: (state, data) => {
state.onlineFormCache[data.key] = data.value;
},
removeOnlineFormCache: (state, key) => {
delete state.onlineFormCache[key];
},
clearOnlineFormCache: (state) => {
state.onlineFormCache = {};
},
setUserInfo: (state, info) => { setUserInfo: (state, info) => {
setObjectToSessionStorage('userInfo', info); setObjectToSessionStorage('userInfo', info);
state.userInfo = initUserInfo(info); state.userInfo = initUserInfo(info);
@@ -97,7 +109,8 @@ export default {
} }
let menuObject = state.tagList[0]; let menuObject = state.tagList[0];
if (menuObject && menuObject.formRouterName && menuObject.formRouterName !== '') { if (menuObject && (menuObject.onlineFormId == null || menuObject.onlineFormId === '') &&
menuObject.formRouterName && menuObject.formRouterName !== '') {
state.cachePages = [menuObject.formRouterName]; state.cachePages = [menuObject.formRouterName];
if (setObjectToSessionStorage('currentMenuId', menuObject.menuId)) state.currentMenuId = menuObject.menuId; if (setObjectToSessionStorage('currentMenuId', menuObject.menuId)) state.currentMenuId = menuObject.menuId;
} }
@@ -131,7 +144,9 @@ export default {
} }
// 添加新缓存 // 添加新缓存
if (Array.isArray(state.cachePages) && state.cachePages.indexOf(menuItem.formRouterName) === -1) { if (Array.isArray(state.cachePages) && state.cachePages.indexOf(menuItem.formRouterName) === -1) {
if (menuItem.onlineFormId == null || menuItem.onlineFormId === '') {
state.cachePages = [...state.cachePages, menuItem.formRouterName]; state.cachePages = [...state.cachePages, menuItem.formRouterName];
}
setObjectToSessionStorage('cachePages', state.cachePages); setObjectToSessionStorage('cachePages', state.cachePages);
} }
break; break;

View File

@@ -10,6 +10,10 @@ export default {
supportTags: false, supportTags: false,
// 浏览器客户区高度 // 浏览器客户区高度
documentClientHeight: 100, documentClientHeight: 100,
// 浏览器客户区宽度
documentClientWidth: undefined,
// 在线表单查询页面缓存
onlineFormCache: {},
// 用户登录信息 // 用户登录信息
userInfo: initUserInfo(), userInfo: initUserInfo(),
// 缓存页面 // 缓存页面

View File

@@ -346,7 +346,7 @@ export class TreeTableImpl {
calcPermCodeTreeAttribute(item, checkedRows); calcPermCodeTreeAttribute(item, checkedRows);
}); });
} }
console.log(treeData, checkedRows);
return treeData; return treeData;
} }

View File

@@ -133,7 +133,6 @@ export class TableWidget {
this.oldPage = this.currentPage; this.oldPage = this.currentPage;
this.oldPageSize = this.pageSize; this.oldPageSize = this.pageSize;
}).catch(e => { }).catch(e => {
console.log(e);
this.currentPage = this.oldPage; this.currentPage = this.oldPage;
this.pageSize = this.oldPageSize; this.pageSize = this.oldPageSize;
}); });
@@ -161,7 +160,6 @@ export class TableWidget {
* @param {Object} oldRow 老的选中行 * @param {Object} oldRow 老的选中行
*/ */
currentRowChange (currentRow, oldRow) { currentRowChange (currentRow, oldRow) {
console.log(currentRow, oldRow);
this.currentRow = currentRow; this.currentRow = currentRow;
} }
clearTable () { clearTable () {

View File

@@ -190,9 +190,9 @@ import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/
import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins'; import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins';
/* eslint-disable-next-line */ /* eslint-disable-next-line */
import { StudentClassController, DictionaryController } from '@/api'; import { StudentClassController, DictionaryController } from '@/api';
import formEditClassCourseOrder from '@/views/generated/formEditClassCourseOrder'; import formCreateClass from '@/views/generated/formCreateClass.vue';
import formEditClass from '@/views/generated/formEditClass'; import formEditClass from '@/views/generated/formEditClass.vue';
import formCreateClass from '@/views/generated/formCreateClass'; import formEditClassCourseOrder from '@/views/generated/formEditClassCourseOrder.vue';
export default { export default {
name: 'formClass', name: 'formClass',
@@ -239,14 +239,14 @@ export default {
classCourseCard: { classCourseCard: {
isInit: false isInit: false
}, },
Student: { StudentClass: {
impl: new TableWidget(this.loadStudentWidgetData, this.loadStudentVerify, true, false) impl: new TableWidget(this.loadStudentClassWidgetData, this.loadStudentClassVerify, true, true, 'createTime', 1)
}, },
Course: { Course: {
impl: new TableWidget(this.loadCourseWidgetData, this.loadCourseVerify, true, false) impl: new TableWidget(this.loadCourseWidgetData, this.loadCourseVerify, true, false)
}, },
StudentClass: { Student: {
impl: new TableWidget(this.loadStudentClassWidgetData, this.loadStudentClassVerify, true, true, 'createTime', 1) impl: new TableWidget(this.loadStudentWidgetData, this.loadStudentVerify, true, false)
}, },
classStudentCard: { classStudentCard: {
isInit: false isInit: false
@@ -263,35 +263,41 @@ export default {
}, },
methods: { methods: {
/** /**
* 班级学生数据获取函数返回Promise * 班级数据数据获取函数返回Promise
*/ */
loadStudentWidgetData (params) { loadStudentClassWidgetData (params) {
if (
(this.formClass.StudentClass.impl.currentRow || {}).classId == null
) {
this.formClass.Student.impl.clearTable();
return Promise.reject();
}
if (params == null) params = {}; if (params == null) params = {};
params = { params = {
...params, ...params,
classId: (this.formClass.StudentClass.impl.currentRow || {}).classId studentClassDtoFilter: {
className: this.formClass.formFilterCopy.className,
schoolId: this.formClass.formFilterCopy.schoolId
}
} }
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
StudentClassController.listClassStudent(this, params).then(res => { StudentClassController.list(this, params).then(res => {
resolve({ resolve({
dataList: res.data.dataList, dataList: res.data.dataList,
totalCount: res.data.totalCount totalCount: res.data.totalCount
}); });
//
if (this.formClass.StudentClass.impl.currentRow !== null) {
this.$nextTick(() => {
let currentRow = findItemFromList(res.data.dataList, this.formClass.StudentClass.impl.currentRow.classId, 'classId');
this.$refs.studentClass.setCurrentRow(currentRow);
});
}
}).catch(e => { }).catch(e => {
reject(e); reject(e);
}); });
}); });
}, },
/** /**
* 班级学生数据获取检测函数返回true正常获取数据返回false停止获取数据 * 班级数据数据获取检测函数返回true正常获取数据返回false停止获取数据
*/ */
loadStudentVerify () { loadStudentClassVerify () {
this.formClass.formFilterCopy.className = this.formClass.formFilter.className;
this.formClass.formFilterCopy.schoolId = this.formClass.formFilter.schoolId;
return true; return true;
}, },
/** /**
@@ -327,41 +333,35 @@ export default {
return true; return true;
}, },
/** /**
* 班级数据数据获取函数返回Promise * 班级学生数据获取函数返回Promise
*/ */
loadStudentClassWidgetData (params) { loadStudentWidgetData (params) {
if (
(this.formClass.StudentClass.impl.currentRow || {}).classId == null
) {
this.formClass.Student.impl.clearTable();
return Promise.reject();
}
if (params == null) params = {}; if (params == null) params = {};
params = { params = {
...params, ...params,
studentClassFilter: { classId: (this.formClass.StudentClass.impl.currentRow || {}).classId
className: this.formClass.formFilterCopy.className,
schoolId: this.formClass.formFilterCopy.schoolId
}
} }
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
StudentClassController.list(this, params).then(res => { StudentClassController.listClassStudent(this, params).then(res => {
resolve({ resolve({
dataList: res.data.dataList, dataList: res.data.dataList,
totalCount: res.data.totalCount totalCount: res.data.totalCount
}); });
//
if (this.formClass.StudentClass.impl.currentRow !== null) {
this.$nextTick(() => {
let currentRow = findItemFromList(res.data.dataList, this.formClass.StudentClass.impl.currentRow.classId, 'classId');
this.$refs.studentClass.setCurrentRow(currentRow);
});
}
}).catch(e => { }).catch(e => {
reject(e); reject(e);
}); });
}); });
}, },
/** /**
* 班级数据数据获取检测函数返回true正常获取数据返回false停止获取数据 * 班级学生数据获取检测函数返回true正常获取数据返回false停止获取数据
*/ */
loadStudentClassVerify () { loadStudentVerify () {
this.formClass.formFilterCopy.className = this.formClass.formFilter.className;
this.formClass.formFilterCopy.schoolId = this.formClass.formFilter.schoolId;
return true; return true;
}, },
/** /**
@@ -385,7 +385,7 @@ export default {
/** /**
* 更新班级课程 * 更新班级课程
*/ */
refreshClassCourseCard (reloadData = false) { refreshClassCourseCardWidget (reloadData = false) {
// //
if (reloadData) { if (reloadData) {
this.formClass.Course.impl.refreshTable(true, 1); this.formClass.Course.impl.refreshTable(true, 1);
@@ -397,7 +397,7 @@ export default {
/** /**
* 更新班级学生 * 更新班级学生
*/ */
refreshClassStudentCard (reloadData = false) { refreshClassStudentCardWidget (reloadData = false) {
// //
if (reloadData) { if (reloadData) {
this.formClass.Student.impl.refreshTable(true, 1); this.formClass.Student.impl.refreshTable(true, 1);
@@ -409,7 +409,7 @@ export default {
/** /**
* 更新班级列表 * 更新班级列表
*/ */
refreshClassCard (reloadData = false) { refreshClassCardWidget (reloadData = false) {
// //
if (reloadData) { if (reloadData) {
this.formClass.StudentClass.impl.refreshTable(true, 1); this.formClass.StudentClass.impl.refreshTable(true, 1);
@@ -423,9 +423,9 @@ export default {
*/ */
refreshFormClass (reloadData = false) { refreshFormClass (reloadData = false) {
if (reloadData) { if (reloadData) {
this.formClass.Student.impl.refreshTable(true, 1); this.formClass.StudentClass.impl.refreshTable(true, 1);
} else { } else {
this.formClass.Student.impl.refreshTable(); this.formClass.StudentClass.impl.refreshTable();
} }
if (reloadData) { if (reloadData) {
this.formClass.Course.impl.refreshTable(true, 1); this.formClass.Course.impl.refreshTable(true, 1);
@@ -433,9 +433,9 @@ export default {
this.formClass.Course.impl.refreshTable(); this.formClass.Course.impl.refreshTable();
} }
if (reloadData) { if (reloadData) {
this.formClass.StudentClass.impl.refreshTable(true, 1); this.formClass.Student.impl.refreshTable(true, 1);
} else { } else {
this.formClass.StudentClass.impl.refreshTable(); this.formClass.Student.impl.refreshTable();
} }
if (!this.formClass.isInit) { if (!this.formClass.isInit) {
// //
@@ -449,9 +449,9 @@ export default {
let params = {}; let params = {};
this.$dialog.show('新建', formCreateClass, { this.$dialog.show('新建', formCreateClass, {
area: ['800px'] area: '800px'
}, params).then(res => { }, params).then(res => {
this.refreshClassCard(); this.refreshClassCardWidget();
}).catch(e => {}); }).catch(e => {});
}, },
/** /**
@@ -509,7 +509,7 @@ export default {
}; };
this.$dialog.show('课程顺序', formEditClassCourseOrder, { this.$dialog.show('课程顺序', formEditClassCourseOrder, {
area: ['400px'] area: '400px'
}, params).then(res => { }, params).then(res => {
this.formClass.Course.impl.refreshTable(); this.formClass.Course.impl.refreshTable();
}).catch(e => {}); }).catch(e => {});
@@ -546,7 +546,7 @@ export default {
}; };
this.$dialog.show('编辑', formEditClass, { this.$dialog.show('编辑', formEditClass, {
area: ['800px'] area: '800px'
}, params).then(res => { }, params).then(res => {
this.formClass.StudentClass.impl.refreshTable(); this.formClass.StudentClass.impl.refreshTable();
}).catch(e => {}); }).catch(e => {});
@@ -634,8 +634,8 @@ export default {
// //
'formClass.StudentClass.impl.currentRow': { 'formClass.StudentClass.impl.currentRow': {
handler (newValue) { handler (newValue) {
this.formClass.Student.impl.refreshTable(true, 1);
this.formClass.Course.impl.refreshTable(true, 1); this.formClass.Course.impl.refreshTable(true, 1);
this.formClass.Student.impl.refreshTable(true, 1);
}, },
immediate: true immediate: true
} }

View File

@@ -108,8 +108,8 @@ import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/
import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins'; import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins';
/* eslint-disable-next-line */ /* eslint-disable-next-line */
import { CourseController, DictionaryController } from '@/api'; import { CourseController, DictionaryController } from '@/api';
import formCreateCourse from '@/views/generated/formCreateCourse'; import formEditCourse from '@/views/generated/formEditCourse.vue';
import formEditCourse from '@/views/generated/formEditCourse'; import formCreateCourse from '@/views/generated/formCreateCourse.vue';
export default { export default {
name: 'formCourse', name: 'formCourse',
@@ -155,7 +155,7 @@ export default {
if (params == null) params = {}; if (params == null) params = {};
params = { params = {
...params, ...params,
courseFilter: { courseDtoFilter: {
courseName: this.formCourse.formFilterCopy.courseName, courseName: this.formCourse.formFilterCopy.courseName,
difficulty: this.formCourse.formFilterCopy.difficulty, difficulty: this.formCourse.formFilterCopy.difficulty,
gradeId: this.formCourse.formFilterCopy.gradeId, gradeId: this.formCourse.formFilterCopy.gradeId,
@@ -258,7 +258,7 @@ export default {
let params = {}; let params = {};
this.$dialog.show('新建', formCreateCourse, { this.$dialog.show('新建', formCreateCourse, {
area: ['800px'] area: '800px'
}, params).then(res => { }, params).then(res => {
this.refreshFormCourse(); this.refreshFormCourse();
}).catch(e => {}); }).catch(e => {});
@@ -272,7 +272,7 @@ export default {
}; };
this.$dialog.show('编辑', formEditCourse, { this.$dialog.show('编辑', formEditCourse, {
area: ['800px'] area: '800px'
}, params).then(res => { }, params).then(res => {
this.formCourse.Course.impl.refreshTable(); this.formCourse.Course.impl.refreshTable();
}).catch(e => {}); }).catch(e => {});

View File

@@ -13,8 +13,8 @@
<el-form ref="formCourseStats" :model="formData" class="full-width-input" style="width: 100%;" <el-form ref="formCourseStats" :model="formData" class="full-width-input" style="width: 100%;"
label-width="100px" size="mini" label-position="right" @submit.native.prevent> label-width="100px" size="mini" label-position="right" @submit.native.prevent>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col class="table-box" :span="12"> <el-col class="table-box gutter-bottom" :span="12">
<el-card class="base-card gutter-bottom" style="height: 350px" shadow="never" :body-style="{padding: '0px'}"> <el-card class="base-card" style="height: 350px" shadow="never" :body-style="{padding: '0px'}">
<div slot="header" class="base-card-header"> <div slot="header" class="base-card-header">
<span>课程统计年级</span> <span>课程统计年级</span>
<div class="base-card-operation"> <div class="base-card-operation">
@@ -31,8 +31,8 @@
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
<el-col class="table-box" :span="12"> <el-col class="table-box gutter-bottom" :span="12">
<el-card class="base-card gutter-bottom" style="height: 350px" shadow="never" :body-style="{padding: '0px'}"> <el-card class="base-card" style="height: 350px" shadow="never" :body-style="{padding: '0px'}">
<div slot="header" class="base-card-header"> <div slot="header" class="base-card-header">
<span>课程统计学科</span> <span>课程统计学科</span>
<div class="base-card-operation"> <div class="base-card-operation">
@@ -168,7 +168,7 @@ export default {
fieldName: 'gradeId' fieldName: 'gradeId'
} }
], ],
courseTransStatsFilter: { courseTransStatsDtoFilter: {
statsDateStart: Array.isArray(this.formCourseStats.formFilterCopy.statsDate) ? this.formCourseStats.formFilterCopy.statsDate[0] : undefined, statsDateStart: Array.isArray(this.formCourseStats.formFilterCopy.statsDate) ? this.formCourseStats.formFilterCopy.statsDate[0] : undefined,
statsDateEnd: Array.isArray(this.formCourseStats.formFilterCopy.statsDate) ? this.formCourseStats.formFilterCopy.statsDate[1] : undefined statsDateEnd: Array.isArray(this.formCourseStats.formFilterCopy.statsDate) ? this.formCourseStats.formFilterCopy.statsDate[1] : undefined
} }
@@ -210,7 +210,7 @@ export default {
fieldName: 'subjectId' fieldName: 'subjectId'
} }
], ],
courseTransStatsFilter: { courseTransStatsDtoFilter: {
statsDateStart: Array.isArray(this.formCourseStats.formFilterCopy.statsDate) ? this.formCourseStats.formFilterCopy.statsDate[0] : undefined, statsDateStart: Array.isArray(this.formCourseStats.formFilterCopy.statsDate) ? this.formCourseStats.formFilterCopy.statsDate[0] : undefined,
statsDateEnd: Array.isArray(this.formCourseStats.formFilterCopy.statsDate) ? this.formCourseStats.formFilterCopy.statsDate[1] : undefined statsDateEnd: Array.isArray(this.formCourseStats.formFilterCopy.statsDate) ? this.formCourseStats.formFilterCopy.statsDate[1] : undefined
} }
@@ -252,7 +252,7 @@ export default {
fieldName: 'statsDate' fieldName: 'statsDate'
} }
], ],
courseTransStatsFilter: { courseTransStatsDtoFilter: {
statsDateStart: Array.isArray(this.formCourseStats.formFilterCopy.statsDate) ? this.formCourseStats.formFilterCopy.statsDate[0] : undefined, statsDateStart: Array.isArray(this.formCourseStats.formFilterCopy.statsDate) ? this.formCourseStats.formFilterCopy.statsDate[0] : undefined,
statsDateEnd: Array.isArray(this.formCourseStats.formFilterCopy.statsDate) ? this.formCourseStats.formFilterCopy.statsDate[1] : undefined statsDateEnd: Array.isArray(this.formCourseStats.formFilterCopy.statsDate) ? this.formCourseStats.formFilterCopy.statsDate[1] : undefined
} }

View File

@@ -234,7 +234,7 @@ export default {
return; return;
} }
let params = { let params = {
studentClass: { studentClassDto: {
className: this.formData.StudentClass.className, className: this.formData.StudentClass.className,
schoolId: this.formData.StudentClass.schoolId, schoolId: this.formData.StudentClass.schoolId,
leaderId: this.formData.StudentClass.leaderId, leaderId: this.formData.StudentClass.leaderId,

View File

@@ -262,7 +262,7 @@ export default {
return; return;
} }
let params = { let params = {
course: { courseDto: {
courseName: this.formData.Course.courseName, courseName: this.formData.Course.courseName,
price: this.formData.Course.price, price: this.formData.Course.price,
description: this.formData.Course.description, description: this.formData.Course.description,

View File

@@ -177,7 +177,7 @@ export default {
return; return;
} }
let params = { let params = {
schoolInfo: { schoolInfoDto: {
schoolName: this.formData.SchoolInfo.schoolName, schoolName: this.formData.SchoolInfo.schoolName,
provinceId: this.formData.SchoolInfo.provinceId, provinceId: this.formData.SchoolInfo.provinceId,
cityId: this.formData.SchoolInfo.cityId cityId: this.formData.SchoolInfo.cityId

View File

@@ -406,7 +406,7 @@ export default {
return; return;
} }
let params = { let params = {
student: { studentDto: {
loginMobile: this.formData.Student.loginMobile, loginMobile: this.formData.Student.loginMobile,
studentName: this.formData.Student.studentName, studentName: this.formData.Student.studentName,
provinceId: this.formData.Student.provinceId, provinceId: this.formData.Student.provinceId,

View File

@@ -240,7 +240,7 @@ export default {
return; return;
} }
let params = { let params = {
studentClass: { studentClassDto: {
classId: this.classId, classId: this.classId,
className: this.formData.StudentClass.className, className: this.formData.StudentClass.className,
schoolId: this.formData.StudentClass.schoolId, schoolId: this.formData.StudentClass.schoolId,

View File

@@ -116,7 +116,7 @@ export default {
return; return;
} }
let params = { let params = {
classCourse: { classCourseDto: {
classId: this.classId, classId: this.classId,
courseId: this.courseId, courseId: this.courseId,
courseOrder: this.formData.StudentClass.course.classCourse.courseOrder courseOrder: this.formData.StudentClass.course.classCourse.courseOrder

View File

@@ -268,7 +268,7 @@ export default {
return; return;
} }
let params = { let params = {
course: { courseDto: {
courseId: this.courseId, courseId: this.courseId,
courseName: this.formData.Course.courseName, courseName: this.formData.Course.courseName,
price: this.formData.Course.price, price: this.formData.Course.price,

View File

@@ -183,7 +183,7 @@ export default {
return; return;
} }
let params = { let params = {
schoolInfo: { schoolInfoDto: {
schoolId: this.schoolId, schoolId: this.schoolId,
schoolName: this.formData.SchoolInfo.schoolName, schoolName: this.formData.SchoolInfo.schoolName,
provinceId: this.formData.SchoolInfo.provinceId, provinceId: this.formData.SchoolInfo.provinceId,

View File

@@ -468,7 +468,7 @@ export default {
return; return;
} }
let params = { let params = {
student: { studentDto: {
studentId: this.studentId, studentId: this.studentId,
loginMobile: this.formData.Student.loginMobile, loginMobile: this.formData.Student.loginMobile,
studentName: this.formData.Student.studentName, studentName: this.formData.Student.studentName,

View File

@@ -78,8 +78,8 @@ import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/
import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins'; import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins';
/* eslint-disable-next-line */ /* eslint-disable-next-line */
import { SchoolInfoController, DictionaryController } from '@/api'; import { SchoolInfoController, DictionaryController } from '@/api';
import formCreateSchool from '@/views/generated/formCreateSchool'; import formEditSchool from '@/views/generated/formEditSchool.vue';
import formEditSchool from '@/views/generated/formEditSchool'; import formCreateSchool from '@/views/generated/formCreateSchool.vue';
export default { export default {
name: 'formSchool', name: 'formSchool',
@@ -120,7 +120,7 @@ export default {
if (params == null) params = {}; if (params == null) params = {};
params = { params = {
...params, ...params,
schoolInfoFilter: { schoolInfoDtoFilter: {
schoolName: this.formSchool.formFilterCopy.schoolName, schoolName: this.formSchool.formFilterCopy.schoolName,
provinceId: this.formSchool.formFilterCopy.provinceId, provinceId: this.formSchool.formFilterCopy.provinceId,
cityId: this.formSchool.formFilterCopy.cityId cityId: this.formSchool.formFilterCopy.cityId
@@ -213,7 +213,7 @@ export default {
let params = {}; let params = {};
this.$dialog.show('新建', formCreateSchool, { this.$dialog.show('新建', formCreateSchool, {
area: ['600px'] area: '600px'
}, params).then(res => { }, params).then(res => {
this.refreshFormSchool(); this.refreshFormSchool();
}).catch(e => {}); }).catch(e => {});
@@ -227,7 +227,7 @@ export default {
}; };
this.$dialog.show('编辑', formEditSchool, { this.$dialog.show('编辑', formEditSchool, {
area: ['600px'] area: '600px'
}, params).then(res => { }, params).then(res => {
this.formSchool.SchoolInfo.impl.refreshTable(); this.formSchool.SchoolInfo.impl.refreshTable();
}).catch(e => {}); }).catch(e => {});

View File

@@ -156,7 +156,7 @@ export default {
if (params == null) params = {}; if (params == null) params = {};
params = { params = {
...params, ...params,
courseFilter: { courseDtoFilter: {
courseName: this.formSetClassCourse.formFilterCopy.courseName, courseName: this.formSetClassCourse.formFilterCopy.courseName,
difficulty: this.formSetClassCourse.formFilterCopy.difficulty, difficulty: this.formSetClassCourse.formFilterCopy.difficulty,
gradeId: this.formSetClassCourse.formFilterCopy.gradeId, gradeId: this.formSetClassCourse.formFilterCopy.gradeId,
@@ -265,7 +265,7 @@ export default {
} }
let params = { let params = {
classId: this.classId, classId: this.classId,
classCourseList: this.tableSelectRowList.map((item) => { classCourseDtoList: this.tableSelectRowList.map((item) => {
return { return {
courseId: item.courseId courseId: item.courseId
}; };

View File

@@ -124,7 +124,7 @@ export default {
if (params == null) params = {}; if (params == null) params = {};
params = { params = {
...params, ...params,
studentFilter: { studentDtoFilter: {
schoolId: this.formSetClassStudent.formFilterCopy.schoolId schoolId: this.formSetClassStudent.formFilterCopy.schoolId
}, },
classId: this.classId classId: this.classId
@@ -191,7 +191,7 @@ export default {
} }
let params = { let params = {
classId: this.classId, classId: this.classId,
classStudentList: this.tableSelectRowList.map((item) => { classStudentDtoList: this.tableSelectRowList.map((item) => {
return { return {
studentId: item.studentId studentId: item.studentId
}; };

View File

@@ -103,8 +103,8 @@ import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/
import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins'; import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins';
/* eslint-disable-next-line */ /* eslint-disable-next-line */
import { StudentController, DictionaryController } from '@/api'; import { StudentController, DictionaryController } from '@/api';
import formEditStudent from '@/views/generated/formEditStudent'; import formCreateStudent from '@/views/generated/formCreateStudent.vue';
import formCreateStudent from '@/views/generated/formCreateStudent'; import formEditStudent from '@/views/generated/formEditStudent.vue';
export default { export default {
name: 'formStudent', name: 'formStudent',
@@ -147,7 +147,7 @@ export default {
if (params == null) params = {}; if (params == null) params = {};
params = { params = {
...params, ...params,
studentFilter: { studentDtoFilter: {
gradeId: this.formStudent.formFilterCopy.gradeId, gradeId: this.formStudent.formFilterCopy.gradeId,
schoolId: this.formStudent.formFilterCopy.schoolId, schoolId: this.formStudent.formFilterCopy.schoolId,
registerTimeStart: Array.isArray(this.formStudent.formFilterCopy.registerDate) ? this.formStudent.formFilterCopy.registerDate[0] : undefined, registerTimeStart: Array.isArray(this.formStudent.formFilterCopy.registerDate) ? this.formStudent.formFilterCopy.registerDate[0] : undefined,
@@ -243,7 +243,7 @@ export default {
let params = {}; let params = {};
this.$dialog.show('新建', formCreateStudent, { this.$dialog.show('新建', formCreateStudent, {
area: ['800px'] area: '800px'
}, params).then(res => { }, params).then(res => {
this.refreshFormStudent(); this.refreshFormStudent();
}).catch(e => {}); }).catch(e => {});
@@ -257,7 +257,7 @@ export default {
}; };
this.$dialog.show('编辑', formEditStudent, { this.$dialog.show('编辑', formEditStudent, {
area: ['800px'] area: '800px'
}, params).then(res => { }, params).then(res => {
this.formStudent.Student.impl.refreshTable(); this.formStudent.Student.impl.refreshTable();
}).catch(e => {}); }).catch(e => {});

View File

@@ -145,7 +145,7 @@ export default {
if (params == null) params = {}; if (params == null) params = {};
params = { params = {
...params, ...params,
studentActionTransFilter: { studentActionTransDtoFilter: {
gradeId: this.formStudentActionDetail.formFilterCopy.gradeId, gradeId: this.formStudentActionDetail.formFilterCopy.gradeId,
actionType: this.formStudentActionDetail.formFilterCopy.actionType, actionType: this.formStudentActionDetail.formFilterCopy.actionType,
createTimeStart: Array.isArray(this.formStudentActionDetail.formFilterCopy.statsDate) ? this.formStudentActionDetail.formFilterCopy.statsDate[0] : undefined, createTimeStart: Array.isArray(this.formStudentActionDetail.formFilterCopy.statsDate) ? this.formStudentActionDetail.formFilterCopy.statsDate[0] : undefined,

View File

@@ -138,7 +138,7 @@ export default {
fieldName: 'gradeId' fieldName: 'gradeId'
} }
], ],
studentActionStatsFilter: { studentActionStatsDtoFilter: {
statsDateStart: Array.isArray(this.formStudentActionStats.formFilterCopy.statsDate) ? this.formStudentActionStats.formFilterCopy.statsDate[0] : undefined, statsDateStart: Array.isArray(this.formStudentActionStats.formFilterCopy.statsDate) ? this.formStudentActionStats.formFilterCopy.statsDate[0] : undefined,
statsDateEnd: Array.isArray(this.formStudentActionStats.formFilterCopy.statsDate) ? this.formStudentActionStats.formFilterCopy.statsDate[1] : undefined, statsDateEnd: Array.isArray(this.formStudentActionStats.formFilterCopy.statsDate) ? this.formStudentActionStats.formFilterCopy.statsDate[1] : undefined,
gradeId: this.formStudentActionStats.formFilterCopy.gradeId gradeId: this.formStudentActionStats.formFilterCopy.gradeId

View File

@@ -1,10 +1,10 @@
<template> <template>
<div style="height: 100%; position: relative;" class="sidebar-bg"> <div style="height: 100%; position: relative;" class="sidebar-bg">
<div class="sidebar-title"> <div class="sidebar-title">
<img :src="logoImage" style="width: 40px; height: 40px; border-radius: 50%;" /> <img :src="logoImage" style="width: 32px; height: 32px; border-radius: 50%;" />
<p class="sidebar-title-text">{{getProjectName()}}</p> <p class="sidebar-title-text">{{getProjectName()}}</p>
</div> </div>
<div style="height: 100%; padding-bottom: 60px;"> <div class="left-menu" style="height: 100%; padding-bottom: 60px;">
<el-scrollbar wrap-class="scrollbar_dropdown__wrap" style="height: 100%;"> <el-scrollbar wrap-class="scrollbar_dropdown__wrap" style="height: 100%;">
<el-menu ref="menu" mode="vertical" :default-active="getCurrentMenuId" :unique-opened="true" @select="selectMenu" <el-menu ref="menu" mode="vertical" :default-active="getCurrentMenuId" :unique-opened="true" @select="selectMenu"
:active-text-color="activeTextColor" :collapse="getCollapse" > :active-text-color="activeTextColor" :collapse="getCollapse" >
@@ -28,7 +28,7 @@ export default {
isCollapse: false, isCollapse: false,
collapseLeft: '200px', collapseLeft: '200px',
showCollapseBtn: true, showCollapseBtn: true,
logoImage: require('../../../../assets/img/logo.jpg') logoImage: require('../../../../assets/img/logo.png')
} }
}, },
components: { components: {
@@ -73,3 +73,10 @@ export default {
} }
}; };
</script> </script>
<style scoped>
.sidebar-title-text {
font-size: 18px;
font-weight: bold;
}
</style>

View File

@@ -34,7 +34,7 @@ export default {
.tags-item { .tags-item {
height: 30px; height: 30px;
line-height: 30px; line-height: 30px;
border: 1px solid $--border-color-extra-light; border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 3px; border-radius: 3px;
box-sizing: border-box; box-sizing: border-box;
display: inline-block; display: inline-block;

View File

@@ -14,7 +14,7 @@
</div> </div>
<div v-show="visible" @click.stop="onMenuMaskClick" @contextmenu="openMaskMenu" <div v-show="visible" @click.stop="onMenuMaskClick" @contextmenu="openMaskMenu"
style="z-index: 99999; position: fixed; background: rgba(0, 0, 0, 0.01); width: 100vw; height: 100vh; top: 0px; left: 0px"> style="z-index: 99999; position: fixed; background: rgba(0, 0, 0, 0.01); width: 100vw; height: 100vh; top: 0px; left: 0px">
<ul class="contextmenu" style="z-index: 99999;" :style="{left: left + 'px', top: top + 'px'}"> <ul class="contextmenu" style="z-index: 99999; background: white;" :style="{left: left + 'px', top: top + 'px'}">
<li @click="closeSelectTag">关闭</li> <li @click="closeSelectTag">关闭</li>
<li @click="closeOthersTags">关闭其他</li> <li @click="closeOthersTags">关闭其他</li>
</ul> </ul>
@@ -123,7 +123,6 @@ export default {
let width = 0; let width = 0;
let childList = this.$children; let childList = this.$children;
for (let i = this.beginPos; i < childList.length; i++) { for (let i = this.beginPos; i < childList.length; i++) {
console.log(childList[i], childList[i].$el.offsetWidth);
width += childList[i].$el.offsetWidth; width += childList[i].$el.offsetWidth;
// 间隔距离 // 间隔距离
width += 5; width += 5;
@@ -158,9 +157,6 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/assets/style/element-variables.scss'; @import '@/assets/style/element-variables.scss';
.tags-panel { .tags-panel {
background: white;
box-shadow: 0px 1px 4px rgba(0,21,41,.08);
border-top: 1px solid $--border-color-extra-light;
} }
.main-panel { .main-panel {
margin: 0px 30px; margin: 0px 30px;
@@ -182,7 +178,6 @@ export default {
font-size: 14px; font-size: 14px;
cursor: pointer; cursor: pointer;
z-index: 100; z-index: 100;
background: white;
box-sizing: border-box; box-sizing: border-box;
} }
.arrow.left { .arrow.left {
@@ -194,7 +189,6 @@ export default {
.contextmenu { .contextmenu {
margin: 0px; margin: 0px;
background: #FFF;
z-index: 2; z-index: 2;
position: fixed; position: fixed;
list-style-type: none; list-style-type: none;

View File

@@ -1,10 +1,10 @@
<template> <template>
<el-container :style="getMainStyle"> <el-container :style="getMainStyle">
<el-aside width='200px' class="sidebar"> <el-aside width='250px' class="sidebar">
<side-bar style="overflow: hidden"></side-bar> <side-bar style="overflow: hidden"></side-bar>
</el-aside> </el-aside>
<el-container style="background-color: #F5F8F9"> <el-container style="background-color: #F5F8F9">
<el-header class="header"> <el-header class="header" style="box-shadow: 0px 2px 4px 0px rgba(206, 206, 206, 0.5);">
<breadcrumb class="breadcrumb-container" /> <breadcrumb class="breadcrumb-container" />
<div class="menu-column" v-if="getMultiColumn" style="margin-left: 20px;"> <div class="menu-column" v-if="getMultiColumn" style="margin-left: 20px;">
<el-menu mode="horizontal" :default-active="getCurrentColumnId" @select="onColumnChange"> <el-menu mode="horizontal" :default-active="getCurrentColumnId" @select="onColumnChange">
@@ -24,7 +24,7 @@
</div> </div>
</el-header> </el-header>
<el-main :style="{'padding-bottom': '15px', 'padding-top': (getMultiTags ? '0px' : '15px')}"> <el-main :style="{'padding-bottom': '15px', 'padding-top': (getMultiTags ? '0px' : '15px')}">
<tag-panel v-if="getMultiTags" :tagList="getTagList" style="margin-bottom: 10px;" /> <tag-panel v-if="getMultiTags" :tagList="getTagList" style="margin: 0px 20px;" />
<el-scrollbar :style="getContextStyle" wrap-class="scrollbar_dropdown__wrap"> <el-scrollbar :style="getContextStyle" wrap-class="scrollbar_dropdown__wrap">
<transition name="fade" mode="out-in"> <transition name="fade" mode="out-in">
<keep-alive :include="getCachePages"> <keep-alive :include="getCachePages">
@@ -75,7 +75,9 @@ export default {
clearTimeout(timerID); clearTimeout(timerID);
timerID = setTimeout(() => { timerID = setTimeout(() => {
var h = document.documentElement['clientHeight']; var h = document.documentElement['clientHeight'];
var w = document.documentElement['clientWidth'];
_this.setClientHeight(h); _this.setClientHeight(h);
_this.setClientWidth(w);
}, 50); }, 50);
} }
}, },
@@ -106,6 +108,7 @@ export default {
}, },
...mapMutations([ ...mapMutations([
'setClientHeight', 'setClientHeight',
'setClientWidth',
'setCurrentColumnId', 'setCurrentColumnId',
'clearCachePage', 'clearCachePage',
'clearAllTags', 'clearAllTags',

View File

@@ -1,9 +1,11 @@
<template> <template>
<div class="login-form"> <div class="login-form">
<el-card class="box-card" style="width: 30vw; background-color: rgba(255, 255, 255, 0.9); border-width: 0px;" :body-style="{ padding: '40px' }"> <div class="login-box">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()"> <img :src="bkImg" style="height: 100%; flex-shrink: 0" />
<el-row> <div class="login-input">
<h3 class="title">橙单代码生成器</h3> <img :src="logoImg" />
<span class="title">中台化低代码生成工具</span>
<el-form :model="dataForm" :rules="dataRule" size="medium" ref="dataForm" @keyup.enter.native="dataFormSubmit()" style="width: 356px; margin-top: 4vh;">
<el-col :span="24"> <el-col :span="24">
<el-form-item prop="mobilePhone"> <el-form-item prop="mobilePhone">
<el-input v-model="dataForm.mobilePhone" style="width: 100%;" placeholder="帐号"></el-input> <el-input v-model="dataForm.mobilePhone" style="width: 100%;" placeholder="帐号"></el-input>
@@ -14,14 +16,14 @@
<el-input v-model="dataForm.password" style="width: 100%;" type="password" placeholder="密码" show-password></el-input> <el-input v-model="dataForm.password" style="width: 100%;" type="password" placeholder="密码" show-password></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-button class="login-btn-submit" type="primary" style="width: 100%;" <el-button class="login-btn-submit" type="warning" style="width: 100%;"
@click="dataFormSubmit()" @click="dataFormSubmit()"
:loading="isHttpLoading"> :loading="isHttpLoading">
登录 登录
</el-button> </el-button>
</el-row>
</el-form> </el-form>
</el-card> </div>
</div>
</div> </div>
</template> </template>
@@ -34,6 +36,8 @@ import { encrypt, setToken } from '@/utils';
export default { export default {
data () { data () {
return { return {
bkImg: require('@/assets/img/login.png'),
logoImg: require('@/assets/img/login_logo.png'),
dataForm: { dataForm: {
mobilePhone: 'admin', mobilePhone: 'admin',
password: '123456' password: '123456'
@@ -82,21 +86,45 @@ export default {
<style lang="scss"> <style lang="scss">
.login-form { .login-form {
width: 100vw;
height: 100vh;
background: #292D36;
display: flex; display: flex;
justify-content: center; justify-content: center;
flex-direction: column;
align-items: center; align-items: center;
height: 100vh; .login-box {
background: url(~@/assets/img/login_bg.jpg) no-repeat 50%, #000; display: flex;
background-size: 100%; align-items: center;
height: 70vh;
.title { padding: 7vh;
margin: 0px; border-radius: 3px;
margin-bottom: 20px; background: white;
color: #707070; .login-input {
font-size: 24; height: 100%;
text-align: center; width: 420px;
display: block; display: flex;
align-items: center;
flex-direction: column;
img {
width: 356px;
height: 42px;
margin-top: 6vh;
} }
.title {
color: #232323;
font-size: 20px;
margin-top: 2vh;
}
}
}
}
.login-form .el-input__inner {
height: 45px!important;
}
.login-form .el-button {
height: 45px!important;
font-size: 20px;
} }
</style> </style>

View File

@@ -1,11 +1,11 @@
<template> <template>
<el-container> <el-container class="advance-query-form">
<el-aside width="300px"> <el-aside width="300px">
<el-card class="base-card" shadow="never" :body-style="{ padding: '0px' }"> <el-card class="base-card" shadow="never" :body-style="{ padding: '0px' }" style="border: none;">
<div slot="header" class="base-card-header"> <div slot="header" class="base-card-header">
<span>字典列表</span> <span>字典列表</span>
</div> </div>
<el-scrollbar :style="{height: (getMainContextHeight - 94) + 'px'}" class="custom-scroll"> <el-scrollbar :style="{'height': (getMainContextHeight - 51) + 'px'}" class="custom-scroll">
<el-tree :data="dictList" :props="{label: 'name'}" node-key="variableName" :highlight-current="true" <el-tree :data="dictList" :props="{label: 'name'}" node-key="variableName" :highlight-current="true"
:current-node-key="(dictList[0] || {}).variableName" @node-click="onDictChange"> :current-node-key="(dictList[0] || {}).variableName" @node-click="onDictChange">
<div class="module-node-item" slot-scope="{ data }"> <div class="module-node-item" slot-scope="{ data }">
@@ -15,7 +15,7 @@
</el-scrollbar> </el-scrollbar>
</el-card> </el-card>
</el-aside> </el-aside>
<el-main style="padding-left: 15px;"> <el-main style="margin-left: 15px; background-color: white; padding: 20px;">
<el-form label-width="120px" size="mini" label-position="left" @submit.native.prevent> <el-form label-width="120px" size="mini" label-position="left" @submit.native.prevent>
<filter-box :item-width="350"> <filter-box :item-width="350">
<el-form-item v-if="dirtyCount > 0" label="失效缓存数量:"> <el-form-item v-if="dirtyCount > 0" label="失效缓存数量:">
@@ -37,7 +37,7 @@
<el-col :span="24"> <el-col :span="24">
<el-table :data="getCurrentDictData" size="mini" header-cell-class-name="table-header-gray" <el-table :data="getCurrentDictData" size="mini" header-cell-class-name="table-header-gray"
:row-style="tableRowStyle" :row-style="tableRowStyle"
:height="(getMainContextHeight - 88) + 'px'" row-key="id"> :height="(getMainContextHeight - 90) + 'px'" row-key="id">
<el-table-column label="ID" prop="id" /> <el-table-column label="ID" prop="id" />
<el-table-column label="字典名称" prop="name"> <el-table-column label="字典名称" prop="name">
<template slot-scope="scope"> <template slot-scope="scope">
@@ -95,7 +95,6 @@ export default {
}, },
methods: { methods: {
tableRowStyle ({row, rowIndex}) { tableRowStyle ({row, rowIndex}) {
console.log(row);
if (row.dirty) { if (row.dirty) {
return { return {
background: '#FFE1E1' background: '#FFE1E1'

View File

@@ -70,9 +70,9 @@ export default {
this.$refs.form.validate((valid) => { this.$refs.form.validate((valid) => {
if (valid) { if (valid) {
let params = {}; let params = {};
params[this.dictInfo.variableName] = {}; params[this.dictInfo.variableName + 'Dto'] = {};
params[this.dictInfo.variableName][this.dictInfo.nameKey] = this.formData.name; params[this.dictInfo.variableName + 'Dto'][this.dictInfo.nameKey] = this.formData.name;
params[this.dictInfo.variableName][this.dictInfo.parentKey] = this.formData.parentId; params[this.dictInfo.variableName + 'Dto'][this.dictInfo.parentKey] = this.formData.parentId;
if (this.formData.id == null) { if (this.formData.id == null) {
this.dictInfo.addApi(this, params).then(res => { this.dictInfo.addApi(this, params).then(res => {
@@ -82,7 +82,7 @@ export default {
}); });
} else { } else {
params[this.dictInfo.variableName][this.dictInfo.idKey] = this.formData.id; params[this.dictInfo.variableName + 'Dto'][this.dictInfo.idKey] = this.formData.id;
this.dictInfo.updateApi(this, params).then(res => { this.dictInfo.updateApi(this, params).then(res => {
this.$message.success('操作成功'); this.$message.success('操作成功');
this.onCancel(true); this.onCancel(true);

View File

@@ -68,7 +68,7 @@ export default {
this.$refs['form'].validate((valid) => { this.$refs['form'].validate((valid) => {
if (valid) { if (valid) {
let params = {}; let params = {};
params.sysMenu = {...this.formData}; params.sysMenuDto = {...this.formData};
if (this.isEdit) { if (this.isEdit) {
SystemController.updateMenu(this, params).then(res => { SystemController.updateMenu(this, params).then(res => {

View File

@@ -4,7 +4,7 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="上级菜单"> <el-form-item label="上级菜单">
<el-cascader :options="menuTree" v-model="parentMenuPath" :props="menuProps" placeholder="选择父菜单" <el-cascader :options="menuTree" v-model="parentMenuPath" :props="menuProps" placeholder="选择父菜单"
:disabled="!canEditParent" :clearable="true" :change-on-select="true" size="mini" :disabled="!canEditParent || isEdit" :clearable="true" :change-on-select="true" size="mini"
@change="onParentMenuChange" /> @change="onParentMenuChange" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -44,7 +44,8 @@
<el-input size="mini" v-model="permCodeNameFilter" placeholder="输入权限字名称过滤" style="width: 250px;" clearable suffix-icon="el-icon-search" /> <el-input size="mini" v-model="permCodeNameFilter" placeholder="输入权限字名称过滤" style="width: 250px;" clearable suffix-icon="el-icon-search" />
</div> </div>
<el-scrollbar style="height: 210px;" wrap-class="scrollbar_dropdown__wrap"> <el-scrollbar style="height: 210px;" wrap-class="scrollbar_dropdown__wrap">
<el-tree ref="permCodeTree" v-show="formData.menuType" :check-strictly="true" <el-tree ref="permCodeTree" :check-strictly="true"
v-show="formData.menuType"
:props="treeProps" node-key="permCodeId" :default-expanded-keys="defaultExpandedKeys" :props="treeProps" node-key="permCodeId" :default-expanded-keys="defaultExpandedKeys"
show-checkbox :data="getPermCodeTree" :filter-node-method="filterPermCodeNode"></el-tree> show-checkbox :data="getPermCodeTree" :filter-node-method="filterPermCodeNode"></el-tree>
</el-scrollbar> </el-scrollbar>
@@ -64,9 +65,9 @@
<script> <script>
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
import { treeDataTranslate, findTreeNodePath, findTreeNode, findItemFromList } from '@/utils' import { treeDataTranslate, findTreeNodePath, findTreeNode, findItemFromList } from '@/utils';
import { SystemController } from '@/api' import { SystemController } from '@/api';
import IconSelect from '@/components/IconSelect/index.vue' import IconSelect from '@/components/IconSelect/index.vue';
export default { export default {
props: { props: {
@@ -159,12 +160,11 @@ export default {
this.$refs['form'].validate((valid) => { this.$refs['form'].validate((valid) => {
if (valid) { if (valid) {
let params = {}; let params = {};
params.sysMenu = {...this.formData}; params.sysMenuDto = {...this.formData};
if (this.parentMenuPath.length > 0) { if (this.parentMenuPath.length > 0) {
params.sysMenu.parentId = this.parentMenuPath[this.parentMenuPath.length - 1]; params.sysMenuDto.parentId = this.parentMenuPath[this.parentMenuPath.length - 1];
} }
if ([this.SysMenuType.MENU, this.SysMenuType.BUTTON, this.SysMenuType.FRAGMENT].indexOf(params.sysMenu.menuType) !== -1) { if ([this.SysMenuType.MENU, this.SysMenuType.BUTTON, this.SysMenuType.FRAGMENT].indexOf(params.sysMenuDto.menuType) !== -1) {
let tempList = this.$refs.permCodeTree.getHalfCheckedKeys(); let tempList = this.$refs.permCodeTree.getHalfCheckedKeys();
tempList = tempList.concat(this.$refs.permCodeTree.getCheckedKeys()); tempList = tempList.concat(this.$refs.permCodeTree.getCheckedKeys());
params.permCodeIdListString = tempList.join(','); params.permCodeIdListString = tempList.join(',');

View File

@@ -126,7 +126,7 @@ export default {
this.$refs.formCreatePerm.validate((valid) => { this.$refs.formCreatePerm.validate((valid) => {
if (!valid) return; if (!valid) return;
let params = { let params = {
sysPerm: { sysPermDto: {
permId: this.permId, permId: this.permId,
showOrder: this.formData.SysPerm.showOrder, showOrder: this.formData.SysPerm.showOrder,
moduleId: Array.isArray(this.formData.SysPerm.moduleId) ? this.formData.SysPerm.moduleId[this.formData.SysPerm.moduleId.length - 1] : undefined, moduleId: Array.isArray(this.formData.SysPerm.moduleId) ? this.formData.SysPerm.moduleId[this.formData.SysPerm.moduleId.length - 1] : undefined,

View File

@@ -145,14 +145,14 @@ export default {
if (valid) { if (valid) {
let selectedPermList = this.getTreeLeafKeys(); let selectedPermList = this.getTreeLeafKeys();
let params = {}; let params = {};
params.sysPermCode = {...this.formData}; params.sysPermCodeDto = {...this.formData};
delete params.sysPermCode.children; delete params.sysPermCodeDto.children;
params.sysPermCode.permCodeType = (this.permCodeType == null) ? this.SysPermCodeType.FORM : this.permCodeType; params.sysPermCodeDto.permCodeType = (this.permCodeType == null) ? this.SysPermCodeType.FORM : this.permCodeType;
if (this.parentPermCodePath.length > 0) { if (this.parentPermCodePath.length > 0) {
params.sysPermCode.parentId = this.parentPermCodePath[this.parentPermCodePath.length - 1]; params.sysPermCodeDto.parentId = this.parentPermCodePath[this.parentPermCodePath.length - 1];
} }
params.permIdListString = selectedPermList.join(','); params.permIdListString = selectedPermList.join(',');
if (params.sysPermCode.permCodeId != null) { if (params.sysPermCodeDto.permCodeId != null) {
SystemController.updatePermCode(this, params).then(res => { SystemController.updatePermCode(this, params).then(res => {
resolve(res); resolve(res);
this.$message.success('编辑成功'); this.$message.success('编辑成功');

View File

@@ -128,7 +128,7 @@ export default {
this.$refs.formCreatePermModule.validate((valid) => { this.$refs.formCreatePermModule.validate((valid) => {
if (!valid) return; if (!valid) return;
let params = { let params = {
sysPermModule: { sysPermModuleDto: {
moduleId: this.moduleId, moduleId: this.moduleId,
moduleName: this.formData.SysPermModule.moduleName, moduleName: this.formData.SysPermModule.moduleName,
showOrder: this.formData.SysPermModule.showOrder, showOrder: this.formData.SysPermModule.showOrder,

View File

@@ -97,7 +97,7 @@ export default {
return; return;
} }
let params = { let params = {
sysRole: {...this.formData} sysRoleDto: {...this.formData}
} }
params.menuIdListString = selectMenu.join(','); params.menuIdListString = selectMenu.join(',');
if (this.isEdit) { if (this.isEdit) {

View File

@@ -106,7 +106,7 @@ export default {
} }
let params = { let params = {
sysUser: { sysUserDto: {
userId: this.formData.userId, userId: this.formData.userId,
loginName: this.formData.loginName, loginName: this.formData.loginName,
password: this.formData.password, password: this.formData.password,
@@ -153,7 +153,7 @@ export default {
}, },
mounted () { mounted () {
if (this.rowData != null) { if (this.rowData != null) {
this.formData = {...this.rowData, dataPermIdList: [], roleIdList: []}; this.formData = {...this.rowData, roleIdList: []};
if (Array.isArray(this.formData.sysUserRoleList)) { if (Array.isArray(this.formData.sysUserRoleList)) {
this.formData.roleIdList = this.formData.sysUserRoleList.map(item => item.roleId); this.formData.roleIdList = this.formData.sysUserRoleList.map(item => item.roleId);
} }

View File

@@ -148,7 +148,7 @@ export default {
}, },
loadSysUserData (params) { loadSysUserData (params) {
params.roleId = this.roleId; params.roleId = this.roleId;
params.sysUserFilter = { params.sysUserDtoFilter = {
loginName: this.formSysUser.formFilterCopy.sysUserLoginName, loginName: this.formSysUser.formFilterCopy.sysUserLoginName,
userStatus: this.formSysUser.formFilterCopy.sysUserStatus userStatus: this.formSysUser.formFilterCopy.sysUserStatus
} }

View File

@@ -0,0 +1,146 @@
<template>
<div style="position: relative;">
<el-form label-width="100px" size="mini" label-position="right" @submit.native.prevent>
<filter-box :item-width="350">
<el-form-item label="登录名称">
<el-input class="filter-item" v-model="formSysLoginUser.formFilter.loginName" :clearable="true" />
</el-form-item>
<el-button slot="operator" type="primary" :plain="true" size="mini" @click="refreshFormOperationType(true)">查询</el-button>
</filter-box>
</el-form>
<el-row>
<el-col :span="24">
<el-table ref="teacher" :data="formSysLoginUser.loginUser.impl.dataList" size="mini" @sort-change="formSysLoginUser.loginUser.impl.onSortChange"
header-cell-class-name="table-header-gray">
<el-table-column label="序号" header-align="center" align="center" type="index" width="55px" :index="formSysLoginUser.loginUser.impl.getTableIndex" />
<el-table-column label="登录名称" prop="loginName" />
<el-table-column label="用户昵称" prop="showName" />
<el-table-column label="登录 IP" prop="loginIp" />
<el-table-column label="登录时间" prop="loginTime" />
<el-table-column label="操作" fixed="right" width="150px" >
<template slot-scope="scope">
<el-button @click.stop="onDeleteLoginUserClick(scope.row)" type="text" size="mini">
强退
</el-button>
</template>
</el-table-column>
</el-table>
<el-row type="flex" justify="end" style="margin-top: 10px;">
<el-pagination
:total="formSysLoginUser.loginUser.impl.totalCount"
:current-page="formSysLoginUser.loginUser.impl.currentPage"
:page-size="formSysLoginUser.loginUser.impl.pageSize"
:page-sizes="[10, 20, 50, 100]"
layout="total, prev, pager, next, sizes"
@current-change="formSysLoginUser.loginUser.impl.onCurrentPageChange"
@size-change="formSysLoginUser.loginUser.impl.onPageSizeChange">
</el-pagination>
</el-row>
</el-col>
</el-row>
</div>
</template>
<script>
/* eslint-disable-next-line */
import { TableWidget } from '@/utils/widget.js';
/* eslint-disable-next-line */
import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins';
/* eslint-disable-next-line */
import { SystemController } from '@/api';
export default {
name: 'formSysLoginUser',
mixins: [uploadMixin, statsDateRangeMixin, cachePageMixin],
data () {
return {
formSysLoginUser: {
formFilter: {
loginName: undefined
},
formFilterCopy: {
loginName: undefined
},
loginUser: {
impl: new TableWidget(this.loadLoginUserWidgetData, this.loadLoginUserVerify, true, false)
},
isInit: false
}
}
},
methods: {
/**
* 登录用户数据数据获取函数返回Promise
*/
loadLoginUserWidgetData (params) {
if (params == null) params = {};
params = {
...params,
loginName: this.formSysLoginUser.formFilterCopy.loginName
}
return new Promise((resolve, reject) => {
SystemController.listSysLoginUser(this, params).then(res => {
console.log(res);
resolve({
dataList: res.data.dataList,
totalCount: res.data.totalCount
});
}).catch(e => {
reject(e);
});
});
},
/**
* 登录用户数据获取检测函数返回true正常获取数据返回false停止获取数据
*/
loadLoginUserVerify () {
this.formSysLoginUser.formFilterCopy = { ...this.formSysLoginUser.formFilter };
return true;
},
/**
* 强制踢出登录用户
*/
onDeleteLoginUserClick (row) {
this.$confirm('是否删除此用户?').then(res => {
SystemController.deleteSysLoginUser(this, {
sessionId: row.sessionId
}).then(res => {
this.$message.success('删除成功');
this.formSysLoginUser.loginUser.impl.refreshTable();
}).catch(e => {});
}).catch(e => {});
},
/**
* 更新操作日志
*/
refreshFormOperationType (reloadData = false) {
if (reloadData) {
this.formSysLoginUser.loginUser.impl.refreshTable(true, 1);
} else {
this.formSysLoginUser.loginUser.impl.refreshTable();
}
if (!this.formSysLoginUser.isInit) {
// 初始化下拉数据
}
this.formSysLoginUser.isInit = true;
},
onResume () {
this.refreshFormOperationType();
},
initFormData () {
},
formInit () {
this.refreshFormOperationType();
}
},
mounted () {
// 初始化页面数据
this.formInit();
},
watch: {
}
}
</script>
<style>
</style>

View File

@@ -1,16 +1,16 @@
<template> <template>
<el-container> <el-container class="advance-query-form">
<el-aside width="300px"> <el-aside width="300px">
<el-card class="base-card" shadow="never" :body-style="{ padding: '0px' }"> <el-card class="base-card" shadow="never" :body-style="{ padding: '0px' }" style="border: none;">
<div slot="header" class="base-card-header"> <div slot="header" class="base-card-header">
<span>权限模块</span> <span style="font-size: 16px; font-weight: 500; color: #282828;">权限模块</span>
<div class="base-card-operation"> <div class="base-card-operation">
<el-button type="text" <el-button type="text"
:disabled="!checkPermCodeExist('formSysPerm:fragmentSysPerm:addPermModule')" :disabled="!checkPermCodeExist('formSysPerm:fragmentSysPerm:addPermModule')"
icon="el-icon-circle-plus-outline" @click="onCreatePermModuleClick()" /> icon="el-icon-circle-plus-outline" @click="onCreatePermModuleClick()" />
</div> </div>
</div> </div>
<el-scrollbar :style="{height: (getMainContextHeight - 94) + 'px'}" class="custom-scroll"> <el-scrollbar :style="{height: (getMainContextHeight - 56) + 'px'}" class="custom-scroll">
<el-tree ref="moduleTree" :data="getModuleTreeData" :props="{label: 'moduleName'}" <el-tree ref="moduleTree" :data="getModuleTreeData" :props="{label: 'moduleName'}"
node-key="moduleId" @node-click="onModuleNodeClick" :default-expanded-keys="formPerm.expandedModule" node-key="moduleId" @node-click="onModuleNodeClick" :default-expanded-keys="formPerm.expandedModule"
:highlight-current="true" @node-expand="onModuleNodeExpand" @node-collapse="onModuleNodeCollapse"> :highlight-current="true" @node-expand="onModuleNodeExpand" @node-collapse="onModuleNodeCollapse">
@@ -32,7 +32,7 @@
</el-scrollbar> </el-scrollbar>
</el-card> </el-card>
</el-aside> </el-aside>
<el-main style="padding-left: 15px;"> <el-main style="margin-left: 15px; background-color: white; padding: 20px;">
<el-form label-width="75px" size="mini" label-position="right" @submit.native.prevent> <el-form label-width="75px" size="mini" label-position="right" @submit.native.prevent>
<filter-box :item-width="350"> <filter-box :item-width="350">
<el-form-item label="关联URL"> <el-form-item label="关联URL">
@@ -139,7 +139,7 @@ export default {
* 权限数据获取函数返回Primise * 权限数据获取函数返回Primise
*/ */
loadSysPermData (params) { loadSysPermData (params) {
params.sysPermFilter = { params.sysPermDtoFilter = {
url: this.formPerm.formFilterCopy.url === '' ? undefined : this.formPerm.formFilterCopy.url, url: this.formPerm.formFilterCopy.url === '' ? undefined : this.formPerm.formFilterCopy.url,
moduleId: this.formPerm.formFilterCopy.permModuleId === '' ? undefined : this.formPerm.formFilterCopy.permModuleId moduleId: this.formPerm.formFilterCopy.permModuleId === '' ? undefined : this.formPerm.formFilterCopy.permModuleId
} }

View File

@@ -187,7 +187,7 @@ export default {
* 用户角色数据获取函数返回Primise * 用户角色数据获取函数返回Primise
*/ */
loadSysRoleData (params) { loadSysRoleData (params) {
params.sysRoleFilter = { params.sysRoleDtoFilter = {
roleName: this.fragmentSysRole.formFilterCopy.sysRoleName roleName: this.fragmentSysRole.formFilterCopy.sysRoleName
} }
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@@ -382,7 +382,7 @@ export default {
return; return;
} }
params.roleId = this.fragmentSysRoleUser.formFilter.sysRoleId; params.roleId = this.fragmentSysRoleUser.formFilter.sysRoleId;
params.sysUserFilter = { params.sysUserDtoFilter = {
loginName: this.fragmentSysRoleUser.formFilter.sysUserLoginName loginName: this.fragmentSysRoleUser.formFilter.sysUserLoginName
} }
SystemController.listRoleUser(this, params).then(res => { SystemController.listRoleUser(this, params).then(res => {

View File

@@ -181,7 +181,7 @@ export default {
* 用户管理数据获取函数返回Primise * 用户管理数据获取函数返回Primise
*/ */
loadSysUserData (params) { loadSysUserData (params) {
params.sysUserFilter = { params.sysUserDtoFilter = {
loginName: this.formSysUser.formFilterCopy.sysUserLoginName, loginName: this.formSysUser.formFilterCopy.sysUserLoginName,
userStatus: this.formSysUser.formFilterCopy.sysUserStatus userStatus: this.formSysUser.formFilterCopy.sysUserStatus
} }

View File

@@ -0,0 +1 @@
/src/views/workflow/package/*

View File

@@ -11,7 +11,7 @@ module.exports = {
parser: 'babel-eslint' parser: 'babel-eslint'
}, },
rules: { rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-console': 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'semi': ['off', 'always'], 'semi': ['off', 'always'],
'prefer-promise-reject-errors': ['error', { 'allowEmptyReject': true }], 'prefer-promise-reject-errors': ['error', { 'allowEmptyReject': true }],
@@ -23,8 +23,7 @@ module.exports = {
'lines-between-class-members': ['off'], 'lines-between-class-members': ['off'],
// 'no-undef': ['off', 'always'], // 'no-undef': ['off', 'always'],
// 'no-unused-vars': ['off', 'always'], // 'no-unused-vars': ['off', 'always'],
'no-new-func': ['off', 'always'], 'no-new-func': ['off', 'always']
'no-console': ['off']
}, },
overrides: [ overrides: [
{ {

View File

@@ -26,7 +26,13 @@
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-router": "^3.1.5", "vue-router": "^3.1.5",
"vuex": "^3.1.2", "vuex": "^3.1.2",
"wangeditor": "^3.1.1" "wangeditor": "^3.1.1",
"vue-json-viewer": "^2.2.18",
"min-dash": "^3.5.2",
"vuedraggable": "^2.24.3",
"xml-js": "^1.6.11",
"highlight.js": "^10.5.0",
"bpmn-js-token-simulation": "^0.10.0"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "~4.2.0", "@vue/cli-plugin-babel": "~4.2.0",
@@ -39,6 +45,9 @@
"@vue/eslint-config-standard": "^5.1.0", "@vue/eslint-config-standard": "^5.1.0",
"@vue/test-utils": "1.0.0-beta.31", "@vue/test-utils": "1.0.0-beta.31",
"babel-eslint": "^10.0.3", "babel-eslint": "^10.0.3",
"bpmn-js": "^7.4.0",
"bpmn-js-properties-panel": "^0.37.2",
"camunda-bpmn-moddle": "^4.4.1",
"eslint": "^6.7.2", "eslint": "^6.7.2",
"eslint-plugin-import": "^2.20.1", "eslint-plugin-import": "^2.20.1",
"eslint-plugin-node": "^11.0.0", "eslint-plugin-node": "^11.0.0",

View File

@@ -4,12 +4,11 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> <title>橙单代码生成平台</title>
<title>橙单工程</title>
</head> </head>
<body class="demo-project"> <body class="orange-project">
<noscript> <noscript>
<strong>We're sorry but 橙单工程 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> <strong>We're sorry but 橙单代码生成平台 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript> </noscript>
<div id="app"></div> <div id="app"></div>
<!-- built files will be auto injected --> <!-- built files will be auto injected -->

View File

@@ -59,7 +59,7 @@ export default class DictionaryController {
static dictAreaCode (sender, params, axiosOption, httpOption) { static dictAreaCode (sender, params, axiosOption, httpOption) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
sender.doUrl('/admin/app/areaCode/listDict', 'get', params, axiosOption, httpOption).then(res => { sender.doUrl('/admin/app/areaCode/listDict', 'get', params, axiosOption, httpOption).then(res => {
let dictData = new staticDict.DictionaryBase(); let dictData = new staticDict.DictionaryBase('行政区划');
dictData.setList(res.data); dictData.setList(res.data);
resolve(dictData); resolve(dictData);
}).catch(err => { }).catch(err => {
@@ -70,7 +70,7 @@ export default class DictionaryController {
static dictAreaCodeByParentId (sender, params, axiosOption, httpOption) { static dictAreaCodeByParentId (sender, params, axiosOption, httpOption) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
sender.doUrl('/admin/app/areaCode/listDictByParentId', 'get', params, axiosOption, httpOption).then(res => { sender.doUrl('/admin/app/areaCode/listDictByParentId', 'get', params, axiosOption, httpOption).then(res => {
let dictData = new staticDict.DictionaryBase(); let dictData = new staticDict.DictionaryBase('行政区划');
dictData.setList(res.data); dictData.setList(res.data);
resolve(dictData); resolve(dictData);
}).catch(err => { }).catch(err => {
@@ -93,7 +93,7 @@ export default class DictionaryController {
static dictCourse (sender, params, axiosOption, httpOption) { static dictCourse (sender, params, axiosOption, httpOption) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
sender.doUrl('/admin/app/course/listDict', 'get', params, axiosOption, httpOption).then(res => { sender.doUrl('/admin/app/course/listDict', 'get', params, axiosOption, httpOption).then(res => {
let dictData = new staticDict.DictionaryBase(); let dictData = new staticDict.DictionaryBase('课程');
dictData.setList(res.data); dictData.setList(res.data);
resolve(dictData); resolve(dictData);
}).catch(err => { }).catch(err => {
@@ -104,7 +104,7 @@ export default class DictionaryController {
static dictGrade (sender, params, axiosOption, httpOption) { static dictGrade (sender, params, axiosOption, httpOption) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
sender.doUrl('/admin/app/grade/listDict', 'get', params, axiosOption, httpOption).then(res => { sender.doUrl('/admin/app/grade/listDict', 'get', params, axiosOption, httpOption).then(res => {
let dictData = new staticDict.DictionaryBase(); let dictData = new staticDict.DictionaryBase('年级');
dictData.setList(res.data); dictData.setList(res.data);
resolve(dictData); resolve(dictData);
}).catch(err => { }).catch(err => {
@@ -136,7 +136,7 @@ export default class DictionaryController {
static dictSchoolInfo (sender, params, axiosOption, httpOption) { static dictSchoolInfo (sender, params, axiosOption, httpOption) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
sender.doUrl('/admin/app/schoolInfo/listDict', 'get', params, axiosOption, httpOption).then(res => { sender.doUrl('/admin/app/schoolInfo/listDict', 'get', params, axiosOption, httpOption).then(res => {
let dictData = new staticDict.DictionaryBase(); let dictData = new staticDict.DictionaryBase('校区');
dictData.setList(res.data); dictData.setList(res.data);
resolve(dictData); resolve(dictData);
}).catch(err => { }).catch(err => {
@@ -147,7 +147,7 @@ export default class DictionaryController {
static dictStudent (sender, params, axiosOption, httpOption) { static dictStudent (sender, params, axiosOption, httpOption) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
sender.doUrl('/admin/app/student/listDict', 'get', params, axiosOption, httpOption).then(res => { sender.doUrl('/admin/app/student/listDict', 'get', params, axiosOption, httpOption).then(res => {
let dictData = new staticDict.DictionaryBase(); let dictData = new staticDict.DictionaryBase('学生');
dictData.setList(res.data); dictData.setList(res.data);
resolve(dictData); resolve(dictData);
}).catch(err => { }).catch(err => {

View File

@@ -1,25 +1,25 @@
export default class SysUserController { export default class SysUserController {
static list (sender, params, axiosOption, httpOption) { static list (sender, params, axiosOption, httpOption) {
return sender.doUrl('/admin/upms/sysUser/list', 'post', params, axiosOption, httpOption); return sender.doUrl('admin/upms/sysUser/list', 'post', params, axiosOption, httpOption);
} }
static view (sender, params, axiosOption, httpOption) { static view (sender, params, axiosOption, httpOption) {
return sender.doUrl('/admin/upms/sysUser/view', 'get', params, axiosOption, httpOption); return sender.doUrl('admin/upms/sysUser/view', 'get', params, axiosOption, httpOption);
} }
static export (sender, params, fileName) { static export (sender, params, fileName) {
return sender.download('/admin/upms/sysUser/export', params, fileName); return sender.download('admin/upms/sysUser/export', params, fileName);
} }
static add (sender, params, axiosOption, httpOption) { static add (sender, params, axiosOption, httpOption) {
return sender.doUrl('/admin/upms/sysUser/add', 'post', params, axiosOption, httpOption); return sender.doUrl('admin/upms/sysUser/add', 'post', params, axiosOption, httpOption);
} }
static update (sender, params, axiosOption, httpOption) { static update (sender, params, axiosOption, httpOption) {
return sender.doUrl('/admin/upms/sysUser/update', 'post', params, axiosOption, httpOption); return sender.doUrl('admin/upms/sysUser/update', 'post', params, axiosOption, httpOption);
} }
static delete (sender, params, axiosOption, httpOption) { static delete (sender, params, axiosOption, httpOption) {
return sender.doUrl('/admin/upms/sysUser/delete', 'post', params, axiosOption, httpOption); return sender.doUrl('admin/upms/sysUser/delete', 'post', params, axiosOption, httpOption);
} }
} }

View File

@@ -225,4 +225,12 @@ export default class SystemController {
static listSysMenuByPermIdWithDetail (sender, params, axiosOption, httpOption) { static listSysMenuByPermIdWithDetail (sender, params, axiosOption, httpOption) {
return sender.doUrl('admin/upms/sysPerm/listSysMenuWithDetail', 'get', params, axiosOption, httpOption); return sender.doUrl('admin/upms/sysPerm/listSysMenuWithDetail', 'get', params, axiosOption, httpOption);
} }
// 在线用户
static listSysLoginUser (sender, params, axiosOption, httpOption) {
return sender.doUrl('admin/upms/loginUser/list', 'post', params, axiosOption, httpOption);
}
static deleteSysLoginUser (sender, params, axiosOption, httpOption) {
return sender.doUrl('admin/upms/loginUser/delete', 'post', params, axiosOption, httpOption);
}
} }

View File

@@ -1,13 +1,13 @@
import SystemController from './Controller/SystemController' import SystemController from './Controller/SystemController'
import DictionaryController from './Controller/DictionaryController' import DictionaryController from './Controller/DictionaryController'
import CourseController from './Controller/CourseController.js' import CourseController from './Controller/CourseController.js';
import SchoolInfoController from './Controller/SchoolInfoController.js' import SchoolInfoController from './Controller/SchoolInfoController.js';
import StudentController from './Controller/StudentController.js' import StudentController from './Controller/StudentController.js';
import SysUserController from './Controller/SysUserController.js' import SysUserController from './Controller/SysUserController.js';
import StudentClassController from './Controller/StudentClassController.js' import StudentClassController from './Controller/StudentClassController.js';
import CourseTransStatsController from './Controller/CourseTransStatsController.js' import CourseTransStatsController from './Controller/CourseTransStatsController.js';
import StudentActionStatsController from './Controller/StudentActionStatsController.js' import StudentActionStatsController from './Controller/StudentActionStatsController.js';
import StudentActionTransController from './Controller/StudentActionTransController.js' import StudentActionTransController from './Controller/StudentActionTransController.js';
export { export {
SystemController, SystemController,

View File

@@ -16,7 +16,7 @@ $--color-transition-base: color .2s cubic-bezier(.645,.045,.355,1) !default;
/* Color /* Color
-------------------------- */ -------------------------- */
/// color|1|Brand Color|0 /// color|1|Brand Color|0
$--color-primary: #FFA424 !default; $--color-primary: #FCA834 !default;
/// color|1|Background Color|4 /// color|1|Background Color|4
$--color-white: #FFFFFF !default; $--color-white: #FFFFFF !default;
/// color|1|Background Color|4 /// color|1|Background Color|4
@@ -31,7 +31,7 @@ $--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /
$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */ $--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */
$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */ $--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */
/// color|1|Functional Color|1 /// color|1|Functional Color|1
$--color-success: #67C23A !default; $--color-success: #6DC741 !default;
/// color|1|Functional Color|1 /// color|1|Functional Color|1
$--color-warning: #E6A23C !default; $--color-warning: #E6A23C !default;
/// color|1|Functional Color|1 /// color|1|Functional Color|1
@@ -72,11 +72,10 @@ $--background-color-base: #F5F7FA !default;
// color for left sidebar title // color for left sidebar title
$--color-sidebar-title-text: #FFFFFF; $--color-sidebar-title-text: #FFFFFF;
// color for left sidebar background // color for left sidebar background
$--color-menu-background: #FF7746; $--color-menu-background: #042345;
$--color-menu-item-active-text-color: #FFFFFF; $--color-menu-item-active-text-color: #FFFFFF;
$--color-menu-item-active-background: rgba(255, 255, 255, 0.01); $--color-menu-item-active-background: $--color-primary;
$--color-menu-item-active-background-to: rgba(255, 255, 255, 0.3); $--color-submenu-background: #021F3B;
/* Link /* Link
-------------------------- */ -------------------------- */
$--link-color: $--color-primary-light-2 !default; $--link-color: $--color-primary-light-2 !default;
@@ -738,7 +737,7 @@ $--tree-expand-icon-color: $--color-text-placeholder !default;
/* Dropdown /* Dropdown
-------------------------- */ -------------------------- */
$--dropdown-menu-box-shadow: $--box-shadow-light !default; $--dropdown-menu-box-shadow: $--box-shadow-light !default;
$--dropdown-menuItem-hover-fill: $--color-menu-background !default; $--dropdown-menuItem-hover-fill: $--color-primary !default;
$--dropdown-menuItem-hover-color: $--color-white !default; $--dropdown-menuItem-hover-color: $--color-white !default;
/* Badge /* Badge

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -7,7 +7,7 @@
"theme-blue": "et -c element-variables-blue.scss" "theme-blue": "et -c element-variables-blue.scss"
}, },
"devDependencies": { "devDependencies": {
"element-theme": "^2.0.1", "element-theme": "2.0.1",
"element-theme-chalk": "^2.14.1" "element-theme-chalk": "2.14.1"
} }
} }

View File

@@ -51,8 +51,25 @@ body .layer-dialog {
body .layer-dialog .layui-layer-content { body .layer-dialog .layui-layer-content {
padding: $box-padding-size; padding: $box-padding-size;
} }
/**
* 左树右表弹窗样式
*/
body .layer-advance-dialog {
border-radius: 4px;
border:1px solid #01000000;
background-color: #F8F8F8;
}
.demo-project { body .layer-advance-dialog .layui-layer-title{
border-radius: 4px 4px 0px 0px;
border:1px solid #01000000;
}
body .layer-advance-dialog .layui-layer-content {
padding: 5px 15px;
}
.orange-project {
.el-main { .el-main {
padding: 0px; padding: 0px;
} }
@@ -98,18 +115,18 @@ body .layer-dialog .layui-layer-content {
.page-close-box { .page-close-box {
position: absolute; position: absolute;
background: #13ce66; background: #0092FF;
transform: rotate(45deg); transform: rotate(45deg);
height: 60px; height: 50px;
width: 60px; width: 50px;
right: -30px; right: -25px;
top:-30px; top:-25px;
text-align: center; text-align: center;
.el-button { .el-button {
transform: rotate(-45deg); transform: rotate(-45deg);
color: white; color: white;
margin-top: 30px; margin-top: 20px;
} }
} }
@@ -265,6 +282,12 @@ body .layer-dialog .layui-layer-content {
} }
} }
@if global-variable-exists(--color-submenu-background) {
.left-menu .el-submenu .el-menu {
background-color: $--color-submenu-background;
}
}
/** /**
* 多tab页表单tab样式 * 多tab页表单tab样式
**/ **/
@@ -278,6 +301,45 @@ body .layer-dialog .layui-layer-content {
background-color: $tab-header-background-color; background-color: $tab-header-background-color;
} }
/**
* 操作按钮颜色
**/
.table-btn.delete {
color: #F56C6C;
}
.table-btn.delete:hover {
color: #F78989;
}
.table-btn.delete:disabled {
color: #DCDFE6;
}
.table-btn.success {
color: #67C23A;
}
.table-btn.success:hover {
color: #85CE61;
}
.table-btn.success:disabled {
color: #DCDFE6;
}
.table-btn.warning {
color: #E6A23C;
}
.table-btn.warning:hover {
color: #EBB563;
}
.table-btn.success:disabled {
color: #DCDFE6;
}
/** /**
* 图片上传以及显示样式 * 图片上传以及显示样式
**/ **/

View File

@@ -110,3 +110,8 @@
.form-single-fragment { .form-single-fragment {
// //
} }
.advance-query-form {
padding: 0px!important;
background-color: transparent!important;;
}

View File

@@ -1705,7 +1705,7 @@
min-width: 180px; min-width: 180px;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
color: #FFFFFF; color: #606266;
border-right: solid 1px #E4E7ED; } border-right: solid 1px #E4E7ED; }
.el-cascader-menu:last-child { .el-cascader-menu:last-child {
border-right: none; } border-right: none; }
@@ -1750,9 +1750,9 @@
line-height: 34px; line-height: 34px;
outline: none; } outline: none; }
.el-cascader-node.is-selectable.in-active-path { .el-cascader-node.is-selectable.in-active-path {
color: #FFFFFF; } color: #606266; }
.el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active { .el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active {
color: #FFFFFF; color: #409EFF;
font-weight: bold; } font-weight: bold; }
.el-cascader-node:not(.is-disabled) { .el-cascader-node:not(.is-disabled) {
cursor: pointer; } cursor: pointer; }

View File

@@ -3282,7 +3282,7 @@
min-width: 180px; min-width: 180px;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
color: #FFFFFF; color: #606266;
border-right: solid 1px #E4E7ED; } border-right: solid 1px #E4E7ED; }
.el-cascader-menu:last-child { .el-cascader-menu:last-child {
border-right: none; } border-right: none; }
@@ -3327,9 +3327,9 @@
line-height: 34px; line-height: 34px;
outline: none; } outline: none; }
.el-cascader-node.is-selectable.in-active-path { .el-cascader-node.is-selectable.in-active-path {
color: #FFFFFF; } color: #606266; }
.el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active { .el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active {
color: #FFFFFF; color: #409EFF;
font-weight: bold; } font-weight: bold; }
.el-cascader-node:not(.is-disabled) { .el-cascader-node:not(.is-disabled) {
cursor: pointer; } cursor: pointer; }
@@ -3454,7 +3454,7 @@
margin: 0; margin: 0;
padding: 6px 0; padding: 6px 0;
font-size: 14px; font-size: 14px;
color: #FFFFFF; color: #606266;
text-align: center; } text-align: center; }
.el-cascader__suggestion-item { .el-cascader__suggestion-item {
display: -webkit-box; display: -webkit-box;
@@ -3474,7 +3474,7 @@
.el-cascader__suggestion-item:hover, .el-cascader__suggestion-item:focus { .el-cascader__suggestion-item:hover, .el-cascader__suggestion-item:focus {
background: #F5F7FA; } background: #F5F7FA; }
.el-cascader__suggestion-item.is-checked { .el-cascader__suggestion-item.is-checked {
color: #FFFFFF; color: #409EFF;
font-weight: bold; } font-weight: bold; }
.el-cascader__suggestion-item > span { .el-cascader__suggestion-item > span {
margin-right: 10px; } margin-right: 10px; }
@@ -3489,7 +3489,7 @@
min-width: 60px; min-width: 60px;
margin: 2px 0 2px 15px; margin: 2px 0 2px 15px;
padding: 0; padding: 0;
color: #FFFFFF; color: #606266;
border: none; border: none;
outline: none; outline: none;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;

View File

@@ -46757,7 +46757,7 @@
min-width: 180px; min-width: 180px;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
color: #FFFFFF; color: #606266;
border-right: solid 1px #E4E7ED; } border-right: solid 1px #E4E7ED; }
.el-cascader-menu:last-child { .el-cascader-menu:last-child {
border-right: none; } border-right: none; }
@@ -46802,9 +46802,9 @@
line-height: 34px; line-height: 34px;
outline: none; } outline: none; }
.el-cascader-node.is-selectable.in-active-path { .el-cascader-node.is-selectable.in-active-path {
color: #FFFFFF; } color: #606266; }
.el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active { .el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active {
color: #FFFFFF; color: #409EFF;
font-weight: bold; } font-weight: bold; }
.el-cascader-node:not(.is-disabled) { .el-cascader-node:not(.is-disabled) {
cursor: pointer; } cursor: pointer; }
@@ -46929,7 +46929,7 @@
margin: 0; margin: 0;
padding: 6px 0; padding: 6px 0;
font-size: 14px; font-size: 14px;
color: #FFFFFF; color: #606266;
text-align: center; } text-align: center; }
.el-cascader__suggestion-item { .el-cascader__suggestion-item {
display: -webkit-box; display: -webkit-box;
@@ -46949,7 +46949,7 @@
.el-cascader__suggestion-item:hover, .el-cascader__suggestion-item:focus { .el-cascader__suggestion-item:hover, .el-cascader__suggestion-item:focus {
background: #F5F7FA; } background: #F5F7FA; }
.el-cascader__suggestion-item.is-checked { .el-cascader__suggestion-item.is-checked {
color: #FFFFFF; color: #409EFF;
font-weight: bold; } font-weight: bold; }
.el-cascader__suggestion-item > span { .el-cascader__suggestion-item > span {
margin-right: 10px; } margin-right: 10px; }
@@ -46964,7 +46964,7 @@
min-width: 60px; min-width: 60px;
margin: 2px 0 2px 15px; margin: 2px 0 2px 15px;
padding: 0; padding: 0;
color: #FFFFFF; color: #606266;
border: none; border: none;
outline: none; outline: none;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
@@ -55916,7 +55916,7 @@
min-width: 180px; min-width: 180px;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
color: #FFFFFF; color: #606266;
border-right: solid 1px #E4E7ED; } border-right: solid 1px #E4E7ED; }
.el-cascader-menu:last-child { .el-cascader-menu:last-child {
border-right: none; } border-right: none; }
@@ -55961,9 +55961,9 @@
line-height: 34px; line-height: 34px;
outline: none; } outline: none; }
.el-cascader-node.is-selectable.in-active-path { .el-cascader-node.is-selectable.in-active-path {
color: #FFFFFF; } color: #606266; }
.el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active { .el-cascader-node.in-active-path, .el-cascader-node.is-selectable.in-checked-path, .el-cascader-node.is-active {
color: #FFFFFF; color: #409EFF;
font-weight: bold; } font-weight: bold; }
.el-cascader-node:not(.is-disabled) { .el-cascader-node:not(.is-disabled) {
cursor: pointer; } cursor: pointer; }

View File

@@ -46,10 +46,10 @@ class Dialog {
} }
let observer = { let observer = {
cancel: function (isSuccess = false) { cancel: function (isSuccess = false, data = undefined) {
layer.close(this.index); layer.close(this.index);
if (isSuccess) { if (isSuccess) {
resolve(); resolve(data);
} else { } else {
reject(); reject();
} }

View File

@@ -99,7 +99,6 @@ export default {
return content; return content;
} }
this.editor.customConfig.linkImgCallback = (url) => { this.editor.customConfig.linkImgCallback = (url) => {
console.log(url) // url 即插入图片的地址
} }
this.editor.customConfig.linkCheck = (text, link) => { this.editor.customConfig.linkCheck = (text, link) => {
return true // 返回 true 表示校验成功 return true // 返回 true 表示校验成功
@@ -112,7 +111,6 @@ export default {
} }
// 失去焦点后更新数据 // 失去焦点后更新数据
this.editor.customConfig.onblur = (html) => { this.editor.customConfig.onblur = (html) => {
console.log(html)
this.$emit('input', html); this.$emit('input', html);
} }

View File

@@ -1,4 +1,4 @@
module.exports = { module.exports = {
baseUrl: 'http://localhost:8082/', baseUrl: 'http://localhost:8082/',
projectName: '橙单项目' projectName: '橙单代码生成平台'
} }

View File

@@ -2,8 +2,14 @@ const projectConfig = require('../config/' + process.env.NODE_ENV);
export const globalConfig = { export const globalConfig = {
httpOption: { httpOption: {
// 调用的时候是否显示蒙版
showMask: true, showMask: true,
showError: true // 是否显示公共的错误提示
showError: true,
// 是否开启节流功能同一个url不能频繁重复调用
throttleFlag: false,
// 节流间隔
throttleTimeout: 50
}, },
axiosOption: { axiosOption: {
} }

View File

@@ -135,13 +135,15 @@ const doUrl = function (url, type, params, axiosOption, options) {
options = merge(globalConfig.httpOption, options); options = merge(globalConfig.httpOption, options);
axiosOption = merge(globalConfig.axiosOption, axiosOption); axiosOption = merge(globalConfig.axiosOption, axiosOption);
if (type == null || type === '') type = 'post'; if (type == null || type === '') type = 'post';
if (ajaxThrottleSet.has(url)) { if (ajaxThrottleSet.has(url) && options.throttleFlag) {
return Promise.resolve(); return Promise.resolve();
} else { } else {
if (options.throttleFlag) {
ajaxThrottleSet.add(url); ajaxThrottleSet.add(url);
setTimeout(() => { setTimeout(() => {
ajaxThrottleSet.delete(url); ajaxThrottleSet.delete(url);
}, 50); }, options.throttleTimeout || 50);
}
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (options.showMask) loadingManager.showMask(); if (options.showMask) loadingManager.showMask();
let ajaxCall = null; let ajaxCall = null;

View File

@@ -10,7 +10,8 @@ const service = axios.create({
withCredentials: true, withCredentials: true,
headers: { headers: {
// 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' // 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
'Content-Type': 'application/json; charset=utf-8' 'Content-Type': 'application/json; charset=utf-8',
'deviceType': '4'
}, },
transformResponse: [ transformResponse: [
function (data) { function (data) {

View File

@@ -1,4 +1,5 @@
import '@/core/http'; import '@/core/http';
import JSONbig from 'json-bigint';
import '@/components/Dialog'; import '@/components/Dialog';
import Vue from 'vue'; import Vue from 'vue';
import ElementUI from 'element-ui'; import ElementUI from 'element-ui';
@@ -16,6 +17,8 @@ import FilterBox from '@/components/FilterBox';
import TableProgressColumn from '@/components/TableProgressColumn'; import TableProgressColumn from '@/components/TableProgressColumn';
import VCharts from 'v-charts'; import VCharts from 'v-charts';
window.JSON = new JSONbig({storeAsString: true});
Vue.component('tree-select', TreeSelect); Vue.component('tree-select', TreeSelect);
Vue.component('rich-editor', RichEditor); Vue.component('rich-editor', RichEditor);
Vue.component('input-number-range', InputNumberRange); Vue.component('input-number-range', InputNumberRange);

View File

@@ -33,16 +33,17 @@ const routers = [
{path: 'formSysDict', component: _import('upms/formDictManagement/index'), name: 'formSysDict', meta: {title: '字典管理'}}, {path: 'formSysDict', component: _import('upms/formDictManagement/index'), name: 'formSysDict', meta: {title: '字典管理'}},
{path: 'formSysPermCode', component: _import('upms/formSysPermCode/index'), name: 'formSysPermCode', meta: {title: '权限字管理'}}, {path: 'formSysPermCode', component: _import('upms/formSysPermCode/index'), name: 'formSysPermCode', meta: {title: '权限字管理'}},
{path: 'formSysPerm', component: _import('upms/formSysPerm/index'), name: 'formSysPerm', meta: {title: '权限资源管理'}}, {path: 'formSysPerm', component: _import('upms/formSysPerm/index'), name: 'formSysPerm', meta: {title: '权限资源管理'}},
{path: 'formSysLoginUser', component: _import('upms/formSysLoginUser/index'), name: 'formSysLoginUser', meta: {title: '在线用户'}},
{path: 'welcome', component: _import('welcome/index'), name: 'welcome', meta: {title: '欢迎'}}, {path: 'welcome', component: _import('welcome/index'), name: 'welcome', meta: {title: '欢迎'}},
{path: 'formSchool', component: _import('generated/formSchool/index'), name: 'formSchool', props: getProps, meta: {title: '校区管理'}}, {path: 'formSchool', component: _import('generated/formSchool'), name: 'formSchool', props: getProps, meta: {title: '校区管理'}},
{path: 'formStudent', component: _import('generated/formStudent/index'), name: 'formStudent', props: getProps, meta: {title: '学生管理'}}, {path: 'formStudent', component: _import('generated/formStudent'), name: 'formStudent', props: getProps, meta: {title: '学生管理'}},
{path: 'formCourse', component: _import('generated/formCourse/index'), name: 'formCourse', props: getProps, meta: {title: '课程管理'}}, {path: 'formCourse', component: _import('generated/formCourse'), name: 'formCourse', props: getProps, meta: {title: '课程管理'}},
{path: 'formCourseStats', component: _import('generated/formCourseStats/index'), name: 'formCourseStats', props: getProps, meta: {title: '课程统计'}}, {path: 'formCourseStats', component: _import('generated/formCourseStats'), name: 'formCourseStats', props: getProps, meta: {title: '课程统计'}},
{path: 'formStudentActionStats', component: _import('generated/formStudentActionStats/index'), name: 'formStudentActionStats', props: getProps, meta: {title: '学生行为统计'}}, {path: 'formStudentActionStats', component: _import('generated/formStudentActionStats'), name: 'formStudentActionStats', props: getProps, meta: {title: '学生行为统计'}},
{path: 'formStudentActionDetail', component: _import('generated/formStudentActionDetail/index'), name: 'formStudentActionDetail', props: getProps, meta: {title: '学生行为详情'}}, {path: 'formStudentActionDetail', component: _import('generated/formStudentActionDetail'), name: 'formStudentActionDetail', props: getProps, meta: {title: '学生行为详情'}},
{path: 'formSetClassStudent', component: _import('generated/formSetClassStudent/index'), name: 'formSetClassStudent', props: getProps, meta: {title: '设置班级学生'}}, {path: 'formSetClassStudent', component: _import('generated/formSetClassStudent'), name: 'formSetClassStudent', props: getProps, meta: {title: '设置班级学生'}},
{path: 'formSetClassCourse', component: _import('generated/formSetClassCourse/index'), name: 'formSetClassCourse', props: getProps, meta: {title: '设置班级课程'}}, {path: 'formSetClassCourse', component: _import('generated/formSetClassCourse'), name: 'formSetClassCourse', props: getProps, meta: {title: '设置班级课程'}},
{path: 'formClass', component: _import('generated/formClass/index'), name: 'formClass', props: getProps, meta: {title: '班级管理'}} {path: 'formClass', component: _import('generated/formClass'), name: 'formClass', props: getProps, meta: {title: '班级管理'}}
] ]
} }
]; ];

View File

@@ -4,8 +4,9 @@
import Vue from 'vue'; import Vue from 'vue';
class DictionaryBase extends Map { class DictionaryBase extends Map {
constructor (dataList, keyId = 'id', symbolId = 'symbol') { constructor (name, dataList, keyId = 'id', symbolId = 'symbol') {
super(); super();
this.showName = name;
this.setList(dataList, keyId, symbolId); this.setList(dataList, keyId, symbolId);
} }
@@ -50,7 +51,7 @@ class DictionaryBase extends Map {
} }
} }
const SysUserStatus = new DictionaryBase([ const SysUserStatus = new DictionaryBase('用户状态', [
{ {
id: 0, id: 0,
name: '正常状态', name: '正常状态',
@@ -64,7 +65,7 @@ const SysUserStatus = new DictionaryBase([
]); ]);
Vue.prototype.SysUserStatus = SysUserStatus; Vue.prototype.SysUserStatus = SysUserStatus;
const SysUserType = new DictionaryBase([ const SysUserType = new DictionaryBase('用户类型', [
{ {
id: 0, id: 0,
name: '管理员', name: '管理员',
@@ -83,7 +84,7 @@ const SysUserType = new DictionaryBase([
]); ]);
Vue.prototype.SysUserType = SysUserType; Vue.prototype.SysUserType = SysUserType;
const Subject = new DictionaryBase([ const Subject = new DictionaryBase('学科', [
{ {
id: 0, id: 0,
name: '语文', name: '语文',
@@ -102,7 +103,7 @@ const Subject = new DictionaryBase([
]); ]);
Vue.prototype.Subject = Subject; Vue.prototype.Subject = Subject;
const StudentActionType = new DictionaryBase([ const StudentActionType = new DictionaryBase('学生行为', [
{ {
id: 0, id: 0,
name: '充值', name: '充值',
@@ -161,7 +162,7 @@ const StudentActionType = new DictionaryBase([
]); ]);
Vue.prototype.StudentActionType = StudentActionType; Vue.prototype.StudentActionType = StudentActionType;
const DeviceType = new DictionaryBase([ const DeviceType = new DictionaryBase('设备类型', [
{ {
id: 0, id: 0,
name: 'iOS', name: 'iOS',
@@ -180,7 +181,7 @@ const DeviceType = new DictionaryBase([
]); ]);
Vue.prototype.DeviceType = DeviceType; Vue.prototype.DeviceType = DeviceType;
const Gender = new DictionaryBase([ const Gender = new DictionaryBase('性别', [
{ {
id: 1, id: 1,
name: '男', name: '男',
@@ -194,7 +195,7 @@ const Gender = new DictionaryBase([
]); ]);
Vue.prototype.Gender = Gender; Vue.prototype.Gender = Gender;
const ExpLevel = new DictionaryBase([ const ExpLevel = new DictionaryBase('经验等级', [
{ {
id: 0, id: 0,
name: '初级学员', name: '初级学员',
@@ -213,7 +214,7 @@ const ExpLevel = new DictionaryBase([
]); ]);
Vue.prototype.ExpLevel = ExpLevel; Vue.prototype.ExpLevel = ExpLevel;
const StudentStatus = new DictionaryBase([ const StudentStatus = new DictionaryBase('学生状态', [
{ {
id: 0, id: 0,
name: '正常', name: '正常',
@@ -232,7 +233,7 @@ const StudentStatus = new DictionaryBase([
]); ]);
Vue.prototype.StudentStatus = StudentStatus; Vue.prototype.StudentStatus = StudentStatus;
const ClassStatus = new DictionaryBase([ const ClassStatus = new DictionaryBase('班级状态', [
{ {
id: 1, id: 1,
name: '正常', name: '正常',
@@ -246,7 +247,7 @@ const ClassStatus = new DictionaryBase([
]); ]);
Vue.prototype.ClassStatus = ClassStatus; Vue.prototype.ClassStatus = ClassStatus;
const ClassLevel = new DictionaryBase([ const ClassLevel = new DictionaryBase('班级级别', [
{ {
id: 0, id: 0,
name: '初级班', name: '初级班',
@@ -265,7 +266,7 @@ const ClassLevel = new DictionaryBase([
]); ]);
Vue.prototype.ClassLevel = ClassLevel; Vue.prototype.ClassLevel = ClassLevel;
const CourseDifficult = new DictionaryBase([ const CourseDifficult = new DictionaryBase('课程难度', [
{ {
id: 0, id: 0,
name: '容易', name: '容易',
@@ -284,7 +285,7 @@ const CourseDifficult = new DictionaryBase([
]); ]);
Vue.prototype.CourseDifficult = CourseDifficult; Vue.prototype.CourseDifficult = CourseDifficult;
const SysPermModuleType = new DictionaryBase([ const SysPermModuleType = new DictionaryBase('权限分组类型', [
{ {
id: 0, id: 0,
name: '分组模块', name: '分组模块',
@@ -297,7 +298,7 @@ const SysPermModuleType = new DictionaryBase([
]); ]);
Vue.prototype.SysPermModuleType = SysPermModuleType; Vue.prototype.SysPermModuleType = SysPermModuleType;
const SysPermCodeType = new DictionaryBase([{ const SysPermCodeType = new DictionaryBase('权限字类型', [{
id: 0, id: 0,
name: '表单', name: '表单',
symbol: 'FORM' symbol: 'FORM'
@@ -312,7 +313,7 @@ const SysPermCodeType = new DictionaryBase([{
}]); }]);
Vue.prototype.SysPermCodeType = SysPermCodeType; Vue.prototype.SysPermCodeType = SysPermCodeType;
const SysMenuType = new DictionaryBase([ const SysMenuType = new DictionaryBase('菜单类型', [
{ {
id: 0, id: 0,
name: '目录', name: '目录',
@@ -335,7 +336,6 @@ const SysMenuType = new DictionaryBase([
} }
]); ]);
Vue.prototype.SysMenuType = SysMenuType; Vue.prototype.SysMenuType = SysMenuType;
export { export {
DictionaryBase, DictionaryBase,
SysUserStatus, SysUserStatus,

View File

@@ -11,8 +11,14 @@ export default {
getClientHeight: (state) => { getClientHeight: (state) => {
return state.documentClientHeight; return state.documentClientHeight;
}, },
getClientWidth: (state) => {
return state.documentClienWidth;
},
getMainContextHeight: (state) => { getMainContextHeight: (state) => {
return state.documentClientHeight - (state.supportTags ? 140 : 100); return state.documentClientHeight - (state.supportTags ? 130 : 90);
},
getOnlineFormCache: (state) => {
return state.onlineFormCache;
}, },
getUserInfo: (state) => { getUserInfo: (state) => {
return state.userInfo; return state.userInfo;

View File

@@ -8,6 +8,18 @@ export default {
setClientHeight: (state, height) => { setClientHeight: (state, height) => {
state.documentClientHeight = height; state.documentClientHeight = height;
}, },
setClientWidth: (state, width) => {
state.documentClienWidth = width;
},
addOnlineFormCache: (state, data) => {
state.onlineFormCache[data.key] = data.value;
},
removeOnlineFormCache: (state, key) => {
delete state.onlineFormCache[key];
},
clearOnlineFormCache: (state) => {
state.onlineFormCache = {};
},
setUserInfo: (state, info) => { setUserInfo: (state, info) => {
setObjectToSessionStorage('userInfo', info); setObjectToSessionStorage('userInfo', info);
state.userInfo = initUserInfo(info); state.userInfo = initUserInfo(info);
@@ -97,7 +109,8 @@ export default {
} }
let menuObject = state.tagList[0]; let menuObject = state.tagList[0];
if (menuObject && menuObject.formRouterName && menuObject.formRouterName !== '') { if (menuObject && (menuObject.onlineFormId == null || menuObject.onlineFormId === '') &&
menuObject.formRouterName && menuObject.formRouterName !== '') {
state.cachePages = [menuObject.formRouterName]; state.cachePages = [menuObject.formRouterName];
if (setObjectToSessionStorage('currentMenuId', menuObject.menuId)) state.currentMenuId = menuObject.menuId; if (setObjectToSessionStorage('currentMenuId', menuObject.menuId)) state.currentMenuId = menuObject.menuId;
} }
@@ -131,7 +144,9 @@ export default {
} }
// 添加新缓存 // 添加新缓存
if (Array.isArray(state.cachePages) && state.cachePages.indexOf(menuItem.formRouterName) === -1) { if (Array.isArray(state.cachePages) && state.cachePages.indexOf(menuItem.formRouterName) === -1) {
if (menuItem.onlineFormId == null || menuItem.onlineFormId === '') {
state.cachePages = [...state.cachePages, menuItem.formRouterName]; state.cachePages = [...state.cachePages, menuItem.formRouterName];
}
setObjectToSessionStorage('cachePages', state.cachePages); setObjectToSessionStorage('cachePages', state.cachePages);
} }
break; break;

View File

@@ -10,6 +10,10 @@ export default {
supportTags: false, supportTags: false,
// 浏览器客户区高度 // 浏览器客户区高度
documentClientHeight: 100, documentClientHeight: 100,
// 浏览器客户区宽度
documentClientWidth: undefined,
// 在线表单查询页面缓存
onlineFormCache: {},
// 用户登录信息 // 用户登录信息
userInfo: initUserInfo(), userInfo: initUserInfo(),
// 缓存页面 // 缓存页面

View File

@@ -346,7 +346,7 @@ export class TreeTableImpl {
calcPermCodeTreeAttribute(item, checkedRows); calcPermCodeTreeAttribute(item, checkedRows);
}); });
} }
console.log(treeData, checkedRows);
return treeData; return treeData;
} }

View File

@@ -133,7 +133,6 @@ export class TableWidget {
this.oldPage = this.currentPage; this.oldPage = this.currentPage;
this.oldPageSize = this.pageSize; this.oldPageSize = this.pageSize;
}).catch(e => { }).catch(e => {
console.log(e);
this.currentPage = this.oldPage; this.currentPage = this.oldPage;
this.pageSize = this.oldPageSize; this.pageSize = this.oldPageSize;
}); });
@@ -161,7 +160,6 @@ export class TableWidget {
* @param {Object} oldRow 老的选中行 * @param {Object} oldRow 老的选中行
*/ */
currentRowChange (currentRow, oldRow) { currentRowChange (currentRow, oldRow) {
console.log(currentRow, oldRow);
this.currentRow = currentRow; this.currentRow = currentRow;
} }
clearTable () { clearTable () {

Some files were not shown because too many files have changed in this diff Show More