commit:更新前端版本到1.9

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

View File

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

View File

@@ -11,7 +11,7 @@ module.exports = {
parser: 'babel-eslint'
},
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: [
{

View File

@@ -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",

View File

@@ -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 -->

View File

@@ -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 => {

View File

@@ -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);
}
}

View File

@@ -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,

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

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

View File

@@ -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;
}
/**
* 图片上传以及显示样式

View File

@@ -109,4 +109,9 @@
.form-single-fragment {
//
}
.advance-query-form {
padding: 0px!important;
background-color: transparent!important;;
}

View File

@@ -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; }

View File

@@ -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;

View File

@@ -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; }

View File

@@ -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();
}

View File

@@ -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);
}

View File

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

View File

@@ -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: {
}

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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: '班级管理'}}
]
}
];

View File

@@ -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,

View File

@@ -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;

View File

@@ -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;

View File

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

View File

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

View File

@@ -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 () {

View File

@@ -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
}

View File

@@ -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 => {});

View File

@@ -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
}

View File

@@ -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,

View File

@@ -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,

View File

@@ -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

View File

@@ -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,

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -78,8 +78,8 @@ import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/
import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins';
/* 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 => {});

View File

@@ -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
};

View File

@@ -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
};

View File

@@ -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 => {});

View File

@@ -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,

View File

@@ -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

View File

@@ -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>

View File

@@ -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;

View File

@@ -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;

View File

@@ -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',

View File

@@ -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>

View File

@@ -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'

View File

@@ -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);

View File

@@ -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 => {

View File

@@ -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(',');

View File

@@ -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,

View File

@@ -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('编辑成功');

View File

@@ -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,

View File

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

View File

@@ -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);
}

View File

@@ -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
}

View File

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

View File

@@ -1,16 +1,16 @@
<template>
<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
}

View File

@@ -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 => {

View File

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

View File

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

View File

@@ -11,7 +11,7 @@ module.exports = {
parser: 'babel-eslint'
},
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: [
{

View File

@@ -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",

View File

@@ -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 -->

View File

@@ -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 => {

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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,

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

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

View File

@@ -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;
}
/**
* 图片上传以及显示样式

View File

@@ -109,4 +109,9 @@
.form-single-fragment {
//
}
.advance-query-form {
padding: 0px!important;
background-color: transparent!important;;
}

View File

@@ -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; }

View File

@@ -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;

View File

@@ -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; }

View File

@@ -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();
}

View File

@@ -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);
}

View File

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

View File

@@ -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: {
}

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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: '班级管理'}}
]
}
];

View File

@@ -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,

View File

@@ -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;

View File

@@ -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;

View File

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

View File

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

View File

@@ -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