347617796@qq.com 4 лет назад
Родитель
Сommit
b6dc133241

+ 63 - 17
new_file.json

@@ -23,7 +23,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6InZZUjJIcXRxZTNpdUxJdXEiLCJzdWIiOjEsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.-8igGnPzm90p1kLuDPzVxllXzswNyJucqWwz1S--zWA"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6ImpQSnRha0N0MFJvaFVhR3EiLCJzdWIiOjEsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.ef-jOvx2xMervocGNmdcnN4cNlDxv6bMIgeSAO2cguc"
 	}, {
 		"employee": {
 			"id": 2,
@@ -46,7 +46,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6IjBHb2xzaUZRcTdTZUY5YkEiLCJzdWIiOjIsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.jk8PZd0LwwgN51czQqvgDDBctbu7qhbaGfAx_i14vbY"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6InRSaURjWFI4MVJON0hFOFAiLCJzdWIiOjIsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.zFSJ-gwRq6RdXgdKwLKVyM_hN2cvbWrnEjuollmnJb8"
 	}, {
 		"employee": {
 			"id": 3,
@@ -69,7 +69,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6IkYwdGJHUzBjaWVreU16OUsiLCJzdWIiOjMsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.wsMgdJCaulQPA6SyERvse-2WLXrEaB76l3A1cSMDjoE"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6Ik82YWRKbnUzOGNDT0pVQWwiLCJzdWIiOjMsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.nRUDCNHjSyi3bMhBg-o_4hw6LPBl14nouEJfaEH2v9A"
 	}, {
 		"employee": {
 			"id": 4,
@@ -92,7 +92,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6IjlLazVKUkpXMWNxY0o2QXEiLCJzdWIiOjQsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.9yCL73g94DNkNmRkGBdvvPKmYHxWWHTe-vSnZH2d7aM"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6Ik1HV1BIaTBiT2ZzWU5qSHkiLCJzdWIiOjQsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.IIpkPW2Z6lLKFER6DludMFHFDvE19vQAtGWATnVqEA0"
 	}, {
 		"employee": {
 			"id": 5,
@@ -115,7 +115,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6IlgxZkV2S3ZiUDhlN0hjVU8iLCJzdWIiOjUsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.dYr35wIix4xxRjNffoeQKfm5HvNcKaPQdCcRbzBzyFQ"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6ImxScU1XRHh5SlZGcVJwU2siLCJzdWIiOjUsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.AXtMDET3zpai3bB1a6zLNkFLJskxmDtdv-3kSrxqURA"
 	}, {
 		"employee": {
 			"id": 6,
@@ -138,7 +138,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6ImI2TGN2VkNkOUh6UEpiVk4iLCJzdWIiOjYsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.UqK6GXvp5BnSN9eGe1EUSuJQqXsns4Vxv5l0UeZXHsc"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6ImhpVDFxZXlGUW9yTWxGTmgiLCJzdWIiOjYsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ._JxCLN6S3bN8n_Yfh8C5bbnfPVb0viwGRwCCvArEgGk"
 	}, {
 		"employee": {
 			"id": 7,
@@ -161,7 +161,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6IkJhbjdVbEhSWHI4QUoxTnYiLCJzdWIiOjcsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.HUoQ5gz1BjRd5iG9KC0BUnl6ItgU3ZuRTNlCPEUV7vs"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6IlNLVXBEeXhBYmhHazV5d2kiLCJzdWIiOjcsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.eG7RjhZJUkaYHpOi2GaKgA_eMY4oqw5l1mnBiziwrL4"
 	}, {
 		"employee": {
 			"id": 8,
@@ -184,7 +184,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6ImY1TVl3R3c0ckVwNTg0dUEiLCJzdWIiOjgsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.abYu6Zs5cO4KHtawWjbhhGTHupmFDZWt6W2P8JiucgM"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6IlRGYmlhNklGaVh3NTQxVmwiLCJzdWIiOjgsInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.yKTpFduW_vy-xFZFgQg19RDA6wHgbk8AEYcadFjkPpc"
 	}, {
 		"employee": {
 			"id": 9,
@@ -207,7 +207,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6InlheGdiZ1UwbFBxeDRWUUIiLCJzdWIiOjksInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.P0MbrFA7BrSI3H9cBplvBAZ3NeWKUWt7LZSGw-xX4kA"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6IlJSWmxrdTdKTjdnbzVEY0YiLCJzdWIiOjksInBydiI6ImNhNjQ4OWQ1MGYyNDA3YTY3ODMwZTgwOTBkMDE0ODgzNTY4NTk2MmIiLCJyb2xlIjoiZW1wbG95ZWUifQ.SnImBSV0u4D9AC2BowV4OuID6zEBPjE3ZmwL7qVkPKk"
 	}, {
 		"employee": {
 			"id": 10,
@@ -230,7 +230,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6IkNGNGtFclMwZFhFc3NWQ1YiLCJzdWIiOjEwLCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.kYjX_zpZToG_jS_NFPrcC-UuDB4ST9wo4aMHD_V9ymE"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6IlBYT2RVd2UzQ2YxajhubzUiLCJzdWIiOjEwLCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.4kBPugMk6T7R6dKqy2HjhkPljyfx36aLEug41PLcCP0"
 	}, {
 		"employee": {
 			"id": 11,
@@ -253,7 +253,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6ImYyazJpSXhVRjRHT0RLWDUiLCJzdWIiOjExLCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.eaxOe-RHGAD3GMYUPM0IPz-U4XwWsbK8nmZfzVAb9q8"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6IkFGR3Q1bEhQSkdKUjMya0UiLCJzdWIiOjExLCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.n4svWWD3sG7qc9vQvHjH4dBokLmf8R58sXM4nU4uOK8"
 	}, {
 		"employee": {
 			"id": 12,
@@ -276,7 +276,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6Ik1QVXA4eGRpQ2NnV3ZNU3YiLCJzdWIiOjEyLCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.XK_7yQEuyJ1QkhOSP-oAAy9TrK8tOg0y6stkFXrF068"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6ImZmUjN6ZHVKZEFla2pnNkMiLCJzdWIiOjEyLCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.fHZaClGG9VLDe1P4O6D0o6Hl4Uq2onDluz2LAHbKh-s"
 	}, {
 		"employee": {
 			"id": 13,
@@ -299,7 +299,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6IlR6c3FGZGx0OEN0TVFNRk8iLCJzdWIiOjEzLCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.lSlzHIqD4iW0c59IsQn3VPTdALGQz2jWBGrtQDVLIXU"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6Ik5vZE1JMEl0OFpQeE9GNlgiLCJzdWIiOjEzLCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.9qs9d90gU3tTu-JSeMIGj0TV-FAsIbT0_dr8ARw8FV0"
 	}, {
 		"employee": {
 			"id": 14,
@@ -322,7 +322,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6Im5MN1RucGowdnBia2xBSGIiLCJzdWIiOjE0LCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.gKKzEhnvH8hN6wmFoC6IpuQ04nQcYfAaLx1SK-PUVD8"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6IlJKUnlzOEN1OHBPdnQ3R1YiLCJzdWIiOjE0LCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.5xFkPiOCAG0vsMGnqNyCBtxKvBfVi1DclfjJOUG1OHY"
 	}, {
 		"employee": {
 			"id": 15,
@@ -345,7 +345,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6IlBheXZtOTZ4dlBFS3ZwWlIiLCJzdWIiOjE1LCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.i_zCXMrE3Pz2qLZt4KbzqViD-fvd4ipvPJ4WRiY0CIw"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6Im1zN0c0eEh0SXgzdVRlNUgiLCJzdWIiOjE1LCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.zyi-t9J3Hh89wDAdkXjgfvbhHHPpNK1XqMkwBkH1RcY"
 	}, {
 		"employee": {
 			"id": 16,
@@ -368,7 +368,7 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6IlFieGR4ZENScnJiSU5jalQiLCJzdWIiOjE2LCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.oPMctgwa903A9n1ITKRL135T7jpjUTcXpLA68XGhRyU"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6IkM5anVKQTcxdnNWbVFYWHIiLCJzdWIiOjE2LCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.KNNr3YuaSjObPjaaO9Azm8vkpV1RHZPzICQeRjgKbFc"
 	}, {
 		"employee": {
 			"id": 17,
@@ -391,7 +391,53 @@
 			"delete_time": null,
 			"status_remark": "\u5728\u804c"
 		},
-		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzI4MTc5OSwiZXhwIjoxNTk3ODgxNzk5LCJuYmYiOjE1OTcyODE3OTksImp0aSI6IlBxWmg0WVJIMURBTjRSVlAiLCJzdWIiOjE3LCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.ddeUoqA8hNu9bLfOXL4F24o5_1wVpiGAt47-32Af8Y4"
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6Im4zVVJzUXVSWldEcmxNaVAiLCJzdWIiOjE3LCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.bjaDU1UkNmsmAdXK8uSRhCfOcdBHXO8XhreYip_BCZY"
+	}, {
+		"employee": {
+			"id": 18,
+			"account_id": 0,
+			"site_id": 2,
+			"name": "\u83ab\u4ed5\u948a",
+			"img_url": "",
+			"tel": "",
+			"status": 1,
+			"is_creator": 0,
+			"company_id": "",
+			"post": "",
+			"accedence_time": "2020-08-14",
+			"letter_index": "M",
+			"lang": "cn",
+			"try_user": 0,
+			"is_official": 0,
+			"create_time": "1597393208",
+			"update_time": "1597393208",
+			"delete_time": null,
+			"status_remark": "\u5728\u804c"
+		},
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6InRTNkdOQjNDZlpkUXJDSFEiLCJzdWIiOjE4LCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.dQZWoKcodAAhaQEZ204VbKbFxDvobIPTjIcvQjp7abc"
+	}, {
+		"employee": {
+			"id": 19,
+			"account_id": 0,
+			"site_id": 2,
+			"name": "\u7a0b\u5065",
+			"img_url": "",
+			"tel": "",
+			"status": 1,
+			"is_creator": 0,
+			"company_id": "",
+			"post": "",
+			"accedence_time": "2020-08-14",
+			"letter_index": "C",
+			"lang": "cn",
+			"try_user": 0,
+			"is_official": 0,
+			"create_time": "1597393210",
+			"update_time": "1597393210",
+			"delete_time": null,
+			"status_remark": "\u5728\u804c"
+		},
+		"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC90ZXN0LWRpbmcuZzEwNy5jb21cL2FwaVwvdGVzdCIsImlhdCI6MTU5NzcxMTcxNCwiZXhwIjoxNTk4MzExNzE0LCJuYmYiOjE1OTc3MTE3MTQsImp0aSI6IlpZWWJSb284Y2JDbVgwaloiLCJzdWIiOjE5LCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.rsltWjn13HetOjCGeaRMIPn6ttHJLHhiaDbP1Rw1LyM"
 	}],
 	"refresh_token": ""
 }

+ 3 - 4
src/api/axios.js

@@ -19,10 +19,9 @@ const service = axios.create({
 
 service.interceptors.request.use(
 	config => {
-		// if (getToken()) {
-			// config.headers['A-Token'] = getToken()
-			config.headers['A-Token'] = " eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvdGVzdC1kaW5nLmcxMDcuY29tXC9hcGlcL2RpbmdcL2xvZ2luIiwiaWF0IjoxNTk3NDc5OTgxLCJleHAiOjE1OTgwNzk5ODEsIm5iZiI6MTU5NzQ3OTk4MSwianRpIjoiVnpYeUQwRW82dU1VWFJNVSIsInN1YiI6MiwicHJ2IjoiY2E2NDg5ZDUwZjI0MDdhNjc4MzBlODA5MGQwMTQ4ODM1Njg1OTYyYiIsInJvbGUiOiJlbXBsb3llZSJ9.mfpDxWCOwNYevccHWwYu2nHc6FRjyz-2RjCbEflMXiY"
-		// }
+		if (getToken()) {
+			config.headers['A-Token'] = getToken()
+		}
 		return config
 	},
 	error => {

+ 5 - 1
src/assets/css/reset.css

@@ -188,7 +188,8 @@ table { border-collapse:collapse; border-spacing:0; }
 .all{
 	background-color: #fff;
 	border-radius: 5px;
-	height: 100%;
+	/* height: 100%; */
+	min-height:calc(100vh - 184px);
 	min-width: 800px;
 }
 .terr-left {
@@ -231,4 +232,7 @@ table { border-collapse:collapse; border-spacing:0; }
 	padding: 20px 0;
 	text-align: center;
 }
+.all-box{
+	
+}
 

+ 805 - 0
src/components/EmployeeSelector.vue

@@ -0,0 +1,805 @@
+<template>
+  <div>
+    <div class="employee_selector_box">
+      <el-row :gutter="10">
+        <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box one">
+          <div class="search-box">
+            <div class="search flex-box flex-v-ce">
+              <el-button slot="append" icon="el-icon-search" class="manager_button"></el-button>
+              <el-input v-model="keyword" placeholder="请输入内容"></el-input>
+            </div>
+          </div>
+		  <div class="flex-box flex-v-ce" style="padding: 0 10px;border-bottom: 1px solid #f1f1f1;">
+			  <div class="dept_path flex-1">
+			    <a href="javascript:void(0);" @click="back_by_index(0)">全公司</a>
+			    <a v-for="(item, index) in pid_list_arr" :key="index"  href="javascript:void(0);" @click="back_by_index(index + 1)">
+			      <i class="el-icon-arrow-right"></i>
+			      {{item.name}}
+			    </a>
+			  </div>
+			  <el-checkbox v-if="isChecKedAll" v-model="checked" @change="checkedChange" :indeterminate="indeterminate" >全选</el-checkbox>
+		  </div>
+          <el-scrollbar wrap-class="column-wrapper scrollable-items-container" :native="false" style="height: 354px;">
+            <div class="choose_left">
+              <a href="javascript:void(0)" v-for="(item,index) in dept_list" :key="index">
+                <div class="employee_cell" @click="select_dept(item)" v-show="item.pid == pid && item.name.indexOf(keyword) >= 0 && dept_not_select.indexOf(item.id) < 0">
+                  <i class="el-icon-caret-right" style=" display: inline-block;"></i>
+                  <div class="employee_checkbox" v-if="can_select_dept">
+                    <el-checkbox v-model="item.checked"></el-checkbox>
+                  </div>
+                  <div class="employee_name">
+                    {{item.name}}
+                  </div>
+                  <div v-if="can_select_dept" class="dept_child_cell">
+                    <span href="javascript:void(0);" class="child_btn" @click.stop="show_child(item)">
+                      | 下级
+                    </span>
+                  </div>
+                  <div class="employee_cell_clear"></div>
+                </div>
+              </a>
+              <div class="persons_box" style="padding-top:4px;">
+                <a class="employee_cell_a" href="javascript:void(0)" v-for="(item,index) in list" :key="index" v-show="item.show">
+                  <div class="employee_cell flex-box flex-v-ce" v-if="can_select_employee" @click.prevent.stop="select_employee(item)" v-show="employee_not_select.indexOf(item.id) < 0">
+					
+					<div class="employee_checkbox">
+                      <el-checkbox v-model="item.checked"></el-checkbox>
+                    </div>
+					<userImage :user_name="item.name" :img_url="item.img_url" width="30px" height="30px"></userImage>
+                    <div class="employee_name">
+                      {{item.name}}
+                    </div>
+                    <div class="employee_cell_clear"></div>
+					
+                  </div>
+                </a>
+              </div>
+            </div>
+          </el-scrollbar>
+        </el-col>
+        <el-col :xs="2" :sm="2" :md="2" :lg="2" :xl="2" class="col-line"><span style="opacity: 0;">空</span></el-col>
+        <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box">
+          <div class="option-box flex-box flex-v-ce">
+            <div class="fontColorF flex-1" v-show="multi">已选择{{employee_selected_list.length}}个员工</div>
+            <el-button type="type" @click="clear_data">清空</el-button>
+          </div>
+          <el-scrollbar wrap-class="column-wrapper scrollable-items-container" :native="false" style="height: 400px;">
+            <div class="choose_right">
+              <div class="employee_cell flex-box flex-v-ce" v-for="(item,index) in dept_selected_list" :key="index">
+                <div class="employee_name">
+                  {{item.dept_name}}
+                </div>
+                <div class="employee_delete">
+                  <el-button type="default" size="mini" @click="dept_cancel(item)" icon="el-icon-close" circle></el-button>
+                </div>
+                <div class="employee_cell_clear"></div>
+              </div>
+
+              <div class="employee_cell" v-for="(item,index) in employee_selected_list" :key="index">
+				 <userImage :user_name="item.name" :img_url="item.img_url" width="30px" height="30px"></userImage>
+                <div class="employee_name">
+                  {{item.name}}
+                </div>
+                <div class="employee_delete">
+                  <el-button type="default" size="mini" @click="employee_cancel(item,true)" icon="el-icon-close" circle></el-button>
+                </div>
+                <div class="employee_cell_clear"></div>
+              </div>
+            </div>
+          </el-scrollbar>
+        </el-col>
+      </el-row>
+    </div>
+  </div>
+</template>
+
+<script>
+
+  export default {
+    props: {
+      append_body: {
+        type: Boolean,
+        default: false
+      },
+      visible: {
+        type: Boolean,
+        default: false
+      },
+      can_select_dept: {
+        type: Boolean,
+        default: true
+      },
+      can_select_employee: {
+        type: Boolean,
+        default: true
+      },
+      employee_not_select: {
+        type: Array,
+        default: () => {
+          return []
+        }
+      },
+      dept_not_select: {
+        type: Array,
+        default: () => {
+          return []
+        }
+      },
+      selected: {
+        type: Object,
+        default: () => {
+          return {
+            employee: [],
+            dept: []
+          }
+        }
+      },
+      multi: {
+        type: Boolean,
+        default: true
+      },
+      dept_multi: {
+        type: Boolean,
+        default: true
+      },
+      employee_list: {
+        type: Array,
+        default: () => {
+          return []
+        }
+      },
+      close_clear_data: {
+        type: Boolean,
+        default: true
+      },
+      max: {
+        type: Number,
+        default: 0
+      },
+      user_no_select:{
+        type: Boolean,
+        default: false
+      },
+      isChecKedAll:{
+        type: Boolean,
+        default: true
+      }
+    },
+    name: "EmployeeSelector",
+    data() {
+      let selected = JSON.parse(JSON.stringify(this.selected))
+      let user_no_select = JSON.parse(JSON.stringify(this.user_no_select))
+      return {
+        dialogVisible: true,
+        employee_selected_list: selected.employee,
+        dept_selected_list: selected.dept,
+        employee_selected: [],
+        dept_selected: [],
+        com_height: '100%',
+        company_info: {},
+        actions_show: false,
+        dept_name: '',
+        dept_id: 0,
+        list: [],
+        dept_list: [],
+        keyword: '',
+        owner_id: 0,
+        user_info: this.$store.getters.user_info,
+        pid: 0,
+        pid_list: [],
+        selected_box_width: '0',
+        pid_list_arr: [],
+        checked: false,
+        indeterminate: false,
+        not_user: user_no_select
+      }
+    },
+    watch: {
+      max(val) {
+        this.set_button_width()
+      },
+      selected(val) {
+        let selected = JSON.parse(JSON.stringify(val))
+        this.employee_selected = []
+        this.dept_selected = []
+        this.employee_selected_list = selected.employee
+        this.dept_selected_list = selected.dept
+        for (let i in selected.employee) {
+          this.employee_selected.push(selected.employee[i].id)
+        }
+        for (let i in selected.dept) {
+          this.dept_selected.push(selected.dept[i].dept_id)
+        }
+        this.set_button_width()
+      },
+      visible(val) {
+        setTimeout(() => {
+          if (this.$route.query.pid) {
+            this.pid = this.$route.query.pid
+          }
+          this.get_user_list();
+          this.get_dept_list()
+        }, 200)
+        // }
+        this.set_button_width()
+      },
+      employee_selected_list() {
+        let l = this.employee_selected_list.length + this.dept_selected_list.length
+        let width = 0.9 * l;
+        this.selected_box_width = width + 'rem'
+        this.set_button_width()
+      },
+      dept_selected_list() {
+        let l = this.employee_selected_list.length + this.dept_selected_list.length
+        let width = 0.9 * l;
+        this.selected_box_width = width + 'rem'
+        this.set_button_width()
+      },
+      //搜索
+      keyword() {
+        this.get_user_list(function() {
+
+        })
+      }
+    },
+    methods: {
+      checkedChange(val){
+        if (val) {
+          for (let i in this.list) {
+            this.$set(this.list[i], 'checked', true)
+          }
+          this.$nextTick(() => {
+            let employeeSelectedList = JSON.parse(JSON.stringify(this.employee_selected_list))
+            let employeeSelectedIds = [], total = 0
+            employeeSelectedList.forEach(element => {
+              employeeSelectedIds.push(element.id)
+            });
+            for (const i in this.list) {
+              if (employeeSelectedIds.includes(this.list[i].id)) {
+                total += 1
+              }else{
+                this.employee_selected_list.push(this.list[i])
+              }
+            }
+            // 未处理好 20200713
+            this.lsit.length == total?this.indeterminate = true:this.indeterminate = false
+          })
+        }else{
+          this.clear_data()
+        }
+      },
+      close_before(done) {
+        this.close()
+      },
+      set_button_width() {
+
+      },
+      back() {
+        this.pid = this.pid_list[this.pid_list.length - 1]
+        this.pid_list.splice(this.pid_list.length - 1)
+        this.pid_list_arr.splice(this.pid_list_arr.length - 1)
+        this.get_user_list();
+      },
+      back_by_index(index) {
+        if (index == this.pid_list.length) {
+          return false
+        }
+        this.pid = this.pid_list[index]
+        this.pid_list.splice(index, 100)
+        this.pid_list_arr.splice(index, 100)
+        this.get_user_list(function() {
+
+        })
+      },
+      show_child(item) {
+        this.pid_list.push(this.pid)
+        this.pid_list_arr.push(item)
+        this.pid = item.id
+        this.get_user_list(function() {
+
+        })
+      },
+      //添加或移除已添加的员工
+      employee_cancel(item) {
+        this.employee_selected_list.map((arr,index)=>{
+            if(arr.id==item.id){
+              this.employee_selected_list.splice(index,1);
+            }
+        })
+        this.list.map((arr,index)=>{
+            if(arr.id==item.id){
+             this.$set(arr, 'checked', false)
+            }
+        })
+      },
+      dept_cancel(item) {
+        this.dept_selected.splice(this.dept_selected.indexOf(item.id), 1)
+        let delete_index = -1
+        for (let i in this.dept_selected_list) {
+          if (this.dept_selected.indexOf(this.dept_selected_list[i].id) < 0) {
+            delete_index = i
+          }
+        }
+        if (delete_index >= 0) {
+          this.dept_selected_list.splice(delete_index, 1)
+          for (let i in this.dept_list) {
+            if (this.dept_list[i].dept_id == item.id) {
+              this.$set(this.dept_list[i], 'checked', false)
+            }
+          }
+        }
+      },
+      //选择员工
+      select_employee(item) {
+        if (this.employee_not_select.indexOf(item.id) >= 0) {
+          return false
+        }
+        if (item.checked) {
+          item.checked = false
+          this.employee_cancel(item)
+        } else {
+          if (!this.multi) {
+            this.employee_selected = []
+            this.employee_selected_list = []
+            for (let i in this.list) {
+              this.$set(this.list[i], 'checked', false)
+            }
+          }
+          if (this.max > 0 && this.employee_selected_list.length == this.max && this.multi) {
+            this.$message.error('最多只能选择' + this.max + '人')
+            return false
+          }
+          this.employee_selected.push(item.id)
+          this.employee_selected_list.push({
+            id: item.id,
+            name: item.name,
+            img_url: item.img_url
+          })
+          item.checked = true
+        }
+      },
+
+      select_dept(item) {
+        if (!this.can_select_dept) {
+          this.show_child(item)
+          return false
+        }
+        if (item.checked) {
+          item.checked = false
+          this.dept_cancel(item)
+        } else {
+          if (!this.dept_multi) {
+            this.dept_selected = []
+            this.dept_selected_list = []
+            for (let i in this.dept_list) {
+              this.$set(this.dept_list[i], 'checked', false)
+            }
+          }
+          this.dept_selected.push(item.id)
+          this.dept_selected_list.push({
+            dept_id: item.id,
+            dept_name: item.name,
+            avatar: '@/assets/image/e66f.jpg'
+          })
+          item.checked = true
+        }
+
+      },
+      clear_data() {
+        this.employee_selected = []
+        this.employee_selected_list = []
+        this.dept_selected = []
+        this.dept_selected_list = []
+        this.checked = false
+        for (let i in this.list) {
+          this.$set(this.list[i], 'checked', false)
+        }
+        for (let i in this.dept_list) {
+          this.$set(this.dept_list[i], 'checked', false)
+        }
+      },
+
+      close() {
+        //this.visible = false
+        this.$emit('update:visible', false)
+        this.$emit('cancel')
+        if (this.close_clear_data) {
+          this.employee_selected = []
+          this.employee_selected_list = []
+          this.dept_selected = []
+          this.dept_selected_list = []
+          for (let i in this.list) {
+            this.$set(this.list[i], 'checked', false)
+          }
+          for (let i in this.dept_list) {
+            this.$set(this.dept_list[i], 'checked', false)
+          }
+        }
+
+      },
+      confirm() {
+        this.$emit('confirm', {
+          employee: this.employee_selected_list,
+          dept: this.dept_selected_list
+        })
+        this.close()
+      },
+      //获取部门列表
+      get_dept_list() {
+        if (this.employee_list.length > 0) {
+          return
+        }
+
+        this.$axios.get('/api/department/index', {
+          params: {
+            pid: this.pid,
+            keyword: this.keyword
+          }
+        }).then((res) => {
+          for (let i in res.data.data.list) {
+            res.data.data.list[i]['checked'] = false
+            if (this.dept_selected.indexOf(res.data.data.list[i].id) >= 0) {
+              res.data.data.list[i]['checked'] = true
+            }
+          }
+          this.dept_list = res.data.data.list
+          this.owner_id = res.data.data.owner_id
+          this.company_info = res.data.data.company_info
+          if (res.data.data.dept_info == null) {
+            this.dept_name = JSON.parse(JSON.stringify(res.data.data.company_info.name))
+            this.dept_id = 0
+          } else {
+            this.dept_name = JSON.parse(JSON.stringify(res.data.data.dept_info.name))
+            this.dept_id = res.data.data.dept_info.id
+          }
+        }).catch((e) => {
+
+        })
+      },
+     //获取员工详情
+      get_user_list() {
+        var _this=this;
+        var employee_selected_list=this.employee_selected_list;
+        if (this.employee_list.length > 0) {
+          let list = this.employee_list
+          for (let i in list) {
+            list[i]['checked'] = false
+            if (this.employee_selected.indexOf(list[i].id) >= 0) {
+              list[i]['checked'] = true
+            }
+          }
+          this.list = list.sort((a, b) => {
+            return a.letter_index.charCodeAt(0) - b.letter_index.charCodeAt(0)
+          })
+          return false
+        }
+        this.list = []
+        this.$axios.get('/api/employee/index', {
+          params: {
+            dept_id: this.pid,//员工ID
+            keywords: this.keyword,//搜索关键字
+            page: 0,
+            page_size: 2000
+          }
+        }).then((res) => {
+          var employee=res.data.data.list||[];
+          employee.map((item)=>{
+            if (this.not_user && item.is_creator == 1){
+              item['show'] = false;
+            }else{
+              item['show'] = true;
+            }
+            item['checked'] = false;
+            for(var i in employee_selected_list){//判断传进来的员工是否是员工集合里的,是就设为已点击状态
+              if(employee_selected_list[i].id==item.id){
+                item['checked'] = true;
+              }
+            }
+          })
+          if (employee.length == employee_selected_list.length) {
+            this.checked = true
+          }
+          _this.list = employee
+        }).catch((e) => {
+          _this.$message.error(e.data.msg);
+        })
+      }
+    },
+    created() {
+      if (document.documentElement.style.height) {
+        this.com_height = document.documentElement.style.height
+      }
+      setTimeout(() => {
+        if (this.$route.query.pid) {
+          this.pid = this.$route.query.pid
+        }
+        this.get_user_list();
+        this.get_dept_list()
+      }, 200)
+
+    }
+  }
+</script>
+
+<style scoped>
+	a{
+		cursor: pointer;
+		    color: inherit;
+		    text-decoration: none;
+	}
+  .employee_selector_box {
+    width: 600px;
+    padding: 24px;
+  }
+
+  /* 搜索框 */
+  .employee_selector_box .search {
+    border: 1px #C0C4CC solid;
+	width: 80%;
+	border-radius: 25px;
+	margin: 0 auto;
+  }
+
+  .employee_selector_box .search-box button {
+    display: inline-block;
+    vertical-align: middle;
+    margin-left: 10px;
+    width: auto;
+    padding: 0;
+    background: none;
+    border-radius: 0px;
+    border: none;
+  }
+
+  .employee_selector_box .search-box /deep/ .el-input {
+    display: inline-block;
+    width: 84%;
+    padding: 0 24px 0 6px;
+    background: none;
+    border-radius: 0px;
+    border: none;
+  }
+
+  .employee_selector_box .search-box /deep/ .el-input input {
+    padding: 0;
+    line-height: 34px;
+    border: none;
+  }
+
+  /* /搜索框 */
+
+  /* 左边框 */
+  .employee_selector_box .choose_left {
+    padding: 8px 10px 8px 10px;
+  }
+
+  .employee_selector_box .choose_left .employee_cell {
+    border-bottom: 1px #f8f8f8 solid;
+  }
+
+  .employee_selector_box .choose_left .employee_cell_a .employee_cell {
+    border-bottom: none;
+  }
+
+  .employee_selector_box .choose_left .employee_checkbox {
+    padding-left: 8px;
+  }
+
+  .employee_selector_box .choose_left .employee_img_url {
+    padding-left: 8px;
+  }
+
+  .employee_selector_box .choose_left .employee_name {
+    padding-left: 8px;
+  }
+
+  .employee_selector_box /deep/ .el-scrollbar__thumb {
+    width: 2px;
+    margin: 15px 0 0 6px;
+    background: #409EFF;
+  }
+
+  /* 左边框 */
+
+  /* 右边距 */
+  .employee_selector_box .option-box {
+    padding: 14px;
+  }
+
+  .employee_selector_box .choose_right {
+    padding: 8px 10px;
+  }
+
+  .employee_selector_box .choose_right .employee_delete .el-button {
+    transform: scale(0.5);
+    background: #C0C4CC;
+  }
+
+  .employee_selector_box .choose_right .employee_delete .el-button /deep/ .el-icon-close {
+    color: #fff;
+  }
+
+  .employee_selector_box .choose_right .employee_delete .el-button:active {
+    background: #409EFF;
+  }
+
+  .employee_selector_box .choose_right .employee_delete .el-button:active /deep/ .el-icon-close {
+    color: #FFF;
+  }
+
+  .employee_selector_box .choose_right .employee_cell .employee_name {
+    padding-left: 8px;
+  }
+
+  .employee_selector_box .choose_right .employee_cell .employee_img_url {
+    padding-left: 8px;
+  }
+
+  /* 右边距 */
+
+  .employee_selector_box /deep/ .employee_cell {
+    padding: 8px 0;
+  }
+
+  .employee_selector_box /deep/ .employee_cell:hover {
+    background: #ecf5ff;
+  }
+
+  .employee_cell {
+    display: -webkit-inline-box;
+    cursor: pointer;
+    width: 100%;
+    color: #606266;
+    padding: 8px 0;
+    background-color: transparent;
+  }
+
+  .employee_cell .employee_cell_clear {
+    clear: both;
+  }
+
+  .employee_cell .employee_img_url {
+    display: table-cell;
+    vertical-align: middle;
+    width: 30px;
+    padding-left: 0px;
+  }
+
+  .employee_cell .employee_img_url img {
+    width: 24px;
+    height: 24px;
+    border-radius: 50%;
+  }
+
+  .employee_cell .employee_checkbox {
+    display: table-cell;
+    vertical-align: middle;
+    width: 30px;
+    text-align: center;
+  }
+
+  .employee_cell .employee_name {
+    display: table-cell;
+    vertical-align: middle;
+    color: #606266;
+  }
+
+  .employee_delete {
+    display: table-cell;
+    text-align: right;
+    padding-right: 0px;
+  }
+
+  .employee_cell_a {
+    display: block;
+  }
+
+  .employee_cell_a:hover {
+    background-color: #ecf5ff;
+    border-radius: 4px;
+  }
+
+  .dept_child_cell {
+    display: table-cell;
+    vertical-align: middle;
+  }
+
+  .dept_child_cell span {
+    float: right;
+    padding-right: 8px;
+  }
+
+  .dept_child_cell span:hover {
+    color: #1c1c1c;
+  }
+
+  .dept_child_cell span:active {
+    color: #1c1c1c;
+  }
+
+  .scroller-box {
+    height: 440px;
+    padding-right: 0px !important;
+    background-color: #fdfdfd;
+    border: 1px solid #eee;
+    border-radius: 4px;
+    overflow: hidden;
+  }
+  /* .scroller-box.one{
+    height: 440px;
+  } */
+
+  .col-line {
+    position: relative;
+    height: 400px;
+  }
+
+  .col-line:before {
+    content: " ";
+    width: 1px;
+    height: 400px;
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 50%;
+    background-color: #eee;
+  }
+
+  .search-box {
+    background-color: #fff;
+    padding: 14px 5px;
+    border-bottom: 1px solid #eee;
+    margin: 0 -5px;
+  }
+
+  .option-box {
+    padding: 5px;
+    background-color: #fff;
+    border-bottom: 1px solid #eee;
+    margin: 0 -5px;
+  }
+
+  .child_btn {
+    color: #409EFF;
+  }
+  .dept_path{
+    margin: 10px 0;
+    display: block;
+    white-space: nowrap;
+    overflow: auto;
+  }
+
+  /*滚动条的宽度*/
+
+  .dept_path::-webkit-scrollbar {
+    width:5px;
+    height:5px;
+  }
+
+  /*外层轨道。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果*/
+
+  .dept_path::-webkit-scrollbar-track {
+    width: 6px;
+    background-color:#fff0;
+    -webkit-border-radius: 2em;
+    -moz-border-radius: 2em;
+    border-radius:2em;
+  }
+
+  /*滚动条的设置*/
+
+  .dept_path::-webkit-scrollbar-thumb {
+    background-color:#fff0;
+    background-clip:padding-box;
+    min-height:28px;
+    -webkit-border-radius: 2em;
+    -moz-border-radius: 2em;
+    border-radius:2em;
+  }
+  /*滚动条移上去的背景*/
+
+  .dept_path:hover::-webkit-scrollbar-thumb{
+    background-color:rgba(144,147,153,.3);
+  }
+
+</style>

+ 46 - 0
src/components/noData.vue

@@ -0,0 +1,46 @@
+<template>
+    <div class="flex-box-v flex-v-zhu">
+      <img src="../assets/image/nodata.png" style="width: 266px;height: 182px;margin: 30px auto;">
+      <div class="fontColorF" v-if="!isSolt">{{content}}</div>
+        <slot></slot>
+    </div>
+</template>
+<!-- content:为提示内容  -->
+<!-- imgUrl:为空值显示图片  -->
+<!-- isSolt:是否显示自定义内容  -->
+<script>
+  export default {
+    name:'noData',
+    props:{
+      content:{
+        type:String,
+        default:'暂无数据'
+      },
+      isSolt:{
+        type:Boolean,
+        default:false
+      }
+    },
+    data(){
+      return{
+
+      }
+    },
+    methods:{
+
+    }
+  }
+</script>
+
+<style scoped="scoped">
+  .green{
+     color: #67c23a;
+  }
+  .blue{
+    color:#26a2ff;
+    cursor: pointer;
+  }
+  .fontColorF{
+    color:#909399;
+  }
+</style>

+ 1 - 6
src/router/index.js

@@ -8,13 +8,8 @@ Vue.use(VueRouter)
     path: '/',
     name: '首页',
     component: () => import('@/index'),
-	redirect: "guide",
+	redirect: "rule",
 	children:[
-		{
-		  path: '/guide',
-		  name: '设置向导',
-		  component: () => import('@/views/guide.vue')
-		},
 		{
 		  path: '/rule',
 		  name: '积分规则',

+ 1 - 3
src/views/framework.vue

@@ -1,5 +1,5 @@
 <template>
-	<div>
+	<div class="all-box">
 		<!-- 头部提示 -->
 		<div class="top-msg margin-bottom">
 			<div>当前组织架构和角色同过钉钉同步,上次同步时间
@@ -193,9 +193,7 @@ export default {
 		getEmployee() {
 			this.tableToading = true;
 			this.$axios.get('api/employee/index', { params: { dept_id: this.dept_id, keywords: this.keywords, page: this.page, page_size: this.perPage } }).then(res => {
-				
 				this.tableToading = false;
-				console.log(res.data.data.pageInfo);
 				this.total = res.data.data.pageInfo.count;
 				this.userList = res.data.data.list;
 			});

+ 0 - 27
src/views/guide.vue

@@ -1,27 +0,0 @@
-<template>
-	<div class="all">
-		向导
-	</div>
-</template>
-
-<script>
-</script>
-
-<style>
-	export default {
-		data() {
-			return {
-
-			};
-		},
-		created() {
-
-		},
-		mounted() {
-
-		},
-		methods:{
-			
-		}
-	};
-</style>

+ 457 - 102
src/views/jurisdiction.vue

@@ -1,5 +1,5 @@
 <template>
-	<div>
+	<div  class="all-box">
 		<el-alert v-if="tips_show" class="diy-tip" title="温馨提示:" type="warning" @close="tips_close" description show-icon>
 			<p>功道云积分系统共有5种角色,不同角色拥有不同的权限</p>
 		</el-alert>
@@ -7,7 +7,14 @@
 			<div class="flex-box">
 				<div class="terr-left">
 					<el-menu default-active="0" class="el-menu-vertical-demo" style="border: none" v-loading="role_loading">
-						<el-menu-item :index="index.toString()" v-for="(item, index) in role_list" :key="index" @click="open_right(item)" v-show="item.code !== 'employee'">
+						<el-menu-item
+							style="height: 47px;line-height: 47px;"
+							:index="index.toString()"
+							v-for="(item, index) in role_list"
+							:key="index"
+							@click="open_right(item)"
+							v-show="item.code !== 'employee'"
+						>
 							<i class="el-icon-s-custom"></i>
 							<span slot="title">{{ item.name }}</span>
 						</el-menu-item>
@@ -15,45 +22,52 @@
 				</div>
 				<div class="terr-right border-right flex-1">
 					<div class="margin-bottom">
-						<div class="name">部门管理者</div>
-						<div class="user_text fontColorF">部门管理员一般为部门/团队经理、主管、组长,可管理一部分人员</div>
+						<div class="name">{{ item_info.name }}</div>
+						<div class="user_text fontColorF" v-if="item_info.code == 'creator'">创始人为默认角色,拥有所有功能权限,该角色不可改</div>
+						<div class="user_text fontColorF" v-if="item_info.code == 'admin'">公司管理员一般为合伙人、股东等高级管理人员,可管理多个部门和人员</div>
+						<div class="user_text fontColorF" v-if="item_info.code == 'point_manager'">积分专员一般为人事、行政等管理督办人员,可管理多个部门和人员</div>
+						<div class="user_text fontColorF" v-if="item_info.code == 'dept_manager'">部门管理员一般为部门/团队经理、主管、组长,可管理一部分人员</div>
+						<div class="user_text fontColorF" v-if="item_info.code == 'employee'">员工为默认角色,每个人都拥有员工角色的功能权限,该角色不可修改</div>
 					</div>
-					<div class="flex-box btns flex-v-ce">
-						<el-button size="medium" @click="del_item" type="danger">删除</el-button>
-						<el-button size="medium" @click="add_item" type="primary">添加</el-button>
+					<div class="flex-box btns flex-v-ce margin-bottom">
+						<el-button size="small" v-show="item_info.code != 'creator' && table_list.length > 0" @click="del_item" type="danger">删除</el-button>
+						<el-button size="small" v-show="item_info.code != 'creator'" @click="add_item" type="primary">添加</el-button>
 					</div>
-					<el-table :data="table_list" v-show="item_info.code == 'creator'">
-						<el-table-column prop="name" label="姓名" fixed>
+
+					<el-table :data="table_list" v-if="item_info.code == 'creator'||item_info.code == 'employee'" v-loading="table_loading">
+						<el-table-column prop="name" label="姓名">
 							<template slot-scope="scope">
-								<userImage class="fl" width="50px" height="50px" :id="scope.row.id" :user_name="scope.row.name"></userImage>
-								<span style="margin-left: 10px; line-height: 50px;">{{ scope.row.name }}</span>
+								<div class="flex-box flex-v-ce">
+									<userImage class="fl" width="50px" height="50px" :img_url="scope.row.img_url" :user_name="scope.row.name"></userImage>
+									<span style="margin-left: 10px; line-height: 50px;">{{ scope.row.name }}</span>
+								</div>
 							</template>
 						</el-table-column>
 						<el-table-column prop="dept" label="部门" v-if="item_info.code != 'creator'"></el-table-column>
+						<template slot="empty">
+							<noData :isSolt="true">
+								<template v-slot:default>
+									<div style="position: inherit;">
+										还没有{{ item_info.name }},
+										<span style="color:#26A2FF;cursor:pointer;" @click="add_item">去添加>></span>
+									</div>
+								</template>
+							</noData>
+						</template>
 					</el-table>
 
-					<el-row :gutter="30" justify="center">
-						<el-col :span="24" style="text-align: center;">
-							<p><img src="/static/images/nodata_default.png" width="200px" alt="" /></p>
-							还没有{{ item_info.name }},
-							<span style="color:#26A2FF;" @click="add_employee_show = true">去添加>></span>
-						</el-col>
-					</el-row>
-
-					<el-table
-						:data="table_list" fit
-						v-show="item_info.code !== 'creator' && item_info.code !== 'employee' && table_list !== null && table_list.length !== 0"
-						@selection-change="handleSelectionChange">
-						<el-table-column width="55" fixed>
+					<el-table :data="table_list" fit v-else  @selection-change="handleSelectionChange" v-loading="table_loading">
+						<el-table-column width="40" fixed>
 							<template slot-scope="scope">
-								<el-radio v-model="radio" :label="scope.row.id"></el-radio>
+								<el-radio v-model="radioVal" :label="scope.row.id"></el-radio>
 							</template>
 						</el-table-column>
-
-						<el-table-column prop="name" label="姓名" width="170" fixed>
+						<el-table-column prop="name" label="姓名" width="150" fixed>
 							<template slot-scope="scope">
-								<userImage class="fl" width="50px" height="50px" :id="scope.row.id" :user_name="scope.row.name"></userImage>
-								<span style="margin-left: 10px; line-height: 50px;">{{ scope.row.name }}</span>
+								<div class="flex-box flex-v-ce">
+									<userImage class="fl" width="50px" height="50px" :img_url="scope.row.img_url" :user_name="scope.row.name"></userImage>
+									<span style="margin-left: 10px; line-height: 50px;">{{ scope.row.name }}</span>
+								</div>
 							</template>
 						</el-table-column>
 						<el-table-column prop="dept" label="部门"></el-table-column>
@@ -76,7 +90,6 @@
 								</div>
 							</template>
 						</el-table-column>
-
 						<el-table-column>
 							<template slot="header" slot-scope="scope">
 								<span>积分权限</span>
@@ -91,31 +104,21 @@
 							</template>
 							<el-table-column label="A分权限">
 								<template slot-scope="scope">
-									<div
-										@click="open_integral_limit(scope.row)"
-										v-show="scope.row.point_limit_obj.AF == 0"
-										class="cursor_pointer"
-										style="text-decoration:underline"
-									>
-										未设置
-									</div>
-									<div @click="open_integral_limit(scope.row)" v-show="scope.row.point_limit_obj.AF != 0" class="cursor_pointer">
-										{{ scope.row.point_limit_obj.AF }}
+									<div @click="open_integral_limit(scope.row)" class="cursor_pointer">
+										<div v-for="(item, index) in scope.row.point_limit" :key="index" v-show="item.name == 'A分'" class="cursor_pointer">
+											<span v-if="item.point != 0">{{item.point}}</span>
+											<span v-else style="text-decoration:underline">未设置</span>
+										</div>
 									</div>
 								</template>
 							</el-table-column>
 							<el-table-column label="B分权限">
 								<template slot-scope="scope">
-									<div
-										@click="open_integral_limit(scope.row)"
-										v-show="scope.row.point_limit_obj.BF == 0"
-										class="cursor_pointer"
-										style="text-decoration:underline"
-									>
-										未设置
-									</div>
-									<div @click="open_integral_limit(scope.row)" v-show="scope.row.point_limit_obj.BF != 0" class="cursor_pointer">
-										{{ scope.row.point_limit_obj.BF }}
+									<div @click="open_integral_limit(scope.row)" class="cursor_pointer">
+										<div v-for="(item, index) in scope.row.point_limit" :key="index" v-show="item.name == 'B分'" class="cursor_pointer">
+											<span v-if="item.point != 0">{{ item.point}}</span>
+											<span v-else style="text-decoration:underline">未设置</span>
+										</div>
 									</div>
 								</template>
 							</el-table-column>
@@ -129,7 +132,6 @@
 								</template>
 							</el-table-column>
 						</el-table-column>
-
 						<el-table-column>
 							<template slot="header" slot-scope="scope">
 								<span>奖扣目标</span>
@@ -226,59 +228,403 @@
 								</template>
 							</el-table-column>
 						</el-table-column>
+						<template slot="empty">
+							<noData :isSolt="true">
+								<template v-slot:default>
+									<div>还没有{{ item_info.name }},<span style="color:#26A2FF;cursor:pointer;" @click="add_item">去添加>></span></div>
+								</template>
+							</noData>
+						</template>
 					</el-table>
 				</div>
 			</div>
 		</div>
+		<el-dialog title="添加人员" :visible.sync="add_employee_show" :before-close="publicClose" width="700px" top="5vh">
+			<EmployeeSelector
+				v-if="add_employee_form"
+				ref="Employee"
+				:user_no_select="true"
+				:can_select_dept="false"
+				:multi="false"
+				:visible.sync="add_employee_show"
+				@confirm="add_employee_confirm"
+			></EmployeeSelector>
+			<span slot="footer">
+				<el-button @click="publicClose()">取消</el-button>
+				<el-button type="primary" @click="sub_add_employee">完成</el-button>
+			</span>
+		</el-dialog>
+		<el-dialog
+		  title="设置积分权限"
+		  :visible.sync="integral_limit_show"
+		  :close-on-click-modal="false"
+		  width="700px">
+		  <el-form label-width="100px" :model="integral_limit_form" ref="integral_limit_form" v-loading="integral_limit_loading">
+		    <span v-for="(item,index) in integral_limit_form.point_limit" :key="index" v-show="item.pt_id !== 1">
+		      <el-form-item :label="item.name+'权限'" :rules="[{required: true, message: '请输入', trigger: 'blur'}]">
+		        <el-input v-model="item.point" type="Number"></el-input>
+		      </el-form-item>
+		    </span>
+		    <el-form-item label="奖分上限" :rules="[{required: true, message: '请输入', trigger: 'blur'}]">
+		      <el-input v-model="integral_limit_form.entry_limit" type="Number"></el-input>
+		    </el-form-item>
+		    <el-form-item style="text-align: right; margin-bottom: 0">
+		      <el-button @click="integral_limit_show = false">取消</el-button>
+		      <el-button type="primary" @click="sub_employee_limit">确定</el-button>
+		    </el-form-item>
+		  </el-form>
+		</el-dialog>
+		<el-dialog
+		  title="设置管理范围"
+		  :visible.sync="management_scope_show"
+		  :before-close="publicClose"
+		  top="5vh"
+		  width="700px">
+		  <EmployeeSelector v-if="management_scope_show" ref="Employee" :employee_not_select="employee_not_select" :max='add_employee_max' :selected="management_scope_arr" :can_select_dept="false"  @confirm="management_scope_confirm"></EmployeeSelector>
+		  <span slot="footer">
+		    <el-button @click="publicClose()">取消</el-button>
+		    <el-button type="primary" @click="sub_management_scope">完成</el-button>
+		  </span>
+		</el-dialog>
+		<el-dialog
+		  title="B分奖扣任务"
+		  :visible.sync="bonus_deducted_show"
+		  width="600px">
+		  <el-form :model="integral_limit_form" ref="integral_limit_form" :rules="integral_limit_rules" label-width="130px" v-loading="bonus_deducted_loading">
+		    <span v-for="(item,index) in integral_limit_form.reward_task_monthly" :key="index" v-show="item.name == 'B分'">
+		      <el-form-item>
+		        <template slot="label">
+		          <span>月奖分任务</span>
+		          <el-tooltip placement="top">
+		            <div slot="content" style="width: 300px;">对奖分分值作任务要求。未达分值任务的按差额扣分<br />举例说明:奖分任务1000,实际奖分980(差额20分),则该执行人员将被扣20分。反之,如实际奖分达到或超出1000分,不对执行人员实行扣分</div>
+		            <span class="tips">?</span>
+		          </el-tooltip>
+		        </template>
+		        <el-input v-model="item.point" type="Number" placeholder="请输入数值"></el-input>
+		      </el-form-item>
+		    </span>
+		    <span v-for="(item,index) in integral_limit_form.deduct_task_monthly" :key="item.name" v-show="item.name == 'B分'">
+		      <el-form-item style="margin-bottom: 0;">
+		        <template slot="label">
+		          <span>月扣分任务</span>
+		          <el-tooltip placement="top">
+		            <div slot="content" style="width: 300px;">对扣分分值作任务要求。未达分值任务的按差额扣分<br />举例说明:扣分任务100,实际扣分80(差额20分),则该执行人员将被扣20分。反之,如实际扣分达到或超出100分,不对执行人员实行扣分</div>
+		            <span class="tips">?</span>
+		          </el-tooltip>
+		        </template>
+		        <el-input v-model="item.point" type="Number" placeholder="请输入数值"></el-input>
+		      </el-form-item>
+		    </span>
+		    <el-form-item>
+		      <div style="font-size: 12px; color: #909399; line-height: 20px;">
+		        设置后,奖分与扣分目标其中有一项未达标,系统将自动扣除差额分值;<br />例如,A设置了月奖分目标100和月扣分目标100,到了月底,奖了80和扣了30,那该管理者将被扣90B分。
+		      </div>
+		    </el-form-item>
+		
+		    <el-form-item prop="exec_count">
+		      <template slot="label">
+		        <span>月奖扣次数</span>
+		        <el-tooltip placement="top">
+		          <div slot="content" style="width: 300px;">对奖分和扣分的执行次数作任务要求<br />举例说明:奖扣次数任务100,实际执行次数95(差5次),假如每少一次扣5分,则该执行人员将被扣5*5=25分。反之,如果任务达标,不对执行人员实行扣分</div>
+		          <span class="tips">?</span>
+		        </el-tooltip>
+		      </template>
+		
+		      <el-input v-model="integral_limit_form.exec_count" type="Number" placeholder="请输入数值"></el-input>
+		    </el-form-item>
+		    <el-form-item prop="exec_count_point">
+		      <template slot="label">
+		        <span>每少一次奖扣</span>
+		        <el-tooltip placement="top">
+		          <div slot="content" style="width: 300px;">扣x分(x为输入框)<br />奖扣次数未达任务要求的,每少一次扣对应分值</div>
+		          <span class="tips">?</span>
+		        </el-tooltip>
+		      </template>
+		      <el-input v-model="integral_limit_form.exec_count_point" type="Number" placeholder="请输入数值"></el-input>
+		    </el-form-item>
+		    <el-form-item prop="reward_ratio">
+		      <template slot="label">
+		        <span>月奖扣比例</span>
+		        <el-tooltip placement="top">
+		          <div slot="content" style="width: 300px;">对奖分和扣分的比例作任务要求<br />举例说明:奖扣比例任务10:1,实际执行奖扣比例11:1(管理者当老好人,不敢执行扣分,导致扣分占比过低),则视为未完成,该执行人员将被扣对应分值。反之比例大于10:1,任务为达标,不对执行人员实行扣分</div>
+		          <span class="tips">?</span>
+		        </el-tooltip>
+		      </template>
+		      <el-input style="width: 100px;" type="Number" disabled placeholder="1" ></el-input>:<el-input v-model="integral_limit_form.reward_ratio" style="width: 100px;" type="Number" placeholder="请输入数值" ></el-input>
+		    </el-form-item>
+		    <el-form-item prop="reward_ratio_point">
+		      <template slot="label">
+		        <span>比例未达标</span>
+		        <el-tooltip placement="top">
+		          <div slot="content" style="width: 300px;">扣x分(x为输入框)<br />完成奖扣比例任务的,按对应分值扣分</div>
+		          <span class="tips">?</span>
+		        </el-tooltip>
+		      </template>
+		      <el-input v-model="integral_limit_form.reward_ratio_point" type="Number" placeholder="请输入数值"></el-input>
+		    </el-form-item>
+		    <el-form-item style=" text-align: right; margin-bottom: 0;">
+		      <el-button @click="bonus_deducted_colse('integral_limit_form')">取消</el-button>
+		      <el-button type="primary" @click="sub_bonus_deducted('integral_limit_form')">确定</el-button>
+		    </el-form-item>
+		  </el-form>
+		</el-dialog>
+	
 	</div>
 </template>
 
 <script>
+import EmployeeSelector from '../components/EmployeeSelector.vue';
+import noData from '@/components/noData';
+  const minimum = (rule, value,callback)=>{
+    if (value < 0){
+      callback(new Error('请输入正确的数值'))
+    }else {
+      callback()
+    }
+  }
 export default {
 	data() {
 		return {
-			role_list: [{ name: '阿萨德' }, { name: '阿萨德' }, { name: '阿萨德' }, { name: '阿萨德' }],
+			role_list:[],
 			table_list: [],
-			tips_show:false,
-			role_loading:false,
-			item_info:{}
+			tips_show: false,
+			role_loading: false,
+			table_loading: false,
+			item_info: {},
+			rules_employee_arr: { employee: [], dept: [] },
+
+			//添加人员相关
+			add_employee_show: false,
+			add_employee_form: { employee_ids: [] },
+			employee_arr:[],
+
+			radioVal: '',
+			// 设置积分相关
+			integral_limit_show:false,
+			management_scope_show:false,
+			integral_limit_loading:false,
+			integral_limit_form:{},
+			employee_not_select:[],
+			add_employee_max: 0,
+			management_scope_arr: {employee: [], dept: []},
+			
+			// 设置奖扣任务相关
+			bonus_deducted_show:false,
+			bonus_deducted_loading:false,
+			integral_limit_rules:{
+			  exec_count:[
+			    { required: true, validator: minimum, trigger: 'blur' },
+			  ],
+			  exec_count_point:[
+			    { required: true, validator: minimum, trigger: 'blur' },
+			  ],
+			  reward_ratio:[
+			    { required: true, validator: minimum, trigger: 'blur' },
+			  ],
+			  reward_ratio_point:[
+			    { required: true, validator: minimum, trigger: 'blur' },
+			  ],
+			},
 		};
 	},
-	created() {},
+	components: { EmployeeSelector, noData },
+	created() {
+		this.get_role_list();
+	},
 	mounted() {
 		if (localStorage.getItem('framework')) {
-		  this.tips_show = false
-		}else{
-		  this.tips_show = true
+			this.tips_show = false;
+		} else {
+			this.tips_show = true;
 		}
 	},
 	methods: {
-		del_item(){
-			
+		open_bonus_deducted(item){
+		  this.bonus_deducted_show = true
+		  this.set_mployee_limit_id = item.id
+		  this.get_employee_limit(item.id)
 		},
-		add_item(){
-			
+		sub_bonus_deducted(fromName){
+		  this.integral_limit_form.employee_id = this.set_mployee_limit_id
+		  this.$refs[fromName].validate((valid) => {
+		    if (valid) {
+		      this.$axios({
+		        url: '/api/integral/employee/limit',
+		        method: 'post',
+		        data: this.integral_limit_form
+		      }).then((res) => {
+		        if (res.data.code == 1) {
+		          this.$message.success(res.data.msg)
+		          setTimeout(() => {
+		            this.get_table_list()
+		          }, 1000);
+		          this.bonus_deducted_show = false
+		        }else{
+		          this.$message.error(res.data.msg)
+		        }
+		      })
+		    }
+		  });
 		},
-		// 关闭提示语
-		tips_close() {
-		  localStorage.setItem('framework','true')
-		  this.tips_show = false
+		bonus_deducted_colse(fromName){
+		  this.bonus_deducted_show = false
+		  this.$refs[fromName].resetFields()
+		},
+		//设置管理范围
+		sub_management_scope(){
+		  this.$refs.Employee.confirm();//调用组件的confirm();
+		  this.$axios({
+		    url: '/api/employee/scope',
+		    method: 'POST',
+		    data: {employee_id: this.list_info.id,id: this.management_arr},
+		  }).then((res) => {
+		    if (res.data.code == 1) {
+		      this.$message.success("设置成功!")
+		      this.table_list.forEach(element => {
+		        if (element.id == this.list_info.id) {
+		          element.manage_scope_count = this.management_arr.length
+		        }
+		      });
+		      this.management_scope_show = false
+		    } else{
+		      this.$message.error(res.data.msg)
+		    }
+		  }).catch((e) => {this.$message.error(e.data.msg)})
+		},
+		//添加编辑管理范围
+		management_scope_confirm(val){
+		  this.management_arr = []
+		  val.employee.forEach(element => {
+		    this.management_arr.push(element.id)
+		  });
+		},
+		add_management_scope(item){
+		  this.list_info = item;
+		  this.employee_not_select = [item.id]
+		  this.management_scope_arr.employee=[];
+		  this.$axios.get('/api/employee/info',{params: {id: this.list_info.id}}).then((res) => {
+		    if (res.data.code == 1) {
+		      this.management_scope_arr.employee = res.data.data.employee_detail.manage_scope||[];//获取当前数据的管理范围
+		      this.management_scope_show = true
+		    } else {
+		      this.$message.error(res.data.msg)
+		    }
+		  }).finally(() => {
+		    this.role_loading = false
+		  })
+		},
+		sub_employee_limit(){
+		  this.integral_limit_form.employee_id = this.set_mployee_limit_id
+		  this.$axios.post('/api/integral/employee/limit',this.integral_limit_form).then((res) => {
+		    if (res.data.code == 1) {
+		      this.$message.success(res.data.msg)
+		      this.get_table_list()
+		      this.integral_limit_show = false
+		    }else{
+		      this.$message.error(res.data.msg)
+		    }
+		  }).catch((e) => {this.$message.error(e.data.msg)})
+		},
+		open_integral_limit(item){
+		  this.integral_limit_show = true
+		  this.set_mployee_limit_id = item.id
+		  this.get_employee_limit(item.id);
+		},
+		get_employee_limit(id){
+		  this.integral_limit_loading = true
+		  this.$axios.get('/api/integral/employee/limit',{params: {employee_id: id}}).then((res) => {
+		    if (res.data.code == 1) {
+		       var item = res.data.data;
+				if (item.point_limit == null || item.point_limit == undefined||item.point_limit.length==0) {
+					item.point_limit = [{ name: 'A分', point: '0', pt_id: this.$getTyps('AF').id }, { name: 'B分', point: '0', pt_id: this.$getTyps('BF').id }];
+				}
+				if (item.deduct_task_monthly == null || item.deduct_task_monthly == undefined||item.deduct_task_monthly.length==0) {
+					item.deduct_task_monthly = [{ name: 'A分', point: '0', pt_id: this.$getTyps('AF').id }, { name: 'B分', point: '0', pt_id: this.$getTyps('BF').id }];
+				}
+				if (item.reward_task_monthly == null || item.reward_task_monthly == undefined||item.reward_task_monthly.length==0) {
+					item.reward_task_monthly = [{ name: 'A分', point: '0', pt_id: this.$getTyps('AF').id }, { name: 'B分', point: '0', pt_id: this.$getTyps('BF').id }];
+				}
+				this.integral_limit_form=item
+		    } else {
+		      this.$message.error(res.data.msg)
+		    }
+		  }).finally(() => {
+		    this.integral_limit_loading = false
+		  })
+		},
+		sub_add_employee(form) {
+			  var that=this;
+			   this.$refs.Employee.confirm();//调用组件的confirm();
+			   			console.log(this.employee_arr)
+			   this.employee_arr.forEach(element => {
+					 this.$axios.put('/api/role/user',{role_id: this.item_info.id,employee_id: element}).then((res) => {
+					   if (res.data.code == 1) {
+						 this.$message.success(res.data.msg)
+						 this.add_employee_show= false
+						 setTimeout(() => {
+						   that.get_table_list()
+						 }, 1000);
+					   } else{
+						 this.$message.error(res.data.msg)
+					   }
+					 }).catch((e) => {this.$message.error(e.data.msg)})
+			  });
+		},
+		
+		add_employee_confirm(val) {
+			this.employee_arr = []
+			val.employee.forEach(element => {
+			   this.employee_arr.push(element.id)
+			});
+		},
+	
+		//关闭弹窗
+		publicClose() {
+			this.add_employee_show = false;
+			this.management_scope_show = false;
+		},
+		handleSelectionChange() {},
+		del_item() {
+			if (!this.radioVal) {
+				this.$message.error('请选择要删除的人员');
+				return false;
+			}
+			this.$confirm('确定要删除该人员?', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning'
+			}).then(() => {
+				this.$axios({
+				url: '/api/role/user',
+				method: 'DELETE',
+				data: {role_id: this.item_info.id,employee_id: this.radioVal}
+				}).then(res => {
+					if (res.data.code == 1) {
+						this.$message.success(res.data.msg);
+						this.get_table_list();
+					} else {
+						this.$message.error(res.data.msg);
+					}
+				});
+			});
+		},
+		add_item() {
+			this.add_employee_show = true;
 		},
 		get_role_list() {
-			let self = this;
-			self.role_loading = true;
-			self.$axios
+			this.role_loading = true;
+			this.$axios
 				.get('/api/role/list')
 				.then(res => {
 					if (res.data.code == 1) {
 						this.role_list = res.data.data.list;
 						this.open_right(this.role_list[0]);
 					} else {
-						self.$message.error(res.data.msg);
+						this.$message.error(res.data.msg);
 					}
 				})
 				.finally(() => {
-					self.role_loading = false;
+					this.role_loading = false;
 				});
 		},
 		open_right(data) {
@@ -286,52 +632,58 @@ export default {
 			this.get_table_list();
 		},
 		get_table_list() {
-			let self = this;
-			self.table_loading = true;
-			self.$http
-				.get('/api/role/user', { params: { role_id: self.item_info.id } })
+			this.table_loading = true;
+			var that = this;
+			this.table_list=[];
+			this.$axios.get('/api/role/user', { params: { role_id: this.item_info.id } })
 				.then(res => {
 					if (res.data.code == 1) {
-						let point_types = self.$store.getters.point_types;
-						let point_type_map = {};
-						for (let i in point_types) {
-							point_type_map[point_types[i].id] = point_types[i];
-						}
-						let data = res.data.data.list;
-						// 处理添加人员的组件选中问题
-						this.rules_employee_arr.employee = [];
-						for (let i in data) {
-							this.rules_employee_arr.employee.push({ id: data[i].id, img_url: data[i].img_url, name: data[i].name });
-							if (data[i].point_limit !== null && data[i].point_limit.length == 0) {
-								data[i].point_limit = [{ name: 'A分', point: 0, pt_id: 2 }, { name: 'B分', point: 0, pt_id: 3 }];
-							}
-							if (data[i].deduct_task_monthly !== null && data[i].deduct_task_monthly.length == 0) {
-								data[i].deduct_task_monthly = [{ name: 'A分', point: 0, pt_id: 2 }, { name: 'B分', point: 0, pt_id: 3 }];
-							}
-							if (data[i].reward_task_monthly !== null && data[i].reward_task_monthly.length == 0) {
-								data[i].reward_task_monthly = [{ name: 'A分', point: 0, pt_id: 2 }, { name: 'B分', point: 0, pt_id: 3 }];
+						var list = res.data.data.list;
+						list.forEach(item => {
+							if (item.point_limit == null || item.point_limit == undefined||item.point_limit.length==0) {
+								item.point_limit = [{ name: 'A分', point: '0', pt_id: that.$getTyps('AF').id }, { name: 'B分', point: '0', pt_id: that.$getTyps('BF').id }];
 							}
-							if (!data[i]['point_limit_obj']) {
-								data[i]['point_limit_obj'] = {};
+							if (item.deduct_task_monthly == null || item.deduct_task_monthly == undefined||item.deduct_task_monthly.length==0) {
+								item.deduct_task_monthly = [{ name: 'A分', point: '0', pt_id: that.$getTyps('AF').id }, { name: 'B分', point: '0', pt_id: that.$getTyps('BF').id }];
 							}
-							for (let k in data[i].point_limit) {
-								data[i]['point_limit_obj'][point_type_map[data[i].point_limit[k].pt_id].code] = data[i].point_limit[k].point;
+							if (item.reward_task_monthly == null || item.reward_task_monthly == undefined||item.reward_task_monthly.length==0) {
+								item.reward_task_monthly = [{ name: 'A分', point: '0', pt_id: that.$getTyps('AF').id }, { name: 'B分', point: '0', pt_id: that.$getTyps('BF').id }];
 							}
-						}
-						this.table_list = data;
+						});
+						this.table_list = list||[];
+						console.log(this.table_list)
 					} else {
-						self.$message.error(res.data.msg);
+						this.$message.error(res.data.msg);
 					}
 				})
 				.finally(() => {
-					self.table_loading = false;
+					this.table_loading = false;
 				});
+		},
+		// 关闭提示语
+		tips_close() {
+			localStorage.setItem('framework', 'true');
+			this.tips_show = false;
 		}
 	}
 };
 </script>
 
 <style scoped="scoped">
+::v-deep .el-radio .el-radio__label {
+	display: none;
+}
+.tips {
+	background: #dcdfe6;
+	border-radius: 50%;
+	width: 14px;
+	height: 14px;
+	color: #fff;
+	display: inline-block;
+	font-size: 12px;
+	line-height: 14px;
+	text-align: center;
+}
 .name {
 	font-size: 18px;
 	margin-bottom: 5px;
@@ -339,4 +691,7 @@ export default {
 .user_text {
 	font-size: 12px;
 }
+.cursor_pointer {
+	cursor: pointer;
+}
 </style>

+ 1 - 1
src/views/rule.vue

@@ -1,5 +1,5 @@
 <template>
-	<div>
+	<div class="all-box">
 		<!-- 头部提示 -->
 		<el-alert class="diy-tip" title="如何使用积分规则?" type="success" @close="tips_close" v-if="tips_show" description show-icon>
 			<p>先【添加规则分类】,再【添加规则】;或者直接【导入规则】</p>