leadal-auth 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/leadal-auth/leadal-auth.common.js +1 -1
  2. package/leadal-auth/leadal-auth.umd.js +1 -1
  3. package/leadal-auth/leadal-auth.umd.min.js +1 -1
  4. package/package.json +31 -8
  5. package/babel.config.js +0 -5
  6. package/jsconfig.json +0 -19
  7. package/public/favicon.ico +0 -0
  8. package/public/index.html +0 -17
  9. package/public/models/age_gender_model-shard1 +0 -0
  10. package/public/models/age_gender_model-weights_manifest.json +0 -1
  11. package/public/models/face_expression_model-shard1 +0 -0
  12. package/public/models/face_expression_model-weights_manifest.json +0 -1
  13. package/public/models/face_landmark_68_model-shard1 +0 -0
  14. package/public/models/face_landmark_68_model-weights_manifest.json +0 -1
  15. package/public/models/face_landmark_68_tiny_model-shard1 +0 -0
  16. package/public/models/face_landmark_68_tiny_model-weights_manifest.json +0 -1
  17. package/public/models/face_recognition_model-shard1 +0 -0
  18. package/public/models/face_recognition_model-shard2 +0 -6
  19. package/public/models/face_recognition_model-weights_manifest.json +0 -1
  20. package/public/models/mtcnn_model-shard1 +0 -0
  21. package/public/models/mtcnn_model-weights_manifest.json +0 -1
  22. package/public/models/ssd_mobilenetv1_model-shard1 +0 -0
  23. package/public/models/ssd_mobilenetv1_model-shard2 +8 -137
  24. package/public/models/ssd_mobilenetv1_model-weights_manifest.json +0 -1
  25. package/public/models/tiny_face_detector_model-shard1 +0 -0
  26. package/public/models/tiny_face_detector_model-weights_manifest.json +0 -1
  27. package/src/App.vue +0 -19
  28. package/src/api/card.js +0 -58
  29. package/src/api/face.js +0 -37
  30. package/src/api/finger.js +0 -64
  31. package/src/api/index.js +0 -100
  32. package/src/assets/BIN.png +0 -0
  33. package/src/assets/CLOSE.svg +0 -11
  34. package/src/assets/blue-left.png +0 -0
  35. package/src/assets/blue-right.png +0 -0
  36. package/src/assets/finger-ready.png +0 -0
  37. package/src/assets/finger-select.png +0 -0
  38. package/src/assets/finger-status-1-last.png +0 -0
  39. package/src/assets/finger-status-1.gif +0 -0
  40. package/src/assets/finger-status-2-last.png +0 -0
  41. package/src/assets/finger-status-2.gif +0 -0
  42. package/src/assets/finger-status-3-last.png +0 -0
  43. package/src/assets/finger-status-3.gif +0 -0
  44. package/src/assets/finger-status-compeleted.png +0 -0
  45. package/src/assets/finger-status-start.png +0 -0
  46. package/src/assets/icon-camera.png +0 -0
  47. package/src/assets/icon-picture.png +0 -0
  48. package/src/assets/icon-success.png +0 -0
  49. package/src/assets/img-camera.png +0 -0
  50. package/src/assets/img-card.png +0 -0
  51. package/src/assets/img-loading.png +0 -0
  52. package/src/assets/left.png +0 -0
  53. package/src/assets/logo.png +0 -0
  54. package/src/assets/right.png +0 -0
  55. package/src/assets/ukey1.png +0 -0
  56. package/src/assets/ukey2.png +0 -0
  57. package/src/assets//346/214/207/347/272/271/350/257/206/345/210/2531.png +0 -0
  58. package/src/assets//346/214/207/347/272/271/350/257/206/345/210/2532.png +0 -0
  59. package/src/components/auth-com.vue +0 -100
  60. package/src/components/card-register/components/CardTable.vue +0 -94
  61. package/src/components/card-register/components/RegisterDialog.vue +0 -137
  62. package/src/components/card-register/index.vue +0 -110
  63. package/src/components/edit-user-dialog.vue +0 -141
  64. package/src/components/empty.vue +0 -13
  65. package/src/components/face-register/components/ChooseCameraOrPicture.vue +0 -59
  66. package/src/components/face-register/components/FaceDetected.vue +0 -543
  67. package/src/components/face-register/components/FaceInfo.vue +0 -171
  68. package/src/components/face-register/components/FacePicture.vue +0 -85
  69. package/src/components/face-register/components/UploadPicture.vue +0 -336
  70. package/src/components/face-register/index.vue +0 -242
  71. package/src/components/finger-register/index.vue +0 -707
  72. package/src/components/organ-tree.vue +0 -211
  73. package/src/components/tree-select.vue +0 -131
  74. package/src/components/user-drawer.vue +0 -147
  75. package/src/components/user-info.vue +0 -272
  76. package/src/components/user-table.vue +0 -405
  77. package/src/main.js +0 -25
  78. package/src/package/auth-manage/index.vue +0 -468
  79. package/src/package/index.js +0 -22
  80. package/src/store/index.js +0 -39
  81. package/src/styles/common.scss +0 -183
  82. package/src/styles/index.scss +0 -38
  83. package/src/utils/dict.js +0 -47
  84. package/src/utils/event-bus.js +0 -6
  85. package/src/utils/request-auth.js +0 -64
  86. package/src/utils/request.js +0 -64
  87. package/src/utils/websocket.js +0 -282
  88. package/vue.config.js +0 -43
@@ -1,211 +0,0 @@
1
- <template>
2
- <div class="organ-tree">
3
- <div class="organ-tree-header f_between">
4
- <h3>机构列表</h3>
5
- <i
6
- class="el-icon-circle-plus-outline"
7
- style="font-size: 20px; cursor: pointer"
8
- @click="h_showOrgConfig(null)"
9
- ></i>
10
- </div>
11
- <div class="organ-tree-content">
12
- <el-scrollbar style="height: 100%; padding: 14px; box-sizing: border-box">
13
- <el-tree
14
- ref="tree"
15
- node-key="id"
16
- :highlight-current="true"
17
- :expand-on-click-node="false"
18
- :props="props"
19
- :load="f_loadNode"
20
- lazy
21
- @node-click="h_nodeClick"
22
- >
23
- <span class="custom-tree-node" slot-scope="{ data }">
24
- <span class="node-text" :title="data.caption">{{
25
- data.caption
26
- }}</span>
27
- <span class="action-buttons" style="width: 40px">
28
- <i
29
- class="el-icon-edit"
30
- style="font-size: 16px"
31
- @click="h_showOrgConfig(data)"
32
- ></i>
33
- <i
34
- class="el-icon-delete"
35
- @click="h_delOrg(data)"
36
- style="margin-left: 10px; font-size: 16px"
37
- ></i>
38
- </span>
39
- </span>
40
- </el-tree>
41
- </el-scrollbar>
42
- </div>
43
- <edit-user-dialog
44
- v-if="visible"
45
- @closed="visible = false"
46
- :edit="edit"
47
- @refresh="refreshTree"
48
- />
49
- </div>
50
- </template>
51
-
52
- <script>
53
- import { apiOrganTree, apiDelOrg } from "@/api";
54
- import EditUserDialog from "@/components/edit-user-dialog.vue";
55
-
56
- export default {
57
- name: "organ-tree",
58
- components: {
59
- EditUserDialog,
60
- },
61
- data() {
62
- return {
63
- props: {
64
- label: "caption",
65
- // isLeaf: (data) => {
66
- // return data.hasChild === false
67
- // }
68
- },
69
- form: {
70
- sequence: 1,
71
- },
72
- rules: {
73
- name: [
74
- {
75
- required: true,
76
- message: "机构名称不能为空",
77
- },
78
- ],
79
- },
80
- edit: null,
81
- visible: false,
82
- };
83
- },
84
- methods: {
85
- async refreshTree(type, parentId, data) {
86
- if (type === "current") {
87
- this.$refs.tree.updateKeyChildren(parentId, data);
88
- } else {
89
- this.$refs.tree.store.setData(data || []);
90
- }
91
- },
92
- async f_loadNode(node, resolve) {
93
- if (node.level === 0) {
94
- const res = await apiOrganTree();
95
- resolve(res.data || []);
96
- } else {
97
- const res = await apiOrganTree({ parentId: node.data.id });
98
- res.data.forEach((item) => {
99
- item.parentId = node.data.id;
100
- item.parentName = node.data.caption;
101
- });
102
- resolve(res.data || []);
103
- }
104
- },
105
- h_showOrgConfig(val) {
106
- this.edit = val;
107
- this.visible = true;
108
- },
109
- h_delOrg(val) {
110
- this.$confirm("确认删除该项?", "提示", "warning")
111
- .then(async (res) => {
112
- if (res) {
113
- await apiDelOrg({ ids: val.id });
114
- this.$refs.tree.remove(val);
115
- this.$message.success(`删除成功!`);
116
- }
117
- })
118
- .catch((err) => {
119
- console.error("用户状态 err", err);
120
- });
121
- },
122
- h_nodeClick(val) {
123
- this.$emit("load-user-data", val);
124
- },
125
- },
126
- };
127
- </script>
128
-
129
- <style scoped lang="scss">
130
- .organ-tree {
131
- width: 100%;
132
- height: 100%;
133
- border: 1px solid #cedded;
134
-
135
- .organ-tree-header {
136
- width: 100%;
137
- height: 50px;
138
- padding: 0 10px;
139
- background: #f9fbfd;
140
- box-sizing: border-box;
141
-
142
- h3 {
143
- font-size: 16px;
144
- color: #525252;
145
- margin: 0;
146
- padding: 0;
147
- }
148
-
149
- span {
150
- color: #4e91ea;
151
- cursor: pointer;
152
- }
153
- }
154
-
155
- ::v-deep .custom-tree-node {
156
- width: calc(100% - 34px);
157
- display: flex;
158
- align-items: center;
159
- justify-content: space-between;
160
-
161
- .node-text {
162
- max-width: calc(100% - 60px);
163
- display: inline-block;
164
- overflow: hidden;
165
- white-space: nowrap;
166
- text-overflow: ellipsis;
167
- }
168
-
169
- .action-buttons {
170
- opacity: 0;
171
- visibility: hidden;
172
- transition: opacity 0.2s ease, visibility 0.2s ease;
173
-
174
- i {
175
- margin-left: 4px;
176
- cursor: pointer;
177
- color: #606266;
178
-
179
- &:hover {
180
- color: #409eff;
181
- }
182
- }
183
- }
184
-
185
- &:hover .action-buttons {
186
- opacity: 1;
187
- visibility: visible;
188
- }
189
- }
190
-
191
- ::v-deep .el-dialog__header {
192
- padding: 10px;
193
-
194
- .el-dialog__headerbtn {
195
- top: 14px;
196
- }
197
- }
198
-
199
- .organ-tree-content {
200
- width: 100%;
201
- height: calc(100% - 50px);
202
- }
203
- }
204
-
205
- ::v-deep .el-tree-node__content {
206
- display: flex;
207
- align-items: center;
208
- cursor: pointer;
209
- padding: 5px 8px;
210
- }
211
- </style>
@@ -1,131 +0,0 @@
1
- <template>
2
- <div class="tree-select" @click.stop>
3
- <!-- 输入框部分 -->
4
- <el-input
5
- v-model="selectedLabel"
6
- :placeholder="placeholder"
7
- @click.native="toggleTree"
8
- >
9
- </el-input>
10
- <!-- 树形下拉区域 -->
11
- <div v-show="showTree" class="tree-container">
12
- <el-scrollbar style="max-height: 300px;">
13
- <el-tree
14
- ref="tree"
15
- :lazy="true"
16
- :load="load"
17
- :props="defaultProps"
18
- @node-click="handleNodeClick"
19
- node-key="id"
20
- ></el-tree>
21
- </el-scrollbar>
22
- </div>
23
- </div>
24
- </template>
25
-
26
- <script>
27
- export default {
28
- name: "tree-select",
29
- props: {
30
- value: [String, Number, Array], // 选中的值(单选)
31
- placeholder: { type: String, default: '请选择' },
32
- defaultLabel: {
33
- type: String,
34
- default: ''
35
- },
36
- load: {
37
- type: Function,
38
- default: () => { }
39
- },
40
- defaultProps: {
41
- type: Object,
42
- default: () => ({ })
43
- }
44
- },
45
- data() {
46
- return {
47
- showTree: false,
48
- selectedLabel: ''
49
- };
50
- },
51
- watch: {
52
- value: {
53
- handler(val) {
54
- // 根据 value 回显 label
55
- if (val) {
56
- this.updateLabel(val)
57
- } else {
58
- this.selectedLabel = '根目录'
59
- }
60
- },
61
- immediate: true
62
- }
63
- },
64
- mounted() {
65
- // 监听点击其他空白区域事件
66
- document.addEventListener('click', this.handleOutsideClick);
67
- },
68
- beforeDestroy() {
69
- // 移除点击其他空白区域事件监听
70
- document.removeEventListener('click', this.handleOutsideClick);
71
- },
72
- methods: {
73
- toggleTree() {
74
- this.showTree = !this.showTree;
75
- console.log('this.showTree', this.showTree)
76
- },
77
- handleNodeClick(node) {
78
- // 手动勾选当前节点
79
- this.$nextTick(() => {
80
- this.$refs.tree.setChecked(node, true, false);
81
- this.handleSingleSelect(node);
82
- this.showTree = false
83
- });
84
- },
85
- handleSingleSelect(node) {
86
- // 取消所有其他节点的勾选状态
87
- const allNodes = this.$refs.tree.getCheckedNodes(false, true);
88
- allNodes.forEach(n => {
89
- if (n.id!== node.id) {
90
- this.$refs.tree.setChecked(n, false, false);
91
- }
92
- });
93
- this.$emit('input', node.id);
94
- this.$emit('setNode', node)
95
- this.selectedLabel = node[this.defaultProps.label];
96
- },
97
- updateLabel() {
98
- this.selectedLabel = this.defaultLabel || '根目录'
99
- },
100
- handleOutsideClick() {
101
- // 点击其他空白区域隐藏树形菜单
102
- this.showTree = false;
103
- }
104
- }
105
- };
106
- </script>
107
-
108
- <style scoped lang="scss">
109
- .tree-select {
110
- position: relative;
111
- }
112
-
113
- .tree-container {
114
- position: absolute;
115
- width: 100%;
116
- border: 1px solid #e4e7ed;
117
- z-index: 999;
118
- background: white;
119
- top: 34px;
120
- max-height: 300px;
121
- }
122
-
123
- .el-icon-arrow-down.is-reverse {
124
- transform: rotate(180deg);
125
- }
126
-
127
- ::v-deep .el-scrollbar__wrap {
128
- max-height: 300px;
129
- }
130
-
131
- </style>
@@ -1,147 +0,0 @@
1
- <template>
2
- <el-drawer
3
- size="100%"
4
- :visible="visible"
5
- :with-header="false"
6
- @closed="closed"
7
- >
8
- <div class="user-drawer">
9
- <div class="user-drawer-header f_between">
10
- <div class="icon-back" @click="h_back">
11
- <i class="el-icon-arrow-left" style="font-weight: 600"></i>
12
- <span>返回</span>
13
- </div>
14
- <el-button type="primary" @click="f_save" :loading="loading"
15
- >保存</el-button
16
- >
17
- </div>
18
- <div class="user-drawer-content f_center">
19
- <div class="user-auth">
20
- <auth-com v-if="drawerInfo.userId" ref="auth-com" :auth-collect="authCollect" :drawerInfo="drawerInfo">
21
- <template #face>
22
- <slot name="face"> </slot>
23
- </template>
24
- <template #finger>
25
- <slot name="finger"> </slot>
26
- </template>
27
- <template #idCard>
28
- <slot name="idCard"> </slot>
29
- </template>
30
- </auth-com>
31
- <empty-view v-else />
32
- </div>
33
- <div class="user-info">
34
- <user-info ref="user-info" :drawer-info="drawerInfo" />
35
- </div>
36
- </div>
37
- </div>
38
- </el-drawer>
39
- </template>
40
-
41
- <script>
42
- import { apiUserSave } from "@/api";
43
-
44
- import UserInfo from "@/components/user-info.vue";
45
- import AuthCom from "@/components/auth-com.vue";
46
- import EmptyView from "@/components/empty.vue";
47
-
48
- export default {
49
- name: "user-drawer",
50
- components: {
51
- UserInfo,
52
- AuthCom,
53
- EmptyView,
54
- },
55
- props: {
56
- authCollect: {
57
- required: false,
58
- type: Array,
59
- default: () => ["face", "finger", "idCard"],
60
- },
61
- drawerInfo: {
62
- type: Object,
63
- },
64
- },
65
- data() {
66
-
67
- return {
68
- visible: false,
69
- loading: false,
70
- };
71
- },
72
- mounted() {
73
- this.visible = true;
74
- },
75
- methods: {
76
- closed() {
77
- this.$emit("closed");
78
- },
79
- h_back() {
80
- this.visible = false;
81
- },
82
- async f_save() {
83
- try {
84
- this.loading = true;
85
- const data = this.$refs["user-info"].h_getFormData();
86
- await apiUserSave({ ...data, organId: this.drawerInfo.organ.id });
87
- this.$emit("refresh");
88
- this.visible = false;
89
- } finally {
90
- this.loading = false;
91
- }
92
- },
93
- },
94
- };
95
- </script>
96
-
97
- <style lang="scss" scoped>
98
- .user-drawer {
99
- width: calc(100% - 4px);
100
- height: calc(100% - 4px);
101
- padding: 0 2px;
102
-
103
- .user-drawer-header {
104
- height: 50px;
105
- padding: 0 0 0 12px;
106
- border-bottom: 1px solid #ecebeb;
107
-
108
- // span {
109
- // cursor: pointer;
110
- // color: #3391ff;
111
- // }
112
- }
113
- .user-drawer-content {
114
- width: 100%;
115
- height: calc(100% - 50px);
116
-
117
- .user-auth {
118
- width: calc(100% - 460px);
119
- height: 100%;
120
- }
121
-
122
- .user-info {
123
- width: 460px;
124
- height: 100%;
125
- border-left: 1px solid #ecebeb;
126
- }
127
- }
128
- }
129
-
130
- .icon-back {
131
- cursor: pointer;
132
- display: flex;
133
- color: #5a5a5a;
134
- font-weight: 500;
135
- font-size: 16px;
136
- width: 53px;
137
- height: 44px;
138
- align-items: center;
139
- justify-content: space-between;
140
-
141
- span {
142
- color: #5a5a5a;
143
- font-weight: 500;
144
- font-size: 16px;
145
- }
146
- }
147
- </style>