Commit 0c091c46 authored by 姬鋆屾's avatar 姬鋆屾

parent bc54dbb7
......@@ -10,6 +10,7 @@
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@chenfengyuan/vue-qrcode": "^1.0.2",
"@jiaminghi/data-view": "^2.10.0",
"@riophae/vue-treeselect": "0.4.0",
"@vue/babel-preset-app": "^4.5.13",
"@xunlei/vue-context-menu": "^1.0.2",
......@@ -40,12 +41,10 @@
"vuex": "3.6.0"
},
"devDependencies": {
"@vue/babel-plugin-transform-vue-jsx": "^1.4.0",
"@vue/cli-plugin-babel": "4.4.6",
"@vue/cli-plugin-eslint": "4.4.6",
"@vue/cli-service": "4.4.6",
"babel-eslint": "10.1.0",
"babel-plugin-jsx-v-model": "^2.0.3",
"chalk": "4.1.0",
"connect": "3.6.6",
"eslint": "7.15.0",
......@@ -1828,6 +1827,56 @@
"webpack": "^4.0.0"
}
},
"node_modules/@jiaminghi/bezier-curve": {
"version": "0.0.9",
"resolved": "https://registry.npmjs.org/@jiaminghi/bezier-curve/-/bezier-curve-0.0.9.tgz",
"integrity": "sha512-u9xJPOEl6Dri2E9FfmJoGxYQY7vYJkURNX04Vj64tdi535tPrpkuf9Sm0lNr3QTKdHQh0DdNRsaa62FLQNQEEw==",
"dependencies": {
"@babel/runtime": "^7.5.5"
}
},
"node_modules/@jiaminghi/c-render": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@jiaminghi/c-render/-/c-render-0.4.3.tgz",
"integrity": "sha512-FJfzj5hGj7MLqqqI2D7vEzHKbQ1Ynnn7PJKgzsjXaZpJzTqs2Yw5OSeZnm6l7Qj7jyPAP53lFvEQNH4o4j6s+Q==",
"dependencies": {
"@babel/runtime": "^7.5.5",
"@jiaminghi/bezier-curve": "*",
"@jiaminghi/color": "*",
"@jiaminghi/transition": "*"
}
},
"node_modules/@jiaminghi/charts": {
"version": "0.2.18",
"resolved": "https://registry.npmjs.org/@jiaminghi/charts/-/charts-0.2.18.tgz",
"integrity": "sha512-K+HXaOOeWG9OOY1VG6M4mBreeeIAPhb9X+khG651AbnwEwL6G2UtcAQ8GWCq6GzhczcLwwhIhuaHqRygwHC0sA==",
"dependencies": {
"@babel/runtime": "^7.5.5",
"@jiaminghi/c-render": "^0.4.3"
}
},
"node_modules/@jiaminghi/color": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@jiaminghi/color/-/color-1.1.3.tgz",
"integrity": "sha512-ZY3hdorgODk4OSTbxyXBPxAxHPIVf9rPlKJyK1C1db46a50J0reFKpAvfZG8zMG3lvM60IR7Qawgcu4ZDO3+Hg=="
},
"node_modules/@jiaminghi/data-view": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/@jiaminghi/data-view/-/data-view-2.10.0.tgz",
"integrity": "sha512-Cud2MTiMcqc5k2KWabR/svuVQmXHANqURo+yj40370/LdI/gyUJ6LG203hWXEnT1nMCeiv/SLVmxv3PXLScCeA==",
"dependencies": {
"@babel/runtime": "^7.5.5",
"@jiaminghi/charts": "*"
}
},
"node_modules/@jiaminghi/transition": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/@jiaminghi/transition/-/transition-1.1.11.tgz",
"integrity": "sha512-owBggipoHMikDHHDW5Gc7RZYlVuvxHADiU4bxfjBVkHDAmmck+fCkm46n2JzC3j33hWvP9nSCAeh37t6stgWeg==",
"dependencies": {
"@babel/runtime": "^7.5.5"
}
},
"node_modules/@jridgewell/gen-mapping": {
"version": "0.1.1",
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
......@@ -2211,6 +2260,8 @@
"version": "3.16.0",
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
......@@ -3492,17 +3543,6 @@
"object.assign": "^4.1.0"
}
},
"node_modules/babel-plugin-jsx-v-model": {
"version": "2.0.3",
"resolved": "https://registry.npmmirror.com/babel-plugin-jsx-v-model/-/babel-plugin-jsx-v-model-2.0.3.tgz",
"integrity": "sha512-SIx3Y3XxwGEz56Q1atwr5GaZsxJ2IRYmn5dl38LFkaTAvjnbNQxsZHO+ylJPsd+Hmv+ixJBYYFEekPBTHwiGfQ==",
"dev": true,
"dependencies": {
"babel-plugin-syntax-jsx": "^6.18.0",
"html-tags": "^2.0.0",
"svg-tags": "^1.0.0"
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
"version": "0.2.2",
"resolved": "https://registry.nlark.com/babel-plugin-polyfill-corejs2/download/babel-plugin-polyfill-corejs2-0.2.2.tgz?cache=0&sync_timestamp=1622024057197&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbabel-plugin-polyfill-corejs2%2Fdownload%2Fbabel-plugin-polyfill-corejs2-0.2.2.tgz",
......@@ -3542,12 +3582,6 @@
"@babel/core": "^7.0.0-0"
}
},
"node_modules/babel-plugin-syntax-jsx": {
"version": "6.18.0",
"resolved": "https://registry.npmmirror.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
"integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==",
"dev": true
},
"node_modules/babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.nlark.com/babel-runtime/download/babel-runtime-6.26.0.tgz?cache=0&sync_timestamp=1618911095190&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbabel-runtime%2Fdownload%2Fbabel-runtime-6.26.0.tgz",
......@@ -18877,6 +18911,56 @@
"postcss": "^7.0.0"
}
},
"@jiaminghi/bezier-curve": {
"version": "0.0.9",
"resolved": "https://registry.npmjs.org/@jiaminghi/bezier-curve/-/bezier-curve-0.0.9.tgz",
"integrity": "sha512-u9xJPOEl6Dri2E9FfmJoGxYQY7vYJkURNX04Vj64tdi535tPrpkuf9Sm0lNr3QTKdHQh0DdNRsaa62FLQNQEEw==",
"requires": {
"@babel/runtime": "^7.5.5"
}
},
"@jiaminghi/c-render": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@jiaminghi/c-render/-/c-render-0.4.3.tgz",
"integrity": "sha512-FJfzj5hGj7MLqqqI2D7vEzHKbQ1Ynnn7PJKgzsjXaZpJzTqs2Yw5OSeZnm6l7Qj7jyPAP53lFvEQNH4o4j6s+Q==",
"requires": {
"@babel/runtime": "^7.5.5",
"@jiaminghi/bezier-curve": "*",
"@jiaminghi/color": "*",
"@jiaminghi/transition": "*"
}
},
"@jiaminghi/charts": {
"version": "0.2.18",
"resolved": "https://registry.npmjs.org/@jiaminghi/charts/-/charts-0.2.18.tgz",
"integrity": "sha512-K+HXaOOeWG9OOY1VG6M4mBreeeIAPhb9X+khG651AbnwEwL6G2UtcAQ8GWCq6GzhczcLwwhIhuaHqRygwHC0sA==",
"requires": {
"@babel/runtime": "^7.5.5",
"@jiaminghi/c-render": "^0.4.3"
}
},
"@jiaminghi/color": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@jiaminghi/color/-/color-1.1.3.tgz",
"integrity": "sha512-ZY3hdorgODk4OSTbxyXBPxAxHPIVf9rPlKJyK1C1db46a50J0reFKpAvfZG8zMG3lvM60IR7Qawgcu4ZDO3+Hg=="
},
"@jiaminghi/data-view": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/@jiaminghi/data-view/-/data-view-2.10.0.tgz",
"integrity": "sha512-Cud2MTiMcqc5k2KWabR/svuVQmXHANqURo+yj40370/LdI/gyUJ6LG203hWXEnT1nMCeiv/SLVmxv3PXLScCeA==",
"requires": {
"@babel/runtime": "^7.5.5",
"@jiaminghi/charts": "*"
}
},
"@jiaminghi/transition": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/@jiaminghi/transition/-/transition-1.1.11.tgz",
"integrity": "sha512-owBggipoHMikDHHDW5Gc7RZYlVuvxHADiU4bxfjBVkHDAmmck+fCkm46n2JzC3j33hWvP9nSCAeh37t6stgWeg==",
"requires": {
"@babel/runtime": "^7.5.5"
}
},
"@jridgewell/gen-mapping": {
"version": "0.1.1",
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
......@@ -19144,7 +19228,6 @@
"resolved": "https://registry.nlark.com/@vue/babel-preset-app/download/@vue/babel-preset-app-4.5.13.tgz",
"integrity": "sha1-y0dTIeTHP38RDawppIwqnLgK/rY=",
"requires": {
"@babel/core": "^7.11.0",
"@babel/helper-compilation-targets": "^7.9.6",
"@babel/helper-module-imports": "^7.8.3",
"@babel/plugin-proposal-class-properties": "^7.8.3",
......@@ -19157,13 +19240,14 @@
"@vue/babel-plugin-jsx": "^1.0.3",
"@vue/babel-preset-jsx": "^1.2.4",
"babel-plugin-dynamic-import-node": "^2.3.3",
"core-js": "^3.6.5",
"core-js-compat": "^3.6.5",
"semver": "^6.1.0"
},
"dependencies": {
"core-js": {
"version": "3.16.0"
"version": "3.16.0",
"optional": true,
"peer": true
}
}
},
......@@ -20113,17 +20197,6 @@
"object.assign": "^4.1.0"
}
},
"babel-plugin-jsx-v-model": {
"version": "2.0.3",
"resolved": "https://registry.npmmirror.com/babel-plugin-jsx-v-model/-/babel-plugin-jsx-v-model-2.0.3.tgz",
"integrity": "sha512-SIx3Y3XxwGEz56Q1atwr5GaZsxJ2IRYmn5dl38LFkaTAvjnbNQxsZHO+ylJPsd+Hmv+ixJBYYFEekPBTHwiGfQ==",
"dev": true,
"requires": {
"babel-plugin-syntax-jsx": "^6.18.0",
"html-tags": "^2.0.0",
"svg-tags": "^1.0.0"
}
},
"babel-plugin-polyfill-corejs2": {
"version": "0.2.2",
"resolved": "https://registry.nlark.com/babel-plugin-polyfill-corejs2/download/babel-plugin-polyfill-corejs2-0.2.2.tgz?cache=0&sync_timestamp=1622024057197&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbabel-plugin-polyfill-corejs2%2Fdownload%2Fbabel-plugin-polyfill-corejs2-0.2.2.tgz",
......@@ -20151,12 +20224,6 @@
"@babel/helper-define-polyfill-provider": "^0.2.2"
}
},
"babel-plugin-syntax-jsx": {
"version": "6.18.0",
"resolved": "https://registry.npmmirror.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
"integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==",
"dev": true
},
"babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.nlark.com/babel-runtime/download/babel-runtime-6.26.0.tgz?cache=0&sync_timestamp=1618911095190&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbabel-runtime%2Fdownload%2Fbabel-runtime-6.26.0.tgz",
......@@ -12,6 +12,7 @@
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@chenfengyuan/vue-qrcode": "^1.0.2",
"@jiaminghi/data-view": "^2.10.0",
"@riophae/vue-treeselect": "0.4.0",
"@vue/babel-preset-app": "^4.5.13",
"@xunlei/vue-context-menu": "^1.0.2",
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -6,39 +6,47 @@
<div class="layout-menu flex flex-1">
<!-- logo -->
<div class="layout-logo flex">
<i class="el-icon-menu" @click='showMobileMenu=!showMobileMenu'> </i>
<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:20px;">&nbsp;&nbsp;&nbsp; 智慧政务绩效管理系统 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b>
<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'>
<span @click="RouterTo(item.path)" :class="{active:activePath === item.path}">
<i :class="'el-icon-'+item.icon"></i>
{{item.name}}
<li v-for="item in menu" :key="item.id">
<span
@click="RouterTo(item.path)"
:class="{ active: activePath === item.path }"
>
<i :class="'el-icon-' + item.icon"></i>
{{ item.name }}
</span>
</li>
</ul>
</div>
<div class="controllBar">
<el-badge :value="12" class="item">
<i class="el-icon-bell" style="font-size: 15px;margin-right: 10px" > 消息</i>
<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>
<i class="el-icon-s-home" style="font-size: 15px;margin-right: 10px">
首页</i
>
</div>
<div class="layout-profile">
<el-dropdown @command="handleCommand">
<span class="el-dropdown-link" style="color:white">
{{userData.currUserName}}
{{ userData.currUserName }}
<i class="el-icon-arrow-down el-icon&#45;&#45;right"></i>
</span>
<el-dropdown-menu slot="dropdown">
......@@ -46,15 +54,14 @@
<el-dropdown-item command="logout">退出登录</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
<!-- 一级菜单 -->
<ul class="mobile-menu-list flex flex-pack-justify" v-if='showMobileMenu'>
<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}}
<ul class="mobile-menu-list flex flex-pack-justify" v-if="showMobileMenu">
<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 }}
</span>
</li>
</ul>
......@@ -66,128 +73,135 @@ 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)
let arr = []
if(thirdArr.children.length === 0){
arr.push(
{
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);
let arr = [];
if (thirdArr.children.length === 0) {
arr.push({
children: [],
id: thirdArr.id,
name: thirdArr.name,
path: thirdArr.path
}
)
}else{
arr = thirdArr.children
path: thirdArr.path,
});
} else {
arr = thirdArr.children;
}
this.$store.commit('setCurrentThirdArr',arr)
this.$emit('changePath',path)//触发点击事件
this.$store.commit("setCurrentThirdArr", arr);
this.$emit("changePath", path); //触发点击事件
},
returnHome(){
this.$router.replace({path:'/'})
returnHome() {
this.$router.replace({ path: "/" });
},
handleCommand(key) {
if(key === 'update'){
this.$router.push('/login/updatePwd')
if (key === "update") {
this.$router.push("/login/updatePwd");
}
if(key === 'logout'){
this.logout()
if (key === "logout") {
this.logout();
}
},
// 退出登录
logout() {
this.$post('/login/logout').then(data=>{}).catch(error=>{}).then(()=>{
this.$message.success('已退出登录');
this.$store.commit('logout');
this.$router.replace('/login');
})
}
this.$post("/login/logout")
.then((data) => {})
.catch((error) => {})
.then(() => {
this.$message.success("已退出登录");
this.$store.commit("logout");
this.$router.replace("/login");
});
},
},
beforeDestroy() {
console.log("beforeDestroy");
},
mounted() {},
mounted() {
console.log(this.menu);
},
computed: {
group() {
const relativeGroup = this.$store.state.group;
if(relativeGroup) {
if (relativeGroup) {
return relativeGroup;
}
let groupArray = this.$route.path.split('/');
let groupArray = this.$route.path.split("/");
let group = this.$route.path;
let type = groupArray.pop();
if(['add', 'edit', 'view', 'new','importView','resetPwdView'].indexOf(type) > -1){
groupArray.push('list');
group = groupArray.join('/')
if (
["add", "edit", "view", "new", "importView", "resetPwdView"].indexOf(
type
) > -1
) {
groupArray.push("list");
group = groupArray.join("/");
}
return group;
},
relativeGroup() {
return this.$store.state.group
return this.$store.state.group;
},
flat() {
return this.userData.flat
return this.userData.flat;
},
menu() {
if(!this.headBar.children) {
return []
}else{
return this.headBar.children
if (!this.headBar.children) {
return [];
} else {
return this.headBar.children;
}
},
// 二级菜单数据
headBar() {
return this.$store.state.headBar;
},
userData(){
return this.$store.state.userData
userData() {
return this.$store.state.userData;
},
// 二级路径
activePath(){
return this.$store.state.CurrentSecondPath
}
activePath() {
return this.$store.state.CurrentSecondPath;
},
},
data() {
return {
showMobileMenu: false,
}
};
},
created(){
}
}
created() {},
};
</script>
<style lang="less">
.layout-header{
.mobile-menu-list{display: none}
.layout-menu-wrapper{
.layout-header {
.mobile-menu-list {
display: none;
}
.layout-menu-wrapper {
height: 72px;
line-height: 72px;
font-size: 16px;
color: #eee;
background: #1848c8;
.layout-logo{
.layout-logo {
height: 50px;
.el-icon-menu{display: none}
a{
.el-icon-menu {
display: none;
}
a {
margin: auto;
}
img{
img {
vertical-align: middle;
}
}
.menu-list{
li{
span{
.menu-list {
li {
span {
display: block;
padding: 0 16px;
height: 100%;
......@@ -195,20 +209,19 @@ export default {
cursor: pointer;
margin-right: 20px;
}
.active{
.active {
color: #fff;
list-style-type:none;
border-bottom:3px solid #fff;
list-style-type: none;
border-bottom: 3px solid #fff;
padding-bottom: 2px;
}
}
}
.layout-profile{
.layout-profile {
padding-right: 30px;
}
}
.controllBar{
.controllBar {
background-color: rgba(170, 170, 170, 0.4);
width: 120px;
height: 44px;
......@@ -220,23 +233,23 @@ export default {
margin-right: 15px;
cursor: pointer;
}
.layout-submenu-wrapper{
.layout-submenu-wrapper {
padding-left: 20px;
background: #fff;
height: 42px;
border-bottom: 1px solid #ededed;
.layout-title{
.layout-title {
font-size: 18px;
height: 40px;
line-height: 40px;
color: #333;
}
.layout-submenu{
.layout-submenu {
margin-left: 15px;
white-space: nowrap;
overflow: auto;
li{
a{
li {
a {
display: block;
padding: 0 10px;
height: 40px;
......@@ -244,7 +257,7 @@ export default {
font-size: 14px;
color: #666;
&.router-link-active,
&[active]{
&[active] {
color: #1890ff;
border-bottom: 2px solid #1890ff;
}
......@@ -254,46 +267,46 @@ export default {
}
}
@media screen and (max-width: 800px){
@media screen and (max-width: 800px) {
.layout-header {
.mobile-menu-list{
.mobile-menu-list {
display: flex;
background: #222333;
padding: 10px;
li{
span{
li {
span {
display: block;
padding: 0 12px;
height: 100%;
color: #eee;
cursor: pointer;
}
.active{
.active {
color: #1890ff;
}
}
}
.layout-submenu-wrapper{
.layout-submenu-wrapper {
padding-left: 0;
overflow: auto;
-webkit-overflow-scrolling: touch;
}
.layout-menu-wrapper {
width: 100%;
.layout-logo{
.layout-logo {
width: 40px;
.el-icon-menu{
.el-icon-menu {
margin: auto;
display: inline-block;
}
a{
a {
display: none;
}
}
.menu-list{
.menu-list {
display: none;
}
li{
li {
width: 100%;
}
}
......
......@@ -12,6 +12,10 @@ import Global from './assets/utils/global.js'
import VueClipboard from 'vue-clipboard2'
import VueAMap from 'vue-amap';
import * as echarts from 'echarts'
// 将自动注册所有组件为全局组件
import dataV from '@jiaminghi/data-view'
Vue.use(dataV)
Vue.prototype.$echarts = echarts;
Vue.config.productionTip = false
......
import Vue from 'vue'
import Router from 'vue-router'
import Store from './store'
import Layout from './views/Layout.vue'
import fileNotFound from './views/errors/fileNotFound.vue'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
NProgress.configure({ showSpinner: false })
import Vue from "vue";
import Router from "vue-router";
import Store from "./store";
import Layout from "./views/Layout.vue";
import fileNotFound from "./views/errors/fileNotFound.vue";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
NProgress.configure({ showSpinner: false });
Vue.use(Router);
const originalPush = VueRouter.prototype.push
const originalPush = VueRouter.prototype.push;
VueRouter.prototype.push = function push(location, onResolve, onReject) {
if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
return originalPush.call(this, location).catch(err => err)
}
if (onResolve || onReject)
return originalPush.call(this, location, onResolve, onReject);
return originalPush.call(this, location).catch((err) => err);
};
const router = new Router({
routes: [
builder('/authentication', 'login/authentication'),
builder('/login', 'login/login'),
builder('/sso', 'SSO'),
builder("/authentication", "login/authentication"),
builder("/login", "login/login"),
builder("/sso", "SSO"),
{
path: '/',
name: 'layout',
path: "/",
name: "layout",
component: Layout,
meta: {
requiresAuth: true
requiresAuth: true,
},
children: [
...restBuilder('oper/log', 'system/log'), // 系统管理-操作日志
...restBuilder('validcode', 'system/validcode'), // 接入管理-接入信息
...restBuilder('menu', 'system/menu'), // 系统管理--菜单管理
...restBuilder('resource', 'system/resource'), // 系统管理--资源管理
...restBuilder('role', 'system/role'), // 系统管理--角色管理
...restBuilder('user', 'system/user'), // 用户管理 -- 管理用户
...restBuilder('param', 'system/param'), // 系统管理--参数管理
...restBuilder('task', 'system/task'), // 系统管理--任务管理
...restBuilder("oper/log", "system/log"), // 系统管理-操作日志
...restBuilder("validcode", "system/validcode"), // 接入管理-接入信息
...restBuilder("menu", "system/menu"), // 系统管理--菜单管理
...restBuilder("resource", "system/resource"), // 系统管理--资源管理
...restBuilder("role", "system/role"), // 系统管理--角色管理
...restBuilder("user", "system/user"), // 用户管理 -- 管理用户
...restBuilder("param", "system/param"), // 系统管理--参数管理
...restBuilder("task", "system/task"), // 系统管理--任务管理
// 绩效负责人
...restBuilder('workman','workman'),
...restBuilder("workman", "workman"),
//部门
...restBuilder('dept', 'dept'),//部门
...restBuilder('staff', 'staff'),//花名册 员工信息
...restBuilder('staff/care', 'staff/care'),// 员工关怀信息
...restBuilder('care/template', 'care/template'),// 关怀问候信息
...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'),// 员工离职信息
...restBuilder('staff/contract', 'staff/contract'),// 员工合同信息
...restBuilder('attendance/record/hik', 'attendance/record/hik'),// 海康考勤
...restBuilder('attendance/record/error', 'attendance/record/error'),// 考勤打卡记录异常信息
...restBuilder('attendance/stat', 'attendance/stat'),// 考勤汇总信息
...restBuilder('attendance/staff/stat', 'attendance/staff/stat'),// 考勤人员汇总信息
...restBuilder('attendance/record', 'attendance/record'),// 考勤打卡记录信息
...restBuilder('attendance/record/detail', 'attendance/record/detail'),// 考勤打卡记录详细信息
...restBuilder('attendance/group', 'attendance/group'),// 考勤组信息
...restBuilder('attendance/class', 'attendance/class'),// 考勤班次信息
...restBuilder('attendance/leave/record', 'attendance/leave/record'),// 请假记录信息
...restBuilder('attendance/vacation/balance', 'attendance/vacation/balance'),// 员工假期余额信息
...restBuilder('staff/perform/stat', 'staff/perform/stat'),//员工分数统计
...restBuilder('dept/perform/stat', 'dept/perform/stat'),//部门绩效分数统计
...restBuilder('perform/perpose/staff/stat', 'perform/perpose/staff/stat'),//员工目标统计
...restBuilder('perform/perpose/dept/stat/stat', 'perform/perpose/dept/stat/stat'),//部门目标统计
...restBuilder('perform/perpose/staff', 'perform/perpose/staff'),//员工考核目标详细信息表
...restBuilder('perform/perpose/staff/stat', 'perform/perpose/staff/stat'),//员工考核目标详细信息表
...restBuilder('perform/perpose/dept', 'perform/perpose/dept'),//部门考核目标详细信息表
...restBuilder('perform/perpose/dept/stat', 'perform/perpose/dept/stat'),//部门考核目标详细信息表
...restBuilder('perform/perpose', 'perform/perpose'),//考核目标表
...restBuilder('window/owner', 'window/owner'),//窗口负责人表
...restBuilder('perform/staff/conf/detail', 'perform/staff/conf/detail'),//人员考核内容详细信息表
...restBuilder('perform/staff/conf', 'perform/staff/conf'),//人员自动考核信息表
...restBuilder('perform/dept/conf/detail', 'perform/dept/conf/detail'),//部门考核内容详细信息表
...restBuilder('perform/dept/conf', 'perform/dept/conf'),//部门自动考核信息表
...restBuilder('perform/rules/category', 'perform/rules/category'),//绩效规则分类信息表
...restBuilder('perform/rules', 'perform/rules'),//绩效规则信息表
...restBuilder('perform/rules/attend', 'perform/rules/attend'),//考勤绩效规则信息表
...restBuilder('perform/rules/review', 'perform/rules/review'),//评价绩效规则信息表
...restBuilder('perform/rules/gowork', 'perform/rules/gowork'),//办件绩效规则信息表
...restBuilder('perform/rules/effect', 'perform/rules/effect'),//效能绩效规则信息表
...restBuilder('perform/rules/other', 'perform/rules/other'),//其它绩效规则信息表
...restBuilder('perform/attend/record', 'perform/attend/record'),//考勤绩效记录信息
...restBuilder('perform/review/record', 'perform/review/record'),//评价绩效记录信息
...restBuilder('perform/complain/record', 'perform/complain/record'),//投诉绩效记录信息
...restBuilder('perform/gowork/record', 'perform/gowork/record'),//办件绩效记录信息
...restBuilder('perform/effect/record', 'perform/effect/record'),//效能绩效记录信息
...restBuilder('perform/other/record', 'perform/other/record'),//其它绩效记录信息
...restBuilder('check/attend/record', 'check/attend/record'),//考勤绩效核查信息
...restBuilder('check/review/record', 'check/review/record'),//评价绩效核查信息
...restBuilder('check/complain/record', 'check/complain/record'),//投诉绩效核查信息
...restBuilder('check/gowork/record', 'check/gowork/record'),//办件绩效核查信息
...restBuilder('check/effect/record', 'check/effect/record'),//效能绩效核查信息
...restBuilder('check/other/record', 'check/other/record'),//其它绩效核查信息
...restBuilder("dept", "dept"), //部门
...restBuilder("staff", "staff"), //花名册 员工信息
...restBuilder("staff/care", "staff/care"), // 员工关怀信息
...restBuilder("care/template", "care/template"), // 关怀问候信息
...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"), // 员工离职信息
...restBuilder("staff/contract", "staff/contract"), // 员工合同信息
...restBuilder("attendance/record/hik", "attendance/record/hik"), // 海康考勤
...restBuilder("attendance/record/error", "attendance/record/error"), // 考勤打卡记录异常信息
...restBuilder("attendance/stat", "attendance/stat"), // 考勤汇总信息
...restBuilder("attendance/staff/stat", "attendance/staff/stat"), // 考勤人员汇总信息
...restBuilder("attendance/record", "attendance/record"), // 考勤打卡记录信息
...restBuilder("attendance/record/detail", "attendance/record/detail"), // 考勤打卡记录详细信息
...restBuilder("attendance/group", "attendance/group"), // 考勤组信息
...restBuilder("attendance/class", "attendance/class"), // 考勤班次信息
...restBuilder("attendance/leave/record", "attendance/leave/record"), // 请假记录信息
...restBuilder(
"attendance/vacation/balance",
"attendance/vacation/balance"
), // 员工假期余额信息
...restBuilder("staff/perform/stat", "staff/perform/stat"), //员工分数统计
...restBuilder("dept/perform/stat", "dept/perform/stat"), //部门绩效分数统计
...restBuilder(
"perform/perpose/staff/stat",
"perform/perpose/staff/stat"
), //员工目标统计
...restBuilder(
"perform/perpose/dept/stat/stat",
"perform/perpose/dept/stat/stat"
), //部门目标统计
...restBuilder("perform/perpose/staff", "perform/perpose/staff"), //员工考核目标详细信息表
...restBuilder(
"perform/perpose/staff/stat",
"perform/perpose/staff/stat"
), //员工考核目标详细信息表
...restBuilder("perform/perpose/dept", "perform/perpose/dept"), //部门考核目标详细信息表
...restBuilder(
"perform/perpose/dept/stat",
"perform/perpose/dept/stat"
), //部门考核目标详细信息表
...restBuilder("perform/perpose", "perform/perpose"), //考核目标表
...restBuilder("window/owner", "window/owner"), //窗口负责人表
...restBuilder(
"perform/staff/conf/detail",
"perform/staff/conf/detail"
), //人员考核内容详细信息表
...restBuilder("perform/staff/conf", "perform/staff/conf"), //人员自动考核信息表
...restBuilder("perform/dept/conf/detail", "perform/dept/conf/detail"), //部门考核内容详细信息表
...restBuilder("perform/dept/conf", "perform/dept/conf"), //部门自动考核信息表
...restBuilder("perform/rules/category", "perform/rules/category"), //绩效规则分类信息表
...restBuilder("perform/rules", "perform/rules"), //绩效规则信息表
...restBuilder("perform/rules/attend", "perform/rules/attend"), //考勤绩效规则信息表
...restBuilder("perform/rules/review", "perform/rules/review"), //评价绩效规则信息表
...restBuilder("perform/rules/gowork", "perform/rules/gowork"), //办件绩效规则信息表
...restBuilder("perform/rules/effect", "perform/rules/effect"), //效能绩效规则信息表
...restBuilder("perform/rules/other", "perform/rules/other"), //其它绩效规则信息表
...restBuilder("perform/attend/record", "perform/attend/record"), //考勤绩效记录信息
...restBuilder("perform/review/record", "perform/review/record"), //评价绩效记录信息
...restBuilder("perform/complain/record", "perform/complain/record"), //投诉绩效记录信息
...restBuilder("perform/gowork/record", "perform/gowork/record"), //办件绩效记录信息
...restBuilder("perform/effect/record", "perform/effect/record"), //效能绩效记录信息
...restBuilder("perform/other/record", "perform/other/record"), //其它绩效记录信息
...restBuilder("check/attend/record", "check/attend/record"), //考勤绩效核查信息
...restBuilder("check/review/record", "check/review/record"), //评价绩效核查信息
...restBuilder("check/complain/record", "check/complain/record"), //投诉绩效核查信息
...restBuilder("check/gowork/record", "check/gowork/record"), //办件绩效核查信息
...restBuilder("check/effect/record", "check/effect/record"), //效能绩效核查信息
...restBuilder("check/other/record", "check/other/record"), //其它绩效核查信息
// 360评估
...restBuilder("homeCharts/record", "homeCharts/record"),
//以下为基础路由配置
builder('blank', 'blank'),
builder('', 'Home'),
builder('index', 'Home'),
builder('login/updatePwd', 'login/updatePwd'),
builder('403', 'errors/403'),
builder('*', 'errors/404'),
]
builder("blank", "blank"),
builder("", "Home"),
builder("index", "Home"),
builder("login/updatePwd", "login/updatePwd"),
builder("403", "errors/403"),
builder("*", "errors/404"),
],
},
]
})
],
});
/**
* rest路由生成器
......@@ -147,61 +160,66 @@ function restBuilder(path, component = path) {
function builder(path, component = path, requiresAuth = false) {
return {
path: path,
name: path || 'homepage',
name: path || "homepage",
component: getComponent(component),
meta: {
requiresAuth: requiresAuth
requiresAuth: requiresAuth,
},
}
};
}
function getComponent(fileName) {
try {
return require('./views/' + fileName).default
return require("./views/" + fileName).default;
} catch (error) {
return fileNotFound;
}
}
//检查是否跳转到sso地址
function ssoCheck(to, from, next) {
let redirect = (to.path === '/login/updatePwd') ? '/#/updatePwd' : ''
redirect = (redirect === '' && to.path === '/login') ? (location.protocol + '//' + location.host + '/#' + from.fullPath) : redirect
if (redirect != '') {
next(false)
window.location.href = '//' + location.host + '/m/login/logout?redirect=' + encodeURIComponent(redirect)
let redirect = to.path === "/login/updatePwd" ? "/#/updatePwd" : "";
redirect =
redirect === "" && to.path === "/login"
? location.protocol + "//" + location.host + "/#" + from.fullPath
: redirect;
if (redirect != "") {
next(false);
window.location.href =
"//" +
location.host +
"/m/login/logout?redirect=" +
encodeURIComponent(redirect);
return true;
}
return false;
}
router.afterEach(() => {
document.body.scrollTop = 0
document.documentElement.scrollTop = 0
NProgress.done()
})
document.body.scrollTop = 0;
document.documentElement.scrollTop = 0;
NProgress.done();
});
// 路由鉴权
router.beforeEach((to, from, next) => {
// if (ssoCheck(to, from, next)) { //sso鉴权检查
// return
// }
NProgress.start()
if (to.matched.some(record => record.meta.requiresAuth)) {
NProgress.start();
if (to.matched.some((record) => record.meta.requiresAuth)) {
if (Store.state.isLogin) {
next();
} else {
next({
path: '/authentication',
path: "/authentication",
query: {
redirect: to.fullPath
}
})
redirect: to.fullPath,
},
});
}
} else {
next();
}
})
});
export default router;
<template>
<div class="page">
<div class="left">
<div class="left_top">
<div class="title">
部门绩效总分排名TOP10
</div>
<dv-scroll-ranking-board
:config="config"
style="width:100%;height:93%"
/>
</div>
<div class="left_mid"></div>
<div class="left_down"></div>
</div>
<div class="mid">
<div class="mid_top">
<div class="top_box one">
<div class="title">今年分值情况</div>
<div class="mid_content">
<div class="content_top">
<p class="content_text">
<span class="txt">初始扣分</span
><span class="txt_num">9856241</span>
</p>
<p class="content_text">
<span class="txt">核查扣分</span
><span class="txt_num">9856241</span>
<span class="txt_small">占比:87.21%</span>
</p>
<p class="content_text">
<span class="txt">申诉分值</span
><span class="txt_num">9856241</span>
<span class="txt_small">占比:87.21%</span>
</p>
<p class="content_text">
<span class="txt">累计扣分</span
><span class="txt_num">9856241</span>
</p>
</div>
<div class="content_down">
<div class="down_left">
<div class="num">+65.32%</div>
<p class="down_text">环比增长率</p>
</div>
<div class="down_right">
<div class="num">+65.32%</div>
<p class="down_text">同比增长率</p>
</div>
</div>
</div>
</div>
<div class="top_box two">
<div class="title">本月分值情况</div>
<div class="mid_content">
<div class="content_top">
<p class="content_text">
<span class="txt">初始扣分</span
><span class="txt_num">9856241</span>
</p>
<p class="content_text">
<span class="txt">核查扣分</span
><span class="txt_num">9856241</span>
<span class="txt_small">占比:87.21%</span>
</p>
<p class="content_text">
<span class="txt">申诉分值</span
><span class="txt_num">9856241</span>
<span class="txt_small">占比:87.21%</span>
</p>
<p class="content_text">
<span class="txt">累计扣分</span
><span class="txt_num">9856241</span>
</p>
</div>
<div class="content_down">
<div class="down_left">
<div class="num">+65.32%</div>
<p class="down_text">环比增长率</p>
</div>
<div class="down_right">
<div class="num">+65.32%</div>
<p class="down_text">同比增长率</p>
</div>
</div>
</div>
</div>
<div class="top_box three">
<div class="title">今日分值情况</div>
<div class="mid_content">
<div class="content_top">
<p class="content_text">
<span class="txt">初始扣分</span
><span class="txt_num">9856241</span>
</p>
<p class="content_text">
<span class="txt">核查扣分</span
><span class="txt_num">9856241</span>
<span class="txt_small">占比:87.21%</span>
</p>
<p class="content_text">
<span class="txt">申诉分值</span
><span class="txt_num">9856241</span>
<span class="txt_small">占比:87.21%</span>
</p>
<p class="content_text">
<span class="txt">累计扣分</span
><span class="txt_num">9856241</span>
</p>
</div>
<div class="content_down">
<div class="down_left">
<div class="num">+65.32%</div>
<p class="down_text">环比增长率</p>
</div>
<div class="down_right">
<div class="num">+65.32%</div>
<p class="down_text">同比增长率</p>
</div>
</div>
</div>
</div>
</div>
<div class="mid_down">
<div class="down_content">
<img class="content_title" src="../../../assets/images/title.png" />
<div style="margin: 20px 0;">
<el-radio-group v-model="radio1">
<el-radio-button label="1">部门评估</el-radio-button>
<el-radio-button label="2">个人评估</el-radio-button>
</el-radio-group>
</div>
<div class="form">
<el-form ref="form" :model="form" label-width="100px">
<el-form-item label="请选择部门:">
<el-select
v-model="form.region"
placeholder="请选择部门"
style="width: 100%;"
>
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="请选择时间:">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="form.date1"
style="width: 100%;"
></el-date-picker>
</el-form-item>
<el-form-item label="请选择类型:" style="text-align: left;">
<el-radio-group v-model="form.resource">
<el-radio label="0">按年</el-radio>
<el-radio label="1">按月</el-radio>
<el-radio label="2">按天</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@click="onSubmit"
style="margin-top: 20px;transform: translateX(-50%);"
>立即创建</el-button
>
</el-form-item>
</el-form>
</div>
</div>
</div>
</div>
<div class="right">
<div class="right_top">
<div class="title">
部门绩效总分排名TOP10
</div>
<dv-scroll-ranking-board
:config="config"
style="width:100%;height:93%"
/>
</div>
<div class="right_mid"></div>
<div class="right_down"></div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
radio1: "",
form: {
date1: "",
type: [],
resource: "",
},
config: {
data: [
{
name: "周口",
value: 55,
},
{
name: "南阳",
value: 120,
},
{
name: "西峡",
value: 78,
},
{
name: "驻马店",
value: 66,
},
{
name: "新乡",
value: 80,
},
{
name: "信阳",
value: 45,
},
{
name: "漯河",
value: 29,
},
],
},
};
},
mounted() {},
methods: {},
};
</script>
<style lang="less" scoped>
.page {
width: 100%;
height: 100%;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
overflow: hidden;
background: unset;
font-family: "微软雅黑 Bold", "微软雅黑 Regular", "微软雅黑", sans-serif;
.left,
.mid,
.right {
width: 24%;
height: 100%;
display: flex;
flex-direction: column;
}
.mid {
flex: 1;
justify-content: space-between;
.mid_top,
.mid_down {
width: 100%;
}
.mid_top {
padding: 0 10px;
height: 40%;
display: flex;
justify-content: space-around;
.top_box {
width: 31%;
height: 100%;
border-width: 2px;
padding: 12px;
border-style: solid;
border-color: rgba(255, 255, 255, 1);
border-radius: 8px;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
.title {
font-weight: 700;
font-style: normal;
font-size: 14px;
}
.mid_content {
width: 100%;
height: 100%;
color: #fff;
overflow: hidden;
.content_top {
width: 100%;
height: 70%;
display: flex;
justify-content: space-evenly;
flex-direction: column;
border-bottom: 2px solid rgb(240, 240, 240);
.content_text {
position: relative;
margin-bottom: 5px;
font-size: 14px;
.txt {
display: inline-block;
width: 30%;
}
.txt_num {
display: inline-block;
width: 70%;
text-align: right;
font-weight: 600;
}
.txt_small {
position: absolute;
right: 0;
top: 20px;
font-size: 12px;
}
}
}
.content_down {
width: 100%;
height: auto;
display: flex;
justify-content: space-between;
padding: 10px 0;
.down_left,
.down_right {
padding: 8px 0;
width: 50%;
height: 100%;
text-align: center;
.down_text {
font-size: 12px;
}
.num {
font-weight: 700;
font-style: normal;
font-size: 18px;
color: #ffffff;
}
}
.down_left {
border-right: 2px solid rgb(240, 240, 240);
}
}
}
}
.one {
background: linear-gradient(
180deg,
rgba(241, 189, 76, 1) 0%,
rgba(237, 133, 77, 1) 100%
);
.title {
color: #7d2d00;
}
}
.two {
background: linear-gradient(
180deg,
rgba(96, 155, 248, 1) 0%,
rgba(102, 135, 244, 1) 100%
);
.title {
color: #001c80;
}
}
.three {
background: linear-gradient(
180deg,
rgba(76, 201, 245, 1) 0%,
rgba(19, 149, 235, 1) 100%
);
.title {
color: #004679;
}
}
}
.mid_down {
width: 96%;
height: 58%;
border-radius: 8px;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
margin: 0 auto;
background: url(../../../assets/images/u10938.svg) no-repeat;
background-size: cover;
overflow: hidden;
.down_content {
width: 100%;
height: 100%;
text-align: center;
padding: 40px 30px 10px 30px;
.form {
width: 70%;
margin: 0 auto;
}
}
}
}
.left_top,
.left_mid,
.left_down,
.right_top,
.right_mid,
.right_down {
width: 100%;
height: 33%;
background: #fff;
border-radius: 8px;
padding: 10px;
.title {
font-weight: 600;
margin-bottom: 5px;
}
/deep/.info-name,
/deep/.ranking-value {
color: #000;
}
}
.left_mid,
.right_mid {
width: 100%;
height: 30%;
margin: 15px 0;
}
}
</style>
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<LayoutTable :data="tableData" :config="tableConfig"> </LayoutTable>
<drawer-show ref="drawerform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "PerformStaffConfList",
components: {
drawerShow
},
mixins: [table],
created() {
drawerShow,
},
mixins: [table],
created() {},
methods: {
/** 重写新增方法 */
toAdd(row) {
......@@ -33,47 +30,79 @@
toView(row) {
this.$refs.drawerform.view(row);
},
},
data() {
return {
config: {
isshowTabPane:true,
search: [
],
isshowTabPane: true,
search: [],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{label: "人员ids", prop: "staffIds"},
{ label: "人员ids", prop: "staffIds" },
{label: "人员名称n", prop: "staffNames"},
{ label: "人员名称n", prop: "staffNames" },
{label: "考核人总数", prop: "staffCount",formatter: this.formatter},
{
label: "考核人总数",
prop: "staffCount",
formatter: this.formatter,
},
{label: "考勤绩效指标数量", prop: "attendCount",formatter: this.formatter},
{
label: "考勤绩效指标数量",
prop: "attendCount",
formatter: this.formatter,
},
{label: "评价绩效指标数量", prop: "assessCount",formatter: this.formatter},
{
label: "评价绩效指标数量",
prop: "assessCount",
formatter: this.formatter,
},
{label: "办件绩效指标数量", prop: "workCount",formatter: this.formatter},
{
label: "办件绩效指标数量",
prop: "workCount",
formatter: this.formatter,
},
{label: "效能绩效指标数量", prop: "effectCount",formatter: this.formatter},
{
label: "效能绩效指标数量",
prop: "effectCount",
formatter: this.formatter,
},
{label: "其它绩效指标数量", prop: "otherCount",formatter: this.formatter},
{
label: "其它绩效指标数量",
prop: "otherCount",
formatter: this.formatter,
},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{
label: "创建用户",
prop: "createUserId",
formatter: this.formatter,
},
{
label: "操作",
width: 240,
formatter: row => {
formatter: (row) => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
<table-buttons
noAdd
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
}
}
]
}
};
}
},
},
],
},
};
},
};
</script>
......@@ -17,7 +17,7 @@ module.exports = {
hot: true,//自动保存
proxy: {
'/attendance': {
target: 'http://127.0.0.1:17500',
target: 'http://192.168.0.98:11039',
changeOrigin: true,
secure: false,
cookieDomainRewrite: 'localhost',
......
......@@ -22,7 +22,7 @@
"resolved" "https://registry.nlark.com/@babel/compat-data/download/@babel/compat-data-7.14.9.tgz?cache=0&sync_timestamp=1627804534988&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fcompat-data%2Fdownload%2F%40babel%2Fcompat-data-7.14.9.tgz"
"version" "7.14.9"
"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0", "@babel/core@^7.9.6":
"@babel/core@*", "@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0", "@babel/core@^7.9.6":
"integrity" "sha1-IM33yEtdhtg/rIcQqLxgWnuj8BA="
"resolved" "https://registry.nlark.com/@babel/core/download/@babel/core-7.14.8.tgz"
"version" "7.14.8"
......@@ -872,7 +872,7 @@
"@babel/types" "^7.4.4"
"esutils" "^2.0.2"
"@babel/runtime@^7.11.0", "@babel/runtime@^7.8.4":
"@babel/runtime@^7.11.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
"integrity" "sha1-cRmlb0IQGIUmlCkLn5FICXORtEY="
"resolved" "https://registry.nlark.com/@babel/runtime/download/@babel/runtime-7.14.8.tgz"
"version" "7.14.8"
......@@ -982,6 +982,51 @@
"cssnano-preset-default" "^4.0.0"
"postcss" "^7.0.0"
"@jiaminghi/bezier-curve@*":
"integrity" "sha512-u9xJPOEl6Dri2E9FfmJoGxYQY7vYJkURNX04Vj64tdi535tPrpkuf9Sm0lNr3QTKdHQh0DdNRsaa62FLQNQEEw=="
"resolved" "https://registry.npmjs.org/@jiaminghi/bezier-curve/-/bezier-curve-0.0.9.tgz"
"version" "0.0.9"
dependencies:
"@babel/runtime" "^7.5.5"
"@jiaminghi/c-render@^0.4.3":
"integrity" "sha512-FJfzj5hGj7MLqqqI2D7vEzHKbQ1Ynnn7PJKgzsjXaZpJzTqs2Yw5OSeZnm6l7Qj7jyPAP53lFvEQNH4o4j6s+Q=="
"resolved" "https://registry.npmjs.org/@jiaminghi/c-render/-/c-render-0.4.3.tgz"
"version" "0.4.3"
dependencies:
"@babel/runtime" "^7.5.5"
"@jiaminghi/bezier-curve" "*"
"@jiaminghi/color" "*"
"@jiaminghi/transition" "*"
"@jiaminghi/charts@*":
"integrity" "sha512-K+HXaOOeWG9OOY1VG6M4mBreeeIAPhb9X+khG651AbnwEwL6G2UtcAQ8GWCq6GzhczcLwwhIhuaHqRygwHC0sA=="
"resolved" "https://registry.npmjs.org/@jiaminghi/charts/-/charts-0.2.18.tgz"
"version" "0.2.18"
dependencies:
"@babel/runtime" "^7.5.5"
"@jiaminghi/c-render" "^0.4.3"
"@jiaminghi/color@*":
"integrity" "sha512-ZY3hdorgODk4OSTbxyXBPxAxHPIVf9rPlKJyK1C1db46a50J0reFKpAvfZG8zMG3lvM60IR7Qawgcu4ZDO3+Hg=="
"resolved" "https://registry.npmjs.org/@jiaminghi/color/-/color-1.1.3.tgz"
"version" "1.1.3"
"@jiaminghi/data-view@^2.10.0":
"integrity" "sha512-Cud2MTiMcqc5k2KWabR/svuVQmXHANqURo+yj40370/LdI/gyUJ6LG203hWXEnT1nMCeiv/SLVmxv3PXLScCeA=="
"resolved" "https://registry.npmjs.org/@jiaminghi/data-view/-/data-view-2.10.0.tgz"
"version" "2.10.0"
dependencies:
"@babel/runtime" "^7.5.5"
"@jiaminghi/charts" "*"
"@jiaminghi/transition@*":
"integrity" "sha512-owBggipoHMikDHHDW5Gc7RZYlVuvxHADiU4bxfjBVkHDAmmck+fCkm46n2JzC3j33hWvP9nSCAeh37t6stgWeg=="
"resolved" "https://registry.npmjs.org/@jiaminghi/transition/-/transition-1.1.11.tgz"
"version" "1.1.11"
dependencies:
"@babel/runtime" "^7.5.5"
"@jridgewell/gen-mapping@^0.1.0":
"integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w=="
"resolved" "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz"
......@@ -1889,15 +1934,6 @@
dependencies:
"object.assign" "^4.1.0"
"babel-plugin-jsx-v-model@^2.0.3":
"integrity" "sha512-SIx3Y3XxwGEz56Q1atwr5GaZsxJ2IRYmn5dl38LFkaTAvjnbNQxsZHO+ylJPsd+Hmv+ixJBYYFEekPBTHwiGfQ=="
"resolved" "https://registry.npmmirror.com/babel-plugin-jsx-v-model/-/babel-plugin-jsx-v-model-2.0.3.tgz"
"version" "2.0.3"
dependencies:
"babel-plugin-syntax-jsx" "^6.18.0"
"html-tags" "^2.0.0"
"svg-tags" "^1.0.0"
"babel-plugin-polyfill-corejs2@^0.2.2":
"integrity" "sha1-6RJHheb9lPlLYYp5VOVpMFO/Uyc="
"resolved" "https://registry.nlark.com/babel-plugin-polyfill-corejs2/download/babel-plugin-polyfill-corejs2-0.2.2.tgz?cache=0&sync_timestamp=1622024057197&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbabel-plugin-polyfill-corejs2%2Fdownload%2Fbabel-plugin-polyfill-corejs2-0.2.2.tgz"
......@@ -1922,11 +1958,6 @@
dependencies:
"@babel/helper-define-polyfill-provider" "^0.2.2"
"babel-plugin-syntax-jsx@^6.18.0":
"integrity" "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw=="
"resolved" "https://registry.npmmirror.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz"
"version" "6.18.0"
"babel-runtime@6.x":
"integrity" "sha1-llxwWGaOgrVde/4E/yM3vItWR/4="
"resolved" "https://registry.nlark.com/babel-runtime/download/babel-runtime-6.26.0.tgz?cache=0&sync_timestamp=1618911095190&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbabel-runtime%2Fdownload%2Fbabel-runtime-6.26.0.tgz"
......@@ -2951,7 +2982,7 @@
"resolved" "https://registry.nlark.com/core-js/download/core-js-2.6.12.tgz"
"version" "2.6.12"
"core-js@^3.6.5":
"core-js@^3":
"version" "3.16.0"
"core-js@3.8.1":
......
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