Commit 4b7fe4c3 authored by 张家银's avatar 张家银

Merge remote-tracking branch 'origin/master'

parents 02c9e3c7 73e4b98c
......@@ -5,7 +5,7 @@
<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>
<link rel="stylesheet" href="https://unpkg.com/element-ui@2.15.5/lib/theme-chalk/index.css">
</head>
<body>
......
......@@ -57,7 +57,8 @@ export default {
.then(({ data }) => {
this.tableData = this.beforeRender(
Object.assign({}, this.tableData, data)
);
)
console.log(this.tableData,'')
this.afterRender(this.tableData);
})
.catch(error => {
......@@ -245,6 +246,21 @@ export default {
}
return info
},
// 格式化员工类型
formatterStatus(row, column, val){
const content = formatter(this.tableData, column, val);
if (content) {
if (val == '1') {
return <el-tag size='mini'>全职</el-tag>
} else if (val == '2') {
return <el-tag size='mini'>兼职</el-tag>
} else if (val == '3') {
return <el-tag size='mini'>实习</el-tag>
}
} else {
return val
}
},
// 多选表格行
handleSelectionChange(val) {
this.selection = val.map(i => i.id);
......
/**
* @desc 克隆
* @param obj 克隆源
*/
export const deepClone = (obj) => {
let newObj = Array.isArray(obj) ? [] : {};
if (obj && typeof obj === "object") {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] =
obj && typeof obj[key] === "object"
? deepClone(obj[key])
: obj[key];
}
}
}
return newObj;
}
/**
* @desc 建立树型
* @param data 数据源
* @param parentId 根节点
* @param id id 匹配项
* @param pid parentId匹配项
*/
export const toTreeData = (data, parentId, id, pid) => {
// 建立个树形结构,需要定义个最顶层的父节点,pId是-1
let parent = [];
for (let i = 0; i < data.length; i++) {
if (data[i][pid] != parentId) {
} else {
let obj = {};
for (let key in data[i]) {
obj[key] = data[i][key]
}
obj['children'] = [];
parent.push(obj);
}
}
fnChildren(parent);
function fnChildren(parent) {
if (data.length !== 0) {
for (let i = 0; i < parent.length; i++) {
for (let j = 0; j < data.length; j++) {
if (parent[i].id == data[j][pid]) {
let obj = {};
for (let k in data[j]) {
obj[k] = data[j][k]
}
obj["children"] = [];
parent[i].children.push(obj);
}
}
fnChildren(parent[i].children);
}
}
}
return deleteEmptyChildren(parent);
}
export const deleteEmptyChildren = (arr) => {
if (arr.length) {
for (let i in arr) {
if (arr[i].children.length) {
deleteEmptyChildren(arr[i].children)
} else {
delete arr[i].children;
}
}
}
return arr
}
export const parentTreeNode = (treeList, parentKEY, id) => {
let temp = []
let searchFn = function (treeList, id) {
for (let i = 0; i < treeList.length; i++) {
let item = treeList[i]
if (item.id === id) {
temp.push(item)
searchFn(treeList, item[parentKEY])
break
} else {
if (item.children) {
searchFn(item.children, id)
}
}
}
}
searchFn(treeList, id)
return temp
}
export const childrenTreeNode = (treeList, parentKEY, id) => {
let temp = [{ id: id }];
let searchFn = function (treeList, id) {
for (let i = 0; i < treeList.length; i++) {
let item = treeList[i];
if (item[parentKEY] === id) {
temp.push(item);
searchFn(treeList, item.id);
// break;
} else {
if (item.children) {
searchFn(item.children, id);
}
}
// console.log("run");
}
};
searchFn(treeList, id);
return temp;
}
export const getItemData = (list, key, value) => {
for (let i = 0; i < list.length; i++) {
let item = list[i];
if (item[key] === value) {
return item;
} else {
if (item.children && item.children.length > 0) {
let res = getItemData(item.children, key, value);
if (res) {
return res;
}
}
}
}
}
/**
* @desc 叶子节点查询根节点
* @param tree 数据源
* @param parentId 根节点
* @param config id children 匹配项
*/
export const getTreeIds = (tree, nodeId, config) => {
const { children = 'children', id = 'id' } = config || {}
const toFlatArray = (tree, parentId) => {
return tree.reduce((t, _) => {
const child = _[children]
return [
...t,
parentId ? { ..._, parentId } : _,
...(child && child.length ? toFlatArray(child, _[id]) : [])]
}, [])
}
const getIds = flatArray => {
let ids = [nodeId]
let child = flatArray.find(_ => _[id] === nodeId)
while (child && child.parentId) {
ids = [child.parentId, ...ids]
child = flatArray.find(_ => _[id] === child.parentId)
}
return ids
}
return getIds(toFlatArray(tree))
}
......@@ -15,7 +15,6 @@ import FileUpload from '@/components/FileUpload';
import Editor from '@/components/Editor';
import Map from '@/components/Map';
import MapDetail from '@/components/MapDetail';
const Prototype = function() {};
Prototype.install = (Vue, options) => {
......
......@@ -70,7 +70,7 @@ export default {
const type = urlArray.pop();
group.unshift({
name: "考勤绩效管理系统"
name: "智慧政务绩效管理系统"
})
if(types[type]) {
group.push({
......
......@@ -8,26 +8,27 @@
<div class="layout-logo flex">
<i class="el-icon-menu" @click='showMobileMenu=!showMobileMenu'> </i>
<router-link to="/">
<img src="../assets/images/logo.png" style="margin-bottom:5px" height="40" alt="">
<b style="color:white;font-size:18px;">&nbsp;&nbsp;&nbsp; 考勤绩效管理系统 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b>
<!-- <img src="../assets/images/logo.png" style="margin-bottom:5px" height="40" alt=""> -->
<b style="color:white;font-size:20px;">&nbsp;&nbsp;&nbsp; 智慧政务绩效管理系统 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b>
</router-link>
</div>
<!-- 一级菜单 -->
<ul class="menu-list flex">
<li v-for='item in menu' :key='item.id'>
<!-- :active='submenu.path === item.path' -->
<router-link :to="item.path" :title="item.name" replace>
<span @click="RouterTo(item.path)" :class="{active:activePath === item.path}">
<i :class="'el-icon-'+item.icon"></i>
{{item.name}}
</router-link>
</span>
</li>
</ul>
</div>
<div class="controllBar">
<i class="el-icon-bell" style="font-size: 15px;margin-right: 10px" > 消息</i>
<el-badge :value="12" class="item">
<i class="el-icon-bell" style="font-size: 15px;margin-right: 10px" > 消息</i>
</el-badge>
</div>
<div class="controllBar" @click="returnHome">
<i class="el-icon-s-home" style="font-size: 15px;margin-right: 10px" > 首页</i>
......@@ -48,28 +49,15 @@
</div>
</div>
<!-- 一级菜单 -->
<ul class="mobile-menu-list flex flex-pack-justify" v-if='showMobileMenu'>
<li v-for='item in menu' :key='item.id'>
<router-link :to="item.path" :active='submenu.path === item.path' :title="item.name">
<li v-for='item in menu' :key='item.id' @click="RouterTo(item.path)">
<span :class="{active:activePath === item.path}">
<i :class="'el-icon-'+item.icon"></i>
{{item.name}}
</router-link>
</span>
</li>
</ul>
<!-- 二级菜单 -->
<!-- <div class="layout-submenu-wrapper flex" v-if='submenu.children && submenu.children.length'>
<div class="layout-submenu">
<ul class="submenu-list flex">
<li v-for='item in submenu.children' :key='item.id'>
<a :href="item.path" target="blank" v-if='item.isOut'>{{item.name}}</a>
<router-link :to="item.path" :active='group === item.path' v-else>{{item.name}}</router-link>
</li>
</ul>
</div>
</div> -->
</div>
</template>
......@@ -77,6 +65,17 @@
export default {
name: "Header",
methods: {
// 导航栏路由跳转
RouterTo(path){
window.sessionStorage.CurrentSecondPath = path
this.$store.commit('setCurrentSecondPath',path)
this.$store.commit('setThirdPath',path)
this.$router.push({path})
let thirdArr = this.headBar.children.find(item => item.path === path)
this.$store.commit('setCurrentThirdArr',thirdArr.children)
this.$emit('changePath',path)//触发点击事件
},
returnHome(){
this.$router.replace({path:'/'})
},
......@@ -99,44 +98,8 @@ export default {
},
beforeDestroy() {
console.log("beforeDestroy");
//window.removeEventListener("message", this.getsocketData, false);
},
mounted() {
// console.log("mounted");
// this.$nextTick(function () {
// console.log("login websocket:"+"ws://"+process.env.VUE_APP_WEBSOCKET_API +"/ws?accessToken="+ this.$store.state.userData.id)
// createSocket(
// "ws://" +
// process.env.VUE_APP_WEBSOCKET_API +
// "/ws?accessToken=" +
// this.$store.state.userData.id
// );
// });
// let _this = this;
// const getsocketData = (e) => {i
// // 创建接收消息函数
// const data = e && e.detail.data;
// let obj = JSON.parse(data);
// if (obj.type == "SEND_TO_ALL_REQUEST") {
// vm.refreshData();
// let content = JSON.parse(obj.body.content);
// _this.$notify({
// title: "警告",
// message: content,
// type: "warning",
// duration: 8000,
// });
// }
// };
// this.getsocketData = getsocketData;
// // 注册监听事件
// window.addEventListener("onmessageWS", getsocketData,false);
// console.log(this.menu,'菜单数据')
},
mounted() {},
computed: {
group() {
const relativeGroup = this.$store.state.group;
......@@ -164,39 +127,6 @@ export default {
}else{
return this.headBar.children
}
// return this.userData.children.map(item=>{
// const url = item.path ? item.url : (item.childList[0] ? (item.childList[0].url || '') : '');
// return {
// name: item.name,
// path: url,
// id: item.id,
// icon: item.imgPath,
// children: item.childList.map(sub=>{
// return {
// name: sub.name,
// path: sub.url ? sub.url : (sub.childList[0] ? (sub.childList[0].url || 0) : ''),
// id: sub.id,
// parentId: sub.parentId,
// icon: sub.imgPath,
// isOut: /^https?\:\/\//.test(sub.url)
// }
// })
// }
// })
},
submenu() {
if(!this.menu.length) return {};
let matchMenu = {};
this.menu.forEach(item=>{
const menu = item;
item.children.forEach(item=>{
if(item.path === this.group) {
matchMenu = menu;
return;
}
})
})
return matchMenu
},
// 二级菜单数据
headBar() {
......@@ -205,6 +135,10 @@ export default {
userData(){
return this.$store.state.userData
},
// 二级路径
activePath(){
return this.$store.state.CurrentSecondPath
}
},
data() {
return {
......@@ -212,8 +146,7 @@ export default {
}
},
created(){
console.log(this.userData,'用户数据')
console.log(this.menu,'导航栏数据')
}
}
</script>
......@@ -241,19 +174,19 @@ export default {
.menu-list{
li{
a{
span{
display: block;
padding: 0 12px;
padding: 0 16px;
height: 100%;
color: #eee;
&.router-link-active,
&[active]{
//background: #1890ff;
color: #fff;
list-style-type:none;
border-bottom:3px solid #fff;
padding-bottom: 2px;
}
cursor: pointer;
margin-right: 20px;
}
.active{
color: #fff;
list-style-type:none;
border-bottom:3px solid #fff;
padding-bottom: 2px;
}
}
......@@ -313,19 +246,17 @@ export default {
.mobile-menu-list{
display: flex;
background: #222333;
padding: 0 10px;
padding: 10px;
li{
padding: 8px 5px;
a{
width: 1em;
span{
display: block;
padding: 0 12px;
height: 100%;
color: #eee;
font-size: 14px;
word-break: break-all;
&.router-link-active,
&[active]{
color: #1890ff;
}
cursor: pointer;
}
.active{
color: #1890ff;
}
}
}
......
......@@ -72,7 +72,26 @@ export default {
this.$message.success("已退出登录");
this.$store.commit("logout");
this.$router.replace("/login");
});
})
},
// 处理返回导航栏
mapMenu(arr){
if(arr.length === 0) return []
let result = arr.map(item => {
const url = item.url
? item.url
: item.childList[0]
? item.childList[0].url || ""
: "";
return {
name: item.name,
path: url,
id: item.id,
icon: item.imgPath,
children:item.childList.length === 0? []:this.mapMenu(item.childList)
}
})
return result
},
},
computed: {
......@@ -101,34 +120,7 @@ export default {
return this.userData.flat;
},
menu() {
if (!this.userData.barList) return [];
return this.userData.barList.map((item) => {
const url = item.url
? item.url
: item.childList[0]
? item.childList[0].url || ""
: "";
return {
name: item.name,
path: url,
id: item.id,
icon: item.imgPath,
children: item.childList.map((sub) => {
return {
name: sub.name,
path: sub.url
? sub.url
: sub.childList[0]
? sub.childList[0].url || 0
: "",
id: sub.id,
parentId: sub.parentId,
icon: sub.imgPath,
isOut: /^https?\:\/\//.test(sub.url),
};
}),
};
});
return this.mapMenu(this.userData.barList)
},
defaultActive() {
this.search = "";
......@@ -156,6 +148,9 @@ export default {
data() {
return {};
},
created(){
console.log(this.menu,'菜单')
}
};
</script>
......
<template>
<div>
<el-menu :default-active="activeName" class="el-menu-demo" mode="horizontal" @select="handleClick" v-if="thirdList.length>0">
<el-menu-item :index="item.path" v-for="(item,index) in thirdList" :key="index">{{item.name}}</el-menu-item>
</el-menu>
</div>
</template>
<script>
export default {
props:{
thirdList:{
type:Boolean,
default:[]
},
activeName:{
type:String,
default:''
}
},
methods:{
handleClick(key, keyPath){
this.$emit('handleClick',key)
}
}
}
</script>
<style>
</style>
\ No newline at end of file
......@@ -39,12 +39,15 @@ const router = new Router({
...restBuilder('task', 'system/task'), // 系统管理--任务管理
//部门
...restBuilder('dept', 'dept'),
...restBuilder('dept', 'dept'),//部门
...restBuilder('staff', 'staff'),//花名册 员工信息
...restBuilder('staff/care', 'staff/care'),// 员工关怀信息
...restBuilder('care/template', 'care/template'),// 关怀问候信息
...restBuilder('job', 'job'),// 职位信息
...restBuilder('staff/black', 'staff/black'),// 员工黑名单信息
...restBuilder('job', 'job'),// 职位信息
...restBuilder('staff/adjust/log', 'staff/adjust/log'),// 员工调岗信息
...restBuilder('staff/regular', 'staff/regular'),// 员工转正信息
...restBuilder('staff/leave', 'staff/leave'),// 员工离职信息
......@@ -108,7 +111,7 @@ function builder(path, component = path, requiresAuth = false) {
component: getComponent(component),
meta: {
requiresAuth: requiresAuth
}
},
}
}
......
......@@ -7,14 +7,25 @@ Vue.use(Vuex)
let userData = {};
let currentParentName = ''
let headBar = []
let CurrentThirdArr = []
let ThirdPath = ''
let CurrentSecondPath = ''
try {
userData = JSON.parse(window.sessionStorage.userData || '{}');
currentParentName = window.sessionStorage.currentParentName || ''
headBar = JSON.parse(window.sessionStorage.headBar || '{}')
CurrentThirdArr = JSON.parse(window.sessionStorage.CurrentThirdArr || '{}')
ThirdPath = window.sessionStorage.ThirdPath || ''
CurrentSecondPath = window.sessionStorage.CurrentSecondPath || ''
} catch (error) {
console.log('未从session中获取到userData')
console.log('未从session中获取到currentParentName')
console.log('未从session中获取到headBar')
console.log('未从session中获取到CurrentThirdArr')
console.log('未从session中获取到ThirdPath')
console.log('未从session中获取到CurrentSecondPath')
}
function convertTreeToList(root, array) {
......@@ -54,7 +65,10 @@ export default new Vuex.Store({
userData,//用户数据
group: '',
headBar,
currentParentName//当前选择菜单
currentParentName,//当前选择一级菜单
CurrentSecondPath,//当前二级菜单路径
CurrentThirdArr,
ThirdPath
},
// 同步存储数据
mutations: {
......@@ -65,6 +79,7 @@ export default new Vuex.Store({
window.sessionStorage.userData = JSON.stringify(data);
window.sessionStorage.token = data.token;
},
// 头部导航栏数据
setHeadBar(state,data){
state.headBar = data
window.sessionStorage.headBar = JSON.stringify(data)
......@@ -72,16 +87,36 @@ export default new Vuex.Store({
logout(state) {
state.userData = {};
state.isLogin = false;
window.sessionStorage.userData = '';
window.sessionStorage.token = '';
// window.sessionStorage.userData = '';
// window.sessionStorage.token = '';
// window.sessionStorage.headBar = ''
// window.sessionStorage.currentParentName = ''
// window.sessionStorage.CurrentSecondPath = ''
// window.sessionStorage.CurrentThirdArr = ''
window.sessionStorage.clear()
},
setGroup(state, data) {
state.group = data;
},
// 当前以及导航名
setCurrentParentName(state,data){
state.currentParentName = data
window.sessionStorage.currentParentName = data
}
},
setCurrentSecondPath(state,data){
state.CurrentSecondPath = data
window.sessionStorage.CurrentSecondPath = data
},
// 当前三级导航栏
setCurrentThirdArr(state,data){
state.CurrentThirdArr = data
window.sessionStorage.CurrentThirdArr = JSON.stringify(data)
},
// 当前三级导航栏路径
setThirdPath(state,data){
state.ThirdPath = data
window.sessionStorage.ThirdPath = data
},
},
// 异步任务
actions: {
......
......@@ -2,7 +2,7 @@
<div class="page page-home">
<!-- 欢迎你,{{userData}} -->
<el-row type="flex" align="top" justify="space-between" :gutter="40">
<el-col :span="6">
<el-col :span="6" :xs="12">
<el-card>
<div class="data_left">
<div class="title">今日数据洞察</div>
......@@ -38,9 +38,8 @@
</div>
</div>
</el-card>
</el-col>
<el-col :span="18">
<el-col :span="18" :xs="12">
<el-card class="right_card">
<div class="data_right">
<div class="title">科学化、精细化、以人为本知行合一的管理理念</div>
......@@ -71,26 +70,7 @@ export default {
return this.$store.state.userData;
},
menu() {
if(!this.userData.barList) return []
return this.userData.barList.map(item=>{
const url = item.url ? item.url : (item.childList[0] ? (item.childList[0].url || '') : '');
return {
name: item.name,
path: url,
id: item.id,
icon: item.imgPath,
children: item.childList.map(sub=>{
return {
name: sub.name,
path: sub.url ? sub.url : (sub.childList[0] ? (sub.childList[0].url || 0) : ''),
id: sub.id,
parentId: sub.parentId,
icon: sub.imgPath,
isOut: /^https?\:\/\//.test(sub.url)
}
})
}
})
return this.mapMenu(this.userData.barList)
}
},
data(){
......@@ -138,6 +118,8 @@ export default {
created(){
this.$store.commit('setHeadBar',[])
this.$store.commit("setCurrentParentName",'')
this.$store.commit('setCurrentThirdArr',[])
console.log(this.menu,'菜单')
},
methods:{
tabChildren(name){
......@@ -147,20 +129,41 @@ export default {
// 路由跳转
if(result.children.length>0){
this.$router.push({path:result.children[0].path})
this.$store.commit('CurrentSecondPath',result.children[0].path)
this.$store.commit('setCurrentThirdArr',result.children[0].children)
}else{
this.$message.error('暂未完成添加');
}
}
},
mapMenu(arr){
if(arr.length === 0) return []
let result = arr.map(item => {
const url = item.url
? item.url
: item.childList[0]
? item.childList[0].url || ""
: "";
return {
name: item.name,
path: url,
id: item.id,
icon: item.imgPath,
children:item.childList.length === 0? []:this.mapMenu(item.childList)
}
})
return result
},
}
}
</script>
<style scoped lang="less">
.page-home{
width: 100%;
min-width: 1400px;
height: 100vh;
box-sizing: border-box;
padding: 2% 5%;
// padding: 2% 5%;
background-color: #f3f2f2;
.data_left{
.cell1{
......
<template>
<div :style="menuPageCss" class="pages page-layout">
<LayoutHeader v-if="menuPage!=='left'"></LayoutHeader>
<LayoutHeader v-if="menuPage!=='left'" @changePath="changePath"></LayoutHeader>
<LayoutHeaderLeft @toggle="toggle" :isOpen="isOpen" v-if="menuPage==='left'" />
<router-view :class="{'active': !isOpen}" />
<div style="padding:20px">
<el-card>
<TabPane :thirdList="thirdList" :activeName="activeName" @handleClick="handleClick"></TabPane>
<router-view :class="{'active': !isOpen}" />
</el-card>
</div>
</div>
</template>
<script>
import LayoutHeader from "../components/Header";
import LayoutHeaderLeft from "../components/HeaderLeft";
import TabPane from '../components/tabPane.vue'
const isPC = /(iPhone|iPad|iPod|iOS|Android)/i.test(navigator.userAgent);
//菜单位置:取值: left :菜单在左面, top :菜单在上面
const MenuPage = "top";
......@@ -16,12 +22,15 @@ export default {
components: {
LayoutHeader,
LayoutHeaderLeft,
TabPane
},
data() {
return {
isOpen: isPC,
menuPage: MenuPage,
};
isfresh:true,
path:''
}
},
computed: {
menuPageCss() {
......@@ -29,13 +38,29 @@ export default {
return {
"--padding-top": this.menuPage === "left" ? "60px" : "0px",
"--margin-left": this.menuPage === "left" ? "200px" : "0px",
};
}
},
thirdList(){
if(!this.$store.state.CurrentThirdArr) return []
return this.$store.state.CurrentThirdArr
},
activeName(){
return this.$store.state.ThirdPath
}
},
methods: {
toggle() {
this.isOpen = !this.isOpen;
},
changePath(e){
this.path = e
},
handleClick(key){
this.$store.commit('setThirdPath',key)
this.$router.push({
path:key
})
}
},
};
</script>
......@@ -44,11 +69,11 @@ export default {
.page {
min-height: calc(100vh - 100px);
width: 100%;
position: relative;
background: #fff;
padding: var(--padding-top) 5px 5px 5px;
margin-left: 60px;
// var(--padding-top) 5px 5px 5px;
padding: 20px;
// margin-left: 60px;
&.active {
margin-left: var(--margin-left);
}
......
......@@ -3,7 +3,7 @@
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/>
<Field label="员工姓名" prop="fullName" v-model="form.fullName" placeholder="请输入员工姓名"/>
<Field label="性别1男2女" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="请选择性别1男2女"/>
<Field label="出生日期" prop="birthday" v-model="form.birthday" type="date" />
......
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<LayoutTable :data="tableData" :config="tableConfig"></LayoutTable>
<drawer-show ref="drawerform" @ok="getData" />
</div>
</template>
......@@ -16,7 +13,7 @@
name: "StaffBlackList",
components: {
drawerShow
},
},
mixins: [table],
created() {
},
......
......@@ -3,25 +3,25 @@
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="员工姓名" prop="name" v-model="form.name" placeholder="请输入员工姓名"/>
<Field label="性别" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="请选择性别"/>
<Field label="出生日期" prop="birthday" v-model="form.birthday" type="date" />
<Field label="照片" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="请输入照片"/>
<Field label="联系电话" prop="phoneNumber" v-model="form.phoneNumber" placeholder="请输入联系电话"/>
<Field label="身份证号码" prop="idCard" v-model="form.idCard" placeholder="请输入身份证号码"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="政治面貌 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="请选择政治面貌 "/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/>
<Field label="职位ID" prop="positionId" v-model="form.positionId" placeholder="请输入职位ID"/>
<Field label="职位名称" prop="positionName" v-model="form.positionName" placeholder="请输入职位名称"/>
<Field label="员工类型" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="请选择员工类型"/>
<Field label="员工状态" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="请选择员工状态"/>
<Field label="入职登记表" prop="registerPath" v-model="form.registerPath" type="textarea" placeholder="请输入入职登记表"/>
<Field label="入职时间" prop="entryDate" v-model="form.entryDate" type="date" />
<Field label="转正时间" prop="regularDate" v-model="form.regularDate" type="date" />
<Field label="离职时间" prop="leaveDate" v-model="form.leaveDate" type="date" />
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
<Field label="员工姓名" prop="name" v-model="form.name" placeholder="请输入员工姓名"/>
<Field label="性别" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="请选择性别"/>
<Field label="出生日期" prop="birthday" v-model="form.birthday" type="date" />
<Field label="照片" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="请输入照片"/>
<Field label="联系电话" prop="phoneNumber" v-model="form.phoneNumber" placeholder="请输入联系电话"/>
<Field label="身份证号码" prop="idCard" v-model="form.idCard" placeholder="请输入身份证号码"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="政治面貌 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="请选择政治面貌 "/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/>
<Field label="职位ID" prop="positionId" v-model="form.positionId" placeholder="请输入职位ID"/>
<Field label="职位名称" prop="positionName" v-model="form.positionName" placeholder="请输入职位名称"/>
<Field label="员工类型" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="请选择员工类型"/>
<Field label="员工状态" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="请选择员工状态"/>
<Field label="入职登记表" prop="registerPath" v-model="form.registerPath" type="textarea" placeholder="请输入入职登记表"/>
<Field label="入职时间" prop="entryDate" v-model="form.entryDate" type="date" />
<Field label="转正时间" prop="regularDate" v-model="form.regularDate" type="date" />
<Field label="离职时间" prop="leaveDate" v-model="form.leaveDate" type="date" />
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
</el-row>
......
......@@ -7,26 +7,25 @@
size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="员工姓名" prop="name" v-model="form.name" placeholder="请输入员工姓名"/>
<Field label="性别" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="请选择性别"/>
<Field label="出生日期" prop="birthday" v-model="form.birthday" type="date" />
<Field label="照片" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="请输入照片"/>
<Field label="联系电话" prop="phoneNumber" v-model="form.phoneNumber" placeholder="请输入联系电话"/>
<Field label="身份证号码" prop="idCard" v-model="form.idCard" placeholder="请输入身份证号码"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="政治面貌 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="请选择政治面貌 "/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/>
<Field label="职位ID" prop="positionId" v-model="form.positionId" placeholder="请输入职位ID"/>
<Field label="职位名称" prop="positionName" v-model="form.positionName" placeholder="请输入职位名称"/>
<Field label="员工类型" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="请选择员工类型"/>
<Field label="员工状态" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="请选择员工状态"/>
<Field label="入职登记表" prop="registerPath" v-model="form.registerPath" type="textarea" placeholder="请输入入职登记表"/>
<Field label="入职时间" prop="entryDate" v-model="form.entryDate" type="date" />
<Field label="转正时间" prop="regularDate" v-model="form.regularDate" type="date" />
<Field label="离职时间" prop="leaveDate" v-model="form.leaveDate" type="date" />
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
<Field label="员工姓名" prop="name" v-model="form.name" placeholder="请输入员工姓名"/>
<Field label="性别" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="请选择性别"/>
<Field label="出生日期" prop="birthday" v-model="form.birthday" type="date" />
<Field label="照片" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="请输入照片"/>
<Field label="联系电话" prop="phoneNumber" v-model="form.phoneNumber" placeholder="请输入联系电话"/>
<Field label="身份证号码" prop="idCard" v-model="form.idCard" placeholder="请输入身份证号码"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="政治面貌 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="请选择政治面貌 "/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/>
<Field label="职位ID" prop="positionId" v-model="form.positionId" placeholder="请输入职位ID"/>
<Field label="职位名称" prop="positionName" v-model="form.positionName" placeholder="请输入职位名称"/>
<Field label="员工类型" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="请选择员工类型"/>
<Field label="员工状态" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="请选择员工状态"/>
<Field label="入职登记表" prop="registerPath" v-model="form.registerPath" type="textarea" placeholder="请输入入职登记表"/>
<Field label="入职时间" prop="entryDate" v-model="form.entryDate" type="date" />
<Field label="转正时间" prop="regularDate" v-model="form.regularDate" type="date" />
<Field label="离职时间" prop="leaveDate" v-model="form.leaveDate" type="date" />
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
</el-row>
<form-buttons @submit='submitForm' noCancelBtn />
......@@ -51,7 +50,7 @@
// 遮罩层
loading: true,
// 弹出层标题
title: "员工基本信息",
title: "个人主页",
// 是否显示弹出层
open: false,
direction:"rtl",
......
<template>
<div class="personal">
<el-drawer title="个人主页" :visible.sync="open">
{{data}}
</el-drawer>
</div>
</template>
<script>
export default {
props:{
data:{
type:Object,
default:{}
}
},
data(){
return{
open:true
}
}
}
</script>
<style>
</style>
\ No newline at end of file
......@@ -3,12 +3,12 @@
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
qqq基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="员工姓名" label-class-name="labelClass" content-class-name="contentClass">
<el-descriptions-item label="员工姓名" label-class-name="labelClass" content-class-name="contentClass">
{{form.name}}
</el-descriptions-item>
<el-descriptions-item label="性别" label-class-name="labelClass" content-class-name="contentClass">
......
......@@ -15,6 +15,7 @@ export default {
methods: {
beforeRender(data) {
this.allMenu = this.sortByGroup(this.util_copy(data.data));
console.log(this.allMenu,'菜单数据')
// 存在查询条件,展开全部
if(Object.keys(this.$route.query).length) {
this.select = this.allMenu.filter(i=>!i.parentId).map(i=>i.id);
......@@ -27,9 +28,15 @@ export default {
// 按parentId排序分组
sortByGroup(data) {
return data.filter(i=>!i.parentId).reduce((prev, item)=>{
return prev.concat([item], data.filter(i=>i.parentId == item.id));
return prev.concat([item], data.filter(i=>i.parentId == item.id))
}, [])
},
//重排table
resetTable(arr){
// 一级父级
},
// 查看下级菜单
selectHandler({id}) {
// 如果已展开,则关闭
......@@ -44,7 +51,7 @@ export default {
showChild() {
this.tableData.data = this.allMenu.filter(item=>{
return !item.parentId || this.select.indexOf(item.parentId) > -1
});
})
},
// 展示菜单图标
showIcon(row, column) {
......@@ -92,7 +99,6 @@ export default {
if (res && res.code && res.code == 1) {
this.getData()
this.loading = false;
this.$message.success("更新排序成功!");
}
})
......@@ -137,7 +143,7 @@ export default {
formatter: row => {
const icon = this.select.indexOf(row.id) === -1 ? 'right' : 'down';
return (
!row.parentId
!row.parentId||row.childList.length>0
? <div onClick={()=>{this.selectHandler(row)}}>
<i class={'el-icon-arrow-'+icon}></i>
</div>
......@@ -201,7 +207,7 @@ export default {
this.handleDown(row);
}}
></el-link>
></el-link>
<table-buttons noView row={row} onEdit={this.toEdit} onDel={this.toDel} />
......
......@@ -40,13 +40,23 @@ export default {
this.$store.dispatch('login');
this.$router.go(-1);
},
// 合并父子数组
combineArr(Array,menu){
Array.forEach(item => {
if(item.childList.length>0){
menu[item.id+''] = item.name
this.combineArr(item.childList,menu)
}else{
menu[item.id+''] = item.name
}
})
}
},
computed: {
menu() {
let menu = {'0': ''};
this.$store.state.userData.barList.forEach(item=>{
menu[item.id+''] = item.name
});
this.combineArr(this.$store.state.userData.barList,menu)
console.log(menu)
return menu;
}
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment