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

parent bc54dbb7
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
"dependencies": { "dependencies": {
"@ampproject/remapping": "^2.2.0", "@ampproject/remapping": "^2.2.0",
"@chenfengyuan/vue-qrcode": "^1.0.2", "@chenfengyuan/vue-qrcode": "^1.0.2",
"@jiaminghi/data-view": "^2.10.0",
"@riophae/vue-treeselect": "0.4.0", "@riophae/vue-treeselect": "0.4.0",
"@vue/babel-preset-app": "^4.5.13", "@vue/babel-preset-app": "^4.5.13",
"@xunlei/vue-context-menu": "^1.0.2", "@xunlei/vue-context-menu": "^1.0.2",
...@@ -40,12 +41,10 @@ ...@@ -40,12 +41,10 @@
"vuex": "3.6.0" "vuex": "3.6.0"
}, },
"devDependencies": { "devDependencies": {
"@vue/babel-plugin-transform-vue-jsx": "^1.4.0",
"@vue/cli-plugin-babel": "4.4.6", "@vue/cli-plugin-babel": "4.4.6",
"@vue/cli-plugin-eslint": "4.4.6", "@vue/cli-plugin-eslint": "4.4.6",
"@vue/cli-service": "4.4.6", "@vue/cli-service": "4.4.6",
"babel-eslint": "10.1.0", "babel-eslint": "10.1.0",
"babel-plugin-jsx-v-model": "^2.0.3",
"chalk": "4.1.0", "chalk": "4.1.0",
"connect": "3.6.6", "connect": "3.6.6",
"eslint": "7.15.0", "eslint": "7.15.0",
...@@ -1828,6 +1827,56 @@ ...@@ -1828,6 +1827,56 @@
"webpack": "^4.0.0" "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": { "node_modules/@jridgewell/gen-mapping": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
...@@ -2211,6 +2260,8 @@ ...@@ -2211,6 +2260,8 @@
"version": "3.16.0", "version": "3.16.0",
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"optional": true,
"peer": true,
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/core-js" "url": "https://opencollective.com/core-js"
...@@ -3492,17 +3543,6 @@ ...@@ -3492,17 +3543,6 @@
"object.assign": "^4.1.0" "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": { "node_modules/babel-plugin-polyfill-corejs2": {
"version": "0.2.2", "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", "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 @@ ...@@ -3542,12 +3582,6 @@
"@babel/core": "^7.0.0-0" "@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": { "node_modules/babel-runtime": {
"version": "6.26.0", "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", "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 @@ ...@@ -18877,6 +18911,56 @@
"postcss": "^7.0.0" "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": { "@jridgewell/gen-mapping": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
...@@ -19144,7 +19228,6 @@ ...@@ -19144,7 +19228,6 @@
"resolved": "https://registry.nlark.com/@vue/babel-preset-app/download/@vue/babel-preset-app-4.5.13.tgz", "resolved": "https://registry.nlark.com/@vue/babel-preset-app/download/@vue/babel-preset-app-4.5.13.tgz",
"integrity": "sha1-y0dTIeTHP38RDawppIwqnLgK/rY=", "integrity": "sha1-y0dTIeTHP38RDawppIwqnLgK/rY=",
"requires": { "requires": {
"@babel/core": "^7.11.0",
"@babel/helper-compilation-targets": "^7.9.6", "@babel/helper-compilation-targets": "^7.9.6",
"@babel/helper-module-imports": "^7.8.3", "@babel/helper-module-imports": "^7.8.3",
"@babel/plugin-proposal-class-properties": "^7.8.3", "@babel/plugin-proposal-class-properties": "^7.8.3",
...@@ -19157,13 +19240,14 @@ ...@@ -19157,13 +19240,14 @@
"@vue/babel-plugin-jsx": "^1.0.3", "@vue/babel-plugin-jsx": "^1.0.3",
"@vue/babel-preset-jsx": "^1.2.4", "@vue/babel-preset-jsx": "^1.2.4",
"babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-dynamic-import-node": "^2.3.3",
"core-js": "^3.6.5",
"core-js-compat": "^3.6.5", "core-js-compat": "^3.6.5",
"semver": "^6.1.0" "semver": "^6.1.0"
}, },
"dependencies": { "dependencies": {
"core-js": { "core-js": {
"version": "3.16.0" "version": "3.16.0",
"optional": true,
"peer": true
} }
} }
}, },
...@@ -20113,17 +20197,6 @@ ...@@ -20113,17 +20197,6 @@
"object.assign": "^4.1.0" "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": { "babel-plugin-polyfill-corejs2": {
"version": "0.2.2", "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", "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 @@ ...@@ -20151,12 +20224,6 @@
"@babel/helper-define-polyfill-provider": "^0.2.2" "@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": { "babel-runtime": {
"version": "6.26.0", "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", "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 @@ ...@@ -12,6 +12,7 @@
"dependencies": { "dependencies": {
"@ampproject/remapping": "^2.2.0", "@ampproject/remapping": "^2.2.0",
"@chenfengyuan/vue-qrcode": "^1.0.2", "@chenfengyuan/vue-qrcode": "^1.0.2",
"@jiaminghi/data-view": "^2.10.0",
"@riophae/vue-treeselect": "0.4.0", "@riophae/vue-treeselect": "0.4.0",
"@vue/babel-preset-app": "^4.5.13", "@vue/babel-preset-app": "^4.5.13",
"@xunlei/vue-context-menu": "^1.0.2", "@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 @@ ...@@ -6,39 +6,47 @@
<div class="layout-menu flex flex-1"> <div class="layout-menu flex flex-1">
<!-- logo --> <!-- logo -->
<div class="layout-logo flex"> <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="/"> <router-link to="/">
<!-- <img src="../assets/images/logo.png" style="margin-bottom:5px" height="40" alt=""> --> <!-- <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> </router-link>
</div> </div>
<!-- 一级菜单 --> <!-- 一级菜单 -->
<ul class="menu-list flex"> <ul class="menu-list flex">
<li v-for='item in menu' :key='item.id'> <li v-for="item in menu" :key="item.id">
<span @click="RouterTo(item.path)" :class="{active:activePath === item.path}"> <span
<i :class="'el-icon-'+item.icon"></i> @click="RouterTo(item.path)"
{{item.name}} :class="{ active: activePath === item.path }"
>
<i :class="'el-icon-' + item.icon"></i>
{{ item.name }}
</span> </span>
</li> </li>
</ul> </ul>
</div> </div>
<div class="controllBar"> <div class="controllBar">
<el-badge :value="12" class="item"> <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> </el-badge>
</div> </div>
<div class="controllBar" @click="returnHome"> <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>
<div class="layout-profile"> <div class="layout-profile">
<el-dropdown @command="handleCommand"> <el-dropdown @command="handleCommand">
<span class="el-dropdown-link" style="color:white"> <span class="el-dropdown-link" style="color:white">
{{userData.currUserName}} {{ userData.currUserName }}
<i class="el-icon-arrow-down el-icon&#45;&#45;right"></i> <i class="el-icon-arrow-down el-icon&#45;&#45;right"></i>
</span> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
...@@ -46,15 +54,14 @@ ...@@ -46,15 +54,14 @@
<el-dropdown-item command="logout">退出登录</el-dropdown-item> <el-dropdown-item command="logout">退出登录</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</div> </div>
</div> </div>
<!-- 一级菜单 --> <!-- 一级菜单 -->
<ul class="mobile-menu-list flex flex-pack-justify" v-if='showMobileMenu'> <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)"> <li v-for="item in menu" :key="item.id" @click="RouterTo(item.path)">
<span :class="{active:activePath === item.path}"> <span :class="{ active: activePath === item.path }">
<i :class="'el-icon-'+item.icon"></i> <i :class="'el-icon-' + item.icon"></i>
{{item.name}} {{ item.name }}
</span> </span>
</li> </li>
</ul> </ul>
...@@ -66,128 +73,135 @@ export default { ...@@ -66,128 +73,135 @@ export default {
name: "Header", name: "Header",
methods: { methods: {
// 导航栏路由跳转 // 导航栏路由跳转
RouterTo(path){ RouterTo(path) {
window.sessionStorage.CurrentSecondPath = path window.sessionStorage.CurrentSecondPath = path;
this.$store.commit('setCurrentSecondPath',path) this.$store.commit("setCurrentSecondPath", path);
this.$store.commit('setThirdPath',path) this.$store.commit("setThirdPath", path);
this.$router.push({path}) this.$router.push({ path });
let thirdArr = this.headBar.children.find(item => item.path === path) let thirdArr = this.headBar.children.find((item) => item.path === path);
let arr = [] let arr = [];
if(thirdArr.children.length === 0){ if (thirdArr.children.length === 0) {
arr.push( arr.push({
{
children: [], children: [],
id: thirdArr.id, id: thirdArr.id,
name: thirdArr.name, name: thirdArr.name,
path: thirdArr.path path: thirdArr.path,
} });
) } else {
}else{ arr = thirdArr.children;
arr = thirdArr.children
} }
this.$store.commit('setCurrentThirdArr',arr) this.$store.commit("setCurrentThirdArr", arr);
this.$emit('changePath',path)//触发点击事件 this.$emit("changePath", path); //触发点击事件
}, },
returnHome(){ returnHome() {
this.$router.replace({path:'/'}) this.$router.replace({ path: "/" });
}, },
handleCommand(key) { handleCommand(key) {
if(key === 'update'){ if (key === "update") {
this.$router.push('/login/updatePwd') this.$router.push("/login/updatePwd");
} }
if(key === 'logout'){ if (key === "logout") {
this.logout() this.logout();
} }
}, },
// 退出登录 // 退出登录
logout() { logout() {
this.$post('/login/logout').then(data=>{}).catch(error=>{}).then(()=>{ this.$post("/login/logout")
this.$message.success('已退出登录'); .then((data) => {})
this.$store.commit('logout'); .catch((error) => {})
this.$router.replace('/login'); .then(() => {
}) this.$message.success("已退出登录");
} this.$store.commit("logout");
this.$router.replace("/login");
});
},
}, },
beforeDestroy() { beforeDestroy() {
console.log("beforeDestroy"); console.log("beforeDestroy");
}, },
mounted() {}, mounted() {
console.log(this.menu);
},
computed: { computed: {
group() { group() {
const relativeGroup = this.$store.state.group; const relativeGroup = this.$store.state.group;
if(relativeGroup) { if (relativeGroup) {
return relativeGroup; return relativeGroup;
} }
let groupArray = this.$route.path.split('/'); let groupArray = this.$route.path.split("/");
let group = this.$route.path; let group = this.$route.path;
let type = groupArray.pop(); let type = groupArray.pop();
if(['add', 'edit', 'view', 'new','importView','resetPwdView'].indexOf(type) > -1){ if (
groupArray.push('list'); ["add", "edit", "view", "new", "importView", "resetPwdView"].indexOf(
group = groupArray.join('/') type
) > -1
) {
groupArray.push("list");
group = groupArray.join("/");
} }
return group; return group;
}, },
relativeGroup() { relativeGroup() {
return this.$store.state.group return this.$store.state.group;
}, },
flat() { flat() {
return this.userData.flat return this.userData.flat;
}, },
menu() { menu() {
if(!this.headBar.children) { if (!this.headBar.children) {
return [] return [];
}else{ } else {
return this.headBar.children return this.headBar.children;
} }
}, },
// 二级菜单数据 // 二级菜单数据
headBar() { headBar() {
return this.$store.state.headBar; return this.$store.state.headBar;
}, },
userData(){ userData() {
return this.$store.state.userData return this.$store.state.userData;
}, },
// 二级路径 // 二级路径
activePath(){ activePath() {
return this.$store.state.CurrentSecondPath return this.$store.state.CurrentSecondPath;
} },
}, },
data() { data() {
return { return {
showMobileMenu: false, showMobileMenu: false,
} };
}, },
created(){ created() {},
};
}
}
</script> </script>
<style lang="less"> <style lang="less">
.layout-header{ .layout-header {
.mobile-menu-list{display: none} .mobile-menu-list {
.layout-menu-wrapper{ display: none;
}
.layout-menu-wrapper {
height: 72px; height: 72px;
line-height: 72px; line-height: 72px;
font-size: 16px; font-size: 16px;
color: #eee; color: #eee;
background: #1848c8; background: #1848c8;
.layout-logo{ .layout-logo {
height: 50px; height: 50px;
.el-icon-menu{display: none} .el-icon-menu {
a{ display: none;
}
a {
margin: auto; margin: auto;
} }
img{ img {
vertical-align: middle; vertical-align: middle;
} }
} }
.menu-list{ .menu-list {
li{ li {
span{ span {
display: block; display: block;
padding: 0 16px; padding: 0 16px;
height: 100%; height: 100%;
...@@ -195,20 +209,19 @@ export default { ...@@ -195,20 +209,19 @@ export default {
cursor: pointer; cursor: pointer;
margin-right: 20px; margin-right: 20px;
} }
.active{ .active {
color: #fff; color: #fff;
list-style-type:none; list-style-type: none;
border-bottom:3px solid #fff; border-bottom: 3px solid #fff;
padding-bottom: 2px; padding-bottom: 2px;
} }
} }
} }
.layout-profile{ .layout-profile {
padding-right: 30px; padding-right: 30px;
} }
} }
.controllBar{ .controllBar {
background-color: rgba(170, 170, 170, 0.4); background-color: rgba(170, 170, 170, 0.4);
width: 120px; width: 120px;
height: 44px; height: 44px;
...@@ -220,23 +233,23 @@ export default { ...@@ -220,23 +233,23 @@ export default {
margin-right: 15px; margin-right: 15px;
cursor: pointer; cursor: pointer;
} }
.layout-submenu-wrapper{ .layout-submenu-wrapper {
padding-left: 20px; padding-left: 20px;
background: #fff; background: #fff;
height: 42px; height: 42px;
border-bottom: 1px solid #ededed; border-bottom: 1px solid #ededed;
.layout-title{ .layout-title {
font-size: 18px; font-size: 18px;
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
color: #333; color: #333;
} }
.layout-submenu{ .layout-submenu {
margin-left: 15px; margin-left: 15px;
white-space: nowrap; white-space: nowrap;
overflow: auto; overflow: auto;
li{ li {
a{ a {
display: block; display: block;
padding: 0 10px; padding: 0 10px;
height: 40px; height: 40px;
...@@ -244,7 +257,7 @@ export default { ...@@ -244,7 +257,7 @@ export default {
font-size: 14px; font-size: 14px;
color: #666; color: #666;
&.router-link-active, &.router-link-active,
&[active]{ &[active] {
color: #1890ff; color: #1890ff;
border-bottom: 2px solid #1890ff; border-bottom: 2px solid #1890ff;
} }
...@@ -254,46 +267,46 @@ export default { ...@@ -254,46 +267,46 @@ export default {
} }
} }
@media screen and (max-width: 800px){ @media screen and (max-width: 800px) {
.layout-header { .layout-header {
.mobile-menu-list{ .mobile-menu-list {
display: flex; display: flex;
background: #222333; background: #222333;
padding: 10px; padding: 10px;
li{ li {
span{ span {
display: block; display: block;
padding: 0 12px; padding: 0 12px;
height: 100%; height: 100%;
color: #eee; color: #eee;
cursor: pointer; cursor: pointer;
} }
.active{ .active {
color: #1890ff; color: #1890ff;
} }
} }
} }
.layout-submenu-wrapper{ .layout-submenu-wrapper {
padding-left: 0; padding-left: 0;
overflow: auto; overflow: auto;
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
} }
.layout-menu-wrapper { .layout-menu-wrapper {
width: 100%; width: 100%;
.layout-logo{ .layout-logo {
width: 40px; width: 40px;
.el-icon-menu{ .el-icon-menu {
margin: auto; margin: auto;
display: inline-block; display: inline-block;
} }
a{ a {
display: none; display: none;
} }
} }
.menu-list{ .menu-list {
display: none; display: none;
} }
li{ li {
width: 100%; width: 100%;
} }
} }
......
...@@ -12,6 +12,10 @@ import Global from './assets/utils/global.js' ...@@ -12,6 +12,10 @@ import Global from './assets/utils/global.js'
import VueClipboard from 'vue-clipboard2' import VueClipboard from 'vue-clipboard2'
import VueAMap from 'vue-amap'; import VueAMap from 'vue-amap';
import * as echarts from 'echarts' import * as echarts from 'echarts'
// 将自动注册所有组件为全局组件
import dataV from '@jiaminghi/data-view'
Vue.use(dataV)
Vue.prototype.$echarts = echarts; Vue.prototype.$echarts = echarts;
Vue.config.productionTip = false Vue.config.productionTip = false
......
import Vue from 'vue' import Vue from "vue";
import Router from 'vue-router' import Router from "vue-router";
import Store from './store' import Store from "./store";
import Layout from './views/Layout.vue' import Layout from "./views/Layout.vue";
import fileNotFound from './views/errors/fileNotFound.vue' import fileNotFound from "./views/errors/fileNotFound.vue";
import NProgress from 'nprogress' import NProgress from "nprogress";
import 'nprogress/nprogress.css' import "nprogress/nprogress.css";
NProgress.configure({ showSpinner: false }) NProgress.configure({ showSpinner: false });
Vue.use(Router); Vue.use(Router);
const originalPush = VueRouter.prototype.push;
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location, onResolve, onReject) { VueRouter.prototype.push = function push(location, onResolve, onReject) {
if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject) if (onResolve || onReject)
return originalPush.call(this, location).catch(err => err) return originalPush.call(this, location, onResolve, onReject);
} return originalPush.call(this, location).catch((err) => err);
};
const router = new Router({ const router = new Router({
routes: [ routes: [
builder('/authentication', 'login/authentication'), builder("/authentication", "login/authentication"),
builder('/login', 'login/login'), builder("/login", "login/login"),
builder('/sso', 'SSO'), builder("/sso", "SSO"),
{ {
path: '/', path: "/",
name: 'layout', name: "layout",
component: Layout, component: Layout,
meta: { meta: {
requiresAuth: true requiresAuth: true,
}, },
children: [ children: [
...restBuilder('oper/log', 'system/log'), // 系统管理-操作日志 ...restBuilder("oper/log", "system/log"), // 系统管理-操作日志
...restBuilder('validcode', 'system/validcode'), // 接入管理-接入信息 ...restBuilder("validcode", "system/validcode"), // 接入管理-接入信息
...restBuilder('menu', 'system/menu'), // 系统管理--菜单管理 ...restBuilder("menu", "system/menu"), // 系统管理--菜单管理
...restBuilder('resource', 'system/resource'), // 系统管理--资源管理 ...restBuilder("resource", "system/resource"), // 系统管理--资源管理
...restBuilder('role', 'system/role'), // 系统管理--角色管理 ...restBuilder("role", "system/role"), // 系统管理--角色管理
...restBuilder('user', 'system/user'), // 用户管理 -- 管理用户 ...restBuilder("user", "system/user"), // 用户管理 -- 管理用户
...restBuilder('param', 'system/param'), // 系统管理--参数管理 ...restBuilder("param", "system/param"), // 系统管理--参数管理
...restBuilder('task', 'system/task'), // 系统管理--任务管理 ...restBuilder("task", "system/task"), // 系统管理--任务管理
// 绩效负责人 // 绩效负责人
...restBuilder('workman','workman'), ...restBuilder("workman", "workman"),
//部门 //部门
...restBuilder('dept', 'dept'),//部门 ...restBuilder("dept", "dept"), //部门
...restBuilder('staff', 'staff'),//花名册 员工信息 ...restBuilder("staff", "staff"), //花名册 员工信息
...restBuilder('staff/care', 'staff/care'),// 员工关怀信息 ...restBuilder("staff/care", "staff/care"), // 员工关怀信息
...restBuilder('care/template', 'care/template'),// 关怀问候信息 ...restBuilder("care/template", "care/template"), // 关怀问候信息
...restBuilder('staff/black', 'staff/black'),// 员工黑名单信息 ...restBuilder("staff/black", "staff/black"), // 员工黑名单信息
...restBuilder('job', 'job'),// 职位信息 ...restBuilder("job", "job"), // 职位信息
...restBuilder('staff/adjust/log', 'staff/adjust/log'),// 员工调岗信息 ...restBuilder("staff/adjust/log", "staff/adjust/log"), // 员工调岗信息
...restBuilder('staff/regular', 'staff/regular'),// 员工转正信息 ...restBuilder("staff/regular", "staff/regular"), // 员工转正信息
...restBuilder('staff/leave', 'staff/leave'),// 员工离职信息 ...restBuilder("staff/leave", "staff/leave"), // 员工离职信息
...restBuilder('staff/contract', 'staff/contract'),// 员工合同信息 ...restBuilder("staff/contract", "staff/contract"), // 员工合同信息
...restBuilder('attendance/record/hik', 'attendance/record/hik'),// 海康考勤 ...restBuilder("attendance/record/hik", "attendance/record/hik"), // 海康考勤
...restBuilder('attendance/record/error', 'attendance/record/error'),// 考勤打卡记录异常信息 ...restBuilder("attendance/record/error", "attendance/record/error"), // 考勤打卡记录异常信息
...restBuilder('attendance/stat', 'attendance/stat'),// 考勤汇总信息 ...restBuilder("attendance/stat", "attendance/stat"), // 考勤汇总信息
...restBuilder('attendance/staff/stat', 'attendance/staff/stat'),// 考勤人员汇总信息 ...restBuilder("attendance/staff/stat", "attendance/staff/stat"), // 考勤人员汇总信息
...restBuilder("attendance/record", "attendance/record"), // 考勤打卡记录信息
...restBuilder('attendance/record', 'attendance/record'),// 考勤打卡记录信息 ...restBuilder("attendance/record/detail", "attendance/record/detail"), // 考勤打卡记录详细信息
...restBuilder('attendance/record/detail', 'attendance/record/detail'),// 考勤打卡记录详细信息 ...restBuilder("attendance/group", "attendance/group"), // 考勤组信息
...restBuilder('attendance/group', 'attendance/group'),// 考勤组信息 ...restBuilder("attendance/class", "attendance/class"), // 考勤班次信息
...restBuilder('attendance/class', 'attendance/class'),// 考勤班次信息 ...restBuilder("attendance/leave/record", "attendance/leave/record"), // 请假记录信息
...restBuilder('attendance/leave/record', 'attendance/leave/record'),// 请假记录信息 ...restBuilder(
...restBuilder('attendance/vacation/balance', 'attendance/vacation/balance'),// 员工假期余额信息 "attendance/vacation/balance",
"attendance/vacation/balance"
), // 员工假期余额信息
...restBuilder('staff/perform/stat', 'staff/perform/stat'),//员工分数统计 ...restBuilder("staff/perform/stat", "staff/perform/stat"), //员工分数统计
...restBuilder('dept/perform/stat', 'dept/perform/stat'),//部门绩效分数统计 ...restBuilder("dept/perform/stat", "dept/perform/stat"), //部门绩效分数统计
...restBuilder('perform/perpose/staff/stat', 'perform/perpose/staff/stat'),//员工目标统计 ...restBuilder(
...restBuilder('perform/perpose/dept/stat/stat', 'perform/perpose/dept/stat/stat'),//部门目标统计 "perform/perpose/staff/stat",
...restBuilder('perform/perpose/staff', 'perform/perpose/staff'),//员工考核目标详细信息表 "perform/perpose/staff/stat"
...restBuilder('perform/perpose/staff/stat', 'perform/perpose/staff/stat'),//员工考核目标详细信息表 ), //员工目标统计
...restBuilder('perform/perpose/dept', 'perform/perpose/dept'),//部门考核目标详细信息表 ...restBuilder(
...restBuilder('perform/perpose/dept/stat', 'perform/perpose/dept/stat'),//部门考核目标详细信息表 "perform/perpose/dept/stat/stat",
...restBuilder('perform/perpose', 'perform/perpose'),//考核目标表 "perform/perpose/dept/stat/stat"
...restBuilder('window/owner', 'window/owner'),//窗口负责人表 ), //部门目标统计
...restBuilder('perform/staff/conf/detail', 'perform/staff/conf/detail'),//人员考核内容详细信息表 ...restBuilder("perform/perpose/staff", "perform/perpose/staff"), //员工考核目标详细信息表
...restBuilder('perform/staff/conf', 'perform/staff/conf'),//人员自动考核信息表 ...restBuilder(
...restBuilder('perform/dept/conf/detail', 'perform/dept/conf/detail'),//部门考核内容详细信息表 "perform/perpose/staff/stat",
...restBuilder('perform/dept/conf', 'perform/dept/conf'),//部门自动考核信息表 "perform/perpose/staff/stat"
...restBuilder('perform/rules/category', 'perform/rules/category'),//绩效规则分类信息表 ), //员工考核目标详细信息表
...restBuilder('perform/rules', 'perform/rules'),//绩效规则信息表 ...restBuilder("perform/perpose/dept", "perform/perpose/dept"), //部门考核目标详细信息表
...restBuilder(
...restBuilder('perform/rules/attend', 'perform/rules/attend'),//考勤绩效规则信息表 "perform/perpose/dept/stat",
...restBuilder('perform/rules/review', 'perform/rules/review'),//评价绩效规则信息表 "perform/perpose/dept/stat"
...restBuilder('perform/rules/gowork', 'perform/rules/gowork'),//办件绩效规则信息表 ), //部门考核目标详细信息表
...restBuilder('perform/rules/effect', 'perform/rules/effect'),//效能绩效规则信息表 ...restBuilder("perform/perpose", "perform/perpose"), //考核目标表
...restBuilder('perform/rules/other', 'perform/rules/other'),//其它绩效规则信息表 ...restBuilder("window/owner", "window/owner"), //窗口负责人表
...restBuilder(
...restBuilder('perform/attend/record', 'perform/attend/record'),//考勤绩效记录信息 "perform/staff/conf/detail",
...restBuilder('perform/review/record', 'perform/review/record'),//评价绩效记录信息 "perform/staff/conf/detail"
...restBuilder('perform/complain/record', 'perform/complain/record'),//投诉绩效记录信息 ), //人员考核内容详细信息表
...restBuilder('perform/gowork/record', 'perform/gowork/record'),//办件绩效记录信息 ...restBuilder("perform/staff/conf", "perform/staff/conf"), //人员自动考核信息表
...restBuilder('perform/effect/record', 'perform/effect/record'),//效能绩效记录信息 ...restBuilder("perform/dept/conf/detail", "perform/dept/conf/detail"), //部门考核内容详细信息表
...restBuilder('perform/other/record', 'perform/other/record'),//其它绩效记录信息 ...restBuilder("perform/dept/conf", "perform/dept/conf"), //部门自动考核信息表
...restBuilder("perform/rules/category", "perform/rules/category"), //绩效规则分类信息表
...restBuilder('check/attend/record', 'check/attend/record'),//考勤绩效核查信息 ...restBuilder("perform/rules", "perform/rules"), //绩效规则信息表
...restBuilder('check/review/record', 'check/review/record'),//评价绩效核查信息
...restBuilder('check/complain/record', 'check/complain/record'),//投诉绩效核查信息 ...restBuilder("perform/rules/attend", "perform/rules/attend"), //考勤绩效规则信息表
...restBuilder('check/gowork/record', 'check/gowork/record'),//办件绩效核查信息 ...restBuilder("perform/rules/review", "perform/rules/review"), //评价绩效规则信息表
...restBuilder('check/effect/record', 'check/effect/record'),//效能绩效核查信息 ...restBuilder("perform/rules/gowork", "perform/rules/gowork"), //办件绩效规则信息表
...restBuilder('check/other/record', 'check/other/record'),//其它绩效核查信息 ...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("blank", "blank"),
builder('', 'Home'), builder("", "Home"),
builder('index', 'Home'), builder("index", "Home"),
builder('login/updatePwd', 'login/updatePwd'), builder("login/updatePwd", "login/updatePwd"),
builder('403', 'errors/403'), builder("403", "errors/403"),
builder('*', 'errors/404'), builder("*", "errors/404"),
] ],
}, },
] ],
}) });
/** /**
* rest路由生成器 * rest路由生成器
...@@ -147,61 +160,66 @@ function restBuilder(path, component = path) { ...@@ -147,61 +160,66 @@ function restBuilder(path, component = path) {
function builder(path, component = path, requiresAuth = false) { function builder(path, component = path, requiresAuth = false) {
return { return {
path: path, path: path,
name: path || 'homepage', name: path || "homepage",
component: getComponent(component), component: getComponent(component),
meta: { meta: {
requiresAuth: requiresAuth requiresAuth: requiresAuth,
}, },
} };
} }
function getComponent(fileName) { function getComponent(fileName) {
try { try {
return require('./views/' + fileName).default return require("./views/" + fileName).default;
} catch (error) { } catch (error) {
return fileNotFound; return fileNotFound;
} }
} }
//检查是否跳转到sso地址 //检查是否跳转到sso地址
function ssoCheck(to, from, next) { function ssoCheck(to, from, next) {
let redirect = to.path === "/login/updatePwd" ? "/#/updatePwd" : "";
let redirect = (to.path === '/login/updatePwd') ? '/#/updatePwd' : '' redirect =
redirect = (redirect === '' && to.path === '/login') ? (location.protocol + '//' + location.host + '/#' + from.fullPath) : redirect redirect === "" && to.path === "/login"
if (redirect != '') { ? location.protocol + "//" + location.host + "/#" + from.fullPath
next(false) : redirect;
window.location.href = '//' + location.host + '/m/login/logout?redirect=' + encodeURIComponent(redirect) if (redirect != "") {
next(false);
window.location.href =
"//" +
location.host +
"/m/login/logout?redirect=" +
encodeURIComponent(redirect);
return true; return true;
} }
return false; return false;
} }
router.afterEach(() => { router.afterEach(() => {
document.body.scrollTop = 0 document.body.scrollTop = 0;
document.documentElement.scrollTop = 0 document.documentElement.scrollTop = 0;
NProgress.done() NProgress.done();
}) });
// 路由鉴权 // 路由鉴权
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
// if (ssoCheck(to, from, next)) { //sso鉴权检查 // if (ssoCheck(to, from, next)) { //sso鉴权检查
// return // return
// } // }
NProgress.start() NProgress.start();
if (to.matched.some(record => record.meta.requiresAuth)) { if (to.matched.some((record) => record.meta.requiresAuth)) {
if (Store.state.isLogin) { if (Store.state.isLogin) {
next(); next();
} else { } else {
next({ next({
path: '/authentication', path: "/authentication",
query: { query: {
redirect: to.fullPath redirect: to.fullPath,
} },
}) });
} }
} else { } else {
next(); next();
} }
}) });
export default router; 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> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" :config="tableConfig"> <LayoutTable :data="tableData" :config="tableConfig"> </LayoutTable>
</LayoutTable>
<drawer-show ref="drawerform" @ok="getData" /> <drawer-show ref="drawerform" @ok="getData" />
</div> </div>
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
export default { export default {
name: "PerformStaffConfList", name: "PerformStaffConfList",
components: { components: {
drawerShow drawerShow,
},
mixins: [table],
created() {
}, },
mixins: [table],
created() {},
methods: { methods: {
/** 重写新增方法 */ /** 重写新增方法 */
toAdd(row) { toAdd(row) {
...@@ -33,47 +30,79 @@ ...@@ -33,47 +30,79 @@
toView(row) { toView(row) {
this.$refs.drawerform.view(row); this.$refs.drawerform.view(row);
}, },
}, },
data() { data() {
return { return {
config: { config: {
isshowTabPane:true, isshowTabPane: true,
search: [ search: [],
],
columns: [ columns: [
{type: "selection", width: 60}, { type: "selection", width: 60 },
{type: "index",label: "序号",width: 50}, { 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: "操作", label: "操作",
width: 240, width: 240,
formatter: row => { formatter: (row) => {
return ( 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> </script>
...@@ -17,7 +17,7 @@ module.exports = { ...@@ -17,7 +17,7 @@ module.exports = {
hot: true,//自动保存 hot: true,//自动保存
proxy: { proxy: {
'/attendance': { '/attendance': {
target: 'http://127.0.0.1:17500', target: 'http://192.168.0.98:11039',
changeOrigin: true, changeOrigin: true,
secure: false, secure: false,
cookieDomainRewrite: 'localhost', cookieDomainRewrite: 'localhost',
......
...@@ -22,7 +22,7 @@ ...@@ -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" "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" "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=" "integrity" "sha1-IM33yEtdhtg/rIcQqLxgWnuj8BA="
"resolved" "https://registry.nlark.com/@babel/core/download/@babel/core-7.14.8.tgz" "resolved" "https://registry.nlark.com/@babel/core/download/@babel/core-7.14.8.tgz"
"version" "7.14.8" "version" "7.14.8"
...@@ -872,7 +872,7 @@ ...@@ -872,7 +872,7 @@
"@babel/types" "^7.4.4" "@babel/types" "^7.4.4"
"esutils" "^2.0.2" "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=" "integrity" "sha1-cRmlb0IQGIUmlCkLn5FICXORtEY="
"resolved" "https://registry.nlark.com/@babel/runtime/download/@babel/runtime-7.14.8.tgz" "resolved" "https://registry.nlark.com/@babel/runtime/download/@babel/runtime-7.14.8.tgz"
"version" "7.14.8" "version" "7.14.8"
...@@ -982,6 +982,51 @@ ...@@ -982,6 +982,51 @@
"cssnano-preset-default" "^4.0.0" "cssnano-preset-default" "^4.0.0"
"postcss" "^7.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": "@jridgewell/gen-mapping@^0.1.0":
"integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" "integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w=="
"resolved" "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" "resolved" "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz"
...@@ -1889,15 +1934,6 @@ ...@@ -1889,15 +1934,6 @@
dependencies: dependencies:
"object.assign" "^4.1.0" "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": "babel-plugin-polyfill-corejs2@^0.2.2":
"integrity" "sha1-6RJHheb9lPlLYYp5VOVpMFO/Uyc=" "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" "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 @@ ...@@ -1922,11 +1958,6 @@
dependencies: dependencies:
"@babel/helper-define-polyfill-provider" "^0.2.2" "@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": "babel-runtime@6.x":
"integrity" "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=" "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" "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 @@ ...@@ -2951,7 +2982,7 @@
"resolved" "https://registry.nlark.com/core-js/download/core-js-2.6.12.tgz" "resolved" "https://registry.nlark.com/core-js/download/core-js-2.6.12.tgz"
"version" "2.6.12" "version" "2.6.12"
"core-js@^3.6.5": "core-js@^3":
"version" "3.16.0" "version" "3.16.0"
"core-js@3.8.1": "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