diff --git a/attendance-performance-manager-ui/admin/public/index.html b/attendance-performance-manager-ui/admin/public/index.html index f8fb00fd6da2f7c9b232a917ed0b42734495254d..a7cc0362da79aca6e23911cd92d250186421a3ed 100644 --- a/attendance-performance-manager-ui/admin/public/index.html +++ b/attendance-performance-manager-ui/admin/public/index.html @@ -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> diff --git a/attendance-performance-manager-ui/admin/src/assets/mixins/table.js b/attendance-performance-manager-ui/admin/src/assets/mixins/table.js index 99f65233cb12e25491c51a34acc170ed634071aa..9e3c608af233c80386f82227f97b946a9a315c78 100644 --- a/attendance-performance-manager-ui/admin/src/assets/mixins/table.js +++ b/attendance-performance-manager-ui/admin/src/assets/mixins/table.js @@ -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); diff --git a/attendance-performance-manager-ui/admin/src/assets/utils/common.js b/attendance-performance-manager-ui/admin/src/assets/utils/common.js new file mode 100644 index 0000000000000000000000000000000000000000..5d53aa71459ed0bc79d0ae543c0e2c1434243dd8 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/assets/utils/common.js @@ -0,0 +1,177 @@ +/** +* @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) => { + // 寤虹珛涓爲褰㈢粨鏋�,闇€瑕佸畾涔変釜鏈€椤跺眰鐨勭埗鑺傜偣锛宲Id鏄�-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)) + + + +} + + + diff --git a/attendance-performance-manager-ui/admin/src/assets/utils/globalComponents.js b/attendance-performance-manager-ui/admin/src/assets/utils/globalComponents.js index 08b454306a377de3a187c81f3bde729e0c982bb6..99f89e5c8ce0d35cb5bba539733a4ced5cbdb13e 100644 --- a/attendance-performance-manager-ui/admin/src/assets/utils/globalComponents.js +++ b/attendance-performance-manager-ui/admin/src/assets/utils/globalComponents.js @@ -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) => { diff --git a/attendance-performance-manager-ui/admin/src/components/Breadcrumb.vue b/attendance-performance-manager-ui/admin/src/components/Breadcrumb.vue index 07a82bae5ae811f74f466ef76e71cb09d0bc3c2f..0f6bde9d07509209196c6e598bf88a370806174f 100644 --- a/attendance-performance-manager-ui/admin/src/components/Breadcrumb.vue +++ b/attendance-performance-manager-ui/admin/src/components/Breadcrumb.vue @@ -70,7 +70,7 @@ export default { const type = urlArray.pop(); group.unshift({ - name: "鑰冨嫟缁╂晥绠$悊绯荤粺" + name: "鏅烘収鏀垮姟缁╂晥绠$悊绯荤粺" }) if(types[type]) { group.push({ diff --git a/attendance-performance-manager-ui/admin/src/components/Header.vue b/attendance-performance-manager-ui/admin/src/components/Header.vue index f4619bad764f9dee53f4320329458e261cb55c1d..5b1d3e3543100d224180f23dc01f9e0a99022a55 100644 --- a/attendance-performance-manager-ui/admin/src/components/Header.vue +++ b/attendance-performance-manager-ui/admin/src/components/Header.vue @@ -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;"> 鑰冨嫟缁╂晥绠$悊绯荤粺 </b> + <!-- <img src="../assets/images/logo.png" style="margin-bottom:5px" height="40" alt=""> --> + <b style="color:white;font-size:20px;"> 鏅烘収鏀垮姟缁╂晥绠$悊绯荤粺 </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; } } } diff --git a/attendance-performance-manager-ui/admin/src/components/HeaderLeft.vue b/attendance-performance-manager-ui/admin/src/components/HeaderLeft.vue index 59adf53f1f4c8caf0dcb162160d6b450deb259c7..4a93dacf91458710fb2e9d5087d2a5646be69ae1 100644 --- a/attendance-performance-manager-ui/admin/src/components/HeaderLeft.vue +++ b/attendance-performance-manager-ui/admin/src/components/HeaderLeft.vue @@ -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> diff --git a/attendance-performance-manager-ui/admin/src/components/tabPane.vue b/attendance-performance-manager-ui/admin/src/components/tabPane.vue new file mode 100644 index 0000000000000000000000000000000000000000..40cfb1a3fa1e340d96f0a81a7a28707fc130ec17 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/components/tabPane.vue @@ -0,0 +1,31 @@ +<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 diff --git a/attendance-performance-manager-ui/admin/src/router.js b/attendance-performance-manager-ui/admin/src/router.js index 626f62ac791932572c61a2684dbc08626b3770a4..973035143f3744ed9a2d1b976f99be8e0a4861e2 100644 --- a/attendance-performance-manager-ui/admin/src/router.js +++ b/attendance-performance-manager-ui/admin/src/router.js @@ -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 - } + }, } } diff --git a/attendance-performance-manager-ui/admin/src/store.js b/attendance-performance-manager-ui/admin/src/store.js index d5bbfaaf32669dcebd508bb6e07afd447b1f9bc2..de3fae8990bb9a9ab2a093c11f191bd9341e1a30 100644 --- a/attendance-performance-manager-ui/admin/src/store.js +++ b/attendance-performance-manager-ui/admin/src/store.js @@ -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: { diff --git a/attendance-performance-manager-ui/admin/src/views/Home.vue b/attendance-performance-manager-ui/admin/src/views/Home.vue index a7d2bbd69be27050aea96389ed5e53344c9532f4..52902da6afb62065a6b8c3fef8fa0ff5ed1332c6 100644 --- a/attendance-performance-manager-ui/admin/src/views/Home.vue +++ b/attendance-performance-manager-ui/admin/src/views/Home.vue @@ -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{ diff --git a/attendance-performance-manager-ui/admin/src/views/Layout.vue b/attendance-performance-manager-ui/admin/src/views/Layout.vue index d6297493cb559eebdbbc237e0f59b5b82afd19ca..f14ee833b6d5af1259f4adbc99a854b9472c5352 100644 --- a/attendance-performance-manager-ui/admin/src/views/Layout.vue +++ b/attendance-performance-manager-ui/admin/src/views/Layout.vue @@ -1,13 +1,19 @@ <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); } diff --git a/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/dialogshow.vue index fec43856a86ded33b0663c2eb8e4ccd5720c32fa..9d0c3b86bbeb2ad1ce0c76f9283b3c2662f8759f 100644 --- a/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/dialogshow.vue +++ b/attendance-performance-manager-ui/admin/src/views/staff/adjust/log/dialogshow.vue @@ -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="璇疯緭鍏ュ憳宸D"/> + <Field label="鍛樺伐ID" prop="staffId" v-model="form.staffId" placeholder="璇疯緭鍏ュ憳宸D"/> <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" /> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/black/list.vue b/attendance-performance-manager-ui/admin/src/views/staff/black/list.vue index c9e4172293caaf477dc37ae72856b59e76421b6f..6f33e7aa8b800575a313e8343004a862f61947a4 100644 --- a/attendance-performance-manager-ui/admin/src/views/staff/black/list.vue +++ b/attendance-performance-manager-ui/admin/src/views/staff/black/list.vue @@ -1,9 +1,6 @@ <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() { }, diff --git a/attendance-performance-manager-ui/admin/src/views/staff/dialogshow.vue b/attendance-performance-manager-ui/admin/src/views/staff/dialogshow.vue index 38f499497bd2b7525971b7a39ae936ad063b0bb2..12017d10b4c2a5c5cbdf1c5d344f841a95964d4e 100644 --- a/attendance-performance-manager-ui/admin/src/views/staff/dialogshow.vue +++ b/attendance-performance-manager-ui/admin/src/views/staff/dialogshow.vue @@ -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="璇疯緭鍏ヨ亴浣岻D"/> - <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="璇疯緭鍏ヨ亴浣岻D"/> + <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> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/staff/drawershow.vue index 0239b0084d79443768d1c304ef5b06ef6fc6aa72..947988a35b26524a6ee1b3bd796e343855ddac75 100644 --- a/attendance-performance-manager-ui/admin/src/views/staff/drawershow.vue +++ b/attendance-performance-manager-ui/admin/src/views/staff/drawershow.vue @@ -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="璇疯緭鍏ヨ亴浣岻D"/> - <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="璇疯緭鍏ヨ亴浣岻D"/> + <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", diff --git a/attendance-performance-manager-ui/admin/src/views/staff/homepage.vue b/attendance-performance-manager-ui/admin/src/views/staff/homepage.vue new file mode 100644 index 0000000000000000000000000000000000000000..c2d45d05846d30f9e380abf70a4fb7365f1b0625 --- /dev/null +++ b/attendance-performance-manager-ui/admin/src/views/staff/homepage.vue @@ -0,0 +1,27 @@ +<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 diff --git a/attendance-performance-manager-ui/admin/src/views/staff/list.vue b/attendance-performance-manager-ui/admin/src/views/staff/list.vue index bf9112bfeba2b841fd2194e716acade8ffaf6b1f..cde550b3b0221ee5e97dbd4a56b8edfcf14ef725 100644 --- a/attendance-performance-manager-ui/admin/src/views/staff/list.vue +++ b/attendance-performance-manager-ui/admin/src/views/staff/list.vue @@ -1,42 +1,70 @@ <template> <div class="page"> - <el-row :gutter="20"> - <el-col :span="6" :xs="12" class="mytree"> - <el-card> + <div class="totalNum flex"> + <div class="item">鍦ㄨ亴鍛樺伐 <span class="num">66</span></div> + <div class="item flex"> + <div>鍏ㄨ亴 <span class="num">66</span></div> + <div>瀹炰範 <span class="num">66</span></div> + <div>鍏艰亴 <span class="num">66</span></div> + </div> - <el-scrollbar style="height: 100%"> - <el-tree - size="mini" - ref="siteTree" - :data="areaData" - id="el-tree" - node-key="id" - indent="4" - :props="treeProps" - :load="loadNode" - highlight-current - default-expand-all - :expand-on-click-node="false" - :render-content="renderContent" - @node-click="handleNodeClick" - > - </el-tree> - </el-scrollbar> - </el-card> - </el-col> + <div class="item flex"> + <div>璇曠敤 <span class="num">66</span></div> + <div>姝e紡 <span class="num">66</span></div> + <div>寰呯鑱� <span class="num">66</span></div> + </div> + </div> + <el-row :gutter="20"> + <el-col :span="6" :xs="12" class="mytree"> + <div class="titles">閫夋嫨閮ㄩ棬</div> + <el-scrollbar style="height: 100%"> + <el-tree + size="mini" + ref="siteTree" + :data="areaData" + id="el-tree" + node-key="id" + indent="4" + :props="treeProps" + :load="loadNode" + highlight-current + default-expand-all + :expand-on-click-node="false" + :render-content="renderContent" + @node-click="handleNodeClick" + > + </el-tree> + </el-scrollbar> + </el-col> + <el-col :span="18" :xs="12"> - <el-col :span="18" :xs="12"> - <el-card> - <el-row> - <LayoutTable notAdd - notDel :data="tableData" :config="tableConfig"> - </LayoutTable> - </el-row> - </el-card> - </el-col> - </el-row> - - <drawer-show ref="drawerform" @ok="getData" /> + <el-row> + <div class="controllList"> + <!-- <el-button type="primary">鏂板鍛樺伐</el-button> --> + <el-button type="primary">瀵煎嚭鏁版嵁</el-button> + <el-dropdown class="moreControll"> + <el-button type="primary"> + 鏇村鎿嶄綔<i class="el-icon-arrow-down el-icon--right"></i> + </el-button> + <el-dropdown-menu slot="dropdown"> + <el-dropdown-item>鍚屾鏁版嵁</el-dropdown-item> + <el-dropdown-item>瀵煎叆鑺卞悕鍐�</el-dropdown-item> + <el-dropdown-item>鍘嗗彶鑺卞悕鍐�</el-dropdown-item> + <el-dropdown-item>鑷畾涔夊垪琛ㄥ瓧娈�</el-dropdown-item> + </el-dropdown-menu> + </el-dropdown> + <span class="freshTime"> + <i class="el-icon-refresh"></i> + <span>涓婃鍚屾鏃堕棿锛�2023-04-09 09锛�00锛�00</span> + </span> + </div> + <LayoutTable notDel :data="tableData" :config="tableConfig"> + </LayoutTable> + </el-row> + </el-col> + </el-row> + <!-- <drawer-show ref="drawerform" @ok="getData" /> --> + <home-page v-if="isshowHome" :data="personData"></home-page> </div> </template> @@ -45,17 +73,19 @@ import drawerShow from "./drawershow"; import table from "@/assets/mixins/table"; import tree from "@/assets/mixins/tree"; + import homePage from './homepage.vue' export default { name: "StaffList", components: { - drawerShow -}, + drawerShow, + homePage + }, mixins: [table,tree], - created() { - this.$post("/dept/treeselect", {}).then(({ data }) => { - this.areaData = data.result; - }); - }, + created() { + this.$post("/dept/treeselect", {}).then(({ data }) => { + this.areaData = data.result + }) + }, methods: { /** 閲嶅啓鏂板鏂规硶 */ toAdd(row) { @@ -67,15 +97,21 @@ }, /** 閲嶅啓鏌ョ湅鏂规硶 */ toView(row) { - this.$refs.drawerform.view(row); + // this.$refs.drawerform.view(row); + // console.log(row) + this.personData = row + this.isshowHome = true }, - handleNodeClick(node) { - this.currentNode = node; - this.query = { deptId: node.id }; - this.getData(); - }, - + handleNodeClick(node) { + this.currentNode = node; + this.query = { deptId: node.id }; + this.getData(); + }, + // 鍒囨崲鏍囩椤� + handleClick(e){ + console.log(this.activeName) + } }, data() { return { @@ -87,58 +123,51 @@ label: "鍛樺伐濮撳悕", fuzzy: true }, - { - name: "politicalstatus", - type: "select", - label: "鏀挎不闈㈣矊 ", - fuzzy: true - }, - { - name: "staffType", - type: "select", - label: "鍛樺伐绫诲瀷", - fuzzy: true - }, - { - name: "status", - type: "select", - label: "鍛樺伐鐘舵€�", - fuzzy: true - }, + // { + // name: "politicalstatus", + // type: "select", + // label: "鏀挎不闈㈣矊 ", + // fuzzy: true + // }, + // { + // name: "staffType", + // type: "select", + // label: "鍛樺伐绫诲瀷", + // fuzzy: true + // }, + // { + // name: "status", + // type: "select", + // label: "鍛樺伐鐘舵€�", + // fuzzy: true + // }, ], columns: [ {type: "selection", width: 60}, {type: "index",label: "搴忓彿",width: 50}, - {label: "鍛樺伐濮撳悕", prop: "name"}, - - {label: "鎬у埆", prop: "gender",formatter: this.formatter}, - - {label: "鏀挎不闈㈣矊 ", prop: "politicalstatus",formatter: this.formatter}, - - {label: "鍛樺伐绫诲瀷", prop: "staffType",formatter: this.formatter}, - + {label: "宸ュ彿", prop: "workNum"}, + {label: "閮ㄩ棬", prop: "deptName"}, + {label: "鑱屼綅", prop: "positionName"}, + {label: "鍛樺伐绫诲瀷", prop: "staffType",formatter: this.formatterStatus}, {label: "鍛樺伐鐘舵€�", prop: "status",formatter: this.formatter}, - - {label: "鍏ヨ亴鏃堕棿", prop: "entryDate", formatter: this.formatterDate}, - - {label: "杞鏃堕棿", prop: "regularDate", formatter: this.formatterDate}, - - {label: "绂昏亴鏃堕棿", prop: "leaveDate", formatter: this.formatterDate}, - - {label: "鍒涘缓鐢ㄦ埛", prop: "createUserId", formatter: this.formatter}, + {label: "鏄惁鍦ㄦ斂鍔′腑蹇�", prop: "status",formatter: this.formatter},//鏈 + {label: "鎵嬫満鍙�", prop: "phoneNumber",formatter: this.formatter}, { label: "鎿嶄綔", width: 240, formatter: row => { return ( - <table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> - ); + <table-buttons noAdd noDel noEdit row={row} onView={this.toView} /> + ) } } ] - } - }; + }, + activeName:'first', + isshowHome:false, + personData:[] + } } }; </script> @@ -157,6 +186,34 @@ </style> <style lang="scss" scoped> +.totalNum{ + background: rgba(64, 158, 255,0.2); + padding: 15px; + border-left: 4px solid rgb(20, 134, 248); + color: rgb(100, 100, 100); + .item{ + padding: 0 10px; + border-right: 1px solid gray; + } + .item:last-child{ + border: none; + } + .num{ + color: #409EFF; + margin-left: 10px; + margin-right: 20px; + } +} +.controllList{ + margin-top: 20px; + .moreControll{ + margin-left: 20px; + } +} +.freshTime{ + color: #999; + margin-left: 20px; +} .cardTitle { font-size: 16px; color: rgb(20, 134, 248); @@ -165,6 +222,7 @@ padding-bottom: 2px; } .mytree ::v-deep { + padding: 10px; .el-tree--highlight-current ::v-deep .el-tree-node.is-checked @@ -237,4 +295,18 @@ width: 24px; } } +.titles{ + color: #409EFF; + font-size: 16px; + display: flex; + align-items: center; +} +.titles::before{ + content: ''; + width:6px; + height: 16px; + background-color: #409EFF; + display: inline-block; + margin-right: 10px; +} </style> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/view.vue b/attendance-performance-manager-ui/admin/src/views/staff/view.vue index 3bf9bb90c81e1eab38bf74830916f5ee11855207..06c45786d67d9f19f8391ea75fb5971e994cec1c 100644 --- a/attendance-performance-manager-ui/admin/src/views/staff/view.vue +++ b/attendance-performance-manager-ui/admin/src/views/staff/view.vue @@ -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"> diff --git a/attendance-performance-manager-ui/admin/src/views/system/menu/list.vue b/attendance-performance-manager-ui/admin/src/views/system/menu/list.vue index ae2911f0556230c45d07c22e0e65fbe709b32d58..842c6d2dcb65d496adab8123409bc3171b382cb1 100644 --- a/attendance-performance-manager-ui/admin/src/views/system/menu/list.vue +++ b/attendance-performance-manager-ui/admin/src/views/system/menu/list.vue @@ -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 { // 鎸塸arentId鎺掑簭鍒嗙粍 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} /> diff --git a/attendance-performance-manager-ui/admin/src/views/system/menu/show.vue b/attendance-performance-manager-ui/admin/src/views/system/menu/show.vue index 39625ed4b2eeb626b510477bf7ca32d020f94e7e..71c1f4759e1d66bd330dffcd6f6f3cdabe2c8d4f 100644 --- a/attendance-performance-manager-ui/admin/src/views/system/menu/show.vue +++ b/attendance-performance-manager-ui/admin/src/views/system/menu/show.vue @@ -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; } },