From 1a1ec567f11581cff0443b32533692bedfed8651 Mon Sep 17 00:00:00 2001
From: renguanyu111 <80379958+renguanyu111@users.noreply.github.com>
Date: Tue, 5 Jul 2022 08:21:00 +0800
Subject: [PATCH] =?UTF-8?q?hr=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=9720220705?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env.development | 1 +
.env.production | 1 +
.env.staging | 3 +-
package.json | 1 +
src/--layout/components/Sidebar/index.vue | 95 -
src/App.vue | 32 +
.../components/AppMain.vue | 6 +-
.../components/Navbar.vue | 2 +
.../components/Sidebar/FixiOSBug.js | 0
.../components/Sidebar/Item.vue | 0
.../components/Sidebar/Link.vue | 5 +
.../components/Sidebar/Logo.vue | 0
.../components/Sidebar/SidebarItem.vue} | 0
src/__layout/components/Sidebar/index.vue | 56 +
.../components/index.js | 0
src/{--layout => __layout}/index.vue | 12 +-
.../mixin/ResizeHandler copy.js | 0
.../mixin/ResizeHandler.js | 0
src/api/api/dutys.js | 265 +++
src/api/api/group.js | 24 +
src/api/api/login/login.js | 26 +
src/api/api/renwu.js | 75 +
src/api/api/table.js | 9 +
src/api/api/user.js | 73 +
src/api/duty/duty.js | 33 +-
src/api/dutys.js | 8 +
src/api/echarts/echarts.js | 33 +
src/api/personnel/post.js | 252 +++
src/api/user.js | 11 +
src/layout/components/AppMain.vue | 6 +-
src/layout/components/Navbar.vue | 7 +-
src/layout/components/Sidebar/Link.vue | 5 -
.../components/Sidebar/SidebarItem copy.vue} | 20 +-
src/layout/components/Sidebar/SidebarItem.vue | 20 +-
src/layout/components/Sidebar/index.vue | 55 +-
.../components/Sidebar/subMenu copy.vue | 0
.../components/Sidebar/subMenu.vue | 3 +-
src/layout/components/TagsView/ScrollPane.vue | 94 +
src/layout/components/TagsView/index.vue | 294 +++
.../components/historyComponent/history.vue | 326 ++++
src/layout/index.vue | 18 +-
src/main.js | 20 +-
src/router/{index1.js => __index.js} | 2 +-
src/router/index.js | 147 ++
src/utils/bus.js | 6 +
src/utils/i18n.js | 12 +
src/utils/request.js | 31 +-
src/utils/request1.js | 89 +
src/views/approvalData/index.vue | 743 ++++++++
.../assessmentProgram/assessmentDimension.vue | 4 +-
.../departmentalAssessment.vue | 440 ++++-
.../qualitativeIndicators.vue | 222 ++-
src/views/basicInfo/project.vue | 98 +-
src/views/basicInfo/target.vue | 323 +++-
src/views/echarts/echarts.vue | 679 +++++++
src/views/echarts/echarts1.vue | 824 ++++++++
src/views/echarts/table.vue | 1196 ++++++++++++
src/views/echarts/total.vue | 883 +++++++++
src/views/frontPage/index.vue | 1650 ++++++++++++++++-
src/views/hr/jobTitle.vue | 386 ++++
src/views/hr/organization.vue | 484 +++++
src/views/hr/organizeType.vue | 360 ++++
src/views/hr/personnel.vue | 1072 +++++++++++
src/views/hr/position.vue | 330 ++++
src/views/login/wxLogin.vue | 4 +
src/views/menuSettings/index.vue | 105 +-
src/views/mete/index.vue | 581 ++++++
src/views/personnel/post/index.vue | 657 +++++++
src/views/qualitative/index copy.vue | 518 ++++++
src/views/qualitative/index.vue | 1298 +++++++++++++
src/views/roleSetting/index.vue | 416 +++++
————dist/--favicon.ico | Bin 67646 -> 0 bytes
————dist/favicon.ico | Bin 73507 -> 0 bytes
————dist/index.html | 1 -
————dist/static/css/app.96fd0a63.css | 1 -
.../static/css/chunk-0552f3a2.044e060a.css | 1 -
.../static/css/chunk-15ac51ae.3c7f5ad9.css | 1 -
.../static/css/chunk-2312d406.0133c0c0.css | 1 -
.../static/css/chunk-26198766.4146676d.css | 1 -
.../static/css/chunk-29a1f3a9.ac8fd10d.css | 1 -
.../static/css/chunk-35bbcdde.4d1bad9a.css | 1 -
.../static/css/chunk-3b70a03b.6dcad223.css | 1 -
.../static/css/chunk-72d93496.7fac38e6.css | 1 -
.../static/css/chunk-73917472.77b2620b.css | 1 -
.../static/css/chunk-e7b2d2a4.fd28563b.css | 1 -
.../static/css/chunk-elementUI.5dea96f6.css | 1 -
————dist/static/css/chunk-libs.1002c752.css | 50 -
.../static/fonts/element-icons.535877f5.woff | Bin 28200 -> 0 bytes
.../static/fonts/element-icons.732389de.ttf | Bin 55956 -> 0 bytes
————dist/static/img/404.a57b6f31.png | Bin 98071 -> 0 bytes
————dist/static/img/404_cloud.0f4bc32b.png | Bin 4766 -> 0 bytes
————dist/static/img/dashbord.e74f8e90.png | Bin 72153 -> 0 bytes
.../static/img/login_background.f437e390.jpg | Bin 41154 -> 0 bytes
————dist/static/img/login_left.b6bb2261.svg | 123 --
————dist/static/js/app.92ea709b.js | 1 -
————dist/static/js/chunk-0552f3a2.533f0e59.js | 1 -
————dist/static/js/chunk-15ac51ae.8df86837.js | 1 -
————dist/static/js/chunk-2312d406.f43a9621.js | 1 -
————dist/static/js/chunk-26198766.850d6c09.js | 1 -
————dist/static/js/chunk-29a1f3a9.2245688f.js | 1 -
————dist/static/js/chunk-35bbcdde.1f7d5beb.js | 1 -
————dist/static/js/chunk-3b70a03b.8314cd45.js | 1 -
————dist/static/js/chunk-4daeb164.04f44ed9.js | 1 -
————dist/static/js/chunk-72d93496.08d22d85.js | 1 -
————dist/static/js/chunk-73917472.8e435999.js | 1 -
————dist/static/js/chunk-89fdd166.a7a3406e.js | 1 -
————dist/static/js/chunk-e7b2d2a4.0dd3b4df.js | 1 -
.../static/js/chunk-elementUI.21e23895.js | 1 -
————dist/static/js/chunk-libs.addb41e7.js | 56 -
109 files changed, 15048 insertions(+), 659 deletions(-)
delete mode 100644 src/--layout/components/Sidebar/index.vue
rename src/{--layout => __layout}/components/AppMain.vue (83%)
rename src/{--layout => __layout}/components/Navbar.vue (98%)
rename src/{--layout => __layout}/components/Sidebar/FixiOSBug.js (100%)
rename src/{--layout => __layout}/components/Sidebar/Item.vue (100%)
rename src/{--layout => __layout}/components/Sidebar/Link.vue (90%)
rename src/{--layout => __layout}/components/Sidebar/Logo.vue (100%)
rename src/{--layout/components/Sidebar/SidebarItem copy.vue => __layout/components/Sidebar/SidebarItem.vue} (100%)
create mode 100644 src/__layout/components/Sidebar/index.vue
rename src/{--layout => __layout}/components/index.js (100%)
rename src/{--layout => __layout}/index.vue (88%)
rename src/{--layout => __layout}/mixin/ResizeHandler copy.js (100%)
rename src/{--layout => __layout}/mixin/ResizeHandler.js (100%)
create mode 100644 src/api/api/dutys.js
create mode 100644 src/api/api/group.js
create mode 100644 src/api/api/login/login.js
create mode 100644 src/api/api/renwu.js
create mode 100644 src/api/api/table.js
create mode 100644 src/api/api/user.js
create mode 100644 src/api/echarts/echarts.js
create mode 100644 src/api/personnel/post.js
rename src/{--layout/components/Sidebar/SidebarItem.vue => layout/components/Sidebar/SidebarItem copy.vue} (71%)
rename src/{--layout => layout}/components/Sidebar/subMenu copy.vue (100%)
rename src/{--layout => layout}/components/Sidebar/subMenu.vue (90%)
create mode 100644 src/layout/components/TagsView/ScrollPane.vue
create mode 100644 src/layout/components/TagsView/index.vue
create mode 100644 src/layout/components/historyComponent/history.vue
rename src/router/{index1.js => __index.js} (98%)
create mode 100644 src/utils/bus.js
create mode 100644 src/utils/i18n.js
create mode 100644 src/utils/request1.js
create mode 100644 src/views/approvalData/index.vue
create mode 100644 src/views/echarts/echarts.vue
create mode 100644 src/views/echarts/echarts1.vue
create mode 100644 src/views/echarts/table.vue
create mode 100644 src/views/echarts/total.vue
create mode 100644 src/views/hr/jobTitle.vue
create mode 100644 src/views/hr/organization.vue
create mode 100644 src/views/hr/organizeType.vue
create mode 100644 src/views/hr/personnel.vue
create mode 100644 src/views/hr/position.vue
create mode 100644 src/views/mete/index.vue
create mode 100644 src/views/personnel/post/index.vue
create mode 100644 src/views/qualitative/index copy.vue
create mode 100644 src/views/qualitative/index.vue
create mode 100644 src/views/roleSetting/index.vue
delete mode 100644 ————dist/--favicon.ico
delete mode 100644 ————dist/favicon.ico
delete mode 100644 ————dist/index.html
delete mode 100644 ————dist/static/css/app.96fd0a63.css
delete mode 100644 ————dist/static/css/chunk-0552f3a2.044e060a.css
delete mode 100644 ————dist/static/css/chunk-15ac51ae.3c7f5ad9.css
delete mode 100644 ————dist/static/css/chunk-2312d406.0133c0c0.css
delete mode 100644 ————dist/static/css/chunk-26198766.4146676d.css
delete mode 100644 ————dist/static/css/chunk-29a1f3a9.ac8fd10d.css
delete mode 100644 ————dist/static/css/chunk-35bbcdde.4d1bad9a.css
delete mode 100644 ————dist/static/css/chunk-3b70a03b.6dcad223.css
delete mode 100644 ————dist/static/css/chunk-72d93496.7fac38e6.css
delete mode 100644 ————dist/static/css/chunk-73917472.77b2620b.css
delete mode 100644 ————dist/static/css/chunk-e7b2d2a4.fd28563b.css
delete mode 100644 ————dist/static/css/chunk-elementUI.5dea96f6.css
delete mode 100644 ————dist/static/css/chunk-libs.1002c752.css
delete mode 100644 ————dist/static/fonts/element-icons.535877f5.woff
delete mode 100644 ————dist/static/fonts/element-icons.732389de.ttf
delete mode 100644 ————dist/static/img/404.a57b6f31.png
delete mode 100644 ————dist/static/img/404_cloud.0f4bc32b.png
delete mode 100644 ————dist/static/img/dashbord.e74f8e90.png
delete mode 100644 ————dist/static/img/login_background.f437e390.jpg
delete mode 100644 ————dist/static/img/login_left.b6bb2261.svg
delete mode 100644 ————dist/static/js/app.92ea709b.js
delete mode 100644 ————dist/static/js/chunk-0552f3a2.533f0e59.js
delete mode 100644 ————dist/static/js/chunk-15ac51ae.8df86837.js
delete mode 100644 ————dist/static/js/chunk-2312d406.f43a9621.js
delete mode 100644 ————dist/static/js/chunk-26198766.850d6c09.js
delete mode 100644 ————dist/static/js/chunk-29a1f3a9.2245688f.js
delete mode 100644 ————dist/static/js/chunk-35bbcdde.1f7d5beb.js
delete mode 100644 ————dist/static/js/chunk-3b70a03b.8314cd45.js
delete mode 100644 ————dist/static/js/chunk-4daeb164.04f44ed9.js
delete mode 100644 ————dist/static/js/chunk-72d93496.08d22d85.js
delete mode 100644 ————dist/static/js/chunk-73917472.8e435999.js
delete mode 100644 ————dist/static/js/chunk-89fdd166.a7a3406e.js
delete mode 100644 ————dist/static/js/chunk-e7b2d2a4.0dd3b4df.js
delete mode 100644 ————dist/static/js/chunk-elementUI.21e23895.js
delete mode 100644 ————dist/static/js/chunk-libs.addb41e7.js
diff --git a/.env.development b/.env.development
index a15bddb..8035636 100644
--- a/.env.development
+++ b/.env.development
@@ -3,3 +3,4 @@ ENV = 'development'
# base api
VUE_APP_BASE_API = 'http://vue.admin.net/api'
+VUE_APP_BASE_API1 = 'http://vue.admin.net/hrapi'
diff --git a/.env.production b/.env.production
index 888638c..12dd067 100644
--- a/.env.production
+++ b/.env.production
@@ -3,4 +3,5 @@ ENV = 'production'
# base api
VUE_APP_BASE_API = 'http://ginadmin.hxgk.group/api'
+VUE_APP_BASE_API1 = 'http://ginadmin.hxgk.group/hrapi'
diff --git a/.env.staging b/.env.staging
index abd748d..72fb432 100644
--- a/.env.staging
+++ b/.env.staging
@@ -4,5 +4,6 @@ NODE_ENV = production
ENV = 'staging'
# base api
-VUE_APP_BASE_API = 'http://new.hxgk.group/api'
+VUE_APP_BASE_API = '172.0.0.1:8888/api'
+VUE_APP_BASE_API1 = '172.0.0.1:8888/hrapi'
diff --git a/package.json b/package.json
index 0a514b0..9ae281c 100644
--- a/package.json
+++ b/package.json
@@ -16,6 +16,7 @@
"dependencies": {
"axios": "0.18.1",
"core-js": "^3.20.2",
+ "echarts": "^5.3.2",
"element-ui": "2.15.6",
"js-cookie": "2.2.0",
"normalize.css": "7.0.0",
diff --git a/src/--layout/components/Sidebar/index.vue b/src/--layout/components/Sidebar/index.vue
deleted file mode 100644
index b1fef16..0000000
--- a/src/--layout/components/Sidebar/index.vue
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- {{item.title}}
-
-
-
-
-
-
-
-
-
-
diff --git a/src/App.vue b/src/App.vue
index c94831c..777b673 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -9,10 +9,41 @@ export default {
name: 'App',
data () {
return {
+ sjUrl:'https://www.hxgk.group/jumpapiurl/webindex?url=http://new.hxgk.group/sj/index.html'
+ }
+ },
+ beforeCreate(){
+ if (
+ navigator.userAgent.match(
+ /(Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
+ )
+ ) {
+ window.open('https://www.hxgk.group/jumpapiurl/webindex?url=http://new.hxgk.group/sj/index.html','_blank')
+ //return true; // 手机端
+ } else {
+ console.log("PC端");
+ //return false; // alert('PC端')
+ }
+ if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { //判断iPhone|iPad|iPod|iOS
+ window.location.href = 'https://www.hxgk.group/jumpapiurl/webindex?url=http://new.hxgk.group/sj/index.html';
}
+ },
+ created(){
+
+ // let flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)
+ // if (flag) {
+ // // 手机端
+ // window.open(this.sjUrl,'_blank')
+ // } else {
+ // // pc端
+
+ // }
+
+
},
mounted(){
+
window.addEventListener('hashchange',()=>{
var currentPath = window.location.hash.slice(1); // 获取输入的路由
@@ -24,5 +55,6 @@ this.$router.push(currentPath); // 动态跳转
},false);
}
+
}
diff --git a/src/--layout/components/AppMain.vue b/src/__layout/components/AppMain.vue
similarity index 83%
rename from src/--layout/components/AppMain.vue
rename to src/__layout/components/AppMain.vue
index 63783eb..a5454fb 100644
--- a/src/--layout/components/AppMain.vue
+++ b/src/__layout/components/AppMain.vue
@@ -3,8 +3,6 @@
-
-
@@ -16,9 +14,7 @@ export default {
console.log("AppMain")
console.log("AppMain")
console.log(this.$route.path)
- console.log(this.$route.fullPath)
- return this.$route.fullPath
-
+ return this.$route.path
}
}
}
diff --git a/src/--layout/components/Navbar.vue b/src/__layout/components/Navbar.vue
similarity index 98%
rename from src/--layout/components/Navbar.vue
rename to src/__layout/components/Navbar.vue
index a5081eb..346811c 100644
--- a/src/--layout/components/Navbar.vue
+++ b/src/__layout/components/Navbar.vue
@@ -60,6 +60,8 @@ export default {
this.$router.push('/login')
}
this.userInfo=JSON.parse(sessionStorage.getItem('userinfo'));
+ console.log(this.userInfo)
+ console.log("this.userInfo")
},
methods: {
toggleSideBar() {
diff --git a/src/--layout/components/Sidebar/FixiOSBug.js b/src/__layout/components/Sidebar/FixiOSBug.js
similarity index 100%
rename from src/--layout/components/Sidebar/FixiOSBug.js
rename to src/__layout/components/Sidebar/FixiOSBug.js
diff --git a/src/--layout/components/Sidebar/Item.vue b/src/__layout/components/Sidebar/Item.vue
similarity index 100%
rename from src/--layout/components/Sidebar/Item.vue
rename to src/__layout/components/Sidebar/Item.vue
diff --git a/src/--layout/components/Sidebar/Link.vue b/src/__layout/components/Sidebar/Link.vue
similarity index 90%
rename from src/--layout/components/Sidebar/Link.vue
rename to src/__layout/components/Sidebar/Link.vue
index 09075ed..cd46e19 100644
--- a/src/--layout/components/Sidebar/Link.vue
+++ b/src/__layout/components/Sidebar/Link.vue
@@ -14,6 +14,10 @@ export default {
required: true
}
},
+ created () {
+ console.log("tiaozhuan")
+ },
+
computed: {
isExternal() {
return isExternal(this.to)
@@ -34,6 +38,7 @@ export default {
console.log("this.type")
console.log(this.type)
if (this.isExternal) {
+ console.log("isExternal")
return {
href: to,
target: '_blank',
diff --git a/src/--layout/components/Sidebar/Logo.vue b/src/__layout/components/Sidebar/Logo.vue
similarity index 100%
rename from src/--layout/components/Sidebar/Logo.vue
rename to src/__layout/components/Sidebar/Logo.vue
diff --git a/src/--layout/components/Sidebar/SidebarItem copy.vue b/src/__layout/components/Sidebar/SidebarItem.vue
similarity index 100%
rename from src/--layout/components/Sidebar/SidebarItem copy.vue
rename to src/__layout/components/Sidebar/SidebarItem.vue
diff --git a/src/__layout/components/Sidebar/index.vue b/src/__layout/components/Sidebar/index.vue
new file mode 100644
index 0000000..da39034
--- /dev/null
+++ b/src/__layout/components/Sidebar/index.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/--layout/components/index.js b/src/__layout/components/index.js
similarity index 100%
rename from src/--layout/components/index.js
rename to src/__layout/components/index.js
diff --git a/src/--layout/index.vue b/src/__layout/index.vue
similarity index 88%
rename from src/--layout/index.vue
rename to src/__layout/index.vue
index df648d5..db22a7b 100644
--- a/src/--layout/index.vue
+++ b/src/__layout/index.vue
@@ -6,7 +6,7 @@
-
+
@@ -24,16 +24,6 @@ export default {
},
mixins: [ResizeMixin],
computed: {
-
- key() {
- console.log("AppMain")
- console.log("AppMain")
- console.log(this.$route.path)
- console.log(this.$route.fullPath)
- return this.$route.fullPath
-
- },
-
sidebar() {
return this.$store.state.app.sidebar
},
diff --git a/src/--layout/mixin/ResizeHandler copy.js b/src/__layout/mixin/ResizeHandler copy.js
similarity index 100%
rename from src/--layout/mixin/ResizeHandler copy.js
rename to src/__layout/mixin/ResizeHandler copy.js
diff --git a/src/--layout/mixin/ResizeHandler.js b/src/__layout/mixin/ResizeHandler.js
similarity index 100%
rename from src/--layout/mixin/ResizeHandler.js
rename to src/__layout/mixin/ResizeHandler.js
diff --git a/src/api/api/dutys.js b/src/api/api/dutys.js
new file mode 100644
index 0000000..e0b7618
--- /dev/null
+++ b/src/api/api/dutys.js
@@ -0,0 +1,265 @@
+import request from '@/utils/request'
+//个人需要填写的考核项目
+export function myassessmentlist(params) {
+ return request({
+ url: '/dutys/myassessmentlist',
+ method: 'post',
+ params
+ })
+}
+//根据具体考核项目获取被考核部门
+export const getDutydepartlist = (data) => {
+ return request({
+ url: '/dutys/getDutydepartlist',
+ method: 'post',
+ data: data
+ })
+}
+//根据具体考核项目获取被考核部门
+export const addassessmentscore = (data) => {
+ return request({
+ url: '/dutys/addassessmentscore',
+ method: 'post',
+ data: data
+ })
+}
+//个人考核评价记录
+export const myevaluatelist = (data) => {
+ return request({
+ url: '/dutys/myevaluatelist',
+ method: 'post',
+ data: data
+ })
+}
+//根据部门和时间获取考核详情
+export const getdeparttimeassess = (data) => {
+ return request({
+ url: '/dutys/getdeparttimeassess',
+ method: 'post',
+ data: data
+ })
+}
+//获取企业微信发起基础配置
+export const getconfig = (data) => {
+ return request({
+ url: '/examine/getconfig',
+ method: 'post',
+ data: data
+ })
+}
+//以部门维度考核内容列表
+export const departmentassess = (data) => {
+ return request({
+ url: '/dutys/departmentassess',
+ method: 'post',
+ data: data
+ })
+}
+//根据部门和时间写入全部考核项分值
+export const departmentassessdata = (data) => {
+ return request({
+ url: '/dutys/departmentassessdata',
+ method: 'post',
+ data: data
+ })
+}
+//查看审批详细内容
+export const lookdepartmentassessinfo = (data) => {
+ return request({
+ url: '/noverify/lookdepartmentassessinfo',
+ method: 'post',
+ data: data
+ })
+}
+//查看本部门提交的和个人提交的审批
+export const lookpersonalordepartment = (data) => {
+ return request({
+ url: '/dutys/lookpersonalordepartment',
+ method: 'post',
+ data: data
+ })
+}
+//定性考核列表
+export const qualevalulist = (data) => {
+ return request({
+ url: '/eval/qualevalulist',
+ method: 'post',
+ data: data
+ })
+}
+//添加加分或减分
+export const additionandsubtractionscore = (data) => {
+ return request({
+ url: '/eval/plusorminuspoints',
+ method: 'post',
+ data: data
+ })
+}
+//流程列表
+export const seeflowlog = (data) => {
+ return request({
+ url: '/eval/seeflowlog',
+ method: 'post',
+ data: data
+ })
+}
+//文档上传
+export const upordown = (data) => {
+ return request({
+ url: '/upordown',
+ method: 'post',
+ data: data
+ })
+}
+// @Tags Api
+// @Summary 获取集团架构人员信息对照表
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body dbModel.Api true "获取集团架构"
+// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}"
+// @Router /group/grouplist [get]
+export const getgroupuser = (data) => {
+ return request({
+ url: '/group/getgroupuser',
+ method: 'post',
+ data
+ })
+}
+//划分责任人
+export const adddivisionresponsibility = (data) => {
+ return request({
+ url: '/eval/rersonincharge',
+ method: 'post',
+ data: data
+ })
+}
+//添加整改措施
+export const addcorrectivemeasures = (data) => {
+ return request({
+ url: '/eval/rectificationmeasures',
+ method: 'post',
+ data: data
+ })
+}
+//定量考核列表
+export const qualitativeevalration = (data) => {
+ return request({
+ url: '/eval/qualitativeevalration',
+ method: 'post',
+ data: data
+ })
+}
+//获取集团架构(集团+分厂)
+export const getgroupdepartmap = (data) => {
+ return request({
+ url: '/group/getgroupdepartmap',
+ method: 'post',
+ data: data
+ })
+}
+//获取分厂
+export const departmentlist = (data) => {
+ return request({
+ url: '/group/departmentlist',
+ method: 'post',
+ data: data
+ })
+}
+//定量考核打分
+export const addflowrationlog = (data) => {
+ return request({
+ url: '/eval/addflowrationlog',
+ method: 'post',
+ data: data
+ })
+}
+//提交定量审核
+export const quanOperation = (data) => {
+ return request({
+ url: '/quan/operation',
+ method: 'post',
+ data: data
+ })
+}
+//查看定性考核审批列表
+export const lookdutkscoreflow = (data) => {
+ return request({
+ url: '/eval/lookdutkscoreflow',
+ method: 'post',
+ data: data
+ })
+}
+//查看定量考核
+export const lookrationkscoreflow = (data) => {
+ return request({
+ url: '/eval/lookrationkscoreflow',
+ method: 'post',
+ data: data
+ })
+}
+//获取班组
+export const getteamlist = (data) => {
+ return request({
+ url: '/noverify/getteamlist',
+ method: 'post',
+ data: data
+ })
+}
+//获取人员
+export const stafflist = (data) => {
+ return request({
+ url: '/staff/stafflist',
+ method: 'post',
+ data: data
+ })
+}
+//新定性考核列表
+export const newqualitative = (data) => {
+ return request({
+ url: '/eval/newqualitative',
+ method: 'post',
+ data: data
+ })
+}
+//获取新定性考核详细指标
+export const newgetqualdetailedtarget = (data) => {
+ return request({
+ url: '/eval/newgetqualdetailedtarget',
+ method: 'post',
+ data: data
+ })
+}
+//加减分NEW
+export const plusorminuspoints = (data) => {
+ return request({
+ url: '/eval/plusorminuspointsnew',
+ method: 'post',
+ data: data
+ })
+}
+//流程图 1是整改2是不整改
+export const examineflow = (data) => {
+ return request({
+ url: '/eval/examineflow',
+ method: 'post',
+ data: data
+ })
+}
+//定性审批
+export const operation = (data) => {
+ return request({
+ url: '/qual/operation',
+ method: 'post',
+ data: data
+ })
+}
+//定量审批
+export const sanction = (data) => {
+ return request({
+ url: '/quan/sanction',
+ method: 'post',
+ data: data
+ })
+}
+
diff --git a/src/api/api/group.js b/src/api/api/group.js
new file mode 100644
index 0000000..633ce2c
--- /dev/null
+++ b/src/api/api/group.js
@@ -0,0 +1,24 @@
+import request from '@/utils/request'
+// @Tags Api
+// @Summary 获取集团架构(集团+分厂)
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body dbModel.Api true "获取集团架构"
+// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}"
+// @Router /group/grouplist [get]
+export const getgroupdepartmap = (data) => {
+ return request({
+ url: '/group/getgroupdepartmap',
+ method: 'post',
+ data: data
+ })
+ }
+ //以部门维度考核内容列表
+export const departmentassess = (data) => {
+ return request({
+ url: '/dutys/departmentassess',
+ method: 'post',
+ data: data
+ })
+ }
\ No newline at end of file
diff --git a/src/api/api/login/login.js b/src/api/api/login/login.js
new file mode 100644
index 0000000..6015f22
--- /dev/null
+++ b/src/api/api/login/login.js
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+//个人需要填写的考核项目
+export const oauth2 = (data) => {
+ return request({
+ url: '/base/oauth2',
+ method: 'post',
+ data: data
+ })
+ }
+// @Summary 用户端登录
+// @Produce application/json
+// @Param data body {username:"string",password:"string"}
+// @Router /base/login [post]
+export const mylogin = (data) => {
+ return request({
+ url: '/base/mylogin',
+ method: 'post',
+ data: data
+ })
+}
+export function logout() {
+ return request({
+ url: '/vue-admin-template/user/logout',
+ method: 'post'
+ })
+}
diff --git a/src/api/api/renwu.js b/src/api/api/renwu.js
new file mode 100644
index 0000000..97ea0c8
--- /dev/null
+++ b/src/api/api/renwu.js
@@ -0,0 +1,75 @@
+import request from '@/utils/request'
+//注销接口
+export function logout(params) {
+ return request({
+ url: '/logout.do',
+ method: 'get',
+ params
+ })
+}
+//登录接口
+export const login = (data) => {
+ return request({
+ url: '/login.do',
+ method: 'post',
+ data: data
+ })
+}
+//注册
+export const register = (data) => {
+ return request({
+ url: '/login/register',
+ method: 'post',
+ data: data
+ })
+}
+//绑定提现账户
+export const accountBinding = (data) => {
+ return request({
+ url: '/user/accountBinding',
+ method: 'post',
+ data: data
+ })
+}
+//申请提现
+export const withdraw = (data) => {
+ return request({
+ url: '/user/withdraw',
+ method: 'post',
+ data: data
+ })
+}
+//激活码激活
+export const cdkActivation = (data) => {
+ return request({
+ url: '/user/cdkActivation',
+ method: 'post',
+ data: data
+ })
+}
+//主页
+export const index = (data) => {
+ return request({
+ url: '/user/index',
+ method: 'post',
+ data: data
+ })
+}
+//开始任务按钮
+export const start = (data) => {
+ return request({
+ url: '/user/start',
+ method: 'post',
+ data: data
+ })
+}
+//校验是否到期并且上传收益接口
+export const checkAndAdd = (data) => {
+ return request({
+ url: '/user/checkAndAdd',
+ method: 'post',
+ data: data
+ })
+}
+
+
diff --git a/src/api/api/table.js b/src/api/api/table.js
new file mode 100644
index 0000000..2752f52
--- /dev/null
+++ b/src/api/api/table.js
@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+export function getList(params) {
+ return request({
+ url: '/vue-admin-template/table/list',
+ method: 'get',
+ params
+ })
+}
diff --git a/src/api/api/user.js b/src/api/api/user.js
new file mode 100644
index 0000000..1bda9a4
--- /dev/null
+++ b/src/api/api/user.js
@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+export function login(data) {
+ return request({
+ url: '/vue-admin-template/user/login',
+ method: 'post',
+ data
+ })
+}
+
+export function getInfo(token) {
+ return request({
+ url: '/vue-admin-template/user/info',
+ method: 'get',
+ params: { token }
+ })
+}
+// @Summary 获取验证码
+// @Produce application/json
+// @Param data body {username:"string",password:"string"}
+// @Router /base/captcha [post]
+// export const captcha = (data) => {
+// return service({
+// url: '/base/captcha',
+// method: 'post',
+// data: data
+// })
+// }
+export function captcha() {
+ return request({
+ url: '/base/captcha',
+ method: 'post'
+ })
+}
+// @Summary 用户端登录
+// @Produce application/json
+// @Param data body {username:"string",password:"string"}
+// @Router /base/login [post]
+export const mylogin = (data) => {
+ return request({
+ url: '/base/mylogin',
+ method: 'post',
+ data: data
+ })
+}
+// @Summary 超级登录
+// @Produce application/json
+// @Param data body {username:"string",password:"string"}
+// @Router /base/login [post]
+export const scancodelogin = (data) => {
+ return request({
+ url: '/base/scancodelogin',
+ method: 'post',
+ data: data
+ })
+}
+export function logout() {
+ return request({
+ url: '/vue-admin-template/user/logout',
+ method: 'post'
+ })
+}
+// @Summary 查询个人信息
+// @Produce application/json
+// @Param data body {username:"string",password:"string"}
+// @Router /base/login [post]
+export const scancode = (data) => {
+ return request({
+ url: '/noverify/scancode',
+ method: 'post',
+ data: data
+ })
+}
diff --git a/src/api/duty/duty.js b/src/api/duty/duty.js
index f2c0223..efa3457 100644
--- a/src/api/duty/duty.js
+++ b/src/api/duty/duty.js
@@ -8,6 +8,14 @@ export const getqualevallist = (data) => {
data: data
})
}
+//获取正在激活的考核方案
+export const getactivationplanversion = (data) => {
+ return request({
+ url: '/admin/getactivationplanversion',
+ method: 'post',
+ data: data
+ })
+}
//添加定性考核
export const addqualeval = (data) => {
return request({
@@ -384,4 +392,27 @@ export const geteitesuntarterinfo = (data) => {
data: data
})
}
-
+//复制部门考核版本
+export const copydepartdutyversio = (data) => {
+ return request({
+ url: '/admin/copydepartdutyversio',
+ method: 'post',
+ data: data
+ })
+}
+//删除定量考核目标设定
+export const delquantitativeconfig = (data) => {
+ return request({
+ url: '/admin/delquantitativeconfig',
+ method: 'post',
+ data: data
+ })
+}
+//编辑定量考核目标设定
+export const eitequantitativeconfig = (data) => {
+ return request({
+ url: '/admin/eitequantitativeconfig',
+ method: 'post',
+ data: data
+ })
+}
diff --git a/src/api/dutys.js b/src/api/dutys.js
index 60e5370..8b6f046 100644
--- a/src/api/dutys.js
+++ b/src/api/dutys.js
@@ -79,3 +79,11 @@ export const lookpersonalordepartment = (data) => {
data: data
})
}
+//获取正在激活的考核方案
+export const getactivationplanversion = (data) => {
+ return request({
+ url: '/admin/getactivationplanversion',
+ method: 'post',
+ data: data
+ })
+}
diff --git a/src/api/echarts/echarts.js b/src/api/echarts/echarts.js
new file mode 100644
index 0000000..f4ed3fc
--- /dev/null
+++ b/src/api/echarts/echarts.js
@@ -0,0 +1,33 @@
+import request from '@/utils/request'
+//计算定量考核组织范围,及起止年份
+export const getquantechartorgandyear = (data) => {
+ return request({
+ url: '/quant/getquantechartorgandyear',
+ method: 'post',
+ data: data
+ })
+ }
+//表格数据
+export const getplanversionvalid = (data) => {
+ return request({
+ url: '/ststic/getplanversionvalid',
+ method: 'post',
+ data: data
+ })
+}
+//计算定量考核数据
+export const quantechart = (data) => {
+ return request({
+ url: '/quant/quantechart',
+ method: 'post',
+ data: data
+ })
+}
+//成绩表查询
+export const departmenttranscript = (data) => {
+ return request({
+ url: '/ststic/departmenttranscript',
+ method: 'post',
+ data: data
+ })
+}
\ No newline at end of file
diff --git a/src/api/personnel/post.js b/src/api/personnel/post.js
new file mode 100644
index 0000000..25fb503
--- /dev/null
+++ b/src/api/personnel/post.js
@@ -0,0 +1,252 @@
+import request from '@/utils/request1'
+//添加职位(岗位)
+export const addpositioncont = (data) => {
+ return request({
+ url: '/org/addpositioncont',
+ method: 'post',
+ data: data
+ })
+ }
+//获取职位(岗位)详情
+export const getpositioncont = (data) => {
+ return request({
+ url: '/org/getpositioncont',
+ method: 'post',
+ data: data
+ })
+ }
+//编辑职位(岗位)状态或删除
+export const eitepositionstateordel = (data) => {
+ return request({
+ url: '/org/eitepositionstateordel',
+ method: 'post',
+ data: data
+ })
+}
+//职位(岗位)列表
+export const positionlist = (data) => {
+ return request({
+ url: '/org/positionlist',
+ method: 'post',
+ data: data
+ })
+}
+//编辑职位(岗位)
+export const eitepositioncont = (data) => {
+ return request({
+ url: '/org/eitepositioncont',
+ method: 'post',
+ data: data
+ })
+}
+//职务列表
+export const dutieslist = (data) => {
+ return request({
+ url: '/org/dutieslist',
+ method: 'post',
+ data: data
+ })
+}
+//行政组织列表
+export const govlist = (data) => {
+ return request({
+ url: '/org/govlist',
+ method: 'post',
+ data: data
+ })
+}
+//行政组织树
+export const govthree = (data) => {
+ return request({
+ url: '/org/govthree',
+ method: 'post',
+ data: data
+ })
+}
+//岗位(职位)配权
+export const getpositionrole = (data) => {
+ return request({
+ url: '/org/getpositionrole',
+ method: 'post',
+ data: data
+ })
+}
+//岗位(职位)配权
+export const positionallotment = (data) => {
+ return request({
+ url: '/permit/positionallotment',
+ method: 'post',
+ data: data
+ })
+}
+//人员列表
+export const stafflist = (data) => {
+ return request({
+ url: '/staff/stafflist',
+ method: 'post',
+ data: data
+ })
+}
+//职务分类列表
+export const utiesclasslist = (data) => {
+ return request({
+ url: '/org/utiesclasslist',
+ method: 'post',
+ data: data
+ })
+}
+//添加职务分类
+export const adddutiesclass = (data) => {
+ return request({
+ url: '/org/adddutiesclass',
+ method: 'post',
+ data: data
+ })
+}
+//删除职务分类
+export const delutiesclassinfo = (data) => {
+ return request({
+ url: '/org/delutiesclassinfo',
+ method: 'post',
+ data: data
+ })
+}
+//修改职务分类详情
+export const eiteutiesclassinfo = (data) => {
+ return request({
+ url: '/org/eiteutiesclassinfo',
+ method: 'post',
+ data: data
+ })
+}
+//获取职务分类详情
+export const getutiesclassinfo = (data) => {
+ return request({
+ url: '/org/getutiesclassinfo',
+ method: 'post',
+ data: data
+ })
+}
+//编辑职务
+export const eitedutiescont = (data) => {
+ return request({
+ url: '/org/eitedutiescont',
+ method: 'post',
+ data: data
+ })
+}
+//编辑职务状态或删除
+export const eitedutiesstatordel = (data) => {
+ return request({
+ url: '/org/eitedutiesstatordel',
+ method: 'post',
+ data: data
+ })
+}
+
+//获取职务详情
+export const getdutiescont = (data) => {
+ return request({
+ url: '/org/getdutiescont',
+ method: 'post',
+ data: data
+ })
+}
+//添加职务
+export const adddutiescont = (data) => {
+ return request({
+ url: '/org/adddutiescont',
+ method: 'post',
+ data: data
+ })
+}
+//行政组织类型列表
+export const govclasslist = (data) => {
+ return request({
+ url: '/org/govclasslist',
+ method: 'post',
+ data: data
+ })
+}
+//添加行政组织类型
+export const addgovclass = (data) => {
+ return request({
+ url: '/org/addgovclass',
+ method: 'post',
+ data: data
+ })
+}
+//编辑行政组织类型
+export const eitegovclasscont = (data) => {
+ return request({
+ url: '/org/eitegovclasscont',
+ method: 'post',
+ data: data
+ })
+}
+//获取行政组织类型
+export const getgovclasscont = (data) => {
+ return request({
+ url: '/org/getgovclasscont',
+ method: 'post',
+ data: data
+ })
+}
+//编辑行政组织类型状态或删除
+export const eitegovclassstateordel = (data) => {
+ return request({
+ url: '/org/eitegovclassstateordel',
+ method: 'post',
+ data: data
+ })
+}
+//编辑行政组织状态或删除
+export const eitegovstateordel = (data) => {
+ return request({
+ url: '/org/eitegovstateordel',
+ method: 'post',
+ data: data
+ })
+}
+//添加行政组织
+export const addgovcont = (data) => {
+ return request({
+ url: '/org/addgovcont',
+ method: 'post',
+ data: data
+ })
+}
+//编辑行政组织
+export const eitegovcont = (data) => {
+ return request({
+ url: '/org/eitegovcont',
+ method: 'post',
+ data: data
+ })
+}
+//获取行政组织详情
+export const getgovcont = (data) => {
+ return request({
+ url: '/org/getgovcont',
+ method: 'post',
+ data: data
+ })
+}
+//人员列表(新)
+export const archiveslist = (data) => {
+ return request({
+ url: '/staff/archiveslist',
+ method: 'post',
+ data: data
+ })
+}
+//个人档案
+export const archivescont = (data) => {
+ return request({
+ url: '/staff/archivescont',
+ method: 'post',
+ data: data
+ })
+}
+
+
diff --git a/src/api/user.js b/src/api/user.js
index 5f8c5d4..f294bf1 100644
--- a/src/api/user.js
+++ b/src/api/user.js
@@ -159,3 +159,14 @@ export const scancodelogin = (data) => {
data: data
})
}
+// @Summary 登出
+// @Produce application/json
+// @Param data body {username:"string",password:"string"}
+// @Router /base/login [post]
+export const signout = (data) => {
+ return request({
+ url: '/base/signout',
+ method: 'post',
+ data: data
+ })
+}
diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue
index a5454fb..63783eb 100644
--- a/src/layout/components/AppMain.vue
+++ b/src/layout/components/AppMain.vue
@@ -3,6 +3,8 @@
+
+
@@ -14,7 +16,9 @@ export default {
console.log("AppMain")
console.log("AppMain")
console.log(this.$route.path)
- return this.$route.path
+ console.log(this.$route.fullPath)
+ return this.$route.fullPath
+
}
}
}
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index de9f067..b2c3ef8 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -9,7 +9,7 @@
- {{userInfo.groupName}}{{userInfo.roleName}}
+ {{userInfo.name}}{{userInfo.number}}
@@ -38,6 +38,7 @@
import { mapGetters } from 'vuex'
import Breadcrumb from '@/components/Breadcrumb'
import Hamburger from '@/components/Hamburger'
+import { signout } from '@/api/user'
export default {
data () {
@@ -60,13 +61,13 @@ export default {
this.$router.push('/login')
}
this.userInfo=JSON.parse(sessionStorage.getItem('userinfo'));
-
},
methods: {
toggleSideBar() {
this.$store.dispatch('app/toggleSideBar')
},
- logout() {
+ async logout() {
+ const res = await signout()
this.$store.commit('user/loginOut')
}
}
diff --git a/src/layout/components/Sidebar/Link.vue b/src/layout/components/Sidebar/Link.vue
index cd46e19..09075ed 100644
--- a/src/layout/components/Sidebar/Link.vue
+++ b/src/layout/components/Sidebar/Link.vue
@@ -14,10 +14,6 @@ export default {
required: true
}
},
- created () {
- console.log("tiaozhuan")
- },
-
computed: {
isExternal() {
return isExternal(this.to)
@@ -38,7 +34,6 @@ export default {
console.log("this.type")
console.log(this.type)
if (this.isExternal) {
- console.log("isExternal")
return {
href: to,
target: '_blank',
diff --git a/src/--layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem copy.vue
similarity index 71%
rename from src/--layout/components/Sidebar/SidebarItem.vue
rename to src/layout/components/Sidebar/SidebarItem copy.vue
index 9c308f2..a418c3d 100644
--- a/src/--layout/components/Sidebar/SidebarItem.vue
+++ b/src/layout/components/Sidebar/SidebarItem copy.vue
@@ -1,23 +1,23 @@
-
-
-
-
-
+
+
+
+
+
-
+
-
+
diff --git a/src/layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem.vue
index a418c3d..9c308f2 100644
--- a/src/layout/components/Sidebar/SidebarItem.vue
+++ b/src/layout/components/Sidebar/SidebarItem.vue
@@ -1,23 +1,23 @@
-
-
-
-
-
+
+
+
+
+
-
+
-
+
diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue
index da39034..b1fef16 100644
--- a/src/layout/components/Sidebar/index.vue
+++ b/src/layout/components/Sidebar/index.vue
@@ -2,7 +2,7 @@
-
-
-
+
+ -->
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+
+
+
+
diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue
new file mode 100644
index 0000000..3929722
--- /dev/null
+++ b/src/layout/components/TagsView/index.vue
@@ -0,0 +1,294 @@
+
+
+
+
+ {{ generateTitle(tag.title) }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/historyComponent/history.vue b/src/layout/components/historyComponent/history.vue
new file mode 100644
index 0000000..8dffcc6
--- /dev/null
+++ b/src/layout/components/historyComponent/history.vue
@@ -0,0 +1,326 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/index.vue b/src/layout/index.vue
index db22a7b..ed63580 100644
--- a/src/layout/index.vue
+++ b/src/layout/index.vue
@@ -5,14 +5,17 @@
+
+
diff --git a/src/views/assessmentProgram/assessmentDimension.vue b/src/views/assessmentProgram/assessmentDimension.vue
index 1a533b4..d05f809 100644
--- a/src/views/assessmentProgram/assessmentDimension.vue
+++ b/src/views/assessmentProgram/assessmentDimension.vue
@@ -73,7 +73,7 @@
-
+
@@ -87,7 +87,7 @@
-
+
diff --git a/src/views/assessmentProgram/departmentalAssessment.vue b/src/views/assessmentProgram/departmentalAssessment.vue
index d6da030..0bbdbd9 100644
--- a/src/views/assessmentProgram/departmentalAssessment.vue
+++ b/src/views/assessmentProgram/departmentalAssessment.vue
@@ -4,17 +4,17 @@
-
+
+ :value="item.id">
-
+
- 生成部门考核方案
+ 生成部门考核方案
@@ -81,12 +81,12 @@
type="text"
@click="showDetails(scope.row)"
>查看详情
-
+ @click="copyShow(scope.row)"
+ >复制
-->
-
+
-
+
-
+
+
+
@@ -424,7 +417,7 @@
prop="referencescore"
>
-
+
@@ -436,9 +429,10 @@
prop="status"
>
-
+
使用
禁用
+ 观察
@@ -510,6 +504,13 @@
+
+
+ 使用
+ 禁用
+ 观察
+
+
班
@@ -518,9 +519,10 @@
月
季度
年
+ 半年
-
+
每班{{scope.row.cycleattr}}次
每天{{scope.row.cycleattr}}次
@@ -528,6 +530,7 @@
每月{{scope.row.cycleattr}}次
每季度{{scope.row.cycleattr}}次
每年{{scope.row.cycleattr}}次
+ 每半年{{scope.row.cycleattr}}次
@@ -569,7 +572,7 @@
-
+
+
+
+ 使用
+
+ 观察
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 纬度合计分:{{weiduFractionCopy}}
+
+
+
+
+
+
+
+
+
+ 考核纬度:{{item.name}}
+
+
+
+
+
+ 指标合计分:{{item.zhiFraction}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 使用
+ 禁用
+ 观察
+
+
+
+
+
+
+
+
+
+
+
+
@@ -595,7 +710,7 @@ import { dutyclasslist } from '@/api/duty/dimension'
import { gettasktarget,gettasktargetsun,gettasktargetcontary,addqualeval,
addration,departmenttasklist,addqubatch,bumenList,departmentlistnew,adddepartmentdutyinfo,
newgerderpattarlist,newadddepartduty,deldepartdutytarger,deldepartduty,departdutyplanversion,adddepartdutyversio,
-lookdepartdutyversio,onoffdepartdutyversio,eitedepartexplain
+lookdepartdutyversio,onoffdepartdutyversio,eitedepartexplain,copydepartdutyversio
} from '@/api/duty/duty'
import projectDialog from '@/components/projectDialog/index.vue'
import { dutylist,getdutyinfo,eitedutyinfo,eitedutystate } from '@/api/duty/quantitativeIndicators'
@@ -612,7 +727,12 @@ export default {
},
data() {
return {
+ copyDialogFormVisible:false,
+ weiduFractionCopy:0,
+ weiDuCopyList:[],
+ copyForm1:{},
props1: {
+
checkStrictly: true,
value: "id",
label: "name",
@@ -636,9 +756,9 @@ export default {
showUser:false,
// 选择员工配置项
userProps: {
- value: "id",
+ value: "key",
label: "name",
- children: "groupUser",
+ children: "govlist",
emitPath:false,
multiple: true
},
@@ -777,7 +897,7 @@ export default {
},
// 新条件查询变量
searchVersion: {
- group: '',
+ group: 2,
deaprtid:'',
year: "", //年
},
@@ -887,6 +1007,36 @@ export default {
this.detailsShow=true
},
+ // 显示复制弹窗
+ async copyShow(row){
+ const that = this
+ const from = {
+ key:row.key
+ }
+ const res = await copydepartdutyversio(from)
+ this.copyForm1=res.data
+
+ this.weiDuCopyList=res.data.child
+ this.weiduFractionCopy=0
+ this.weiDuCopyList.forEach(function(element) {
+ element.zhiFraction=0
+ });
+ this.weiDuCopyList.forEach(function(element) {
+ if (element.child!=null) {
+ element.child.forEach(function(iteam){
+ if(iteam.status!=2){
+ element.zhiFraction+=iteam.referencescore
+ }
+
+ })
+ }
+ });
+ this.weiduFractionCopy=0
+ this.weiDuCopyList.forEach(function(element) {
+ that.weiduFractionCopy+=element.zhiFraction
+ });
+ this.copyDialogFormVisible=true
+ },
// 删除部门考核
async deldetePartDuty(row){
const deleFrom = {
@@ -918,7 +1068,9 @@ export default {
qualevalid:row.qualevalid,
deaprtid:row.parentid,
dimension:row.dimension,
- targetid:row.target
+ targetid:row.target,
+ state:row.state,
+ operator:row.userlist
},
// this.editTargerFrom.content=row.content
// this.editTargerFrom.group=row.group
@@ -944,7 +1096,13 @@ export default {
},
// 删除部门考核指标
async deldepTarger(row){
- const deleFrom = {
+ this.$confirm('此操作将永久删除, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ .then(async() => {
+ const deleFrom = {
group: row.group,
deaprtid: row.parentid,
dimension: "1", //维度
@@ -958,18 +1116,89 @@ export default {
})
this.getDataList()
}
+ })
+
},
// 指标分值合计
zhibiaofen(){
+ const that=this
+ this.Fraction=0
+ this.weiDuList.forEach(function(element) {
+ element.zhiFraction=0
+ });
+ this.weiDuList.forEach(function(element) {
+ if (element.child!=null) {
+ element.child.forEach(function(iteam){
+ if(iteam.status!=2){
+ element.zhiFraction+=iteam.referencescore
+ }
+
+ })
+ }
+ });
+ this.weiduFraction=0
+ this.weiDuList.forEach(function(element) {
+ that.weiduFraction+=element.zhiFraction
+ });
+ },
+ // 指标分值合计
+ zhibiaofenCopy(){
+ const that=this
+ this.weiduFractionCopy=0
+ this.weiDuCopyList.forEach(function(element) {
+ element.zhiFraction=0
+ });
+ this.weiDuCopyList.forEach(function(element) {
+ if (element.child!=null) {
+ element.child.forEach(function(iteam){
+ if(iteam.status!=2){
+ element.zhiFraction+=iteam.referencescore
+ }
+
+ })
+ }
+ });
+ this.weiduFractionCopy=0
+ this.weiDuCopyList.forEach(function(element) {
+ that.weiduFractionCopy+=element.zhiFraction
+ });
+ },
+ // 复制弹窗点击禁用
+ zhibiaostatusCopy(row){
+ const that=this
+ this.weiduFractionCopy=0
+ this.weiDuCopyList.forEach(function(element) {
+ element.zhiFraction=0
+ });
+ this.weiDuCopyList.forEach(function(element) {
+ if (element.child!=null) {
+ element.child.forEach(function(iteam){
+ if(iteam.status!=2){
+ element.zhiFraction+=iteam.referencescore
+ }
+
+ })
+ }
+ });
+ this.weiduFractionCopy=0
+ this.weiDuCopyList.forEach(function(element) {
+ that.weiduFractionCopy+=element.zhiFraction
+ });
+ },
+ // 点击禁用
+ zhibiaostatus(row){
const that=this
this.Fraction=0
this.weiDuList.forEach(function(element) {
element.zhiFraction=0
- });
+ });
this.weiDuList.forEach(function(element) {
if (element.child!=null) {
element.child.forEach(function(iteam){
- element.zhiFraction+=iteam.referencescore
+ if(iteam.status!=2){
+ element.zhiFraction+=iteam.referencescore
+ }
+
})
}
});
@@ -983,32 +1212,81 @@ export default {
},
// 组合提交
async zhuheTi(){
+
if (this.weiduFraction==100) {
- console.log(this.weiDuList)
+ const loading = this.$loading({
+ lock: true,
+ text: 'Loading',
+ spinner: 'el-icon-loading',
+ background: 'rgba(0, 0, 0, 0.7)'
+ });
this.form.group=this.form.group.toString()
this.form.parentid=this.form.parentid.toString()
this.form.child=this.weiDuList
// const res = await adddepartmentdutyinfo(this.form)
// const res = await newadddepartduty(this.form)
+ // this.demDialogFormVisible=false
const res = await adddepartdutyversio(this.form)
if (res.code === 0) {
this.$message({
type: 'success',
message: '操作成功!'
})
- this.demDialogFormVisible=false
+ this.getVersionDataList()
this.form={
- group:'',
- parentid:'',
- child:[]
- }
+ group:'',
+ parentid:'',
+ child:[]
+ }
+
}
this.weiduFraction=0
this.form={
- group:'',
- parentid:'',
- child:[]
+ group:'',
+ parentid:'',
+ child:[]
+ }
+ loading.close();
+ }else{
+ this.$message({
+ type: 'error',
+ message: '总分不是100!'
+ })
+ }
+
+ },
+ // 复制组合提交
+ async zhuheTiCopy(){
+
+ if (this.weiduFractionCopy==100) {
+ const loading = this.$loading({
+ lock: true,
+ text: 'Loading',
+ spinner: 'el-icon-loading',
+ background: 'rgba(0, 0, 0, 0.7)'
+ });
+ const from ={
+ group:this.copyForm1.group.toString(),
+ parentid:this.copyForm1.department.toString(),
+ child:this.weiDuCopyList,
+ year:this.copyForm1.year
}
+ // const res = await adddepartmentdutyinfo(this.form)
+ // const res = await newadddepartduty(this.form)
+ // this.demDialogFormVisible=false
+ const res = await adddepartdutyversio(from)
+ if (res.code === 0) {
+ this.$message({
+ type: 'success',
+ message: '操作成功!'
+ })
+ this.getVersionDataList()
+
+
+ }
+ this.weiduFractionCopy=0
+
+ loading.close();
}else{
this.$message({
type: 'error',
@@ -1072,6 +1350,7 @@ export default {
departmentid: row.parentid, //被考核部门
dimension: row.dimension, //维度
target: row.target, //考核指标
+ versionnumber: row.qualevalid //版本号
}
const res = await departmenttasklist(methodData)
if (res.code==0) {
@@ -1150,15 +1429,15 @@ export default {
// colspan: _col
// };
// }
- if (columnIndex === 10) {
- const _row = this.spanArr[rowIndex];
- const _col = _row > 0 ? 1 : 0;
- return {
- // [0,0] 表示这一行不显示, [2,1]表示行的合并数
- rowspan: _row,
- colspan: _col
- };
- }
+ // if (columnIndex === 10) {
+ // const _row = this.spanArr[rowIndex];
+ // const _col = _row > 0 ? 1 : 0;
+ // return {
+ // // [0,0] 表示这一行不显示, [2,1]表示行的合并数
+ // rowspan: _row,
+ // colspan: _col
+ // };
+ // }
if (columnIndex === 0||columnIndex === 1) {
const _row = this.spanArr1[rowIndex];
const _col = _row > 0 ? 1 : 0;
@@ -1168,7 +1447,7 @@ export default {
colspan: _col
};
}
- if (columnIndex === 2||columnIndex === 3||columnIndex === 4||columnIndex === 5||columnIndex === 6||columnIndex === 7||columnIndex === 8||columnIndex === 9) {
+ if (columnIndex === 2||columnIndex === 3||columnIndex === 4||columnIndex === 5||columnIndex === 6||columnIndex === 7||columnIndex === 8||columnIndex === 9||columnIndex === 10) {
const _row = this.spanArr2[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
@@ -1226,6 +1505,24 @@ export default {
})
}
});
+ this.Fraction=0
+ this.weiDuList.forEach(function(element) {
+ element.zhiFraction=0
+ });
+ this.weiDuList.forEach(function(element) {
+ if (element.child!=null) {
+ element.child.forEach(function(iteam){
+ if(iteam.status!=2){
+ element.zhiFraction+=iteam.referencescore
+ }
+
+ })
+ }
+ });
+ this.weiduFraction=0
+ this.weiDuList.forEach(function(element) {
+ that.weiduFraction+=element.zhiFraction
+ });
console.log(this.weiDuList)
}
},
@@ -1287,8 +1584,42 @@ export default {
// 获取员工列表
async getSystemadminlist(){
const res = await getgroupuser()
- this.grouplistBackup=res.data.list
+ this.grouplistBackup=res.data
+ this.grouplistBackup.forEach(item => {
+ if (item.govlist != null) {
+ // 即:this.digui(item);在这地方添加的
+ item.govlist.forEach(items => {
+ // 下面的就是执行递归的方法,因为我是从第二层才开始需要往下挖的,所以这里多了个forEach,如果从第一层起,从item就好了,即:this.digui(item);在上面添加
+ this.digui(items); // 这里是源头,把一个对象开始递归,开始循环
+ // 如果想看完整数据,那么是在这里打印数据哦
+ console.log(items, '看我查看完整的数据哦')
+ // 因为上一步递归时,就已经把循环children的动作做完了,这里是验收递归方法的地方。
+ })
+ } else {
+ item.govlist=item.child
+ // 如果第一层没有子项做的操作。。。。。
+ }
+ })
},
+ // 树形结构递归
+ digui (item) {
+ // 一层一层往下面执行,循环,直到不满足情况的条件下,会自动跳出这个递归方法,然后又到上面方法的源头处,开始执行下一个对象。。。
+ if (item.govlist != null) {
+ // 因为三级联动的数据格式是value和label,所以需要自己手动添加,没有的忽略。
+ item.govlist.forEach(ff => {
+ // 这里就是判断他的children下面还有没有值,有的话我就要往下挖,就又开始自己调用自己了
+ this.digui(ff)
+ })
+ } else {
+ // 这里就是判断,如果我这一层的children下面没有东西的时候该做什么操作
+ // 要添加value和label,否则会看不到标签名字和值
+ // --------------------------分割线---------------------------------
+
+ item.govlist=item.child
+
+ }
+ // 到这里为止,不能在这里打印数据,不然数据就是个断层的,因为在这里打印的数据是当前循环的这一层的数据,如果想看完整数据效果,那么就需要在递归方法第一次调用的地方打印需要递归的值,即上一个方法中。
+ },
// 获取公司
async getGrouplist(){
const idFrom = {
@@ -1368,6 +1699,7 @@ export default {
this.getVersionDataList()
}
}
+ this.getVersionDataList()
},
// 重置搜索条件
onReset() {
diff --git a/src/views/assessmentProgram/qualitativeIndicators.vue b/src/views/assessmentProgram/qualitativeIndicators.vue
index 2005e10..8814b22 100644
--- a/src/views/assessmentProgram/qualitativeIndicators.vue
+++ b/src/views/assessmentProgram/qualitativeIndicators.vue
@@ -99,7 +99,7 @@
-
+
@@ -179,7 +179,7 @@
-
+
-
+
@@ -372,7 +372,7 @@
label="执行人"
align="center">
-
+
@@ -459,7 +459,7 @@
label="执行人"
align="center">
-
+
-
+
-
+
@@ -536,19 +536,19 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
@@ -596,12 +596,20 @@
-
+
+
+
+
+
+ {{scope.row.unit}}
+
+
+
现场检查
- 资料检查
+ 资料审查
事件触发
@@ -609,19 +617,19 @@
- {{scope.row.cycleattrdettar}}/
-
- 月
-
-
- 季度
-
-
- 半年
-
-
- 年
-
+
+
+
+ {{scope.row.censorrate}}次 /
+ 班
+ 天
+ 周
+ 月
+ 季度
+ 半年
+ 年
+
+
@@ -673,16 +681,16 @@
-
+
-
-
+
+
-
+
@@ -692,7 +700,7 @@
-
+
+
+
+
+
+
+
+
@@ -755,11 +770,11 @@
v-model="xizeData.detailedtargetcontent">
-
+
-
+
@@ -769,7 +784,7 @@
-
+
-
+
@@ -842,6 +857,7 @@ export default {
},
data() {
return {
+ methodData:{},
searchfu:{},
searchDepartmentList:[],
unitDataList:[
@@ -1075,7 +1091,7 @@ export default {
this.getDataList()
this.getGrouplist()
this.getbumenlist()
- // this.initialDepartment()
+ this.initialDepartment()
// 获取部门列表
// this.departmentlist()
this.getDutyclasslist()
@@ -1117,7 +1133,13 @@ export default {
methods: {
// 删除子栏目
async deleteSun(row){
- const deleFrom={
+ this.$confirm('此操作将永久删除, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ .then(async() => {
+ const deleFrom={
// id: row.targetsun
id: row.targetsun, //子栏目ID
assid: row.target //指标Id
@@ -1130,6 +1152,8 @@ export default {
})
this.getzhilanmuList()
}
+ })
+
},
//新增考核标准
async addxize(){
@@ -1146,6 +1170,14 @@ export default {
},
// 修改细则
async xiuxize(){
+ if (this.xizeData.cycle=='') {
+ this.xizeData.cycle=0
+ }
+ if (this.xizeData.censorrate=='') {
+ this.xizeData.censorrate=0
+ }
+
+ this.xizeData.departmentid=this.xizeData.departmentid.map(String)
this.xizeData.censortype=this.xizeData.censortype.map(String)
const resa = await neweitedetailedtarget(this.xizeData)
this.getzhilanmuList()
@@ -1189,7 +1221,7 @@ export default {
cycleattr: this.targetsunList.cycleattr, //辅助计数
userlist: this.targetsunList.reportmap//执行人
}
- this.RulesList.push(JSON.parse(JSON.stringify(this.rulesObject )))
+ this.RulesList.push(JSON.parse(JSON.stringify(this.rulesObject)))
console.log("gettargetinfo")
console.log(this.RulesList)
this.cardShow=true
@@ -1202,7 +1234,13 @@ export default {
},
// 删除细则小项
async deleteSmall(row){
- console.log(row)
+ this.$confirm('此操作将永久删除, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ .then(async() => {
+ console.log(row)
const deleFrom={
// outid: row.id
id: row.detailedtarget, //指标明细ID
@@ -1216,6 +1254,8 @@ export default {
})
this.getzhilanmuList()
}
+ })
+
},
// 数值变化触发
FractionBian(){
@@ -1250,32 +1290,52 @@ export default {
// }
// },
async onSubmitsearchfu(){
- const methodData={
- //type: 1, //1:定性考核;2:定量考核
- group: this.searchfu.group, //归属集团
- //departmentid: this.rowZhiData.parentid, //被考核部门
- departid:this.searchfu.deaprtid.toString(),
- dimension: this.rowZhiData.dimension, //维度
- targetid: this.rowZhiData.target, //考核指标
- censortype: this.rowZhiData.censortype, //检查方式(1:现场检查;2:资料检查;3:事件触发)
- censorcont: this.rowZhiData.censorcont //检查依据
+ // const methodData={
+ // //type: 1, //1:定性考核;2:定量考核
+ // group: this.searchfu.group, //归属集团
+ // //departmentid: this.rowZhiData.parentid, //被考核部门
+ // departid:this.searchfu.deaprtid,
+ // dimension: this.rowZhiData.dimension, //维度
+ // targetid: this.rowZhiData.target, //考核指标
+ // censortype: this.searchfu.censortype.map(String), //检查方式(1:现场检查;2:资料检查;3:事件触发)
+ // censorrate: this.searchfu.censorrate //检查依据
+ // }
+ // console.log("methodData.departid")
+ // console.log(methodData.departid)
+ // this.methodData.censortype=this.methodData.censortype.map(String)
+ // this.methodData.departid=this.methodData.departid.toString()
+ console.log(this.methodData.departid)
+ if (this.methodData.departid!=undefined) {
+ this.methodData.departid=this.methodData.departid.toString()
+ console.log("departid.toString")
+ }
+
+ if (this.methodData.censorrate=="") {
+ this.methodData.censorrate=0
+ // this.$delete(this.methodData,'censorrate')
}
- const res = await lookdutytargetinfo(methodData)
+
+ // const res = await lookdutytargetinfo(methodData)
+ const res = await lookdutytargetinfo(this.methodData)
+ // this.methodData.censortype=this.methodData.censortype.map(Number)
+ // this.$delete(this.methodData,'censorrate')
if (res.code==0) {
this.methodList=res.data
}
+
+ console.log(this.methodData)
},
// 获取子栏目列表
async getzhilanmuList(){
- const methodData={
+ this.methodData={
//type: 1, //1:定性考核;2:定量考核
group: this.rowZhiData.group, //归属集团
//departmentid: this.rowZhiData.parentid, //被考核部门
dimension: this.rowZhiData.dimension, //维度
targetid: this.rowZhiData.target, //考核指标
}
- const res = await lookdutytargetinfo(methodData)
+ const res = await lookdutytargetinfo(this.methodData)
if (res.code==0) {
this.methodList=res.data
@@ -1622,7 +1682,7 @@ export default {
async initialDepartment(){
const departmentFrom={
-
+ id:2
}
const res = await departmentlist(departmentFrom)
this.searchDepartmentList=res.data
@@ -1699,6 +1759,9 @@ export default {
}
const res = await getneweitedetailedtarget(from)
this.xizeData=res.data
+ console.log("this.xizeData.addorreduce")
+ console.log(this.xizeData.addorreduce)
+ console.log(this.xizeData.addorreduce)
this.xizeData.censortype=this.xizeData.censortype.map(Number)
this.xizeDig=true
},
@@ -1782,9 +1845,20 @@ export default {
async enterDialog(){
console.log("this.rulesCopyList")
console.log(this.rulesCopyList)
+ const rLoading = this.openLoading();
this.RulesList.forEach(element=>{
element.censortype=element.censortype.map(String)
})
+ this.RulesList.forEach(element=>{
+ if (element.cycle=='') {
+ element.cycle=0
+ }
+ if (element.censorrate=='') {
+ element.censorrate=0
+ }
+ })
+
+
this.$refs.addForm.validate(async valid => {
if (valid) {
this.form.evaluationlist=this.RulesList
@@ -1811,10 +1885,12 @@ export default {
this.Fraction=0;
this.form.targetsuntitle='';
this.getDataList();
+ rLoading.close();
}else{
-
}
-
+ this.form.group=parseInt(this.form.group);
+ this.form.target=parseInt(this.form.target);
+ console.log(this.form)
}
})
},
diff --git a/src/views/basicInfo/project.vue b/src/views/basicInfo/project.vue
index 87c2764..968d163 100644
--- a/src/views/basicInfo/project.vue
+++ b/src/views/basicInfo/project.vue
@@ -20,7 +20,7 @@
-->
-
+
@@ -80,7 +80,13 @@
年
-
+
+
+ 自动计分
+ 手动计分
+
+
+
@@ -157,7 +163,7 @@
-->
-
+
@@ -179,11 +185,18 @@
-
+
+
+
+
+
+
+
+
-
@@ -220,7 +232,7 @@
-->
-
+
@@ -243,11 +255,17 @@
-
+
+
+
+
+
+
+
{
+ if (item.govlist != null) {
+ // 即:this.digui(item);在这地方添加的
+ item.govlist.forEach(items => {
+ // 下面的就是执行递归的方法,因为我是从第二层才开始需要往下挖的,所以这里多了个forEach,如果从第一层起,从item就好了,即:this.digui(item);在上面添加
+ this.digui(items); // 这里是源头,把一个对象开始递归,开始循环
+ // 如果想看完整数据,那么是在这里打印数据哦
+ console.log(items, '看我查看完整的数据哦')
+ // 因为上一步递归时,就已经把循环children的动作做完了,这里是验收递归方法的地方。
+ })
+ } else {
+ item.govlist=item.child
+ // 如果第一层没有子项做的操作。。。。。
+ }
+ })
+ console.log(this.grouplistBackup)
},
// 获取部门
async getGrouplist(){
@@ -430,6 +467,25 @@ export default {
}
})
},
+ // 树形结构递归
+ digui (item) {
+ // 一层一层往下面执行,循环,直到不满足情况的条件下,会自动跳出这个递归方法,然后又到上面方法的源头处,开始执行下一个对象。。。
+ if (item.govlist != null) {
+ // 因为三级联动的数据格式是value和label,所以需要自己手动添加,没有的忽略。
+ item.govlist.forEach(ff => {
+ // 这里就是判断他的children下面还有没有值,有的话我就要往下挖,就又开始自己调用自己了
+ this.digui(ff)
+ })
+ } else {
+ // 这里就是判断,如果我这一层的children下面没有东西的时候该做什么操作
+ // 要添加value和label,否则会看不到标签名字和值
+ // --------------------------分割线---------------------------------
+
+ item.govlist=item.child
+
+ }
+ // 到这里为止,不能在这里打印数据,不然数据就是个断层的,因为在这里打印的数据是当前循环的这一层的数据,如果想看完整数据效果,那么就需要在递归方法第一次调用的地方打印需要递归的值,即上一个方法中。
+ },
// 新增按钮
showAdd(){
this.dialogFormVisible=true;
diff --git a/src/views/basicInfo/target.vue b/src/views/basicInfo/target.vue
index 33c4d0e..8216cbd 100644
--- a/src/views/basicInfo/target.vue
+++ b/src/views/basicInfo/target.vue
@@ -4,14 +4,15 @@
-
+
+
@@ -24,9 +25,16 @@
+
+
+
+
查询
- 重置
+
@@ -52,14 +60,20 @@
icon="el-icon-view"
size="small"
type="text"
- @click="showJiang(scope.row)"
+ @click="showJiangZhi(scope.row)"
>查看
-
+ >删除
@@ -71,7 +85,7 @@
-
+
-
+
+
@@ -177,6 +192,7 @@
v-model="fengDing"
clearable>
封顶值
+ %
@@ -194,11 +210,11 @@
-->
-
+ style="width:85%;margin: 0 auto;">
-
+
+ %
+
-
-
+
+ style="width:85%;margin: 0 auto;">
-
+
+ %
+
-
-
+
+
+ style="width:85%;margin: 0 auto;">
-
+
+ %
+
-
+
@@ -313,7 +336,7 @@
-
+
@@ -329,8 +352,48 @@
-
-
+
+
+
+
+ 批量修改目标值
+
+
+
+
+
+
+ 零奖值
+
+
+
+
+ 全奖值
+
+
+
+
+ 封顶值
+ %
+
+
+
+ 确定
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ %
+
+
-
+
+
+
+
+
+
+
+
+
+ 第{{scope.row.timecopy}}月
+ 第{{scope.row.timecopy}}季度
+ {{scope.row.timecopy}}
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.cappingval}}%
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/echarts/echarts1.vue b/src/views/echarts/echarts1.vue
new file mode 100644
index 0000000..875d478
--- /dev/null
+++ b/src/views/echarts/echarts1.vue
@@ -0,0 +1,824 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.targetname}}
+ {{scope.row.targetname}}
+
+
+
+
+
+
+
+
+ 班
+ 天
+ 周
+ 月
+ 季度
+ 年
+
+
+
+
+ 每班{{scope.row.cycleattr}}次
+ 每天{{scope.row.cycleattr}}次
+ 每周{{scope.row.cycleattr}}次
+ 每月{{scope.row.cycleattr}}次
+ 每季度{{scope.row.cycleattr}}次
+ 每年{{scope.row.cycleattr}}次
+
+
+
+
+
+
+
+ {{iteam}}
+
+
+
+
+
+
+
+
+
+ {{item}}
+
+
+
+
+
+
+
+
+
+
+ {{scope.row}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/echarts/table.vue b/src/views/echarts/table.vue
new file mode 100644
index 0000000..4de967f
--- /dev/null
+++ b/src/views/echarts/table.vue
@@ -0,0 +1,1196 @@
+
+
+
+
+
+
+
+
+
+
+ -
+ {{scope.row.a}}
+
+
+
+
+ -
+ {{scope.row.b}}
+
+
+
+
+ -
+ {{scope.row.C}}
+
+
+
+
+ -
+ {{scope.row.d}}
+
+
+
+
+ -
+ {{scope.row.e}}
+
+
+
+
+ -
+ {{scope.row.f}}
+
+
+
+
+ -
+ {{scope.row.g}}
+
+
+
+
+ -
+ {{scope.row.h}}
+
+
+
+
+ -
+ {{scope.row.i}}
+
+
+
+
+ -
+ {{scope.row.J}}
+
+
+
+
+ -
+ {{scope.row.K}}
+
+
+
+
+ -
+ {{scope.row.L}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+ {{scope.row.targetname}}
+ {{scope.row.targetname}}
+
+
+
+
+
+
+
+
+ 班
+ 天
+ 周
+ 月
+ 季度
+ 年
+ 半年
+
+
+
+
+ 每班{{scope.row.cycleattr}}次
+ 每天{{scope.row.cycleattr}}次
+ 每周{{scope.row.cycleattr}}次
+ 每月{{scope.row.cycleattr}}次
+ 每季度{{scope.row.cycleattr}}次
+ 每年{{scope.row.cycleattr}}次
+ 每半年{{scope.row.cycleattr}}次
+
+
+
+
+
+
+
+ {{iteam}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.score[index].actualscore}}
+
+
+ {{scope.row.score[index].actualscore}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+ {{scope.row.targetname}}
+ {{scope.row.targetname}}
+
+
+
+
+
+
+
+
+ 班
+ 天
+ 周
+ 月
+ 季度
+ 年
+ 半年
+
+
+
+
+ 每班{{scope.row.cycleattr}}次
+ 每天{{scope.row.cycleattr}}次
+ 每周{{scope.row.cycleattr}}次
+ 每月{{scope.row.cycleattr}}次
+ 每季度{{scope.row.cycleattr}}次
+ 每年{{scope.row.cycleattr}}次
+ 每半年{{scope.row.cycleattr}}次
+
+
+
+
+
+
+
+ {{iteam}}
+
+
+
+
+
+
+
+
+
+ {{item}}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.score[index].allprize}}
+
+
+ {{scope.row.score[index].zeroprize}}
+
+
+ {{scope.row.score[index].scoreval}}
+
+
+ {{scope.row.score[index].achievement}}
+
+
+ {{scope.row.score[index].actualscore}}
+
+
+ {{scope.row.score[index].actualscore}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/echarts/total.vue b/src/views/echarts/total.vue
new file mode 100644
index 0000000..4cbcc23
--- /dev/null
+++ b/src/views/echarts/total.vue
@@ -0,0 +1,883 @@
+
+
+
+
+
+
+
+
+
+ 汇总表
+ 成绩表
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+
+ 汇总表
+ 成绩表
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+ {{scope.row.targetname}}
+ {{scope.row.targetname}}
+
+
+
+
+
+
+
+
+ 班
+ 天
+ 周
+ 月
+ 季度
+ 年
+ 半年
+
+
+
+
+ 每班{{scope.row.cycleattr}}次
+ 每天{{scope.row.cycleattr}}次
+ 每周{{scope.row.cycleattr}}次
+ 每月{{scope.row.cycleattr}}次
+ 每季度{{scope.row.cycleattr}}次
+ 每年{{scope.row.cycleattr}}次
+ 每半年{{scope.row.cycleattr}}次
+
+
+
+
+
+
+
+ {{iteam}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.score[index].actualscore}}
+
+
+ {{scope.row.score[index].actualscore}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/frontPage/index.vue b/src/views/frontPage/index.vue
index 283fc27..8b389bf 100644
--- a/src/views/frontPage/index.vue
+++ b/src/views/frontPage/index.vue
@@ -3,7 +3,7 @@
-
早安,管理员,请开始一天的工作吧
+
{{hourTittle}},请开始工作吧
今日晴,0℃ - 10℃,天气寒冷,注意添加衣物。
@@ -47,7 +47,7 @@
-
-->
+
+
@@ -80,20 +91,80 @@
数据统计
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/hr/organization.vue b/src/views/hr/organization.vue
new file mode 100644
index 0000000..1615662
--- /dev/null
+++ b/src/views/hr/organization.vue
@@ -0,0 +1,484 @@
+
+
+
+
+
+
+ 新增首级组织
+
+
+
+
+
+
+
+
+
+
+
+
+ 添加子组织
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/hr/organizeType.vue b/src/views/hr/organizeType.vue
new file mode 100644
index 0000000..1fc2769
--- /dev/null
+++ b/src/views/hr/organizeType.vue
@@ -0,0 +1,360 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/hr/personnel.vue b/src/views/hr/personnel.vue
new file mode 100644
index 0000000..86dc2ef
--- /dev/null
+++ b/src/views/hr/personnel.vue
@@ -0,0 +1,1072 @@
+
+
+
+
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查看详情
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \
+
+
+ 工号
+ {{staffInfo.number}}
+
+
+ 姓名
+ {{staffInfo.name}}
+
+
+ 用工关系
+ 实习生
+ 待分配
+ 试用员工
+ 正式员工
+ 停薪留职
+ 退休
+ 辞退
+ 离职
+
+
+ 照片
+
+
+
+
+ 集团
+ {{staffInfo.number}}
+
+
+ 主分厂(部室)
+ {{staffInfo.number}}
+
+
+ 岗位
+ {{staffInfo.number}}
+
+
+ 职位
+ {{staffInfo.number}}
+
+
+
+ 职务
+ {{staffInfo.number}}
+
+
+ 部门
+ {{staffInfo.number}}
+
+
+ 性别
+ 男性
+ 女性
+ 中性
+
+
+ 民族
+ {{staffInfo.myfolk}}
+
+
+
+ 手机号码
+ {{staffInfo.mobilephone}}
+
+
+ 生日
+ {{staffInfo.birthdaytime}}
+
+
+ 电子邮件
+ {{staffInfo.email}}
+
+
+ 国际区号
+ {{staffInfo.globalroaming}}
+
+
+
+ 护照号码
+ {{staffInfo.passportno}}
+
+
+ 身份证号
+ {{staffInfo.idcardno}}
+
+
+ 籍贯
+ {{staffInfo.nativeplace}}
+
+
+ 健康状况
+ 良好
+ 一般
+ 较弱
+ 有生理缺陷
+ 残废
+
+
+
+ 婚姻状况
+ 未婚
+ 已婚
+ 丧偶
+ 离异
+
+
+ 身份证有效期开始
+ {{staffInfo.idcardstarttimedata}}
+
+
+ 身份证有效期结束
+ {{staffInfo.idcardendtimedata}}
+
+
+ 身份证地址
+ {{staffInfo.idcardaddress}}
+
+
+
+ 签发机关
+ {{staffInfo.idcardIssued}}
+
+
+ 现居地址
+ {{staffInfo.currentresidence}}
+
+
+ 内线电话
+ {{staffInfo.internaltelephone}}
+
+
+ 星座
+ 白羊座
+ 金牛座
+ 双子座
+ 巨蟹座
+ 狮子座
+ 处女座
+ 天枰座
+ 天蝎座
+ 射手座
+ 摩羯座
+ 水瓶座
+ 双鱼座
+
+
+
+ 政治面貌
+ 群众
+ 无党派
+ 台盟会员
+ 九三社员
+ 致公党员
+ 农工党员
+ 民进会员
+ 民建会员
+ 民盟盟员
+ 民革会员
+ 共青团员
+ 预备党员
+ 中共党员
+
+
+ 参加工作日期
+ {{staffInfo.jobstartdate|dataFormat}}
+
+
+ 入职日期
+ {{staffInfo.entrydatetime}}
+
+
+ 试用期
+ {{staffInfo.probationperiod}}月
+
+
+
+ 预计转正日期
+ {{staffInfo.planformaldatetime}}
+
+
+ 是否为退役军人
+ 是
+ 否
+
+
+ 退役证编号
+ {{staffInfo.veteransnumber}}
+
+
+ 是否为双职工
+ 是
+ 否
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 群众
+ 无党派
+ 台盟会员
+ 九三社员
+ 致公党员
+ 农工党员
+ 民进会员
+ 民建会员
+ 民盟盟员
+ 民革会员
+ 共青团员
+ 预备党员
+ 中共党员
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 初中以下
+ 中专
+ 高中
+ 中技
+ 高技
+ 函授专科
+ 大学专科
+ 函授本科
+ 大学本科
+ 硕士研究生
+ 博士研究生
+ 专家、教授
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/hr/position.vue b/src/views/hr/position.vue
new file mode 100644
index 0000000..eee316d
--- /dev/null
+++ b/src/views/hr/position.vue
@@ -0,0 +1,330 @@
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/login/wxLogin.vue b/src/views/login/wxLogin.vue
index 0049061..0211821 100644
--- a/src/views/login/wxLogin.vue
+++ b/src/views/login/wxLogin.vue
@@ -91,6 +91,7 @@
扫码登录
+
@@ -208,6 +209,9 @@ export default {
// async login() {
// return await this.myLoginIn(this.loginForm)
// },
+ qyWx(){
+ window.location.href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww02f310301953277a&redirect_uri=https%3A%2F%2Fwww.hxgk.group%2Fjumpapiurl%2Fscancode%3Fcontroll%3Dshiyan%26id%3D123456%26num%3D654321&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect"
+ },
async submitForm() {
this.$refs.loginForm.validate(async(v) => {
if (v) {
diff --git a/src/views/menuSettings/index.vue b/src/views/menuSettings/index.vue
index 8f98111..85029a4 100644
--- a/src/views/menuSettings/index.vue
+++ b/src/views/menuSettings/index.vue
@@ -41,29 +41,29 @@
inactive-color="#ff4949"
:active-value=1
:inactive-value=2
- @change="changeVal($event,scope.row.outId)"
+ @change="changeVal($event,scope.row.id)"
/>
-
+ @click="addSonMenu(scope.row)"
+ >添加子菜单
编辑
删除
@@ -107,10 +107,10 @@
-
-
+
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
+
+
+
+
+
@@ -167,7 +177,9 @@ export default {
// 删除数据提交
deleFrom:{},
// 编辑时数据
- editAdd:{},
+ editAdd:{
+
+ },
assessList:{},
// 添加数据
form:{
@@ -175,8 +187,11 @@ export default {
},
// 弹窗变量
dialogFormVisible:false,
+ addSonMenuData:{},
// 修改弹窗
editDialogFormVisible:false,
+ // 添加子菜单弹窗
+ addSonShow:false,
total: 0,
tableData:[],
// 条件查询变量
@@ -207,7 +222,11 @@ export default {
this.getDataList()
},
methods: {
- // 删除操作
+ // 添加子菜单
+ addSonMenu(row){
+ this.addSonMenuData.parentId=row.id
+ this.addSonShow=true
+ },
//删除操作
async deleteMenu(row) {
this.$confirm('此操作将永久删除, 是否继续?', '提示', {
@@ -217,7 +236,7 @@ export default {
})
.then(async() => {
this.deleFrom.state=3;
- this.deleFrom.outid=row.outId;
+ this.deleFrom.id=row.id;
const res = await delmenu(this.deleFrom)
if (res.code === 0) {
this.$message({
@@ -235,17 +254,18 @@ export default {
console.log(this.dialogFormVisible)
},
// 编辑按钮
- async showEdit(row){
- this.editFrom.outid=row.outId
- const res = await getdutyclassinfo(this.editFrom)
- this.editAdd = res.data
+ async editMenu(row){
+ // this.editFrom=row
+ // const res = await getdutyclassinfo(this.editFrom)
+ this.editAdd = row
+ // this.editAdd.menuurl=row.apiUrl
this.editDialogFormVisible=true;
},
// 开关状态监听
async changeVal(val,id){
console.log(val)
- this.switchFrom.outid=id
+ this.switchFrom.id=id
if (val==1) {
this.switchFrom.state=1;
const res = await delmenu(this.switchFrom)
@@ -274,7 +294,7 @@ export default {
onReset() {
this.searchInfo = {}
},
- // 条件搜索
+ // 条件搜索m
onSubmit() {
this.page = 1
this.pageSize = 10
@@ -302,12 +322,28 @@ export default {
this.closeDialog();
},
-
+ // 提交子菜单按钮
+ async enterSonDialog(){
+
+
+ this.addSonMenuData.sort=parseInt(this.addSonMenuData.sort)
+ const res = await addmenu(this.addSonMenuData)
+ if (res.code === 0) {
+ this.$message({
+ type: 'success',
+ message: '添加成功',
+ showClose: true
+ })
+ }
+ this.getDataList();
+ this.closeSonDialog();
+
+ },
// 编辑提交按钮
async editEnterDialog(){
- this.$refs.editForm.validate(async valid => {
- if (valid) {
- const res = await eitedutyclassinfo(this.editAdd)
+ this.editAdd.menuurl=this.editAdd.apiUrl
+ this.editAdd.sort=Number(this.editAdd.sort)
+ const res = await eitemenu(this.editAdd)
if (res.code === 0) {
this.$message({
type: 'success',
@@ -317,8 +353,7 @@ export default {
}
this.getDataList();
this.editCloseDialog();
- }
- })
+
},
// 添加框关闭
closeDialog() {
@@ -326,6 +361,11 @@ export default {
this.initForm()
this.dialogFormVisible = false
},
+ // 添加子框关闭
+ closeSonDialog() {
+ this.addSonMenuData={}
+ this.addSonShow = false
+ },
// 修改框关闭
editCloseDialog() {
this.editInitForm()
@@ -333,7 +373,6 @@ export default {
},
// 添加重置表单
initForm() {
- console.log("initForm")
this.$refs.addForm.resetFields()
this.form = {}
console.log(this.form)
diff --git a/src/views/mete/index.vue b/src/views/mete/index.vue
new file mode 100644
index 0000000..4316743
--- /dev/null
+++ b/src/views/mete/index.vue
@@ -0,0 +1,581 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.allprize}}
+
+
+
+
+ {{scope.row.zeroprize}}
+
+
+
+
+ {{scope.row.cappingcal}}%
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.scoringscore}}
+
+
+
+
+
+
+
+
+
+
+
+
+ 查看流程
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{a.workshopname}}-{{a.postname}}-{{a.name}}
+
+
+
已同意 · 
+
未操作 · 
+
驳回 · 
+
{{i.time}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/personnel/post/index.vue b/src/views/personnel/post/index.vue
new file mode 100644
index 0000000..e5af8b0
--- /dev/null
+++ b/src/views/personnel/post/index.vue
@@ -0,0 +1,657 @@
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+ 重置
+
+
+
+
+
+ 新增
+
+
+
+
+
+
+ {{scope.row.departmentname}} / {{scope.row.aoname}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 总经理
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/qualitative/index copy.vue b/src/views/qualitative/index copy.vue
new file mode 100644
index 0000000..a6c20e7
--- /dev/null
+++ b/src/views/qualitative/index copy.vue
@@ -0,0 +1,518 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 加分
+ 减分
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/qualitative/index.vue b/src/views/qualitative/index.vue
new file mode 100644
index 0000000..daad3c8
--- /dev/null
+++ b/src/views/qualitative/index.vue
@@ -0,0 +1,1298 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+ 重置
+
+
+
+
+
+
+
+
+
+ {{scope.row.title}}
+
+
+
+
+
+
+
+
+
+
+
+ {{rowJiaData.score}}{{rowJiaData.company}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 点击上传
+
+
+
+
+
+ {{rowJiaData.score}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 点击上传
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 点击上传
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{a.workshopname}}-{{a.postname}}-{{a.name}}
+
+
+
已同意 · 
+
未操作 · 
+
驳回 · 
+
{{i.time}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{rowJianData.score}}{{rowJianData.company}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+
+
+ 点击上传
+
+
+
+
+
+
+ {{rowJianData.score}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+
+
+ 点击上传
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+
+
+
+ 点击上传
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{a.workshopname}}-{{a.postname}}-{{a.name}}
+
+
+
已同意 · 
+
未操作 · 
+
驳回 · 
+
{{i.time}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+
+
+
+ 加分
+ 减分
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/roleSetting/index.vue b/src/views/roleSetting/index.vue
new file mode 100644
index 0000000..e148df5
--- /dev/null
+++ b/src/views/roleSetting/index.vue
@@ -0,0 +1,416 @@
+
+
+
+
+
+
+ 新增根目录
+
+
+
+
+
+
+
+
+
+
+
+
+ 添加子菜单
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/————dist/--favicon.ico b/————dist/--favicon.ico
deleted file mode 100644
index 34b63ac63a87ee3ea8e7a0f3f5b5406c437e2112..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 67646
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
X;@D+E7Ad=S_FbjlW&KY_+xPzm3MBT?
diff --git a/————dist/favicon.ico b/————dist/favicon.ico
deleted file mode 100644
index 4a366d34dada2f453ff8cf6c6cb158dfd7c2c337..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 73507
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
WI}8
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