yujialong 4 years ago
parent f66c1d00a0
commit 7581d38bd1
  1. BIN
      src/assets/img/icon-yigouxuan.png
  2. BIN
      src/assets/img/icon_.png
  3. BIN
      src/assets/img/icon_1.png
  4. BIN
      src/assets/img/img.jpg
  5. BIN
      src/assets/img/login-input.png
  6. BIN
      src/assets/template.xlsx
  7. 6
      src/pages/account/login/index.vue
  8. 1
      src/pages/quesBank/list/quesBankType.vue
  9. 2
      src/pages/setting/person/index.vue
  10. 193
      src/pages/system/list/staffside.vue
  11. 256
      src/pages/system/list/stafftree.vue
  12. 5
      src/router/permission.js
  13. 53
      src/setting.js
  14. 90
      src/styles/pages/tree.scss

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 829 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 683 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

@ -92,9 +92,9 @@ export default {
password: this.loginForm.password password: this.loginForm.password
} }
this.login(data).then(() => { this.login(data).then(() => {
this.$router.replace('/index') let redirect = decodeURIComponent(this.$route.query.redirect || '/')
}) this.$router.replace(redirect)
.catch(() => {}) }).catch(() => {})
} }
}) })
} }

@ -25,7 +25,6 @@
<el-table-column prop="typeName" label="分类名称"></el-table-column> <el-table-column prop="typeName" label="分类名称"></el-table-column>
<el-table-column label="操作" width="200"> <el-table-column label="操作" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.$index}}
<el-button type="text" v-if="scope.row.parentId == 0" @click="addSecond(scope.row)" v-auth>添加</el-button> <el-button type="text" v-if="scope.row.parentId == 0" @click="addSecond(scope.row)" v-auth>添加</el-button>
<el-button type="text" @click="editType(scope.row)" v-auth>编辑</el-button> <el-button type="text" @click="editType(scope.row)" v-auth>编辑</el-button>
<el-button type="text" @click="handleDelete(scope.row)" v-auth>删除</el-button> <el-button type="text" @click="handleDelete(scope.row)" v-auth>删除</el-button>

@ -192,7 +192,6 @@
<input <input
id="email" id="email"
type="text" type="text"
class="block-right"
v-model="personalInformation.email" v-model="personalInformation.email"
/> />
<div class="ii"> <div class="ii">
@ -508,7 +507,6 @@ input:focus {
margin-top: 10px; margin-top: 10px;
width: 80px; width: 80px;
height: 80px; height: 80px;
background: url('../../../assets/img/img.jpg');
border-radius: 50%; border-radius: 50%;
.head { .head {

@ -1,7 +1,6 @@
<template> <template>
<div> <div>
<div> <div class="side_view second">
<div class="side_view">
<p class="side_icon mab20"> <p class="side_icon mab20">
<i class="icon-jiahao mar20" @click="addMajor"></i> <i class="icon-jiahao mar20" @click="addMajor"></i>
<!-- <i class="icon-delete"></i> --> <!-- <i class="icon-delete"></i> -->
@ -35,7 +34,6 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<!-- 添加专业 --> <!-- 添加专业 -->
<el-dialog :title="Form.MajorId ? '编辑专业' : '新增专业'" :visible.sync="isaddMajor" width="24%" center @close="closeAdd" :close-on-click-modal="false"> <el-dialog :title="Form.MajorId ? '编辑专业' : '新增专业'" :visible.sync="isaddMajor" width="24%" center @close="closeAdd" :close-on-click-modal="false">
@ -299,192 +297,5 @@ export default {
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
$insideColor: rgba(245, 242, 255, 0.8); // @import '../../../styles/pages/tree.scss';
$outColor: rgba(255, 255, 255, 0.8); //
//,item
@mixin public {
cursor: pointer;
font-size: 16px;
color: #333333;
display: flex;
align-items: center;
img {
height: 20px;
width: 20px;
margin-left: 10px;
}
}
.main {
width: 100%;
}
.item {
@include public;
width: 100%;
padding: 15px 0;
background:rgba(255,255,255,1);
box-shadow:1px 14px 29px 0px rgba(255,69,69,0.19);
border-radius:10px;
text-align: left;
margin-top: 20px;
}
.item:first{
margin-top: 0;
}
.item2 {
@include public;
margin-top: 20px;
margin-left:50px
}
.item2:hover{
color: #cb221c;
}
.item .empty{
width: 25px;
}
.edit{
display: inline-block;
width: 17px;
height: 17px;
margin-left: 5px;
background: url(../../../assets/svg/edit.svg) 0 0/cover no-repeat;
}
//ul,li
ul,
li {
padding: 0;
margin: 0;
list-style: none;
}
// 使
.arrowTransform {
transition: 0.4s;
transform-origin: center;
transform: rotateZ(0deg);
}
.arrowTransformReturn {
transition: 0.4s;
transform-origin: center;
transform: rotateZ(90deg);
}
//
.checkBox {
width: 14px;
height: 14px;
border-radius: 7px;
margin-left: 10px;
margin-right: 10px;
border: 2px solid rgba(146, 120, 255, 1);
}
//
.isActive {
background: url('../../../assets/img/icon-yigouxuan.png');
background-size: 14px 14px; /*按比例缩放*/
}
.side_view{
padding: 40px 20px;
background-color: #fff;
i {
color: #cb221c;
}
}
.side_icon{
text-align: right;
}
.side_icon i{
cursor:pointer;
font-size: 16px;
}
.side_tree{
width: 100%;
font-size: 14px;
color: #333;
i{
color: #cb221c;
margin-left: 5px;
font-size: 17px;
}
span{
margin-left: 5px;
font-size: 14px;
}
}
.side_view{
height: 800px;
padding: 40px 20px;
background-color: #fff;
overflow: auto;
}
.side_icon{
text-align: right;
}
.side_icon i{
cursor:pointer;
font-size: 20px;
color: #cb221c;
}
.fir_back{
width: 100%;
padding: 15px 0;
background:rgba(255,255,255,1);
/* box-shadow:1px 14px 29px 0px rgba(138,97,250,0.19); */
border-radius:10px;
text-align: left;
}
.fir_back:first-child{
margin-top: 20px;
}
.fir_back:hover{
box-shadow:1px 14px 29px 0px rgba(138,97,250,0.19);
cursor:pointer;
}
.fir_back span{
margin-left: 10px;
}
.two_active{
color: #cb221c;
}
/* .two_active:hover{
color: #cb221c;
cursor:pointer;
} */
.two_back:hover{
cursor:pointer;
color: #cb221c;
}
.mar_top{
margin-top: 20px;
}
.back_active{
box-shadow:1px 14px 29px 0px rgba(138,97,250,0.19);
}
.bor_lef{
padding: 20px 0 0 0;
margin-left: 40px;
}
.three_lef{
margin-left: 60px;
padding: 20px 0;
}
.three_text{
font-size: 14px;
margin-top: 10px;
}
.teacher_tab{
margin-left: 20px;
}
.icon_select:before{
transform: rotate(180deg);
}
.list-enter-active, .list-leave-active { transition: all 1s; }
.list-enter, .list-leave-to { opacity: 0; transform: translateY(-30px); }
</style> </style>

@ -1,256 +0,0 @@
<template>
<div class="side_view">
<p class="side_icon mab20">
<i class="icon-jiahao mar20" @click="addMajor"></i>
<!-- <i class="icon-delete"></i> -->
</p>
<div class="side_tree" @click.stop="open(item)" v-for="(item,index) in data" :key="index">
<div class="item" @click.stop="open(item)">
<!-- <i :class="{ 'arrowTransform': !item.ifVisible, 'arrowTransformReturn': item.ifVisible}" class="icon-shixiangyoujiantou-"></i> -->
<img
:class="{ 'arrowTransform': !item.ifVisible, 'arrowTransformReturn': item.ifVisible}"
src="../../../assets/img/icon-xiangyou.png"
alt
/>
{{item.ischeck}}
<i :class="item.ischeck ? 'icon-yigouxuan' : 'icon-weigouxuan'" @click.stop="fircheckitem(item)"></i>
<span>{{item.staffProfessionalArchitectureName}}</span>
<i class="el-icon-info ft" @click.stop="editMajor(item)"></i>
<i class="el-icon-circle-plus ft" @click.stop="addDepartment(item)"></i>
<i class="icon-delete ft" @click.stop="delMajor(item,index)"></i>
</div>
<div v-show="item.ifVisible" v-if="item.children&&item.children.length!=0">
<div v-for="(item1,index1) in item.children" :key="index1">
<div class="item2" @click.stop="open(item1)">
{{item1.ischeck}}
<i :class="item1.ischeck ? 'icon-yigouxuan' : 'icon-weigouxuan'" @click.stop="twocheckitem(item1)"></i>
<span>{{item1.label}}</span>
<i class="el-icon-info ft" @click.stop="editDepartment(item1)"></i>
<i class="icon-delete ft" @click.stop="delDepartment(item1,index1)"></i>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
Array.prototype.removeByValue = function (val) {
for (var i = 0; i < this.length; i++) {
if (JSON.stringify(this[i]).indexOf(JSON.stringify(val)) != -1) {
this.splice(i, 1);
break;
}
}
};
export default {
data() {
return {
chooseList: []
};
},
watch: {
chooseList(n, o) {
this.$emit('chooseNode', n);
}
},
props: {
data: {
type: Array
}
},
methods: {
//
open(item) {
item.ifVisible = !item.ifVisible;
},
//removeByvaluemain.js
choose(item) {
item.ifVisible = !item.ifVisible;
if (item.ifVisible) {
this.chooseList.push(item);
} else {
this.chooseList.removeByValue(item);
}
},
fircheckitem(item){
this.$emit('fircheckitem',item);
},
twocheckitem(item){
console.log(11,item)
item.ischeck = !item.ischeck
console.log(22,item)
this.data.map( e => {
e.children.map( r => {
if(r.staffGradeId == item.staffGradeId){
if(r.ischeck){
e.ischeck = true
} else {
e.ischeck = false
}
}
})
})
// this.$emit('twocheckitem',item);
},
//
addMajor(){
this.$emit('addMajor');
},
editMajor(item){
this.$emit('editMajor',item);
},
delMajor(item,index){
this.$emit('delMajor',item,index);
},
//
addDepartment(item){
this.$emit('addDepartment',item);
},
editDepartment(item){
this.$emit('editDepartment',item);
},
delDepart(item,index){
this.$emit('delDepart',item,index);
},
//
addClass(item){
this.$emit('addClass',item);
},
editDepartment(item){
this.$emit('editDepartment',item);
},
delDepartment(item,index){
this.$emit('delDepartment',item,index);
},
//
isHasObj(arr, val) {
var flag = 0; //1 0
for (var i = 0; i < arr.length; i++) {
if (JSON.stringify(arr[i]).indexOf(JSON.stringify(val)) != -1) {
flag = 1;
}
}
if (flag == 1) {
return true;
} else {
return false;
}
}
}
};
</script>
<style lang="scss" scoped>
$insideColor: rgba(245, 242, 255, 0.8); //
$outColor: rgba(255, 255, 255, 0.8); //
//,item
@mixin public {
cursor: pointer;
font-size: 16px;
color: #333333;
display: flex;
align-items: center;
img {
height: 20px;
width: 20px;
margin-left: 10px;
}
}
.main {
width: 100%;
}
.item {
@include public;
width: 100%;
padding: 15px 0;
background:rgba(255,255,255,1);
box-shadow:1px 14px 29px 0px rgba(138,97,250,0.19);
border-radius:10px;
text-align: left;
margin-top: 20px;
}
.item:first{
margin-top: 0;
}
.item2 {
@include public;
margin-top: 20px;
margin-left:60px
}
.item2:hover{
color: #cb221c;
}
//ul,li
ul,
li {
padding: 0;
margin: 0;
list-style: none;
}
// 使
.arrowTransform {
transition: 0.4s;
transform-origin: center;
transform: rotateZ(0deg);
}
.arrowTransformReturn {
transition: 0.4s;
transform-origin: center;
transform: rotateZ(90deg);
}
//
.checkBox {
width: 14px;
height: 14px;
border-radius: 7px;
margin-left: 10px;
margin-right: 10px;
border: 2px solid rgba(146, 120, 255, 1);
}
//
.isActive {
background: url('../../../assets/img/icon-yigouxuan.png');
background-size: 14px 14px; /*按比例缩放*/
}
.side_view{
// height: 800px;
padding: 40px 20px;
background-color: #fff;
box-shadow:-2px 0px 57px 0px rgba(192,189,216,0.39);
i {
color: #cb221c;
}
}
.side_icon{
text-align: right;
}
.side_icon i{
cursor:pointer;
font-size: 20px;
}
.side_tree{
width: 100%;
font-size: 16px;
color: #333;
i{
margin-left: 10px;
}
span{
margin-left: 5px;
font-size: 14px;
}
}
</style>

@ -8,7 +8,10 @@ router.beforeEach((to, from, next) => {
document.title = to.meta.title ? `${to.meta.title} | ${Setting.titleSuffix}` : Setting.titleSuffix; document.title = to.meta.title ? `${to.meta.title} | ${Setting.titleSuffix}` : Setting.titleSuffix;
const role = util.session.get(Setting.usernameKey); const role = util.session.get(Setting.usernameKey);
if (!role && to.path !== '/login') { if (!role && to.path !== '/login') {
next('/login'); next({
path: '/login',
query: {redirect: to.fullPath}
})
} else if(role && to.path == '/login') { } else if(role && to.path == '/login') {
next('/index') next('/index')
} else { } else {

@ -49,62 +49,9 @@ const Setting = {
/** /**
* 布局配置 * 布局配置
* */ * */
// 侧边菜单宽度,单位 px,不可动态修改,需与 setting.less 的 @menuSideWidth 保持一致
menuSideWidth: 256,
layout: { layout: {
// 需要隐藏顶栏的页面路径 // 需要隐藏顶栏的页面路径
hideNavList: [], hideNavList: [],
// 侧边栏风格,可选值为 dark 或 light
siderTheme: 'dark',
// 顶栏风格,可选值为 light、dark 或 primary
headerTheme: 'light',
// 顶栏是否置顶,开启后会覆盖侧边栏,需开启 headerFix
headerStick: false,
// 是否开启多 Tabs 页签
tabs: true,
// 多 Tabs 页签是否显示图标,开启 tabs 时有效
showTabsIcon: true,
// 是否固定多 Tabs 多页签
tabsFix: true,
// 是否固定侧边栏
siderFix: true,
// 是否固定顶栏
headerFix: true,
// 是否在下滑时隐藏顶栏,需开启 headerFix,如果开启了 tabsFix,Tabs 也会被隐藏
headerHide: false,
// 是否显示顶部菜单栏
// 一般来说,侧边的菜单栏足以满足大部分业务,如需动态切换侧边栏,可开启此选项启用顶部一级菜单,此时侧边栏将作为二级菜单
headerMenu: false,
// 侧边菜单栏是否开启手风琴模式
menuAccordion: true,
// 是否显示折叠侧边栏按钮,移动端下会自动强制开启
showSiderCollapse: true,
// 侧边菜单栏是否默认折起
menuCollapse: false,
// 侧边菜单折起时,是否在子菜单前显示父级菜单名称
showCollapseMenuTitle: false,
// 是否显示重载按钮
showReload: true,
// 是否显示搜索
showSearch: true,
// 是否显示通知
showNotice: true,
// 是否显示全屏
showFullscreen: true,
// 在手机访问时,是否在顶部显示小尺寸 logo
showMobileLogo: true,
// 是否显示全局面包屑,开启 headerMenu 时不可用
showBreadcrumb: true,
// 全局面包屑是否显示图标,开启 showBreadcrumb 时有效
showBreadcrumbIcon: false,
// 是否显示日志入口,开启与否,不影响日志记录,如不希望用户看到可关闭
showLog: true,
// 是否显示多语言
showI18n: true,
// 是否支持动态修改布局配置,移动端下会自动强制关闭
enableSetting: true,
// 退出登录时,是否二次确认
logoutConfirm: true
}, },
/** /**
* 功能配置 * 功能配置

@ -2,7 +2,6 @@
$insideColor: rgba(245, 242, 255, 0.8); //内部节点的边框颜色 $insideColor: rgba(245, 242, 255, 0.8); //内部节点的边框颜色
$outColor: rgba(255, 255, 255, 0.8); //外部节点的边框颜色 $outColor: rgba(255, 255, 255, 0.8); //外部节点的边框颜色
//混合代码,提取item共同样式
@mixin public { @mixin public {
cursor: pointer; cursor: pointer;
font-size: 14px; font-size: 14px;
@ -16,20 +15,34 @@ $outColor: rgba(255, 255, 255, 0.8); //外部节点的边框颜色
} }
} }
.side_tree{ .side_view{
width: 100%; height: 600px;
font-size: 14px; padding: 40px 20px;
color: #333; background-color: #fff;
overflow: auto;
i{ i{
margin-left: 5px; margin-left: 5px;
font-size: 17px; font-size: 17px;
color: $--color-primary;
} }
span{ span{
margin-left: 5px; margin-left: 5px;
font-size: 14px; font-size: 14px;
} }
} .side_icon{
.item { text-align: right;
i{
cursor:pointer;
font-size: 20px;
}
}
.side_tree{
width: 100%;
font-size: 14px;
color: #333;
.item {
@include public; @include public;
width: 100%; width: 100%;
padding: 15px 0; padding: 15px 0;
@ -38,69 +51,60 @@ $outColor: rgba(255, 255, 255, 0.8); //外部节点的边框颜色
border-radius:10px; border-radius:10px;
text-align: left; text-align: left;
margin-top: 20px; margin-top: 20px;
} }
.empty{ .empty{
width: 25px; width: 25px;
} }
.item:first{ .item:first{
margin-top: 0; margin-top: 0;
} }
.item1 { .item1 {
@include public; @include public;
margin-top: 20px; margin-top: 20px;
margin-left: 23px; margin-left: 23px;
} }
.item2 { .item2 {
@include public; @include public;
margin-top: 20px; margin-top: 20px;
margin-left:80px margin-left:80px
} }
.item3 { .item3 {
@include public; @include public;
margin-top: 20px; margin-top: 20px;
margin-left:95px margin-left:95px
} }
.item2:hover{ .item2:hover{
color: $--color-primary; color: $--color-primary;
} }
.edit{ .edit{
display: inline-block; display: inline-block;
width: 17px; width: 17px;
height: 17px; height: 17px;
background: url(../../../assets/svg/edit.svg) 0 0/cover no-repeat; background: url(../../../assets/svg/edit.svg) 0 0/cover no-repeat;
} }
// 使三角形旋转动画 .arrowTransform {
.arrowTransform {
transition: 0.4s; transition: 0.4s;
transform-origin: center; transform-origin: center;
transform: rotateZ(0deg); transform: rotateZ(0deg);
} }
.arrowTransformReturn { .arrowTransformReturn {
transition: 0.4s; transition: 0.4s;
transform-origin: center; transform-origin: center;
transform: rotateZ(90deg); transform: rotateZ(90deg);
} }
//复选框样式 .checkBox {
.checkBox {
width: 14px; width: 14px;
height: 14px; height: 14px;
border-radius: 7px; border-radius: 7px;
margin-left: 10px; margin-left: 10px;
margin-right: 10px; margin-right: 10px;
border: 2px solid rgba(146, 120, 255, 1); border: 2px solid rgba(146, 120, 255, 1);
} }
}
//当点击复选框时候切换背景图片 &.second{
.isActive { .item2{
background: url('../../../assets/img/icon-yigouxuan.png'); margin-left: 50px;
background-size: 14px 14px; /*按比例缩放*/ }
} }
.side_icon{
text-align: right;
}
.side_icon i{
cursor:pointer;
font-size: 20px;
} }
Loading…
Cancel
Save