Commit 876011a8f8013a5ae07706a0939bcb36dda626ea

Authored by 周超
1 parent 45b767f1

给志哥

package.json
... ... @@ -15,9 +15,8 @@
15 15 },
16 16 "dependencies": {
17 17 "axios": "0.18.1",
18   -
19 18 "element-plus": "^1.2.0-beta.5",
20   - "element-ui": "2.13.2",
  19 + "element-ui": "^2.15.7",
21 20 "js-cookie": "2.2.0",
22 21 "normalize.css": "7.0.0",
23 22 "nprogress": "0.2.0",
... ...
src/api/user.js
... ... @@ -103,6 +103,31 @@ export function AddInvitationAnswerMultiple(data) {
103 103 data
104 104 })
105 105 }
  106 +//公司面试邀请
  107 +export function AddInvitationCompanyMultiple(data) {
  108 + return request({
  109 + url: `/InvitationCompany/AddInvitationCompanyMultiple`,
  110 + method: 'post',
  111 + data
  112 + })
  113 +}
  114 +
  115 +//公司面试时间表
  116 +export function GetCompanyInvitation(data) {
  117 + return request({
  118 + url: `/InvitationCompany/GetCompanyInvitation`,
  119 + method: 'post',
  120 + data
  121 + })
  122 +}
  123 +//删除面试邀请
  124 +export function InvitationCompanyDelete(ids) {
  125 + return request({
  126 + url: '/InvitationCompany/Delete' ,
  127 + method: 'post',
  128 + params:ids
  129 + });
  130 +}
106 131  
107 132 export function UserInfoResumeIdentification(data) {
108 133 return request({
... ... @@ -141,4 +166,15 @@ export function UserInfo_List(params) {
141 166 method: 'get',
142 167 params
143 168 })
  169 +
  170 +
  171 +
  172 +}
  173 +//设置标签
  174 + export function ChangeTags(params) {
  175 + return request({
  176 + url: `/Users/ChangeTags`,
  177 + method: 'post',
  178 + params
  179 + })
144 180 }
145 181 \ No newline at end of file
... ...
src/utils/routerList.js
... ... @@ -12,503 +12,513 @@ export function getRoutes() {
12 12 let constantRoutes1 = []
13 13 if (userInfo.UserId == 1) {
14 14 constantRoutes1 = [{
15   - path: '/login',
  15 + path: '/login',
  16 + component: () =>
  17 + import('@/views/login/index'),
  18 + hidden: true
  19 + },
  20 +
  21 + {
  22 + path: '/404',
  23 + component: () =>
  24 + import('@/views/404'),
  25 + hidden: true
  26 + },
  27 +
  28 + {
  29 + path: '/answerDetail',
  30 + name: '答题详情',
  31 + component: () =>
  32 + import('@/views/AnswerResult/detail.vue'),
  33 + hidden: true
  34 + },
  35 +
  36 +
  37 + {
  38 + path: '/',
  39 + component: Layout,
  40 + redirect: '/dashboard',
  41 + children: [{
  42 + path: 'dashboard',
  43 + name: '首页',
  44 + component: () =>
  45 + import('@/views/dashboard/index'),
  46 + meta: {
  47 + title: '首页',
  48 + icon: 'dashboard'
  49 + }
  50 + }, {
  51 + path: 'live',
  52 + name: '直播观看',
16 53 component: () =>
17   - import ('@/views/login/index'),
  54 + import('@/views/live/index'),
  55 + meta: {
  56 + title: '直播',
  57 + icon: 'video'
  58 + },
18 59 hidden: true
  60 + }]
  61 + },
  62 +
  63 + {
  64 + path: '/example',
  65 + component: Layout,
  66 + redirect: '/example/table',
  67 + name: 'Example',
  68 + meta: {
  69 + title: '题库管理',
  70 + icon: 'el-icon-s-help'
19 71 },
  72 + children: [{
  73 + path: 'QuestionBank',
  74 + name: 'Table',
  75 + component: () =>
  76 + import('@/views/QuestionBank/index'),
  77 + meta: {
  78 + title: '题库',
  79 + icon: 'table'
  80 + }
  81 + },]
  82 + },
  83 + // {
  84 + // path: '/moduleIndex',
  85 + // component: Layout,
  86 + // redirect: '/module/index',
  87 + // name: 'module',
  88 + // meta: {
  89 + // title: '面试题',
  90 + // icon: 'el-icon-s-help'
  91 + // },
  92 + // children: [{
  93 + // path: 'index',
  94 + // name: 'index',
  95 + // component: () =>
  96 + // import ('@/views/TestPaper/index'),
  97 + // hidden: true,
  98 + // meta: {
  99 + // title: '试卷维护',
  100 + // icon: 'table'
  101 + // }
  102 + // }, ]
  103 + // },
  104 + // {
  105 + // path: '/realQuestion',
  106 + // component: Layout,
  107 + // redirect: '/module/realQuestion',
  108 + // name: 'realQuestion',
  109 + // meta: {
  110 + // title: '历年真题',
  111 + // icon: 'el-icon-s-help'
  112 + // },
  113 + // children: [{
  114 + // path: 'recharge',
  115 + // name: 'recharge',
  116 + // component: () =>
  117 + // import ('@/views/module/realQuestion'),
  118 + // meta: {
  119 + // title: '历年真题',
  120 + // icon: 'el-icon-s-management'
  121 + // }
  122 + // }]
  123 + // },
20 124  
21   - {
22   - path: '/404',
  125 + {
  126 + path: '/views',
  127 + component: Layout,
  128 + redirect: '/views/TestPaper',
  129 + name: 'TestPaper',
  130 + meta: {
  131 + title: '试卷管理',
  132 + icon: 'el-icon-s-help'
  133 + },
  134 + children: [{
  135 + path: 'TestPaperList',
  136 + name: 'Table',
23 137 component: () =>
24   - import ('@/views/404'),
25   - hidden: true
  138 + import('@/views/TestPaper/TestPaperList'),
  139 + meta: {
  140 + title: '试卷列表',
  141 + icon: 'table'
  142 + }
26 143 },
27   -
28 144 {
29   - path: '/answerDetail',
30   - name: '答题详情',
  145 + path: 'index',
  146 + name: 'index',
31 147 component: () =>
32   - import ('@/views/AnswerResult/detail.vue'),
33   - hidden: true
  148 + import('@/views/TestPaper/index'),
  149 + hidden: true,
  150 + meta: {
  151 + title: '试卷维护',
  152 + icon: 'table'
  153 + }
34 154 },
35   -
36   -
37 155 {
38   - path: '/',
39   - component: Layout,
40   - redirect: '/dashboard',
41   - children: [{
42   - path: 'dashboard',
43   - name: '首页',
44   - component: () =>
45   - import ('@/views/dashboard/index'),
46   - meta: {
47   - title: '首页',
48   - icon: 'dashboard'
49   - }
50   - }, {
51   - path: 'live',
52   - name: '直播观看',
53   - component: () =>
54   - import ('@/views/live/index'),
55   - meta: {
56   - title: '直播',
57   - icon: 'video'
58   - },
59   - hidden: true
60   - }]
  156 + path: 'ManualTestPaper',
  157 + name: 'Table',
  158 + component: () =>
  159 + import('@/views/TestPaper/ManualTestPaper'),
  160 + meta: {
  161 + title: '组卷',
  162 + icon: 'table'
  163 + }
61 164 },
62 165  
63   - {
64   - path: '/example',
65   - component: Layout,
66   - redirect: '/example/table',
67   - name: 'Example',
  166 + ]
  167 + },
  168 + {
  169 + path: '/order',
  170 + component: Layout,
  171 + redirect: '/',
  172 + name: 'order',
  173 + meta: {
  174 + title: '订单管理',
  175 + icon: 'el-icon-s-marketing'
  176 + },
  177 + children: [{
  178 + path: 'recharge',
  179 + name: 'recharge',
  180 + component: () =>
  181 + import('@/views/order/rechargeList'),
68 182 meta: {
69   - title: '题库管理',
70   - icon: 'el-icon-s-help'
71   - },
72   - children: [{
73   - path: 'QuestionBank',
74   - name: 'Table',
75   - component: () =>
76   - import ('@/views/QuestionBank/index'),
77   - meta: {
78   - title: '题库',
79   - icon: 'table'
80   - }
81   - }, ]
  183 + title: '充值记录',
  184 + }
  185 + }, {
  186 + path: 'shop',
  187 + name: 'shop',
  188 + component: () =>
  189 + import('@/views/order/shopList'),
  190 + meta: {
  191 + title: '购买记录',
  192 + }
  193 + }]
  194 + },
  195 + {
  196 + path: '/user',
  197 + component: Layout,
  198 + redirect: '/',
  199 + name: 'user',
  200 + meta: {
  201 + title: '用户管理',
  202 + icon: 'el-icon-s-help'
82 203 },
83   - // {
84   - // path: '/moduleIndex',
85   - // component: Layout,
86   - // redirect: '/module/index',
87   - // name: 'module',
88   - // meta: {
89   - // title: '面试题',
90   - // icon: 'el-icon-s-help'
91   - // },
92   - // children: [{
93   - // path: 'index',
94   - // name: 'index',
95   - // component: () =>
96   - // import ('@/views/TestPaper/index'),
97   - // hidden: true,
98   - // meta: {
99   - // title: '试卷维护',
100   - // icon: 'table'
101   - // }
102   - // }, ]
103   - // },
104   - // {
105   - // path: '/realQuestion',
106   - // component: Layout,
107   - // redirect: '/module/realQuestion',
108   - // name: 'realQuestion',
109   - // meta: {
110   - // title: '历年真题',
111   - // icon: 'el-icon-s-help'
112   - // },
113   - // children: [{
114   - // path: 'recharge',
115   - // name: 'recharge',
116   - // component: () =>
117   - // import ('@/views/module/realQuestion'),
118   - // meta: {
119   - // title: '历年真题',
120   - // icon: 'el-icon-s-management'
121   - // }
122   - // }]
123   - // },
124   -
125   - {
126   - path: '/views',
127   - component: Layout,
128   - redirect: '/views/TestPaper',
129   - name: 'TestPaper',
  204 + children: [{
  205 + path: 'user',
  206 + name: 'User',
  207 + component: () =>
  208 + import('@/views/user/userlist'),
130 209 meta: {
131   - title: '试卷管理',
132   - icon: 'el-icon-s-help'
133   - },
134   - children: [{
135   - path: 'TestPaperList',
136   - name: 'Table',
137   - component: () =>
138   - import ('@/views/TestPaper/TestPaperList'),
139   - meta: {
140   - title: '试卷列表',
141   - icon: 'table'
142   - }
143   - },
144   - {
145   - path: 'index',
146   - name: 'index',
147   - component: () =>
148   - import ('@/views/TestPaper/index'),
149   - hidden: true,
150   - meta: {
151   - title: '试卷维护',
152   - icon: 'table'
153   - }
154   - },
155   - {
156   - path: 'ManualTestPaper',
157   - name: 'Table',
158   - component: () =>
159   - import ('@/views/TestPaper/ManualTestPaper'),
160   - meta: {
161   - title: '组卷',
162   - icon: 'table'
163   - }
164   - },
165   -
166   - ]
  210 + title: '人才库',
  211 + }
167 212 },
168 213 {
169   - path: '/order',
170   - component: Layout,
171   - redirect: '/',
172   - name: 'order',
  214 + path: 'interviewSchedule',
  215 + name: 'interviewSchedule',
  216 + component: () =>
  217 + import('@/views/user/InterviewSchedule'),
173 218 meta: {
174   - title: '订单管理',
175   - icon: 'el-icon-s-marketing'
176   - },
177   - children: [{
178   - path: 'recharge',
179   - name: 'recharge',
180   - component: () =>
181   - import ('@/views/order/rechargeList'),
182   - meta: {
183   - title: '充值记录',
184   - }
185   - }, {
186   - path: 'shop',
187   - name: 'shop',
188   - component: () =>
189   - import ('@/views/order/shopList'),
190   - meta: {
191   - title: '购买记录',
192   - }
193   - }]
  219 + title: '面试时间表',
  220 + }
194 221 },
  222 +
195 223 {
196   - path: '/user',
197   - component: Layout,
198   - redirect: '/',
199   - name: 'user',
200   - meta: {
201   - title: '用户管理',
202   - icon: 'el-icon-s-help'
203   - },
204   - children: [{
205   - path: 'user',
206   - name: 'User',
207   - component: () =>
208   - import ('@/views/user/userlist'),
209   - meta: {
210   - title: '人才库',
211   - }
212   - },
213   - {
214   - path: 'importuser',
215   - name: 'importuser',
  224 + path: 'importuser',
  225 + name: 'importuser',
216 226  
217   - component: () =>
218   - import ('@/views/user/picuserimport'),
219   - meta: {
220   - title: '图片导入用户',
221   - }
222   - },
223   - {
224   - path: 'admin',
225   - name: 'admin',
  227 + component: () =>
  228 + import('@/views/user/picuserimport'),
  229 + meta: {
  230 + title: '图片导入用户',
  231 + }
  232 + },
  233 + {
  234 + path: 'admin',
  235 + name: 'admin',
226 236  
227   - component: () =>
228   - import ('@/views/user/adminList'),
229   - meta: {
230   - title: '管理员列表',
231   - }
232   - },
  237 + component: () =>
  238 + import('@/views/user/adminList'),
  239 + meta: {
  240 + title: '管理员列表',
  241 + }
  242 + },
233 243  
234   - ]
  244 + ]
  245 + }, {
  246 + path: '/password',
  247 + component: Layout,
  248 + redirect: '/',
  249 + name: 'password',
  250 + meta: {
  251 + title: '系统管理',
  252 + icon: 'el-icon-s-platform'
  253 + },
  254 + children: [{
  255 + path: 'index',
  256 + name: 'index',
  257 + component: () =>
  258 + import('@/views/password/index'),
  259 + meta: {
  260 + title: '忘记密码',
  261 + }
235 262 }, {
236   - path: '/password',
237   - component: Layout,
238   - redirect: '/',
239   - name: 'password',
  263 + path: 'TestPaperClass',
  264 + name: 'Table',
  265 + component: () =>
  266 + import('@/views/TestPaper/TestPaperClass'),
240 267 meta: {
241   - title: '系统管理',
242   - icon: 'el-icon-s-platform'
243   - },
244   - children: [{
245   - path: 'index',
246   - name: 'index',
247   - component: () =>
248   - import ('@/views/password/index'),
249   - meta: {
250   - title: '忘记密码',
251   - }
252   - }, {
253   - path: 'TestPaperClass',
254   - name: 'Table',
255   - component: () =>
256   - import ('@/views/TestPaper/TestPaperClass'),
257   - meta: {
258   - title: '分类管理',
259   - }
260   - }, {
261   - path: 'carousel',
262   - name: 'carousel',
263   - component: () =>
264   - import ('@/views/carousel/index'),
265   - meta: {
266   - title: '轮播图',
267   - }
268   - }, {
269   - path: 'new',
270   - name: 'new',
271   - component: () =>
272   - import ('@/views/carousel/new'),
273   - meta: {
274   - title: '最新资讯',
275   - }
276   - }]
277   - },
278   - // 404 page must be placed at the end !!!
279   - {
280   - path: '*',
281   - redirect: '/404',
282   - hidden: true
283   - }
  268 + title: '分类管理',
  269 + }
  270 + }, {
  271 + path: 'carousel',
  272 + name: 'carousel',
  273 + component: () =>
  274 + import('@/views/carousel/index'),
  275 + meta: {
  276 + title: '轮播图',
  277 + }
  278 + }, {
  279 + path: 'new',
  280 + name: 'new',
  281 + component: () =>
  282 + import('@/views/carousel/new'),
  283 + meta: {
  284 + title: '最新资讯',
  285 + }
  286 + }]
  287 + },
  288 + // 404 page must be placed at the end !!!
  289 + {
  290 + path: '*',
  291 + redirect: '/404',
  292 + hidden: true
  293 + }
284 294 ]
285 295 } else {
286 296 constantRoutes1 = [{
287   - path: '/login',
288   - component: () =>
289   - import ('@/views/login/index'),
290   - hidden: true
291   - },
  297 + path: '/login',
  298 + component: () =>
  299 + import('@/views/login/index'),
  300 + hidden: true
  301 + },
292 302  
293   - {
294   - path: '/404',
  303 + {
  304 + path: '/404',
  305 + component: () =>
  306 + import('@/views/404'),
  307 + hidden: true
  308 + },
  309 +
  310 + {
  311 + path: '/example',
  312 + component: Layout,
  313 + redirect: '/example/table',
  314 + name: 'Example',
  315 + meta: {
  316 + title: '题库管理',
  317 + icon: 'el-icon-s-help'
  318 + },
  319 + children: [{
  320 + path: 'QuestionBank',
  321 + name: 'Table',
295 322 component: () =>
296   - import ('@/views/404'),
297   - hidden: true
  323 + import('@/views/QuestionBank/index'),
  324 + meta: {
  325 + title: '题库',
  326 + icon: 'table'
  327 + }
  328 + },]
  329 + },
  330 + {
  331 + path: '/moduleIndex',
  332 + component: Layout,
  333 + redirect: '/module/index',
  334 + name: 'module',
  335 + meta: {
  336 + title: '面试题',
  337 + icon: 'el-icon-s-help'
298 338 },
299   -
300   - {
301   - path: '/example',
302   - component: Layout,
303   - redirect: '/example/table',
304   - name: 'Example',
  339 + children: [{
  340 + path: 'recharge',
  341 + name: 'recharge',
  342 + component: () =>
  343 + import('@/views/module/index'),
305 344 meta: {
306   - title: '题库管理',
307   - icon: 'el-icon-s-help'
308   - },
309   - children: [{
310   - path: 'QuestionBank',
311   - name: 'Table',
312   - component: () =>
313   - import ('@/views/QuestionBank/index'),
314   - meta: {
315   - title: '题库',
316   - icon: 'table'
317   - }
318   - }, ]
  345 + title: '面试题',
  346 + icon: 'el-icon-s-operation'
  347 + }
319 348 },
320 349 {
321   - path: '/moduleIndex',
322   - component: Layout,
323   - redirect: '/module/index',
324   - name: 'module',
  350 + path: 'index',
  351 + name: 'index',
  352 + component: () =>
  353 + import('@/views/TestPaper/index'),
  354 + hidden: true,
325 355 meta: {
326   - title: '面试题',
327   - icon: 'el-icon-s-help'
328   - },
329   - children: [{
330   - path: 'recharge',
331   - name: 'recharge',
332   - component: () =>
333   - import ('@/views/module/index'),
334   - meta: {
335   - title: '面试题',
336   - icon: 'el-icon-s-operation'
337   - }
338   - },
339   - {
340   - path: 'index',
341   - name: 'index',
342   - component: () =>
343   - import ('@/views/TestPaper/index'),
344   - hidden: true,
345   - meta: {
346   - title: '试卷维护',
347   - icon: 'table'
348   - }
349   - },
350   - ]
  356 + title: '试卷维护',
  357 + icon: 'table'
  358 + }
351 359 },
352   - // {
353   - // path: '/realQuestion',
354   - // component: Layout,
355   - // redirect: '/module/realQuestion',
356   - // name: 'realQuestion',
357   - // meta: {
358   - // title: '历年真题',
359   - // icon: 'el-icon-s-help'
360   - // },
361   - // children: [{
362   - // path: 'recharge',
363   - // name: 'recharge',
364   - // component: () =>
365   - // import ('@/views/module/realQuestion'),
366   - // meta: {
367   - // title: '历年真题',
368   - // icon: 'el-icon-s-management'
369   - // }
370   - // }]
371   - // },
  360 + ]
  361 + },
  362 + // {
  363 + // path: '/realQuestion',
  364 + // component: Layout,
  365 + // redirect: '/module/realQuestion',
  366 + // name: 'realQuestion',
  367 + // meta: {
  368 + // title: '历年真题',
  369 + // icon: 'el-icon-s-help'
  370 + // },
  371 + // children: [{
  372 + // path: 'recharge',
  373 + // name: 'recharge',
  374 + // component: () =>
  375 + // import ('@/views/module/realQuestion'),
  376 + // meta: {
  377 + // title: '历年真题',
  378 + // icon: 'el-icon-s-management'
  379 + // }
  380 + // }]
  381 + // },
372 382  
  383 + {
  384 + path: '/views',
  385 + component: Layout,
  386 + redirect: '/views/TestPaper',
  387 + name: 'TestPaper',
  388 + meta: {
  389 + title: '试卷管理',
  390 + icon: 'el-icon-s-help'
  391 + },
  392 + children: [{
  393 + path: 'TestPaperList',
  394 + name: 'Table',
  395 + component: () =>
  396 + import('@/views/TestPaper/TestPaperList'),
  397 + meta: {
  398 + title: '试卷列表',
  399 + icon: 'table'
  400 + }
  401 + },
373 402 {
374   - path: '/views',
375   - component: Layout,
376   - redirect: '/views/TestPaper',
377   - name: 'TestPaper',
  403 + path: 'index',
  404 + name: 'index',
  405 + component: () =>
  406 + import('@/views/TestPaper/index'),
  407 + hidden: true,
378 408 meta: {
379   - title: '试卷管理',
380   - icon: 'el-icon-s-help'
381   - },
382   - children: [{
383   - path: 'TestPaperList',
384   - name: 'Table',
385   - component: () =>
386   - import ('@/views/TestPaper/TestPaperList'),
387   - meta: {
388   - title: '试卷列表',
389   - icon: 'table'
390   - }
391   - },
392   - {
393   - path: 'index',
394   - name: 'index',
395   - component: () =>
396   - import ('@/views/TestPaper/index'),
397   - hidden: true,
398   - meta: {
399   - title: '试卷维护',
400   - icon: 'table'
401   - }
402   - },
403   - // {
404   - // path: 'ManualTestPaper',
405   - // name: 'Table',
406   - // component: () => import('@/views/TestPaper/ManualTestPaper'),
407   - // meta: {
408   - // title: '组卷',
409   - // icon: 'table'
410   - // }
411   - // },
  409 + title: '试卷维护',
  410 + icon: 'table'
  411 + }
  412 + },
  413 + // {
  414 + // path: 'ManualTestPaper',
  415 + // name: 'Table',
  416 + // component: () => import('@/views/TestPaper/ManualTestPaper'),
  417 + // meta: {
  418 + // title: '组卷',
  419 + // icon: 'table'
  420 + // }
  421 + // },
412 422  
413   - ]
  423 + ]
  424 + },
  425 + {
  426 + path: '/order',
  427 + component: Layout,
  428 + redirect: '/',
  429 + name: 'order',
  430 + meta: {
  431 + title: '订单管理',
  432 + icon: 'el-icon-s-marketing'
414 433 },
415   - {
416   - path: '/order',
417   - component: Layout,
418   - redirect: '/',
419   - name: 'order',
  434 + children: [{
  435 + path: 'recharge',
  436 + name: 'recharge',
  437 + component: () =>
  438 + import('@/views/order/rechargeList'),
420 439 meta: {
421   - title: '订单管理',
422   - icon: 'el-icon-s-marketing'
423   - },
424   - children: [{
425   - path: 'recharge',
426   - name: 'recharge',
427   - component: () =>
428   - import ('@/views/order/rechargeList'),
429   - meta: {
430   - title: '充值记录',
431   - }
432   - }, {
433   - path: 'shop',
434   - name: 'shop',
435   - component: () =>
436   - import ('@/views/order/shopList'),
437   - meta: {
438   - title: '购买记录',
439   - }
440   - }]
  440 + title: '充值记录',
  441 + }
  442 + }, {
  443 + path: 'shop',
  444 + name: 'shop',
  445 + component: () =>
  446 + import('@/views/order/shopList'),
  447 + meta: {
  448 + title: '购买记录',
  449 + }
  450 + }]
  451 + },
  452 + {
  453 + path: '/user',
  454 + component: Layout,
  455 + redirect: '/',
  456 + name: 'user',
  457 + meta: {
  458 + title: '用户管理',
  459 + icon: 'el-icon-s-help'
441 460 },
442   - {
443   - path: '/user',
444   - component: Layout,
445   - redirect: '/',
446   - name: 'user',
  461 + children: [{
  462 + path: 'user',
  463 + name: 'User',
  464 + component: () =>
  465 + import('@/views/user/userlist'),
447 466 meta: {
448   - title: '用户管理',
449   - icon: 'el-icon-s-help'
450   - },
451   - children: [{
452   - path: 'user',
453   - name: 'User',
454   - component: () =>
455   - import ('@/views/user/userlist'),
456   - meta: {
457   - title: '人才库',
458   - }
459   - },
  467 + title: '人才库',
  468 + }
  469 + },
460 470  
461 471  
462   - ]
  472 + ]
  473 + }, {
  474 + path: '/password',
  475 + component: Layout,
  476 + redirect: '/',
  477 + name: 'password',
  478 + meta: {
  479 + title: '系统管理',
  480 + icon: 'el-icon-s-platform'
  481 + },
  482 + children: [{
  483 + path: 'index',
  484 + name: 'index',
  485 + component: () =>
  486 + import('@/views/password/index'),
  487 + meta: {
  488 + title: '忘记密码',
  489 + }
463 490 }, {
464   - path: '/password',
465   - component: Layout,
466   - redirect: '/',
467   - name: 'password',
  491 + path: 'TestPaperClass',
  492 + name: 'Table',
  493 + component: () =>
  494 + import('@/views/TestPaper/TestPaperClass'),
468 495 meta: {
469   - title: '系统管理',
470   - icon: 'el-icon-s-platform'
471   - },
472   - children: [{
473   - path: 'index',
474   - name: 'index',
475   - component: () =>
476   - import ('@/views/password/index'),
477   - meta: {
478   - title: '忘记密码',
479   - }
480   - }, {
481   - path: 'TestPaperClass',
482   - name: 'Table',
483   - component: () =>
484   - import ('@/views/TestPaper/TestPaperClass'),
485   - meta: {
486   - title: '分类管理',
487   - }
488   - }, {
489   - path: 'carousel',
490   - name: 'carousel',
491   - component: () =>
492   - import ('@/views/carousel/index'),
493   - meta: {
494   - title: '轮播图',
495   - }
496   - }, {
497   - path: 'new',
498   - name: 'new',
499   - component: () =>
500   - import ('@/views/carousel/new'),
501   - meta: {
502   - title: '最新资讯',
503   - }
504   - }]
505   - },
506   - // 404 page must be placed at the end !!!
507   - {
508   - path: '*',
509   - redirect: '/404',
510   - hidden: true
511   - }
  496 + title: '分类管理',
  497 + }
  498 + }, {
  499 + path: 'carousel',
  500 + name: 'carousel',
  501 + component: () =>
  502 + import('@/views/carousel/index'),
  503 + meta: {
  504 + title: '轮播图',
  505 + }
  506 + }, {
  507 + path: 'new',
  508 + name: 'new',
  509 + component: () =>
  510 + import('@/views/carousel/new'),
  511 + meta: {
  512 + title: '最新资讯',
  513 + }
  514 + }]
  515 + },
  516 + // 404 page must be placed at the end !!!
  517 + {
  518 + path: '*',
  519 + redirect: '/404',
  520 + hidden: true
  521 + }
512 522 ]
513 523 }
514 524  
... ...
src/views/user/InterviewSchedule.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 + <div class="seetingsDiv" style="">
  4 +
  5 + <div class="flex" style="width: 100%">
  6 + <el-form :inline="true" class="demo-form-inline">
  7 + <el-form-item label="姓名">
  8 + <el-input placeholder="输入关键字搜索" v-model="query.KeyWord"></el-input>
  9 + </el-form-item>
  10 + <el-descriptions-item>
  11 + <template slot="label">
  12 + <i class="el-icon-tickets"></i>
  13 + 标签
  14 + </template>
  15 + <el-tag size="small">推荐</el-tag>
  16 + </el-descriptions-item>
  17 +
  18 +
  19 + <el-form-item label="联系方式">
  20 + <el-input placeholder="输入联系方式" v-model="query.phone"></el-input>
  21 + </el-form-item>
  22 + <el-form-item label="时间">
  23 + <el-date-picker v-model="query.date" type="daterange" value-format="yyyy-MM-dd" range-separator="至"
  24 + start-placeholder="开始日期" end-placeholder="结束日期">
  25 + </el-date-picker>
  26 + </el-form-item>
  27 +
  28 +
  29 + <el-form-item label="区间">
  30 + <el-select v-model="query.qujain" placeholder="区间">
  31 + <el-option label="全部" value=""></el-option>
  32 + <el-option label="上午" value="上午"></el-option>
  33 + <el-option label="下午" value="下午"></el-option>
  34 + </el-select>
  35 + </el-form-item>
  36 +
  37 + <el-form-item>
  38 + <el-button type="success" @click="search">搜索</el-button>
  39 + </el-form-item>
  40 + </el-form>
  41 + </div>
  42 +
  43 + </div>
  44 + <el-table :data="userList" id="QuestionTable" border
  45 + style="width: 100%;border-radius: 5px;box-shadow: 0 0 10px #efefef;margin-top: 10px;" :stripe='true'>
  46 + <el-table-column type="index" prop="date" width="50" align="center"></el-table-column>
  47 + <el-table-column prop="date" label="日期">
  48 + <template slot-scope="scope">
  49 + <span>{{ scope.row.startTime }}
  50 +
  51 + <el-tag>{{scope.row.qujian}}</el-tag>
  52 + </span>
  53 + </template>
  54 + </el-table-column>
  55 +
  56 + <el-table-column prop="date" label="姓名">
  57 + <template slot-scope="scope">
  58 + <span>{{ scope.row.fullName }}</span>
  59 + <el-tag v-for="item in scope.row.taglist" size="mini" style="margin-right:5px"
  60 + :disable-transitions="false" >{{item}}</el-tag>
  61 +
  62 + </template>
  63 + </el-table-column>
  64 + <el-table-column prop="date" label="系统推荐" width="150px" sortable>
  65 + <template slot-scope="scope">
  66 + <el-rate v-model="scope.row.stars" disabled text-color="#ff9900" size="small">
  67 + </el-rate>
  68 + </template>
  69 + </el-table-column>
  70 + <el-table-column prop="date" label="联系方式">
  71 + <template slot-scope="scope">
  72 + <span>{{ scope.row.phone }}</span>
  73 + </template>
  74 + </el-table-column>
  75 + <el-table-column prop="date" label="详细地址">
  76 + <template slot-scope="scope">
  77 + <span>{{ scope.row.adress || '-' }}</span>
  78 + </template>
  79 + </el-table-column>
  80 + <el-table-column prop="date" label="备注">
  81 + <template slot-scope="scope">
  82 + <span>{{ scope.row.remark || '-' }}</span>
  83 + </template>
  84 + </el-table-column>
  85 + <el-table-column fixed="right" label="操作" width="150">
  86 + <template slot-scope="scope">
  87 +
  88 + <el-button type="text" icon="el-icon-delete" circle @click="handleDelete(scope.row, scope.$index)" size="mini"
  89 + style="margin-left:0px;">删除
  90 + </el-button>
  91 +
  92 + </template>
  93 + </el-table-column>
  94 + </el-table>
  95 + <el-pagination background @current-change="currentchange"
  96 + style="position:static;bottom: 3px;text-align: center;margin-top: 5px;" :page-size="this.query.PageSize"
  97 + layout="total,prev, pager, next" :total="Count">
  98 + </el-pagination>
  99 +
  100 + </div>
  101 +</template>
  102 +
  103 +<script>
  104 + import {
  105 + GetCompanyInvitation,
  106 + InvitationCompanyDelete
  107 + } from '@/api/user'
  108 + import {
  109 + formatTime
  110 + } from '@/utils/util.js'
  111 + export default {
  112 + data() {
  113 + var checkPhone = (rule, value, callback) => {
  114 + const phoneReg = /^1[3|4|5|7|8][0-9]{9}$/
  115 + if (!value) {
  116 + return callback(new Error('电话号码不能为空'))
  117 + }
  118 + setTimeout(() => {
  119 + if (!Number.isInteger(+value)) {
  120 + callback(new Error('请输入数字值'))
  121 + } else {
  122 + if (phoneReg.test(value)) {
  123 + callback()
  124 + } else {
  125 + callback(new Error('电话号码格式不正确'))
  126 + }
  127 + }
  128 + }, 100)
  129 + }
  130 +
  131 +
  132 + var validatePass = (rule, value, callback) => {
  133 + if (value === '') {
  134 + callback(new Error('请输入密码'));
  135 + } else {
  136 + if (this.ruleForm.checkPass !== '') {
  137 + this.$refs.ruleForm.validateField('checkPass');
  138 + }
  139 + callback();
  140 + }
  141 + };
  142 + var validatePass2 = (rule, value, callback) => {
  143 + if (value === '') {
  144 + callback(new Error('请再次输入密码'));
  145 + } else if (value !== this.ruleForm.Password) {
  146 + callback(new Error('两次输入密码不一致!'));
  147 + } else {
  148 + callback();
  149 + }
  150 + };
  151 + return {
  152 + title: '添加管理员',
  153 + buttonText: '立即创建',
  154 + userList: [],
  155 + dialogClassIVIsible: false,
  156 + dialogClassIVIsibleT: false,
  157 + adminUserInfo: {
  158 + username: "",
  159 + password: "",
  160 + // type: 4,
  161 + fullName: "",
  162 + // remark: "",
  163 + phone: "",
  164 + // sex: "",
  165 + // card: "",
  166 + // address: "",
  167 + // birthday: "",
  168 + status: 1,
  169 + },
  170 +
  171 + ruleForm: {
  172 + UserId: 0,
  173 + Password: '',
  174 + checkPass: '',
  175 + },
  176 + Count: 0,
  177 + query: {
  178 + PageIndex: 1,
  179 + PageSize: 1000,
  180 +
  181 + },
  182 + }
  183 + },
  184 + created() {
  185 + this.GetUser()
  186 + },
  187 + methods: {
  188 + search() {
  189 + this.GetUser();
  190 + },
  191 + closeClassDialog() {
  192 + this.title = '添加管理员'
  193 + this.buttonText = '立即创建'
  194 + this.GetUser();
  195 + },
  196 + submitForm(formName) {
  197 + this.$refs[formName].validate((valid) => {
  198 + if (valid) {
  199 + if (this.title == '添加管理员') {
  200 + this.adminUserInfo.addTime = formatTime(new Date(), 'yyyy-MM-dd HH:mm:ss')
  201 + AccountRegister(this.adminUserInfo).then(res => {
  202 + this.$notify({
  203 + title: '成功',
  204 + message: res.data.message,
  205 + type: 'success'
  206 + });
  207 + // this.$confirm(res.data.message, '消息')
  208 + this.dialogClassIVIsible = false
  209 + })
  210 + } else {
  211 + this.adminUserInfo.updateTime = formatTime(new Date(), 'yyyy-MM-dd HH:mm:ss')
  212 + this.adminUserInfo.status = 1
  213 + UsersUpdate(this.adminUserInfo).then(res => {
  214 + this.$notify({
  215 + title: '成功',
  216 + message: res.data.message,
  217 + type: 'success'
  218 + });
  219 + // this.$confirm(res.data.message, '消息')
  220 + this.dialogClassIVIsible = false
  221 + })
  222 + }
  223 +
  224 + } else {
  225 + return false;
  226 + }
  227 + });
  228 + },
  229 +
  230 + GetUser() {
  231 + GetCompanyInvitation(this.query).then(res => {
  232 + this.userList = res.data.data
  233 + this.Count = res.data.records
  234 + })
  235 + },
  236 + currentchange(page) {
  237 + this.query.PageIndex = page;
  238 + this.GetUser();
  239 + },
  240 + closeClassDialogT() {
  241 + this.dialogClassIVIsibleT = false
  242 + },
  243 +
  244 + handleDelete(val, index) {
  245 +
  246 + let that = this;
  247 + this.$confirm('确定删除该面试信息吗?', '消息', {
  248 + confirmButtonText: '确认',
  249 + cancelButtonText: '取消',
  250 + callback: (action) => {
  251 + if (action == "confirm") {
  252 + InvitationCompanyDelete({
  253 + ids: val.id
  254 + }).then(res => {
  255 + if (res.data.code == 200) {
  256 + this.userList.splice(index, 1);
  257 + this.$notify({
  258 + title: '成功',
  259 + message: res.data.message,
  260 + type: 'success'
  261 + });
  262 + this.GetUser();
  263 + }
  264 + });
  265 + }
  266 + },
  267 + })
  268 + },
  269 + submitFormT(formName) {
  270 + this.$refs[formName].validate((valid) => {
  271 + if (valid) {
  272 + UpdateCurrentPasswordById({ UserId: this.ruleForm.UserId, Password: this.ruleForm.Password }).then(res => {
  273 + if (res.data.code == 200) {
  274 + this.$notify({
  275 + title: 'Success',
  276 + message: res.data.message,
  277 + type: 'success',
  278 + duration: 1000
  279 + })
  280 + this.dialogClassIVIsibleT = false
  281 + // setTimeout(()=>{
  282 + // this.$store.dispatch('user/logout')
  283 + // this.$router.push(`/login?redirect=${this.$route.fullPath}`)
  284 + // },1000)
  285 +
  286 + }
  287 + })
  288 + } else {
  289 + console.log('error submit!!');
  290 + return false;
  291 + }
  292 + });
  293 + },
  294 + handleCommand(value, val) {
  295 + let that = this;
  296 + if (value == "del") {
  297 + this.$confirm('确定删除该管理员?', '消息', {
  298 + confirmButtonText: '确认',
  299 + cancelButtonText: '取消',
  300 + callback: (action) => {
  301 + if (action == "confirm") {
  302 + InvitationCompanyDelete({
  303 + ids: val.id
  304 + }).then(res => {
  305 + if (res.data.code == 200) {
  306 + this.$notify({
  307 + title: '成功',
  308 + message: res.data.message,
  309 + type: 'success'
  310 + });
  311 + this.GetUser();
  312 + }
  313 + });
  314 + }
  315 + },
  316 + })
  317 +
  318 + }
  319 + },
  320 + }
  321 + }
  322 +</script>
  323 +
  324 +<style>
  325 + .seetingsDiv {
  326 + display: flex;
  327 + align-items: center;
  328 + width: 100%;
  329 + padding-top: 10px;
  330 + padding-left: 10px;
  331 + /* height: 60px; */
  332 + background: #efefef;
  333 + /* line-height: 60px; */
  334 + border-radius: 5px;
  335 + box-shadow: 0 0 5px #cdcdcd;
  336 + justify-content: space-between;
  337 + }
  338 +
  339 + .seetingsDiv button {
  340 + height: 40px;
  341 + background-color: #304156;
  342 + border: 0px;
  343 + margin-left: 10px;
  344 + box-shadow: 0 0 5px #cdcdcd;
  345 + float: none;
  346 + margin-right: 10px;
  347 + }
  348 +</style>
0 349 \ No newline at end of file
... ...
src/views/user/picuserimport.vue
... ... @@ -52,6 +52,19 @@
52 52 </div>
53 53 </div>
54 54 <div class="main-box">
  55 + <div class="doc-view" v-if="currentFilePath">
  56 + <iframe
  57 + style="width: 100%; height: 100%"
  58 + v-if="currentFilePath && currentFilePath.indexOf('.pdf') !=-1"
  59 + :src="
  60 + BASE_ROOT_DOMAIN + '/pdf/web/viewer.html?file=' + BASE_ROOT_DOMAIN +currentFilePath
  61 + "
  62 + frameborder="0"
  63 + ></iframe>
  64 + <el-image v-else :src=" BASE_ROOT_DOMAIN +currentFilePath">
  65 +
  66 + </el-image>
  67 + </div>
55 68 <el-table
56 69 ref="mytable"
57 70 :data="table_data"
... ... @@ -156,16 +169,7 @@
156 169 </template>
157 170 </el-table-column>
158 171 </el-table>
159   - <div class="doc-view" v-if="currentFilePath">
160   - <iframe
161   - style="width: 100%; height: 100%"
162   - v-if="currentFilePath"
163   - :src="
164   - BASE_ROOT_DOMAIN + '/pdf/web/viewer.html?file=' + BASE_ROOT_DOMAIN +currentFilePath
165   - "
166   - frameborder="0"
167   - ></iframe>
168   - </div>
  172 +
169 173 </div>
170 174 <div class="page-box">
171 175 <el-pagination
... ...
src/views/user/userlist.vue
1 1 <template>
2 2 <div class="app-container">
3 3 <div class="seetingsDiv" style="">
4   - <div class="flex" style="width: 75%">
  4 + <div class="flex" style="width: 85%">
5 5 <el-form :inline="true" class="demo-form-inline">
6 6 <el-form-item label="关键字">
7   - <el-input
8   - placeholder="输入关键字搜索"
9   - v-model="query.keyword"
10   - ></el-input>
  7 + <el-input placeholder="输入关键字搜索" v-model="query.keyword"></el-input>
11 8 </el-form-item>
12 9 <el-form-item label="最高学历">
13 10 <el-select v-model="query.xueli" placeholder="最高学历">
... ... @@ -22,137 +19,89 @@
22 19 <el-option label="女" value="0"></el-option>
23 20 </el-select>
24 21 </el-form-item>
  22 + <el-form-item label="面试进度">
  23 + <el-select v-model="query.process" placeholder="进度">
  24 + <el-option label="全部" value="-1"></el-option>
  25 + <el-option v-for="item in processlist" :key="item.value" :label="item.label" :value="item.value">
  26 + </el-option>
  27 + </el-select>
  28 + </el-form-item>
  29 +
  30 + <el-form-item label="推荐指数">
  31 + <el-rate v-model="query.stars" text-color="#ff9900" style="margin-top:10px;">
  32 + </el-rate>
  33 + </el-form-item>
  34 +
25 35  
26 36 <el-form-item>
27 37 <el-button type="success" @click="search">搜索</el-button>
28 38 <el-button type="success" @click="resetSearch">重置</el-button>
29   - <el-button
30   - type="primary"
31   - @click="handleInviteInterview(scope.row)"
32   - >邀请面试</el-button
33   - >
  39 + <el-button type="primary" @click="handleInviteInterview()">邀请面试(线上)</el-button>
  40 +
  41 + <el-button type="primary" @click="handleCompanyInterview()">邀请面试(现场)</el-button>
34 42 </el-form-item>
35 43 </el-form>
36 44 </div>
37 45  
38 46 <div class="flex aligin-center">
39   - <el-link
40   - :href="BASE_URL + '/temp/用户导入模板.xlsx'"
41   - target="_blank"
42   - type="primary"
43   - >下载模板</el-link
44   - >
45   - <el-upload
46   - class="upload-demo"
47   - action="/api/Account/importUsers?UserClassId=0"
48   - multiple
49   - :limit="1"
50   - :show-file-list="false"
51   - :on-exceed="handleExceed"
52   - :on-success="handleSuccess"
53   - :file-list="fileList"
54   - >
  47 + <el-link :href="BASE_URL + '/temp/用户导入模板.xlsx'" target="_blank" type="primary">下载模板</el-link>
  48 + <el-upload class="upload-demo" action="/api/Account/importUsers?UserClassId=0" multiple :limit="1"
  49 + :show-file-list="false" :on-exceed="handleExceed" :on-success="handleSuccess" :file-list="fileList">
55 50 <el-button size="small" type="primary">导入用户</el-button>
56 51 </el-upload>
57 52 </div>
58 53 </div>
59 54 <el-container style="border: 1px solid #eee">
60   - <el-aside
61   - width="255px"
62   - style="
  55 + <el-aside width="255px" style="
63 56 width: 255px;
64 57 background-color: #fff;
65 58 padding: 10px;
66 59 border-right: 1px solid #dcdfe6;
67   - "
68   - >
  60 + ">
69 61 <div style="float: left">所属分类</div>
70 62 <div style="text-align: right">
71   - <el-button
72   - size="mini"
73   - type="primary"
74   - icon="el-icon-plus"
75   - circle
76   - @click="addcat"
77   - ></el-button>
78   - <el-button
79   - size="mini"
80   - type="warning"
81   - icon="el-icon-edit"
82   - circle
83   - @click="editcat"
84   - ></el-button>
85   - <el-button
86   - size="mini"
87   - type="danger"
88   - icon="el-icon-delete"
89   - @click="delcat"
90   - circle
91   - ></el-button>
  63 + <el-button size="mini" type="primary" icon="el-icon-plus" circle @click="addcat"></el-button>
  64 + <el-button size="mini" type="warning" icon="el-icon-edit" circle @click="editcat"></el-button>
  65 + <el-button size="mini" type="danger" icon="el-icon-delete" @click="delcat" circle></el-button>
92 66 </div>
93   - <el-input
94   - size="small "
95   - placeholder="分类筛选"
96   - v-model="filterText"
97   - style="margin-bottom: 10px; margin-top: 10px"
98   - >
  67 + <el-input size="small " placeholder="分类筛选" v-model="filterText" style="margin-bottom: 10px; margin-top: 10px">
99 68 </el-input>
100   - <el-tree
101   - :data="data"
102   - :props="props"
103   - ref="tree"
104   - :filter-node-method="filterNode"
105   - @node-click="handleNodeClick"
106   - >
  69 + <el-tree :data="data" :props="props" ref="tree" :filter-node-method="filterNode" @node-click="handleNodeClick">
107 70 </el-tree>
108 71 </el-aside>
109 72  
110 73 <el-main>
111 74 <div class="filter-container">
112   - <el-table
113   - ref="userList"
114   - :data="userList"
115   - id="QuestionTable"
116   - border
117   - style="
  75 + <el-table ref="userList" :data="userList" id="QuestionTable" border style="
118 76 width: 100%;
119 77 border-radius: 5px;
120 78 box-shadow: 0 0 10px #efefef;
121 79 margin-top: 10px;
122   - "
123   - @selection-change="handleSelectionChange"
124   - :stripe="true"
125   - >
  80 + " @selection-change="handleSelectionChange" :stripe="true">
126 81 <el-table-column type="selection" width="55"> </el-table-column>
127   - <el-table-column
128   - type="index"
129   - prop="date"
130   - width="50"
131   - align="center"
132   - ></el-table-column>
133   - <el-table-column prop="date" label="姓名">
  82 + <el-table-column type="index" prop="date" width="50" align="center"></el-table-column>
  83 + <el-table-column prop="date" label="姓名" width="200">
134 84 <template slot-scope="scope">
135   - <span>{{ scope.row.fullName }}</span>
  85 + <el-tooltip class="item" effect="dark" :content="scope.row.processName" placement="top-start">
  86 + <span>
  87 + {{scope.row.fullName || '无' }}
  88 + </span>
  89 + </el-tooltip>
  90 + <el-tag v-for="item in scope.row.taglist" size="mini" style="margin-right:5px" closable
  91 + :disable-transitions="false" @close="handleClose(item,scope.row)">{{item}}</el-tag>
  92 + <el-tag size="mini" @click="addtag(scope.row)" style="cursor:pointer">+</el-tag>
  93 +
136 94 </template>
137 95 </el-table-column>
138   - <el-table-column prop="date" label="系统推荐" width="150px">
  96 + <el-table-column prop="date" label="系统推荐" width="150px" sortable>
139 97 <template slot-scope="scope">
140   - <el-rate
141   - v-model="scope.row.stars"
142   - disabled
143   - text-color="#ff9900"
144   - >
  98 + <el-rate v-model="scope.row.stars" disabled text-color="#ff9900" size="small">
145 99 </el-rate>
146 100 </template>
147 101 </el-table-column>
148   - <el-table-column prop="date" label="电话号码">
  102 + <el-table-column prop="date" label="电话号码" width="100">
149 103 <template slot-scope="scope">
150   - <el-tooltip
151   - class="item"
152   - effect="dark"
153   - :content="scope.row.phone"
154   - placement="top-start"
155   - >
  104 + <el-tooltip class="item" effect="dark" :content="scope.row.phone" placement="top-start">
156 105 <span>{{ scope.row.phone1 }}</span>
157 106 </el-tooltip>
158 107 </template>
... ... @@ -160,86 +109,75 @@
160 109  
161 110 <el-table-column prop="date" label="近期测试">
162 111 <template slot-scope="{ row }">
163   - <el-button
164   - v-if="row.TestPaperTitle || 1 == 1"
165   - type="text"
166   - icon="el-icon-star-off"
167   - @click="handleTestHitory(row)"
168   - ></el-button>
  112 + <el-button v-if="row.TestPaperTitle || 1 == 1" type="text" icon="el-icon-star-off"
  113 + @click="handleTestHitory(row)"></el-button>
169 114 <span>{{ row.TestPaperTitle || "无" }}</span>
170 115 </template>
171 116 </el-table-column>
172 117 <el-table-column prop="processName" label="面试进度">
173   - </el-table-column>
174   - <el-table-column prop="date" label="电话号码">
175   - <template slot-scope="scope">
176   - <el-tooltip
177   - class="item"
178   - effect="dark"
179   - :content="scope.row.phone"
180   - placement="top-start"
181   - >
182   - <span>{{ scope.row.phone1 }}</span>
183   - </el-tooltip>
  118 +
  119 + <template slot-scope="{ row }">
  120 +
  121 + <span style="cursor: pointer;
  122 + border-color: #c2e7b0;
  123 + " @click="processEvent(row)">
  124 + {{row.processName}}
  125 + </span>
  126 +
184 127 </template>
185 128 </el-table-column>
186 129  
187   - <el-table-column prop="date" label="性别" sortable>
  130 + <!-- <el-table-column prop="tags" label="标签" width="166">
  131 +
  132 + <template slot-scope="{ row }">
  133 +
  134 + <el-tag v-for="item in row.taglist" size="mini" style="margin-right:5px;">{{item}}</el-tag>
  135 +
  136 + </template>
  137 + </el-table-column> -->
  138 + <el-table-column prop="sex" label="性别" sortable>
  139 + <template slot-scope="scope">
  140 + <span>{{ scope.row.sex==1?'男':'女' }}</span>
  141 + </template>
188 142 </el-table-column>
189   - <el-table-column prop="date" label="民族" sortable>
  143 + <el-table-column prop="minzu" label="民族" sortable>
190 144 </el-table-column>
191   - <el-table-column prop="date" label="专业" sortable>
  145 + <el-table-column prop="zhuanye" label="专业" sortable>
192 146 </el-table-column>
193   - <el-table-column prop="date" label="毕业院校" sortable>
  147 + <el-table-column prop="byyx" label="毕业院校" sortable>
194 148 </el-table-column>
195   - <el-table-column prop="date" label="最高学历" sortable>
  149 + <el-table-column prop="xueli" label="最高学历" sortable>
196 150 </el-table-column>
197 151  
198   - <el-table-column prop="addTime" label="录入时间" sortable>
  152 + <el-table-column prop="addTime" label="录入时间" sortable width="100">
199 153 <template slot-scope="scope">
200   - <span>{{ scope.row.addTime.replace("T", " ") }}</span>
  154 + <el-tooltip class="item" effect="dark" :content=" scope.row.addTime.replace('T',' ')"
  155 + placement="top-start">
  156 + <span>{{ scope.row.addTime.split('T')[0] }}</span>
  157 + </el-tooltip>
  158 +
201 159 </template>
202 160 </el-table-column>
203 161  
204   - <el-table-column prop="date" label="操作" width="220">
  162 + <el-table-column prop="date" label="操作" width="220" fixed="right">
205 163 <template slot-scope="scope">
206   - <el-button
207   - type="text"
208   - icon="el-icon-edit"
209   - @click="handleEdit(scope.row)"
210   - circle
211   - >编辑</el-button
212   - >
213   - <el-button
214   - type="text"
215   - icon="el-icon-edit"
216   - @click="handleInviteInterviewOnsite(scope.row)"
217   - circle
218   - >邀请面试</el-button
219   - >
220   - <el-button
221   - type="text"
222   - icon="el-icon-delete"
223   - circle
224   - @click="handleDelete(scope.row, scope.$index)"
225   - >删除</el-button
226   - >
  164 + <el-button type="text" icon="el-icon-edit" @click="handleEdit(scope.row)" circle size="mini"
  165 + style="margin-left:0px;">编辑</el-button>
  166 + <el-button type="text" icon="el-icon-user" @click="handleCompanyInterview(scope.row)" circle size="mini"
  167 + style="margin-left:0px;">邀请面试
  168 + </el-button>
  169 + <el-button type="text" icon="el-icon-delete" circle @click="handleDelete(scope.row, scope.$index)"
  170 + size="mini" style="margin-left:0px;">删除
  171 + </el-button>
227 172 </template>
228 173 </el-table-column>
229 174 </el-table>
230   - <el-pagination
231   - background
232   - @current-change="currentchange"
233   - style="
  175 + <el-pagination background @current-change="currentchange" style="
234 176 position: static;
235 177 bottom: 3px;
236 178 text-align: center;
237 179 margin-top: 5px;
238   - "
239   - :page-size="this.query.PageSize"
240   - layout="total,prev, pager, next"
241   - :total="Count"
242   - >
  180 + " :page-size="this.query.PageSize" layout="total,prev, pager, next" :total="Count">
243 181 </el-pagination>
244 182 </div>
245 183 </el-main>
... ... @@ -251,23 +189,14 @@
251 189 <el-input v-model="form.name" autocomplete="off"></el-input>
252 190 </el-form-item> -->
253 191 <el-form-item label="试卷">
254   - <el-select
255   - v-model="form.TestPaperId"
256   - placeholder="请选择试卷"
257   - style="width: 80%"
258   - >
  192 + <el-select v-model="form.TestPaperId" placeholder="请选择试卷" style="width: 80%">
259 193 <el-option :value="item.id" v-for="item in testpaperlist">{{
260 194 "[" + item.id + "] " + (item.TestPaperTitle || "未命名")
261   - }}</el-option>
  195 + }}</el-option>
262 196 </el-select>
263 197 </el-form-item>
264 198 <el-form-item label="允许测评次数">
265   - <el-input
266   - v-model="form.NumberOfAnswers"
267   - type="number"
268   - placeholder="请输入允许测评次数"
269   - style="width: 30%"
270   - />
  199 + <el-input v-model="form.NumberOfAnswers" type="number" placeholder="请输入允许测评次数" style="width: 30%" />
271 200 </el-form-item>
272 201 </el-form>
273 202 <div slot="footer" class="dialog-footer">
... ... @@ -276,62 +205,29 @@
276 205 </div>
277 206 </el-dialog>
278 207  
279   - <el-dialog
280   - title="测试历史记录"
281   - :visible.sync="dialogTableVisible"
282   - @close="gridData = []"
283   - height="800"
284   - width="80%"
285   - >
  208 + <el-dialog title="测试历史记录" :visible.sync="dialogTableVisible" @close="gridData = []" height="800" width="80%">
286 209 <el-table :data="gridData" height="400">
287   - <el-table-column
288   - property="TestPaperTitle"
289   - label="试卷"
290   - sortable
291   - ></el-table-column>
292   - <el-table-column
293   - property="AnswerTime"
294   - label="测试时间"
295   - width="180"
296   - sortable
297   - >
  210 + <el-table-column property="TestPaperTitle" label="试卷" sortable></el-table-column>
  211 + <el-table-column property="AnswerTime" label="测试时间" width="180" sortable>
298 212 <template slot-scope="scope">
299 213 <span>{{ scope.row.AnswerTime.replace("T", " ") }}</span>
300 214 </template>
301 215 </el-table-column>
302   - <el-table-column
303   - property="StartTime"
304   - label="开始时间"
305   - width="180"
306   - sortable
307   - >
  216 + <el-table-column property="StartTime" label="开始时间" width="180" sortable>
308 217 <template slot-scope="scope">
309 218 <span>{{ scope.row.StartTime.replace("T", " ") }}</span>
310 219 </template>
311 220 </el-table-column>
312   - <el-table-column
313   - property="address"
314   - label="结束时间"
315   - width="180"
316   - sortable
317   - >
  221 + <el-table-column property="address" label="结束时间" width="180" sortable>
318 222 <template slot-scope="scope">
319 223 <span>{{ scope.row.EndTime.replace("T", " ") }}</span>
320 224 </template>
321 225 </el-table-column>
322   - <el-table-column
323   - property="Achievement"
324   - label="成绩"
325   - sortable
326   - ></el-table-column>
  226 + <el-table-column property="Achievement" label="成绩" sortable></el-table-column>
327 227 <el-table-column label="操作">
328 228 <template slot-scope="scope">
329   - <el-button type="success" @click="handleWatchLive(scope.row)"
330   - >观看直播</el-button
331   - >
332   - <el-button type="primary" @click="handleAnswerDetail(scope.row)"
333   - >答题详情</el-button
334   - >
  229 + <el-button type="success" @click="handleWatchLive(scope.row)">观看直播</el-button>
  230 + <el-button type="primary" @click="handleAnswerDetail(scope.row)">答题详情</el-button>
335 231 </template>
336 232 </el-table-column>
337 233 </el-table>
... ... @@ -343,17 +239,8 @@
343 239 </div>
344 240 </el-dialog>
345 241  
346   - <el-dialog
347   - :visible.sync="dialogVisiblecat"
348   - :title="dialogTypecat === 'update' ? '修改' : '新增'"
349   - width="455px"
350   - >
351   - <el-form
352   - ref="dataForm"
353   - :model="temp"
354   - label-width="120px"
355   - label-position="right"
356   - >
  242 + <el-dialog :visible.sync="dialogVisiblecat" :title="dialogTypecat === 'update' ? '修改' : '新增'" width="455px">
  243 + <el-form ref="dataForm" :model="temp" label-width="120px" label-position="right">
357 244 <el-form-item label="分类名称">
358 245 <el-input v-model="temp.ClassTitle" placeholder="请输入名称" />
359 246 </el-form-item>
... ... @@ -368,46 +255,26 @@
368 255 </div>
369 256 </el-dialog>
370 257  
371   - <el-dialog
372   - title="人才用户信息"
373   - :visible.sync="dialogClassIVIsible"
374   - width="450"
375   - >
376   - <el-form
377   - ref="adminUserInfo"
378   - :model="adminUserInfo"
379   - label-width="90px"
380   - style="margin-left: 40px"
381   - >
  258 + <el-dialog title="人才用户信息" :visible.sync="dialogClassIVIsible" width="450">
  259 + <el-form ref="adminUserInfo" :model="adminUserInfo" label-width="90px" style="margin-left: 40px">
382 260 <el-form-item label="名称" prop="fullName">
383   - <el-input
384   - v-model="adminUserInfo.fullName"
385   - placeholder="请输入姓名"
386   - style="width: 40%"
387   - ></el-input>
  261 + <el-input v-model="adminUserInfo.fullName" placeholder="请输入姓名" style="width: 40%"></el-input>
388 262 </el-form-item>
389 263 <el-form-item label="电话号码">
390   - <el-input
391   - v-model="adminUserInfo.phone"
392   - placeholder="请输入电话号码"
393   - style="width: 40%"
394   - maxlength="11"
395   - ></el-input>
  264 + <el-input v-model="adminUserInfo.phone" placeholder="请输入电话号码" style="width: 40%" maxlength="11"></el-input>
396 265 </el-form-item>
397 266 <el-form-item label="最高学历">
398 267 <el-select v-model="adminUserInfo.xueli" placeholder="最高学历">
399   - <el-option label="大专" value="shanghai"></el-option>
400   - <el-option label="本科" value="beijing"></el-option>
  268 + <el-option label="大专" value="大专"></el-option>
  269 + <el-option label="本科" value="本科"></el-option>
  270 + <el-option label="博士" value="博士"></el-option>
  271 + <el-option label="博士后" value="博士后"></el-option>
401 272 </el-select>
402 273 </el-form-item>
403 274  
404 275 <el-form-item label="民族">
405 276 <el-select v-model="adminUserInfo.minzu" placeholder="民族">
406   - <el-option
407   - v-for="item in mzlist"
408   - :label="item"
409   - :value="item"
410   - ></el-option>
  277 + <el-option v-for="item in mzlist" :label="item" :value="item"></el-option>
411 278 </el-select>
412 279 </el-form-item>
413 280 <el-form-item label="性别">
... ... @@ -417,419 +284,675 @@
417 284 </el-select>
418 285 </el-form-item>
419 286 <el-form-item label="专业" style="margin-top: 40px" prop="username">
420   - <el-input
421   - v-model="adminUserInfo.zhuanye"
422   - placeholder="请输入专业"
423   - style="width: 40%"
424   - ></el-input>
  287 + <el-input v-model="adminUserInfo.zhuanye" placeholder="请输入专业" style="width: 40%"></el-input>
425 288 </el-form-item>
426 289 <el-form-item label="毕业院校" style="margin-top: 40px" prop="username">
427   - <el-input
428   - v-model="adminUserInfo.byyx"
429   - placeholder="请输入毕业院校"
430   - style="width: 40%"
431   - ></el-input>
  290 + <el-input v-model="adminUserInfo.byyx" placeholder="请输入毕业院校" style="width: 40%"></el-input>
432 291 </el-form-item>
433 292 <el-form-item label="系统推荐" style="margin-top: 40px" prop="stars">
434   - <el-rate
435   - style="width: 40%"
436   - v-model="adminUserInfo.stars"
437   - :texts="['不推荐', '一般', '满意', '很满意', '极力推荐']"
438   - show-text
439   - >
  293 + <el-rate style="width: 40%" v-model="adminUserInfo.stars" :texts="['不推荐', '一般', '满意', '很满意', '极力推荐']"
  294 + show-text>
440 295 </el-rate>
441 296 </el-form-item>
442   -
  297 + <el-form-item label="面试进度">
  298 + <el-select v-model="adminUserInfo.process" placeholder="进度">
  299 + <el-option v-for="item in processlist" :key="item.value" :label="item.label" :value="item.value">
  300 + </el-option>
  301 + </el-select>
  302 + </el-form-item>
443 303 <!-- <el-form-item label="密码" prop="password" >
444 304 <el-input v-model="adminUserInfo.password " placeholder="请输入密码 不填默认不修改" show-password style="width: 40%;"></el-input>
445 305 </el-form-item> -->
446 306 <el-form-item style="text-align: right">
447 307 <el-button @click="dialogClassIVIsible = false">取消</el-button>
448   - <el-button type="primary" @click="submitForm('adminUserInfo')"
449   - >提交</el-button
450   - >
  308 + <el-button type="primary" @click="submitForm('adminUserInfo')">提交</el-button>
451 309 </el-form-item>
452 310 </el-form>
453 311  
454 312 <div style="clear: both"></div>
455 313 </el-dialog>
  314 +
  315 +
  316 + <el-dialog title="邀请公司面试" :visible.sync="dialogCompany">
  317 + <el-form ref="dynamicValidateForm" label-width="100px" class="demo-dynamic">
  318 + <div v-for="(user, index) in sendUserList">
  319 +
  320 + <el-descriptions class="margin-top" :title="(index+1)" :column="2" border>
  321 + <template slot="extra">
  322 + <el-button type="primary" size="small" @click="removeSendUser(user)"> <i class="el-icon-delete"></i>移除
  323 + </el-button>
  324 + </template>
  325 + <el-descriptions-item>
  326 + <template slot="label">
  327 + <i class="el-icon-user"></i>
  328 + 姓名
  329 + </template>
  330 + {{user.fullName || ''}}
  331 +
  332 + <el-rate v-model="user.stars || 0" disabled show-score text-color="#ff9900">
  333 + </el-rate>
  334 + </el-descriptions-item>
  335 + <el-descriptions-item>
  336 + <template slot="label">
  337 + <i class="el-icon-tickets"></i>
  338 + 标签
  339 + </template>
  340 + <el-tag v-for="item in user.taglist" size="mini" style="margin-right:5px" :disable-transitions="false">
  341 + {{item}}</el-tag>
  342 + </el-descriptions-item>
  343 + <el-descriptions-item>
  344 + <template slot="label">
  345 + <i class="el-icon-location-outline"></i>
  346 + 城市
  347 + </template>
  348 + -
  349 + </el-descriptions-item>
  350 +
  351 +
  352 + <el-descriptions-item>
  353 + <template slot="label">
  354 + <i class="el-icon-office-building"></i>
  355 + 联系地址
  356 + </template>
  357 + {{user.address || ''}}
  358 + </el-descriptions-item>
  359 + <el-descriptions-item>
  360 + <template slot="label">
  361 + <i class="el-icon-mobile-phone"></i>
  362 + 手机号
  363 + </template>
  364 + {{user.phone || ''}}
  365 + </el-descriptions-item>
  366 + <el-descriptions-item>
  367 + <template slot="label">
  368 +
  369 + 面试时间范围
  370 + </template>
  371 + <!-- <el-date-picker v-model="user.date" type="datetimerange" range-separator="至" start-placeholder="开始日期"
  372 + end-placeholder="最后日期">
  373 + </el-date-picker> -->
  374 + <el-date-picker v-model="user.startTime" type="datetime" placeholder="选择日期时间">
  375 + </el-date-picker>
  376 + </el-descriptions-item>
  377 + <el-descriptions-item>
  378 + <template slot="label">
  379 + 消息内容
  380 + </template>
  381 + <el-input v-model="user.msgBody">
  382 +
  383 + </el-input>
  384 +
  385 + </el-descriptions-item>
  386 + <el-descriptions-item>
  387 + <template slot="label">
  388 +
  389 + 备注
  390 + </template>
  391 + <el-input v-model="user.remark" type="textarea">
  392 +
  393 + </el-input>
  394 +
  395 + </el-descriptions-item>
  396 + </el-descriptions>
  397 + </div>
  398 +
  399 + </el-form>
  400 +
  401 + <div slot="footer" class="dialog-footer">
  402 + <el-button @click="dialogCompany = false">取 消</el-button>
  403 + <el-button type="primary" @click="SubmitSendUser">确 定</el-button>
  404 + </div>
  405 + </el-dialog>
  406 + <el-dialog title="新增标签" :visible.sync="dialogFormVisibleTag" width="355px">
  407 + <el-form>
  408 + <el-form-item label="标签">
  409 + <el-input v-model="tagform.name" autocomplete="off"></el-input>
  410 + </el-form-item>
  411 +
  412 + </el-form>
  413 + <div slot="footer" class="dialog-footer">
  414 + <el-button @click="dialogFormVisibleTag = false">取 消</el-button>
  415 + <el-button type="primary" @click="handleTagConfirm">确 定</el-button>
  416 + </div>
  417 + </el-dialog>
  418 +
  419 +
456 420 </div>
457 421 </template>
458 422  
459 423 <script>
460   -import {
461   - ImportUserByExcel,
462   - GetUserList,
463   - UsersUpdate,
464   - AddInvitationAnswerMultiple,
465   - UsersDelete,
466   -} from "@/api/user";
467   -import {
468   - GetUserClassList,
469   - UserClassCreate,
470   - UserClassUpdate,
471   - UserClassDelete,
472   -} from "@/api/userclass";
473   -import { GetHistoryList } from "@/api/HistoryAnswer";
474   -
475   -import { getTestPaperList } from "@/api/TestPaper";
476   -export default {
477   - data() {
478   - return {
479   - loading: false,
480   - dialogFormVisible: false,
481   - dialogTableVisible: false,
482   - dialogTypecat: "create",
483   - testpaperlist: [],
484   - form: {
485   - NumberOfAnswers: 3,
486   - },
487   - userList: [],
488   - data: [],
489   - dialogVisiblecat: false,
490   - filterText: "",
491   - gridData: [],
492   - Count: 0,
493   - adminUserInfo: {},
494   - temp: {
495   - ParentId: 0,
496   - },
497   - mzlist: [
498   - "汉族",
499   - "蒙古族 ",
500   - "羌族 ",
501   - "僳僳族 ",
502   - "哈尼族",
503   - "回族",
504   - "布朗族",
505   - "佤族",
506   - "哈萨克族",
507   - "藏族",
508   - "撒拉族",
509   - "畲族",
510   - "傣族",
511   - "维吾尔族",
512   - "毛南族",
513   - "高山族",
514   - "德昂族",
515   - "苗族",
516   - "仡佬族",
517   - "拉祜族",
518   - "保安族",
519   - "彝族",
520   - "锡伯族",
521   - "水族",
522   - "裕固族",
523   - "壮族",
524   - "阿昌族",
525   - "东乡族",
526   - "京族",
527   - "布依族",
528   - "普米族",
529   - "纳西族",
530   - "独龙族",
531   - "朝鲜族",
532   - "塔吉克族",
533   - "景颇族",
534   - "鄂伦春族",
535   - "满族",
536   - "怒族",
537   - "柯尔克孜族",
538   - "赫哲族",
539   - "侗族",
540   - "乌孜别克族",
541   - "土族",
542   - "门巴族",
543   - "瑶族",
544   - "俄罗斯族",
545   - "达斡尔族",
546   - "珞巴族",
547   - "白族",
548   - "鄂温克族",
549   - "塔塔尔族",
550   - "基诺族",
551   - ],
552   - type: "1",
553   - dialogClassIVIsible: false,
554   - query: {
555   - UserTypeEnum: 1, //0:管理员,1普通用户
556   - PageIndex: 1,
557   - PageSize: 10,
558   - keyword: "",
559   - },
560   - fileList: [],
561   - selectedList: [],
562   - props: {
563   - label: "ClassTitle",
564   - children: "children",
565   - },
566   - };
567   - },
568   - watch: {
569   - filterText(val) {
570   - this.$refs.tree.filter(val);
571   - },
572   - },
573   -
574   - created() {
575   - this.GetUser();
576   - this.forceTestPaper();
577   - this.loadTree();
578   - },
579   - methods: {
580   - handleDelete(item, index) {
581   - this.userList.splice(index, 1);
582   - UsersDelete({ ids: item.id });
583   - },
584   - handleWatchLive(item) {
585   - console.log("handleWatchLive", item);
586   - this.$router.push(`/live?id=${item.StreamName}`);
587   - },
588   - handleAnswerDetail(item) {
589   - window.open(`/#/answerDetail?id=${item.id}`, "_blank");
590   - },
591   - submitForm() {
592   - let formData = { ...this.adminUserInfo };
593   - console.log('submitForm',JSON.stringify(formData));
594   - if (formData.id) {
595   - UsersUpdate(formData).then((res) => {
596   - this.GetUser();
597   - console.log(res);
598   - });
599   - }
600   - this.dialogClassIVIsible = false;
  424 + import {
  425 + ImportUserByExcel,
  426 + GetUserList,
  427 + UsersUpdate,
  428 + AddInvitationAnswerMultiple,
  429 + AddInvitationCompanyMultiple,
  430 + UsersDelete,
  431 + ChangeTags
  432 + } from "@/api/user";
  433 + import {
  434 + GetUserClassList,
  435 + UserClassCreate,
  436 + UserClassUpdate,
  437 + UserClassDelete,
  438 + } from "@/api/userclass";
  439 + import { GetHistoryList } from "@/api/HistoryAnswer";
  440 +
  441 + import { getTestPaperList } from "@/api/TestPaper";
  442 + export default {
  443 + data() {
  444 + return {
  445 + loading: false,
  446 + dialogFormVisible: false,
  447 + dialogTableVisible: false,
  448 + dialogFormVisibleTag: false,
  449 + dialogCompany: false,
  450 + dialogTypecat: "create",
  451 + testpaperlist: [],
  452 + tagform: {},
  453 + form: {
  454 + NumberOfAnswers: 3,
  455 + },
  456 + userList: [],
  457 + data: [],
  458 + dialogVisiblecat: false,
  459 + filterText: "",
  460 + gridData: [],
  461 + Count: 0,
  462 + adminUserInfo: {},
  463 + temp: {
  464 + ParentId: 0,
  465 + },
  466 + mzlist: [
  467 + "汉族",
  468 + "蒙古族 ",
  469 + "羌族 ",
  470 + "僳僳族 ",
  471 + "哈尼族",
  472 + "回族",
  473 + "布朗族",
  474 + "佤族",
  475 + "哈萨克族",
  476 + "藏族",
  477 + "撒拉族",
  478 + "畲族",
  479 + "傣族",
  480 + "维吾尔族",
  481 + "毛南族",
  482 + "高山族",
  483 + "德昂族",
  484 + "苗族",
  485 + "仡佬族",
  486 + "拉祜族",
  487 + "保安族",
  488 + "彝族",
  489 + "锡伯族",
  490 + "水族",
  491 + "裕固族",
  492 + "壮族",
  493 + "阿昌族",
  494 + "东乡族",
  495 + "京族",
  496 + "布依族",
  497 + "普米族",
  498 + "纳西族",
  499 + "独龙族",
  500 + "朝鲜族",
  501 + "塔吉克族",
  502 + "景颇族",
  503 + "鄂伦春族",
  504 + "满族",
  505 + "怒族",
  506 + "柯尔克孜族",
  507 + "赫哲族",
  508 + "侗族",
  509 + "乌孜别克族",
  510 + "土族",
  511 + "门巴族",
  512 + "瑶族",
  513 + "俄罗斯族",
  514 + "达斡尔族",
  515 + "珞巴族",
  516 + "白族",
  517 + "鄂温克族",
  518 + "塔塔尔族",
  519 + "基诺族",
  520 + ],
  521 + processlist: [
  522 + { label: '入库', value: 0 },
  523 + { label: '面试邀请', value: 1 },
  524 + { label: '正在面试', value: 2 },
  525 + { label: '面试完成', value: 3 },
  526 + { label: '公司面试', value: 4 },
  527 + { label: '已录用', value: 5 },
  528 + { label: '未录用', value: 9 },
  529 + { label: '禁用', value: 11 },
  530 + ],
  531 + type: "1",
  532 + dialogClassIVIsible: false,
  533 + query: {
  534 + UserTypeEnum: 1, //0:管理员,1普通用户
  535 + PageIndex: 1,
  536 + PageSize: 10,
  537 + keyword: "",
  538 + stars: -1
  539 + },
  540 + fileList: [],
  541 + selectedList: [],
  542 + props: {
  543 + label: "ClassTitle",
  544 + children: "children",
  545 + },
  546 +
  547 + sendUserList: []
  548 + };
601 549 },
602   - handleEdit(data) {
603   - this.dialogClassIVIsible = true;
604   - this.adminUserInfo = data;
  550 + watch: {
  551 + filterText(val) {
  552 + this.$refs.tree.filter(val);
  553 + },
605 554 },
606   - handleTestHitory(row) {
607   - GetHistoryList({ UserId: row.id }).then((res) => {
608   - this.gridData = res.data.data;
609   - this.dialogTableVisible = true;
610   - });
  555 +
  556 + created() {
  557 + this.GetUser();
  558 + this.forceTestPaper();
  559 + this.loadTree();
611 560 },
612   - handleShareSend() {
613   - var rows = this.$refs.userList.selection;
614   - var ids =
615   - rows.map((o) => {
616   - return { UserId: o.id };
617   - }) || [];
618   - var postData = {
619   - TestPaperId: this.form.TestPaperId,
620   - NumberOfAnswers: this.form.NumberOfAnswers || 1,
621   - Users: ids,
622   - };
623   - if (!ids || ids.length < 1) {
624   - this.$message.warning("请至少选择一个用户进行发送!");
625   - return;
626   - }
627   - if (!this.form.TestPaperId) {
628   - this.$message.warning("请选择试卷后再发送!");
629   - return;
630   - }
631   - this.$confirm(
632   - "确认向选择的" + ids.length + "个用户发送试卷连接进行测试吗?",
633   - "提示消息",
634   - {
635   - confirmButtonText: "确认",
636   - cancelButtonText: "取消",
  561 + methods: {
  562 + handleClose(tag, row) {
  563 +
  564 +
  565 + this.$confirm('确定删除该标签吗?', '消息', {
  566 + confirmButtonText: '确认',
  567 + cancelButtonText: '取消',
637 568 callback: (action) => {
638 569 if (action == "confirm") {
639   - AddInvitationAnswerMultiple(postData).then((res) => {
640   - if (res.data.code == 200) {
641   - this.$message.success("发送成功");
642   - this.form = {};
643   - this.dialogFormVisible = false;
644   - this.GetUser();
645   - } else {
646   - this.$message.error("发送失败");
647   - }
  570 + var d = row.taglist.splice(row.taglist.indexOf(tag), 1);
  571 + ChangeTags({
  572 + ids: row.id,
  573 + tags: row.taglist.join(',')
648 574 });
649 575 }
650 576 },
651   - }
652   - );
653   - },
654   - forceTestPaper() {
655   - let parameter = {
656   - pageIndex: 1,
657   - pageSize: 10000,
658   - sort: "id",
659   - sortOrder: 1,
660   - keyword: "",
661   - };
662   - getTestPaperList(parameter).then((res) => {
663   - this.testpaperlist = res.data.data;
664   - });
665   - },
666   - search() {
667   - this.GetUser();
668   - },
669   - handleSuccess() {
670   - this.$message.success("导入完成!");
671   - this.GetUser();
672   - },
673   - handleInviteInterview() {
674   - this.dialogFormVisible = true;
675   - },
676   - //邀请现场面试
677   - handleInviteInterviewOnSite(item){
  577 + })
678 578  
679   - },
680   - handleSelectionChange(val) {
681   - console.log(val);
682   - this.selectedList = val;
683   - },
684   - handleExceed() {},
685   - ImportUser() {},
686 579  
687   - showcontent(c, row) {
688   - this.showbody = c;
689   - this.dialogVisible_content = true;
690   - },
691   - submitcat() {
692   - // this.$loading({lock:true,text:'保存中...'});
693   - if (this.loading) {
694   - return;
  580 +
  581 + },
  582 + addtag(row) {
  583 + this.tagform = {
  584 + ids: row.id,
  585 + taglist: row.taglist,
  586 + name: ''
  587 + };
  588 + this.dialogFormVisibleTag = true;
  589 + },
  590 + handleTagConfirm(row) {
  591 + if (!this.tagform.name) {
  592 + this.$message.warning('请填写名字!');
  593 + return;
  594 + }
  595 + if (!this.tagform.ids) {
  596 + this.$message.warning('添加失败!');
  597 + return;
  598 + }
  599 + var temp = this.tagform.taglist || [];
  600 + temp.push(this.tagform.name);
  601 + ChangeTags({
  602 + ids: this.tagform.ids,
  603 + tags: temp.join(',')
  604 + }).then(res => {
  605 + if (res.data.code == 200) {
  606 + this.$message.success('操作成功!');
  607 + this.GetUser();
  608 + this.dialogFormVisibleTag = false;
  609 + this.$forceUpdate();
  610 + }
  611 + });
695 612 }
696   - this.loading = true;
697   - var postData = this.temp;
698   - if (this.dialogTypecat == "update") {
699   - if (postData.AddTime == "0001-01-01T00:00:00")
700   - postData.AddTime = new Date();
701   - UserClassUpdate(postData).then((o) => {
702   - this.$message({
703   - message: "提交成功",
704   - type: "success",
  613 + ,
  614 + //点击进度
  615 + processEvent(row) {
  616 + // if(row.procesName == '公司面试')
  617 + // {
  618 + // this.
  619 + // }
  620 + },
  621 + SubmitSendUser() {
  622 + if (!this.sendUserList || this.sendUserList.length < 1) {
  623 + this.$message.success("没有邀请对象!");
  624 + return;
  625 + }
  626 + var senddata = [];
  627 + this.sendUserList.forEach(o => {
  628 + // var item = Object.assign({},o);
  629 + // item.startTime = item.date[0];
  630 + // item.endTime = item.date[0];
  631 + // delete item['date'];
  632 + // var start = null;
  633 + // var end = null;
  634 + // if(o.date){
  635 + // start = o.date[0];
  636 + // end = o.date[1];
  637 + // }
  638 +
  639 + senddata.push({
  640 + userId: o.id,
  641 + startTime: o.startTime,
  642 + // endTime: end,
  643 + remark: o.remark || '',
  644 + phone: o.phone,
  645 + msgBody: o.msgBody || ''
705 646 });
706   - this.dialogVisiblecat = false;
707   - setTimeout(() => {
708   - this.loading = false;
709   - }, 1000);
710 647 });
711   - } else {
712   - UserClassCreate(postData).then((o) => {
713   - this.$message({
714   - message: "提交成功",
715   - type: "success",
716   - });
  648 + AddInvitationCompanyMultiple(senddata).then(res => {
  649 + if (res.data.code == 200) {
  650 + this.$message.success("邀请成功");
  651 + this.sendUserList = [];
  652 + this.dialogCompany = false;
  653 + this.GetUser();
  654 + } else {
  655 + this.$message.error("邀请失败");
  656 + }
  657 +
  658 + });
  659 + },
  660 + removeSendUser(item) {
  661 + var index = this.sendUserList.indexOf(item)
  662 + if (index !== -1) {
  663 + this.sendUserList.splice(index, 1)
  664 + }
  665 + },
717 666  
718   - this.dialogVisiblecat = false;
719 667  
720   - this.loadTree();
721   - setTimeout(() => {
722   - this.loading = false;
723   - }, 1000);
  668 + handleDelete(item, index) {
  669 + this.userList.splice(index, 1);
  670 + UsersDelete({ ids: item.id });
  671 + },
  672 + handleWatchLive(item) {
  673 + console.log("handleWatchLive", item);
  674 + this.$router.push(`/live?id=${item.StreamName}`);
  675 + },
  676 + handleAnswerDetail(item) {
  677 + window.open(`/#/answerDetail?id=${item.id}`, "_blank");
  678 + },
  679 + submitForm() {
  680 + let formData = { ...this.adminUserInfo };
  681 + console.log('submitForm', JSON.stringify(formData));
  682 + if (formData.id) {
  683 + UsersUpdate(formData).then((res) => {
  684 + this.GetUser();
  685 + console.log(res);
  686 + });
  687 + }
  688 + this.dialogClassIVIsible = false;
  689 + },
  690 + handleEdit(data) {
  691 + this.dialogClassIVIsible = true;
  692 + this.adminUserInfo = data;
  693 + },
  694 + handleTestHitory(row) {
  695 + GetHistoryList({ UserId: row.id }).then((res) => {
  696 + this.gridData = res.data.data;
  697 + this.dialogTableVisible = true;
724 698 });
725   - }
726   - },
727   - editclose(data) {
728   - // this.dialogVisible_step = false;
729   - this.fetchData();
730   - },
731   - loadTree() {
732   - GetUserClassList({ ParentId: 0 }).then((res) => {
733   - this.data = res.data.data;
734   - });
735   - },
736   - filterNode(value, data) {
737   - if (!value) return true;
738   - return data.ClassTitle.indexOf(value) !== -1;
739   - },
740   - addcat() {
741   - this.temp = { AddTime: new Date() };
742   - this.dialogVisiblecat = true;
743   - },
744   - editcat() {
745   - this.dialogTypecat = "update";
746   - if (!this.temp.id) {
747   - this.$message({
748   - message: "请选择一个分类进行操作!",
749   - type: "warning",
  699 + },
  700 + handleShareSend() {
  701 + var rows = this.$refs.userList.selection;
  702 + var ids =
  703 + rows.map((o) => {
  704 + return { UserId: o.id };
  705 + }) || [];
  706 + var postData = {
  707 + TestPaperId: this.form.TestPaperId,
  708 + NumberOfAnswers: this.form.NumberOfAnswers || 1,
  709 + Users: ids,
  710 + };
  711 + if (!ids || ids.length < 1) {
  712 + this.$message.warning("请至少选择一个用户进行发送!");
  713 + return;
  714 + }
  715 + if (!this.form.TestPaperId) {
  716 + this.$message.warning("请选择试卷后再发送!");
  717 + return;
  718 + }
  719 + this.$confirm(
  720 + "确认向选择的" + ids.length + "个用户发送试卷连接进行测试吗?",
  721 + "提示消息",
  722 + {
  723 + confirmButtonText: "确认",
  724 + cancelButtonText: "取消",
  725 + callback: (action) => {
  726 + if (action == "confirm") {
  727 + AddInvitationAnswerMultiple(postData).then((res) => {
  728 + if (res.data.code == 200) {
  729 + this.$message.success("发送成功");
  730 + this.form = {};
  731 + this.dialogFormVisible = false;
  732 + this.GetUser();
  733 + } else {
  734 + this.$message.error("发送失败");
  735 + }
  736 + });
  737 + }
  738 + },
  739 + }
  740 + );
  741 + },
  742 + forceTestPaper() {
  743 + let parameter = {
  744 + pageIndex: 1,
  745 + pageSize: 10000,
  746 + sort: "id",
  747 + sortOrder: 1,
  748 + keyword: "",
  749 + };
  750 + getTestPaperList(parameter).then((res) => {
  751 + this.testpaperlist = res.data.data;
750 752 });
751   - return;
752   - }
753   - this.dialogVisiblecat = true;
754   - },
755   - delcat() {
756   - if (!this.temp.id) {
757   - this.$message({
758   - message: "请选择一个分类进行操作!",
759   - type: "warning",
  753 + },
  754 + search() {
  755 + this.GetUser();
  756 + },
  757 + handleSuccess() {
  758 + this.$message.success("导入完成!");
  759 + this.GetUser();
  760 + },
  761 + handleInviteInterview() {
  762 + var rows = this.$refs.userList.selection;
  763 +
  764 + if (!rows || rows.length < 1) {
  765 + this.$message.warning("请至少选择一个用户进行发送!");
  766 + return;
  767 + }
  768 +
  769 + this.dialogFormVisible = true;
  770 + },
  771 + //邀请现场面试
  772 + handleCompanyInterview(user) {
  773 + var rows = this.$refs.userList.selection;
  774 + if (user) {
  775 + this.sendUserList = [user];
  776 + this.dialogCompany = true;
  777 + } else if (rows && rows.length > 0) {
  778 + this.sendUserList = rows;
  779 + this.dialogCompany = true;
  780 + }
  781 + else
  782 + this.$message.warning('至少选择一个用户进行操作!');
  783 + },
  784 +
  785 + handleSelectionChange(val) {
  786 + console.log(val);
  787 + this.selectedList = val;
  788 + },
  789 + handleExceed() { },
  790 + ImportUser() { },
  791 +
  792 + showcontent(c, row) {
  793 + this.showbody = c;
  794 + this.dialogVisible_content = true;
  795 + },
  796 + submitcat() {
  797 + // this.$loading({lock:true,text:'保存中...'});
  798 + if (this.loading) {
  799 + return;
  800 + }
  801 + this.loading = true;
  802 + var postData = this.temp;
  803 + if (this.dialogTypecat == "update") {
  804 + if (postData.AddTime == "0001-01-01T00:00:00")
  805 + postData.AddTime = new Date();
  806 + UserClassUpdate(postData).then((o) => {
  807 + this.$message({
  808 + message: "提交成功",
  809 + type: "success",
  810 + });
  811 + this.dialogVisiblecat = false;
  812 + setTimeout(() => {
  813 + this.loading = false;
  814 + }, 1000);
  815 + });
  816 + } else {
  817 + UserClassCreate(postData).then((o) => {
  818 + this.$message({
  819 + message: "提交成功",
  820 + type: "success",
  821 + });
  822 +
  823 + this.dialogVisiblecat = false;
  824 +
  825 + this.loadTree();
  826 + setTimeout(() => {
  827 + this.loading = false;
  828 + }, 1000);
  829 + });
  830 + }
  831 + },
  832 + editclose(data) {
  833 + // this.dialogVisible_step = false;
  834 + this.fetchData();
  835 + },
  836 + loadTree() {
  837 + GetUserClassList({ ParentId: 0 }).then((res) => {
  838 + this.data = res.data.data;
760 839 });
761   - return;
762   - }
763   - this.$confirm("确认删除该分类吗?", "提示", {
764   - confirmButtonText: "确定",
765   - cancelButtonText: "取消",
766   - type: "warning",
767   - }).then(() => {
768   - UserClassDelete({ ids: this.temp.id }).then((o) => {
769   - this.loadTree();
  840 + },
  841 + filterNode(value, data) {
  842 + if (!value) return true;
  843 + return data.ClassTitle.indexOf(value) !== -1;
  844 + },
  845 + addcat() {
  846 + this.temp = { AddTime: new Date() };
  847 + this.dialogVisiblecat = true;
  848 + },
  849 + editcat() {
  850 + this.dialogTypecat = "update";
  851 + if (!this.temp.id) {
  852 + this.$message({
  853 + message: "请选择一个分类进行操作!",
  854 + type: "warning",
  855 + });
  856 + return;
  857 + }
  858 + this.dialogVisiblecat = true;
  859 + },
  860 + delcat() {
  861 + if (!this.temp.id) {
770 862 this.$message({
771   - message: "删除成功",
772   - type: "success",
  863 + message: "请选择一个分类进行操作!",
  864 + type: "warning",
  865 + });
  866 + return;
  867 + }
  868 + this.$confirm("确认删除该分类吗?", "提示", {
  869 + confirmButtonText: "确定",
  870 + cancelButtonText: "取消",
  871 + type: "warning",
  872 + }).then(() => {
  873 + UserClassDelete({ ids: this.temp.id }).then((o) => {
  874 + this.loadTree();
  875 + this.$message({
  876 + message: "删除成功",
  877 + type: "success",
  878 + });
773 879 });
774 880 });
775   - });
776   - },
777   - handleNodeClick(data, checked, indeterminate) {
778   - this.query.userClassId = data.id;
779   - this.temp = data;
780   - this.GetUser();
781   - },
  881 + },
  882 + handleNodeClick(data, checked, indeterminate) {
  883 + this.query.userClassId = data.id;
  884 + this.temp = data;
  885 + this.GetUser();
  886 + },
782 887  
783   - resetSearch() {
784   - this.query = {
785   - UserTypeEnum: 1, //0:管理员,1普通用户
786   - PageIndex: 1,
787   - PageSize: 10,
788   - keyword: "",
789   - };
790   - this.GetUser();
791   - },
792   - GetUser() {
793   - GetUserList(this.query).then((res) => {
794   - this.userList = res.data.data.rows.map((t) => {
795   - if (t.phone) {
796   - t.phone1 = t.phone.replace(t.phone.substring(3, 7), "****");
797   - }
798   - return t;
  888 + resetSearch() {
  889 + this.query = {
  890 + UserTypeEnum: 1, //0:管理员,1普通用户
  891 + PageIndex: 1,
  892 + PageSize: 10,
  893 + keyword: "",
  894 + };
  895 + this.GetUser();
  896 + },
  897 + GetUser() {
  898 + GetUserList(this.query).then((res) => {
  899 + this.userList = res.data.data.rows.map((t) => {
  900 + if (t.phone) {
  901 + t.phone1 = t.phone.replace(t.phone.substring(3, 7), "****");
  902 + }
  903 + return t;
  904 + });
  905 + this.Count = res.data.data.total;
799 906 });
800   - this.Count = res.data.data.total;
801   - });
802   - },
803   - currentchange(page) {
804   - this.query.PageIndex = page;
805   - this.GetUser();
  907 + },
  908 + currentchange(page) {
  909 + this.query.PageIndex = page;
  910 + this.GetUser();
  911 + },
806 912 },
807   - },
808   -};
  913 + };
809 914 </script>
810 915  
811 916 <style lang="scss" scoped>
812   -.seetingsDiv {
813   - display: flex;
814   - align-items: center;
815   - width: 100%;
816   - padding-top: 10px;
817   - padding-left: 10px;
818   - /* height: 60px; */
819   - background: #efefef;
820   - /* line-height: 60px; */
821   - border-radius: 5px;
822   - box-shadow: 0 0 5px #cdcdcd;
823   - justify-content: space-between;
824   -}
825   -
826   -.seetingsDiv button {
827   - height: 40px;
828   - background-color: #304156;
829   - border: 0px;
830   - margin-left: 10px;
831   - box-shadow: 0 0 5px #cdcdcd;
832   - float: none;
833   - margin-right: 10px;
834   -}
  917 + .seetingsDiv {
  918 + display: flex;
  919 + align-items: center;
  920 + width: 100%;
  921 + padding-top: 10px;
  922 + padding-left: 10px;
  923 + /* height: 60px; */
  924 + background: #efefef;
  925 + /* line-height: 60px; */
  926 + border-radius: 5px;
  927 + box-shadow: 0 0 5px #cdcdcd;
  928 + justify-content: space-between;
  929 + }
  930 +
  931 + .seetingsDiv button {
  932 + height: 40px;
  933 + background-color: #304156;
  934 + border: 0px;
  935 + margin-left: 10px;
  936 + box-shadow: 0 0 5px #cdcdcd;
  937 + float: none;
  938 + margin-right: 10px;
  939 + }
  940 +
  941 + .el-tag+.el-tag {
  942 + margin-left: 10px;
  943 + }
  944 +
  945 + .button-new-tag {
  946 + margin-left: 10px;
  947 + height: 32px;
  948 + line-height: 30px;
  949 + padding-top: 0;
  950 + padding-bottom: 0;
  951 + }
  952 +
  953 + .input-new-tag {
  954 + width: 90px;
  955 + margin-left: 10px;
  956 + vertical-align: bottom;
  957 + }
835 958 </style>
836 959 \ No newline at end of file
... ...
vue.config.js
... ... @@ -38,8 +38,8 @@ module.exports = {
38 38 },
39 39 proxy: {
40 40 '/development': {
41   - target: `http://inteview.t1j2.com/`, //后台服务地址
42   - // target:'http://localhost:8877',
  41 + // target: `http://inteview.t1j2.com/`, //后台服务地址
  42 + target:'http://localhost:8877',
43 43 changeOrigin: true,
44 44 pathRewrite: {
45 45 '^/development': ''
... ...