Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
attendance-performance-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
attendance-performance-platform
Commits
b86f11f2
Commit
b86f11f2
authored
Jul 07, 2023
by
赵啸非
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
db9fd867
15a1d4d3
Changes
39
Show whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
3647 additions
and
1089 deletions
+3647
-1089
attendance-performance-manager-ui/admin/package-lock.json
attendance-performance-manager-ui/admin/package-lock.json
+299
-10
attendance-performance-manager-ui/admin/package.json
attendance-performance-manager-ui/admin/package.json
+2
-0
attendance-performance-manager-ui/admin/src/assets/images/logo.png
...e-performance-manager-ui/admin/src/assets/images/logo.png
+0
-0
attendance-performance-manager-ui/admin/src/assets/less/base.css
...nce-performance-manager-ui/admin/src/assets/less/base.css
+5
-0
attendance-performance-manager-ui/admin/src/assets/less/base.less
...ce-performance-manager-ui/admin/src/assets/less/base.less
+5
-0
attendance-performance-manager-ui/admin/src/assets/mixins/formdialog.js
...formance-manager-ui/admin/src/assets/mixins/formdialog.js
+4
-0
attendance-performance-manager-ui/admin/src/components/DataTable.vue
...performance-manager-ui/admin/src/components/DataTable.vue
+64
-52
attendance-performance-manager-ui/admin/src/components/DataTreeTable.vue
...ormance-manager-ui/admin/src/components/DataTreeTable.vue
+1
-1
attendance-performance-manager-ui/admin/src/components/Form.vue
...ance-performance-manager-ui/admin/src/components/Form.vue
+26
-23
attendance-performance-manager-ui/admin/src/components/FormField.vue
...performance-manager-ui/admin/src/components/FormField.vue
+142
-50
attendance-performance-manager-ui/admin/src/components/Header.vue
...ce-performance-manager-ui/admin/src/components/Header.vue
+16
-10
attendance-performance-manager-ui/admin/src/main.js
attendance-performance-manager-ui/admin/src/main.js
+20
-15
attendance-performance-manager-ui/admin/src/views/Layout.vue
attendance-performance-manager-ui/admin/src/views/Layout.vue
+53
-47
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/view.vue
...nager-ui/admin/src/views/attendance/leave/record/view.vue
+152
-94
attendance-performance-manager-ui/admin/src/views/feedback/addQuestion/list.vue
...-manager-ui/admin/src/views/feedback/addQuestion/list.vue
+83
-3
attendance-performance-manager-ui/admin/src/views/homeCharts/record/list.vue
...nce-manager-ui/admin/src/views/homeCharts/record/list.vue
+57
-0
attendance-performance-manager-ui/admin/src/views/perform/attend/appeal/drawershow.vue
...r-ui/admin/src/views/perform/attend/appeal/drawershow.vue
+434
-252
attendance-performance-manager-ui/admin/src/views/perform/attend/appeal/list.vue
...manager-ui/admin/src/views/perform/attend/appeal/list.vue
+1
-1
attendance-performance-manager-ui/admin/src/views/perform/dept/conf/list.vue
...nce-manager-ui/admin/src/views/perform/dept/conf/list.vue
+87
-62
attendance-performance-manager-ui/admin/src/views/perform/perpose/dialogshow.vue
...manager-ui/admin/src/views/perform/perpose/dialogshow.vue
+231
-133
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/components/AttendIndex.vue
...src/views/perform/rules/attend/components/AttendIndex.vue
+17
-3
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/list.vue
...-manager-ui/admin/src/views/perform/rules/attend/list.vue
+1
-1
attendance-performance-manager-ui/admin/src/views/perform/staff/conf/deptdrawershow.vue
...-ui/admin/src/views/perform/staff/conf/deptdrawershow.vue
+439
-0
attendance-performance-manager-ui/admin/src/views/perform/staff/conf/drawershow.vue
...ager-ui/admin/src/views/perform/staff/conf/drawershow.vue
+494
-104
attendance-performance-manager-ui/admin/src/views/perform/staff/conf/list(原绩效依据).vue
...ger-ui/admin/src/views/perform/staff/conf/list(原绩效依据).vue
+108
-0
attendance-performance-manager-ui/admin/src/views/perform/staff/conf/list.vue
...ce-manager-ui/admin/src/views/perform/staff/conf/list.vue
+264
-42
attendance-performance-manager-ui/admin/src/views/perform/staff/conf/windowdrawershow.vue
...i/admin/src/views/perform/staff/conf/windowdrawershow.vue
+148
-0
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/dialogshow.vue
...ager-ui/admin/src/views/staff/perform/stat/dialogshow.vue
+1
-1
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/list.vue
...ce-manager-ui/admin/src/views/staff/perform/stat/list.vue
+18
-2
attendance-performance-manager-ui/admin/src/views/window/owner/drawershow.vue
...ce-manager-ui/admin/src/views/window/owner/drawershow.vue
+138
-108
attendance-performance-manager-ui/admin/src/views/window/owner/list.vue
...formance-manager-ui/admin/src/views/window/owner/list.vue
+69
-60
attendance-performance-manager-ui/admin/yarn.lock
attendance-performance-manager-ui/admin/yarn.lock
+132
-7
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/service/CheckGoworkRecordService.java
...ls/xhx/module/check/service/CheckGoworkRecordService.java
+2
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendRecordServiceImpl.java
.../perform/service/impl/PerformAttendRecordServiceImpl.java
+22
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformComplainRecordServiceImpl.java
...erform/service/impl/PerformComplainRecordServiceImpl.java
+25
-3
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformEffectRecordServiceImpl.java
.../perform/service/impl/PerformEffectRecordServiceImpl.java
+22
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformGoworkRecordServiceImpl.java
.../perform/service/impl/PerformGoworkRecordServiceImpl.java
+22
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformOtherRecordServiceImpl.java
...e/perform/service/impl/PerformOtherRecordServiceImpl.java
+22
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformReviewRecordServiceImpl.java
.../perform/service/impl/PerformReviewRecordServiceImpl.java
+21
-1
No files found.
attendance-performance-manager-ui/admin/package-lock.json
View file @
b86f11f2
...
...
@@ -10,6 +10,8 @@
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@chenfengyuan/vue-qrcode": "^1.0.2",
"@form-create/designer": "^1.0.10",
"@form-create/element-ui": "^2.5.30",
"@jiaminghi/data-view": "^2.10.0",
"@riophae/vue-treeselect": "0.4.0",
"@vue/babel-preset-app": "^4.5.13",
...
...
@@ -1671,6 +1673,18 @@
"node": ">=6.9.0"
}
},
"node_modules/@babel/runtime-corejs3": {
"version": "7.22.6",
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.6.tgz",
"integrity": "sha512-M+37LLIRBTEVjktoJjbw4KVhupF0U/3PYUCbBwgAd9k17hoKhRu1n935QiG7Tuxv0LJOMrb2vuKEeYUlv0iyiw==",
"dependencies": {
"core-js-pure": "^3.30.2",
"regenerator-runtime": "^0.13.11"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/template": {
"version": "7.14.5",
"resolved": "https://registry.nlark.com/@babel/template/download/@babel/template-7.14.5.tgz?cache=0&sync_timestamp=1623280991117&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.14.5.tgz",
...
...
@@ -1768,6 +1782,115 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@form-create/component-elm-checkbox": {
"version": "2.5.29",
"resolved": "https://registry.npmjs.org/@form-create/component-elm-checkbox/-/component-elm-checkbox-2.5.29.tgz",
"integrity": "sha512-jOFHQmJ6HQ3pqc/AzALbV0dtcZRdejkerQKfsJXz/EOkKnH3JJ1rgNps8lhoNo6+9R0ybX3FBN5e53iohs0a5w==",
"dependencies": {
"@form-create/utils": "^2.5.27"
}
},
"node_modules/@form-create/component-elm-frame": {
"version": "2.5.27",
"resolved": "https://registry.npmjs.org/@form-create/component-elm-frame/-/component-elm-frame-2.5.27.tgz",
"integrity": "sha512-697RpnNm2dDbLiugT+0Q7yFhkhNPlYXskZkMnLzmwBftWi7Cb78v7EZIE/gmVIlAZ3NSqY0mWYM+0ryjQEKQnQ==",
"dependencies": {
"@form-create/utils": "^2.5.27"
}
},
"node_modules/@form-create/component-elm-group": {
"version": "2.5.28",
"resolved": "https://registry.npmjs.org/@form-create/component-elm-group/-/component-elm-group-2.5.28.tgz",
"integrity": "sha512-6k9r4R9kPvTaJLmMlHrEfTYQmXVB4N3hDI3d5RqiEX9RdSyBcqdssKvW9O03susNWGbQFRJ5tBAMItURDZJAow==",
"dependencies": {
"@form-create/utils": "^2.5.27"
}
},
"node_modules/@form-create/component-elm-radio": {
"version": "2.5.27",
"resolved": "https://registry.npmjs.org/@form-create/component-elm-radio/-/component-elm-radio-2.5.27.tgz",
"integrity": "sha512-fZWVW+JcL4I8gPrrR9Snt+sd/r6Ek9jGDJEqboqQ+HaYgXTptmvLLigefHqxUU3qize4iDfTJoJ16K0sS2+91g==",
"dependencies": {
"@form-create/utils": "^2.5.27"
}
},
"node_modules/@form-create/component-elm-select": {
"version": "2.5.27",
"resolved": "https://registry.npmjs.org/@form-create/component-elm-select/-/component-elm-select-2.5.27.tgz",
"integrity": "sha512-xjI5dImAY51jHTZEBoMIk4+0GfF994IqW/cvj3GHP2zPf2NkKfI1OUVnn55DhlYZg04aMSGpvInETSLeCesE/g==",
"dependencies": {
"@form-create/utils": "^2.5.27"
}
},
"node_modules/@form-create/component-elm-tree": {
"version": "2.5.27",
"resolved": "https://registry.npmjs.org/@form-create/component-elm-tree/-/component-elm-tree-2.5.27.tgz",
"integrity": "sha512-ATzz8hmzRI6XXcVpXywfuldJuCH5s3F+OJAUfSQaTP97+9QhBqyc6CDKotO5ZgAGNfKhLbZ0Ns+tFpFfrju9ZA==",
"dependencies": {
"@form-create/utils": "^2.5.27"
}
},
"node_modules/@form-create/component-elm-upload": {
"version": "2.5.29",
"resolved": "https://registry.npmjs.org/@form-create/component-elm-upload/-/component-elm-upload-2.5.29.tgz",
"integrity": "sha512-/bP/HFeB009zKHYS9lwA8jST4Hy+UaykRXriqFv31Ly9BeISJVA66XyuNXmYADwc/q9krwVC4cuy5rKw/2vhsw==",
"dependencies": {
"@form-create/utils": "^2.5.27"
}
},
"node_modules/@form-create/component-subform": {
"version": "2.5.25",
"resolved": "https://registry.npmjs.org/@form-create/component-subform/-/component-subform-2.5.25.tgz",
"integrity": "sha512-puGWWxSOeII4y4mCNxrKF/eH4nY1AQAx87VchzErLmemwF6TtNBLBsJLCCmFAVLYn1koYU5nNu5Y2yG9s2CKlQ=="
},
"node_modules/@form-create/component-wangeditor": {
"version": "2.5.15",
"resolved": "https://registry.npmjs.org/@form-create/component-wangeditor/-/component-wangeditor-2.5.15.tgz",
"integrity": "sha512-U4MUcvaBNEcNbIBeODxYuMlLYR+lZ1zCaZvLP3I+3SOd0KQVjvfRozZku64ukIVxC8Stev/ZNWqpAVsdvFLGaA==",
"dependencies": {
"wangeditor": "^4.6.0"
}
},
"node_modules/@form-create/core": {
"version": "2.5.29",
"resolved": "https://registry.npmjs.org/@form-create/core/-/core-2.5.29.tgz",
"integrity": "sha512-xXHyLc8jRmXfHRf7xcUrTDx7NeXPxcJU9r2QSwNRszp6bF1HmIHlXuDWr+pqkXp4r5d9nZ87KAi2z2J8MRkF9Q==",
"dependencies": {
"@form-create/utils": "^2.5.27"
}
},
"node_modules/@form-create/designer": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/@form-create/designer/-/designer-1.0.10.tgz",
"integrity": "sha512-Lr87K1mHQz5UXcLbZ6ieA/FgJBM1ugAw8MjsF5/WhU6a2Mna2YHQ2ZywL1u+fc0t4Ei+VFBhXUFBvOqUuiseGQ==",
"dependencies": {
"@form-create/component-wangeditor": "^2.5.15",
"@form-create/element-ui": "^2.5.19",
"@form-create/utils": "^2.5.15"
}
},
"node_modules/@form-create/element-ui": {
"version": "2.5.30",
"resolved": "https://registry.npmjs.org/@form-create/element-ui/-/element-ui-2.5.30.tgz",
"integrity": "sha512-UBNTykx4JhznA0JcBtngk+QeWfz1yMQQHwQLHsB/Xp9bX3FnWebHyQG6Go0SSjvdx7bIMFx9fPurNHepyBYAPA==",
"dependencies": {
"@form-create/component-elm-checkbox": "^2.5.29",
"@form-create/component-elm-frame": "^2.5.27",
"@form-create/component-elm-group": "^2.5.28",
"@form-create/component-elm-radio": "^2.5.27",
"@form-create/component-elm-select": "^2.5.27",
"@form-create/component-elm-tree": "^2.5.27",
"@form-create/component-elm-upload": "^2.5.29",
"@form-create/component-subform": "^2.5.25",
"@form-create/core": "^2.5.29",
"@form-create/utils": "^2.5.27"
}
},
"node_modules/@form-create/utils": {
"version": "2.5.27",
"resolved": "https://registry.npmjs.org/@form-create/utils/-/utils-2.5.27.tgz",
"integrity": "sha512-QLzenitKzakxQ8bK8yFYd/9n4eT4E9jKkEneU0yhbjr0ter5uqguGGNJP7gI8waysRAS49VSjQOAY0b4l7mWvg=="
},
"node_modules/@hapi/address": {
"version": "2.1.4",
"resolved": "https://registry.nlark.com/@hapi/address/download/@hapi/address-2.1.4.tgz",
...
...
@@ -2260,6 +2383,8 @@
"version": "3.16.0",
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
...
...
@@ -5288,6 +5413,16 @@
"semver": "bin/semver.js"
}
},
"node_modules/core-js-pure": {
"version": "3.31.1",
"resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.31.1.tgz",
"integrity": "sha512-w+C62kvWti0EPs4KPMCMVv9DriHSXfQOCQ94bGGBiEW5rrbtt/Rz8n5Krhfw9cpFyzXBjf3DB3QnPdEzGDY4Fw==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
}
},
"node_modules/core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.2.tgz",
...
...
@@ -13467,10 +13602,9 @@
}
},
"node_modules/regenerator-runtime": {
"version": "0.13.9",
"resolved": "https://registry.nlark.com/regenerator-runtime/download/regenerator-runtime-0.13.9.tgz",
"integrity": "sha1-iSV0Kpj/2QgUmI11Zq0wyjsmO1I=",
"license": "MIT"
"version": "0.13.11",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
},
"node_modules/regenerator-transform": {
"version": "0.14.5",
...
...
@@ -16906,6 +17040,21 @@
"vue": "^2.0.0"
}
},
"node_modules/wangeditor": {
"version": "4.7.15",
"resolved": "https://registry.npmjs.org/wangeditor/-/wangeditor-4.7.15.tgz",
"integrity": "sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==",
"dependencies": {
"@babel/runtime": "^7.11.2",
"@babel/runtime-corejs3": "^7.11.2",
"tslib": "^2.1.0"
}
},
"node_modules/wangeditor/node_modules/tslib": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
"integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
},
"node_modules/watch-size": {
"version": "2.0.0",
"resolved": "https://registry.nlark.com/watch-size/download/watch-size-2.0.0.tgz",
...
...
@@ -18786,6 +18935,15 @@
"regenerator-runtime": "^0.13.4"
}
},
"@babel/runtime-corejs3": {
"version": "7.22.6",
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.6.tgz",
"integrity": "sha512-M+37LLIRBTEVjktoJjbw4KVhupF0U/3PYUCbBwgAd9k17hoKhRu1n935QiG7Tuxv0LJOMrb2vuKEeYUlv0iyiw==",
"requires": {
"core-js-pure": "^3.30.2",
"regenerator-runtime": "^0.13.11"
}
},
"@babel/template": {
"version": "7.14.5",
"resolved": "https://registry.nlark.com/@babel/template/download/@babel/template-7.14.5.tgz?cache=0&sync_timestamp=1623280991117&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.14.5.tgz",
...
...
@@ -18858,6 +19016,115 @@
}
}
},
"@form-create/component-elm-checkbox": {
"version": "2.5.29",
"resolved": "https://registry.npmjs.org/@form-create/component-elm-checkbox/-/component-elm-checkbox-2.5.29.tgz",
"integrity": "sha512-jOFHQmJ6HQ3pqc/AzALbV0dtcZRdejkerQKfsJXz/EOkKnH3JJ1rgNps8lhoNo6+9R0ybX3FBN5e53iohs0a5w==",
"requires": {
"@form-create/utils": "^2.5.27"
}
},
"@form-create/component-elm-frame": {
"version": "2.5.27",
"resolved": "https://registry.npmjs.org/@form-create/component-elm-frame/-/component-elm-frame-2.5.27.tgz",
"integrity": "sha512-697RpnNm2dDbLiugT+0Q7yFhkhNPlYXskZkMnLzmwBftWi7Cb78v7EZIE/gmVIlAZ3NSqY0mWYM+0ryjQEKQnQ==",
"requires": {
"@form-create/utils": "^2.5.27"
}
},
"@form-create/component-elm-group": {
"version": "2.5.28",
"resolved": "https://registry.npmjs.org/@form-create/component-elm-group/-/component-elm-group-2.5.28.tgz",
"integrity": "sha512-6k9r4R9kPvTaJLmMlHrEfTYQmXVB4N3hDI3d5RqiEX9RdSyBcqdssKvW9O03susNWGbQFRJ5tBAMItURDZJAow==",
"requires": {
"@form-create/utils": "^2.5.27"
}
},
"@form-create/component-elm-radio": {
"version": "2.5.27",
"resolved": "https://registry.npmjs.org/@form-create/component-elm-radio/-/component-elm-radio-2.5.27.tgz",
"integrity": "sha512-fZWVW+JcL4I8gPrrR9Snt+sd/r6Ek9jGDJEqboqQ+HaYgXTptmvLLigefHqxUU3qize4iDfTJoJ16K0sS2+91g==",
"requires": {
"@form-create/utils": "^2.5.27"
}
},
"@form-create/component-elm-select": {
"version": "2.5.27",
"resolved": "https://registry.npmjs.org/@form-create/component-elm-select/-/component-elm-select-2.5.27.tgz",
"integrity": "sha512-xjI5dImAY51jHTZEBoMIk4+0GfF994IqW/cvj3GHP2zPf2NkKfI1OUVnn55DhlYZg04aMSGpvInETSLeCesE/g==",
"requires": {
"@form-create/utils": "^2.5.27"
}
},
"@form-create/component-elm-tree": {
"version": "2.5.27",
"resolved": "https://registry.npmjs.org/@form-create/component-elm-tree/-/component-elm-tree-2.5.27.tgz",
"integrity": "sha512-ATzz8hmzRI6XXcVpXywfuldJuCH5s3F+OJAUfSQaTP97+9QhBqyc6CDKotO5ZgAGNfKhLbZ0Ns+tFpFfrju9ZA==",
"requires": {
"@form-create/utils": "^2.5.27"
}
},
"@form-create/component-elm-upload": {
"version": "2.5.29",
"resolved": "https://registry.npmjs.org/@form-create/component-elm-upload/-/component-elm-upload-2.5.29.tgz",
"integrity": "sha512-/bP/HFeB009zKHYS9lwA8jST4Hy+UaykRXriqFv31Ly9BeISJVA66XyuNXmYADwc/q9krwVC4cuy5rKw/2vhsw==",
"requires": {
"@form-create/utils": "^2.5.27"
}
},
"@form-create/component-subform": {
"version": "2.5.25",
"resolved": "https://registry.npmjs.org/@form-create/component-subform/-/component-subform-2.5.25.tgz",
"integrity": "sha512-puGWWxSOeII4y4mCNxrKF/eH4nY1AQAx87VchzErLmemwF6TtNBLBsJLCCmFAVLYn1koYU5nNu5Y2yG9s2CKlQ=="
},
"@form-create/component-wangeditor": {
"version": "2.5.15",
"resolved": "https://registry.npmjs.org/@form-create/component-wangeditor/-/component-wangeditor-2.5.15.tgz",
"integrity": "sha512-U4MUcvaBNEcNbIBeODxYuMlLYR+lZ1zCaZvLP3I+3SOd0KQVjvfRozZku64ukIVxC8Stev/ZNWqpAVsdvFLGaA==",
"requires": {
"wangeditor": "^4.6.0"
}
},
"@form-create/core": {
"version": "2.5.29",
"resolved": "https://registry.npmjs.org/@form-create/core/-/core-2.5.29.tgz",
"integrity": "sha512-xXHyLc8jRmXfHRf7xcUrTDx7NeXPxcJU9r2QSwNRszp6bF1HmIHlXuDWr+pqkXp4r5d9nZ87KAi2z2J8MRkF9Q==",
"requires": {
"@form-create/utils": "^2.5.27"
}
},
"@form-create/designer": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/@form-create/designer/-/designer-1.0.10.tgz",
"integrity": "sha512-Lr87K1mHQz5UXcLbZ6ieA/FgJBM1ugAw8MjsF5/WhU6a2Mna2YHQ2ZywL1u+fc0t4Ei+VFBhXUFBvOqUuiseGQ==",
"requires": {
"@form-create/component-wangeditor": "^2.5.15",
"@form-create/element-ui": "^2.5.19",
"@form-create/utils": "^2.5.15"
}
},
"@form-create/element-ui": {
"version": "2.5.30",
"resolved": "https://registry.npmjs.org/@form-create/element-ui/-/element-ui-2.5.30.tgz",
"integrity": "sha512-UBNTykx4JhznA0JcBtngk+QeWfz1yMQQHwQLHsB/Xp9bX3FnWebHyQG6Go0SSjvdx7bIMFx9fPurNHepyBYAPA==",
"requires": {
"@form-create/component-elm-checkbox": "^2.5.29",
"@form-create/component-elm-frame": "^2.5.27",
"@form-create/component-elm-group": "^2.5.28",
"@form-create/component-elm-radio": "^2.5.27",
"@form-create/component-elm-select": "^2.5.27",
"@form-create/component-elm-tree": "^2.5.27",
"@form-create/component-elm-upload": "^2.5.29",
"@form-create/component-subform": "^2.5.25",
"@form-create/core": "^2.5.29",
"@form-create/utils": "^2.5.27"
}
},
"@form-create/utils": {
"version": "2.5.27",
"resolved": "https://registry.npmjs.org/@form-create/utils/-/utils-2.5.27.tgz",
"integrity": "sha512-QLzenitKzakxQ8bK8yFYd/9n4eT4E9jKkEneU0yhbjr0ter5uqguGGNJP7gI8waysRAS49VSjQOAY0b4l7mWvg=="
},
"@hapi/address": {
"version": "2.1.4",
"resolved": "https://registry.nlark.com/@hapi/address/download/@hapi/address-2.1.4.tgz",
...
...
@@ -19225,7 +19492,6 @@
"resolved": "https://registry.nlark.com/@vue/babel-preset-app/download/@vue/babel-preset-app-4.5.13.tgz",
"integrity": "sha1-y0dTIeTHP38RDawppIwqnLgK/rY=",
"requires": {
"@babel/core": "^7.11.0",
"@babel/helper-compilation-targets": "^7.9.6",
"@babel/helper-module-imports": "^7.8.3",
"@babel/plugin-proposal-class-properties": "^7.8.3",
...
...
@@ -19238,13 +19504,14 @@
"@vue/babel-plugin-jsx": "^1.0.3",
"@vue/babel-preset-jsx": "^1.2.4",
"babel-plugin-dynamic-import-node": "^2.3.3",
"core-js": "^3.6.5",
"core-js-compat": "^3.6.5",
"semver": "^6.1.0"
},
"dependencies": {
"core-js": {
"version": "3.16.0"
"version": "3.16.0",
"optional": true,
"peer": true
}
}
},
...
...
@@ -21537,6 +21804,11 @@
}
}
},
"core-js-pure": {
"version": "3.31.1",
"resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.31.1.tgz",
"integrity": "sha512-w+C62kvWti0EPs4KPMCMVv9DriHSXfQOCQ94bGGBiEW5rrbtt/Rz8n5Krhfw9cpFyzXBjf3DB3QnPdEzGDY4Fw=="
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.2.tgz",
...
...
@@ -27536,9 +27808,9 @@
}
},
"regenerator-runtime": {
"version": "0.13.
9
",
"resolved": "https://registry.n
lark.com/regenerator-runtime/download/regenerator-runtime-0.13.9
.tgz",
"integrity": "sha
1-iSV0Kpj/2QgUmI11Zq0wyjsmO1I
="
"version": "0.13.
11
",
"resolved": "https://registry.n
pmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11
.tgz",
"integrity": "sha
512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=
="
},
"regenerator-transform": {
"version": "0.14.5",
...
...
@@ -30112,6 +30384,23 @@
"integrity": "sha1-le+lalj3YHwTWwUzUIM6CeAaqBM=",
"requires": {}
},
"wangeditor": {
"version": "4.7.15",
"resolved": "https://registry.npmjs.org/wangeditor/-/wangeditor-4.7.15.tgz",
"integrity": "sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==",
"requires": {
"@babel/runtime": "^7.11.2",
"@babel/runtime-corejs3": "^7.11.2",
"tslib": "^2.1.0"
},
"dependencies": {
"tslib": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
"integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
}
}
},
"watch-size": {
"version": "2.0.0",
"resolved": "https://registry.nlark.com/watch-size/download/watch-size-2.0.0.tgz",
attendance-performance-manager-ui/admin/package.json
View file @
b86f11f2
...
...
@@ -13,6 +13,8 @@
"dependencies"
:
{
"@ampproject/remapping"
:
"^2.2.0"
,
"@chenfengyuan/vue-qrcode"
:
"^1.0.2"
,
"@form-create/designer"
:
"^1.0.10"
,
"@form-create/element-ui"
:
"^2.5.30"
,
"@jiaminghi/data-view"
:
"^2.10.0"
,
"@riophae/vue-treeselect"
:
"0.4.0"
,
"@vue/babel-preset-app"
:
"^4.5.13"
,
...
...
attendance-performance-manager-ui/admin/src/assets/images/logo.png
View replaced file @
db9fd867
View file @
b86f11f2
81.4 KB
|
W:
|
H:
17 KB
|
W:
|
H:
2-up
Swipe
Onion skin
attendance-performance-manager-ui/admin/src/assets/less/base.css
View file @
b86f11f2
...
...
@@ -294,3 +294,8 @@ a {
text-align
:
right
;
word-break
:
break-word
;
}
.el-button--primary
{
background
:
linear-gradient
(
90deg
,
#5ab6ff
,
#2e9aff
)
!important
;
color
:
#fff
!important
;
text-align
:
center
!important
;
}
attendance-performance-manager-ui/admin/src/assets/less/base.less
View file @
b86f11f2
...
...
@@ -332,3 +332,8 @@ a {
}
}
}
.el-button--primary {
background: linear-gradient(90deg, #5ab6ff, #2e9aff) !important;
color: #fff !important;
text-align: center !important;
}
attendance-performance-manager-ui/admin/src/assets/mixins/formdialog.js
View file @
b86f11f2
...
...
@@ -64,6 +64,10 @@ export default {
url
=
"
/perform/perpose/save
"
;
}
else
if
(
url
==
"
/perform/rules/attend/save
"
)
{
url
=
"
/perform/rules/category/save
"
;
}
else
if
((
url
=
"
/perform/staff/conf/save
"
))
{
sessionStorage
.
getItem
(
"
type
"
)
==
1
?
(
url
=
"
/perform/dept/conf/save
"
)
:
(
url
=
"
/perform/staff/conf/save
"
);
}
const
el
=
this
.
$refs
.
form
;
el
.
validate
((
valid
)
=>
{
...
...
attendance-performance-manager-ui/admin/src/components/DataTable.vue
View file @
b86f11f2
<
template
>
<el-table
size=
'small'
size=
"small"
:data=
"tableData"
:row-key=
"handleRowKeyMethod"
:span-method=
"handleSpanMethod"
...
...
@@ -9,12 +9,14 @@
@
sort-change=
"handleSortChange"
@
row-click=
"handleRowClick"
:row-class-name=
"tableRowClassName"
:empty-text=
'emptyText'
:empty-text=
"emptytxt ? emptytxt : emptyText"
border
style=
"width: 100%"
>
style=
"width: 100%"
height=
"520"
>
<el-table-column
v-for=
'column in columns'
:key=
'column.prop'
v-for=
"column in columns"
:key=
"column.prop"
:type=
"column.type"
:index=
"handleIndexMethod"
:selectable=
"handleSelectableMethod"
...
...
@@ -24,98 +26,108 @@
:sortable=
"column.sortable"
:show-overflow-tooltip=
"column.tooltip"
:align=
"column.align || 'left'"
:formatter=
'column.formatter'
:reserve-selection=
'column.reserveSelection'
:subColumns=
'column.subColumns'
:formatter=
"column.formatter"
:reserve-selection=
"column.reserveSelection"
:subColumns=
"column.subColumns"
:fixed=
"column.fixed"
>
<el-table-column
v-for=
'sunColumn in column.subColumns'
:key=
'sunColumn.prop'
v-for=
"sunColumn in column.subColumns"
:key=
"sunColumn.prop"
:type=
"sunColumn.type"
:prop=
"sunColumn.prop"
:label=
"sunColumn.label"
:width=
"sunColumn.width"
:sortable=
"sunColumn.sortable"
:align=
"sunColumn.align || 'left'"
:formatter=
'sunColumn.formatter'
:formatter=
"sunColumn.formatter"
/>
</el-table-column>
</el-table>
</
template
>
<
script
>
export
default
{
props
:
{
handleRowKeyMethod
:
{
type
:
Function
,
required
:
false
,
default
:
row
=>
{
return
row
.
id
}
default
:
(
row
)
=>
{
return
row
.
id
;
},
},
handleSelectableMethod
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{}
default
:
()
=>
{}
,
},
handleIndexMethod
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{}
default
:
()
=>
{}
,
},
handleSpanMethod
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{}
default
:
()
=>
{}
,
},
handleSelectionChange
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{}
default
:
()
=>
{}
,
},
handleRowClick
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{}
default
:
()
=>
{}
,
},
handleSortChange
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{}
default
:
()
=>
{}
,
},
tableRowClassName
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{}
default
:
()
=>
{}
,
},
loading
:
{
type
:
Boolean
,
required
:
false
,
default
:
true
default
:
true
,
},
tableData
:
{
type
:
Array
,
required
:
false
,
default
:
()
=>
[]
default
:
()
=>
[]
,
},
columns
:
{
type
:
Array
,
required
:
false
,
default
:
()
=>
[],
}
default
:
()
=>
[],
}
,
},
computed
:
{
emptyText
()
{
return
(
!
this
.
loading
&&
!
this
.
tableData
.
length
)
?
'
暂无数据
'
:
'
加载中...
'
return
!
this
.
loading
&&
!
this
.
tableData
.
length
?
"
暂无数据
"
:
"
加载中...
"
;
},
},
methods
:{
mounted
()
{
console
.
log
(
this
.
tableData
);
console
.
log
(
this
.
loading
);
},
watch
:
{
tableData
(
val
)
{
val
.
length
==
0
||
val
.
length
>
0
?
(
this
.
emptytxt
=
"
暂无数据
"
)
:
(
this
.
emptytxt
=
"
加载中...
"
);
},
},
methods
:
{},
data
()
{
return
{}
}
}
return
{
emptytxt
:
""
,
};
},
};
</
script
>
attendance-performance-manager-ui/admin/src/components/DataTreeTable.vue
View file @
b86f11f2
...
...
@@ -8,7 +8,7 @@
:row-class-name=
"tableRowClassName"
:default-expand-all=
"expand"
:tree-props=
"
{ children: 'children', hasChildren: 'hasChildren' }"
height="
6
20"
height="
5
20"
>
<el-table-column
...
...
attendance-performance-manager-ui/admin/src/components/Form.vue
View file @
b86f11f2
<
template
>
<div
class=
'page layout-form'
>
<slot
name=
'breadcrumb'
>
<div
class=
"page layout-form"
>
<slot
name=
"breadcrumb"
>
<Breadcrumb
/>
</slot>
<slot></slot>
...
...
@@ -8,64 +8,67 @@
</
template
>
<
style
lang=
"less"
>
@media screen and (max-width: 1440px){
.layout-form{
form{
width: 100%!important;
@media screen and (max-width: 1440px)
{
.layout-form
{
form
{
width: 100%
!important;
}
.el-col-12{
.el-col-12
{
width: 100%;
}
}
}
.layout-form{
.el-breadcrumb{
.layout-form
{
.el-breadcrumb
{
padding-bottom: 12px;
margin-bottom: 12px;
border-bottom: 1px solid #ededed;
}
form{
form
{
width: 1440px;
&[loading]{
&[loading]
{
pointer-events: none;
.el-button{
.el-button
{
background: #eee;
color: transparent;
border-color: #eee;
}
input,
textarea{
textarea
{
background: #eee;
color: transparent;
border-color: #eee;
}
span, input, button, li, label{
span,
input,
button,
li,
label {
color: #eee;
}
}
.el-input-group--append{
.el-input-group--append
{
.el-select .el-input {
width: 80px;
}
}
// 自定义的field组件
.my-form-field{
.el-select{
.my-form-field
{
.el-select
{
width: 100%;
}
.el-date-editor.el-input{
.el-date-editor.el-input
{
width: 100%;
}
.form-el-radio-group{
label{
.form-el-radio-group
{
label
{
width: 160px;
}
.el-radio-button__inner{
.el-radio-button__inner
{
border: 0;
}
}
}
}
}
</
style
>
attendance-performance-manager-ui/admin/src/components/FormField.vue
View file @
b86f11f2
// 表单节点封装,支持 input textarea select radio checkbox 及slot方式
<
template
>
<el-col
:span=
'span'
>
<el-form-item
:label=
"label"
:prop=
"prop"
class=
'my-form-field'
>
<el-col
:span=
"span"
>
<el-form-item
:label=
"label"
:prop=
"prop"
class=
"my-form-field"
>
<slot>
<el-input
show-word-limit
:maxlength=
"maxLength"
:disabled=
'disabled'
:placeholder=
'placeholder'
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
v-if=
'type === "text"'
:class=
"inputClass"
:clearable=
'clearable'
></el-input>
<el-input
show-word-limit
:maxlength=
"maxLength"
:disabled=
'disabled'
:placeholder=
'placeholder'
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
type=
'password'
v-if=
'type === "password"'
></el-input>
<el-input
show-word-limit
:maxlength=
"maxLength"
:disabled=
"disabled"
:placeholder=
"placeholder"
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
v-if=
"type === 'text'"
:class=
"inputClass"
:clearable=
"clearable"
></el-input>
<el-input
show-word-limit
:maxlength=
"maxLength"
:disabled=
"disabled"
:placeholder=
"placeholder"
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
type=
"password"
v-if=
"type === 'password'"
></el-input>
<el-input-number
:disabled=
'disabled'
v-model=
"field"
size=
"small"
:placeholder=
'placeholder'
@
change=
"emit"
@
input=
"emit"
v-if=
'type === "num"'
></el-input-number>
<el-input-number
:disabled=
"disabled"
v-model=
"field"
size=
"small"
:placeholder=
"placeholder"
@
change=
"emit"
@
input=
"emit"
v-if=
"type === 'num'"
></el-input-number>
<el-input
show-word-limit
:disabled=
'disabled'
:placeholder=
'placeholder'
v-model=
"field"
:maxlength=
"maxLength"
@
change=
"emit"
:rows=
'rows'
@
input=
"emit"
v-if=
'type === "textarea"'
type=
'textarea'
:autosize=
"textareaSize"
:class=
"inputClass"
></el-input>
<el-input
show-word-limit
:disabled=
"disabled"
:placeholder=
"placeholder"
v-model=
"field"
:maxlength=
"maxLength"
@
change=
"emit"
:rows=
"rows"
@
input=
"emit"
v-if=
"type === 'textarea'"
type=
"textarea"
:autosize=
"textareaSize"
:class=
"inputClass"
></el-input>
<!-- 一级 -->
<el-select
:disabled=
'disabled'
v-model=
"field"
@
change=
"emit"
:multiple=
'multiple'
:filterable=
'filterable'
:clearable=
'clearable'
v-if=
'type === "select"'
>
<el-select
:disabled=
"disabled"
v-model=
"field"
@
change=
"emit"
:multiple=
"multiple"
:filterable=
"filterable"
:clearable=
"clearable"
v-if=
"type === 'select'"
style=
"width: 100%;"
>
<el-option
v-for=
"($label, $value) in enumData"
:key=
"$value"
...
...
@@ -23,34 +72,78 @@
</el-select>
<!-- 多级 -->
<el-cascader
:disabled=
'disabled'
v-model=
"field"
@
change=
"emit"
:options=
"enumData"
:clearable=
'clearable'
:props=
"
{label:'label',value:'id',multiple:multiple}"
v-if='type === "cascader"'>
<el-cascader
:disabled=
"disabled"
v-model=
"field"
@
change=
"emit"
:options=
"enumData"
:clearable=
"clearable"
:props=
"
{ label: 'label', value: 'id', multiple: multiple }"
v-if="type === 'cascader'"
>
</el-cascader>
<!-- 联级选择 -->
<el-cascader-panel
:disabled=
'disabled'
v-model=
"field"
@
change=
"emit"
:options=
"enumData"
:clearable=
'clearable'
:props=
"
{label:'label',value:'id',multiple:multiple}" v-if='type === "cascaderpanel"'>
</el-cascader-panel>
<el-cascader-panel
:disabled=
"disabled"
v-model=
"field"
@
change=
"emit"
:options=
"enumData"
:clearable=
"clearable"
:props=
"
{ label: 'label', value: 'id', multiple: multiple }"
v-if="type === 'cascaderpanel'"
>
</el-cascader-panel>
<el-radio-group
:disabled=
'disabled'
v-model=
"field"
@
change=
"emit"
v-if=
'type === "radio"'
>
<el-radio-group
:disabled=
"disabled"
v-model=
"field"
@
change=
"emit"
v-if=
"type === 'radio'"
>
<el-radio
v-for=
'($label, $value) in enumData'
:key=
'$value'
v-for=
"($label, $value) in enumData"
:key=
"$value"
:label=
"$value"
>
{{
$label
}}
</el-radio>
>
{{
$label
}}
</el-radio
>
</el-radio-group>
<el-checkbox-group
:disabled=
'disabled'
v-model=
"field"
@
change=
"emit"
v-if=
'type === "checkbox"'
>
<el-checkbox-group
:disabled=
"disabled"
v-model=
"field"
@
change=
"emit"
v-if=
"type === 'checkbox'"
>
<el-checkbox
v-for=
'($label, $value) in enumData'
:key=
'$value'
v-for=
"($label, $value) in enumData"
:key=
"$value"
:label=
"$value"
>
{{
$label
}}
</el-checkbox>
>
{{
$label
}}
</el-checkbox
>
</el-checkbox-group>
<el-date-picker
:disabled=
'disabled'
type=
"date"
value-format=
"yyyy-MM-dd HH:mm:ss"
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
placeholder=
"选择日期"
v-if=
'type === "date"'
></el-date-picker>
<el-date-picker
:disabled=
'disabled'
type=
"datetime"
value-format=
"yyyy-MM-dd HH:mm:ss"
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
placeholder=
"选择日期"
v-if=
'type === "datetime"'
></el-date-picker>
<el-date-picker
:disabled=
"disabled"
type=
"date"
value-format=
"yyyy-MM-dd HH:mm:ss"
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
placeholder=
"选择日期"
style=
"width: 100%;"
v-if=
"type === 'date'"
></el-date-picker>
<el-date-picker
:disabled=
"disabled"
type=
"datetime"
value-format=
"yyyy-MM-dd HH:mm:ss"
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
placeholder=
"选择日期"
v-if=
"type === 'datetime'"
style=
"width: 100%;"
></el-date-picker>
</slot>
</el-form-item>
</el-col>
...
...
@@ -71,17 +164,17 @@ export default {
// 字段类型: text,password,textarea,select,radio,checkbox,date,datetime
type
:
{
type
:
String
,
default
:
'
text
'
,
default
:
"
text
"
,
},
// 字段name
prop
:
{
type
:
String
,
default
:
''
,
default
:
""
,
},
// 字段中文标题
label
:
{
type
:
String
,
default
:
''
,
default
:
""
,
},
// 是否禁用
disabled
:
{
...
...
@@ -91,17 +184,17 @@ export default {
// 是否提示
placeholder
:
{
type
:
String
,
default
:
''
,
default
:
""
,
},
// 字段所需的枚举类型
enumData
:
{
type
:
Object
,
default
:
()
=>
{},
default
:
()
=>
{},
},
// textarea专用-自适应内容高度
textareaSize
:
{
type
:
Object
,
default
:
()
=>
{},
default
:
()
=>
{},
},
// select专用-是否可搜索
filterable
:
{
...
...
@@ -121,44 +214,43 @@ export default {
// 字段所需的枚举类型
options
:
{
type
:
Array
,
default
:
()
=>
[],
default
:
()
=>
[],
},
children
:
{
type
:
Array
,
default
:
()
=>
[],
default
:
()
=>
[],
},
inputClass
:
{
type
:
String
,
default
:
''
,
default
:
""
,
},
maxLength
:
{
type
:
Number
,
default
:
256
,
},
maxLength
:{
type
:
Number
,
default
:
256
,
}
},
methods
:
{
emit
()
{
this
.
$emit
(
'
input
'
,
this
.
newVal
)
this
.
$emit
(
'
change
'
,
this
.
newVal
)
this
.
$emit
(
"
input
"
,
this
.
newVal
);
this
.
$emit
(
"
change
"
,
this
.
newVal
);
//this.$emit('focus', this.newVal)
this
.
$emit
(
'
cascaderChange
'
,
this
.
newVal
)
}
this
.
$emit
(
"
cascaderChange
"
,
this
.
newVal
);
}
,
},
computed
:
{
field
:
{
get
()
{
return
this
.
value
return
this
.
value
;
},
set
(
val
)
{
this
.
newVal
=
val
;
}
}
}
,
}
,
},
data
()
{
return
{
newVal
:
this
.
value
,
}
}
}
}
;
}
,
}
;
</
script
>
attendance-performance-manager-ui/admin/src/components/Header.vue
View file @
b86f11f2
...
...
@@ -9,11 +9,16 @@
<i
class=
"el-icon-menu"
@
click=
"showMobileMenu = !showMobileMenu"
>
</i>
<router-link
to=
"/"
>
<!--
<img
src=
"../assets/images/logo.png"
style=
"margin-bottom:5px"
height=
"40"
alt=
""
>
-->
<b
style=
"color:white;font-size:20px;"
>
智慧政务绩效管理系统
</b
>
<img
src=
"../assets/images/logo.png"
style=
"margin-bottom:5px;margin-left: 24px;"
height=
"40"
alt=
""
/>
<b
style=
"color:white;font-size:20px;"
>
智慧政务绩效管理系统
</b>
</router-link>
</div>
<!-- 一级菜单 -->
...
...
@@ -183,9 +188,9 @@ export default {
.layout-menu-wrapper {
height: 72px;
line-height: 72px;
font-size: 1
6
px;
font-size: 1
4
px;
color: #eee;
background:
#1848c8
;
background:
linear-gradient(90deg, #1845c6, #2999ff) !important
;
.layout-logo {
height: 50px;
.el-icon-menu {
...
...
@@ -207,13 +212,14 @@ export default {
height: 100%;
color: #eee;
cursor: pointer;
margin-right:
1
0px;
margin-right:
2
0px;
}
.active {
color: #fff;
list-style-type: none;
border-bottom: 3px solid #fff;
padding-bottom: 2px;
// border-bottom: 3px solid #fff;
// padding-bottom: 2px;
background-color: #1890ff;
}
}
}
...
...
attendance-performance-manager-ui/admin/src/main.js
View file @
b86f11f2
...
...
@@ -12,6 +12,9 @@ import Global from "./assets/utils/global.js";
import
VueClipboard
from
"
vue-clipboard2
"
;
import
VueAMap
from
"
vue-amap
"
;
import
*
as
echarts
from
"
echarts
"
;
import
formCreate
from
"
@form-create/element-ui
"
;
import
FcDesigner
from
"
@form-create/designer
"
;
// 将自动注册所有组件为全局组件
import
dataV
from
"
@jiaminghi/data-view
"
;
...
...
@@ -25,6 +28,8 @@ Vue.use(Filter);
Vue
.
use
(
GlobalComponents
);
// 全局组件
Vue
.
use
(
VueClipboard
);
Vue
.
use
(
VueAMap
);
Vue
.
use
(
formCreate
);
Vue
.
use
(
FcDesigner
);
VueAMap
.
initAMapApiLoader
({
key
:
"
f45cca59553214543a5a77e50a7e04df
"
,
plugin
:
[
...
...
attendance-performance-manager-ui/admin/src/views/Layout.vue
View file @
b86f11f2
<
template
>
<div
:style=
"menuPageCss"
class=
"pages page-layout"
>
<LayoutHeader
v-if=
"menuPage!=='left'"
@
changePath=
"changePath"
></LayoutHeader>
<LayoutHeaderLeft
@
toggle=
"toggle"
:isOpen=
"isOpen"
v-if=
"menuPage==='left'"
/>
<LayoutHeader
v-if=
"menuPage !== 'left'"
@
changePath=
"changePath"
></LayoutHeader>
<LayoutHeaderLeft
@
toggle=
"toggle"
:isOpen=
"isOpen"
v-if=
"menuPage === 'left'"
/>
<div
style=
"padding:20px"
>
<router-view
:class=
"
{'active': !isOpen}" />
<router-view
:class=
"
{ active: !isOpen }" />
</div>
</div>
</
template
>
<
script
>
import
LayoutHeader
from
"
../components/Header
"
;
import
LayoutHeaderLeft
from
"
../components/HeaderLeft
"
;
import
TabPane
from
'
../components/tabPane.vue
'
import
TabPane
from
"
../components/tabPane.vue
"
;
const
isPC
=
/
(
iPhone|iPad|iPod|iOS|Android
)
/i
.
test
(
navigator
.
userAgent
);
//菜单位置:取值: left :菜单在左面, top :菜单在上面
const
MenuPage
=
"
top
"
;
...
...
@@ -19,15 +26,15 @@ export default {
components
:
{
LayoutHeader
,
LayoutHeaderLeft
,
TabPane
TabPane
,
},
data
()
{
return
{
isOpen
:
isPC
,
menuPage
:
MenuPage
,
isfresh
:
true
,
path
:
''
}
isfresh
:
true
,
path
:
""
,
};
},
computed
:
{
menuPageCss
()
{
...
...
@@ -35,16 +42,16 @@ export default {
return
{
"
--padding-top
"
:
this
.
menuPage
===
"
left
"
?
"
60px
"
:
"
0px
"
,
"
--margin-left
"
:
this
.
menuPage
===
"
left
"
?
"
200px
"
:
"
0px
"
,
}
}
};
},
},
methods
:
{
toggle
()
{
this
.
isOpen
=
!
this
.
isOpen
;
},
changePath
(
e
)
{
this
.
path
=
e
}
changePath
(
e
)
{
this
.
path
=
e
;
},
},
};
</
script
>
...
...
@@ -65,6 +72,5 @@ export default {
.page-layout {
background: #eee;
}
</
style
>
</
style
>
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/view.vue
View file @
b86f11f2
<
template
>
<layout-view>
<el-descriptions
:title=
"title"
:column=
"column"
:size=
"size"
:colon=
"false"
border
>
<el-descriptions
:title=
"title"
:column=
"column"
:size=
"size"
:colon=
"false"
border
>
<template
slot=
"title"
>
<i
class=
"el-icon-tickets"
></i>
基本详细信息
</
template
>
<
template
slot=
"extra"
>
<el-button
type=
"primary"
@
click=
"$router.go(-1)"
size=
"small"
>
返回
</el-button>
<el-button
type=
"primary"
@
click=
"$router.go(-1)"
size=
"small"
>
返回
</el-button
>
</
template
>
<el-descriptions-item
label=
"请假人id"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.leavePersonId}}
<el-descriptions-item
label=
"请假人id"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.leavePersonId }}
</el-descriptions-item>
<el-descriptions-item
label=
"请假人"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.leavePerson}}
<el-descriptions-item
label=
"请假人"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.leavePerson }}
</el-descriptions-item>
<el-descriptions-item
label=
"所属部门id"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.deptId}}
<el-descriptions-item
label=
"所属部门id"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.deptId }}
</el-descriptions-item>
<el-descriptions-item
label=
"所属部门"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.deptName}}
<el-descriptions-item
label=
"所属部门"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.deptName }}
</el-descriptions-item>
<el-descriptions-item
label=
"电话号码"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.phoneNumber}}
<el-descriptions-item
label=
"电话号码"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.phoneNumber }}
</el-descriptions-item>
<el-descriptions-item
label=
"请假类型"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
<el-descriptions-item
label=
"请假类型"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatters("leaveType", form.leaveType) }}
</el-descriptions-item>
<el-descriptions-item
label=
"开始时间"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatterDate(form.startTime)}}
<el-descriptions-item
label=
"开始时间"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatterDate(form.startTime) }}
</el-descriptions-item>
<el-descriptions-item
label=
"结束时间"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatterDate(form.endTime)}}
<el-descriptions-item
label=
"结束时间"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatterDate(form.endTime) }}
</el-descriptions-item>
<el-descriptions-item
label=
"时长,单位秒"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.duration}}
<el-descriptions-item
label=
"时长,单位秒"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.duration }}
</el-descriptions-item>
<el-descriptions-item
label=
"请假事由"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.reason}}
<el-descriptions-item
label=
"请假事由"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.reason }}
</el-descriptions-item>
<el-descriptions-item
label=
"审批负责人Id"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.approverId}}
<el-descriptions-item
label=
"审批负责人Id"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.approverId }}
</el-descriptions-item>
<el-descriptions-item
label=
"审批负责人"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.approver}}
<el-descriptions-item
label=
"审批负责人"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.approver }}
</el-descriptions-item>
<el-descriptions-item
label=
"附件"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.attachment}}
<el-descriptions-item
label=
"附件"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.attachment }}
</el-descriptions-item>
<el-descriptions-item
label=
"附件路径"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.attachmentPath}}
<el-descriptions-item
label=
"附件路径"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.attachmentPath }}
</el-descriptions-item>
<el-descriptions-item
label=
"备注"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.remark}}
<el-descriptions-item
label=
"备注"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.remark }}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<
script
>
import
view
from
"
@/assets/mixins/view
"
;
export
default
{
import
view
from
"
@/assets/mixins/view
"
;
export
default
{
mixins
:
[
view
],
components
:
{
},
methods
:
{
},
components
:
{},
methods
:
{},
data
()
{
return
{
size
:
"
small
"
,
column
:
2
,
toString
:[
"
leaveType
"
,
],
toArrays
:
[
],
toDate
:
[
]
}
}
}
size
:
"
small
"
,
column
:
2
,
toString
:
[
"
leaveType
"
],
toArrays
:
[],
toDate
:
[],
};
},
};
</
script
>
<
style
lang=
"less"
>
.labelClass
{
.labelClass
{
width: 200px;
}
.el-descriptions__body
{
}
.el-descriptions__body
{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF
;
}
.contentClass
{
background-color: #fff
;
}
.contentClass
{
width: 600px;
}
}
</
style
>
attendance-performance-manager-ui/admin/src/views/feedback/addQuestion/list.vue
View file @
b86f11f2
<
template
>
<div
class=
"page"
>
<div
class=
"top"
>
<el-button
class=
"backBtn"
@
click=
"$router.back()"
>
返回上一级
</el-button>
<el-tabs
v-model=
"tabs"
>
<el-tab-pane
label=
"设计问卷"
name=
"1"
>
<iframe
style=
"width: 100%;height: 80vh;"
src=
"https://wurong19870715.gitee.io/formdesigner/#/"
frameborder=
"0"
></iframe>
<fc-designer
style=
"height: 75vh;"
ref=
"designer"
/>
<div
class=
"tool"
>
<!--功能按钮-->
<el-row>
<el-button
icon=
"el-icon-download"
type=
"primary"
size=
"small"
@
click=
"getFormJson()"
round
>
生成表单JSON
</el-button>
<el-button
icon=
"el-icon-download"
type=
"success"
size=
"small"
@
click=
"getFormOption()"
round
>
生成表单配置
</el-button>
<el-button
icon=
"el-icon-upload"
type=
"success"
size=
"small"
@
click=
"drawer = true"
round
>
预览
</el-button>
</el-row>
</div>
<el-drawer
title=
"预览"
:visible.sync=
"drawer"
:with-header=
"false"
>
<div
class=
"showPhone"
>
<div>
预览
</div>
</div>
</el-drawer>
</el-tab-pane>
</el-tabs>
</div>
...
...
@@ -14,12 +32,74 @@
export
default
{
data
()
{
return
{
tabs
:
'
1
'
tabs
:
'
1
'
,
drawer
:
false
,
}
},
methods
:
{
getFormJson
()
{
//FcDesigner 生成的`JSON`
const
FcDesignerRule
=
this
.
$refs
.
designer
.
getRule
();
console
.
log
(
FcDesignerRule
)
},
getFormOption
()
{
//FcDesigner 生成的`options`
const
FcDesignerOptions
=
this
.
$refs
.
designer
.
getOption
();
console
.
log
(
FcDesignerOptions
)
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.top {}
.showPhone{
border: 1px solid;
height: 100%;
width: 100%;
}
.backBtn {
position: absolute;
right: 20px;
z-index: 99;
}
.tool {
margin-top: 20px;
text-align: center;
}
/* 侧边滚动条 */
/deep/.el-aside::-webkit-scrollbar {
width: 3px;
}
/* 滚动条上的滚动滑块 */
/deep/.el-aside::-webkit-scrollbar-thumb {
background: #CCCCCC;
border-radius: 4px;
}
/* 滚动条轨道 */
/deep/.el-aside::-webkit-scrollbar-track {
background: #EEEEEE;
border-radius: 4px;
}
/* 侧边滚动条 */
/deep/.el-main::-webkit-scrollbar {
width: 3px;
}
/* 滚动条上的滚动滑块 */
/deep/.el-main::-webkit-scrollbar-thumb {
background: #CCCCCC;
border-radius: 4px;
}
/* 滚动条轨道 */
/deep/.el-main::-webkit-scrollbar-track {
background: #EEEEEE;
border-radius: 4px;
}
</
style
>
\ No newline at end of file
attendance-performance-manager-ui/admin/src/views/homeCharts/record/list.vue
View file @
b86f11f2
...
...
@@ -4,6 +4,11 @@
<div
class=
"left_top"
>
<div
class=
"title"
>
部门绩效总分排名TOP10
<div
class=
"button_box"
>
<span>
今年
</span>
<span
class=
"check"
>
本月
</span>
<span>
今日
</span>
</div>
</div>
<dv-scroll-ranking-board
:config=
"config"
...
...
@@ -11,6 +16,11 @@
/>
</div>
<div
class=
"left_mid"
>
<div
class=
"button_box"
>
<span>
今年
</span>
<span
class=
"check"
>
本月
</span>
<span>
今日
</span>
</div>
<div
id=
"leida"
style=
"width: 100%;height: 100%;"
></div>
</div>
<div
class=
"left_down"
>
...
...
@@ -176,6 +186,11 @@
</div>
<div
class=
"right"
>
<div
class=
"right_top"
>
<div
class=
"button_box"
>
<span>
今年
</span>
<span
class=
"check"
>
本月
</span>
<span>
今日
</span>
</div>
<div
class=
"title"
>
个人绩效总分排名TOP10
</div>
...
...
@@ -185,6 +200,11 @@
/>
</div>
<div
class=
"right_mid"
>
<div
class=
"button_box"
>
<span>
今年
</span>
<span
class=
"check"
>
本月
</span>
<span>
今日
</span>
</div>
<div
id=
"shensuPie"
style=
"width: 100%;height: 100%;"
></div>
</div>
<div
class=
"right_down"
>
...
...
@@ -326,6 +346,8 @@ export default {
legend
:
{
data
:
[
"
加分
"
,
"
扣分
"
],
right
:
0
,
bottom
:
"
50px
"
,
orient
:
"
vertical
"
,
},
radar
:
[
{
...
...
@@ -843,6 +865,7 @@ export default {
.right_top,
.right_mid,
.right_down {
position: relative;
width: 100%;
height: 33%;
background: #fff;
...
...
@@ -864,5 +887,39 @@ export default {
height: 30%;
margin: 15px 0;
}
.button_box {
position: absolute;
top: 8px;
right: 10px;
display: flex;
span {
border-width: 0px;
width: 40px;
height: 24px;
display: flex;
font-family: "微软雅黑", sans-serif;
font-weight: 400;
font-style: normal;
font-size: 12px;
color: #797979;
background-color: rgba(28, 117, 221, 0.0980392156862745);
border: none;
border-radius: 4px;
justify-content: center;
align-items: center;
margin-right: 5px;
cursor: pointer;
}
.check {
background: linear-gradient(
90deg,
rgba(23, 67, 198, 1) 0%,
rgba(31, 116, 223, 1) 50%,
rgba(44, 140, 240, 1) 99%
);
font-size: 12px;
color: #ffffff;
}
}
}
</
style
>
attendance-performance-manager-ui/admin/src/views/perform/attend/appeal/drawershow.vue
View file @
b86f11f2
...
...
@@ -5,100 +5,283 @@
:visible.sync=
"open"
:direction=
"direction"
:destroy-on-close=
"true"
size=
"50%"
>
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
label=
"核查记录Id"
prop=
"checkRecordId"
v-model=
"form.checkRecordId"
placeholder=
"请输入核查记录Id"
/>
<Field
label=
"员工ID"
prop=
"staffId"
v-model=
"form.staffId"
placeholder=
"请输入员工ID"
/>
<Field
label=
"员工姓名"
prop=
"staffName"
v-model=
"form.staffName"
placeholder=
"请输入员工姓名"
/>
<Field
label=
"工号"
prop=
"workNum"
v-model=
"form.workNum"
placeholder=
"请输入工号"
/>
<Field
label=
"所属部门"
prop=
"deptId"
v-model=
"form.deptId"
placeholder=
"请输入所属部门"
/>
<Field
label=
"所属部门名称"
prop=
"deptName"
v-model=
"form.deptName"
placeholder=
"请输入所属部门名称"
/>
<Field
label=
"所属考勤组ID"
prop=
"attendanceGroupId"
v-model=
"form.attendanceGroupId"
placeholder=
"请输入所属考勤组ID"
/>
<Field
label=
"所属考勤组名称"
prop=
"attendanceGroupName"
v-model=
"form.attendanceGroupName"
placeholder=
"请输入所属考勤组名称"
/>
<Field
label=
"考勤时间"
prop=
"attendanceDate"
v-model=
"form.attendanceDate"
type=
"date"
/>
<Field
label=
"绩效规则id"
prop=
"ruleId"
v-model=
"form.ruleId"
placeholder=
"请输入绩效规则id"
/>
<Field
label=
"规则名称"
prop=
"ruleName"
v-model=
"form.ruleName"
placeholder=
"请输入规则名称"
/>
<Field
label=
"扣分方式"
prop=
"subMethod"
v-model=
"form.subMethod"
type=
"select"
:enumData=
"dict.subMethod"
placeholder=
"请选择扣分方式"
/>
<Field
label=
"增减类型"
prop=
"subAddType"
v-model=
"form.subAddType"
type=
"select"
:enumData=
"dict.subAddType"
placeholder=
"请选择增减类型"
/>
<Field
label=
"扣分或增加分值"
prop=
"score"
v-model=
"form.score"
placeholder=
"请输入扣分或增加分值"
/>
<Field
label=
"上下班时间"
prop=
"goOffTimeStr"
v-model=
"form.goOffTimeStr"
placeholder=
"请输入上下班时间"
/>
<Field
label=
"异常时间"
prop=
"errorTime"
v-model=
"form.errorTime"
type=
"date"
/>
<Field
label=
"实际打卡时间"
prop=
"actualAttendTime"
v-model=
"form.actualAttendTime"
type=
"date"
/>
<Field
label=
"异常处理结果"
prop=
"errorResult"
v-model=
"form.errorResult"
placeholder=
"请输入异常处理结果"
/>
<Field
label=
"核查人员"
prop=
"checkPerson"
v-model=
"form.checkPerson"
placeholder=
"请输入核查人员"
/>
<Field
label=
"核查时间"
prop=
"checkTime"
v-model=
"form.checkTime"
type=
"date"
/>
<Field
label=
"核查说明"
prop=
"checkDesc"
v-model=
"form.checkDesc"
type=
"textarea"
placeholder=
"请输入核查说明"
/>
<Field
label=
"核查结果"
prop=
"checkResult"
v-model=
"form.checkResult"
placeholder=
"请输入核查结果"
/>
<Field
label=
"处理状态"
prop=
"processStatus"
v-model=
"form.processStatus"
type=
"select"
:enumData=
"dict.processStatus"
placeholder=
"请选择处理状态"
/>
<Field
label=
"申诉说明"
prop=
"appealDesc"
v-model=
"form.appealDesc"
placeholder=
"请输入申诉说明"
/>
<Field
label=
"申诉时间"
prop=
"appealTime"
v-model=
"form.appealTime"
type=
"date"
/>
<Field
label=
"申诉结果"
prop=
"appealResult"
v-model=
"form.appealResult"
type=
"select"
:enumData=
"dict.appealResult"
placeholder=
"请选择申诉结果"
/>
<Field
label=
"说明"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入说明"
/>
<Field
label=
"核查记录Id"
prop=
"checkRecordId"
v-model=
"form.checkRecordId"
placeholder=
"请输入核查记录Id"
/>
<Field
label=
"员工ID"
prop=
"staffId"
v-model=
"form.staffId"
placeholder=
"请输入员工ID"
/>
<Field
label=
"员工姓名"
prop=
"staffName"
v-model=
"form.staffName"
placeholder=
"请输入员工姓名"
/>
<Field
label=
"工号"
prop=
"workNum"
v-model=
"form.workNum"
placeholder=
"请输入工号"
/>
<Field
label=
"所属部门"
prop=
"deptId"
v-model=
"form.deptId"
placeholder=
"请输入所属部门"
/>
<Field
label=
"所属部门名称"
prop=
"deptName"
v-model=
"form.deptName"
placeholder=
"请输入所属部门名称"
/>
<Field
label=
"所属考勤组ID"
prop=
"attendanceGroupId"
v-model=
"form.attendanceGroupId"
placeholder=
"请输入所属考勤组ID"
/>
<Field
label=
"所属考勤组名称"
prop=
"attendanceGroupName"
v-model=
"form.attendanceGroupName"
placeholder=
"请输入所属考勤组名称"
/>
<Field
label=
"考勤时间"
prop=
"attendanceDate"
v-model=
"form.attendanceDate"
type=
"date"
/>
<Field
label=
"绩效规则id"
prop=
"ruleId"
v-model=
"form.ruleId"
placeholder=
"请输入绩效规则id"
/>
<Field
label=
"规则名称"
prop=
"ruleName"
v-model=
"form.ruleName"
placeholder=
"请输入规则名称"
/>
<Field
label=
"扣分方式"
prop=
"subMethod"
v-model=
"form.subMethod"
type=
"select"
:enumData=
"dict.subMethod"
placeholder=
"请选择扣分方式"
/>
<Field
label=
"增减类型"
prop=
"subAddType"
v-model=
"form.subAddType"
type=
"select"
:enumData=
"dict.subAddType"
placeholder=
"请选择增减类型"
/>
<Field
label=
"扣分或增加分值"
prop=
"score"
v-model=
"form.score"
placeholder=
"请输入扣分或增加分值"
/>
<Field
label=
"上下班时间"
prop=
"goOffTimeStr"
v-model=
"form.goOffTimeStr"
placeholder=
"请输入上下班时间"
/>
<Field
label=
"异常时间"
prop=
"errorTime"
v-model=
"form.errorTime"
type=
"date"
/>
<Field
label=
"实际打卡时间"
prop=
"actualAttendTime"
v-model=
"form.actualAttendTime"
type=
"date"
/>
<Field
label=
"异常处理结果"
prop=
"errorResult"
v-model=
"form.errorResult"
placeholder=
"请输入异常处理结果"
/>
<Field
label=
"核查人员"
prop=
"checkPerson"
v-model=
"form.checkPerson"
placeholder=
"请输入核查人员"
/>
<Field
label=
"核查时间"
prop=
"checkTime"
v-model=
"form.checkTime"
type=
"date"
/>
<Field
label=
"核查说明"
prop=
"checkDesc"
v-model=
"form.checkDesc"
type=
"textarea"
placeholder=
"请输入核查说明"
/>
<Field
label=
"核查结果"
prop=
"checkResult"
v-model=
"form.checkResult"
placeholder=
"请输入核查结果"
/>
<Field
label=
"处理状态"
prop=
"processStatus"
v-model=
"form.processStatus"
type=
"select"
:enumData=
"dict.processStatus"
placeholder=
"请选择处理状态"
/>
<Field
label=
"申诉说明"
prop=
"appealDesc"
v-model=
"form.appealDesc"
placeholder=
"请输入申诉说明"
/>
<Field
label=
"申诉时间"
prop=
"appealTime"
v-model=
"form.appealTime"
type=
"date"
/>
<Field
label=
"申诉结果"
prop=
"appealResult"
v-model=
"form.appealResult"
type=
"select"
:enumData=
"dict.appealResult"
placeholder=
"请选择申诉结果"
/>
<Field
label=
"说明"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入说明"
/>
</el-row>
<el-divider
content-position=
"center"
>
绩效记录申诉附件信息信息
</el-divider>
<br/>
<el-divider
content-position=
"center"
>
绩效记录申诉附件信息信息
</el-divider
>
<br
/>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAddPerformAttendAppealFiles"
>
添加
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAddPerformAttendAppealFiles"
>
添加
</el-button
>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"danger"
icon=
"el-icon-delete"
size=
"mini"
@
click=
"handleDeletePerformAttendAppealFiles"
>
删除
</el-button>
<el-button
type=
"danger"
icon=
"el-icon-delete"
size=
"mini"
@
click=
"handleDeletePerformAttendAppealFiles"
>
删除
</el-button
>
</el-col>
</el-row>
<el-table
:data=
"performAttendAppealFilesList"
:row-class-name=
"rowPerformAttendAppealFilesIndex"
@
selection-change=
"handlePerformAttendAppealFilesSelectionChange"
ref=
"performAttendAppealFiles"
>
<el-table
:data=
"performAttendAppealFilesList"
:row-class-name=
"rowPerformAttendAppealFilesIndex"
@
selection-change=
"handlePerformAttendAppealFilesSelectionChange"
ref=
"performAttendAppealFiles"
>
<el-table-column
type=
"selection"
width=
"50"
align=
"center"
/>
<el-table-column
label=
"序号"
align=
"center"
prop=
"index"
width=
"50"
/>
<el-table-column
label=
"序号"
align=
"center"
prop=
"index"
width=
"50"
/>
<el-table-column
label=
"文件名称"
prop=
"fileName"
>
<template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.fileName"
placeholder=
"请输入文件名称"
/>
<el-input
v-model=
"scope.row.fileName"
placeholder=
"请输入文件名称"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"文件地址"
prop=
"filePath"
>
<
template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.filePath"
placeholder=
"请输入文件地址"
/>
<el-input
v-model=
"scope.row.filePath"
placeholder=
"请输入文件地址"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"创建用户"
prop=
"createUserId"
>
<
template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.createUserId"
placeholder=
"请输入创建用户"
/>
<el-input
v-model=
"scope.row.createUserId"
placeholder=
"请输入创建用户"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"创建时间"
prop=
"createTime"
>
<
template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.createTime"
placeholder=
"请输入创建时间"
/>
<el-input
v-model=
"scope.row.createTime"
placeholder=
"请输入创建时间"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"更新用户"
prop=
"updateUserId"
>
<
template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.updateUserId"
placeholder=
"请输入更新用户"
/>
<el-input
v-model=
"scope.row.updateUserId"
placeholder=
"请输入更新用户"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"更新时间"
prop=
"updateTime"
>
<
template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.updateTime"
placeholder=
"请输入更新时间"
/>
<el-input
v-model=
"scope.row.updateTime"
placeholder=
"请输入更新时间"
/>
</
template
>
</el-table-column>
</el-table>
<form-buttons
@
submit=
'submitForm'
v-if=
"pageInfo.type!='view'"
noCancelBtn
/>
<form-buttons
@
submit=
"submitForm"
v-if=
"pageInfo.type != 'view'"
noCancelBtn
/>
</el-form>
</el-drawer>
</template>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
PerformAttendAppealDetail
"
,
mixins
:
[
form
],
components
:
{
},
components
:
{},
created
()
{
this
.
changePath
(
"
perform/attend/appeal
"
)
this
.
changePath
(
"
perform/attend/appeal
"
);
},
data
()
{
return
{
...
...
@@ -112,14 +295,9 @@
title
:
"
绩效记录申诉信息
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:[
"
subMethod
"
,
"
subAddType
"
,
"
processStatus
"
,
"
appealResult
"
,
],
toDate
:[
direction
:
"
rtl
"
,
toString
:
[
"
subMethod
"
,
"
subAddType
"
,
"
processStatus
"
,
"
appealResult
"
],
toDate
:
[
"
attendanceDate
"
,
"
errorTime
"
,
"
actualAttendTime
"
,
...
...
@@ -129,13 +307,11 @@
// 表单校验
rules
:
{
staffName
:
[
{
required
:
true
,
message
:
"
请输入员工姓名
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
,
},
{
required
:
true
,
message
:
"
请输入员工姓名
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
],
createTime
:
[
{
required
:
true
,
message
:
"
请选择创建时间
"
},
],
}
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
},
};
},
...
...
@@ -158,9 +334,14 @@
/** 绩效记录申诉附件信息删除按钮操作 */
handleDeletePerformAttendAppealFiles
()
{
if
(
this
.
checkedPerformAttendAppealFiles
.
length
==
0
)
{
this
.
$alert
(
"
请先选择要删除的绩效记录申诉附件信息数据
"
,
"
提示
"
,
{
confirmButtonText
:
"
确定
"
,
});
this
.
$alert
(
"
请先选择要删除的绩效记录申诉附件信息数据
"
,
"
提示
"
,
{
confirmButtonText
:
"
确定
"
,
});
}
else
{
this
.
performAttendAppealFilesList
.
splice
(
this
.
checkedPerformAttendAppealFiles
[
0
].
index
-
1
,
1
);
this
.
performAttendAppealFilesList
.
splice
(
this
.
checkedPerformAttendAppealFiles
[
0
].
index
-
1
,
1
);
}
},
/** 单选框选中数据 */
...
...
@@ -174,35 +355,36 @@
},
// 渲染前置处理
beforeRender
(
data
)
{
if
(
data
.
entity
.
performAttendAppealFilesList
)
{
this
.
performAttendAppealFilesList
=
data
.
entity
.
performAttendAppealFilesList
;
if
(
data
.
entity
.
performAttendAppealFilesList
)
{
this
.
performAttendAppealFilesList
=
data
.
entity
.
performAttendAppealFilesList
;
}
return
data
return
data
;
},
/** 编辑 */
edit
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/attend/appeal/edit
"
;
this
.
urls
.
currUrl
=
"
perform/attend/appeal/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改绩效记录申诉信息
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
urls
.
currUrl
=
"
perform/attend/appeal/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增绩效记录申诉信息
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/attend/appeal/view
"
;
this
.
urls
.
currUrl
=
"
perform/attend/appeal/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
绩效记录申诉信息详细
"
;
},
/**取消按钮 */
...
...
@@ -222,33 +404,33 @@
// 表单重置
reset
()
{
this
.
form
=
{
checkRecordId
:
null
,
staffId
:
null
,
staffName
:
""
,
workNum
:
""
,
deptId
:
null
,
deptName
:
""
,
attendanceGroupId
:
null
,
attendanceGroupName
:
""
,
attendanceDate
:
null
,
ruleId
:
null
,
ruleName
:
""
,
subMethod
:
1
,
subAddType
:
1
,
score
:
0.0
0
,
goOffTimeStr
:
""
,
errorTime
:
null
,
actualAttendTime
:
null
,
errorResult
:
""
,
checkPerson
:
""
,
checkTime
:
null
,
checkDesc
:
""
,
checkResult
:
""
,
processStatus
:
1
,
appealDesc
:
""
,
appealTime
:
null
,
appealResult
:
2
,
remark
:
""
,
checkRecordId
:
null
,
staffId
:
null
,
staffName
:
""
,
workNum
:
""
,
deptId
:
null
,
deptName
:
""
,
attendanceGroupId
:
null
,
attendanceGroupName
:
""
,
attendanceDate
:
null
,
ruleId
:
null
,
ruleName
:
""
,
subMethod
:
1
,
subAddType
:
1
,
score
:
0.
0
,
goOffTimeStr
:
""
,
errorTime
:
null
,
actualAttendTime
:
null
,
errorResult
:
""
,
checkPerson
:
""
,
checkTime
:
null
,
checkDesc
:
""
,
checkResult
:
""
,
processStatus
:
1
,
appealDesc
:
""
,
appealTime
:
null
,
appealResult
:
2
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
...
...
@@ -258,5 +440,5 @@
}
},
},
};
};
</
script
>
attendance-performance-manager-ui/admin/src/views/perform/attend/appeal/list.vue
View file @
b86f11f2
...
...
@@ -255,7 +255,7 @@ export default {
overflow: hidden;
/deep/.el-tabs__item {
width: 120px;
font-size: 1
8
px;
font-size: 1
4
px;
text-align: center;
}
.content {
...
...
attendance-performance-manager-ui/admin/src/views/perform/dept/conf/list.vue
View file @
b86f11f2
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
PerformDeptConfList
"
,
components
:
{
drawerShow
},
mixins
:
[
table
],
created
()
{
drawerShow
,
},
mixins
:
[
table
],
created
()
{},
methods
:
{
/** 重写新增方法 */
toAdd
(
row
)
{
...
...
@@ -33,45 +30,73 @@
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
},
},
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
],
isshowTabPane
:
true
,
search
:
[],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
部门id
"
,
prop
:
"
deptId
"
,
formatter
:
this
.
formatter
},
{
label
:
"
部门id
"
,
prop
:
"
deptId
"
,
formatter
:
this
.
formatter
},
{
label
:
"
部门名称
"
,
prop
:
"
deptName
"
},
{
label
:
"
部门名称
"
,
prop
:
"
deptName
"
},
{
label
:
"
考勤绩效指标数量
"
,
prop
:
"
attendCount
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考勤绩效指标数量
"
,
prop
:
"
attendCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
评价绩效指标数量
"
,
prop
:
"
assessCount
"
,
formatter
:
this
.
formatter
},
{
label
:
"
评价绩效指标数量
"
,
prop
:
"
assessCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
办件绩效指标数量
"
,
prop
:
"
workCount
"
,
formatter
:
this
.
formatter
},
{
label
:
"
办件绩效指标数量
"
,
prop
:
"
workCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
效能绩效指标数量
"
,
prop
:
"
effectCount
"
,
formatter
:
this
.
formatter
},
{
label
:
"
效能绩效指标数量
"
,
prop
:
"
effectCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
其它绩效指标数量
"
,
prop
:
"
otherCount
"
,
formatter
:
this
.
formatter
},
{
label
:
"
其它绩效指标数量
"
,
prop
:
"
otherCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
formatter
:
(
row
)
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
}
]
}
};
}
},
},
],
},
};
},
};
</
script
>
attendance-performance-manager-ui/admin/src/views/perform/perpose/dialogshow.vue
View file @
b86f11f2
<
template
>
<!-- 弹出框表单 -->
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"90%"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"12
0px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"18
0px"
>
<el-row>
<Field
label=
"负责人id号"
prop=
"ownerId"
v-model=
"form.ownerId"
placeholder=
"请输入负责人id号"
/>
<Field
label=
"负责人名称"
prop=
"ownerName"
v-model=
"form.ownerName"
placeholder=
"请输入负责人名称"
/>
<Field
label=
"窗口工作人员id号"
prop=
"staffId"
v-model=
"form.staffId"
placeholder=
"请输入窗口工作人员id号"
/>
<Field
label=
"请假类型"
prop=
"assessmentType"
v-model=
"form.assessmentType"
type=
"select"
:enumData=
"dict.assessmentType"
placeholder=
"请选择请假类型"
/>
<Field
label=
"考核范围"
prop=
"assessmentScope"
v-model=
"form.assessmentScope"
type=
"select"
:enumData=
"dict.assessmentScope"
placeholder=
"请选择考核范围"
/>
<Field
label=
"考比较类型"
prop=
"compareScope"
v-model=
"form.compareScope"
type=
"select"
:enumData=
"dict.compareScope"
placeholder=
"请选择考比较类型"
/>
<Field
label=
"比例"
prop=
"ratio"
v-model=
"form.ratio"
placeholder=
"请输入比例"
/>
<Field
label=
"周期类型"
prop=
"periodType"
v-model=
"form.periodType"
type=
"select"
:enumData=
"dict.periodType"
placeholder=
"请选择周期类型"
/>
<Field
label=
"年"
prop=
"year"
v-model=
"form.year"
placeholder=
"请输入年"
/>
<Field
label=
"月"
prop=
"month"
v-model=
"form.month"
type=
"select"
:enumData=
"dict.month"
placeholder=
"请选择月"
/>
<Field
label=
"半年类型"
prop=
"halfYear"
v-model=
"form.halfYear"
type=
"select"
:enumData=
"dict.halfYear"
placeholder=
"请选择半年类型"
/>
<Field
label=
"半年类型"
prop=
"halfYear"
v-model=
"form.halfYear"
type=
"select"
:enumData=
"dict.halfYear"
placeholder=
"请选择半年类型"
/>
<Field
label=
"季度类型"
prop=
"quarter"
v-model=
"form.quarter"
type=
"select"
:enumData=
"dict.quarter"
placeholder=
"请选择季度类型"
/>
<Field
label=
"负责人,多个逗号分割"
prop=
"leaders"
v-model=
"form.leaders"
type=
"textarea"
placeholder=
"请输入负责人,多个逗号分割"
/>
<Field
label=
"负责人电话,多个逗号分割"
prop=
"leaderMobiles"
v-model=
"form.leaderMobiles"
type=
"textarea"
placeholder=
"请输入负责人电话,多个逗号分割"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
<Field
label=
"负责人id号"
prop=
"ownerId"
v-model=
"form.ownerId"
placeholder=
"请输入负责人id号"
/>
<Field
label=
"负责人名称"
prop=
"ownerName"
v-model=
"form.ownerName"
placeholder=
"请输入负责人名称"
/>
<Field
label=
"窗口工作人员id号"
prop=
"staffId"
v-model=
"form.staffId"
placeholder=
"请输入窗口工作人员id号"
/>
<Field
label=
"请假类型"
prop=
"assessmentType"
v-model=
"form.assessmentType"
type=
"select"
:enumData=
"dict.assessmentType"
placeholder=
"请选择请假类型"
/>
<Field
label=
"考核范围"
prop=
"assessmentScope"
v-model=
"form.assessmentScope"
type=
"select"
:enumData=
"dict.assessmentScope"
placeholder=
"请选择考核范围"
/>
<Field
label=
"考比较类型"
prop=
"compareScope"
v-model=
"form.compareScope"
type=
"select"
:enumData=
"dict.compareScope"
placeholder=
"请选择考比较类型"
/>
<Field
label=
"比例"
prop=
"ratio"
v-model=
"form.ratio"
placeholder=
"请输入比例"
/>
<Field
label=
"周期类型"
prop=
"periodType"
v-model=
"form.periodType"
type=
"select"
:enumData=
"dict.periodType"
placeholder=
"请选择周期类型"
/>
<Field
label=
"年"
prop=
"year"
v-model=
"form.year"
placeholder=
"请输入年"
/>
<Field
label=
"月"
prop=
"month"
v-model=
"form.month"
type=
"select"
:enumData=
"dict.month"
placeholder=
"请选择月"
/>
<Field
label=
"半年类型"
prop=
"halfYear"
v-model=
"form.halfYear"
type=
"select"
:enumData=
"dict.halfYear"
placeholder=
"请选择半年类型"
/>
<Field
label=
"半年类型"
prop=
"halfYear"
v-model=
"form.halfYear"
type=
"select"
:enumData=
"dict.halfYear"
placeholder=
"请选择半年类型"
/>
<Field
label=
"季度类型"
prop=
"quarter"
v-model=
"form.quarter"
type=
"select"
:enumData=
"dict.quarter"
placeholder=
"请选择季度类型"
/>
<Field
label=
"负责人,多个逗号分割"
prop=
"leaders"
v-model=
"form.leaders"
type=
"textarea"
placeholder=
"请输入负责人,多个逗号分割"
/>
<Field
label=
"负责人电话,多个逗号分割"
prop=
"leaderMobiles"
v-model=
"form.leaderMobiles"
type=
"textarea"
placeholder=
"请输入负责人电话,多个逗号分割"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
v-if=
"pageInfo.type !== 'view'"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
type=
"primary"
v-if=
"pageInfo.type !== 'view'"
@
click=
"submitForm"
>
确 定
</el-button
>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
import
dialogShow
from
"
./dialogshow
"
;
export
default
{
import
form
from
"
@/assets/mixins/formdialog
"
;
import
dialogShow
from
"
./dialogshow
"
;
export
default
{
mixins
:
[
form
],
components
:
{
dialogShow
,
dialogShow
,
},
data
()
{
return
{
...
...
@@ -46,7 +148,7 @@
title
:
"
考核目标
"
,
// 是否显示弹出层
open
:
false
,
toString
:
[
toString
:
[
"
assessmentType
"
,
"
assessmentScope
"
,
"
compareScope
"
,
...
...
@@ -58,41 +160,37 @@
],
// 表单校验
rules
:
{
year
:
[
{
required
:
true
,
message
:
"
请输入年
"
,
trigger
:
"
blur
"
},
],
month
:
[
{
required
:
true
,
message
:
"
请输入月
"
,
trigger
:
"
blur
"
},
],
}
year
:
[{
required
:
true
,
message
:
"
请输入年
"
,
trigger
:
"
blur
"
}],
month
:
[{
required
:
true
,
message
:
"
请输入月
"
,
trigger
:
"
blur
"
}],
},
};
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/perpose/edit
"
;
this
.
urls
.
currUrl
=
"
perform/perpose/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改考核目标
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
urls
.
currUrl
=
"
perform/perpose/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增考核目标
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/perpose/view
"
;
this
.
urls
.
currUrl
=
"
perform/perpose/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
考核目标详细
"
;
},
/**取消按钮 */
...
...
@@ -112,22 +210,22 @@
// 表单重置
reset
()
{
this
.
form
=
{
ownerId
:
null
,
ownerName
:
""
,
staffId
:
null
,
assessmentType
:
null
,
assessmentScope
:
1
,
compareScope
:
1
,
ratio
:
0.0
0
,
periodType
:
1
,
year
:
null
,
month
:
null
,
halfYear
:
1
,
halfYear
:
1
,
quarter
:
1
,
leaders
:
""
,
leaderMobiles
:
""
,
remark
:
""
,
ownerId
:
null
,
ownerName
:
""
,
staffId
:
null
,
assessmentType
:
null
,
assessmentScope
:
1
,
compareScope
:
1
,
ratio
:
0.
0
,
periodType
:
1
,
year
:
null
,
month
:
null
,
halfYear
:
1
,
halfYear
:
1
,
quarter
:
1
,
leaders
:
""
,
leaderMobiles
:
""
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
...
...
@@ -137,5 +235,5 @@
}
},
},
};
};
</
script
>
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/components/AttendIndex.vue
View file @
b86f11f2
...
...
@@ -23,9 +23,22 @@
<div
class=
"right_box"
>
<h3>
规则管理
</h3>
<div
class=
"search_box"
>
<div
class=
"left_search"
>
<el-button
type=
"primary"
style=
"margin:20px 0"
@
click=
"addRules"
>
+ 新增规则
</el-button
>
<el-switch
v-model=
"switchValue"
active-color=
"#13ce66"
inactive-color=
"#1890ff"
active-value=
"100"
inactive-value=
"0"
inactive-text=
"按分值排序"
active-text=
"按更新时间排序"
style=
"margin-left: 10px;"
>
</el-switch>
</div>
<div
class=
"search"
>
<el-input
placeholder=
"请输入考核内容关键字搜索"
...
...
@@ -70,6 +83,7 @@ export default {
},
data
()
{
return
{
switchValue
:
"
0
"
,
index
:
-
1
,
dataArr
:
[],
config
:
{
...
...
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/list.vue
View file @
b86f11f2
...
...
@@ -46,7 +46,7 @@ export default {
overflow: hidden;
/deep/.el-tabs__item {
width: 180px;
font-size: 1
8
px;
font-size: 1
4
px;
text-align: center;
}
}
...
...
attendance-performance-manager-ui/admin/src/views/perform/staff/conf/deptdrawershow.vue
0 → 100644
View file @
b86f11f2
<
template
>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
size=
"50%"
>
<el-form
ref=
"form"
class=
"form_content"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<el-row
style=
"width: 100%;margin-bottom: 10px;"
>
<el-col
style=
"width: 100%;"
:span=
"24"
>
<Field
label=
"选择部门:"
prop=
"deptId"
v-model=
"form.deptId"
placeholder=
"选择部门"
:enumData=
"deptGroup"
type=
"select"
/>
</el-col>
</el-row>
<el-row
style=
"width: 96%;margin: 0 auto;"
>
<el-tabs
v-model=
"activeName"
type=
"card"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"考勤绩效指标"
name=
"1"
>
<div
class=
"content"
>
<div
class=
"top"
>
<div>
请选择自动考核指标:
</div>
<div
class=
"search_box"
>
<el-select
v-model=
"type"
placeholder=
"请选择分类"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
style=
"width: 200px;"
>
</el-option>
</el-select>
<el-input
v-model=
"keywords"
placeholder=
"请输入评分标准关键字搜索"
style=
"width: 200px;margin: 0 10px;"
></el-input>
<el-button
type=
"primary"
>
搜索
</el-button>
</div>
</div>
<div
class=
"mid_table"
>
<el-table
:data=
"tableData"
border
style=
"width: 100%"
>
<el-table-column
type=
"index"
label=
"序号"
width=
"50"
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"考核内容简称"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"simple"
label=
"评分标准"
>
</el-table-column>
<el-table-column
prop=
"core"
label=
"扣分分值"
>
</el-table-column>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"120"
>
<template
slot-scope=
"scope"
>
<el-switch
v-model=
"scope.row.check"
@
change=
"handleChange(scope.row)"
>
</el-switch>
</
template
>
</el-table-column>
</el-table>
</div>
</div>
</el-tab-pane>
<el-tab-pane
label=
"评价绩效指标"
name=
"2"
>
<div
class=
"content"
>
<div
class=
"top"
>
<div>
请选择自动考核指标:
</div>
<div
class=
"search_box"
>
<el-select
v-model=
"type"
placeholder=
"请选择分类"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
style=
"width: 200px;"
>
</el-option>
</el-select>
<el-input
v-model=
"keywords"
placeholder=
"请输入评分标准关键字搜索"
style=
"width: 200px;margin: 0 10px;"
></el-input>
<el-button
type=
"primary"
>
搜索
</el-button>
</div>
</div>
<div
class=
"mid_table"
>
<el-table
:data=
"tableData"
border
style=
"width: 100%"
>
<el-table-column
type=
"index"
label=
"序号"
width=
"50"
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"考核内容简称"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"simple"
label=
"评分标准"
>
</el-table-column>
<el-table-column
prop=
"core"
label=
"扣分分值"
>
</el-table-column>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<el-switch
v-model=
"scope.row.check"
@
change=
"handleChange(scope.row)"
>
</el-switch>
</
template
>
</el-table-column>
</el-table>
</div>
</div>
</el-tab-pane>
<el-tab-pane
label=
"办件绩效指标"
name=
"3"
>
<div
class=
"content"
>
<div
class=
"top"
>
<div>
请选择自动考核指标:
</div>
<div
class=
"search_box"
>
<el-select
v-model=
"type"
placeholder=
"请选择分类"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
style=
"width: 200px;"
>
</el-option>
</el-select>
<el-input
v-model=
"keywords"
placeholder=
"请输入评分标准关键字搜索"
style=
"width: 200px;margin: 0 10px;"
></el-input>
<el-button
type=
"primary"
>
搜索
</el-button>
</div>
</div>
<div
class=
"mid_table"
>
<el-table
:data=
"tableData"
border
style=
"width: 100%"
>
<el-table-column
type=
"index"
label=
"序号"
width=
"50"
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"考核内容简称"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"simple"
label=
"评分标准"
>
</el-table-column>
<el-table-column
prop=
"core"
label=
"扣分分值"
>
</el-table-column>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<el-switch
v-model=
"scope.row.check"
@
change=
"handleChange(scope.row)"
>
</el-switch>
</
template
>
</el-table-column>
</el-table>
</div>
</div>
</el-tab-pane>
<el-tab-pane
label=
"效能绩效指标"
name=
"4"
>
<div
class=
"content"
>
<div
class=
"top"
>
<div>
请选择自动考核指标:
</div>
<div
class=
"search_box"
>
<el-select
v-model=
"type"
placeholder=
"请选择分类"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
style=
"width: 200px;"
>
</el-option>
</el-select>
<el-input
v-model=
"keywords"
placeholder=
"请输入评分标准关键字搜索"
style=
"width: 200px;margin: 0 10px;"
></el-input>
<el-button
type=
"primary"
>
搜索
</el-button>
</div>
</div>
<div
class=
"mid_table"
>
<el-table
:data=
"tableData"
border
style=
"width: 100%"
>
<el-table-column
type=
"index"
label=
"序号"
width=
"50"
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"考核内容简称"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"simple"
label=
"评分标准"
>
</el-table-column>
<el-table-column
prop=
"core"
label=
"扣分分值"
>
</el-table-column>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<el-switch
v-model=
"scope.row.check"
@
change=
"handleChange(scope.row)"
>
</el-switch>
</
template
>
</el-table-column>
</el-table>
</div>
</div>
</el-tab-pane>
</el-tabs>
</el-row>
</el-row>
<form-buttons
@
submit=
"submitForm"
noCancelBtn
/>
</el-form>
<!-- <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field
label="部门id"
prop="deptId"
v-model="form.deptId"
placeholder="请输入部门id"
/>
<Field
label="部门名称"
prop="deptName"
v-model="form.deptName"
type="textarea"
placeholder="请输入部门名称"
/>
<Field
label="考勤绩效指标数量"
prop="attendCount"
v-model="form.attendCount"
placeholder="请输入考勤绩效指标数量"
/>
<Field
label="评价绩效指标数量"
prop="assessCount"
v-model="form.assessCount"
placeholder="请输入评价绩效指标数量"
/>
<Field
label="办件绩效指标数量"
prop="workCount"
v-model="form.workCount"
placeholder="请输入办件绩效指标数量"
/>
<Field
label="效能绩效指标数量"
prop="effectCount"
v-model="form.effectCount"
placeholder="请输入效能绩效指标数量"
/>
<Field
label="其它绩效指标数量"
prop="otherCount"
v-model="form.otherCount"
placeholder="请输入其它绩效指标数量"
/>
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row>
<form-buttons @submit="submitForm" noCancelBtn />
</el-form> -->
</el-drawer>
</template>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
PerformDeptConfDetail
"
,
mixins
:
[
form
],
components
:
{},
created
()
{
this
.
changePath
(
"
perform/dept/conf
"
);
},
data
()
{
return
{
deptGroup
:
{
1
:
"
部门1
"
,
2
:
"
部门2
"
,
3
:
"
部门3
"
,
4
:
"
部门4
"
,
5
:
"
部门5
"
},
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
部门自动考核信息
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:
[],
toDate
:
[],
tableData
:
[
{
core
:
"
-0.5
"
,
name
:
"
迟到
"
,
simple
:
"
迟到5分钟以内(包含5分钟)
"
,
check
:
false
,
},
],
// 表单校验
rules
:
{},
activeName
:
"
1
"
,
options
:
[
{
value
:
"
1
"
,
label
:
"
工作纪律
"
,
},
{
value
:
"
2
"
,
label
:
"
工作效能
"
,
},
],
type
:
""
,
keywords
:
""
,
};
},
methods
:
{
handleChange
(
val
)
{
console
.
log
(
val
);
},
handleClick
()
{},
/** 编辑 */
edit
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/dept/conf/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改部门自动考核信息
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
();
this
.
urls
.
currUrl
=
"
perform/dept/conf/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增部门自动考核信息
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/dept/conf/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
部门自动考核信息详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
deptId
:
null
,
deptName
:
""
,
attendCount
:
null
,
assessCount
:
null
,
workCount
:
null
,
effectCount
:
null
,
otherCount
:
null
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.form_content {
/deep/.el-col-12 {
width: 98% !important;
}
.content {
width: 100%;
height: 500px;
border: 1px solid #e4e7ed;
border-top: 0;
padding: 20px;
.top {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
}
}
/deep/.el-tabs__header {
margin: 0 !important;
}
}
</
style
>
attendance-performance-manager-ui/admin/src/views/perform/staff/conf/drawershow.vue
View file @
b86f11f2
...
...
@@ -4,82 +4,450 @@
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
size=
"50%"
>
<el-form
ref=
"form"
class=
"form_content"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
label=
"人员ids,多个"
,"分割"
prop=
"staffIds"
v-model=
"form.staffIds"
type=
"textarea"
placeholder=
"请输入人员ids,多个"
,"分割"
/>
<Field
label=
"人员名称nams,多个"
,"逗号分割"
prop=
"staffNames"
v-model=
"form.staffNames"
type=
"textarea"
placeholder=
"请输入人员名称nams,多个"
,"逗号分割"
/>
<Field
label=
"考核人总数"
prop=
"staffCount"
v-model=
"form.staffCount"
placeholder=
"请输入考核人总数"
/>
<Field
label=
"考勤绩效指标数量"
prop=
"attendCount"
v-model=
"form.attendCount"
placeholder=
"请输入考勤绩效指标数量"
/>
<Field
label=
"评价绩效指标数量"
prop=
"assessCount"
v-model=
"form.assessCount"
placeholder=
"请输入评价绩效指标数量"
/>
<Field
label=
"办件绩效指标数量"
prop=
"workCount"
v-model=
"form.workCount"
placeholder=
"请输入办件绩效指标数量"
/>
<Field
label=
"效能绩效指标数量"
prop=
"effectCount"
v-model=
"form.effectCount"
placeholder=
"请输入效能绩效指标数量"
/>
<Field
label=
"其它绩效指标数量"
prop=
"otherCount"
v-model=
"form.otherCount"
placeholder=
"请输入其它绩效指标数量"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
<el-row
style=
"width: 100%;margin-bottom: 10px;"
>
<el-col
style=
"width: 100%;"
:span=
"24"
>
<span>
选择人员:
</span>
<el-button
type=
"primary"
@
click=
"() => (dialog = true)"
>
点击选择人员
</el-button
>
</el-col>
</el-row>
<el-row
style=
"width: 96%;margin: 0 auto;"
>
<el-tabs
v-model=
"activeName"
type=
"card"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"考勤绩效指标"
name=
"1"
>
<div
class=
"content"
>
<div
class=
"top"
>
<div>
请选择自动考核指标:
</div>
<div
class=
"search_box"
>
<el-select
v-model=
"type"
placeholder=
"请选择分类"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
style=
"width: 200px;"
>
</el-option>
</el-select>
<el-input
v-model=
"keywords"
placeholder=
"请输入评分标准关键字搜索"
style=
"width: 200px;margin: 0 10px;"
></el-input>
<el-button
type=
"primary"
>
搜索
</el-button>
</div>
</div>
<div
class=
"mid_table"
>
<el-table
:data=
"tableData"
border
style=
"width: 100%"
>
<el-table-column
type=
"index"
label=
"序号"
width=
"50"
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"考核内容简称"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"simple"
label=
"评分标准"
>
</el-table-column>
<el-table-column
prop=
"core"
label=
"扣分分值"
>
</el-table-column>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"120"
>
<template
slot-scope=
"scope"
>
<el-switch
v-model=
"scope.row.check"
@
change=
"handleChange(scope.row)"
>
</el-switch>
</
template
>
</el-table-column>
</el-table>
</div>
</div>
</el-tab-pane>
<el-tab-pane
label=
"评价绩效指标"
name=
"2"
>
<div
class=
"content"
>
<div
class=
"top"
>
<div>
请选择自动考核指标:
</div>
<div
class=
"search_box"
>
<el-select
v-model=
"type"
placeholder=
"请选择分类"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
style=
"width: 200px;"
>
</el-option>
</el-select>
<el-input
v-model=
"keywords"
placeholder=
"请输入评分标准关键字搜索"
style=
"width: 200px;margin: 0 10px;"
></el-input>
<el-button
type=
"primary"
>
搜索
</el-button>
</div>
</div>
<div
class=
"mid_table"
>
<el-table
:data=
"tableData"
border
style=
"width: 100%"
>
<el-table-column
type=
"index"
label=
"序号"
width=
"50"
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"考核内容简称"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"simple"
label=
"评分标准"
>
</el-table-column>
<el-table-column
prop=
"core"
label=
"扣分分值"
>
</el-table-column>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<el-switch
v-model=
"scope.row.check"
@
change=
"handleChange(scope.row)"
>
</el-switch>
</
template
>
</el-table-column>
</el-table>
</div>
</div>
</el-tab-pane>
<el-tab-pane
label=
"办件绩效指标"
name=
"3"
>
<div
class=
"content"
>
<div
class=
"top"
>
<div>
请选择自动考核指标:
</div>
<div
class=
"search_box"
>
<el-select
v-model=
"type"
placeholder=
"请选择分类"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
style=
"width: 200px;"
>
</el-option>
</el-select>
<el-input
v-model=
"keywords"
placeholder=
"请输入评分标准关键字搜索"
style=
"width: 200px;margin: 0 10px;"
></el-input>
<el-button
type=
"primary"
>
搜索
</el-button>
</div>
</div>
<div
class=
"mid_table"
>
<el-table
:data=
"tableData"
border
style=
"width: 100%"
>
<el-table-column
type=
"index"
label=
"序号"
width=
"50"
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"考核内容简称"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"simple"
label=
"评分标准"
>
</el-table-column>
<el-table-column
prop=
"core"
label=
"扣分分值"
>
</el-table-column>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<el-switch
v-model=
"scope.row.check"
@
change=
"handleChange(scope.row)"
>
</el-switch>
</
template
>
</el-table-column>
</el-table>
</div>
</div>
</el-tab-pane>
<el-tab-pane
label=
"效能绩效指标"
name=
"4"
>
<div
class=
"content"
>
<div
class=
"top"
>
<div>
请选择自动考核指标:
</div>
<div
class=
"search_box"
>
<el-select
v-model=
"type"
placeholder=
"请选择分类"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
style=
"width: 200px;"
>
</el-option>
</el-select>
<el-input
v-model=
"keywords"
placeholder=
"请输入评分标准关键字搜索"
style=
"width: 200px;margin: 0 10px;"
></el-input>
<el-button
type=
"primary"
>
搜索
</el-button>
</div>
</div>
<div
class=
"mid_table"
>
<el-table
:data=
"tableData"
border
style=
"width: 100%"
>
<el-table-column
type=
"index"
label=
"序号"
width=
"50"
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"考核内容简称"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"simple"
label=
"评分标准"
>
</el-table-column>
<el-table-column
prop=
"core"
label=
"扣分分值"
>
</el-table-column>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<el-switch
v-model=
"scope.row.check"
@
change=
"handleChange(scope.row)"
>
</el-switch>
</
template
>
</el-table-column>
</el-table>
</div>
</div>
</el-tab-pane>
</el-tabs>
</el-row>
</el-row>
<form-buttons
@
submit=
'submitForm'
noCancelBtn
/>
<form-buttons
@
submit=
"submitForm"
noCancelBtn
/>
</el-form>
<!-- <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="人员ids,多个"','"分割" prop="staffIds"
v-model="form.staffIds" type="textarea"
placeholder="请输入人员ids,多个"','"分割"/> <Field
label="人员名称nams,多个"','"逗号分割" prop="staffNames"
v-model="form.staffNames" type="textarea"
placeholder="请输入人员名称nams,多个"','"逗号分割"/>
<Field
label="考核人总数"
prop="staffCount"
v-model="form.staffCount"
placeholder="请输入考核人总数"
/>
<Field
label="考勤绩效指标数量"
prop="attendCount"
v-model="form.attendCount"
placeholder="请输入考勤绩效指标数量"
/>
<Field
label="评价绩效指标数量"
prop="assessCount"
v-model="form.assessCount"
placeholder="请输入评价绩效指标数量"
/>
<Field
label="办件绩效指标数量"
prop="workCount"
v-model="form.workCount"
placeholder="请输入办件绩效指标数量"
/>
<Field
label="效能绩效指标数量"
prop="effectCount"
v-model="form.effectCount"
placeholder="请输入效能绩效指标数量"
/>
<Field
label="其它绩效指标数量"
prop="otherCount"
v-model="form.otherCount"
placeholder="请输入其它绩效指标数量"
/>
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row>
<form-buttons @submit="submitForm" noCancelBtn />
</el-form> -->
<el-dialog
title=
"选择人员"
:visible.sync=
"dialog"
width=
"40%"
>
<div
class=
"dia_content"
>
<el-tree
:data=
"treeData"
:props=
"defaultProps"
@
node-click=
"handleNodeClick"
></el-tree>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"dialogVisible = false"
>
确 定
</el-button
>
</span>
</el-dialog>
</el-drawer>
</template>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
PerformStaffConfDetail
"
,
mixins
:
[
form
],
components
:
{
},
components
:
{},
created
()
{
this
.
changePath
(
"
perform/staff/conf
"
)
this
.
changePath
(
"
perform/staff/conf
"
);
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
dialog
:
false
,
// 弹出层标题
title
:
"
人员自动考核信息
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:[
],
toDate
:[
direction
:
"
rtl
"
,
toString
:
[],
toDate
:
[],
tableData
:
[
{
core
:
"
-0.5
"
,
name
:
"
迟到
"
,
simple
:
"
迟到5分钟以内(包含5分钟)
"
,
check
:
false
,
},
],
// 表单校验
rules
:
{
}
rules
:
{},
activeName
:
"
1
"
,
options
:
[
{
value
:
"
1
"
,
label
:
"
工作纪律
"
,
},
{
value
:
"
2
"
,
label
:
"
工作效能
"
,
},
],
type
:
""
,
keywords
:
""
,
data
:
[
{
label
:
"
一级 1
"
,
children
:
[
{
label
:
"
二级 1-1
"
,
children
:
[
{
label
:
"
三级 1-1-1
"
,
},
],
},
],
},
{
label
:
"
一级 2
"
,
children
:
[
{
label
:
"
二级 2-1
"
,
children
:
[
{
label
:
"
三级 2-1-1
"
,
},
],
},
{
label
:
"
二级 2-2
"
,
children
:
[
{
label
:
"
三级 2-2-1
"
,
},
],
},
],
},
{
label
:
"
一级 3
"
,
children
:
[
{
label
:
"
二级 3-1
"
,
children
:
[
{
label
:
"
三级 3-1-1
"
,
},
],
},
{
label
:
"
二级 3-2
"
,
children
:
[
{
label
:
"
三级 3-2-1
"
,
},
],
},
],
},
],
defaultProps
:
{
children
:
"
children
"
,
label
:
"
label
"
,
},
};
},
methods
:
{
handleChange
(
val
)
{
console
.
log
(
val
);
},
handleClick
()
{},
/** 编辑 */
edit
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/staff/conf/edit
"
;
this
.
urls
.
currUrl
=
"
perform/staff/conf/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改人员自动考核信息
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
urls
.
currUrl
=
"
perform/staff/conf/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增人员自动考核信息
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/staff/conf/view
"
;
this
.
urls
.
currUrl
=
"
perform/staff/conf/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
人员自动考核信息详细
"
;
},
/**取消按钮 */
...
...
@@ -99,15 +467,15 @@
// 表单重置
reset
()
{
this
.
form
=
{
staffIds
:
""
,
staffNames
:
""
,
staffCount
:
null
,
attendCount
:
null
,
assessCount
:
null
,
workCount
:
null
,
effectCount
:
null
,
otherCount
:
null
,
remark
:
""
,
staffIds
:
""
,
staffNames
:
""
,
staffCount
:
null
,
attendCount
:
null
,
assessCount
:
null
,
workCount
:
null
,
effectCount
:
null
,
otherCount
:
null
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
...
...
@@ -117,5 +485,27 @@
}
},
},
};
};
</
script
>
<
style
lang=
"less"
scoped
>
.form_content {
/deep/.el-col-12 {
width: 98% !important;
}
.content {
width: 100%;
height: 500px;
border: 1px solid #e4e7ed;
border-top: 0;
padding: 20px;
.top {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
}
}
/deep/.el-tabs__header {
margin: 0 !important;
}
}
</
style
>
attendance-performance-manager-ui/admin/src/views/perform/staff/conf/list(原绩效依据).vue
0 → 100644
View file @
b86f11f2
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
PerformStaffConfList
"
,
components
:
{
drawerShow
,
},
mixins
:
[
table
],
created
()
{},
methods
:
{
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
drawerform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
drawerform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
},
},
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
人员ids
"
,
prop
:
"
staffIds
"
},
{
label
:
"
人员名称n
"
,
prop
:
"
staffNames
"
},
{
label
:
"
考核人总数
"
,
prop
:
"
staffCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
考勤绩效指标数量
"
,
prop
:
"
attendCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
评价绩效指标数量
"
,
prop
:
"
assessCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
办件绩效指标数量
"
,
prop
:
"
workCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
效能绩效指标数量
"
,
prop
:
"
effectCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
其它绩效指标数量
"
,
prop
:
"
otherCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
(
row
)
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
},
},
],
},
};
},
};
</
script
>
attendance-performance-manager-ui/admin/src/views/perform/staff/conf/list.vue
View file @
b86f11f2
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<el-tabs
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"自动考核指标"
name=
"1"
>
<div
class=
"content"
>
<div
class=
"top"
>
<el-radio-group
v-model=
"type"
@
input=
"buttonChange"
>
<el-radio-button
label=
"1"
>
按部门
</el-radio-button>
<el-radio-button
label=
"2"
>
按个人
</el-radio-button>
</el-radio-group>
<el-button
type=
"primary"
style=
"margin: 0 20px;"
@
click=
"addGoal"
>
+
{{
type
==
1
?
"
新增考核部门
"
:
"
新增考核个人
"
}}
</el-button
>
</div>
<div
class=
"mid_content"
>
<div
class=
"goal_box"
v-for=
"(val, i) in dataList"
:key=
"i"
>
<div
class=
"goal_title"
>
<img
src=
"../../../../assets/images/u17641.svg"
alt=
""
/>
<span>
{{
val
.
deptName
?
val
.
deptName
:
"
--
"
}}
</span>
</div>
<p
class=
"goal_txt"
>
<span>
考核指标:
</span>
</p>
<p>
<el-tag
style=
"margin: 0 5px 5px 0"
>
考勤绩效指标/工作纪律:
{{
val
.
attendCount
}}
</el-tag
>
<el-tag
style=
"margin: 0 5px 5px 0"
>
评价绩效指标/工作纪律:
{{
val
.
assessCount
}}
</el-tag
>
<el-tag
style=
"margin: 0 5px 5px 0"
>
办件绩效指标/工作效能:
{{
val
.
workCount
}}
</el-tag
>
<el-tag
style=
"margin: 0 5px 5px 0"
>
效能绩效指标/工作纪律:
{{
val
.
effectCount
}}
</el-tag
>
</p>
<p
class=
"goal_txt"
>
<span>
最近更新:
</span><span>
{{
val
.
createTime
}}
</span>
</p>
<p
class=
"goal_txt"
>
<span>
更新人员:
</span><span>
{{
val
.
createUserId
}}
</span>
</p>
<div
class=
"button_box"
>
<el-button
type=
"primary"
style=
"width: 150px;"
plain
@
click=
"hanleEdit(val)"
>
编辑
</el-button
>
<el-button
type=
"danger"
style=
"width: 150px;"
plain
@
click=
"hanleDel(val)"
>
删除
</el-button
>
</div>
</div>
</div>
</div>
</el-tab-pane>
<el-tab-pane
label=
"窗口负责人管理"
name=
"2"
>
<div
class=
"content"
>
<LayoutTable
:data=
"tableData"
notSearch
:config=
"tableConfig"
>
</LayoutTable>
</div>
</el-tab-pane>
</el-tabs>
<!-- 人员考核 -->
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
<!-- 部门考核 -->
<deptdrawer-show
ref=
"deptdrawerform"
@
ok=
"getData"
/>
<!-- 窗口负责人管理 -->
<windowdrawer-show
ref=
"windowdrawerform"
@
ok=
"getData"
/>
</div>
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
deptdrawerShow
from
"
./deptdrawershow.vue
"
;
import
windowdrawerShow
from
"
./windowdrawershow.vue
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
PerformStaffConfList
"
,
components
:
{
drawerShow
,
deptdrawerShow
,
windowdrawerShow
,
},
mixins
:
[
table
],
created
()
{},
created
()
{
console
.
log
(
this
.
tableData
);
sessionStorage
.
removeItem
(
"
type
"
);
sessionStorage
.
setItem
(
"
type
"
,
this
.
type
);
},
methods
:
{
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
drawerform
.
add
(
row
);
this
.
$refs
.
window
drawerform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
drawerform
.
edit
(
row
);
this
.
$refs
.
window
drawerform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
this
.
$refs
.
windowdrawerform
.
view
(
row
);
},
hanleEdit
(
val
)
{
this
.
type
==
1
?
this
.
$refs
.
deptdrawerform
.
edit
(
val
)
:
this
.
$refs
.
drawerform
.
edit
(
val
);
},
hanleDel
(
val
)
{
this
.
$get
(
this
.
type
==
1
?
"
/perform/dept/conf/delete
"
:
"
/perform/staff/conf/delete
"
,
{
id
:
val
.
id
}
).
then
((
res
)
=>
{
this
.
$message
.
success
(
res
.
msg
);
this
.
getData
();
});
},
addGoal
()
{
this
.
type
==
1
?
this
.
$refs
.
deptdrawerform
.
add
()
:
this
.
$refs
.
drawerform
.
add
();
},
buttonChange
()
{
sessionStorage
.
setItem
(
"
type
"
,
this
.
type
);
this
.
getData
();
},
handleClick
()
{
this
.
getData
();
},
async
getData
()
{
await
this
.
$post
(
this
.
type
==
1
?
"
/perform/dept/conf/list
"
:
"
/perform/staff/conf/list
"
).
then
((
res
)
=>
{
console
.
log
(
res
);
if
(
res
.
code
==
1
)
{
this
.
dataList
=
res
.
data
.
data
;
}
});
this
.
activeName
==
2
?
await
this
.
$post
(
"
/window/owner/list
"
).
then
((
res
)
=>
{
console
.
log
(
res
);
if
(
res
.
code
==
1
)
{
this
.
tableData
=
res
.
data
;
}
})
:
""
;
},
},
data
()
{
return
{
dataList
:
[],
tableData
:
{},
activeName
:
"
1
"
,
type
:
"
1
"
,
config
:
{
isshowTabPane
:
tru
e
,
isshowTabPane
:
fals
e
,
search
:
[],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
人员ids
"
,
prop
:
"
staffIds
"
},
{
label
:
"
部门名称
"
,
prop
:
"
deptName
"
},
{
label
:
"
人员名称n
"
,
prop
:
"
staffNames
"
},
{
label
:
"
姓名
"
,
prop
:
"
name
"
},
{
label
:
"
考核人总数
"
,
prop
:
"
staffCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
工号
"
,
prop
:
"
number
"
},
{
label
:
"
考勤绩效指标数量
"
,
prop
:
"
attendCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
电话号码
"
,
prop
:
"
phone
"
},
{
label
:
"
评价绩效指标
数量
"
,
prop
:
"
assess
Count
"
,
label
:
"
负责窗口
数量
"
,
prop
:
"
window
Count
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
办件绩效指标数量
"
,
prop
:
"
workCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
效能绩效指标数量
"
,
prop
:
"
effectCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
其它绩效指标数量
"
,
prop
:
"
otherCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
,
label
:
"
创建时间
"
,
prop
:
"
createTime
"
,
formatter
:
this
.
formatterDate
,
},
{
label
:
"
操作
"
,
...
...
@@ -106,3 +211,120 @@ export default {
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.page {
width: 100%;
height: 100%;
overflow: hidden;
/deep/.el-tabs__item {
width: 120px;
font-size: 14px;
text-align: center;
}
.content {
width: 100%;
height: 100%;
.search_top {
width: 100%;
height: 1000%;
display: flex;
justify-content: space-between;
}
/deep/.el-radio-button {
width: 150px;
text-align: center;
border: 1px solid #eee;
}
/deep/.el-radio-button__inner {
width: 150px;
}
/deep/.el-radio-button__orig-radio:checked + .el-radio-button__inner {
width: 150px;
border: none;
background: #1890ff;
color: #fff;
border: 1px solid #eee;
}
.top {
width: 100%;
height: 60px;
}
.mid {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.mid_top {
width: 100%;
height: 300px;
display: flex;
justify-content: space-between;
.jixiaozongfen,
.jixiaopingjunfen {
width: 48%;
height: 100%;
}
}
.mid_down {
width: 100%;
height: 380px;
display: flex;
justify-content: space-evenly;
padding-top: 50px;
.box {
width: 25%;
height: 100%;
}
}
}
.mid_content,
.bar_content {
width: 100%;
height: 700px;
overflow: hidden;
}
.mid_content {
overflow-y: auto;
display: flex;
flex-wrap: wrap;
.goal_box {
width: 435px;
height: 270px;
background: inherit;
background-color: rgba(255, 255, 255, 1);
border: none;
border-radius: 8px;
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.117647058823529);
-moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.117647058823529);
-webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.117647058823529);
margin: 0 20px 20px 0;
padding: 20px;
.goal_title {
width: 100%;
display: flex;
align-items: center;
img {
margin-right: 10px;
}
}
.goal_txt {
font-family: "微软雅黑", sans-serif;
font-weight: 400;
font-style: normal;
font-size: 12px;
color: #666666;
width: 100%;
margin: 10px 0;
}
.button_box {
width: 100%;
display: flex;
justify-content: space-evenly;
align-items: center;
}
}
}
}
}
</
style
>
attendance-performance-manager-ui/admin/src/views/perform/staff/conf/windowdrawershow.vue
0 → 100644
View file @
b86f11f2
<
template
>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
label=
"部门id号"
prop=
"deptId"
v-model=
"form.deptId"
placeholder=
"请输入部门id号"
/>
<Field
label=
"部门名称"
prop=
"deptName"
v-model=
"form.deptName"
placeholder=
"请输入部门名称"
/>
<Field
label=
"姓名"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入姓名"
/>
<Field
label=
"工号"
prop=
"number"
v-model=
"form.number"
placeholder=
"请输入工号"
/>
<Field
label=
"电话号码"
prop=
"phone"
v-model=
"form.phone"
placeholder=
"请输入电话号码"
/>
<Field
label=
"负责窗口数量"
prop=
"windowCount"
v-model=
"form.windowCount"
placeholder=
"请输入负责窗口数量"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
<form-buttons
@
submit=
"submitForm"
noCancelBtn
/>
</el-form>
</el-drawer>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
WindowOwnerDetail
"
,
mixins
:
[
form
],
components
:
{},
created
()
{
this
.
changePath
(
"
window/owner
"
);
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
窗口负责人
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:
[],
toDate
:
[],
// 表单校验
rules
:
{},
};
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
window/owner/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改窗口负责人
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
();
this
.
urls
.
currUrl
=
"
window/owner/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增窗口负责人
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
window/owner/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
窗口负责人详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
deptId
:
0
,
deptName
:
""
,
name
:
""
,
number
:
""
,
phone
:
""
,
windowCount
:
null
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
\ No newline at end of file
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/dialogshow.vue
View file @
b86f11f2
<
template
>
<!-- 弹出框表单 -->
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"90%"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"1
2
0px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"1
8
0px"
>
<el-row>
<Field
label=
"负责人id号"
...
...
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/list.vue
View file @
b86f11f2
...
...
@@ -3,11 +3,27 @@
<el-tabs
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"目标看板"
name=
"1"
>
<div
class=
"content"
>
<div
class=
"top"
>
<div
class=
"top
search_top
"
>
<el-radio-group
v-model=
"type"
>
<el-radio-button
label=
"1"
>
按部门
</el-radio-button>
<el-radio-button
label=
"2"
>
按个人
</el-radio-button>
</el-radio-group>
<div
class=
"search_box"
>
<el-select
v-model=
"dateValue"
placeholder=
"请选择"
style=
"margin: 0 10px;"
>
<el-option
v-for=
"item in optionsMonths"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
<el-button
type=
"primary"
>
搜索
</el-button>
</div>
</div>
<div
class=
"mid"
>
<div
class=
"mid_top"
>
...
...
@@ -326,7 +342,7 @@ export default {
overflow: hidden;
/deep/.el-tabs__item {
width: 120px;
font-size: 1
8
px;
font-size: 1
4
px;
text-align: center;
}
.content {
...
...
attendance-performance-manager-ui/admin/src/views/window/owner/drawershow.vue
View file @
b86f11f2
...
...
@@ -4,35 +4,68 @@
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
size=
"50%"
>
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
label=
"部门id号"
prop=
"deptId"
v-model=
"form.deptId"
placeholder=
"请输入部门id号"
/>
<Field
label=
"部门名称"
prop=
"deptName"
v-model=
"form.deptName"
placeholder=
"请输入部门名称"
/>
<Field
label=
"姓名"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入姓名"
/>
<Field
label=
"工号"
prop=
"number"
v-model=
"form.number"
placeholder=
"请输入工号"
/>
<Field
label=
"电话号码"
prop=
"phone"
v-model=
"form.phone"
placeholder=
"请输入电话号码"
/>
<Field
label=
"负责窗口数量"
prop=
"windowCount"
v-model=
"form.windowCount"
placeholder=
"请输入负责窗口数量"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
<Field
label=
"部门id号"
prop=
"deptId"
v-model=
"form.deptId"
placeholder=
"请输入部门id号"
/>
<Field
label=
"部门名称"
prop=
"deptName"
v-model=
"form.deptName"
placeholder=
"请输入部门名称"
/>
<Field
label=
"姓名"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入姓名"
/>
<Field
label=
"工号"
prop=
"number"
v-model=
"form.number"
placeholder=
"请输入工号"
/>
<Field
label=
"电话号码"
prop=
"phone"
v-model=
"form.phone"
placeholder=
"请输入电话号码"
/>
<Field
label=
"负责窗口数量"
prop=
"windowCount"
v-model=
"form.windowCount"
placeholder=
"请输入负责窗口数量"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
<form-buttons
@
submit=
'submitForm'
noCancelBtn
/>
<form-buttons
@
submit=
"submitForm"
noCancelBtn
/>
</el-form>
</el-drawer>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
WindowOwnerDetail
"
,
mixins
:
[
form
],
components
:
{
},
components
:
{},
created
()
{
this
.
changePath
(
"
window/owner
"
)
this
.
changePath
(
"
window/owner
"
);
},
data
()
{
return
{
...
...
@@ -42,42 +75,39 @@
title
:
"
窗口负责人
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:[
],
toDate
:[
],
direction
:
"
rtl
"
,
toString
:
[],
toDate
:
[],
// 表单校验
rules
:
{
}
rules
:
{},
};
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
window/owner/edit
"
;
this
.
urls
.
currUrl
=
"
window/owner/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改窗口负责人
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
urls
.
currUrl
=
"
window/owner/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增窗口负责人
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
window/owner/view
"
;
this
.
urls
.
currUrl
=
"
window/owner/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
窗口负责人详细
"
;
},
/**取消按钮 */
...
...
@@ -97,13 +127,13 @@
// 表单重置
reset
()
{
this
.
form
=
{
deptId
:
0
,
deptName
:
""
,
name
:
""
,
number
:
""
,
phone
:
""
,
windowCount
:
null
,
remark
:
""
,
deptId
:
0
,
deptName
:
""
,
name
:
""
,
number
:
""
,
phone
:
""
,
windowCount
:
null
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
...
...
@@ -113,5 +143,5 @@
}
},
},
};
};
</
script
>
attendance-performance-manager-ui/admin/src/views/window/owner/list.vue
View file @
b86f11f2
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
WindowOwnerList
"
,
components
:
{
drawerShow
},
mixins
:
[
table
],
created
()
{
drawerShow
,
},
mixins
:
[
table
],
created
()
{},
methods
:
{
/** 重写新增方法 */
toAdd
(
row
)
{
...
...
@@ -33,41 +30,53 @@
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
},
},
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
],
isshowTabPane
:
true
,
search
:
[],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
部门名称
"
,
prop
:
"
deptName
"
},
{
label
:
"
部门名称
"
,
prop
:
"
deptName
"
},
{
label
:
"
姓名
"
,
prop
:
"
name
"
},
{
label
:
"
姓名
"
,
prop
:
"
name
"
},
{
label
:
"
工号
"
,
prop
:
"
number
"
},
{
label
:
"
工号
"
,
prop
:
"
number
"
},
{
label
:
"
电话号码
"
,
prop
:
"
phone
"
},
{
label
:
"
电话号码
"
,
prop
:
"
phone
"
},
{
label
:
"
负责窗口数量
"
,
prop
:
"
windowCount
"
,
formatter
:
this
.
formatter
},
{
label
:
"
负责窗口数量
"
,
prop
:
"
windowCount
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
创建时间
"
,
prop
:
"
createTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
创建时间
"
,
prop
:
"
createTime
"
,
formatter
:
this
.
formatterDate
,
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
formatter
:
(
row
)
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
}
]
}
};
}
},
},
],
},
};
},
};
</
script
>
attendance-performance-manager-ui/admin/yarn.lock
View file @
b86f11f2
...
...
@@ -22,7 +22,7 @@
"resolved" "https://registry.nlark.com/@babel/compat-data/download/@babel/compat-data-7.14.9.tgz?cache=0&sync_timestamp=1627804534988&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fcompat-data%2Fdownload%2F%40babel%2Fcompat-data-7.14.9.tgz"
"version" "7.14.9"
"@babel/core@
^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.
0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0", "@babel/core@^7.9.6":
"@babel/core@
*", "@babel/core@^7.0.0", "@babel/core@^7.0.0-
0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0", "@babel/core@^7.9.6":
"integrity" "sha1-IM33yEtdhtg/rIcQqLxgWnuj8BA="
"resolved" "https://registry.nlark.com/@babel/core/download/@babel/core-7.14.8.tgz"
"version" "7.14.8"
...
...
@@ -872,7 +872,15 @@
"@babel/types" "^7.4.4"
"esutils" "^2.0.2"
"@babel/runtime@^7.11.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
"@babel/runtime-corejs3@^7.11.2":
"integrity" "sha512-M+37LLIRBTEVjktoJjbw4KVhupF0U/3PYUCbBwgAd9k17hoKhRu1n935QiG7Tuxv0LJOMrb2vuKEeYUlv0iyiw=="
"resolved" "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.6.tgz"
"version" "7.22.6"
dependencies:
"core-js-pure" "^3.30.2"
"regenerator-runtime" "^0.13.11"
"@babel/runtime@^7.11.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
"integrity" "sha1-cRmlb0IQGIUmlCkLn5FICXORtEY="
"resolved" "https://registry.nlark.com/@babel/runtime/download/@babel/runtime-7.14.8.tgz"
"version" "7.14.8"
...
...
@@ -941,6 +949,104 @@
"minimatch" "^3.0.4"
"strip-json-comments" "^3.1.1"
"@form-create/component-elm-checkbox@^2.5.29":
"integrity" "sha512-jOFHQmJ6HQ3pqc/AzALbV0dtcZRdejkerQKfsJXz/EOkKnH3JJ1rgNps8lhoNo6+9R0ybX3FBN5e53iohs0a5w=="
"resolved" "https://registry.npmjs.org/@form-create/component-elm-checkbox/-/component-elm-checkbox-2.5.29.tgz"
"version" "2.5.29"
dependencies:
"@form-create/utils" "^2.5.27"
"@form-create/component-elm-frame@^2.5.27":
"integrity" "sha512-697RpnNm2dDbLiugT+0Q7yFhkhNPlYXskZkMnLzmwBftWi7Cb78v7EZIE/gmVIlAZ3NSqY0mWYM+0ryjQEKQnQ=="
"resolved" "https://registry.npmjs.org/@form-create/component-elm-frame/-/component-elm-frame-2.5.27.tgz"
"version" "2.5.27"
dependencies:
"@form-create/utils" "^2.5.27"
"@form-create/component-elm-group@^2.5.28":
"integrity" "sha512-6k9r4R9kPvTaJLmMlHrEfTYQmXVB4N3hDI3d5RqiEX9RdSyBcqdssKvW9O03susNWGbQFRJ5tBAMItURDZJAow=="
"resolved" "https://registry.npmjs.org/@form-create/component-elm-group/-/component-elm-group-2.5.28.tgz"
"version" "2.5.28"
dependencies:
"@form-create/utils" "^2.5.27"
"@form-create/component-elm-radio@^2.5.27":
"integrity" "sha512-fZWVW+JcL4I8gPrrR9Snt+sd/r6Ek9jGDJEqboqQ+HaYgXTptmvLLigefHqxUU3qize4iDfTJoJ16K0sS2+91g=="
"resolved" "https://registry.npmjs.org/@form-create/component-elm-radio/-/component-elm-radio-2.5.27.tgz"
"version" "2.5.27"
dependencies:
"@form-create/utils" "^2.5.27"
"@form-create/component-elm-select@^2.5.27":
"integrity" "sha512-xjI5dImAY51jHTZEBoMIk4+0GfF994IqW/cvj3GHP2zPf2NkKfI1OUVnn55DhlYZg04aMSGpvInETSLeCesE/g=="
"resolved" "https://registry.npmjs.org/@form-create/component-elm-select/-/component-elm-select-2.5.27.tgz"
"version" "2.5.27"
dependencies:
"@form-create/utils" "^2.5.27"
"@form-create/component-elm-tree@^2.5.27":
"integrity" "sha512-ATzz8hmzRI6XXcVpXywfuldJuCH5s3F+OJAUfSQaTP97+9QhBqyc6CDKotO5ZgAGNfKhLbZ0Ns+tFpFfrju9ZA=="
"resolved" "https://registry.npmjs.org/@form-create/component-elm-tree/-/component-elm-tree-2.5.27.tgz"
"version" "2.5.27"
dependencies:
"@form-create/utils" "^2.5.27"
"@form-create/component-elm-upload@^2.5.29":
"integrity" "sha512-/bP/HFeB009zKHYS9lwA8jST4Hy+UaykRXriqFv31Ly9BeISJVA66XyuNXmYADwc/q9krwVC4cuy5rKw/2vhsw=="
"resolved" "https://registry.npmjs.org/@form-create/component-elm-upload/-/component-elm-upload-2.5.29.tgz"
"version" "2.5.29"
dependencies:
"@form-create/utils" "^2.5.27"
"@form-create/component-subform@^2.5.25":
"integrity" "sha512-puGWWxSOeII4y4mCNxrKF/eH4nY1AQAx87VchzErLmemwF6TtNBLBsJLCCmFAVLYn1koYU5nNu5Y2yG9s2CKlQ=="
"resolved" "https://registry.npmjs.org/@form-create/component-subform/-/component-subform-2.5.25.tgz"
"version" "2.5.25"
"@form-create/component-wangeditor@^2.5.15":
"integrity" "sha512-U4MUcvaBNEcNbIBeODxYuMlLYR+lZ1zCaZvLP3I+3SOd0KQVjvfRozZku64ukIVxC8Stev/ZNWqpAVsdvFLGaA=="
"resolved" "https://registry.npmjs.org/@form-create/component-wangeditor/-/component-wangeditor-2.5.15.tgz"
"version" "2.5.15"
dependencies:
"wangeditor" "^4.6.0"
"@form-create/core@^2.5.29":
"integrity" "sha512-xXHyLc8jRmXfHRf7xcUrTDx7NeXPxcJU9r2QSwNRszp6bF1HmIHlXuDWr+pqkXp4r5d9nZ87KAi2z2J8MRkF9Q=="
"resolved" "https://registry.npmjs.org/@form-create/core/-/core-2.5.29.tgz"
"version" "2.5.29"
dependencies:
"@form-create/utils" "^2.5.27"
"@form-create/designer@^1.0.10":
"integrity" "sha512-Lr87K1mHQz5UXcLbZ6ieA/FgJBM1ugAw8MjsF5/WhU6a2Mna2YHQ2ZywL1u+fc0t4Ei+VFBhXUFBvOqUuiseGQ=="
"resolved" "https://registry.npmjs.org/@form-create/designer/-/designer-1.0.10.tgz"
"version" "1.0.10"
dependencies:
"@form-create/component-wangeditor" "^2.5.15"
"@form-create/element-ui" "^2.5.19"
"@form-create/utils" "^2.5.15"
"@form-create/element-ui@^2.5.19", "@form-create/element-ui@^2.5.30":
"integrity" "sha512-UBNTykx4JhznA0JcBtngk+QeWfz1yMQQHwQLHsB/Xp9bX3FnWebHyQG6Go0SSjvdx7bIMFx9fPurNHepyBYAPA=="
"resolved" "https://registry.npmjs.org/@form-create/element-ui/-/element-ui-2.5.30.tgz"
"version" "2.5.30"
dependencies:
"@form-create/component-elm-checkbox" "^2.5.29"
"@form-create/component-elm-frame" "^2.5.27"
"@form-create/component-elm-group" "^2.5.28"
"@form-create/component-elm-radio" "^2.5.27"
"@form-create/component-elm-select" "^2.5.27"
"@form-create/component-elm-tree" "^2.5.27"
"@form-create/component-elm-upload" "^2.5.29"
"@form-create/component-subform" "^2.5.25"
"@form-create/core" "^2.5.29"
"@form-create/utils" "^2.5.27"
"@form-create/utils@^2.5.15", "@form-create/utils@^2.5.27":
"integrity" "sha512-QLzenitKzakxQ8bK8yFYd/9n4eT4E9jKkEneU0yhbjr0ter5uqguGGNJP7gI8waysRAS49VSjQOAY0b4l7mWvg=="
"resolved" "https://registry.npmjs.org/@form-create/utils/-/utils-2.5.27.tgz"
"version" "2.5.27"
"@hapi/address@2.x.x":
"integrity" "sha1-XWftQ/P9QaadS5/3tW58DR0KgeU="
"resolved" "https://registry.nlark.com/@hapi/address/download/@hapi/address-2.1.4.tgz"
...
...
@@ -2977,12 +3083,17 @@
"browserslist" "^4.16.6"
"semver" "7.0.0"
"core-js-pure@^3.30.2":
"integrity" "sha512-w+C62kvWti0EPs4KPMCMVv9DriHSXfQOCQ94bGGBiEW5rrbtt/Rz8n5Krhfw9cpFyzXBjf3DB3QnPdEzGDY4Fw=="
"resolved" "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.31.1.tgz"
"version" "3.31.1"
"core-js@^2.4.0":
"integrity" "sha1-2TM9+nsGXjR8xWgiGdb2kIWcwuw="
"resolved" "https://registry.nlark.com/core-js/download/core-js-2.6.12.tgz"
"version" "2.6.12"
"core-js@^3
.6.5
":
"core-js@^3":
"version" "3.16.0"
"core-js@3.8.1":
...
...
@@ -7802,10 +7913,10 @@
"resolved" "https://registry.nlark.com/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz"
"version" "0.11.1"
"regenerator-runtime@^0.13.4":
"integrity" "sha
1-iSV0Kpj/2QgUmI11Zq0wyjsmO1I
="
"resolved" "https://registry.n
lark.com/regenerator-runtime/download/regenerator-runtime-0.13.9
.tgz"
"version" "0.13.
9
"
"regenerator-runtime@^0.13.
11", "regenerator-runtime@^0.13.
4":
"integrity" "sha
512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=
="
"resolved" "https://registry.n
pmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11
.tgz"
"version" "0.13.
11
"
"regenerator-transform@^0.14.2":
"integrity" "sha1-yY2hVGg2ccnE3LFuznNlF+G3/rQ="
...
...
@@ -9139,6 +9250,11 @@
"resolved" "https://registry.nlark.com/tslib/download/tslib-1.14.1.tgz?cache=0&sync_timestamp=1623451518217&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftslib%2Fdownload%2Ftslib-1.14.1.tgz"
"version" "1.14.1"
"tslib@^2.1.0":
"integrity" "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
"resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz"
"version" "2.6.0"
"tty-browserify@0.0.0":
"integrity" "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY="
"resolved" "https://registry.nlark.com/tty-browserify/download/tty-browserify-0.0.0.tgz"
...
...
@@ -9566,6 +9682,15 @@
"resolved" "https://registry.nlark.com/vuex/download/vuex-3.6.0.tgz"
"version" "3.6.0"
"wangeditor@^4.6.0":
"integrity" "sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg=="
"resolved" "https://registry.npmjs.org/wangeditor/-/wangeditor-4.7.15.tgz"
"version" "4.7.15"
dependencies:
"@babel/runtime" "^7.11.2"
"@babel/runtime-corejs3" "^7.11.2"
"tslib" "^2.1.0"
"watch-size@^2.0.0":
"integrity" "sha1-CW7ijQNlvX6gPZyL8fL1CnO+FHQ="
"resolved" "https://registry.nlark.com/watch-size/download/watch-size-2.0.0.tgz"
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/service/CheckGoworkRecordService.java
View file @
b86f11f2
...
...
@@ -13,4 +13,6 @@ import com.mortals.xhx.module.check.dao.CheckGoworkRecordDao;
public
interface
CheckGoworkRecordService
extends
ICRUDService
<
CheckGoworkRecordEntity
,
Long
>{
CheckGoworkRecordDao
getDao
();
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendRecordServiceImpl.java
View file @
b86f11f2
package
com.mortals.xhx.module.perform.service.impl
;
import
com.mortals.xhx.common.utils.BeanUtil
;
import
com.mortals.xhx.module.check.model.CheckAttendRecordEntity
;
import
com.mortals.xhx.module.check.service.CheckAttendRecordService
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.framework.exception.AppException
;
...
...
@@ -18,4 +23,20 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public
class
PerformAttendRecordServiceImpl
extends
AbstractCRUDServiceImpl
<
PerformAttendRecordDao
,
PerformAttendRecordEntity
,
Long
>
implements
PerformAttendRecordService
{
@Autowired
private
CheckAttendRecordService
checkAttendRecordService
;
@Override
protected
void
saveAfter
(
PerformAttendRecordEntity
entity
,
Context
context
)
throws
AppException
{
CheckAttendRecordEntity
checkAttendRecordEntity
=
new
CheckAttendRecordEntity
();
checkAttendRecordEntity
.
initAttrValue
();
BeanUtils
.
copyProperties
(
entity
,
checkAttendRecordEntity
,
BeanUtil
.
getNullPropertyNames
(
entity
));
checkAttendRecordEntity
.
setRecordId
(
entity
.
getId
());
if
(
entity
.
getSubMethod
()==
1
){
checkAttendRecordEntity
.
setCheckStatus
(
2
);
//自动扣分相设置为已处理
}
else
{
checkAttendRecordEntity
.
setCheckStatus
(
1
);
//非自动扣分相设置为未处理
}
checkAttendRecordService
.
save
(
checkAttendRecordEntity
,
context
);
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformComplainRecordServiceImpl.java
View file @
b86f11f2
package
com.mortals.xhx.module.perform.service.impl
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.xhx.common.utils.BeanUtil
;
import
com.mortals.xhx.module.check.model.CheckComplainRecordEntity
;
import
com.mortals.xhx.module.check.service.CheckComplainRecordService
;
import
com.mortals.xhx.module.perform.dao.PerformComplainRecordDao
;
import
com.mortals.xhx.module.perform.model.PerformComplainRecordEntity
;
import
com.mortals.xhx.module.perform.service.PerformComplainRecordService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
/**
* PerformComplainRecordService
* 评价绩效投诉记录信息 service实现
...
...
@@ -18,4 +24,20 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public
class
PerformComplainRecordServiceImpl
extends
AbstractCRUDServiceImpl
<
PerformComplainRecordDao
,
PerformComplainRecordEntity
,
Long
>
implements
PerformComplainRecordService
{
@Autowired
private
CheckComplainRecordService
checkComplainRecordService
;
@Override
protected
void
saveAfter
(
PerformComplainRecordEntity
entity
,
Context
context
)
throws
AppException
{
CheckComplainRecordEntity
checkComplainRecordEntity
=
new
CheckComplainRecordEntity
();
checkComplainRecordEntity
.
initAttrValue
();
BeanUtils
.
copyProperties
(
entity
,
checkComplainRecordEntity
,
BeanUtil
.
getNullPropertyNames
(
entity
));
checkComplainRecordEntity
.
setRecordId
(
entity
.
getId
());
if
(
entity
.
getSubMethod
()==
1
){
checkComplainRecordEntity
.
setCheckStatus
(
2
);
//自动扣分相设置为已处理
}
else
{
checkComplainRecordEntity
.
setCheckStatus
(
1
);
//非自动扣分相设置为未处理
}
checkComplainRecordService
.
save
(
checkComplainRecordEntity
,
context
);
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformEffectRecordServiceImpl.java
View file @
b86f11f2
package
com.mortals.xhx.module.perform.service.impl
;
import
com.mortals.xhx.common.utils.BeanUtil
;
import
com.mortals.xhx.module.check.model.CheckEffectRecordEntity
;
import
com.mortals.xhx.module.check.service.CheckEffectRecordService
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.framework.exception.AppException
;
...
...
@@ -18,4 +23,20 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public
class
PerformEffectRecordServiceImpl
extends
AbstractCRUDServiceImpl
<
PerformEffectRecordDao
,
PerformEffectRecordEntity
,
Long
>
implements
PerformEffectRecordService
{
@Autowired
private
CheckEffectRecordService
checkEffectRecordService
;
@Override
protected
void
saveAfter
(
PerformEffectRecordEntity
entity
,
Context
context
)
throws
AppException
{
CheckEffectRecordEntity
checkEffectRecordEntity
=
new
CheckEffectRecordEntity
();
checkEffectRecordEntity
.
initAttrValue
();
BeanUtils
.
copyProperties
(
entity
,
checkEffectRecordEntity
,
BeanUtil
.
getNullPropertyNames
(
entity
));
checkEffectRecordEntity
.
setRecordId
(
entity
.
getId
());
if
(
entity
.
getSubMethod
()==
1
){
checkEffectRecordEntity
.
setCheckStatus
(
2
);
//自动扣分相设置为已处理
}
else
{
checkEffectRecordEntity
.
setCheckStatus
(
1
);
//非自动扣分相设置为未处理
}
checkEffectRecordService
.
save
(
checkEffectRecordEntity
,
context
);
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformGoworkRecordServiceImpl.java
View file @
b86f11f2
package
com.mortals.xhx.module.perform.service.impl
;
import
com.mortals.xhx.common.utils.BeanUtil
;
import
com.mortals.xhx.module.check.model.CheckGoworkRecordEntity
;
import
com.mortals.xhx.module.check.service.CheckGoworkRecordService
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.framework.exception.AppException
;
...
...
@@ -18,4 +23,20 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public
class
PerformGoworkRecordServiceImpl
extends
AbstractCRUDServiceImpl
<
PerformGoworkRecordDao
,
PerformGoworkRecordEntity
,
Long
>
implements
PerformGoworkRecordService
{
@Autowired
private
CheckGoworkRecordService
checkGoworkRecordService
;
@Override
protected
void
saveAfter
(
PerformGoworkRecordEntity
entity
,
Context
context
)
throws
AppException
{
CheckGoworkRecordEntity
checkGoworkRecordEntity
=
new
CheckGoworkRecordEntity
();
checkGoworkRecordEntity
.
initAttrValue
();
BeanUtils
.
copyProperties
(
entity
,
checkGoworkRecordEntity
,
BeanUtil
.
getNullPropertyNames
(
entity
));
checkGoworkRecordEntity
.
setRecordId
(
entity
.
getId
());
if
(
entity
.
getSubMethod
()==
1
){
checkGoworkRecordEntity
.
setCheckStatus
(
2
);
//自动扣分相设置为已处理
}
else
{
checkGoworkRecordEntity
.
setCheckStatus
(
1
);
//非自动扣分相设置为未处理
}
checkGoworkRecordService
.
save
(
checkGoworkRecordEntity
,
context
);
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformOtherRecordServiceImpl.java
View file @
b86f11f2
package
com.mortals.xhx.module.perform.service.impl
;
import
com.mortals.xhx.common.utils.BeanUtil
;
import
com.mortals.xhx.module.check.model.CheckOtherRecordEntity
;
import
com.mortals.xhx.module.check.service.CheckOtherRecordService
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.framework.exception.AppException
;
...
...
@@ -18,4 +23,20 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public
class
PerformOtherRecordServiceImpl
extends
AbstractCRUDServiceImpl
<
PerformOtherRecordDao
,
PerformOtherRecordEntity
,
Long
>
implements
PerformOtherRecordService
{
@Autowired
private
CheckOtherRecordService
checkOtherRecordService
;
@Override
protected
void
saveAfter
(
PerformOtherRecordEntity
entity
,
Context
context
)
throws
AppException
{
CheckOtherRecordEntity
checkOtherRecordEntity
=
new
CheckOtherRecordEntity
();
checkOtherRecordEntity
.
initAttrValue
();
BeanUtils
.
copyProperties
(
entity
,
checkOtherRecordEntity
,
BeanUtil
.
getNullPropertyNames
(
entity
));
checkOtherRecordEntity
.
setRecordId
(
entity
.
getId
());
if
(
entity
.
getSubMethod
()==
1
){
checkOtherRecordEntity
.
setCheckStatus
(
2
);
//自动扣分相设置为已处理
}
else
{
checkOtherRecordEntity
.
setCheckStatus
(
1
);
//非自动扣分相设置为未处理
}
checkOtherRecordService
.
save
(
checkOtherRecordEntity
,
context
);
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformReviewRecordServiceImpl.java
View file @
b86f11f2
package
com.mortals.xhx.module.perform.service.impl
;
import
com.mortals.xhx.common.utils.BeanUtil
;
import
com.mortals.xhx.module.check.model.CheckReviewRecordEntity
;
import
com.mortals.xhx.module.check.service.CheckReviewRecordService
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.framework.exception.AppException
;
...
...
@@ -18,4 +23,19 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public
class
PerformReviewRecordServiceImpl
extends
AbstractCRUDServiceImpl
<
PerformReviewRecordDao
,
PerformReviewRecordEntity
,
Long
>
implements
PerformReviewRecordService
{
@Autowired
private
CheckReviewRecordService
checkReviewRecordService
;
@Override
protected
void
saveAfter
(
PerformReviewRecordEntity
entity
,
Context
context
)
throws
AppException
{
CheckReviewRecordEntity
checkReviewRecordEntity
=
new
CheckReviewRecordEntity
();
BeanUtils
.
copyProperties
(
entity
,
checkReviewRecordEntity
,
BeanUtil
.
getNullPropertyNames
(
entity
));
checkReviewRecordEntity
.
setRecordId
(
entity
.
getId
());
if
(
entity
.
getSubMethod
()==
1
){
checkReviewRecordEntity
.
setCheckStatus
(
2
);
//自动扣分相设置为已处理
}
else
{
checkReviewRecordEntity
.
setCheckStatus
(
1
);
//非自动扣分相设置为未处理
}
checkReviewRecordService
.
save
(
checkReviewRecordEntity
,
context
);
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment