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

@@ -192,8 +192,8 @@ import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/
import { uploadMixin, statsDateRangeMixin, cachePageMixin } from '@/core/mixins';
/* eslint-disable-next-line */
import { StudentClassController, DictionaryController } from '@/api';
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';
export default {
name: 'formClass',
@@ -240,15 +240,15 @@ 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, 'createTime', 1)
},
Student: {
impl: new TableWidget(this.loadStudentWidgetData, this.loadStudentVerify, true, false)
},
classStudentCard: {
isInit: false
},
@@ -263,38 +263,6 @@ export default {
}
},
methods: {
/**
* 班级学生数据获取函数返回Promise
*/
loadStudentWidgetData (params) {
if (
(this.formClass.StudentClass.impl.currentRow || {}).classId == null
) {
this.formClass.Student.impl.clearTable();
return Promise.reject();
}
if (params == null) params = {};
params = {
...params,
classId: (this.formClass.StudentClass.impl.currentRow || {}).classId
}
return new Promise((resolve, reject) => {
StudentClassController.listClassStudent(this, params).then(res => {
resolve({
dataList: res.data.dataList,
totalCount: res.data.totalCount
});
}).catch(e => {
reject(e);
});
});
},
/**
* 班级学生数据获取检测函数返回true正常获取数据返回false停止获取数据
*/
loadStudentVerify () {
return true;
},
/**
* 班级数据数据获取函数返回Promise
*/
@@ -302,7 +270,7 @@ export default {
if (params == null) params = {};
params = {
...params,
studentClassFilter: {
studentClassDtoFilter: {
className: this.formClass.formFilterCopy.className,
schoolId: this.formClass.formFilterCopy.schoolId
}
@@ -365,6 +333,38 @@ export default {
loadCourseVerify () {
return true;
},
/**
* 班级学生数据获取函数返回Promise
*/
loadStudentWidgetData (params) {
if (
(this.formClass.StudentClass.impl.currentRow || {}).classId == null
) {
this.formClass.Student.impl.clearTable();
return Promise.reject();
}
if (params == null) params = {};
params = {
...params,
classId: (this.formClass.StudentClass.impl.currentRow || {}).classId
}
return new Promise((resolve, reject) => {
StudentClassController.listClassStudent(this, params).then(res => {
resolve({
dataList: res.data.dataList,
totalCount: res.data.totalCount
});
}).catch(e => {
reject(e);
});
});
},
/**
* 班级学生数据获取检测函数返回true正常获取数据返回false停止获取数据
*/
loadStudentVerify () {
return true;
},
/**
* 所属校区下拉数据获取函数
*/
@@ -386,7 +386,7 @@ export default {
/**
* 更新班级课程
*/
refreshClassCourseCard (reloadData = false) {
refreshClassCourseCardWidget (reloadData = false) {
//
if (reloadData) {
this.formClass.Course.impl.refreshTable(true, 1);
@@ -398,7 +398,7 @@ export default {
/**
* 更新班级学生
*/
refreshClassStudentCard (reloadData = false) {
refreshClassStudentCardWidget (reloadData = false) {
//
if (reloadData) {
this.formClass.Student.impl.refreshTable(true, 1);
@@ -410,7 +410,7 @@ export default {
/**
* 更新班级列表
*/
refreshClassCard (reloadData = false) {
refreshClassCardWidget (reloadData = false) {
//
if (reloadData) {
this.formClass.StudentClass.impl.refreshTable(true, 1);
@@ -423,11 +423,6 @@ export default {
* 更新班级管理
*/
refreshFormClass (reloadData = false) {
if (reloadData) {
this.formClass.Student.impl.refreshTable(true, 1);
} else {
this.formClass.Student.impl.refreshTable();
}
if (reloadData) {
this.formClass.StudentClass.impl.refreshTable(true, 1);
} else {
@@ -438,6 +433,11 @@ export default {
} else {
this.formClass.Course.impl.refreshTable();
}
if (reloadData) {
this.formClass.Student.impl.refreshTable(true, 1);
} else {
this.formClass.Student.impl.refreshTable();
}
if (!this.formClass.isInit) {
//
}
@@ -452,7 +452,7 @@ export default {
};
this.$dialog.show('编辑', formEditClass, {
area: ['800px']
area: '800px'
}, params).then(res => {
this.formClass.StudentClass.impl.refreshTable();
}).catch(e => {});
@@ -553,9 +553,9 @@ export default {
let params = {};
this.$dialog.show('新建', formCreateClass, {
area: ['800px']
area: '800px'
}, params).then(res => {
this.refreshClassCard();
this.refreshClassCardWidget();
}).catch(e => {});
},
onResume () {
@@ -617,8 +617,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

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

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

@@ -206,7 +206,6 @@ export default {
{type: 'number', min: 0, message: '充值学币必须大于0', trigger: 'blur', transform: (value) => Number(value)}
],
'Student.leftCoin': [
{required: true, message: '请输入剩余学币', trigger: 'blur'},
{type: 'integer', message: '剩余学币只允许输入整数', trigger: 'blur', transform: (value) => Number(value)},
{type: 'number', min: 0, message: '剩余学币必须大于0', trigger: 'blur', transform: (value) => Number(value)}
],
@@ -468,7 +467,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
}