mirror of
https://gitee.com/orangeform/orange-admin.git
synced 2026-01-17 10:36:31 +08:00
commit:更新前端版本到1.9
This commit is contained in:
1
orange-demo-multi-web/.eslintignore
Normal file
1
orange-demo-multi-web/.eslintignore
Normal file
@@ -0,0 +1 @@
|
||||
/src/views/workflow/package/*
|
||||
@@ -11,7 +11,7 @@ module.exports = {
|
||||
parser: 'babel-eslint'
|
||||
},
|
||||
rules: {
|
||||
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||
'no-console': 'off',
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||
'semi': ['off', 'always'],
|
||||
'prefer-promise-reject-errors': ['error', { 'allowEmptyReject': true }],
|
||||
@@ -23,8 +23,7 @@ module.exports = {
|
||||
'lines-between-class-members': ['off'],
|
||||
// 'no-undef': ['off', 'always'],
|
||||
// 'no-unused-vars': ['off', 'always'],
|
||||
'no-new-func': ['off', 'always'],
|
||||
'no-console': ['off']
|
||||
'no-new-func': ['off', 'always']
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
|
||||
@@ -26,7 +26,13 @@
|
||||
"vue": "^2.6.11",
|
||||
"vue-router": "^3.1.5",
|
||||
"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": {
|
||||
"@vue/cli-plugin-babel": "~4.2.0",
|
||||
@@ -39,6 +45,9 @@
|
||||
"@vue/eslint-config-standard": "^5.1.0",
|
||||
"@vue/test-utils": "1.0.0-beta.31",
|
||||
"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-plugin-import": "^2.20.1",
|
||||
"eslint-plugin-node": "^11.0.0",
|
||||
|
||||
@@ -4,12 +4,11 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title>橙单工程</title>
|
||||
<title>橙单代码生成平台</title>
|
||||
</head>
|
||||
<body class="demo-project">
|
||||
<body class="orange-project">
|
||||
<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>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
|
||||
@@ -59,7 +59,7 @@ export default class DictionaryController {
|
||||
static dictAreaCode (sender, params, axiosOption, httpOption) {
|
||||
return new Promise((resolve, reject) => {
|
||||
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);
|
||||
resolve(dictData);
|
||||
}).catch(err => {
|
||||
@@ -79,7 +79,7 @@ export default class DictionaryController {
|
||||
static dictAreaCodeByParentId (sender, params, axiosOption, httpOption) {
|
||||
return new Promise((resolve, reject) => {
|
||||
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);
|
||||
resolve(dictData);
|
||||
}).catch(err => {
|
||||
@@ -102,7 +102,7 @@ export default class DictionaryController {
|
||||
static dictCourse (sender, params, axiosOption, httpOption) {
|
||||
return new Promise((resolve, reject) => {
|
||||
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);
|
||||
resolve(dictData);
|
||||
}).catch(err => {
|
||||
@@ -113,7 +113,7 @@ export default class DictionaryController {
|
||||
static dictGrade (sender, params, axiosOption, httpOption) {
|
||||
return new Promise((resolve, reject) => {
|
||||
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);
|
||||
resolve(dictData);
|
||||
}).catch(err => {
|
||||
@@ -145,7 +145,7 @@ export default class DictionaryController {
|
||||
static dictSchoolInfo (sender, params, axiosOption, httpOption) {
|
||||
return new Promise((resolve, reject) => {
|
||||
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);
|
||||
resolve(dictData);
|
||||
}).catch(err => {
|
||||
@@ -156,7 +156,7 @@ export default class DictionaryController {
|
||||
static dictStudent (sender, params, axiosOption, httpOption) {
|
||||
return new Promise((resolve, reject) => {
|
||||
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);
|
||||
resolve(dictData);
|
||||
}).catch(err => {
|
||||
|
||||
@@ -225,4 +225,12 @@ export default class SystemController {
|
||||
static listSysMenuByPermIdWithDetail (sender, 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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import SystemController from './Controller/SystemController'
|
||||
import DictionaryController from './Controller/DictionaryController'
|
||||
import CourseController from './Controller/CourseController.js'
|
||||
import SchoolInfoController from './Controller/SchoolInfoController.js'
|
||||
import StudentController from './Controller/StudentController.js'
|
||||
import SysUserController from './Controller/SysUserController.js'
|
||||
import StudentClassController from './Controller/StudentClassController.js'
|
||||
import CourseTransStatsController from './Controller/CourseTransStatsController.js'
|
||||
import StudentActionStatsController from './Controller/StudentActionStatsController.js'
|
||||
import StudentActionTransController from './Controller/StudentActionTransController.js'
|
||||
import CourseController from './Controller/CourseController.js';
|
||||
import SchoolInfoController from './Controller/SchoolInfoController.js';
|
||||
import StudentController from './Controller/StudentController.js';
|
||||
import SysUserController from './Controller/SysUserController.js';
|
||||
import StudentClassController from './Controller/StudentClassController.js';
|
||||
import CourseTransStatsController from './Controller/CourseTransStatsController.js';
|
||||
import StudentActionStatsController from './Controller/StudentActionStatsController.js';
|
||||
import StudentActionTransController from './Controller/StudentActionTransController.js';
|
||||
|
||||
export {
|
||||
SystemController,
|
||||
|
||||
@@ -16,7 +16,7 @@ $--color-transition-base: color .2s cubic-bezier(.645,.045,.355,1) !default;
|
||||
/* Color
|
||||
-------------------------- */
|
||||
/// color|1|Brand Color|0
|
||||
$--color-primary: #FFA424 !default;
|
||||
$--color-primary: #FCA834 !default;
|
||||
/// color|1|Background Color|4
|
||||
$--color-white: #FFFFFF !default;
|
||||
/// 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-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */
|
||||
/// color|1|Functional Color|1
|
||||
$--color-success: #67C23A !default;
|
||||
$--color-success: #6DC741 !default;
|
||||
/// color|1|Functional Color|1
|
||||
$--color-warning: #E6A23C !default;
|
||||
/// color|1|Functional Color|1
|
||||
@@ -72,11 +72,10 @@ $--background-color-base: #F5F7FA !default;
|
||||
// color for left sidebar title
|
||||
$--color-sidebar-title-text: #FFFFFF;
|
||||
// color for left sidebar background
|
||||
$--color-menu-background: #FF7746;
|
||||
$--color-menu-background: #042345;
|
||||
$--color-menu-item-active-text-color: #FFFFFF;
|
||||
$--color-menu-item-active-background: rgba(255, 255, 255, 0.01);
|
||||
$--color-menu-item-active-background-to: rgba(255, 255, 255, 0.3);
|
||||
|
||||
$--color-menu-item-active-background: $--color-primary;
|
||||
$--color-submenu-background: #021F3B;
|
||||
/* Link
|
||||
-------------------------- */
|
||||
$--link-color: $--color-primary-light-2 !default;
|
||||
@@ -738,7 +737,7 @@ $--tree-expand-icon-color: $--color-text-placeholder !default;
|
||||
/* Dropdown
|
||||
-------------------------- */
|
||||
$--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;
|
||||
|
||||
/* Badge
|
||||
|
||||
BIN
orange-demo-multi-web/src/assets/img/login.png
Normal file
BIN
orange-demo-multi-web/src/assets/img/login.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 712 KiB |
BIN
orange-demo-multi-web/src/assets/img/login_logo.png
Normal file
BIN
orange-demo-multi-web/src/assets/img/login_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
BIN
orange-demo-multi-web/src/assets/img/logo.png
Normal file
BIN
orange-demo-multi-web/src/assets/img/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.6 KiB |
@@ -7,7 +7,7 @@
|
||||
"theme-blue": "et -c element-variables-blue.scss"
|
||||
},
|
||||
"devDependencies": {
|
||||
"element-theme": "^2.0.1",
|
||||
"element-theme-chalk": "^2.14.1"
|
||||
"element-theme": "2.0.1",
|
||||
"element-theme-chalk": "2.14.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,8 +51,25 @@ body .layer-dialog {
|
||||
body .layer-dialog .layui-layer-content {
|
||||
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 {
|
||||
padding: 0px;
|
||||
}
|
||||
@@ -98,18 +115,18 @@ body .layer-dialog .layui-layer-content {
|
||||
|
||||
.page-close-box {
|
||||
position: absolute;
|
||||
background: #13ce66;
|
||||
background: #0092FF;
|
||||
transform: rotate(45deg);
|
||||
height: 60px;
|
||||
width: 60px;
|
||||
right: -30px;
|
||||
top:-30px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
right: -25px;
|
||||
top:-25px;
|
||||
text-align: center;
|
||||
|
||||
.el-button {
|
||||
transform: rotate(-45deg);
|
||||
color: white;
|
||||
margin-top: 30px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -264,6 +281,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样式
|
||||
@@ -277,6 +300,45 @@ body .layer-dialog .layui-layer-content {
|
||||
.table-header-gray, .has-gutter .gutter {
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 图片上传以及显示样式
|
||||
|
||||
@@ -109,4 +109,9 @@
|
||||
|
||||
.form-single-fragment {
|
||||
//
|
||||
}
|
||||
|
||||
.advance-query-form {
|
||||
padding: 0px!important;
|
||||
background-color: transparent!important;;
|
||||
}
|
||||
@@ -1705,7 +1705,7 @@
|
||||
min-width: 180px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
border-right: solid 1px #E4E7ED; }
|
||||
.el-cascader-menu:last-child {
|
||||
border-right: none; }
|
||||
@@ -1750,9 +1750,9 @@
|
||||
line-height: 34px;
|
||||
outline: none; }
|
||||
.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 {
|
||||
color: #FFFFFF;
|
||||
color: #409EFF;
|
||||
font-weight: bold; }
|
||||
.el-cascader-node:not(.is-disabled) {
|
||||
cursor: pointer; }
|
||||
|
||||
@@ -3282,7 +3282,7 @@
|
||||
min-width: 180px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
border-right: solid 1px #E4E7ED; }
|
||||
.el-cascader-menu:last-child {
|
||||
border-right: none; }
|
||||
@@ -3327,9 +3327,9 @@
|
||||
line-height: 34px;
|
||||
outline: none; }
|
||||
.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 {
|
||||
color: #FFFFFF;
|
||||
color: #409EFF;
|
||||
font-weight: bold; }
|
||||
.el-cascader-node:not(.is-disabled) {
|
||||
cursor: pointer; }
|
||||
@@ -3454,7 +3454,7 @@
|
||||
margin: 0;
|
||||
padding: 6px 0;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
text-align: center; }
|
||||
.el-cascader__suggestion-item {
|
||||
display: -webkit-box;
|
||||
@@ -3474,7 +3474,7 @@
|
||||
.el-cascader__suggestion-item:hover, .el-cascader__suggestion-item:focus {
|
||||
background: #F5F7FA; }
|
||||
.el-cascader__suggestion-item.is-checked {
|
||||
color: #FFFFFF;
|
||||
color: #409EFF;
|
||||
font-weight: bold; }
|
||||
.el-cascader__suggestion-item > span {
|
||||
margin-right: 10px; }
|
||||
@@ -3489,7 +3489,7 @@
|
||||
min-width: 60px;
|
||||
margin: 2px 0 2px 15px;
|
||||
padding: 0;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
border: none;
|
||||
outline: none;
|
||||
-webkit-box-sizing: border-box;
|
||||
|
||||
@@ -46757,7 +46757,7 @@
|
||||
min-width: 180px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
border-right: solid 1px #E4E7ED; }
|
||||
.el-cascader-menu:last-child {
|
||||
border-right: none; }
|
||||
@@ -46802,9 +46802,9 @@
|
||||
line-height: 34px;
|
||||
outline: none; }
|
||||
.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 {
|
||||
color: #FFFFFF;
|
||||
color: #409EFF;
|
||||
font-weight: bold; }
|
||||
.el-cascader-node:not(.is-disabled) {
|
||||
cursor: pointer; }
|
||||
@@ -46929,7 +46929,7 @@
|
||||
margin: 0;
|
||||
padding: 6px 0;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
text-align: center; }
|
||||
.el-cascader__suggestion-item {
|
||||
display: -webkit-box;
|
||||
@@ -46949,7 +46949,7 @@
|
||||
.el-cascader__suggestion-item:hover, .el-cascader__suggestion-item:focus {
|
||||
background: #F5F7FA; }
|
||||
.el-cascader__suggestion-item.is-checked {
|
||||
color: #FFFFFF;
|
||||
color: #409EFF;
|
||||
font-weight: bold; }
|
||||
.el-cascader__suggestion-item > span {
|
||||
margin-right: 10px; }
|
||||
@@ -46964,7 +46964,7 @@
|
||||
min-width: 60px;
|
||||
margin: 2px 0 2px 15px;
|
||||
padding: 0;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
border: none;
|
||||
outline: none;
|
||||
-webkit-box-sizing: border-box;
|
||||
@@ -55916,7 +55916,7 @@
|
||||
min-width: 180px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
border-right: solid 1px #E4E7ED; }
|
||||
.el-cascader-menu:last-child {
|
||||
border-right: none; }
|
||||
@@ -55961,9 +55961,9 @@
|
||||
line-height: 34px;
|
||||
outline: none; }
|
||||
.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 {
|
||||
color: #FFFFFF;
|
||||
color: #409EFF;
|
||||
font-weight: bold; }
|
||||
.el-cascader-node:not(.is-disabled) {
|
||||
cursor: pointer; }
|
||||
|
||||
@@ -46,10 +46,10 @@ class Dialog {
|
||||
}
|
||||
|
||||
let observer = {
|
||||
cancel: function (isSuccess = false) {
|
||||
cancel: function (isSuccess = false, data = undefined) {
|
||||
layer.close(this.index);
|
||||
if (isSuccess) {
|
||||
resolve();
|
||||
resolve(data);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
|
||||
@@ -99,7 +99,6 @@ export default {
|
||||
return content;
|
||||
}
|
||||
this.editor.customConfig.linkImgCallback = (url) => {
|
||||
console.log(url) // url 即插入图片的地址
|
||||
}
|
||||
this.editor.customConfig.linkCheck = (text, link) => {
|
||||
return true // 返回 true 表示校验成功
|
||||
@@ -112,7 +111,6 @@ export default {
|
||||
}
|
||||
// 失去焦点后更新数据
|
||||
this.editor.customConfig.onblur = (html) => {
|
||||
console.log(html)
|
||||
this.$emit('input', html);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
module.exports = {
|
||||
baseUrl: 'http://localhost:8082/',
|
||||
projectName: '橙单项目'
|
||||
projectName: '橙单代码生成平台'
|
||||
}
|
||||
|
||||
@@ -2,8 +2,14 @@ const projectConfig = require('../config/' + process.env.NODE_ENV);
|
||||
|
||||
export const globalConfig = {
|
||||
httpOption: {
|
||||
// 调用的时候是否显示蒙版
|
||||
showMask: true,
|
||||
showError: true
|
||||
// 是否显示公共的错误提示
|
||||
showError: true,
|
||||
// 是否开启节流功能,同一个url不能频繁重复调用
|
||||
throttleFlag: false,
|
||||
// 节流间隔
|
||||
throttleTimeout: 50
|
||||
},
|
||||
axiosOption: {
|
||||
}
|
||||
|
||||
@@ -135,13 +135,15 @@ const doUrl = function (url, type, params, axiosOption, options) {
|
||||
options = merge(globalConfig.httpOption, options);
|
||||
axiosOption = merge(globalConfig.axiosOption, axiosOption);
|
||||
if (type == null || type === '') type = 'post';
|
||||
if (ajaxThrottleSet.has(url)) {
|
||||
if (ajaxThrottleSet.has(url) && options.throttleFlag) {
|
||||
return Promise.resolve();
|
||||
} else {
|
||||
ajaxThrottleSet.add(url);
|
||||
setTimeout(() => {
|
||||
ajaxThrottleSet.delete(url);
|
||||
}, 50);
|
||||
if (options.throttleFlag) {
|
||||
ajaxThrottleSet.add(url);
|
||||
setTimeout(() => {
|
||||
ajaxThrottleSet.delete(url);
|
||||
}, options.throttleTimeout || 50);
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
if (options.showMask) loadingManager.showMask();
|
||||
let ajaxCall = null;
|
||||
|
||||
@@ -10,7 +10,8 @@ const service = axios.create({
|
||||
withCredentials: true,
|
||||
headers: {
|
||||
// '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: [
|
||||
function (data) {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import '@/core/http';
|
||||
import JSONbig from 'json-bigint';
|
||||
import '@/components/Dialog';
|
||||
import Vue from 'vue';
|
||||
import ElementUI from 'element-ui';
|
||||
@@ -16,6 +17,8 @@ import FilterBox from '@/components/FilterBox';
|
||||
import TableProgressColumn from '@/components/TableProgressColumn';
|
||||
import VCharts from 'v-charts';
|
||||
|
||||
window.JSON = new JSONbig({storeAsString: true});
|
||||
|
||||
Vue.component('tree-select', TreeSelect);
|
||||
Vue.component('rich-editor', RichEditor);
|
||||
Vue.component('input-number-range', InputNumberRange);
|
||||
|
||||
@@ -33,16 +33,17 @@ const routers = [
|
||||
{path: 'formSysDict', component: _import('upms/formDictManagement/index'), name: 'formSysDict', 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: 'formSysLoginUser', component: _import('upms/formSysLoginUser/index'), name: 'formSysLoginUser', 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: 'formStudent', component: _import('generated/formStudent/index'), name: 'formStudent', props: getProps, meta: {title: '学生管理'}},
|
||||
{path: 'formCourse', component: _import('generated/formCourse/index'), name: 'formCourse', props: getProps, meta: {title: '课程管理'}},
|
||||
{path: 'formCourseStats', component: _import('generated/formCourseStats/index'), name: 'formCourseStats', props: getProps, meta: {title: '课程统计'}},
|
||||
{path: 'formStudentActionStats', component: _import('generated/formStudentActionStats/index'), name: 'formStudentActionStats', props: getProps, meta: {title: '学生行为统计'}},
|
||||
{path: 'formStudentActionDetail', component: _import('generated/formStudentActionDetail/index'), name: 'formStudentActionDetail', props: getProps, meta: {title: '学生行为详情'}},
|
||||
{path: 'formSetClassStudent', component: _import('generated/formSetClassStudent/index'), name: 'formSetClassStudent', props: getProps, meta: {title: '设置班级学生'}},
|
||||
{path: 'formSetClassCourse', component: _import('generated/formSetClassCourse/index'), name: 'formSetClassCourse', props: getProps, meta: {title: '设置班级课程'}},
|
||||
{path: 'formClass', component: _import('generated/formClass/index'), name: 'formClass', props: getProps, meta: {title: '班级管理'}}
|
||||
{path: 'formSchool', component: _import('generated/formSchool'), name: 'formSchool', props: getProps, meta: {title: '校区管理'}},
|
||||
{path: 'formStudent', component: _import('generated/formStudent'), name: 'formStudent', props: getProps, meta: {title: '学生管理'}},
|
||||
{path: 'formCourse', component: _import('generated/formCourse'), name: 'formCourse', props: getProps, meta: {title: '课程管理'}},
|
||||
{path: 'formCourseStats', component: _import('generated/formCourseStats'), name: 'formCourseStats', props: getProps, meta: {title: '课程统计'}},
|
||||
{path: 'formStudentActionStats', component: _import('generated/formStudentActionStats'), name: 'formStudentActionStats', props: getProps, meta: {title: '学生行为统计'}},
|
||||
{path: 'formStudentActionDetail', component: _import('generated/formStudentActionDetail'), name: 'formStudentActionDetail', props: getProps, meta: {title: '学生行为详情'}},
|
||||
{path: 'formSetClassStudent', component: _import('generated/formSetClassStudent'), name: 'formSetClassStudent', props: getProps, meta: {title: '设置班级学生'}},
|
||||
{path: 'formSetClassCourse', component: _import('generated/formSetClassCourse'), name: 'formSetClassCourse', props: getProps, meta: {title: '设置班级课程'}},
|
||||
{path: 'formClass', component: _import('generated/formClass'), name: 'formClass', props: getProps, meta: {title: '班级管理'}}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -4,8 +4,9 @@
|
||||
import Vue from 'vue';
|
||||
|
||||
class DictionaryBase extends Map {
|
||||
constructor (dataList, keyId = 'id', symbolId = 'symbol') {
|
||||
constructor (name, dataList, keyId = 'id', symbolId = 'symbol') {
|
||||
super();
|
||||
this.showName = name;
|
||||
this.setList(dataList, keyId, symbolId);
|
||||
}
|
||||
|
||||
@@ -50,7 +51,7 @@ class DictionaryBase extends Map {
|
||||
}
|
||||
}
|
||||
|
||||
const SysUserStatus = new DictionaryBase([
|
||||
const SysUserStatus = new DictionaryBase('用户状态', [
|
||||
{
|
||||
id: 0,
|
||||
name: '正常状态',
|
||||
@@ -64,7 +65,7 @@ const SysUserStatus = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.SysUserStatus = SysUserStatus;
|
||||
|
||||
const SysUserType = new DictionaryBase([
|
||||
const SysUserType = new DictionaryBase('用户类型', [
|
||||
{
|
||||
id: 0,
|
||||
name: '管理员',
|
||||
@@ -83,7 +84,7 @@ const SysUserType = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.SysUserType = SysUserType;
|
||||
|
||||
const ClassStatus = new DictionaryBase([
|
||||
const ClassStatus = new DictionaryBase('班级状态', [
|
||||
{
|
||||
id: 1,
|
||||
name: '正常',
|
||||
@@ -97,7 +98,7 @@ const ClassStatus = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.ClassStatus = ClassStatus;
|
||||
|
||||
const ClassLevel = new DictionaryBase([
|
||||
const ClassLevel = new DictionaryBase('班级级别', [
|
||||
{
|
||||
id: 0,
|
||||
name: '初级班',
|
||||
@@ -116,7 +117,7 @@ const ClassLevel = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.ClassLevel = ClassLevel;
|
||||
|
||||
const CourseDifficult = new DictionaryBase([
|
||||
const CourseDifficult = new DictionaryBase('课程难度', [
|
||||
{
|
||||
id: 0,
|
||||
name: '容易',
|
||||
@@ -135,7 +136,7 @@ const CourseDifficult = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.CourseDifficult = CourseDifficult;
|
||||
|
||||
const Subject = new DictionaryBase([
|
||||
const Subject = new DictionaryBase('学科', [
|
||||
{
|
||||
id: 0,
|
||||
name: '语文',
|
||||
@@ -154,7 +155,7 @@ const Subject = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.Subject = Subject;
|
||||
|
||||
const StudentActionType = new DictionaryBase([
|
||||
const StudentActionType = new DictionaryBase('学生行为', [
|
||||
{
|
||||
id: 0,
|
||||
name: '充值',
|
||||
@@ -213,7 +214,7 @@ const StudentActionType = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.StudentActionType = StudentActionType;
|
||||
|
||||
const DeviceType = new DictionaryBase([
|
||||
const DeviceType = new DictionaryBase('设备类型', [
|
||||
{
|
||||
id: 0,
|
||||
name: 'iOS',
|
||||
@@ -232,7 +233,7 @@ const DeviceType = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.DeviceType = DeviceType;
|
||||
|
||||
const Gender = new DictionaryBase([
|
||||
const Gender = new DictionaryBase('性别', [
|
||||
{
|
||||
id: 1,
|
||||
name: '男',
|
||||
@@ -246,7 +247,7 @@ const Gender = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.Gender = Gender;
|
||||
|
||||
const ExpLevel = new DictionaryBase([
|
||||
const ExpLevel = new DictionaryBase('经验等级', [
|
||||
{
|
||||
id: 0,
|
||||
name: '初级学员',
|
||||
@@ -265,7 +266,7 @@ const ExpLevel = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.ExpLevel = ExpLevel;
|
||||
|
||||
const StudentStatus = new DictionaryBase([
|
||||
const StudentStatus = new DictionaryBase('学生状态', [
|
||||
{
|
||||
id: 0,
|
||||
name: '正常',
|
||||
@@ -284,7 +285,7 @@ const StudentStatus = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.StudentStatus = StudentStatus;
|
||||
|
||||
const SysPermModuleType = new DictionaryBase([
|
||||
const SysPermModuleType = new DictionaryBase('权限分组类型', [
|
||||
{
|
||||
id: 0,
|
||||
name: '分组模块',
|
||||
@@ -297,7 +298,7 @@ const SysPermModuleType = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.SysPermModuleType = SysPermModuleType;
|
||||
|
||||
const SysPermCodeType = new DictionaryBase([{
|
||||
const SysPermCodeType = new DictionaryBase('权限字类型', [{
|
||||
id: 0,
|
||||
name: '表单',
|
||||
symbol: 'FORM'
|
||||
@@ -312,7 +313,7 @@ const SysPermCodeType = new DictionaryBase([{
|
||||
}]);
|
||||
Vue.prototype.SysPermCodeType = SysPermCodeType;
|
||||
|
||||
const SysMenuType = new DictionaryBase([
|
||||
const SysMenuType = new DictionaryBase('菜单类型', [
|
||||
{
|
||||
id: 0,
|
||||
name: '目录',
|
||||
@@ -335,7 +336,6 @@ const SysMenuType = new DictionaryBase([
|
||||
}
|
||||
]);
|
||||
Vue.prototype.SysMenuType = SysMenuType;
|
||||
|
||||
export {
|
||||
DictionaryBase,
|
||||
SysUserStatus,
|
||||
|
||||
@@ -11,8 +11,14 @@ export default {
|
||||
getClientHeight: (state) => {
|
||||
return state.documentClientHeight;
|
||||
},
|
||||
getClientWidth: (state) => {
|
||||
return state.documentClienWidth;
|
||||
},
|
||||
getMainContextHeight: (state) => {
|
||||
return state.documentClientHeight - (state.supportTags ? 140 : 100);
|
||||
return state.documentClientHeight - (state.supportTags ? 130 : 90);
|
||||
},
|
||||
getOnlineFormCache: (state) => {
|
||||
return state.onlineFormCache;
|
||||
},
|
||||
getUserInfo: (state) => {
|
||||
return state.userInfo;
|
||||
|
||||
@@ -8,6 +8,18 @@ export default {
|
||||
setClientHeight: (state, 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) => {
|
||||
setObjectToSessionStorage('userInfo', info);
|
||||
state.userInfo = initUserInfo(info);
|
||||
@@ -97,7 +109,8 @@ export default {
|
||||
}
|
||||
|
||||
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];
|
||||
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) {
|
||||
state.cachePages = [...state.cachePages, menuItem.formRouterName];
|
||||
if (menuItem.onlineFormId == null || menuItem.onlineFormId === '') {
|
||||
state.cachePages = [...state.cachePages, menuItem.formRouterName];
|
||||
}
|
||||
setObjectToSessionStorage('cachePages', state.cachePages);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -10,6 +10,10 @@ export default {
|
||||
supportTags: false,
|
||||
// 浏览器客户区高度
|
||||
documentClientHeight: 100,
|
||||
// 浏览器客户区宽度
|
||||
documentClientWidth: undefined,
|
||||
// 在线表单查询页面缓存
|
||||
onlineFormCache: {},
|
||||
// 用户登录信息
|
||||
userInfo: initUserInfo(),
|
||||
// 缓存页面
|
||||
|
||||
@@ -346,7 +346,7 @@ export class TreeTableImpl {
|
||||
calcPermCodeTreeAttribute(item, checkedRows);
|
||||
});
|
||||
}
|
||||
console.log(treeData, checkedRows);
|
||||
|
||||
return treeData;
|
||||
}
|
||||
|
||||
|
||||
@@ -133,7 +133,6 @@ export class TableWidget {
|
||||
this.oldPage = this.currentPage;
|
||||
this.oldPageSize = this.pageSize;
|
||||
}).catch(e => {
|
||||
console.log(e);
|
||||
this.currentPage = this.oldPage;
|
||||
this.pageSize = this.oldPageSize;
|
||||
});
|
||||
@@ -161,7 +160,6 @@ export class TableWidget {
|
||||
* @param {Object} oldRow 老的选中行
|
||||
*/
|
||||
currentRowChange (currentRow, oldRow) {
|
||||
console.log(currentRow, oldRow);
|
||||
this.currentRow = currentRow;
|
||||
}
|
||||
clearTable () {
|
||||
|
||||
@@ -190,9 +190,9 @@ import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/
|
||||
import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins';
|
||||
/* eslint-disable-next-line */
|
||||
import { StudentClassController, DictionaryController } from '@/api';
|
||||
import formEditClassCourseOrder from '@/views/generated/formEditClassCourseOrder';
|
||||
import formEditClass from '@/views/generated/formEditClass';
|
||||
import formCreateClass from '@/views/generated/formCreateClass';
|
||||
import formCreateClass from '@/views/generated/formCreateClass.vue';
|
||||
import formEditClass from '@/views/generated/formEditClass.vue';
|
||||
import formEditClassCourseOrder from '@/views/generated/formEditClassCourseOrder.vue';
|
||||
|
||||
export default {
|
||||
name: 'formClass',
|
||||
@@ -239,14 +239,14 @@ export default {
|
||||
classCourseCard: {
|
||||
isInit: false
|
||||
},
|
||||
Student: {
|
||||
impl: new TableWidget(this.loadStudentWidgetData, this.loadStudentVerify, true, false)
|
||||
StudentClass: {
|
||||
impl: new TableWidget(this.loadStudentClassWidgetData, this.loadStudentClassVerify, true, true, 'createTime', 1)
|
||||
},
|
||||
Course: {
|
||||
impl: new TableWidget(this.loadCourseWidgetData, this.loadCourseVerify, true, false)
|
||||
},
|
||||
StudentClass: {
|
||||
impl: new TableWidget(this.loadStudentClassWidgetData, this.loadStudentClassVerify, true, true, 'createTime', 1)
|
||||
Student: {
|
||||
impl: new TableWidget(this.loadStudentWidgetData, this.loadStudentVerify, true, false)
|
||||
},
|
||||
classStudentCard: {
|
||||
isInit: false
|
||||
@@ -263,35 +263,41 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 班级学生数据获取函数,返回Promise
|
||||
* 班级数据数据获取函数,返回Promise
|
||||
*/
|
||||
loadStudentWidgetData (params) {
|
||||
if (
|
||||
(this.formClass.StudentClass.impl.currentRow || {}).classId == null
|
||||
) {
|
||||
this.formClass.Student.impl.clearTable();
|
||||
return Promise.reject();
|
||||
}
|
||||
loadStudentClassWidgetData (params) {
|
||||
if (params == null) 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) => {
|
||||
StudentClassController.listClassStudent(this, params).then(res => {
|
||||
StudentClassController.list(this, params).then(res => {
|
||||
resolve({
|
||||
dataList: res.data.dataList,
|
||||
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 => {
|
||||
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;
|
||||
},
|
||||
/**
|
||||
@@ -327,41 +333,35 @@ export default {
|
||||
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 = {};
|
||||
params = {
|
||||
...params,
|
||||
studentClassFilter: {
|
||||
className: this.formClass.formFilterCopy.className,
|
||||
schoolId: this.formClass.formFilterCopy.schoolId
|
||||
}
|
||||
classId: (this.formClass.StudentClass.impl.currentRow || {}).classId
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
StudentClassController.list(this, params).then(res => {
|
||||
StudentClassController.listClassStudent(this, params).then(res => {
|
||||
resolve({
|
||||
dataList: res.data.dataList,
|
||||
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 => {
|
||||
reject(e);
|
||||
});
|
||||
});
|
||||
},
|
||||
/**
|
||||
* 班级数据数据获取检测函数,返回true正常获取数据,返回false停止获取数据
|
||||
* 班级学生数据获取检测函数,返回true正常获取数据,返回false停止获取数据
|
||||
*/
|
||||
loadStudentClassVerify () {
|
||||
this.formClass.formFilterCopy.className = this.formClass.formFilter.className;
|
||||
this.formClass.formFilterCopy.schoolId = this.formClass.formFilter.schoolId;
|
||||
loadStudentVerify () {
|
||||
return true;
|
||||
},
|
||||
/**
|
||||
@@ -385,7 +385,7 @@ export default {
|
||||
/**
|
||||
* 更新班级课程
|
||||
*/
|
||||
refreshClassCourseCard (reloadData = false) {
|
||||
refreshClassCourseCardWidget (reloadData = false) {
|
||||
// 更新容器下所有的数据组件
|
||||
if (reloadData) {
|
||||
this.formClass.Course.impl.refreshTable(true, 1);
|
||||
@@ -397,7 +397,7 @@ export default {
|
||||
/**
|
||||
* 更新班级学生
|
||||
*/
|
||||
refreshClassStudentCard (reloadData = false) {
|
||||
refreshClassStudentCardWidget (reloadData = false) {
|
||||
// 更新容器下所有的数据组件
|
||||
if (reloadData) {
|
||||
this.formClass.Student.impl.refreshTable(true, 1);
|
||||
@@ -409,7 +409,7 @@ export default {
|
||||
/**
|
||||
* 更新班级列表
|
||||
*/
|
||||
refreshClassCard (reloadData = false) {
|
||||
refreshClassCardWidget (reloadData = false) {
|
||||
// 更新容器下所有的数据组件
|
||||
if (reloadData) {
|
||||
this.formClass.StudentClass.impl.refreshTable(true, 1);
|
||||
@@ -423,9 +423,9 @@ export default {
|
||||
*/
|
||||
refreshFormClass (reloadData = false) {
|
||||
if (reloadData) {
|
||||
this.formClass.Student.impl.refreshTable(true, 1);
|
||||
this.formClass.StudentClass.impl.refreshTable(true, 1);
|
||||
} else {
|
||||
this.formClass.Student.impl.refreshTable();
|
||||
this.formClass.StudentClass.impl.refreshTable();
|
||||
}
|
||||
if (reloadData) {
|
||||
this.formClass.Course.impl.refreshTable(true, 1);
|
||||
@@ -433,9 +433,9 @@ export default {
|
||||
this.formClass.Course.impl.refreshTable();
|
||||
}
|
||||
if (reloadData) {
|
||||
this.formClass.StudentClass.impl.refreshTable(true, 1);
|
||||
this.formClass.Student.impl.refreshTable(true, 1);
|
||||
} else {
|
||||
this.formClass.StudentClass.impl.refreshTable();
|
||||
this.formClass.Student.impl.refreshTable();
|
||||
}
|
||||
if (!this.formClass.isInit) {
|
||||
// 初始化下拉数据
|
||||
@@ -449,9 +449,9 @@ export default {
|
||||
let params = {};
|
||||
|
||||
this.$dialog.show('新建', formCreateClass, {
|
||||
area: ['800px']
|
||||
area: '800px'
|
||||
}, params).then(res => {
|
||||
this.refreshClassCard();
|
||||
this.refreshClassCardWidget();
|
||||
}).catch(e => {});
|
||||
},
|
||||
/**
|
||||
@@ -509,7 +509,7 @@ export default {
|
||||
};
|
||||
|
||||
this.$dialog.show('课程顺序', formEditClassCourseOrder, {
|
||||
area: ['400px']
|
||||
area: '400px'
|
||||
}, params).then(res => {
|
||||
this.formClass.Course.impl.refreshTable();
|
||||
}).catch(e => {});
|
||||
@@ -546,7 +546,7 @@ export default {
|
||||
};
|
||||
|
||||
this.$dialog.show('编辑', formEditClass, {
|
||||
area: ['800px']
|
||||
area: '800px'
|
||||
}, params).then(res => {
|
||||
this.formClass.StudentClass.impl.refreshTable();
|
||||
}).catch(e => {});
|
||||
@@ -634,8 +634,8 @@ export default {
|
||||
// 班级数据选择行数据变化
|
||||
'formClass.StudentClass.impl.currentRow': {
|
||||
handler (newValue) {
|
||||
this.formClass.Student.impl.refreshTable(true, 1);
|
||||
this.formClass.Course.impl.refreshTable(true, 1);
|
||||
this.formClass.Student.impl.refreshTable(true, 1);
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
@@ -108,8 +108,8 @@ import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/
|
||||
import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins';
|
||||
/* eslint-disable-next-line */
|
||||
import { CourseController, DictionaryController } from '@/api';
|
||||
import formCreateCourse from '@/views/generated/formCreateCourse';
|
||||
import formEditCourse from '@/views/generated/formEditCourse';
|
||||
import formEditCourse from '@/views/generated/formEditCourse.vue';
|
||||
import formCreateCourse from '@/views/generated/formCreateCourse.vue';
|
||||
|
||||
export default {
|
||||
name: 'formCourse',
|
||||
@@ -155,7 +155,7 @@ export default {
|
||||
if (params == null) params = {};
|
||||
params = {
|
||||
...params,
|
||||
courseFilter: {
|
||||
courseDtoFilter: {
|
||||
courseName: this.formCourse.formFilterCopy.courseName,
|
||||
difficulty: this.formCourse.formFilterCopy.difficulty,
|
||||
gradeId: this.formCourse.formFilterCopy.gradeId,
|
||||
@@ -258,7 +258,7 @@ export default {
|
||||
let params = {};
|
||||
|
||||
this.$dialog.show('新建', formCreateCourse, {
|
||||
area: ['800px']
|
||||
area: '800px'
|
||||
}, params).then(res => {
|
||||
this.refreshFormCourse();
|
||||
}).catch(e => {});
|
||||
@@ -272,7 +272,7 @@ export default {
|
||||
};
|
||||
|
||||
this.$dialog.show('编辑', formEditCourse, {
|
||||
area: ['800px']
|
||||
area: '800px'
|
||||
}, params).then(res => {
|
||||
this.formCourse.Course.impl.refreshTable();
|
||||
}).catch(e => {});
|
||||
@@ -13,8 +13,8 @@
|
||||
<el-form ref="formCourseStats" :model="formData" class="full-width-input" style="width: 100%;"
|
||||
label-width="100px" size="mini" label-position="right" @submit.native.prevent>
|
||||
<el-row :gutter="20">
|
||||
<el-col class="table-box" :span="12">
|
||||
<el-card class="base-card gutter-bottom" style="height: 350px" shadow="never" :body-style="{padding: '0px'}">
|
||||
<el-col class="table-box gutter-bottom" :span="12">
|
||||
<el-card class="base-card" style="height: 350px" shadow="never" :body-style="{padding: '0px'}">
|
||||
<div slot="header" class="base-card-header">
|
||||
<span>课程统计(年级)</span>
|
||||
<div class="base-card-operation">
|
||||
@@ -31,8 +31,8 @@
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col class="table-box" :span="12">
|
||||
<el-card class="base-card gutter-bottom" style="height: 350px" shadow="never" :body-style="{padding: '0px'}">
|
||||
<el-col class="table-box gutter-bottom" :span="12">
|
||||
<el-card class="base-card" style="height: 350px" shadow="never" :body-style="{padding: '0px'}">
|
||||
<div slot="header" class="base-card-header">
|
||||
<span>课程统计(学科)</span>
|
||||
<div class="base-card-operation">
|
||||
@@ -168,7 +168,7 @@ export default {
|
||||
fieldName: 'gradeId'
|
||||
}
|
||||
],
|
||||
courseTransStatsFilter: {
|
||||
courseTransStatsDtoFilter: {
|
||||
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
|
||||
}
|
||||
@@ -210,7 +210,7 @@ export default {
|
||||
fieldName: 'subjectId'
|
||||
}
|
||||
],
|
||||
courseTransStatsFilter: {
|
||||
courseTransStatsDtoFilter: {
|
||||
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
|
||||
}
|
||||
@@ -252,7 +252,7 @@ export default {
|
||||
fieldName: 'statsDate'
|
||||
}
|
||||
],
|
||||
courseTransStatsFilter: {
|
||||
courseTransStatsDtoFilter: {
|
||||
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
|
||||
}
|
||||
@@ -234,7 +234,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
let params = {
|
||||
studentClass: {
|
||||
studentClassDto: {
|
||||
className: this.formData.StudentClass.className,
|
||||
schoolId: this.formData.StudentClass.schoolId,
|
||||
leaderId: this.formData.StudentClass.leaderId,
|
||||
@@ -262,7 +262,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
let params = {
|
||||
course: {
|
||||
courseDto: {
|
||||
courseName: this.formData.Course.courseName,
|
||||
price: this.formData.Course.price,
|
||||
description: this.formData.Course.description,
|
||||
@@ -177,7 +177,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
let params = {
|
||||
schoolInfo: {
|
||||
schoolInfoDto: {
|
||||
schoolName: this.formData.SchoolInfo.schoolName,
|
||||
provinceId: this.formData.SchoolInfo.provinceId,
|
||||
cityId: this.formData.SchoolInfo.cityId
|
||||
@@ -406,7 +406,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
let params = {
|
||||
student: {
|
||||
studentDto: {
|
||||
loginMobile: this.formData.Student.loginMobile,
|
||||
studentName: this.formData.Student.studentName,
|
||||
provinceId: this.formData.Student.provinceId,
|
||||
@@ -240,7 +240,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
let params = {
|
||||
studentClass: {
|
||||
studentClassDto: {
|
||||
classId: this.classId,
|
||||
className: this.formData.StudentClass.className,
|
||||
schoolId: this.formData.StudentClass.schoolId,
|
||||
@@ -116,7 +116,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
let params = {
|
||||
classCourse: {
|
||||
classCourseDto: {
|
||||
classId: this.classId,
|
||||
courseId: this.courseId,
|
||||
courseOrder: this.formData.StudentClass.course.classCourse.courseOrder
|
||||
@@ -268,7 +268,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
let params = {
|
||||
course: {
|
||||
courseDto: {
|
||||
courseId: this.courseId,
|
||||
courseName: this.formData.Course.courseName,
|
||||
price: this.formData.Course.price,
|
||||
@@ -183,7 +183,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
let params = {
|
||||
schoolInfo: {
|
||||
schoolInfoDto: {
|
||||
schoolId: this.schoolId,
|
||||
schoolName: this.formData.SchoolInfo.schoolName,
|
||||
provinceId: this.formData.SchoolInfo.provinceId,
|
||||
@@ -468,7 +468,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
let params = {
|
||||
student: {
|
||||
studentDto: {
|
||||
studentId: this.studentId,
|
||||
loginMobile: this.formData.Student.loginMobile,
|
||||
studentName: this.formData.Student.studentName,
|
||||
@@ -78,8 +78,8 @@ import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/
|
||||
import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins';
|
||||
/* eslint-disable-next-line */
|
||||
import { SchoolInfoController, DictionaryController } from '@/api';
|
||||
import formCreateSchool from '@/views/generated/formCreateSchool';
|
||||
import formEditSchool from '@/views/generated/formEditSchool';
|
||||
import formEditSchool from '@/views/generated/formEditSchool.vue';
|
||||
import formCreateSchool from '@/views/generated/formCreateSchool.vue';
|
||||
|
||||
export default {
|
||||
name: 'formSchool',
|
||||
@@ -120,7 +120,7 @@ export default {
|
||||
if (params == null) params = {};
|
||||
params = {
|
||||
...params,
|
||||
schoolInfoFilter: {
|
||||
schoolInfoDtoFilter: {
|
||||
schoolName: this.formSchool.formFilterCopy.schoolName,
|
||||
provinceId: this.formSchool.formFilterCopy.provinceId,
|
||||
cityId: this.formSchool.formFilterCopy.cityId
|
||||
@@ -213,7 +213,7 @@ export default {
|
||||
let params = {};
|
||||
|
||||
this.$dialog.show('新建', formCreateSchool, {
|
||||
area: ['600px']
|
||||
area: '600px'
|
||||
}, params).then(res => {
|
||||
this.refreshFormSchool();
|
||||
}).catch(e => {});
|
||||
@@ -227,7 +227,7 @@ export default {
|
||||
};
|
||||
|
||||
this.$dialog.show('编辑', formEditSchool, {
|
||||
area: ['600px']
|
||||
area: '600px'
|
||||
}, params).then(res => {
|
||||
this.formSchool.SchoolInfo.impl.refreshTable();
|
||||
}).catch(e => {});
|
||||
@@ -156,7 +156,7 @@ export default {
|
||||
if (params == null) params = {};
|
||||
params = {
|
||||
...params,
|
||||
courseFilter: {
|
||||
courseDtoFilter: {
|
||||
courseName: this.formSetClassCourse.formFilterCopy.courseName,
|
||||
difficulty: this.formSetClassCourse.formFilterCopy.difficulty,
|
||||
gradeId: this.formSetClassCourse.formFilterCopy.gradeId,
|
||||
@@ -265,7 +265,7 @@ export default {
|
||||
}
|
||||
let params = {
|
||||
classId: this.classId,
|
||||
classCourseList: this.tableSelectRowList.map((item) => {
|
||||
classCourseDtoList: this.tableSelectRowList.map((item) => {
|
||||
return {
|
||||
courseId: item.courseId
|
||||
};
|
||||
@@ -124,7 +124,7 @@ export default {
|
||||
if (params == null) params = {};
|
||||
params = {
|
||||
...params,
|
||||
studentFilter: {
|
||||
studentDtoFilter: {
|
||||
schoolId: this.formSetClassStudent.formFilterCopy.schoolId
|
||||
},
|
||||
classId: this.classId
|
||||
@@ -191,7 +191,7 @@ export default {
|
||||
}
|
||||
let params = {
|
||||
classId: this.classId,
|
||||
classStudentList: this.tableSelectRowList.map((item) => {
|
||||
classStudentDtoList: this.tableSelectRowList.map((item) => {
|
||||
return {
|
||||
studentId: item.studentId
|
||||
};
|
||||
@@ -103,8 +103,8 @@ import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/
|
||||
import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins';
|
||||
/* eslint-disable-next-line */
|
||||
import { StudentController, DictionaryController } from '@/api';
|
||||
import formEditStudent from '@/views/generated/formEditStudent';
|
||||
import formCreateStudent from '@/views/generated/formCreateStudent';
|
||||
import formCreateStudent from '@/views/generated/formCreateStudent.vue';
|
||||
import formEditStudent from '@/views/generated/formEditStudent.vue';
|
||||
|
||||
export default {
|
||||
name: 'formStudent',
|
||||
@@ -147,7 +147,7 @@ export default {
|
||||
if (params == null) params = {};
|
||||
params = {
|
||||
...params,
|
||||
studentFilter: {
|
||||
studentDtoFilter: {
|
||||
gradeId: this.formStudent.formFilterCopy.gradeId,
|
||||
schoolId: this.formStudent.formFilterCopy.schoolId,
|
||||
registerTimeStart: Array.isArray(this.formStudent.formFilterCopy.registerDate) ? this.formStudent.formFilterCopy.registerDate[0] : undefined,
|
||||
@@ -243,7 +243,7 @@ export default {
|
||||
let params = {};
|
||||
|
||||
this.$dialog.show('新建', formCreateStudent, {
|
||||
area: ['800px']
|
||||
area: '800px'
|
||||
}, params).then(res => {
|
||||
this.refreshFormStudent();
|
||||
}).catch(e => {});
|
||||
@@ -257,7 +257,7 @@ export default {
|
||||
};
|
||||
|
||||
this.$dialog.show('编辑', formEditStudent, {
|
||||
area: ['800px']
|
||||
area: '800px'
|
||||
}, params).then(res => {
|
||||
this.formStudent.Student.impl.refreshTable();
|
||||
}).catch(e => {});
|
||||
@@ -145,7 +145,7 @@ export default {
|
||||
if (params == null) params = {};
|
||||
params = {
|
||||
...params,
|
||||
studentActionTransFilter: {
|
||||
studentActionTransDtoFilter: {
|
||||
gradeId: this.formStudentActionDetail.formFilterCopy.gradeId,
|
||||
actionType: this.formStudentActionDetail.formFilterCopy.actionType,
|
||||
createTimeStart: Array.isArray(this.formStudentActionDetail.formFilterCopy.statsDate) ? this.formStudentActionDetail.formFilterCopy.statsDate[0] : undefined,
|
||||
@@ -138,7 +138,7 @@ export default {
|
||||
fieldName: 'gradeId'
|
||||
}
|
||||
],
|
||||
studentActionStatsFilter: {
|
||||
studentActionStatsDtoFilter: {
|
||||
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,
|
||||
gradeId: this.formStudentActionStats.formFilterCopy.gradeId
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div style="height: 100%; position: relative;" class="sidebar-bg">
|
||||
<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>
|
||||
</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-menu ref="menu" mode="vertical" :default-active="getCurrentMenuId" :unique-opened="true" @select="selectMenu"
|
||||
:active-text-color="activeTextColor" :collapse="getCollapse" >
|
||||
@@ -28,7 +28,7 @@ export default {
|
||||
isCollapse: false,
|
||||
collapseLeft: '200px',
|
||||
showCollapseBtn: true,
|
||||
logoImage: require('../../../../assets/img/logo.jpg')
|
||||
logoImage: require('../../../../assets/img/logo.png')
|
||||
}
|
||||
},
|
||||
components: {
|
||||
@@ -73,3 +73,10 @@ export default {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.sidebar-title-text {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -34,7 +34,7 @@ export default {
|
||||
.tags-item {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
border: 1px solid $--border-color-extra-light;
|
||||
border: 1px solid rgba(0, 0, 0, 0.15);
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box;
|
||||
display: inline-block;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</div>
|
||||
<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">
|
||||
<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="closeOthersTags">关闭其他</li>
|
||||
</ul>
|
||||
@@ -123,7 +123,6 @@ export default {
|
||||
let width = 0;
|
||||
let childList = this.$children;
|
||||
for (let i = this.beginPos; i < childList.length; i++) {
|
||||
console.log(childList[i], childList[i].$el.offsetWidth);
|
||||
width += childList[i].$el.offsetWidth;
|
||||
// 间隔距离
|
||||
width += 5;
|
||||
@@ -158,9 +157,6 @@ export default {
|
||||
<style lang="scss" scoped>
|
||||
@import '@/assets/style/element-variables.scss';
|
||||
.tags-panel {
|
||||
background: white;
|
||||
box-shadow: 0px 1px 4px rgba(0,21,41,.08);
|
||||
border-top: 1px solid $--border-color-extra-light;
|
||||
}
|
||||
.main-panel {
|
||||
margin: 0px 30px;
|
||||
@@ -182,7 +178,6 @@ export default {
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
z-index: 100;
|
||||
background: white;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.arrow.left {
|
||||
@@ -194,7 +189,6 @@ export default {
|
||||
|
||||
.contextmenu {
|
||||
margin: 0px;
|
||||
background: #FFF;
|
||||
z-index: 2;
|
||||
position: fixed;
|
||||
list-style-type: none;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<el-container :style="getMainStyle">
|
||||
<el-aside width='200px' class="sidebar">
|
||||
<el-aside width='250px' class="sidebar">
|
||||
<side-bar style="overflow: hidden"></side-bar>
|
||||
</el-aside>
|
||||
<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" />
|
||||
<div class="menu-column" v-if="getMultiColumn" style="margin-left: 20px;">
|
||||
<el-menu mode="horizontal" :default-active="getCurrentColumnId" @select="onColumnChange">
|
||||
@@ -24,7 +24,7 @@
|
||||
</div>
|
||||
</el-header>
|
||||
<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">
|
||||
<transition name="fade" mode="out-in">
|
||||
<keep-alive :include="getCachePages">
|
||||
@@ -75,7 +75,9 @@ export default {
|
||||
clearTimeout(timerID);
|
||||
timerID = setTimeout(() => {
|
||||
var h = document.documentElement['clientHeight'];
|
||||
var w = document.documentElement['clientWidth'];
|
||||
_this.setClientHeight(h);
|
||||
_this.setClientWidth(w);
|
||||
}, 50);
|
||||
}
|
||||
},
|
||||
@@ -106,6 +108,7 @@ export default {
|
||||
},
|
||||
...mapMutations([
|
||||
'setClientHeight',
|
||||
'setClientWidth',
|
||||
'setCurrentColumnId',
|
||||
'clearCachePage',
|
||||
'clearAllTags',
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
<template>
|
||||
<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' }">
|
||||
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()">
|
||||
<el-row>
|
||||
<h3 class="title">橙单代码生成器</h3>
|
||||
<div class="login-box">
|
||||
<img :src="bkImg" style="height: 100%; flex-shrink: 0" />
|
||||
<div class="login-input">
|
||||
<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-form-item prop="mobilePhone">
|
||||
<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-form-item>
|
||||
</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()"
|
||||
:loading="isHttpLoading">
|
||||
登录
|
||||
</el-button>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -34,6 +36,8 @@ import { encrypt, setToken } from '@/utils';
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
bkImg: require('@/assets/img/login.png'),
|
||||
logoImg: require('@/assets/img/login_logo.png'),
|
||||
dataForm: {
|
||||
mobilePhone: 'admin',
|
||||
password: '123456'
|
||||
@@ -82,21 +86,45 @@ export default {
|
||||
|
||||
<style lang="scss">
|
||||
.login-form {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background: #292D36;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
height: 100vh;
|
||||
background: url(~@/assets/img/login_bg.jpg) no-repeat 50%, #000;
|
||||
background-size: 100%;
|
||||
|
||||
.title {
|
||||
margin: 0px;
|
||||
margin-bottom: 20px;
|
||||
color: #707070;
|
||||
font-size: 24;
|
||||
text-align: center;
|
||||
display: block;
|
||||
.login-box {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 70vh;
|
||||
padding: 7vh;
|
||||
border-radius: 3px;
|
||||
background: white;
|
||||
.login-input {
|
||||
height: 100%;
|
||||
width: 420px;
|
||||
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>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<el-container>
|
||||
<el-container class="advance-query-form">
|
||||
<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">
|
||||
<span>字典列表</span>
|
||||
</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"
|
||||
:current-node-key="(dictList[0] || {}).variableName" @node-click="onDictChange">
|
||||
<div class="module-node-item" slot-scope="{ data }">
|
||||
@@ -15,7 +15,7 @@
|
||||
</el-scrollbar>
|
||||
</el-card>
|
||||
</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>
|
||||
<filter-box :item-width="350">
|
||||
<el-form-item v-if="dirtyCount > 0" label="失效缓存数量:">
|
||||
@@ -37,7 +37,7 @@
|
||||
<el-col :span="24">
|
||||
<el-table :data="getCurrentDictData" size="mini" header-cell-class-name="table-header-gray"
|
||||
: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="字典名称" prop="name">
|
||||
<template slot-scope="scope">
|
||||
@@ -95,7 +95,6 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
tableRowStyle ({row, rowIndex}) {
|
||||
console.log(row);
|
||||
if (row.dirty) {
|
||||
return {
|
||||
background: '#FFE1E1'
|
||||
|
||||
@@ -70,9 +70,9 @@ export default {
|
||||
this.$refs.form.validate((valid) => {
|
||||
if (valid) {
|
||||
let params = {};
|
||||
params[this.dictInfo.variableName] = {};
|
||||
params[this.dictInfo.variableName][this.dictInfo.nameKey] = this.formData.name;
|
||||
params[this.dictInfo.variableName][this.dictInfo.parentKey] = this.formData.parentId;
|
||||
params[this.dictInfo.variableName + 'Dto'] = {};
|
||||
params[this.dictInfo.variableName + 'Dto'][this.dictInfo.nameKey] = this.formData.name;
|
||||
params[this.dictInfo.variableName + 'Dto'][this.dictInfo.parentKey] = this.formData.parentId;
|
||||
|
||||
if (this.formData.id == null) {
|
||||
this.dictInfo.addApi(this, params).then(res => {
|
||||
@@ -82,7 +82,7 @@ export default {
|
||||
|
||||
});
|
||||
} 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.$message.success('操作成功');
|
||||
this.onCancel(true);
|
||||
|
||||
@@ -68,7 +68,7 @@ export default {
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
let params = {};
|
||||
params.sysMenu = {...this.formData};
|
||||
params.sysMenuDto = {...this.formData};
|
||||
|
||||
if (this.isEdit) {
|
||||
SystemController.updateMenu(this, params).then(res => {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<el-col :span="12">
|
||||
<el-form-item label="上级菜单">
|
||||
<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" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -44,7 +44,8 @@
|
||||
<el-input size="mini" v-model="permCodeNameFilter" placeholder="输入权限字名称过滤" style="width: 250px;" clearable suffix-icon="el-icon-search" />
|
||||
</div>
|
||||
<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"
|
||||
show-checkbox :data="getPermCodeTree" :filter-node-method="filterPermCodeNode"></el-tree>
|
||||
</el-scrollbar>
|
||||
@@ -64,9 +65,9 @@
|
||||
|
||||
<script>
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
import { treeDataTranslate, findTreeNodePath, findTreeNode, findItemFromList } from '@/utils'
|
||||
import { SystemController } from '@/api'
|
||||
import IconSelect from '@/components/IconSelect/index.vue'
|
||||
import { treeDataTranslate, findTreeNodePath, findTreeNode, findItemFromList } from '@/utils';
|
||||
import { SystemController } from '@/api';
|
||||
import IconSelect from '@/components/IconSelect/index.vue';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
@@ -159,12 +160,11 @@ export default {
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
let params = {};
|
||||
params.sysMenu = {...this.formData};
|
||||
|
||||
params.sysMenuDto = {...this.formData};
|
||||
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();
|
||||
tempList = tempList.concat(this.$refs.permCodeTree.getCheckedKeys());
|
||||
params.permCodeIdListString = tempList.join(',');
|
||||
|
||||
@@ -126,7 +126,7 @@ export default {
|
||||
this.$refs.formCreatePerm.validate((valid) => {
|
||||
if (!valid) return;
|
||||
let params = {
|
||||
sysPerm: {
|
||||
sysPermDto: {
|
||||
permId: this.permId,
|
||||
showOrder: this.formData.SysPerm.showOrder,
|
||||
moduleId: Array.isArray(this.formData.SysPerm.moduleId) ? this.formData.SysPerm.moduleId[this.formData.SysPerm.moduleId.length - 1] : undefined,
|
||||
|
||||
@@ -145,14 +145,14 @@ export default {
|
||||
if (valid) {
|
||||
let selectedPermList = this.getTreeLeafKeys();
|
||||
let params = {};
|
||||
params.sysPermCode = {...this.formData};
|
||||
delete params.sysPermCode.children;
|
||||
params.sysPermCode.permCodeType = (this.permCodeType == null) ? this.SysPermCodeType.FORM : this.permCodeType;
|
||||
params.sysPermCodeDto = {...this.formData};
|
||||
delete params.sysPermCodeDto.children;
|
||||
params.sysPermCodeDto.permCodeType = (this.permCodeType == null) ? this.SysPermCodeType.FORM : this.permCodeType;
|
||||
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(',');
|
||||
if (params.sysPermCode.permCodeId != null) {
|
||||
if (params.sysPermCodeDto.permCodeId != null) {
|
||||
SystemController.updatePermCode(this, params).then(res => {
|
||||
resolve(res);
|
||||
this.$message.success('编辑成功');
|
||||
|
||||
@@ -128,7 +128,7 @@ export default {
|
||||
this.$refs.formCreatePermModule.validate((valid) => {
|
||||
if (!valid) return;
|
||||
let params = {
|
||||
sysPermModule: {
|
||||
sysPermModuleDto: {
|
||||
moduleId: this.moduleId,
|
||||
moduleName: this.formData.SysPermModule.moduleName,
|
||||
showOrder: this.formData.SysPermModule.showOrder,
|
||||
|
||||
@@ -97,7 +97,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
let params = {
|
||||
sysRole: {...this.formData}
|
||||
sysRoleDto: {...this.formData}
|
||||
}
|
||||
params.menuIdListString = selectMenu.join(',');
|
||||
if (this.isEdit) {
|
||||
|
||||
@@ -106,7 +106,7 @@ export default {
|
||||
}
|
||||
|
||||
let params = {
|
||||
sysUser: {
|
||||
sysUserDto: {
|
||||
userId: this.formData.userId,
|
||||
loginName: this.formData.loginName,
|
||||
password: this.formData.password,
|
||||
@@ -153,7 +153,7 @@ export default {
|
||||
},
|
||||
mounted () {
|
||||
if (this.rowData != null) {
|
||||
this.formData = {...this.rowData, dataPermIdList: [], roleIdList: []};
|
||||
this.formData = {...this.rowData, roleIdList: []};
|
||||
if (Array.isArray(this.formData.sysUserRoleList)) {
|
||||
this.formData.roleIdList = this.formData.sysUserRoleList.map(item => item.roleId);
|
||||
}
|
||||
|
||||
@@ -148,7 +148,7 @@ export default {
|
||||
},
|
||||
loadSysUserData (params) {
|
||||
params.roleId = this.roleId;
|
||||
params.sysUserFilter = {
|
||||
params.sysUserDtoFilter = {
|
||||
loginName: this.formSysUser.formFilterCopy.sysUserLoginName,
|
||||
userStatus: this.formSysUser.formFilterCopy.sysUserStatus
|
||||
}
|
||||
|
||||
146
orange-demo-multi-web/src/views/upms/formSysLoginUser/index.vue
Normal file
146
orange-demo-multi-web/src/views/upms/formSysLoginUser/index.vue
Normal 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>
|
||||
@@ -1,16 +1,16 @@
|
||||
<template>
|
||||
<el-container>
|
||||
<el-container class="advance-query-form">
|
||||
<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">
|
||||
<span>权限模块</span>
|
||||
<span style="font-size: 16px; font-weight: 500; color: #282828;">权限模块</span>
|
||||
<div class="base-card-operation">
|
||||
<el-button type="text"
|
||||
:disabled="!checkPermCodeExist('formSysPerm:fragmentSysPerm:addPermModule')"
|
||||
icon="el-icon-circle-plus-outline" @click="onCreatePermModuleClick()" />
|
||||
</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'}"
|
||||
node-key="moduleId" @node-click="onModuleNodeClick" :default-expanded-keys="formPerm.expandedModule"
|
||||
:highlight-current="true" @node-expand="onModuleNodeExpand" @node-collapse="onModuleNodeCollapse">
|
||||
@@ -32,7 +32,7 @@
|
||||
</el-scrollbar>
|
||||
</el-card>
|
||||
</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>
|
||||
<filter-box :item-width="350">
|
||||
<el-form-item label="关联URL">
|
||||
@@ -139,7 +139,7 @@ export default {
|
||||
* 权限数据获取函数,返回Primise
|
||||
*/
|
||||
loadSysPermData (params) {
|
||||
params.sysPermFilter = {
|
||||
params.sysPermDtoFilter = {
|
||||
url: this.formPerm.formFilterCopy.url === '' ? undefined : this.formPerm.formFilterCopy.url,
|
||||
moduleId: this.formPerm.formFilterCopy.permModuleId === '' ? undefined : this.formPerm.formFilterCopy.permModuleId
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ export default {
|
||||
* 用户角色数据获取函数,返回Primise
|
||||
*/
|
||||
loadSysRoleData (params) {
|
||||
params.sysRoleFilter = {
|
||||
params.sysRoleDtoFilter = {
|
||||
roleName: this.fragmentSysRole.formFilterCopy.sysRoleName
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
@@ -382,7 +382,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
params.roleId = this.fragmentSysRoleUser.formFilter.sysRoleId;
|
||||
params.sysUserFilter = {
|
||||
params.sysUserDtoFilter = {
|
||||
loginName: this.fragmentSysRoleUser.formFilter.sysUserLoginName
|
||||
}
|
||||
SystemController.listRoleUser(this, params).then(res => {
|
||||
|
||||
@@ -181,7 +181,7 @@ export default {
|
||||
* 用户管理数据获取函数,返回Primise
|
||||
*/
|
||||
loadSysUserData (params) {
|
||||
params.sysUserFilter = {
|
||||
params.sysUserDtoFilter = {
|
||||
loginName: this.formSysUser.formFilterCopy.sysUserLoginName,
|
||||
userStatus: this.formSysUser.formFilterCopy.sysUserStatus
|
||||
}
|
||||
|
||||
1
orange-demo-single-web/.eslintignore
Normal file
1
orange-demo-single-web/.eslintignore
Normal file
@@ -0,0 +1 @@
|
||||
/src/views/workflow/package/*
|
||||
@@ -11,7 +11,7 @@ module.exports = {
|
||||
parser: 'babel-eslint'
|
||||
},
|
||||
rules: {
|
||||
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||
'no-console': 'off',
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||
'semi': ['off', 'always'],
|
||||
'prefer-promise-reject-errors': ['error', { 'allowEmptyReject': true }],
|
||||
@@ -23,8 +23,7 @@ module.exports = {
|
||||
'lines-between-class-members': ['off'],
|
||||
// 'no-undef': ['off', 'always'],
|
||||
// 'no-unused-vars': ['off', 'always'],
|
||||
'no-new-func': ['off', 'always'],
|
||||
'no-console': ['off']
|
||||
'no-new-func': ['off', 'always']
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
|
||||
@@ -26,7 +26,13 @@
|
||||
"vue": "^2.6.11",
|
||||
"vue-router": "^3.1.5",
|
||||
"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": {
|
||||
"@vue/cli-plugin-babel": "~4.2.0",
|
||||
@@ -39,6 +45,9 @@
|
||||
"@vue/eslint-config-standard": "^5.1.0",
|
||||
"@vue/test-utils": "1.0.0-beta.31",
|
||||
"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-plugin-import": "^2.20.1",
|
||||
"eslint-plugin-node": "^11.0.0",
|
||||
|
||||
@@ -4,12 +4,11 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title>橙单工程</title>
|
||||
<title>橙单代码生成平台</title>
|
||||
</head>
|
||||
<body class="demo-project">
|
||||
<body class="orange-project">
|
||||
<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>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
|
||||
@@ -59,7 +59,7 @@ export default class DictionaryController {
|
||||
static dictAreaCode (sender, params, axiosOption, httpOption) {
|
||||
return new Promise((resolve, reject) => {
|
||||
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);
|
||||
resolve(dictData);
|
||||
}).catch(err => {
|
||||
@@ -70,7 +70,7 @@ export default class DictionaryController {
|
||||
static dictAreaCodeByParentId (sender, params, axiosOption, httpOption) {
|
||||
return new Promise((resolve, reject) => {
|
||||
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);
|
||||
resolve(dictData);
|
||||
}).catch(err => {
|
||||
@@ -93,7 +93,7 @@ export default class DictionaryController {
|
||||
static dictCourse (sender, params, axiosOption, httpOption) {
|
||||
return new Promise((resolve, reject) => {
|
||||
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);
|
||||
resolve(dictData);
|
||||
}).catch(err => {
|
||||
@@ -104,7 +104,7 @@ export default class DictionaryController {
|
||||
static dictGrade (sender, params, axiosOption, httpOption) {
|
||||
return new Promise((resolve, reject) => {
|
||||
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);
|
||||
resolve(dictData);
|
||||
}).catch(err => {
|
||||
@@ -136,7 +136,7 @@ export default class DictionaryController {
|
||||
static dictSchoolInfo (sender, params, axiosOption, httpOption) {
|
||||
return new Promise((resolve, reject) => {
|
||||
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);
|
||||
resolve(dictData);
|
||||
}).catch(err => {
|
||||
@@ -147,7 +147,7 @@ export default class DictionaryController {
|
||||
static dictStudent (sender, params, axiosOption, httpOption) {
|
||||
return new Promise((resolve, reject) => {
|
||||
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);
|
||||
resolve(dictData);
|
||||
}).catch(err => {
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
export default class SysUserController {
|
||||
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) {
|
||||
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) {
|
||||
return sender.download('/admin/upms/sysUser/export', params, fileName);
|
||||
return sender.download('admin/upms/sysUser/export', params, fileName);
|
||||
}
|
||||
|
||||
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) {
|
||||
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) {
|
||||
return sender.doUrl('/admin/upms/sysUser/delete', 'post', params, axiosOption, httpOption);
|
||||
return sender.doUrl('admin/upms/sysUser/delete', 'post', params, axiosOption, httpOption);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -225,4 +225,12 @@ export default class SystemController {
|
||||
static listSysMenuByPermIdWithDetail (sender, 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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import SystemController from './Controller/SystemController'
|
||||
import DictionaryController from './Controller/DictionaryController'
|
||||
import CourseController from './Controller/CourseController.js'
|
||||
import SchoolInfoController from './Controller/SchoolInfoController.js'
|
||||
import StudentController from './Controller/StudentController.js'
|
||||
import SysUserController from './Controller/SysUserController.js'
|
||||
import StudentClassController from './Controller/StudentClassController.js'
|
||||
import CourseTransStatsController from './Controller/CourseTransStatsController.js'
|
||||
import StudentActionStatsController from './Controller/StudentActionStatsController.js'
|
||||
import StudentActionTransController from './Controller/StudentActionTransController.js'
|
||||
import CourseController from './Controller/CourseController.js';
|
||||
import SchoolInfoController from './Controller/SchoolInfoController.js';
|
||||
import StudentController from './Controller/StudentController.js';
|
||||
import SysUserController from './Controller/SysUserController.js';
|
||||
import StudentClassController from './Controller/StudentClassController.js';
|
||||
import CourseTransStatsController from './Controller/CourseTransStatsController.js';
|
||||
import StudentActionStatsController from './Controller/StudentActionStatsController.js';
|
||||
import StudentActionTransController from './Controller/StudentActionTransController.js';
|
||||
|
||||
export {
|
||||
SystemController,
|
||||
|
||||
@@ -16,7 +16,7 @@ $--color-transition-base: color .2s cubic-bezier(.645,.045,.355,1) !default;
|
||||
/* Color
|
||||
-------------------------- */
|
||||
/// color|1|Brand Color|0
|
||||
$--color-primary: #FFA424 !default;
|
||||
$--color-primary: #FCA834 !default;
|
||||
/// color|1|Background Color|4
|
||||
$--color-white: #FFFFFF !default;
|
||||
/// 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-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */
|
||||
/// color|1|Functional Color|1
|
||||
$--color-success: #67C23A !default;
|
||||
$--color-success: #6DC741 !default;
|
||||
/// color|1|Functional Color|1
|
||||
$--color-warning: #E6A23C !default;
|
||||
/// color|1|Functional Color|1
|
||||
@@ -72,11 +72,10 @@ $--background-color-base: #F5F7FA !default;
|
||||
// color for left sidebar title
|
||||
$--color-sidebar-title-text: #FFFFFF;
|
||||
// color for left sidebar background
|
||||
$--color-menu-background: #FF7746;
|
||||
$--color-menu-background: #042345;
|
||||
$--color-menu-item-active-text-color: #FFFFFF;
|
||||
$--color-menu-item-active-background: rgba(255, 255, 255, 0.01);
|
||||
$--color-menu-item-active-background-to: rgba(255, 255, 255, 0.3);
|
||||
|
||||
$--color-menu-item-active-background: $--color-primary;
|
||||
$--color-submenu-background: #021F3B;
|
||||
/* Link
|
||||
-------------------------- */
|
||||
$--link-color: $--color-primary-light-2 !default;
|
||||
@@ -738,7 +737,7 @@ $--tree-expand-icon-color: $--color-text-placeholder !default;
|
||||
/* Dropdown
|
||||
-------------------------- */
|
||||
$--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;
|
||||
|
||||
/* Badge
|
||||
|
||||
BIN
orange-demo-single-web/src/assets/img/login.png
Normal file
BIN
orange-demo-single-web/src/assets/img/login.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 712 KiB |
BIN
orange-demo-single-web/src/assets/img/login_logo.png
Normal file
BIN
orange-demo-single-web/src/assets/img/login_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
BIN
orange-demo-single-web/src/assets/img/logo.png
Normal file
BIN
orange-demo-single-web/src/assets/img/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.6 KiB |
@@ -7,7 +7,7 @@
|
||||
"theme-blue": "et -c element-variables-blue.scss"
|
||||
},
|
||||
"devDependencies": {
|
||||
"element-theme": "^2.0.1",
|
||||
"element-theme-chalk": "^2.14.1"
|
||||
"element-theme": "2.0.1",
|
||||
"element-theme-chalk": "2.14.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,8 +51,25 @@ body .layer-dialog {
|
||||
body .layer-dialog .layui-layer-content {
|
||||
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 {
|
||||
padding: 0px;
|
||||
}
|
||||
@@ -98,18 +115,18 @@ body .layer-dialog .layui-layer-content {
|
||||
|
||||
.page-close-box {
|
||||
position: absolute;
|
||||
background: #13ce66;
|
||||
background: #0092FF;
|
||||
transform: rotate(45deg);
|
||||
height: 60px;
|
||||
width: 60px;
|
||||
right: -30px;
|
||||
top:-30px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
right: -25px;
|
||||
top:-25px;
|
||||
text-align: center;
|
||||
|
||||
.el-button {
|
||||
transform: rotate(-45deg);
|
||||
color: white;
|
||||
margin-top: 30px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -264,6 +281,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样式
|
||||
@@ -277,6 +300,45 @@ body .layer-dialog .layui-layer-content {
|
||||
.table-header-gray, .has-gutter .gutter {
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 图片上传以及显示样式
|
||||
|
||||
@@ -109,4 +109,9 @@
|
||||
|
||||
.form-single-fragment {
|
||||
//
|
||||
}
|
||||
|
||||
.advance-query-form {
|
||||
padding: 0px!important;
|
||||
background-color: transparent!important;;
|
||||
}
|
||||
@@ -1705,7 +1705,7 @@
|
||||
min-width: 180px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
border-right: solid 1px #E4E7ED; }
|
||||
.el-cascader-menu:last-child {
|
||||
border-right: none; }
|
||||
@@ -1750,9 +1750,9 @@
|
||||
line-height: 34px;
|
||||
outline: none; }
|
||||
.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 {
|
||||
color: #FFFFFF;
|
||||
color: #409EFF;
|
||||
font-weight: bold; }
|
||||
.el-cascader-node:not(.is-disabled) {
|
||||
cursor: pointer; }
|
||||
|
||||
@@ -3282,7 +3282,7 @@
|
||||
min-width: 180px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
border-right: solid 1px #E4E7ED; }
|
||||
.el-cascader-menu:last-child {
|
||||
border-right: none; }
|
||||
@@ -3327,9 +3327,9 @@
|
||||
line-height: 34px;
|
||||
outline: none; }
|
||||
.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 {
|
||||
color: #FFFFFF;
|
||||
color: #409EFF;
|
||||
font-weight: bold; }
|
||||
.el-cascader-node:not(.is-disabled) {
|
||||
cursor: pointer; }
|
||||
@@ -3454,7 +3454,7 @@
|
||||
margin: 0;
|
||||
padding: 6px 0;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
text-align: center; }
|
||||
.el-cascader__suggestion-item {
|
||||
display: -webkit-box;
|
||||
@@ -3474,7 +3474,7 @@
|
||||
.el-cascader__suggestion-item:hover, .el-cascader__suggestion-item:focus {
|
||||
background: #F5F7FA; }
|
||||
.el-cascader__suggestion-item.is-checked {
|
||||
color: #FFFFFF;
|
||||
color: #409EFF;
|
||||
font-weight: bold; }
|
||||
.el-cascader__suggestion-item > span {
|
||||
margin-right: 10px; }
|
||||
@@ -3489,7 +3489,7 @@
|
||||
min-width: 60px;
|
||||
margin: 2px 0 2px 15px;
|
||||
padding: 0;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
border: none;
|
||||
outline: none;
|
||||
-webkit-box-sizing: border-box;
|
||||
|
||||
@@ -46757,7 +46757,7 @@
|
||||
min-width: 180px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
border-right: solid 1px #E4E7ED; }
|
||||
.el-cascader-menu:last-child {
|
||||
border-right: none; }
|
||||
@@ -46802,9 +46802,9 @@
|
||||
line-height: 34px;
|
||||
outline: none; }
|
||||
.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 {
|
||||
color: #FFFFFF;
|
||||
color: #409EFF;
|
||||
font-weight: bold; }
|
||||
.el-cascader-node:not(.is-disabled) {
|
||||
cursor: pointer; }
|
||||
@@ -46929,7 +46929,7 @@
|
||||
margin: 0;
|
||||
padding: 6px 0;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
text-align: center; }
|
||||
.el-cascader__suggestion-item {
|
||||
display: -webkit-box;
|
||||
@@ -46949,7 +46949,7 @@
|
||||
.el-cascader__suggestion-item:hover, .el-cascader__suggestion-item:focus {
|
||||
background: #F5F7FA; }
|
||||
.el-cascader__suggestion-item.is-checked {
|
||||
color: #FFFFFF;
|
||||
color: #409EFF;
|
||||
font-weight: bold; }
|
||||
.el-cascader__suggestion-item > span {
|
||||
margin-right: 10px; }
|
||||
@@ -46964,7 +46964,7 @@
|
||||
min-width: 60px;
|
||||
margin: 2px 0 2px 15px;
|
||||
padding: 0;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
border: none;
|
||||
outline: none;
|
||||
-webkit-box-sizing: border-box;
|
||||
@@ -55916,7 +55916,7 @@
|
||||
min-width: 180px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: #FFFFFF;
|
||||
color: #606266;
|
||||
border-right: solid 1px #E4E7ED; }
|
||||
.el-cascader-menu:last-child {
|
||||
border-right: none; }
|
||||
@@ -55961,9 +55961,9 @@
|
||||
line-height: 34px;
|
||||
outline: none; }
|
||||
.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 {
|
||||
color: #FFFFFF;
|
||||
color: #409EFF;
|
||||
font-weight: bold; }
|
||||
.el-cascader-node:not(.is-disabled) {
|
||||
cursor: pointer; }
|
||||
|
||||
@@ -46,10 +46,10 @@ class Dialog {
|
||||
}
|
||||
|
||||
let observer = {
|
||||
cancel: function (isSuccess = false) {
|
||||
cancel: function (isSuccess = false, data = undefined) {
|
||||
layer.close(this.index);
|
||||
if (isSuccess) {
|
||||
resolve();
|
||||
resolve(data);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
|
||||
@@ -99,7 +99,6 @@ export default {
|
||||
return content;
|
||||
}
|
||||
this.editor.customConfig.linkImgCallback = (url) => {
|
||||
console.log(url) // url 即插入图片的地址
|
||||
}
|
||||
this.editor.customConfig.linkCheck = (text, link) => {
|
||||
return true // 返回 true 表示校验成功
|
||||
@@ -112,7 +111,6 @@ export default {
|
||||
}
|
||||
// 失去焦点后更新数据
|
||||
this.editor.customConfig.onblur = (html) => {
|
||||
console.log(html)
|
||||
this.$emit('input', html);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
module.exports = {
|
||||
baseUrl: 'http://localhost:8082/',
|
||||
projectName: '橙单项目'
|
||||
projectName: '橙单代码生成平台'
|
||||
}
|
||||
|
||||
@@ -2,8 +2,14 @@ const projectConfig = require('../config/' + process.env.NODE_ENV);
|
||||
|
||||
export const globalConfig = {
|
||||
httpOption: {
|
||||
// 调用的时候是否显示蒙版
|
||||
showMask: true,
|
||||
showError: true
|
||||
// 是否显示公共的错误提示
|
||||
showError: true,
|
||||
// 是否开启节流功能,同一个url不能频繁重复调用
|
||||
throttleFlag: false,
|
||||
// 节流间隔
|
||||
throttleTimeout: 50
|
||||
},
|
||||
axiosOption: {
|
||||
}
|
||||
|
||||
@@ -135,13 +135,15 @@ const doUrl = function (url, type, params, axiosOption, options) {
|
||||
options = merge(globalConfig.httpOption, options);
|
||||
axiosOption = merge(globalConfig.axiosOption, axiosOption);
|
||||
if (type == null || type === '') type = 'post';
|
||||
if (ajaxThrottleSet.has(url)) {
|
||||
if (ajaxThrottleSet.has(url) && options.throttleFlag) {
|
||||
return Promise.resolve();
|
||||
} else {
|
||||
ajaxThrottleSet.add(url);
|
||||
setTimeout(() => {
|
||||
ajaxThrottleSet.delete(url);
|
||||
}, 50);
|
||||
if (options.throttleFlag) {
|
||||
ajaxThrottleSet.add(url);
|
||||
setTimeout(() => {
|
||||
ajaxThrottleSet.delete(url);
|
||||
}, options.throttleTimeout || 50);
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
if (options.showMask) loadingManager.showMask();
|
||||
let ajaxCall = null;
|
||||
|
||||
@@ -10,7 +10,8 @@ const service = axios.create({
|
||||
withCredentials: true,
|
||||
headers: {
|
||||
// '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: [
|
||||
function (data) {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import '@/core/http';
|
||||
import JSONbig from 'json-bigint';
|
||||
import '@/components/Dialog';
|
||||
import Vue from 'vue';
|
||||
import ElementUI from 'element-ui';
|
||||
@@ -16,6 +17,8 @@ import FilterBox from '@/components/FilterBox';
|
||||
import TableProgressColumn from '@/components/TableProgressColumn';
|
||||
import VCharts from 'v-charts';
|
||||
|
||||
window.JSON = new JSONbig({storeAsString: true});
|
||||
|
||||
Vue.component('tree-select', TreeSelect);
|
||||
Vue.component('rich-editor', RichEditor);
|
||||
Vue.component('input-number-range', InputNumberRange);
|
||||
|
||||
@@ -33,16 +33,17 @@ const routers = [
|
||||
{path: 'formSysDict', component: _import('upms/formDictManagement/index'), name: 'formSysDict', 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: 'formSysLoginUser', component: _import('upms/formSysLoginUser/index'), name: 'formSysLoginUser', 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: 'formStudent', component: _import('generated/formStudent/index'), name: 'formStudent', props: getProps, meta: {title: '学生管理'}},
|
||||
{path: 'formCourse', component: _import('generated/formCourse/index'), name: 'formCourse', props: getProps, meta: {title: '课程管理'}},
|
||||
{path: 'formCourseStats', component: _import('generated/formCourseStats/index'), name: 'formCourseStats', props: getProps, meta: {title: '课程统计'}},
|
||||
{path: 'formStudentActionStats', component: _import('generated/formStudentActionStats/index'), name: 'formStudentActionStats', props: getProps, meta: {title: '学生行为统计'}},
|
||||
{path: 'formStudentActionDetail', component: _import('generated/formStudentActionDetail/index'), name: 'formStudentActionDetail', props: getProps, meta: {title: '学生行为详情'}},
|
||||
{path: 'formSetClassStudent', component: _import('generated/formSetClassStudent/index'), name: 'formSetClassStudent', props: getProps, meta: {title: '设置班级学生'}},
|
||||
{path: 'formSetClassCourse', component: _import('generated/formSetClassCourse/index'), name: 'formSetClassCourse', props: getProps, meta: {title: '设置班级课程'}},
|
||||
{path: 'formClass', component: _import('generated/formClass/index'), name: 'formClass', props: getProps, meta: {title: '班级管理'}}
|
||||
{path: 'formSchool', component: _import('generated/formSchool'), name: 'formSchool', props: getProps, meta: {title: '校区管理'}},
|
||||
{path: 'formStudent', component: _import('generated/formStudent'), name: 'formStudent', props: getProps, meta: {title: '学生管理'}},
|
||||
{path: 'formCourse', component: _import('generated/formCourse'), name: 'formCourse', props: getProps, meta: {title: '课程管理'}},
|
||||
{path: 'formCourseStats', component: _import('generated/formCourseStats'), name: 'formCourseStats', props: getProps, meta: {title: '课程统计'}},
|
||||
{path: 'formStudentActionStats', component: _import('generated/formStudentActionStats'), name: 'formStudentActionStats', props: getProps, meta: {title: '学生行为统计'}},
|
||||
{path: 'formStudentActionDetail', component: _import('generated/formStudentActionDetail'), name: 'formStudentActionDetail', props: getProps, meta: {title: '学生行为详情'}},
|
||||
{path: 'formSetClassStudent', component: _import('generated/formSetClassStudent'), name: 'formSetClassStudent', props: getProps, meta: {title: '设置班级学生'}},
|
||||
{path: 'formSetClassCourse', component: _import('generated/formSetClassCourse'), name: 'formSetClassCourse', props: getProps, meta: {title: '设置班级课程'}},
|
||||
{path: 'formClass', component: _import('generated/formClass'), name: 'formClass', props: getProps, meta: {title: '班级管理'}}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@@ -4,8 +4,9 @@
|
||||
import Vue from 'vue';
|
||||
|
||||
class DictionaryBase extends Map {
|
||||
constructor (dataList, keyId = 'id', symbolId = 'symbol') {
|
||||
constructor (name, dataList, keyId = 'id', symbolId = 'symbol') {
|
||||
super();
|
||||
this.showName = name;
|
||||
this.setList(dataList, keyId, symbolId);
|
||||
}
|
||||
|
||||
@@ -50,7 +51,7 @@ class DictionaryBase extends Map {
|
||||
}
|
||||
}
|
||||
|
||||
const SysUserStatus = new DictionaryBase([
|
||||
const SysUserStatus = new DictionaryBase('用户状态', [
|
||||
{
|
||||
id: 0,
|
||||
name: '正常状态',
|
||||
@@ -64,7 +65,7 @@ const SysUserStatus = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.SysUserStatus = SysUserStatus;
|
||||
|
||||
const SysUserType = new DictionaryBase([
|
||||
const SysUserType = new DictionaryBase('用户类型', [
|
||||
{
|
||||
id: 0,
|
||||
name: '管理员',
|
||||
@@ -83,7 +84,7 @@ const SysUserType = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.SysUserType = SysUserType;
|
||||
|
||||
const Subject = new DictionaryBase([
|
||||
const Subject = new DictionaryBase('学科', [
|
||||
{
|
||||
id: 0,
|
||||
name: '语文',
|
||||
@@ -102,7 +103,7 @@ const Subject = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.Subject = Subject;
|
||||
|
||||
const StudentActionType = new DictionaryBase([
|
||||
const StudentActionType = new DictionaryBase('学生行为', [
|
||||
{
|
||||
id: 0,
|
||||
name: '充值',
|
||||
@@ -161,7 +162,7 @@ const StudentActionType = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.StudentActionType = StudentActionType;
|
||||
|
||||
const DeviceType = new DictionaryBase([
|
||||
const DeviceType = new DictionaryBase('设备类型', [
|
||||
{
|
||||
id: 0,
|
||||
name: 'iOS',
|
||||
@@ -180,7 +181,7 @@ const DeviceType = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.DeviceType = DeviceType;
|
||||
|
||||
const Gender = new DictionaryBase([
|
||||
const Gender = new DictionaryBase('性别', [
|
||||
{
|
||||
id: 1,
|
||||
name: '男',
|
||||
@@ -194,7 +195,7 @@ const Gender = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.Gender = Gender;
|
||||
|
||||
const ExpLevel = new DictionaryBase([
|
||||
const ExpLevel = new DictionaryBase('经验等级', [
|
||||
{
|
||||
id: 0,
|
||||
name: '初级学员',
|
||||
@@ -213,7 +214,7 @@ const ExpLevel = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.ExpLevel = ExpLevel;
|
||||
|
||||
const StudentStatus = new DictionaryBase([
|
||||
const StudentStatus = new DictionaryBase('学生状态', [
|
||||
{
|
||||
id: 0,
|
||||
name: '正常',
|
||||
@@ -232,7 +233,7 @@ const StudentStatus = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.StudentStatus = StudentStatus;
|
||||
|
||||
const ClassStatus = new DictionaryBase([
|
||||
const ClassStatus = new DictionaryBase('班级状态', [
|
||||
{
|
||||
id: 1,
|
||||
name: '正常',
|
||||
@@ -246,7 +247,7 @@ const ClassStatus = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.ClassStatus = ClassStatus;
|
||||
|
||||
const ClassLevel = new DictionaryBase([
|
||||
const ClassLevel = new DictionaryBase('班级级别', [
|
||||
{
|
||||
id: 0,
|
||||
name: '初级班',
|
||||
@@ -265,7 +266,7 @@ const ClassLevel = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.ClassLevel = ClassLevel;
|
||||
|
||||
const CourseDifficult = new DictionaryBase([
|
||||
const CourseDifficult = new DictionaryBase('课程难度', [
|
||||
{
|
||||
id: 0,
|
||||
name: '容易',
|
||||
@@ -284,7 +285,7 @@ const CourseDifficult = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.CourseDifficult = CourseDifficult;
|
||||
|
||||
const SysPermModuleType = new DictionaryBase([
|
||||
const SysPermModuleType = new DictionaryBase('权限分组类型', [
|
||||
{
|
||||
id: 0,
|
||||
name: '分组模块',
|
||||
@@ -297,7 +298,7 @@ const SysPermModuleType = new DictionaryBase([
|
||||
]);
|
||||
Vue.prototype.SysPermModuleType = SysPermModuleType;
|
||||
|
||||
const SysPermCodeType = new DictionaryBase([{
|
||||
const SysPermCodeType = new DictionaryBase('权限字类型', [{
|
||||
id: 0,
|
||||
name: '表单',
|
||||
symbol: 'FORM'
|
||||
@@ -312,7 +313,7 @@ const SysPermCodeType = new DictionaryBase([{
|
||||
}]);
|
||||
Vue.prototype.SysPermCodeType = SysPermCodeType;
|
||||
|
||||
const SysMenuType = new DictionaryBase([
|
||||
const SysMenuType = new DictionaryBase('菜单类型', [
|
||||
{
|
||||
id: 0,
|
||||
name: '目录',
|
||||
@@ -335,7 +336,6 @@ const SysMenuType = new DictionaryBase([
|
||||
}
|
||||
]);
|
||||
Vue.prototype.SysMenuType = SysMenuType;
|
||||
|
||||
export {
|
||||
DictionaryBase,
|
||||
SysUserStatus,
|
||||
|
||||
@@ -11,8 +11,14 @@ export default {
|
||||
getClientHeight: (state) => {
|
||||
return state.documentClientHeight;
|
||||
},
|
||||
getClientWidth: (state) => {
|
||||
return state.documentClienWidth;
|
||||
},
|
||||
getMainContextHeight: (state) => {
|
||||
return state.documentClientHeight - (state.supportTags ? 140 : 100);
|
||||
return state.documentClientHeight - (state.supportTags ? 130 : 90);
|
||||
},
|
||||
getOnlineFormCache: (state) => {
|
||||
return state.onlineFormCache;
|
||||
},
|
||||
getUserInfo: (state) => {
|
||||
return state.userInfo;
|
||||
|
||||
@@ -8,6 +8,18 @@ export default {
|
||||
setClientHeight: (state, 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) => {
|
||||
setObjectToSessionStorage('userInfo', info);
|
||||
state.userInfo = initUserInfo(info);
|
||||
@@ -97,7 +109,8 @@ export default {
|
||||
}
|
||||
|
||||
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];
|
||||
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) {
|
||||
state.cachePages = [...state.cachePages, menuItem.formRouterName];
|
||||
if (menuItem.onlineFormId == null || menuItem.onlineFormId === '') {
|
||||
state.cachePages = [...state.cachePages, menuItem.formRouterName];
|
||||
}
|
||||
setObjectToSessionStorage('cachePages', state.cachePages);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -10,6 +10,10 @@ export default {
|
||||
supportTags: false,
|
||||
// 浏览器客户区高度
|
||||
documentClientHeight: 100,
|
||||
// 浏览器客户区宽度
|
||||
documentClientWidth: undefined,
|
||||
// 在线表单查询页面缓存
|
||||
onlineFormCache: {},
|
||||
// 用户登录信息
|
||||
userInfo: initUserInfo(),
|
||||
// 缓存页面
|
||||
|
||||
@@ -346,7 +346,7 @@ export class TreeTableImpl {
|
||||
calcPermCodeTreeAttribute(item, checkedRows);
|
||||
});
|
||||
}
|
||||
console.log(treeData, checkedRows);
|
||||
|
||||
return treeData;
|
||||
}
|
||||
|
||||
|
||||
@@ -133,7 +133,6 @@ export class TableWidget {
|
||||
this.oldPage = this.currentPage;
|
||||
this.oldPageSize = this.pageSize;
|
||||
}).catch(e => {
|
||||
console.log(e);
|
||||
this.currentPage = this.oldPage;
|
||||
this.pageSize = this.oldPageSize;
|
||||
});
|
||||
@@ -161,7 +160,6 @@ export class TableWidget {
|
||||
* @param {Object} oldRow 老的选中行
|
||||
*/
|
||||
currentRowChange (currentRow, oldRow) {
|
||||
console.log(currentRow, oldRow);
|
||||
this.currentRow = currentRow;
|
||||
}
|
||||
clearTable () {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user