Compare commits
	
		
			39 Commits
		
	
	
		
			feature-we
			...
			feature-ar
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 893b697d5a | |||
| eb133c0365 | |||
| 49a207a9d5 | |||
| eb22d61fcc | |||
| 56398fe9d6 | |||
| 96079ea519 | |||
| b5010930f2 | |||
| 405e3984b6 | |||
| bab8d6bf6f | |||
| e4260780bc | |||
| 92553a9ba9 | |||
| 18d4620729 | |||
| 3313414c70 | |||
| 330f5fa1e4 | |||
| ef9472b334 | |||
| 12dd277a2a | |||
| e99d092862 | |||
| ef78c2e42e | |||
| b2712087a0 | |||
| 52bcee8d39 | |||
| f472031b6f | |||
| 620860c551 | |||
| 075e9050dd | |||
| 04e7a8cd5b | |||
| ce33d04694 | |||
| 19df478f63 | |||
| 3afb4ca1ff | |||
| 10047b7b6d | |||
| e8c230211b | |||
| 1ef1329495 | |||
| 554bb14c36 | |||
| b960ddfa5d | |||
| 2a226831dc | |||
| 83b256a832 | |||
| 65a51efa30 | |||
| 1fa3b7cfdc | |||
| e49f4426f3 | |||
| e8996c3fbf | |||
| c99d69c629 | 
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -724,3 +724,7 @@ local.properties | |||||||
|  |  | ||||||
| target | target | ||||||
| target/* | target/* | ||||||
|  |  | ||||||
|  | # oracle | ||||||
|  | *.~pck | ||||||
|  | *.~sql | ||||||
|   | |||||||
							
								
								
									
										17
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								README.md
									
									
									
									
									
								
							| @@ -11,3 +11,20 @@ | |||||||
| 1. 员工电脑使用 Lively Wallpaper,将壁纸设置为一个web页面。 | 1. 员工电脑使用 Lively Wallpaper,将壁纸设置为一个web页面。 | ||||||
| 2. 前端使用vite + vue3; | 2. 前端使用vite + vue3; | ||||||
| 3. 后端使用 Java + springMVC; | 3. 后端使用 Java + springMVC; | ||||||
|  | 4. 使用webview2组件 | ||||||
|  |  | ||||||
|  | # 需求内容 | ||||||
|  |  | ||||||
|  | 需根据续保部和转保团队开发不同的页面。 | ||||||
|  |  | ||||||
|  | # 坐席主机配置 | ||||||
|  |  | ||||||
|  | 需要安装插件,插件目录 AppData\Local\Programs\Lively Wallpaper\Plugins。 | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | datacenter.dc_yzh_cfqd2023表 | ||||||
|  |  | ||||||
|  | 车非渗透率 车非融合保费 / 车险个人客户保费, 为月初至当日的总量。 | ||||||
							
								
								
									
										357
									
								
								code/db/pkg/telsale_archievement_pkg.pck
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										357
									
								
								code/db/pkg/telsale_archievement_pkg.pck
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,357 @@ | |||||||
|  | CREATE OR REPLACE PACKAGE telsale_archievement_pkg IS | ||||||
|  |  | ||||||
|  |     -- Author  : WANGWEI-202 | ||||||
|  |     -- Created : 2023/3/10 15:13:34 | ||||||
|  |     -- Purpose : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɰ<EFBFBD> | ||||||
|  |  | ||||||
|  |     PROCEDURE <20><><EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |     ( | ||||||
|  |         a_start_date IN DATE, | ||||||
|  |         a_end_date   IN DATE | ||||||
|  |     ); | ||||||
|  |  | ||||||
|  |     PROCEDURE gen_<6E><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> | ||||||
|  |     ( | ||||||
|  |         a_start_date IN DATE, | ||||||
|  |         a_end_date   IN DATE | ||||||
|  |     ); | ||||||
|  |  | ||||||
|  | END telsale_archievement_pkg; | ||||||
|  | / | ||||||
|  | CREATE OR REPLACE PACKAGE BODY telsale_archievement_pkg IS | ||||||
|  |  | ||||||
|  |     PROCEDURE <20><><EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |     ( | ||||||
|  |         a_start_date IN DATE, | ||||||
|  |         a_end_date   IN DATE | ||||||
|  |     ) IS | ||||||
|  |         --l_count INTEGER; --<2D><><EFBFBD>м<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |     BEGIN | ||||||
|  |         --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> | ||||||
|  |         gen_<6E><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>(a_start_date, | ||||||
|  |                    a_end_date); | ||||||
|  |      | ||||||
|  |         FOR caller_record IN (SELECT * | ||||||
|  |                                 FROM <20><><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD>_t) | ||||||
|  |         LOOP | ||||||
|  |             BEGIN | ||||||
|  |                 DELETE <20><><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> cf | ||||||
|  |                  WHERE cf.ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = caller_record.ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |                    AND cf.<2E><><EFBFBD><EFBFBD> = caller_record.<2E><><EFBFBD><EFBFBD> | ||||||
|  |                    AND cf.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n = caller_record.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n | ||||||
|  |                    AND cf.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = caller_record.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>; | ||||||
|  |             EXCEPTION | ||||||
|  |                 WHEN no_data_found THEN | ||||||
|  |                     NULL; | ||||||
|  |             END; | ||||||
|  |          | ||||||
|  |             INSERT INTO <20><><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> | ||||||
|  |             VALUES caller_record; | ||||||
|  |          | ||||||
|  |         END LOOP; | ||||||
|  |      | ||||||
|  |         COMMIT; | ||||||
|  |     EXCEPTION | ||||||
|  |         WHEN OTHERS THEN | ||||||
|  |             NULL; | ||||||
|  |     END; | ||||||
|  |  | ||||||
|  |     PROCEDURE gen_<6E><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> | ||||||
|  |     ( | ||||||
|  |         a_start_date IN DATE, | ||||||
|  |         a_end_date   IN DATE | ||||||
|  |     ) IS | ||||||
|  |     BEGIN | ||||||
|  |         EXECUTE IMMEDIATE 'truncate table <20><><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD>_t'; | ||||||
|  |      | ||||||
|  |         INSERT INTO <20><><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD>_t | ||||||
|  |             WITH aa AS | ||||||
|  |              (SELECT to_char(t.signature_date, | ||||||
|  |                              'yyyy-mm-dd') ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      (to_char(T.signature_date, | ||||||
|  |                               'mm')) || '<27><>' mm, | ||||||
|  |                      t.policy_no bdh, | ||||||
|  |                      t.endorsement_no pdh, | ||||||
|  |                      qt.t_cre tid, | ||||||
|  |                      QT.B_CRE BTID, -----<2D><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD> | ||||||
|  |                      e.inception_date qbsj, | ||||||
|  |                      e.planned_end_date zzsj, | ||||||
|  |                      pt.premium_amount - nvl(pt.tax_amount, | ||||||
|  |                                              0) bf, | ||||||
|  |                      nt.ecompensation_rate * (pt.premium_amount - nvl(pt.tax_amount, | ||||||
|  |                                                                       0)) fxbf, | ||||||
|  |                      z.department_name bm, | ||||||
|  |                      CASE | ||||||
|  |                          WHEN (et.telpartnercode LIKE '%HC%' OR | ||||||
|  |                               zx.workerno IN (SELECT code | ||||||
|  |                                                  FROM datacenter.dc_lsj_zx_hc)) THEN | ||||||
|  |                           '<27><><EFBFBD>ῥ' | ||||||
|  |                          ELSE | ||||||
|  |                           '' | ||||||
|  |                      END <20>Ƿ<EFBFBD><C7B7>ῥ, | ||||||
|  |                      nvl(zx.workerno, | ||||||
|  |                          et.telpartnercode) <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                      (CASE | ||||||
|  |                          WHEN nvl(zx.workerno, | ||||||
|  |                                   et.telpartnercode) = 'DX001' AND | ||||||
|  |                               xx.staff_name LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN | ||||||
|  |                           '<27><>ΰ<EFBFBD><CEB0>' | ||||||
|  |                          WHEN nvl(zx.workerno, | ||||||
|  |                                   et.telpartnercode) = 'DX001' AND | ||||||
|  |                               xx.staff_name NOT LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD>' | ||||||
|  |                          ELSE | ||||||
|  |                           to_char(ys.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>) | ||||||
|  |                      END) <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                      YS.<2E>Ŷ<EFBFBD> <20><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                      nvl(YS.<2E>Ŷ<EFBFBD>, | ||||||
|  |                          y.section_office_name) <20><><EFBFBD><EFBFBD>N, | ||||||
|  |                      nvl((CASE | ||||||
|  |                              WHEN nvl(zx.workerno, | ||||||
|  |                                       et.telpartnercode) = 'DX001' AND | ||||||
|  |                                   xx.staff_name LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN | ||||||
|  |                               '<27><>ΰ<EFBFBD><CEB0>' | ||||||
|  |                              WHEN nvl(zx.workerno, | ||||||
|  |                                       et.telpartnercode) = 'DX001' AND | ||||||
|  |                                   xx.staff_name NOT LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN | ||||||
|  |                               '<27><><EFBFBD><EFBFBD>' | ||||||
|  |                              ELSE | ||||||
|  |                               to_char(ys.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>) | ||||||
|  |                          END), | ||||||
|  |                          xx.staff_name) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N | ||||||
|  |                 FROM idst0.auto_agreement_request_t t | ||||||
|  |                 LEFT JOIN idst0.auto_agreement_t e | ||||||
|  |                   ON e.policy_no = t.policy_no | ||||||
|  |                 LEFT JOIN idst0.motorised_vehicle_t v | ||||||
|  |                   ON v.policy_no = e.policy_no | ||||||
|  |                 LEFT JOIN idst0.auto_premium_t pt | ||||||
|  |                   ON pt.policy_no = t.policy_no | ||||||
|  |                  AND pt.endorsement_no = t.endorsement_no | ||||||
|  |                 LEFT JOIN ywglxt.w_dxbd_i i | ||||||
|  |                   ON e.policy_no = i.bdh | ||||||
|  |                 LEFT JOIN idst0.rydm_t xx | ||||||
|  |                   ON xx.staff_code = nvl(i.zhjywy, | ||||||
|  |                                          e.operator_code) | ||||||
|  |                 LEFT JOIN idst0.ks_t y | ||||||
|  |                   ON y.section_office_code = nvl(xx.section_office_code, | ||||||
|  |                                                  e.section_office_code) | ||||||
|  |                 LEFT JOIN idst0.bm_t z | ||||||
|  |                   ON z.department_code = nvl(xx.department_code, | ||||||
|  |                                              e.department_code) | ||||||
|  |               --left join datacenter.dc_cx_csteam ct on ct.jbrcode = xx.staff_code | ||||||
|  |                 LEFT JOIN idst0.auto_new_product_info_t nt | ||||||
|  |                   ON nt.policy_no = t.policy_no | ||||||
|  |                  AND nt.endorsement_no = t.endorsement_no | ||||||
|  |               --left join ywglxt.q_auto_agreement_extend_t qe on qe.policy_no = e.policy_no | ||||||
|  |                 LEFT JOIN ywglxt.q_auto_agreement_t qt | ||||||
|  |                   ON qt.policy_no = e.policy_no | ||||||
|  |                 LEFT JOIN datacenter.dc_yangg_qdcode qd | ||||||
|  |                   ON qd.code = e.selling_channel_type | ||||||
|  |                 LEFT JOIN datacenter.dc_tb_jc_c_tag cl | ||||||
|  |                   ON cl.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = e.policy_no | ||||||
|  |                 LEFT JOIN datacenter.dc_yangg_basecode_teams fg | ||||||
|  |                   ON fg.bm = z.department_name | ||||||
|  |                  AND fg.ks = y.section_office_name | ||||||
|  |               --left join idst0.t_sell_policy_autobase_t zx on zx.policy_no=e.policy_no | ||||||
|  |               --left join idst0.auto_agreement_extend_t et on et.policy_no = e.policy_no | ||||||
|  |                 LEFT JOIN idst0.auto_agreement_extend_t et | ||||||
|  |                   ON et.policy_no = e.policy_no | ||||||
|  |                 LEFT JOIN idst0.t_sell_policy_autobase_t zx | ||||||
|  |                   ON zx.policy_no = e.policy_no | ||||||
|  |                 LEFT JOIN datacenter.dc_YZH_ZXYS YS | ||||||
|  |                   ON YS.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = nvl(zx.workerno, | ||||||
|  |                                    et.telpartnercode) | ||||||
|  |                WHERE t.signature_date >= to_date('2023-01-01 00:00:00', | ||||||
|  |                                                  'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                  AND t.signature_date < to_date(to_char(SYSDATE - 1, | ||||||
|  |                                                         'yyyy-mm-dd') || ' 23:59:59', | ||||||
|  |                                                 'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                     --and t.endorsement_no = '<27><>' | ||||||
|  |                  AND e.policy_status = '1' --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч | ||||||
|  |                  AND qt.tflag = '0' --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD> | ||||||
|  |                  AND qt.usage_xm = '<27><>ͥ<EFBFBD><CDA5><EFBFBD>ó<EFBFBD>' | ||||||
|  |                     --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᳵ<EFBFBD><E1B3B5>Ħ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |                  AND e.planned_end_date - e.inception_date >= 360 | ||||||
|  |               --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |               ) | ||||||
|  |             -----<2D><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD> | ||||||
|  |             , | ||||||
|  |             dd2 AS | ||||||
|  |              (SELECT ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      mm, | ||||||
|  |                      bm, | ||||||
|  |                      <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                      <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                      <20><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                      <20><><EFBFBD><EFBFBD>N, | ||||||
|  |                      <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |                      CASE | ||||||
|  |                          WHEN pdh = '<27><>' THEN | ||||||
|  |                           tid | ||||||
|  |                      END tid, | ||||||
|  |                      to_number('1') <20>ͻ<EFBFBD><CDBB><EFBFBD>, | ||||||
|  |                      COUNT(DISTINCT CASE | ||||||
|  |                                WHEN pdh = '<27><>' THEN | ||||||
|  |                                 bdh | ||||||
|  |                            END) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      SUM(bf) <20><><EFBFBD><EFBFBD> | ||||||
|  |                 FROM (SELECT DISTINCT * | ||||||
|  |                         FROM aa) aa | ||||||
|  |                GROUP BY bm, | ||||||
|  |                         CASE | ||||||
|  |                             WHEN pdh = '<27><>' THEN | ||||||
|  |                              tid | ||||||
|  |                         END, | ||||||
|  |                         mm, | ||||||
|  |                         BTID, | ||||||
|  |                         <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                         <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                         <20><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                         ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                         <20><><EFBFBD><EFBFBD>N, | ||||||
|  |                         <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N | ||||||
|  |               UNION | ||||||
|  |               SELECT ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      mm, | ||||||
|  |                      bm, | ||||||
|  |                      <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                      <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                      <20><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                      <20><><EFBFBD><EFBFBD>N, | ||||||
|  |                      <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |                      CASE | ||||||
|  |                          WHEN btid = tid THEN | ||||||
|  |                           '' | ||||||
|  |                          ELSE | ||||||
|  |                           btid | ||||||
|  |                      END btid, | ||||||
|  |                      to_number('0') <20>ͻ<EFBFBD><CDBB><EFBFBD>, | ||||||
|  |                      to_number('0') <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      to_number('0') <20><><EFBFBD><EFBFBD> | ||||||
|  |                 FROM (SELECT DISTINCT * | ||||||
|  |                         FROM aa) aa), | ||||||
|  |             DD AS | ||||||
|  |              (SELECT * | ||||||
|  |                 FROM DD2 | ||||||
|  |                WHERE TID IS NOT NULL) | ||||||
|  |             --select * from dd | ||||||
|  |             , | ||||||
|  |             bb AS | ||||||
|  |              (SELECT DISTINCT q.policy_no bdh, | ||||||
|  |                               q.endorsement_no pdh, | ||||||
|  |                               qna.t_cre tid, | ||||||
|  |                               to_number(to_char(q.signature_date, | ||||||
|  |                                                 'yyyy')) || '<27><>' nf, | ||||||
|  |                               (to_char(q.signature_date, | ||||||
|  |                                        'mm')) || '<27><>' mm_f, | ||||||
|  |                               to_char(q.signature_date, | ||||||
|  |                                       'dd') || '<27><>' dd, | ||||||
|  |                               q.signature_date sj, | ||||||
|  |                               round((pt.premium_amount - nvl(pt.taxamount, | ||||||
|  |                                                              0)) * c.rate / 100, | ||||||
|  |                                     2) bf, | ||||||
|  |                               z.department_name bm | ||||||
|  |                 FROM idst0.nonauto_agreement_request_t q | ||||||
|  |                 LEFT JOIN idst0.nonauto_agreement_t e | ||||||
|  |                   ON e.policy_no = q.policy_no | ||||||
|  |                 LEFT JOIN idst0.nonauto_premium_t pt | ||||||
|  |                   ON pt.endorsement_no = q.endorsement_no | ||||||
|  |                  AND pt.policy_no = q.policy_no | ||||||
|  |                 LEFT JOIN idst0.reinsurance_t r | ||||||
|  |                   ON r.reinsurance_policy_no = e.policy_no | ||||||
|  |                 LEFT JOIN idst0.exrate_month_t c | ||||||
|  |                   ON pt.currency_code = c.bzh | ||||||
|  |                  AND to_char(q.signature_date, | ||||||
|  |                              'YYYY') = c.theyear | ||||||
|  |                  AND to_char(q.signature_date, | ||||||
|  |                              'fmmm') = c.themonth | ||||||
|  |                | ||||||
|  |                 LEFT JOIN idst0.rydm_t x | ||||||
|  |                   ON x.staff_code = e.operator_code | ||||||
|  |                 LEFT JOIN idst0.ks_t y | ||||||
|  |                   ON y.section_office_code = x.section_office_code | ||||||
|  |                 LEFT JOIN idst0.bm_t z | ||||||
|  |                   ON z.department_code = x.department_code | ||||||
|  |                 LEFT JOIN ywglxt.q_nonauto_agreement_t qna | ||||||
|  |                   ON qna.policy_no = q.policy_no | ||||||
|  |                 LEFT JOIN datacenter.dc_yangg_gkxzh gk | ||||||
|  |                   ON gk.product_code = e.product_code --<2D><>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |                 LEFT JOIN dd | ||||||
|  |                   ON dd.tid = qna.t_cre | ||||||
|  |                WHERE qna.tflag = '0' | ||||||
|  |                  AND (CASE | ||||||
|  |                          WHEN q.endorsement_no != '<27><>' AND | ||||||
|  |                               round((pt.premium_amount - nvl(pt.taxamount, | ||||||
|  |                                                              0)) * c.rate / 100, | ||||||
|  |                                     2) != 0 THEN | ||||||
|  |                           '<27><>' | ||||||
|  |                      END) IS NULL | ||||||
|  |                  AND e.policy_status = '1' | ||||||
|  |                  AND gk.product_code IS NOT NULL | ||||||
|  |                  AND (e.product_code LIKE '2%' OR e.product_code LIKE '1106%' --<2D>⽡ --<2D><><EFBFBD><EFBFBD> | ||||||
|  |                      OR e.product_code LIKE '1107%' OR e.product_code LIKE '1108%' OR e.product_code LIKE '1307%' OR e.product_code LIKE '1304A400%' --<2D>Ҳ<EFBFBD> | ||||||
|  |                       | ||||||
|  |                      ) | ||||||
|  |                  AND q.signature_date >= to_date('2023-01-01 00:00:00', | ||||||
|  |                                                  'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                  AND q.signature_date < to_date(to_char(SYSDATE - 1, | ||||||
|  |                                                         'yyyy-mm-dd') || ' 23:59:59', | ||||||
|  |                                                 'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                  AND e.planned_end_date - e.inception_date >= 90 | ||||||
|  |                  AND dd.tid IS NOT NULL | ||||||
|  |               --<2D><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF>) | ||||||
|  |               ) | ||||||
|  |             --SELECT * FROM BB | ||||||
|  |             , | ||||||
|  |             cc AS | ||||||
|  |              (SELECT mm_f, | ||||||
|  |                      tid <20>ں<EFBFBD>֤<EFBFBD><D6A4>, | ||||||
|  |                      COUNT(DISTINCT bdh) <20>ںϱ<DABA><CFB1><EFBFBD>, | ||||||
|  |                      SUM(bf) <20>ںϱ<DABA><CFB1><EFBFBD> | ||||||
|  |                 FROM bb | ||||||
|  |                GROUP BY tid, | ||||||
|  |                         mm_f), | ||||||
|  |             ff AS | ||||||
|  |              (SELECT dd.*, | ||||||
|  |                      cc.* | ||||||
|  |                 FROM dd | ||||||
|  |                 LEFT JOIN cc | ||||||
|  |                   ON cc.<2E>ں<EFBFBD>֤<EFBFBD><D6A4> = dd.tid | ||||||
|  |                  AND cc.mm_f = dd.mm) | ||||||
|  |             SELECT to_date(ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                            'yyyy-mm-dd'), | ||||||
|  |                    mm <20>·<EFBFBD>, | ||||||
|  |                    bm <20><><EFBFBD><EFBFBD>, | ||||||
|  |                    <20><><EFBFBD><EFBFBD>N, | ||||||
|  |                    <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |                    <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                    <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                    <20><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                    nvl(SUM(<28><><EFBFBD><EFBFBD>), | ||||||
|  |                        0) <20><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                    nvl(SUM(<28>ںϱ<DABA><CFB1><EFBFBD>), | ||||||
|  |                        0) <20><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD> | ||||||
|  |               FROM ff | ||||||
|  |              WHERE ff.ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >= to_char(a_start_date, | ||||||
|  |                                       'yyyy-mm-dd') | ||||||
|  |                AND ff.ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <= to_char(a_end_date, | ||||||
|  |                                       'yyyy-mm-dd') | ||||||
|  |                AND bm IN ('<27><><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>', | ||||||
|  |                           '<27><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>˾') | ||||||
|  |              GROUP BY ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                       mm, | ||||||
|  |                       bm, | ||||||
|  |                       <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                       <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                       <20><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                       <20><><EFBFBD><EFBFBD>N, | ||||||
|  |                       <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N | ||||||
|  |              ORDER BY <20><><EFBFBD><EFBFBD>, | ||||||
|  |                       <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>; | ||||||
|  |      | ||||||
|  |     END; | ||||||
|  |  | ||||||
|  | BEGIN | ||||||
|  |     NULL; | ||||||
|  | END telsale_archievement_pkg; | ||||||
|  | / | ||||||
							
								
								
									
										288
									
								
								code/db/车非基础数据.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										288
									
								
								code/db/车非基础数据.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,288 @@ | |||||||
|  |  | ||||||
|  | WITH aa AS | ||||||
|  |  (SELECT to_char(t.signature_date, | ||||||
|  |                  'yyyy-mm-dd') ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |          (to_char(T.signature_date, | ||||||
|  |                   'mm')) || '<EFBFBD><EFBFBD>' mm, | ||||||
|  |          t.policy_no bdh, | ||||||
|  |          t.endorsement_no pdh, | ||||||
|  |          qt.t_cre tid, | ||||||
|  |          QT.B_CRE BTID, -----<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD> | ||||||
|  |          e.inception_date qbsj, | ||||||
|  |          e.planned_end_date zzsj, | ||||||
|  |          pt.premium_amount - nvl(pt.tax_amount, | ||||||
|  |                                  0) bf | ||||||
|  |          --,qt.qdbf - nvl(qt.qdbf_tax_amount,0) bf | ||||||
|  |         , | ||||||
|  |          nt.ecompensation_rate * (pt.premium_amount - nvl(pt.tax_amount, | ||||||
|  |                                                           0)) fxbf, | ||||||
|  |          z.department_name bm, | ||||||
|  |          CASE | ||||||
|  |              WHEN (et.telpartnercode LIKE '%HC%' OR zx.workerno IN (SELECT code | ||||||
|  |                                                                       FROM datacenter.dc_lsj_zx_hc)) THEN | ||||||
|  |               '<EFBFBD><EFBFBD><EFBFBD>ῥ' | ||||||
|  |              ELSE | ||||||
|  |               '' | ||||||
|  |          END <EFBFBD>Ƿ<EFBFBD><EFBFBD>ῥ, | ||||||
|  |          nvl(zx.workerno, | ||||||
|  |              et.telpartnercode) <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |          (CASE | ||||||
|  |              WHEN nvl(zx.workerno, | ||||||
|  |                       et.telpartnercode) = 'DX001' AND | ||||||
|  |                   xx.staff_name LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN | ||||||
|  |               '<EFBFBD><EFBFBD>ΰ<EFBFBD><EFBFBD>' | ||||||
|  |              WHEN nvl(zx.workerno, | ||||||
|  |                       et.telpartnercode) = 'DX001' AND | ||||||
|  |                   xx.staff_name NOT LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN | ||||||
|  |               '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' | ||||||
|  |              ELSE | ||||||
|  |               to_char(ys.<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) | ||||||
|  |          END) <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |          YS.<EFBFBD>Ŷ<EFBFBD> <EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |          nvl(YS.<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |              y.section_office_name) <EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |          nvl((CASE | ||||||
|  |                  WHEN nvl(zx.workerno, | ||||||
|  |                           et.telpartnercode) = 'DX001' AND | ||||||
|  |                       xx.staff_name LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN | ||||||
|  |                   '<EFBFBD><EFBFBD>ΰ<EFBFBD><EFBFBD>' | ||||||
|  |                  WHEN nvl(zx.workerno, | ||||||
|  |                           et.telpartnercode) = 'DX001' AND | ||||||
|  |                       xx.staff_name NOT LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN | ||||||
|  |                   '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' | ||||||
|  |                  ELSE | ||||||
|  |                   to_char(ys.<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) | ||||||
|  |              END), | ||||||
|  |              xx.staff_name) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N | ||||||
|  |     FROM idst0.auto_agreement_request_t t | ||||||
|  |     LEFT JOIN idst0.auto_agreement_t e | ||||||
|  |       ON e.policy_no = t.policy_no | ||||||
|  |     LEFT JOIN idst0.motorised_vehicle_t v | ||||||
|  |       ON v.policy_no = e.policy_no | ||||||
|  |     LEFT JOIN idst0.auto_premium_t pt | ||||||
|  |       ON pt.policy_no = t.policy_no | ||||||
|  |      AND pt.endorsement_no = t.endorsement_no | ||||||
|  |     LEFT JOIN ywglxt.w_dxbd_i i | ||||||
|  |       ON e.policy_no = i.bdh | ||||||
|  |     LEFT JOIN idst0.rydm_t xx | ||||||
|  |       ON xx.staff_code = nvl(i.zhjywy, | ||||||
|  |                              e.operator_code) | ||||||
|  |     LEFT JOIN idst0.ks_t y | ||||||
|  |       ON y.section_office_code = nvl(xx.section_office_code, | ||||||
|  |                                      e.section_office_code) | ||||||
|  |     LEFT JOIN idst0.bm_t z | ||||||
|  |       ON z.department_code = nvl(xx.department_code, | ||||||
|  |                                  e.department_code) | ||||||
|  |   --left join datacenter.dc_cx_csteam ct on ct.jbrcode = xx.staff_code | ||||||
|  |     LEFT JOIN idst0.auto_new_product_info_t nt | ||||||
|  |       ON nt.policy_no = t.policy_no | ||||||
|  |      AND nt.endorsement_no = t.endorsement_no | ||||||
|  |   --left join ywglxt.q_auto_agreement_extend_t qe on qe.policy_no = e.policy_no | ||||||
|  |     LEFT JOIN ywglxt.q_auto_agreement_t qt | ||||||
|  |       ON qt.policy_no = e.policy_no | ||||||
|  |     LEFT JOIN datacenter.dc_yangg_qdcode qd | ||||||
|  |       ON qd.code = e.selling_channel_type | ||||||
|  |     LEFT JOIN datacenter.dc_tb_jc_c_tag cl | ||||||
|  |       ON cl.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = e.policy_no | ||||||
|  |     LEFT JOIN datacenter.dc_yangg_basecode_teams fg | ||||||
|  |       ON fg.bm = z.department_name | ||||||
|  |      AND fg.ks = y.section_office_name | ||||||
|  |   --left join idst0.t_sell_policy_autobase_t zx on zx.policy_no=e.policy_no | ||||||
|  |   --left join idst0.auto_agreement_extend_t et on et.policy_no = e.policy_no | ||||||
|  |     LEFT JOIN idst0.auto_agreement_extend_t et | ||||||
|  |       ON et.policy_no = e.policy_no | ||||||
|  |     LEFT JOIN idst0.t_sell_policy_autobase_t zx | ||||||
|  |       ON zx.policy_no = e.policy_no | ||||||
|  |     LEFT JOIN datacenter.dc_YZH_ZXYS YS | ||||||
|  |       ON YS.<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = nvl(zx.workerno, | ||||||
|  |                        et.telpartnercode) | ||||||
|  |   --left join v_lsj_dimian dm on dm.vin=v.vin and e.selling_channel_type='25' and dm.MEMO like'%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' | ||||||
|  |   --left join datacenter.dc_lsj_zx_team zt on zt.name=coalesce(zc.name,zc1.name,bc.name,dm.JBRMC) | ||||||
|  |    WHERE t.signature_date >= to_date('2023-01-01 00:00:00', | ||||||
|  |                                      'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |      AND t.signature_date < to_date(to_char(SYSDATE - 1, | ||||||
|  |                                             'yyyy-mm-dd') || ' 23:59:59', | ||||||
|  |                                     'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |         --and t.endorsement_no = '<EFBFBD><EFBFBD>' | ||||||
|  |      AND e.policy_status = '1' --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч | ||||||
|  |      AND qt.tflag = '0' --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |      AND qt.usage_xm = '<EFBFBD><EFBFBD>ͥ<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD>' | ||||||
|  |         --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᳵ<EFBFBD><EFBFBD>Ħ<EFBFBD>г<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |         --and e.policy_no in ('AXIMC90Y1419B038594J','AXIMC90CTP19B039593R','AXIMC04CTP19B013473X') | ||||||
|  |      AND e.planned_end_date - e.inception_date >= 360 | ||||||
|  |   --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |   ) | ||||||
|  | -----<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD> | ||||||
|  | , | ||||||
|  | dd2 AS | ||||||
|  |  (SELECT ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |          mm, | ||||||
|  |          bm, | ||||||
|  |          <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |          <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |          <EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |          <EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |          <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |          CASE | ||||||
|  |              WHEN pdh = '<EFBFBD><EFBFBD>' THEN | ||||||
|  |               tid | ||||||
|  |          END tid, | ||||||
|  |          to_number('1') <EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |          COUNT(DISTINCT CASE | ||||||
|  |                    WHEN pdh = '<EFBFBD><EFBFBD>' THEN | ||||||
|  |                     bdh | ||||||
|  |                END) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |          SUM(bf) <EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |     FROM (SELECT DISTINCT * | ||||||
|  |             FROM aa) aa | ||||||
|  |    GROUP BY bm, | ||||||
|  |             CASE | ||||||
|  |                 WHEN pdh = '<EFBFBD><EFBFBD>' THEN | ||||||
|  |                  tid | ||||||
|  |             END, | ||||||
|  |             mm, | ||||||
|  |             BTID, | ||||||
|  |             <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |             <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |             <EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |             ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |             <EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |             <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N | ||||||
|  |   UNION | ||||||
|  |   SELECT ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |          mm, | ||||||
|  |          bm, | ||||||
|  |          <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |          <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |          <EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |          <EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |          <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |          CASE | ||||||
|  |              WHEN btid = tid THEN | ||||||
|  |               '' | ||||||
|  |              ELSE | ||||||
|  |               btid | ||||||
|  |          END btid, | ||||||
|  |          to_number('0') <EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |          to_number('0') <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |          to_number('0') <EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |     FROM (SELECT DISTINCT * | ||||||
|  |             FROM aa) aa), | ||||||
|  | DD AS | ||||||
|  |  (SELECT * | ||||||
|  |     FROM DD2 | ||||||
|  |    WHERE TID IS NOT NULL) | ||||||
|  | --select * from dd | ||||||
|  | , | ||||||
|  | bb AS | ||||||
|  |  (SELECT DISTINCT q.policy_no bdh, | ||||||
|  |                   q.endorsement_no pdh, | ||||||
|  |                   qna.t_cre tid, | ||||||
|  |                   to_number(to_char(q.signature_date, | ||||||
|  |                                     'yyyy')) || '<EFBFBD><EFBFBD>' nf, | ||||||
|  |                   (to_char(q.signature_date, | ||||||
|  |                            'mm')) || '<EFBFBD><EFBFBD>' mm_f, | ||||||
|  |                   to_char(q.signature_date, | ||||||
|  |                           'dd') || '<EFBFBD><EFBFBD>' dd, | ||||||
|  |                   q.signature_date sj, | ||||||
|  |                   round((pt.premium_amount - nvl(pt.taxamount, | ||||||
|  |                                                  0)) * c.rate / 100, | ||||||
|  |                         2) bf, | ||||||
|  |                   z.department_name bm | ||||||
|  |     FROM idst0.nonauto_agreement_request_t q | ||||||
|  |     LEFT JOIN idst0.nonauto_agreement_t e | ||||||
|  |       ON e.policy_no = q.policy_no | ||||||
|  |     LEFT JOIN idst0.nonauto_premium_t pt | ||||||
|  |       ON pt.endorsement_no = q.endorsement_no | ||||||
|  |      AND pt.policy_no = q.policy_no | ||||||
|  |     LEFT JOIN idst0.reinsurance_t r | ||||||
|  |       ON r.reinsurance_policy_no = e.policy_no | ||||||
|  |     LEFT JOIN idst0.exrate_month_t c | ||||||
|  |       ON pt.currency_code = c.bzh | ||||||
|  |      AND to_char(q.signature_date, | ||||||
|  |                  'YYYY') = c.theyear | ||||||
|  |      AND to_char(q.signature_date, | ||||||
|  |                  'fmmm') = c.themonth | ||||||
|  |    | ||||||
|  |     LEFT JOIN idst0.rydm_t x | ||||||
|  |       ON x.staff_code = e.operator_code | ||||||
|  |     LEFT JOIN idst0.ks_t y | ||||||
|  |       ON y.section_office_code = x.section_office_code | ||||||
|  |     LEFT JOIN idst0.bm_t z | ||||||
|  |       ON z.department_code = x.department_code | ||||||
|  |     LEFT JOIN ywglxt.q_nonauto_agreement_t qna | ||||||
|  |       ON qna.policy_no = q.policy_no | ||||||
|  |     LEFT JOIN datacenter.dc_yangg_gkxzh gk | ||||||
|  |       ON gk.product_code = e.product_code --<EFBFBD><EFBFBD>ɢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |   --left join datacenter.dc_yangg_zbxzh zb on zb.product_code = e.product_code --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |     LEFT JOIN dd | ||||||
|  |       ON dd.tid = qna.t_cre | ||||||
|  |    WHERE qna.tflag = '0' | ||||||
|  |      AND (CASE | ||||||
|  |              WHEN q.endorsement_no != '<EFBFBD><EFBFBD>' AND | ||||||
|  |                   round((pt.premium_amount - nvl(pt.taxamount, | ||||||
|  |                                                  0)) * c.rate / 100, | ||||||
|  |                         2) != 0 THEN | ||||||
|  |               '<EFBFBD><EFBFBD>' | ||||||
|  |          END) IS NULL | ||||||
|  |         --and q.endorsement_no = '<EFBFBD><EFBFBD>' | ||||||
|  |      AND e.policy_status = '1' | ||||||
|  |      AND gk.product_code IS NOT NULL | ||||||
|  |      AND (e.product_code LIKE '2%' OR e.product_code LIKE '1106%' --<EFBFBD>⽡ --<EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |          OR e.product_code LIKE '1107%' OR e.product_code LIKE '1108%' OR e.product_code LIKE '1307%' OR e.product_code LIKE '1304A400%' --<EFBFBD>Ҳ<EFBFBD> | ||||||
|  |           | ||||||
|  |          ) | ||||||
|  |         --and e.product_code not in ('22KC9800') | ||||||
|  |      AND q.signature_date >= to_date('2023-01-01 00:00:00', | ||||||
|  |                                      'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |      AND q.signature_date < to_date(to_char(SYSDATE - 1, | ||||||
|  |                                             'yyyy-mm-dd') || ' 23:59:59', | ||||||
|  |                                     'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |      AND e.planned_end_date - e.inception_date >= 90 | ||||||
|  |      AND dd.tid IS NOT NULL | ||||||
|  |   --<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD>) | ||||||
|  |   ) | ||||||
|  | --SELECT * FROM BB | ||||||
|  | , | ||||||
|  | cc AS | ||||||
|  |  (SELECT mm_f, | ||||||
|  |          tid <EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD>, | ||||||
|  |          COUNT(DISTINCT bdh) <EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |          SUM(bf) <EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |     FROM bb | ||||||
|  |    GROUP BY tid, | ||||||
|  |             mm_f), | ||||||
|  | ff AS | ||||||
|  |  (SELECT dd.*, | ||||||
|  |          cc.* | ||||||
|  |     FROM dd | ||||||
|  |     LEFT JOIN cc | ||||||
|  |       ON cc.<EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD> = dd.tid | ||||||
|  |      AND cc.mm_f = dd.mm) --OR cc.<EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD> = dd.btid | ||||||
|  | --select * from ff | ||||||
|  | SELECT ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |        --mm, | ||||||
|  |        bm <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |        <EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |        <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |        <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |        <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |        <EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |        nvl(SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>), | ||||||
|  |            0) <EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |        nvl(SUM(<EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>), | ||||||
|  |            0) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |   FROM ff | ||||||
|  |  WHERE ff.ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '2023-03-09' | ||||||
|  |    AND bm IN ('<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>', | ||||||
|  |               '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>˾') | ||||||
|  |  GROUP BY ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |           mm, | ||||||
|  |           bm, | ||||||
|  |           <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |           <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |           <EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |           <EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |           <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N | ||||||
|  |  ORDER BY <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |           <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
							
								
								
									
										3
									
								
								code/web/task_schedule/.env.development
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								code/web/task_schedule/.env.development
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | NODE_ENV = 'development' | ||||||
|  | VITE_URL_VALIDATE_ACCOUNT="http://222.76.244.118:11001/desktop_archievement_backend/account/query_staff_info.do" | ||||||
|  | VITE_URL_LOGIN = "http://222.76.244.118:11001/admin-system/account/p13_account_check" | ||||||
							
								
								
									
										101
									
								
								code/web/task_schedule/.eslintrc.cjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								code/web/task_schedule/.eslintrc.cjs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,101 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2022-12-14 15:12:46 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @LastEditTime: 2023-03-05 21:35:01 | ||||||
|  |  * @FilePath: /task_schedule/.eslintrc.cjs | ||||||
|  |  * @Description:  | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | module.exports = { | ||||||
|  |   root: true, | ||||||
|  |   env: { //需要在 env 中指定运行的环境,这些环境其实就是一组预定义的全局变量,让 ESLint 知道当前环境存在这些全局变量 | ||||||
|  |     node: true, | ||||||
|  |     browser: true, | ||||||
|  |     es2021: true, | ||||||
|  |   }, | ||||||
|  |   extends: [ | ||||||
|  |     "plugin:vue/vue3-essential", | ||||||
|  |     "eslint:recommended", | ||||||
|  |   ], | ||||||
|  |   // parser: "@babel/eslint-parser", | ||||||
|  |   parserOptions: { | ||||||
|  |     ecmaVersion: 2021, | ||||||
|  |     sourceType: "module", | ||||||
|  |     parser: "@babel/eslint-parser", | ||||||
|  |     requireConfigFile: false, | ||||||
|  |   }, | ||||||
|  |   rules: { | ||||||
|  |     "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", | ||||||
|  |     "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", | ||||||
|  |     "no-unused-vars": "warn", | ||||||
|  |     "semi": ["error", "always",], //控制行尾部分号 | ||||||
|  |     "quotes": ["error", "double",], | ||||||
|  |     "comma-dangle": ["error", { | ||||||
|  |       "arrays": "always", | ||||||
|  |       "objects": "always", | ||||||
|  |       "imports": "never", | ||||||
|  |       "exports": "never", | ||||||
|  |       "functions": "never", | ||||||
|  |     },], //数组和对象键值对最后一个逗号 | ||||||
|  |     "comma-style": ["error", "last",], //逗号在行位 | ||||||
|  |     "array-bracket-spacing": ["error", "never",], | ||||||
|  |     "no-undef-init": "error", | ||||||
|  |     "no-invalid-this": "error", | ||||||
|  |     "no-use-before-define": "error", | ||||||
|  |     "no-shadow-restricted-names": "error", //禁止对一些关键字或者保留字进行赋值操作,比如NaN、Infinity、undefined、eval、arguments等 | ||||||
|  |     "comma-spacing": ["error", { "before": false, "after": true, },], | ||||||
|  |     "brace-style": ["error", "allman", { "allowSingleLine": true, },], | ||||||
|  |     "prefer-const": "warn", | ||||||
|  |   }, | ||||||
|  |   overrides: [ | ||||||
|  |     { | ||||||
|  |       files: ["*.ts",], | ||||||
|  |       parser: "@typescript-eslint/parser", | ||||||
|  |       parserOptions: { | ||||||
|  |         project: "./tsconfig.json", | ||||||
|  |       }, | ||||||
|  |       plugins: ["@typescript-eslint",], | ||||||
|  |       extends: [ | ||||||
|  |         "standard-with-typescript", | ||||||
|  |         "eslint:recommended", | ||||||
|  |         "plugin:@typescript-eslint/eslint-recommended", | ||||||
|  |         "plugin:@typescript-eslint/recommended", | ||||||
|  |       ], | ||||||
|  |       rules: { | ||||||
|  |         "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", | ||||||
|  |         "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", | ||||||
|  |         "@typescript-eslint/indent": ["error", 4,], | ||||||
|  |         "@typescript-eslint/no-extra-semi": "off", | ||||||
|  |         "@typescript-eslint/no-inferrable-types": "off", | ||||||
|  |         "@typescript-eslint/no-unused-vars": "warn", | ||||||
|  |         "@typescript-eslint/ban-ts-comment": "warn", | ||||||
|  |         "@typescript-eslint/member-delimiter-style": "off", | ||||||
|  |         "@typescript-eslint/semi": ["error", "always",], //控制行尾部分号 | ||||||
|  |         "@typescript-eslint/brace-style": ["error", "allman", { "allowSingleLine": true, },], | ||||||
|  |         "@typescript-eslint/comma-dangle": ["error", { | ||||||
|  |           "arrays": "always", | ||||||
|  |           "objects": "always", | ||||||
|  |           "imports": "never", | ||||||
|  |           "exports": "never", | ||||||
|  |           "functions": "never", | ||||||
|  |         },], //数组和对象键值对最后一个逗号 | ||||||
|  |         "@typescript-eslint/quotes": ["error", "double",], | ||||||
|  |         "@typescript-eslint/space-before-function-paren": "off", | ||||||
|  |         "@typescript-eslint/strict-boolean-expressions": ["error", { | ||||||
|  |           "allowString": false, | ||||||
|  |         },], | ||||||
|  |         "comma-style": ["error", "last",], //逗号在行位 | ||||||
|  |         "array-bracket-spacing": ["error", "never",], | ||||||
|  |         "no-undef-init": "error", | ||||||
|  |         "no-invalid-this": "error", | ||||||
|  |         "no-use-before-define": "error", | ||||||
|  |         "no-shadow-restricted-names": "error", //禁止对一些关键字或者保留字进行赋值操作,比如NaN、Infinity、undefined、eval、arguments等 | ||||||
|  |         "prefer-const": "warn", | ||||||
|  |         "spaced-comment": "error", | ||||||
|  |         "space-before-function-paren": "off", | ||||||
|  |       }, | ||||||
|  |     }, | ||||||
|  |   ], | ||||||
|  | }; | ||||||
| @@ -1,44 +0,0 @@ | |||||||
| /* |  | ||||||
|  * @Author: Kane |  | ||||||
|  * @Date: 2022-12-14 15:12:46 |  | ||||||
|  * @LastEditors: Kane |  | ||||||
|  * @LastEditTime: 2023-02-06 00:36:26 |  | ||||||
|  * @FilePath: /IT工具综合平台/.eslintrc.js |  | ||||||
|  * @Description:  |  | ||||||
|  *  |  | ||||||
|  * Copyright (c) ${2022} by Kane, All Rights Reserved.  |  | ||||||
|  */ |  | ||||||
| module.exports = { |  | ||||||
|   root: true, |  | ||||||
|   env: { |  | ||||||
|     node: true, |  | ||||||
|   }, |  | ||||||
|   'extends': [ |  | ||||||
|     'plugin:vue/vue3-essential', |  | ||||||
|     'eslint:recommended', |  | ||||||
|   ], |  | ||||||
|   parserOptions: { |  | ||||||
|     parser: '@babel/eslint-parser', |  | ||||||
|   }, |  | ||||||
|   rules: { |  | ||||||
|     'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', |  | ||||||
|     'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', |  | ||||||
|     "no-unused-vars": "warn", |  | ||||||
|     "semi": ["error", "always",],//控制行尾部分号 |  | ||||||
|     "comma-dangle": ["error", { |  | ||||||
|       "arrays": "always", |  | ||||||
|       "objects": "always", |  | ||||||
|       "imports": "never", |  | ||||||
|       "exports": "never", |  | ||||||
|       "functions": "never", |  | ||||||
|     },],//数组和对象键值对最后一个逗号 |  | ||||||
|     "comma-style": ["error", "last",], //逗号在行位 |  | ||||||
|     "array-bracket-spacing": ["error", "never",], |  | ||||||
|     "no-undef-init": "error", |  | ||||||
|     "no-invalid-this": "error", |  | ||||||
|     "no-use-before-define": "error", |  | ||||||
|     "no-shadow-restricted-names": "error", //禁止对一些关键字或者保留字进行赋值操作,比如NaN、Infinity、undefined、eval、arguments等 |  | ||||||
|     // "comma-spacing": ["error", { "before": false, "after": true, },], |  | ||||||
|     "brace-style": ["error", "allman", { "allowSingleLine": true, },], |  | ||||||
|   }, |  | ||||||
| }; |  | ||||||
							
								
								
									
										1
									
								
								code/web/task_schedule/.npmrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								code/web/task_schedule/.npmrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | registry=https://registry.npm.taobao.org/ | ||||||
							
								
								
									
										20
									
								
								code/web/task_schedule/env.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								code/web/task_schedule/env.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-03 10:07:00 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/env.d.ts | ||||||
|  |  * @Description: | ||||||
|  |  * | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved. | ||||||
|  |  */ | ||||||
|  | interface ImportMetaEnv | ||||||
|  | { | ||||||
|  |     readonly VITE_APP_TITLE: string; | ||||||
|  |     readonly VITE_URL_VALIDATE_ACCOUNT: string; | ||||||
|  |     // 更多环境变量... | ||||||
|  | } | ||||||
|  |  | ||||||
|  | interface ImportMeta | ||||||
|  | { | ||||||
|  |     readonly env: ImportMetaEnv; | ||||||
|  | } | ||||||
| @@ -1,13 +1,25 @@ | |||||||
|  | <!-- | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-02-28 00:12:43 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/index.html | ||||||
|  |  * @Description:  | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  | --> | ||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
| <html lang="en"> | <html lang="en"> | ||||||
|   <head> |     <head> | ||||||
|     <meta charset="UTF-8" /> |         <meta charset="UTF-8" /> | ||||||
|     <link rel="icon" type="image/svg+xml" href="/vite.svg" /> |         <link rel="icon" type="image/svg+xml" href="/vite.svg" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |         <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||||
|     <title>Vite + Vue</title> |         <title>看看你的业绩!!!</title> | ||||||
|   </head> |     </head> | ||||||
|   <body> |     <body> | ||||||
|     <div id="app"></div> |         <div id="app"></div> | ||||||
|     <script type="module" src="/src/main.js"></script> |         <script type="module" src="/src/main.js"></script> | ||||||
|   </body> |     </body> | ||||||
|  |     <script> | ||||||
|  |         // alert(window.location.href); | ||||||
|  |     </script> | ||||||
| </html> | </html> | ||||||
|   | |||||||
							
								
								
									
										13435
									
								
								code/web/task_schedule/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										13435
									
								
								code/web/task_schedule/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,29 +1,37 @@ | |||||||
| { | { | ||||||
|   "name": "task_schedule", |     "name": "task_schedule", | ||||||
|   "private": true, |     "private": true, | ||||||
|   "version": "0.0.0", |     "version": "0.0.0", | ||||||
|   "type": "module", |     "type": "module", | ||||||
|   "scripts": { |     "scripts": { | ||||||
|     "dev": "vite", |         "dev": "vite", | ||||||
|     "build": "vite build", |         "build": "vite build", | ||||||
|     "preview": "vite preview" |         "preview": "vite preview" | ||||||
|   }, |     }, | ||||||
|   "dependencies": { |     "dependencies": { | ||||||
|     "@babel/eslint-parser": "^7.19.1", |         "@babel/eslint-parser": "^7.19.1", | ||||||
|     "@element-plus/icons-vue": "^2.0.10", |         "@element-plus/icons-vue": "^2.0.10", | ||||||
|     "element-plus": "^2.2.30", |         "@typescript-eslint/eslint-plugin": "^5.54.0", | ||||||
|     "moment": "^2.29.4", |         "@typescript-eslint/parser": "^5.54.0", | ||||||
|     "vue": "^3.2.45", |         "axios": "^1.3.4", | ||||||
|     "vue-router": "^4.1.6", |         "babel": "^6.23.0", | ||||||
|     "vuex": "^4.1.0" |         "echarts": "^5.4.1", | ||||||
|   }, |         "element-plus": "^2.2.30", | ||||||
|   "devDependencies": { |         "moment": "^2.29.4", | ||||||
|     "@babel/eslint-parser": "^7.19.1", |         "typescript": "^4.9.5", | ||||||
|     "@vitejs/plugin-vue": "^4.0.0", |         "vue": "^3.2.45", | ||||||
|     "@vue/cli-plugin-eslint": "^5.0.8", |         "vue-router": "^4.1.6", | ||||||
|     "eslint": "^8.35.0", |         "vuex": "^4.1.0" | ||||||
|     "eslint-config-recommended": "^4.1.0", |     }, | ||||||
|     "eslint-plugin-vue": "^9.9.0", |     "devDependencies": { | ||||||
|     "vite": "^4.1.0" |         "@babel/eslint-parser": "^7.19.1", | ||||||
|   } |         "@vitejs/plugin-vue": "^4.0.0", | ||||||
|  |         "@vue/cli-plugin-eslint": "^5.0.8", | ||||||
|  |         "eslint": "^8.35.0", | ||||||
|  |         "eslint-config-recommended": "^4.1.0", | ||||||
|  |         "eslint-config-standard-with-typescript": "^34.0.0", | ||||||
|  |         "eslint-plugin-vue": "^9.9.0", | ||||||
|  |         "sass": "^1.58.3", | ||||||
|  |         "vite": "^4.1.0" | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								code/web/task_schedule/sfc.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								code/web/task_schedule/sfc.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-04 17:21:37 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/sfc.d.ts | ||||||
|  |  * @Description:  | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  |  | ||||||
							
								
								
									
										14
									
								
								code/web/task_schedule/shims-vue.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								code/web/task_schedule/shims-vue.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-04 17:23:02 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/shims-vue.d.ts | ||||||
|  |  * @Description:  | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | declare module '*.vue' { | ||||||
|  |     import { ComponentOptions } from 'vue'; | ||||||
|  |     const componentOptions: ComponentOptions; | ||||||
|  |     export default componentOptions; | ||||||
|  | } | ||||||
| @@ -2,84 +2,34 @@ | |||||||
|  * @Author: Kane |  * @Author: Kane | ||||||
|  * @Date: 2023-02-15 09:25:52 |  * @Date: 2023-02-15 09:25:52 | ||||||
|  * @LastEditors: Kane |  * @LastEditors: Kane | ||||||
|  * @LastEditTime: 2023-02-28 01:15:01 |  * @LastEditTime: 2023-03-03 10:00:54 | ||||||
|  * @FilePath: /task_schedule/src/App.vue |  * @FilePath: /task_schedule/src/App.vue | ||||||
|  * @Description:  |  * @Description:  | ||||||
|  |  * 应用的框架: | ||||||
|  |  * 1、配置el-config-provider,配置为中文。  | ||||||
|  *  |  *  | ||||||
|  * Copyright (c) ${2022} by Kane, All Rights Reserved.  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
| --> | --> | ||||||
| <template> | <template> | ||||||
|   <el-config-provider :locale="this.locale"> |   <el-config-provider :locale="locale"> | ||||||
|     <router-view></router-view> |     <router-view></router-view> | ||||||
|   </el-config-provider> |   </el-config-provider> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
| <script> | <script lang="ts"> | ||||||
| import HelloWorld from "./components/HelloWorld.vue"; |  | ||||||
| import zhCn from "element-plus/lib/locale/lang/zh-cn"; //element-plus语言组件 | import zhCn from "element-plus/lib/locale/lang/zh-cn"; //element-plus语言组件 | ||||||
| import { reactive } from "vue"; |  | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|   name: "App", |   name: "App", | ||||||
|   components: { HelloWorld }, |   components: {}, | ||||||
|   setup(props) |   setup() | ||||||
|   { |   { | ||||||
|     const locale = zhCn; |     const locale = zhCn; | ||||||
|     const ui = reactive({ |  | ||||||
|       counter: 0, |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     const onCount = () => |     return { locale, }; | ||||||
|     { |  | ||||||
|       ui.counter++; |  | ||||||
|       console.log(ui.counter); |  | ||||||
|     }; |  | ||||||
|  |  | ||||||
|     // setInterval(() => |  | ||||||
|     // { |  | ||||||
|     //   ui.counter += 1; |  | ||||||
|     //   // console.log(counter); |  | ||||||
|     // }, 1000); |  | ||||||
|  |  | ||||||
|     // setInterval(() => |  | ||||||
|     // { |  | ||||||
|     //   location.reload(); |  | ||||||
|     // }, 5000); |  | ||||||
|  |  | ||||||
|     return { locale, ui, onCount }; |  | ||||||
|   }, |   }, | ||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
| <style scoped> | <style scoped></style> | ||||||
| .app_wrapper { |  | ||||||
|   box-sizing: border-box; |  | ||||||
|   width: 100%; |  | ||||||
|   height: calc(100vh - 60px); |  | ||||||
|   /* border: 1px solid brown; */ |  | ||||||
|  |  | ||||||
|   /* 布局 */ |  | ||||||
|   display: flex; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| .counter_wrapper { |  | ||||||
|   width: 500px; |  | ||||||
|   margin-top: 1cm; |  | ||||||
|   margin-left: auto; |  | ||||||
|   margin-right: 1cm; |  | ||||||
|   border-radius: 5px; |  | ||||||
|   background-color: rgb(250 250 250 / 75%); |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| .counter_wrapper:hover { |  | ||||||
|   box-shadow: 0px 0px 20px 10px rgb(14 18 22 / 10%); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| .counter_wrapper span { |  | ||||||
|   display: block; |  | ||||||
|   font-size: 150px; |  | ||||||
|   text-align: right; |  | ||||||
| } |  | ||||||
| </style> |  | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								code/web/task_schedule/src/assets/css/index.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								code/web/task_schedule/src/assets/css/index.scss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-03 09:56:05 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/assets/css/index.scss | ||||||
|  |  * @Description: 全局css的入口文件 | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | @import url("./public/reset.scss"); | ||||||
|  | @import url("./public/normalize.scss"); | ||||||
|  | @import url("../font/fonts.css"); | ||||||
|  | // @import url("./public/color.scss"); | ||||||
							
								
								
									
										9
									
								
								code/web/task_schedule/src/assets/css/public/color.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								code/web/task_schedule/src/assets/css/public/color.scss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  |  | ||||||
|  | $color-bg-01: #fecb96; | ||||||
|  | $color-bg-02: #f7954e; | ||||||
|  | $color-bg-03: #f27620; | ||||||
|  | $color-bg-04: #da3703; | ||||||
|  | $color-bg-05: #ba1800; | ||||||
|  |  | ||||||
|  | $color-charts-bg:#ffffff9f; | ||||||
|  | $color-honorlist-bg: rgba(255, 255, 255, 0.3); | ||||||
							
								
								
									
										359
									
								
								code/web/task_schedule/src/assets/css/public/normalize.scss
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										359
									
								
								code/web/task_schedule/src/assets/css/public/normalize.scss
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,359 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-03 10:17:59 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/assets/css/public/normalize.scss | ||||||
|  |  * @Description:  | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ | ||||||
|  |  | ||||||
|  | /* Document | ||||||
|  |    ========================================================================== */ | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 1. Correct the line height in all browsers. | ||||||
|  |  * 2. Prevent adjustments of font size after orientation changes in iOS. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  |  html { | ||||||
|  |     line-height: 1.15; /* 1 */ | ||||||
|  |     -webkit-text-size-adjust: 100%; /* 2 */ | ||||||
|  |     text-size-adjust: 100%; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /* Sections | ||||||
|  |      ========================================================================== */ | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Remove the margin in all browsers. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   body { | ||||||
|  |     margin: 0; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Render the `main` element consistently in IE. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   main { | ||||||
|  |     display: block; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Correct the font size and margin on `h1` elements within `section` and | ||||||
|  |    * `article` contexts in Chrome, Firefox, and Safari. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   h1 { | ||||||
|  |     font-size: 2em; | ||||||
|  |     margin: 0.67em 0; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /* Grouping content | ||||||
|  |      ========================================================================== */ | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * 1. Add the correct box sizing in Firefox. | ||||||
|  |    * 2. Show the overflow in Edge and IE. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   hr { | ||||||
|  |     box-sizing: content-box; /* 1 */ | ||||||
|  |     height: 0; /* 1 */ | ||||||
|  |     overflow: visible; /* 2 */ | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * 1. Correct the inheritance and scaling of font size in all browsers. | ||||||
|  |    * 2. Correct the odd `em` font sizing in all browsers. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   pre { | ||||||
|  |     font-family: monospace, monospace; /* 1 */ | ||||||
|  |     font-size: 1em; /* 2 */ | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /* Text-level semantics | ||||||
|  |      ========================================================================== */ | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Remove the gray background on active links in IE 10. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   a { | ||||||
|  |     background-color: transparent; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * 1. Remove the bottom border in Chrome 57- | ||||||
|  |    * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   abbr[title] { | ||||||
|  |     border-bottom: none; /* 1 */ | ||||||
|  |     text-decoration: underline; /* 2 */ | ||||||
|  |     text-decoration: underline dotted; /* 2 */ | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Add the correct font weight in Chrome, Edge, and Safari. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   b, | ||||||
|  |   strong { | ||||||
|  |     font-weight: bolder; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * 1. Correct the inheritance and scaling of font size in all browsers. | ||||||
|  |    * 2. Correct the odd `em` font sizing in all browsers. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   code, | ||||||
|  |   kbd, | ||||||
|  |   samp { | ||||||
|  |     font-family: monospace, monospace; /* 1 */ | ||||||
|  |     font-size: 1em; /* 2 */ | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Add the correct font size in all browsers. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   small { | ||||||
|  |     font-size: 80%; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Prevent `sub` and `sup` elements from affecting the line height in | ||||||
|  |    * all browsers. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   sub, | ||||||
|  |   sup { | ||||||
|  |     font-size: 75%; | ||||||
|  |     line-height: 0; | ||||||
|  |     position: relative; | ||||||
|  |     vertical-align: baseline; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   sub { | ||||||
|  |     bottom: -0.25em; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   sup { | ||||||
|  |     top: -0.5em; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /* Embedded content | ||||||
|  |      ========================================================================== */ | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Remove the border on images inside links in IE 10. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   img { | ||||||
|  |     border-style: none; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /* Forms | ||||||
|  |      ========================================================================== */ | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * 1. Change the font styles in all browsers. | ||||||
|  |    * 2. Remove the margin in Firefox and Safari. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   button, | ||||||
|  |   input, | ||||||
|  |   optgroup, | ||||||
|  |   select, | ||||||
|  |   textarea { | ||||||
|  |     font-family: inherit; /* 1 */ | ||||||
|  |     font-size: 100%; /* 1 */ | ||||||
|  |     line-height: 1.15; /* 1 */ | ||||||
|  |     margin: 0; /* 2 */ | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Show the overflow in IE. | ||||||
|  |    * 1. Show the overflow in Edge. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   button, | ||||||
|  |   input { /* 1 */ | ||||||
|  |     overflow: visible; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Remove the inheritance of text transform in Edge, Firefox, and IE. | ||||||
|  |    * 1. Remove the inheritance of text transform in Firefox. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   button, | ||||||
|  |   select { /* 1 */ | ||||||
|  |     text-transform: none; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Correct the inability to style clickable types in iOS and Safari. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   button, | ||||||
|  |   [type="button"], | ||||||
|  |   [type="reset"], | ||||||
|  |   [type="submit"] { | ||||||
|  |     -webkit-appearance: button; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Remove the inner border and padding in Firefox. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   button::-moz-focus-inner, | ||||||
|  |   [type="button"]::-moz-focus-inner, | ||||||
|  |   [type="reset"]::-moz-focus-inner, | ||||||
|  |   [type="submit"]::-moz-focus-inner { | ||||||
|  |     border-style: none; | ||||||
|  |     padding: 0; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Restore the focus styles unset by the previous rule. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   button:-moz-focusring, | ||||||
|  |   [type="button"]:-moz-focusring, | ||||||
|  |   [type="reset"]:-moz-focusring, | ||||||
|  |   [type="submit"]:-moz-focusring { | ||||||
|  |     outline: 1px dotted ButtonText; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Correct the padding in Firefox. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   fieldset { | ||||||
|  |     padding: 0.35em 0.75em 0.625em; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * 1. Correct the text wrapping in Edge and IE. | ||||||
|  |    * 2. Correct the color inheritance from `fieldset` elements in IE. | ||||||
|  |    * 3. Remove the padding so developers are not caught out when they zero out | ||||||
|  |    *    `fieldset` elements in all browsers. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   legend { | ||||||
|  |     box-sizing: border-box; /* 1 */ | ||||||
|  |     color: inherit; /* 2 */ | ||||||
|  |     display: table; /* 1 */ | ||||||
|  |     max-width: 100%; /* 1 */ | ||||||
|  |     padding: 0; /* 3 */ | ||||||
|  |     white-space: normal; /* 1 */ | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Add the correct vertical alignment in Chrome, Firefox, and Opera. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   progress { | ||||||
|  |     vertical-align: baseline; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Remove the default vertical scrollbar in IE 10+. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   textarea { | ||||||
|  |     overflow: auto; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * 1. Add the correct box sizing in IE 10. | ||||||
|  |    * 2. Remove the padding in IE 10. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   [type="checkbox"], | ||||||
|  |   [type="radio"] { | ||||||
|  |     box-sizing: border-box; /* 1 */ | ||||||
|  |     padding: 0; /* 2 */ | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Correct the cursor style of increment and decrement buttons in Chrome. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   [type="number"]::-webkit-inner-spin-button, | ||||||
|  |   [type="number"]::-webkit-outer-spin-button { | ||||||
|  |     height: auto; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * 1. Correct the odd appearance in Chrome and Safari. | ||||||
|  |    * 2. Correct the outline style in Safari. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   [type="search"] { | ||||||
|  |     -webkit-appearance: textfield; /* 1 */ | ||||||
|  |     outline-offset: -2px; /* 2 */ | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Remove the inner padding in Chrome and Safari on macOS. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   [type="search"]::-webkit-search-decoration { | ||||||
|  |     -webkit-appearance: none; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * 1. Correct the inability to style clickable types in iOS and Safari. | ||||||
|  |    * 2. Change font properties to `inherit` in Safari. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   ::-webkit-file-upload-button { | ||||||
|  |     -webkit-appearance: button; /* 1 */ | ||||||
|  |     font: inherit; /* 2 */ | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /* Interactive | ||||||
|  |      ========================================================================== */ | ||||||
|  |    | ||||||
|  |   /* | ||||||
|  |    * Add the correct display in Edge, IE 10+, and Firefox. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   details { | ||||||
|  |     display: block; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /* | ||||||
|  |    * Add the correct display in all browsers. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   summary { | ||||||
|  |     display: list-item; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /* Misc | ||||||
|  |      ========================================================================== */ | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Add the correct display in IE 10+. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   template { | ||||||
|  |     display: none; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * Add the correct display in IE 10. | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   [hidden] { | ||||||
|  |     display: none; | ||||||
|  |   } | ||||||
							
								
								
									
										48
									
								
								code/web/task_schedule/src/assets/css/public/reset.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								code/web/task_schedule/src/assets/css/public/reset.scss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | |||||||
|  | /* http://meyerweb.com/eric/tools/css/reset/  | ||||||
|  |    v2.0 | 20110126 | ||||||
|  |    License: none (public domain) | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | html, body, div, span, applet, object, iframe, | ||||||
|  | h1, h2, h3, h4, h5, h6, p, blockquote, pre, | ||||||
|  | a, abbr, acronym, address, big, cite, code, | ||||||
|  | del, dfn, em, img, ins, kbd, q, s, samp, | ||||||
|  | small, strike, strong, sub, sup, tt, var, | ||||||
|  | b, u, i, center, | ||||||
|  | dl, dt, dd, ol, ul, li, | ||||||
|  | fieldset, form, label, legend, | ||||||
|  | table, caption, tbody, tfoot, thead, tr, th, td, | ||||||
|  | article, aside, canvas, details, embed,  | ||||||
|  | figure, figcaption, footer, header, hgroup,  | ||||||
|  | menu, nav, output, ruby, section, summary, | ||||||
|  | time, mark, audio, video { | ||||||
|  | 	margin: 0; | ||||||
|  | 	padding: 0; | ||||||
|  | 	border: 0; | ||||||
|  | 	font-size: 100%; | ||||||
|  | 	font: inherit; | ||||||
|  | 	vertical-align: baseline; | ||||||
|  | } | ||||||
|  | /* HTML5 display-role reset for older browsers */ | ||||||
|  | article, aside, details, figcaption, figure,  | ||||||
|  | footer, header, hgroup, menu, nav, section { | ||||||
|  | 	display: block; | ||||||
|  | } | ||||||
|  | body { | ||||||
|  | 	line-height: 1; | ||||||
|  | } | ||||||
|  | ol, ul { | ||||||
|  | 	list-style: none; | ||||||
|  | } | ||||||
|  | blockquote, q { | ||||||
|  | 	quotes: none; | ||||||
|  | } | ||||||
|  | blockquote:before, blockquote:after, | ||||||
|  | q:before, q:after { | ||||||
|  | 	content: ''; | ||||||
|  | 	content: none; | ||||||
|  | } | ||||||
|  | table { | ||||||
|  | 	border-collapse: collapse; | ||||||
|  | 	border-spacing: 0; | ||||||
|  | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								code/web/task_schedule/src/assets/font/FZSJ-RUGAQSAY.TTF
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								code/web/task_schedule/src/assets/font/FZSJ-RUGAQSAY.TTF
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								code/web/task_schedule/src/assets/font/FZZhuoHJW.TTF
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								code/web/task_schedule/src/assets/font/FZZhuoHJW.TTF
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										11
									
								
								code/web/task_schedule/src/assets/font/fonts.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								code/web/task_schedule/src/assets/font/fonts.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | @font-face { | ||||||
|  |     font-family: "FZ-ZHUOHEI"; | ||||||
|  |     src: url("FZZhuoHJW.TTF"); | ||||||
|  |     font-weight: normal; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @font-face { | ||||||
|  |     font-family: "FZ-RGAQSAY"; | ||||||
|  |     src: url("FZSJ-RUGAQSAY.TTF"); | ||||||
|  |     font-weight: normal; | ||||||
|  | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								code/web/task_schedule/src/assets/img/ranking/copper_medal.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								code/web/task_schedule/src/assets/img/ranking/copper_medal.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 78 KiB | 
							
								
								
									
										
											BIN
										
									
								
								code/web/task_schedule/src/assets/img/ranking/medal.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								code/web/task_schedule/src/assets/img/ranking/medal.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 169 KiB | 
							
								
								
									
										
											BIN
										
									
								
								code/web/task_schedule/src/assets/img/ranking/stop.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								code/web/task_schedule/src/assets/img/ranking/stop.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 45 KiB | 
| @@ -0,0 +1,108 @@ | |||||||
|  | <!-- | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-04 16:09:31 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/components/ArchievementChartComponent.vue | ||||||
|  |  * @Description: 业绩图表组件 | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  | --> | ||||||
|  | <template> | ||||||
|  |     <div class="archievement-wrapper"> | ||||||
|  |         <div id="chartWrapper"></div> | ||||||
|  |     </div> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script lang="ts"> | ||||||
|  | import { reactive, onMounted } from "vue"; | ||||||
|  | import * as echarts from "echarts"; | ||||||
|  |  | ||||||
|  | export default { | ||||||
|  |     name: "ArchievementChartComponent", | ||||||
|  |     props: { | ||||||
|  |         chart_data: { | ||||||
|  |             type: Array, | ||||||
|  |             require: true, | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     setup(props) | ||||||
|  |     { | ||||||
|  |         const ui = reactive({ | ||||||
|  |             chart_data: props.chart_data, | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         //设置图表 | ||||||
|  |         const initCharts = () =>  | ||||||
|  |         { | ||||||
|  |             const chartDom = document.getElementById("chartWrapper"); | ||||||
|  |             // @ts-ignore | ||||||
|  |             const myChart = echarts.init(chartDom); | ||||||
|  |             const option = { | ||||||
|  |                 xAxis: { | ||||||
|  |                     type: "category", | ||||||
|  |                     data: ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二",], | ||||||
|  |                 }, | ||||||
|  |                 yAxis: { | ||||||
|  |                     type: "value", | ||||||
|  |                     data: [200, 400, 600, 800, 1000,], | ||||||
|  |                 }, | ||||||
|  |                 series: [ | ||||||
|  |                     { | ||||||
|  |                         data: props.chart_data, | ||||||
|  |                         type: "line", | ||||||
|  |                     }, | ||||||
|  |                 ], | ||||||
|  |             }; | ||||||
|  |  | ||||||
|  |             option && myChart.setOption(option); | ||||||
|  |  | ||||||
|  |             window.onresize = function ()  | ||||||
|  |             { | ||||||
|  |                 //自适应大小 | ||||||
|  |                 myChart.resize(); | ||||||
|  |             }; | ||||||
|  |         }; | ||||||
|  |  | ||||||
|  |         onMounted(() => | ||||||
|  |         { | ||||||
|  |             initCharts(); | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         return { ui, initCharts, }; | ||||||
|  |     }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style lang="scss"> | ||||||
|  | .archievement-wrapper { | ||||||
|  |     height: 100%; | ||||||
|  |     width: 100%; | ||||||
|  |     // display: flex; | ||||||
|  |     // flex-direction: column; | ||||||
|  |     // justify-content: center; | ||||||
|  |     // align-items: stretch; | ||||||
|  |  | ||||||
|  |     // span { | ||||||
|  |     //     display: block; | ||||||
|  |     //     width: 100%; | ||||||
|  |     //     color: #25e6e6; | ||||||
|  |     //     text-align: center; | ||||||
|  |  | ||||||
|  |     //     font: { | ||||||
|  |     //         size: 35px; | ||||||
|  |     //         family: "FZ-ZHUOHEI"; | ||||||
|  |     //     } | ||||||
|  |  | ||||||
|  |     //     flex-grow: 0; | ||||||
|  |     // } | ||||||
|  |  | ||||||
|  |     #chartWrapper { | ||||||
|  |         min-height: 200px; | ||||||
|  |         width: 100%; | ||||||
|  |         background-color: $color-charts-bg; | ||||||
|  |         backdrop-filter: blur(10px); | ||||||
|  |         flex-grow: 1; | ||||||
|  |         border-radius: 5px; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | </style> | ||||||
| @@ -0,0 +1,80 @@ | |||||||
|  | <!-- | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-07 23:22:13 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/components/ArchievementCompleteRateComponent.vue | ||||||
|  |  * @Description: 业绩完成率组件 | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  | --> | ||||||
|  | <template> | ||||||
|  |     <div class="complete-rate-wrapper"> | ||||||
|  |         <el-progress type="circle" :percentage="ui.percentage"> | ||||||
|  |             <template #default="{ percentage }"> | ||||||
|  |                 <span class="percentage-label">{{ ui.indicator }}</span> | ||||||
|  |                 <span class="percentage-value">{{ percentage }}%</span> | ||||||
|  |             </template> | ||||||
|  |         </el-progress> | ||||||
|  |     </div> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script lang="ts"> | ||||||
|  | import { reactive } from "vue"; | ||||||
|  | export default { | ||||||
|  |     name: "ArchievementCompleteRateComponent", | ||||||
|  |     props: { | ||||||
|  |         percentage: { | ||||||
|  |             type: String, | ||||||
|  |             require: true, | ||||||
|  |         }, | ||||||
|  |         indicator: { | ||||||
|  |             type: String, | ||||||
|  |             default: "", | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     setup(props) | ||||||
|  |     { | ||||||
|  |         const percentage = Number(props.percentage).valueOf(); | ||||||
|  |  | ||||||
|  |         const ui = reactive({ | ||||||
|  |             percentage: percentage, | ||||||
|  |             indicator: props.indicator, | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         return { ui, }; | ||||||
|  |     }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style lang="scss"> | ||||||
|  | .complete-rate-wrapper { | ||||||
|  |     // display: flex; | ||||||
|  |     // flex-direction: column; | ||||||
|  |     // justify-content: center; | ||||||
|  |     // align-items: center; | ||||||
|  |  | ||||||
|  |     span { | ||||||
|  |         display: block; | ||||||
|  |         width: 100%; | ||||||
|  |         color: #fff; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     .el-progress { | ||||||
|  |         margin: 5px; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     .percentage-value { | ||||||
|  |         display: block; | ||||||
|  |         margin-top: 10px; | ||||||
|  |         font-size: 28px; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     .percentage-label { | ||||||
|  |         display: block; | ||||||
|  |         margin-top: 10px; | ||||||
|  |         font-size: 12px; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
|  | </style> | ||||||
| @@ -0,0 +1,75 @@ | |||||||
|  | <!-- | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-08 18:32:13 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/components/DishonorListComponent.vue | ||||||
|  |  * @Description:  | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  | --> | ||||||
|  | <template> | ||||||
|  |     <div class="dishonorlist-wrapper"> | ||||||
|  |         <div class="banner-wrapper"> | ||||||
|  |             <img src="@/assets/img/ranking/stop.png" alt=""> | ||||||
|  |             <div class="title-wrapper"> | ||||||
|  |                 <span>"消7灭6"突围战</span> | ||||||
|  |                 <span>二月入营坐席</span> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script lang="ts"> | ||||||
|  | export default { | ||||||
|  |     name: "DishonorListComponent", | ||||||
|  |     props: { | ||||||
|  |         month: { | ||||||
|  |             type: String, | ||||||
|  |             require: true, | ||||||
|  |         }, | ||||||
|  |         dishonorPersons: { | ||||||
|  |             type: Array, | ||||||
|  |             require: true, | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     setup() { }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style scoped lang="scss"> | ||||||
|  | .dishonorlist-wrapper { | ||||||
|  |     height: 240px; | ||||||
|  |     width: 360px; | ||||||
|  |     border-radius: 5px; | ||||||
|  |  | ||||||
|  |     background-color: $color-honorlist-bg; | ||||||
|  |     backdrop-filter: blur(10px); | ||||||
|  |  | ||||||
|  |     padding: 10px; | ||||||
|  |  | ||||||
|  |     .banner-wrapper { | ||||||
|  |         display: flex; | ||||||
|  |         justify-content: center; | ||||||
|  |         align-items: stretch; | ||||||
|  |  | ||||||
|  |         img { | ||||||
|  |             // width: 70px; | ||||||
|  |             height: 60px; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         span { | ||||||
|  |             display: block; | ||||||
|  |             width: 100%; | ||||||
|  |             text-align: center; | ||||||
|  |  | ||||||
|  |             font: { | ||||||
|  |                 family: "fz-zhuohei"; | ||||||
|  |                 size: 1.7rem; | ||||||
|  |                 weight: 100; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             color: #fff; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | </style> | ||||||
| @@ -1,40 +0,0 @@ | |||||||
| <script setup> |  | ||||||
| import { ref } from 'vue' |  | ||||||
|  |  | ||||||
| defineProps({ |  | ||||||
|   msg: String, |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| const count = ref(0) |  | ||||||
| </script> |  | ||||||
|  |  | ||||||
| <template> |  | ||||||
|   <h1>{{ msg }}</h1> |  | ||||||
|  |  | ||||||
|   <div class="card"> |  | ||||||
|     <button type="button" @click="count++">count is {{ count }}</button> |  | ||||||
|     <p> |  | ||||||
|       Edit |  | ||||||
|       <code>components/HelloWorld.vue</code> to test HMR |  | ||||||
|     </p> |  | ||||||
|   </div> |  | ||||||
|  |  | ||||||
|   <p> |  | ||||||
|     Check out |  | ||||||
|     <a href="https://vuejs.org/guide/quick-start.html#local" target="_blank" |  | ||||||
|       >create-vue</a |  | ||||||
|     >, the official Vue + Vite starter |  | ||||||
|   </p> |  | ||||||
|   <p> |  | ||||||
|     Install |  | ||||||
|     <a href="https://github.com/johnsoncodehk/volar" target="_blank">Volar</a> |  | ||||||
|     in your IDE for a better DX |  | ||||||
|   </p> |  | ||||||
|   <p class="read-the-docs">Click on the Vite and Vue logos to learn more</p> |  | ||||||
| </template> |  | ||||||
|  |  | ||||||
| <style scoped> |  | ||||||
| .read-the-docs { |  | ||||||
|   color: #888; |  | ||||||
| } |  | ||||||
| </style> |  | ||||||
							
								
								
									
										128
									
								
								code/web/task_schedule/src/components/HonorListComponent.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								code/web/task_schedule/src/components/HonorListComponent.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,128 @@ | |||||||
|  | <!-- | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-08 14:18:39 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/components/HonorListComponent.vue | ||||||
|  |  * @Description: 光荣榜组件 | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  | --> | ||||||
|  | <template> | ||||||
|  |     <div class="honorlist-wrapper"> | ||||||
|  |         <span class="title">“90俱乐部”{{ $props.month }}月入围坐席</span> | ||||||
|  |         <div class="reward-wrapper"> | ||||||
|  |             <div class="leading-reward-wrapper"> | ||||||
|  |                 <div class="banner-wrapper"> | ||||||
|  |                     <img src="@/assets/img/ranking/medal.png" alt="领跑奖"> | ||||||
|  |                     <span>领跑奖</span> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  |             <div class="advance-reward-wrapper"> | ||||||
|  |                 <div class="banner-wrapper"> | ||||||
|  |                     <img src="@/assets/img/ranking/copper_medal.png" alt="飞跃奖"> | ||||||
|  |                     <span>飞跃奖</span> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script lang="ts"> | ||||||
|  | export default { | ||||||
|  |     name: "HonorListComponent", | ||||||
|  |     props: { | ||||||
|  |         month: { | ||||||
|  |             type: String, | ||||||
|  |             require: true, | ||||||
|  |         }, | ||||||
|  |         leadingReward: { | ||||||
|  |             type: String, | ||||||
|  |             require: true, | ||||||
|  |         }, | ||||||
|  |         advanceReward: { | ||||||
|  |             type: String, | ||||||
|  |             require: true, | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     setup(props) | ||||||
|  |     { | ||||||
|  |         return {}; | ||||||
|  |     }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style scoped lang="scss"> | ||||||
|  | .honorlist-wrapper { | ||||||
|  |     height: 240px; | ||||||
|  |     width: 360px; | ||||||
|  |     border-radius: 5px; | ||||||
|  |  | ||||||
|  |     background-color: $color-honorlist-bg; | ||||||
|  |     backdrop-filter: blur(10px); | ||||||
|  |  | ||||||
|  |     padding: 10px; | ||||||
|  |  | ||||||
|  |     >*+* { | ||||||
|  |         margin-top: 10px; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     .title { | ||||||
|  |         display: block; | ||||||
|  |         text-align: center; | ||||||
|  |  | ||||||
|  |         font: { | ||||||
|  |             family: "FZ-ZHUOHEI"; | ||||||
|  |             size: 1.4rem; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         color: goldenrod; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     .reward-wrapper { | ||||||
|  |         width: 100%; | ||||||
|  |  | ||||||
|  |         display: flex; | ||||||
|  |         justify-content: center; | ||||||
|  |         align-items: stretch; | ||||||
|  |  | ||||||
|  |         >*+* { | ||||||
|  |             margin-left: 10px; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         .leading-reward-wrapper { | ||||||
|  |             width: 165px; | ||||||
|  |             height: 100%; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         .advance-reward-wrapper { | ||||||
|  |             width: 165px; | ||||||
|  |             height: 100%; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         .banner-wrapper { | ||||||
|  |             display: flex; | ||||||
|  |             justify-content: center; | ||||||
|  |             align-items: center; | ||||||
|  |  | ||||||
|  |             img { | ||||||
|  |                 width: 30px; | ||||||
|  |                 height: 30px; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             span { | ||||||
|  |                 display: inline-block; | ||||||
|  |                 text-align: center; | ||||||
|  |                 color: #fff; | ||||||
|  |  | ||||||
|  |                 font: { | ||||||
|  |                     size: 1.5rem; | ||||||
|  |                     family: "FZ-ZHUOHEI"; | ||||||
|  |                     weight: 100; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | </style> | ||||||
							
								
								
									
										91
									
								
								code/web/task_schedule/src/data/cpicxim/StaffInfo.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								code/web/task_schedule/src/data/cpicxim/StaffInfo.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,91 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-02-28 14:48:30 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/data/cpicxim/StaffInfo.ts | ||||||
|  |  * @Description: | ||||||
|  |  * | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | class StaffInfo | ||||||
|  | { | ||||||
|  |     constructor( | ||||||
|  |         p13uid: string, | ||||||
|  |         staffCode: string, | ||||||
|  |         staffName: string, | ||||||
|  |         departmentCode: string, | ||||||
|  |         departmentName: string, | ||||||
|  |         sectionOfficeCode: string, | ||||||
|  |         sectionOfficeName: string | ||||||
|  |     ) | ||||||
|  |     { | ||||||
|  |         this._stuffCode = staffCode; | ||||||
|  |         this._stuffName = staffName; | ||||||
|  |         this._p13uid = p13uid; | ||||||
|  |         this._departmentCode = departmentCode; | ||||||
|  |         this._departmentName = departmentName; | ||||||
|  |         this._sectionOfficeCode = sectionOfficeCode; | ||||||
|  |         this._sectionOfficeName = sectionOfficeName; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public get stuffCode(): string | ||||||
|  |     { | ||||||
|  |         return this._stuffCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public set stuffCode(stuffCode: string) | ||||||
|  |     { | ||||||
|  |         this._stuffCode = stuffCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public get stuffName(): string | ||||||
|  |     { | ||||||
|  |         return this._stuffName; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public set stuffName(stuffName: string) | ||||||
|  |     { | ||||||
|  |         this._stuffName = stuffName; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public get P13UID(): string | ||||||
|  |     { | ||||||
|  |         return this._p13uid; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public set P13UID(p13uid: string) | ||||||
|  |     { | ||||||
|  |         this._p13uid = p13uid; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public set departmentCode(departmentCode: string) | ||||||
|  |     { | ||||||
|  |         this._departmentCode = departmentCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public get departmentCode(): string | ||||||
|  |     { | ||||||
|  |         return this._departmentCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public set departmentName(departmentName: string) | ||||||
|  |     { | ||||||
|  |         this._departmentName = departmentName; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public get departmentName(): string | ||||||
|  |     { | ||||||
|  |         return this._departmentName; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private _stuffCode: string; | ||||||
|  |     private _stuffName: string; | ||||||
|  |     private _p13uid: string; | ||||||
|  |     private _departmentCode: string; | ||||||
|  |     private _departmentName: string; | ||||||
|  |     private readonly _sectionOfficeCode: string; | ||||||
|  |     private readonly _sectionOfficeName: string; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export { StaffInfo }; | ||||||
| @@ -2,24 +2,26 @@ | |||||||
|  * @Author: Kane |  * @Author: Kane | ||||||
|  * @Date: 2023-02-15 09:25:52 |  * @Date: 2023-02-15 09:25:52 | ||||||
|  * @LastEditors: Kane |  * @LastEditors: Kane | ||||||
|  * @LastEditTime: 2023-02-15 16:21:24 |  * @LastEditTime: 2023-03-03 15:50:08 | ||||||
|  * @FilePath: /task_schedule/src/main.js |  * @FilePath: /task_schedule/src/main.js | ||||||
|  * @Description:  |  * @Description:  | ||||||
|  *  |  *  | ||||||
|  * Copyright (c) ${2022} by Kane, All Rights Reserved.  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  */ |  */ | ||||||
| import { createApp } from 'vue'; | import { createApp } from 'vue'; | ||||||
| import { router } from "./router/index.js"; | import { router } from "./router/index"; | ||||||
|  | import store from "@/store/index"; | ||||||
|  |  | ||||||
| import App from './App.vue'; | import App from './App.vue'; | ||||||
|  |  | ||||||
| import './style.css'; |  | ||||||
|  |  | ||||||
| //css | //css | ||||||
|  | import './style.css'; | ||||||
|  | import "./assets/css/index.scss"; | ||||||
| import("element-plus/dist/index.css"); | import("element-plus/dist/index.css"); | ||||||
|  |  | ||||||
|  |  | ||||||
| //element-plus | //element-plus | ||||||
| import ElementPlus from "element-plus";; | import ElementPlus from "element-plus"; | ||||||
| import * as ElementPlusIconsVue from "@element-plus/icons-vue"; | import * as ElementPlusIconsVue from "@element-plus/icons-vue"; | ||||||
|  |  | ||||||
| const app = createApp(App); | const app = createApp(App); | ||||||
| @@ -32,4 +34,5 @@ for (const [key, component,] of Object.entries(ElementPlusIconsVue)) | |||||||
|  |  | ||||||
| app.use(ElementPlus); | app.use(ElementPlus); | ||||||
| app.use(router); | app.use(router); | ||||||
|  | app.use(store); | ||||||
| app.mount('#app'); | app.mount('#app'); | ||||||
|   | |||||||
| @@ -1,12 +1,13 @@ | |||||||
| /* | /* | ||||||
|  * @Author: Kane |  * @Author: Kane | ||||||
|  * @Date: 2023-02-28 00:20:48 |  * @Date: 2023-02-28 01:22:48 | ||||||
|  * @LastEditors: Kane |  * @LastEditors: Kane | ||||||
|  * @FilePath: /task_schedule/src/router/index.js |  * @FilePath: /task_schedule/src/router/index.js | ||||||
|  * @Description: 路由配置文件 |  * @Description:  | ||||||
|  *  |  *  | ||||||
|  * Copyright (c) ${2022} by Kane, All Rights Reserved.  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| import { createRouter, createWebHashHistory } from "vue-router"; | import { createRouter, createWebHashHistory } from "vue-router"; | ||||||
|  |  | ||||||
| const routes = [ | const routes = [ | ||||||
| @@ -20,7 +21,19 @@ const routes = [ | |||||||
|         path: "/login", |         path: "/login", | ||||||
|         name: "Login", |         name: "Login", | ||||||
|         hidden: true, |         hidden: true, | ||||||
|         component: () => import("@/components/login/login.vue"), |         component: () => import("@/views/Login.vue"), | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |         path: "/public", | ||||||
|  |         name: "Public", | ||||||
|  |         hidden: true, | ||||||
|  |         component: () => import("@/views/Public.vue"), | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |         path: "/desktop_archievement", | ||||||
|  |         name: "DesktopArchievement", | ||||||
|  |         hidden: true, | ||||||
|  |         component: () => import("@/views/DesktopArchievement.vue"), | ||||||
|     }, |     }, | ||||||
| ]; | ]; | ||||||
|  |  | ||||||
| @@ -31,4 +44,10 @@ const router = createRouter( | |||||||
|     } |     } | ||||||
| ); | ); | ||||||
|  |  | ||||||
|  | //路由守卫 | ||||||
|  | // router.beforeEach((to) => | ||||||
|  | // { | ||||||
|  |  | ||||||
|  | // }); | ||||||
|  |  | ||||||
| export { router }; | export { router }; | ||||||
							
								
								
									
										19
									
								
								code/web/task_schedule/src/store/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								code/web/task_schedule/src/store/index.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-01 18:23:32 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/store/index.ts | ||||||
|  |  * @Description: vuex配置文件 | ||||||
|  |  * | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved. | ||||||
|  |  */ | ||||||
|  | import { createStore } from "vuex"; | ||||||
|  | import app from "./modules/app"; | ||||||
|  |  | ||||||
|  | const store = createStore({ | ||||||
|  |     modules: { | ||||||
|  |         app, | ||||||
|  |     }, | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | export default store; | ||||||
							
								
								
									
										24
									
								
								code/web/task_schedule/src/store/modules/app.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								code/web/task_schedule/src/store/modules/app.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-01 23:03:02 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/store/modules/app.ts | ||||||
|  |  * @Description: | ||||||
|  |  * | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved. | ||||||
|  |  */ | ||||||
|  | const state = { | ||||||
|  |     staffInfo: null, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | const getters = {}; | ||||||
|  | const mutations = {}; | ||||||
|  | const actions = {}; | ||||||
|  |  | ||||||
|  | export default { | ||||||
|  |     namespaced: true, | ||||||
|  |     state, | ||||||
|  |     getters, | ||||||
|  |     mutations, | ||||||
|  |     actions, | ||||||
|  | }; | ||||||
| @@ -1,19 +1,13 @@ | |||||||
| html { | html { | ||||||
|     /* background-color: #8796a6; */ |     background-image: url("@/assets/img/bg/bg_01.jpg"); | ||||||
|     background-image: url("./assets/img/bg/bg_01.jpg"); |  | ||||||
|     background-attachment: fixed; |     background-attachment: fixed; | ||||||
|     background-size: contain; |     background-size: contain; | ||||||
|     /* background-position: center; */ |  | ||||||
|     /* background-repeat: no-repeat; */ |  | ||||||
| } | } | ||||||
|  |  | ||||||
| body { | body { | ||||||
|     /* background-color: #8796a6; */ |  | ||||||
|     width: 100vw; |     width: 100vw; | ||||||
|     height: 100vh; |     height: 100vh; | ||||||
|     /* border: 1px solid red; */ |  | ||||||
|     /* overflow: hidden; */ |  | ||||||
|     padding: 0px; |     padding: 0px; | ||||||
|     margin: 0px; |     margin: 0px; | ||||||
|  |     overflow: hidden; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										28
									
								
								code/web/task_schedule/src/test/test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								code/web/task_schedule/src/test/test.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-02 15:48:44 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/test/test.ts | ||||||
|  |  * @Description: | ||||||
|  |  * | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | import { type LoginInfo, login } from "../utils/account.js"; | ||||||
|  |  | ||||||
|  | const loginInfo: LoginInfo = { | ||||||
|  |     p13account: "wangwei-202", | ||||||
|  |     password: "Kane@1983", | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | login(loginInfo) | ||||||
|  |     .then((response: any) => | ||||||
|  |     { | ||||||
|  |         const data = response.data ?? {}; | ||||||
|  |  | ||||||
|  |         console.log(data); | ||||||
|  |     }) | ||||||
|  |     .catch((error: any) => | ||||||
|  |     { | ||||||
|  |         console.log(error); | ||||||
|  |     }); | ||||||
							
								
								
									
										50
									
								
								code/web/task_schedule/src/test/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								code/web/task_schedule/src/test/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-01 23:38:12 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/test/tsconfig.json | ||||||
|  |  * @Description: 运行测试代码用的tsconfig,使用单独的配置 | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | { | ||||||
|  |     "compilerOptions": { | ||||||
|  |         "forceConsistentCasingInFileNames": true, | ||||||
|  |         "useDefineForClassFields": true, | ||||||
|  |         "target": "ESNext", | ||||||
|  |         "module": "ESNext", | ||||||
|  |         // "module": "CommonJS", | ||||||
|  |         // "moduleResolution": "node", | ||||||
|  |         "moduleResolution": "nodenext", | ||||||
|  |         "strict": true, | ||||||
|  |         "jsx": "preserve", | ||||||
|  |         "sourceMap": true, | ||||||
|  |         "resolveJsonModule": true, | ||||||
|  |         "esModuleInterop": false, | ||||||
|  |         "baseUrl": "./", // paths 路径解析起点 | ||||||
|  |         "paths": { // 别名路径设置 | ||||||
|  |             "@/*": [ | ||||||
|  |                 "src/*" | ||||||
|  |             ], | ||||||
|  |         }, | ||||||
|  |         "lib": [ | ||||||
|  |             "ESNext", | ||||||
|  |             "DOM" | ||||||
|  |         ], | ||||||
|  |         "types": [ | ||||||
|  |             "vite/client" | ||||||
|  |         ] | ||||||
|  |     }, | ||||||
|  |     "include": [ | ||||||
|  |         "src/**/*.ts", | ||||||
|  |         "src/**/*.tsx", | ||||||
|  |         "src/**/*.vue", | ||||||
|  |         "*.d.ts", | ||||||
|  |         "src/router/index.js", | ||||||
|  |         "src/router/index.js", | ||||||
|  |         "./**/*.ts", | ||||||
|  |     ], | ||||||
|  |     "exclude": [ | ||||||
|  |         "./node_modules", | ||||||
|  |     ] | ||||||
|  | } | ||||||
							
								
								
									
										31
									
								
								code/web/task_schedule/src/utils/account.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								code/web/task_schedule/src/utils/account.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-02 14:48:35 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/utils/account.ts | ||||||
|  |  * @Description: | ||||||
|  |  * | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | import { type AxiosResponse } from "axios"; | ||||||
|  | import { service as instance } from "./api/request.js"; | ||||||
|  | import { API_URL } from "./api/config.js"; | ||||||
|  | interface LoginInfo | ||||||
|  | { | ||||||
|  |     p13account: string; | ||||||
|  |     password: string; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | async function login(data: LoginInfo): Promise<AxiosResponse<any, any>> | ||||||
|  | { | ||||||
|  |     return await instance.request( | ||||||
|  |         { | ||||||
|  |             method: "post", | ||||||
|  |             url: API_URL.URL_LOGIN, | ||||||
|  |             data, | ||||||
|  |         } | ||||||
|  |     ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export { type LoginInfo, login }; | ||||||
							
								
								
									
										13
									
								
								code/web/task_schedule/src/utils/api/config.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								code/web/task_schedule/src/utils/api/config.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-02 15:35:43 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/utils/api/config.ts | ||||||
|  |  * @Description: | ||||||
|  |  * | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved. | ||||||
|  |  */ | ||||||
|  | export const API_URL = { | ||||||
|  |     // URL_LOGIN: import.meta.env.VITE_URL_LOGIN, | ||||||
|  |     URL_LOGIN: "http://222.76.244.118:11001/admin-system/account/p13_account_check", | ||||||
|  | }; | ||||||
							
								
								
									
										46
									
								
								code/web/task_schedule/src/utils/api/localStorage.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								code/web/task_schedule/src/utils/api/localStorage.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-02-28 09:26:45 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/utils/api/localStorage.ts | ||||||
|  |  * @Description: | ||||||
|  |  * | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved. | ||||||
|  |  */ | ||||||
|  | import { StaffInfo } from "@/data/cpicxim/StaffInfo.js"; | ||||||
|  |  | ||||||
|  | const STUFF_ITEM = "stuff_info"; | ||||||
|  |  | ||||||
|  | function loadStaffInfo(): StaffInfo | ||||||
|  | { | ||||||
|  |     let obj = null; | ||||||
|  |  | ||||||
|  |     try | ||||||
|  |     { | ||||||
|  |         obj = JSON.parse(window.localStorage.getItem(STUFF_ITEM) ?? "{}"); | ||||||
|  |     } | ||||||
|  |     catch (error) | ||||||
|  |     { | ||||||
|  |         obj = {}; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     const stuff = new StaffInfo( | ||||||
|  |         obj._p13uid ?? "", | ||||||
|  |         obj._stuffCode ?? "", | ||||||
|  |         obj._stuffName ?? "", | ||||||
|  |         obj._department_code ?? "", | ||||||
|  |         obj._department_name ?? "", | ||||||
|  |         obj._section_office_code ?? "", | ||||||
|  |         obj._section_office_name ?? ""); | ||||||
|  |  | ||||||
|  |     return stuff; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function saveStaffInfo(stuff: StaffInfo): void | ||||||
|  | { | ||||||
|  |     const json = JSON.stringify(stuff); | ||||||
|  |  | ||||||
|  |     window.localStorage.setItem(STUFF_ITEM, json); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export { loadStaffInfo, saveStaffInfo }; | ||||||
							
								
								
									
										46
									
								
								code/web/task_schedule/src/utils/api/request.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								code/web/task_schedule/src/utils/api/request.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-02-28 17:47:22 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/utils/api/request.ts | ||||||
|  |  * @Description: | ||||||
|  |  * | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | import axios, { type AxiosInstance } from "axios"; | ||||||
|  |  | ||||||
|  | const service: AxiosInstance = axios.create( | ||||||
|  |     { | ||||||
|  |         baseURL: "", | ||||||
|  |         timeout: 10000, | ||||||
|  |     } | ||||||
|  | ); | ||||||
|  |  | ||||||
|  | // 请求拦截 | ||||||
|  | service.interceptors.request.use( | ||||||
|  |     (config) => | ||||||
|  |     { | ||||||
|  |         return config; | ||||||
|  |     }, | ||||||
|  |     async (error) => | ||||||
|  |     { | ||||||
|  |         console.log(error); | ||||||
|  |  | ||||||
|  |         return await Promise.reject(error); | ||||||
|  |     } | ||||||
|  | ); | ||||||
|  |  | ||||||
|  | // 响应拦截 | ||||||
|  | service.interceptors.response.use( | ||||||
|  |     (response) => | ||||||
|  |     { | ||||||
|  |         return response; | ||||||
|  |     }, | ||||||
|  |     async (error) => | ||||||
|  |     { | ||||||
|  |         return await Promise.reject(error); | ||||||
|  |     } | ||||||
|  | ); | ||||||
|  |  | ||||||
|  | export { service }; | ||||||
							
								
								
									
										84
									
								
								code/web/task_schedule/src/utils/api/url.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								code/web/task_schedule/src/utils/api/url.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-02-28 19:30:40 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/utils/api/url.ts | ||||||
|  |  * @Description: 对URL的操作 | ||||||
|  |  * | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | type stringkey = Record<string, string>; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 将url的参数拆分成对象 | ||||||
|  |  * @param url 访问的url | ||||||
|  |  * @returns | ||||||
|  |  */ | ||||||
|  | function getURLParams(url: string): Record<string, string> | ||||||
|  | { | ||||||
|  |     const arr = url.split("?"); | ||||||
|  |     const params = arr[1].split("&"); | ||||||
|  |     const obj: stringkey = {}; | ||||||
|  |  | ||||||
|  |     for (let i = 0; i < params.length; i++) | ||||||
|  |     { | ||||||
|  |         const param = params[i].split("="); | ||||||
|  |  | ||||||
|  |         obj[param[0]] = param[1]; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     return obj; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 对URL中的参数进行拆分,拆分的参数名称和值作为一个对象属性的键值对。 | ||||||
|  |  * @param url url字符串 | ||||||
|  |  * @returns 返回包含url中参数作为key,值作为value的对象。 | ||||||
|  |  */ | ||||||
|  | function getParamsFromURL(url: string): stringkey | ||||||
|  | { | ||||||
|  |     const indexOfQuestionMark: number = url.indexOf("?"); | ||||||
|  |     const indexOfSharp: number = url.indexOf("#"); | ||||||
|  |     const paramObj: stringkey = {}; | ||||||
|  |     let paramString; | ||||||
|  |  | ||||||
|  |     // url中没有问号,说明没有参数 | ||||||
|  |     if (indexOfQuestionMark < 0) | ||||||
|  |     { | ||||||
|  |         return paramObj; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // 检查是否有#号 | ||||||
|  |     if (indexOfSharp < 0) | ||||||
|  |     { | ||||||
|  |         // 没有#号,可以直接截取参数字符串 | ||||||
|  |         paramString = url.substring(indexOfQuestionMark); | ||||||
|  |     } | ||||||
|  |     else | ||||||
|  |     { | ||||||
|  |         // 有#号,截取?和#之间的字符串 | ||||||
|  |         const end: number = indexOfQuestionMark < indexOfSharp ? indexOfSharp : url.length; | ||||||
|  |  | ||||||
|  |         paramString = url.substring(indexOfQuestionMark + 1, end); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // 拆分属性 | ||||||
|  |     const paramArray: string[] = paramString.split("&"); | ||||||
|  |  | ||||||
|  |     paramArray.forEach((item) => | ||||||
|  |     { | ||||||
|  |         if (item.length === 0) | ||||||
|  |         { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         const param = item.split("="); | ||||||
|  |  | ||||||
|  |         paramObj[param[0]] = param[1] ?? ""; | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     return paramObj; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export { getURLParams, getParamsFromURL }; | ||||||
							
								
								
									
										231
									
								
								code/web/task_schedule/src/views/DesktopArchievement.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										231
									
								
								code/web/task_schedule/src/views/DesktopArchievement.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,231 @@ | |||||||
|  | <!-- | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-03 14:38:07 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/views/DesktopArchievement.vue | ||||||
|  |  * @Description: 显示在桌面上,展示任务量与业绩的view | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  | --> | ||||||
|  | <template> | ||||||
|  |     <div class="view-wrapper"> | ||||||
|  |         <div class="center-wrapper"> | ||||||
|  |             <span class="slogan">对标先进 比学赶超</span> | ||||||
|  |             <div class="total-archievement-wrapper"> | ||||||
|  |                 <span>总业绩</span> | ||||||
|  |                 <span>{{ getTotalArchievement }}</span> | ||||||
|  |             </div> | ||||||
|  |             <div class="archievement-wrapper"> | ||||||
|  |                 <div class="total-archievement-rate-wrapper"> | ||||||
|  |                     <ArchievementCompleteRateComponent indicator="续保完成率" percentage=95 /> | ||||||
|  |                     <ArchievementCompleteRateComponent indicator="车非渗透率" percentage=95 /> | ||||||
|  |                 </div> | ||||||
|  |                 <div class="total-archievement-charts-wrapper"> | ||||||
|  |                     <ArchievementChart total_archievement="435220" :chart_data="ui.chartData" /> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  |             <div class="reward-wrapper"> | ||||||
|  |                 <HonorListComponent month="二" leading-reward="王炜" advance-reward="王炜" /> | ||||||
|  |                 <DishonorListComponent month="二" :dishonorPersons="ui.dishonorPersons" /> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |         <div class="right-wrapper"> | ||||||
|  |  | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script lang="ts"> | ||||||
|  | import { computed, reactive } from "vue"; | ||||||
|  | import { useRouter } from "vue-router"; | ||||||
|  | import { loadStaffInfo } from "@/utils/api/localStorage.js"; | ||||||
|  | import { ElMessage } from "element-plus"; | ||||||
|  | import ArchievementChart from "@/components/ArchievementChartComponent.vue"; | ||||||
|  | import ArchievementCompleteRateComponent from "@/components/ArchievementCompleteRateComponent.vue"; | ||||||
|  | import HonorListComponent from "@/components/HonorListComponent.vue"; | ||||||
|  | import DishonorListComponent from "@/components/DishonorListComponent.vue"; | ||||||
|  |  | ||||||
|  | export default { | ||||||
|  |     name: "DesktopArchievement", | ||||||
|  |     components: { | ||||||
|  |         ArchievementChart, | ||||||
|  |         ArchievementCompleteRateComponent, | ||||||
|  |         HonorListComponent, | ||||||
|  |         DishonorListComponent, | ||||||
|  |     }, | ||||||
|  |     setup() | ||||||
|  |     { | ||||||
|  |         const router = useRouter(); | ||||||
|  |         const staffInfo = loadStaffInfo(); | ||||||
|  |         const ui = reactive({ | ||||||
|  |             chartData: [200, 230, 224, 218, 135, 147, 260, 800,], | ||||||
|  |             totalArchievement: 120000000, | ||||||
|  |             dishonorPersons: ["张三", "李四",], | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         const getTotalArchievement = computed(() => | ||||||
|  |         { | ||||||
|  |             const cnyFormat = new Intl.NumberFormat("zh-cn", | ||||||
|  |                 { | ||||||
|  |                     style: "currency", | ||||||
|  |                     currency: "CNY", | ||||||
|  |                     minimumFractionDigits: 0, | ||||||
|  |                 }); | ||||||
|  |             const archievement = cnyFormat.format(ui.totalArchievement); | ||||||
|  |  | ||||||
|  |             return archievement; | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         //检查存储的登录信息,不存在则返回登录页面 | ||||||
|  |         if (staffInfo.P13UID == "") | ||||||
|  |         { | ||||||
|  |             ElMessage({ | ||||||
|  |                 message: "登录信息失效,请重新登录!", | ||||||
|  |                 type: "success", | ||||||
|  |                 center: true, | ||||||
|  |             }); | ||||||
|  |  | ||||||
|  |             router.push("/login"); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return { ui, getTotalArchievement, }; | ||||||
|  |     }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style scoped lang="scss"> | ||||||
|  | .view-wrapper { | ||||||
|  |     box-sizing: border-box; | ||||||
|  |     min-height: 800px; | ||||||
|  |     height: calc(100vh - 10mm); | ||||||
|  |     min-width: 1280px; | ||||||
|  |     width: 100vw; | ||||||
|  |     padding: 5mm; | ||||||
|  |     display: flex; | ||||||
|  |     justify-content: end; | ||||||
|  |     align-items: stretch; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .left-wrapper { | ||||||
|  |     width: 10%; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .center-wrapper { | ||||||
|  |     //中间部分 | ||||||
|  |     width: 50%; | ||||||
|  |     display: flex; | ||||||
|  |     flex-direction: column; | ||||||
|  |     align-items: stretch; | ||||||
|  |     justify-content: start; | ||||||
|  |  | ||||||
|  |     .slogan { | ||||||
|  |         //标语 | ||||||
|  |         margin: 0px; | ||||||
|  |         padding: 15px 0px; | ||||||
|  |         display: block; | ||||||
|  |         text-align: center; | ||||||
|  |         flex-grow: 0; | ||||||
|  |  | ||||||
|  |         font: { | ||||||
|  |             family: "FZ-ZHUOHEI"; | ||||||
|  |             weight: 100; | ||||||
|  |             size: 90px; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         color: $color-bg-04; | ||||||
|  |         text-shadow: #feebb1 0px 0px, | ||||||
|  |         #feebb1 5px 0px, | ||||||
|  |         #feebb1 -5px -0px, | ||||||
|  |         #feebb1 -0px -5px, | ||||||
|  |         #feebb1 -4px -4px, | ||||||
|  |         #feebb1 4px 4px, | ||||||
|  |         #feebb1 4px -4px, | ||||||
|  |         #feebb1 -4px 4px; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     .total-archievement-wrapper { | ||||||
|  |         height: 80px; | ||||||
|  |  | ||||||
|  |         span { | ||||||
|  |             display: block; | ||||||
|  |             width: 100%; | ||||||
|  |             color: #25e6e6; | ||||||
|  |             text-align: center; | ||||||
|  |  | ||||||
|  |             font: { | ||||||
|  |                 size: 35px; | ||||||
|  |                 family: "FZ-ZHUOHEI"; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             flex-grow: 0; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     .archievement-wrapper { | ||||||
|  |         //业绩部分 | ||||||
|  |         height: 280px; | ||||||
|  |         display: flex; | ||||||
|  |         justify-content: center; | ||||||
|  |         align-items: stretch; | ||||||
|  |  | ||||||
|  |         >*+* { | ||||||
|  |             margin-left: 15px; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         .total-archievement-rate-wrapper { | ||||||
|  |             //业绩比例 | ||||||
|  |             // width: 20%; | ||||||
|  |             width: 140px; | ||||||
|  |             min-width: 140px; | ||||||
|  |             display: flex; | ||||||
|  |             flex-direction: column; | ||||||
|  |             justify-content: center; | ||||||
|  |             align-items: center; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         .total-archievement-charts-wrapper { | ||||||
|  |             //业绩图表 | ||||||
|  |             width: 70%; | ||||||
|  |  | ||||||
|  |             display: flex; | ||||||
|  |             justify-content: center; | ||||||
|  |             align-items: center; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     .reward-wrapper { | ||||||
|  |         //奖励部分 | ||||||
|  |         // height: 280px; | ||||||
|  |         padding: 15px; | ||||||
|  |  | ||||||
|  |         display: flex; | ||||||
|  |         justify-content: center; | ||||||
|  |         align-items: center; | ||||||
|  |  | ||||||
|  |         >*+* { | ||||||
|  |             margin-left: 15px; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .right-wrapper { | ||||||
|  |     min-width: 400px; | ||||||
|  |     width: 25%; | ||||||
|  | } | ||||||
|  | </style> | ||||||
|  | <style lang="scss"> | ||||||
|  | body { | ||||||
|  |     background-image: radial-gradient(farthest-corner at 100% 0%, | ||||||
|  |             $color-bg-01, | ||||||
|  |             $color-bg-02, | ||||||
|  |             $color-bg-03, | ||||||
|  |             $color-bg-04, | ||||||
|  |             $color-bg-05, | ||||||
|  |             $color-bg-05); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | div { | ||||||
|  |     // border: 1px solid red; | ||||||
|  |     box-sizing: border-box; | ||||||
|  | } | ||||||
|  | </style> | ||||||
							
								
								
									
										213
									
								
								code/web/task_schedule/src/views/Login.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										213
									
								
								code/web/task_schedule/src/views/Login.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,213 @@ | |||||||
|  | <!-- | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-02-28 00:57:21 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/src/views/Login.vue | ||||||
|  |  * @Description:  | ||||||
|  |  * 登录页面,路由默认指向这个页面 | ||||||
|  |  * 1、判断url中的参数,取得用户信息,根据用户的部门改变路由 | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  | --> | ||||||
|  | <template> | ||||||
|  |     <div class="page-wrapper"> | ||||||
|  |         <div class="login-wrapper"> | ||||||
|  |             <h1>登 录</h1> | ||||||
|  |             <el-form ref="loginForm"> | ||||||
|  |                 <el-form-item> | ||||||
|  |                     <label class="form-label">用户名</label> | ||||||
|  |                     <el-input type="text" v-model.trim.lazy="ui.account" placeholder="请输入P13账号或P09工号"></el-input> | ||||||
|  |                 </el-form-item> | ||||||
|  |                 <el-form-item> | ||||||
|  |                     <label class="form-label">密码</label> | ||||||
|  |                     <el-input type="password" v-model.trim.lazy="ui.password" placeholder="请输入P13密码"></el-input> | ||||||
|  |                 </el-form-item> | ||||||
|  |                 <el-form-item> | ||||||
|  |                     <el-button type="primary" class="el-button-block" @click="onLogin"> | ||||||
|  |                         登录 | ||||||
|  |                     </el-button> | ||||||
|  |                 </el-form-item> | ||||||
|  |             </el-form> | ||||||
|  |         </div> | ||||||
|  |         <div> | ||||||
|  |             <span>{{ ui.tips }}</span> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script lang="ts"> | ||||||
|  | import { reactive, onBeforeMount } from "vue"; | ||||||
|  | import { useRouter } from "vue-router"; | ||||||
|  | import { loadStaffInfo, saveStaffInfo } from "@/utils/api/localStorage"; | ||||||
|  | import { login } from "@/utils/account"; | ||||||
|  | import { ElMessage } from "element-plus"; | ||||||
|  | import { StaffInfo } from "@/data/cpicxim/StaffInfo"; | ||||||
|  |  | ||||||
|  | export default { | ||||||
|  |     name: "LoginPage", | ||||||
|  |     setup() | ||||||
|  |     { | ||||||
|  |  | ||||||
|  |         const router = useRouter(); | ||||||
|  |  | ||||||
|  |         const ui = reactive({ | ||||||
|  |             account: "", | ||||||
|  |             password: "", | ||||||
|  |             tips: "", | ||||||
|  |             showNeedAccountTip: false, | ||||||
|  |             showAccountErrorTip: false, | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         const savedP13uid = () => | ||||||
|  |         { | ||||||
|  |             window.localStorage.setItem("stuff_account", ui.account); | ||||||
|  |         }; | ||||||
|  |  | ||||||
|  |         const onLogin = () => | ||||||
|  |         { | ||||||
|  |             const info = { | ||||||
|  |                 p13account: ui.account, | ||||||
|  |                 password: ui.password, | ||||||
|  |             }; | ||||||
|  |  | ||||||
|  |             login(info) | ||||||
|  |                 .then((response) => | ||||||
|  |                 { | ||||||
|  |                     const data = response.data || { success: false, }; | ||||||
|  |  | ||||||
|  |                     if (data.success == true) | ||||||
|  |                     { | ||||||
|  |                         //提示登录成功,并保存到localStorage,然后路由跳转 | ||||||
|  |                         ElMessage({ | ||||||
|  |                             message: data.message, | ||||||
|  |                             type: "success", | ||||||
|  |                             center: true, | ||||||
|  |                         }); | ||||||
|  |  | ||||||
|  |                         const staffInfo = new StaffInfo( | ||||||
|  |                             data.staff_info.p13uid || "", | ||||||
|  |                             data.staff_info.code || "", | ||||||
|  |                             data.staff_info.name || "", | ||||||
|  |                             data.staff_info.department_code || "", | ||||||
|  |                             data.staff_info.department_name || "", | ||||||
|  |                             data.staff_info.section_office_code || "", | ||||||
|  |                             data.staff_info.p13section_office_nameuid || "" | ||||||
|  |                         ); | ||||||
|  |  | ||||||
|  |                         saveStaffInfo(staffInfo); | ||||||
|  |  | ||||||
|  |                         //跳转路由 | ||||||
|  |                         router.push("/desktop_archievement"); | ||||||
|  |                     } | ||||||
|  |                     else | ||||||
|  |                     { | ||||||
|  |                         ElMessage({ | ||||||
|  |                             message: data.message, | ||||||
|  |                             type: "error", | ||||||
|  |                             center: true, | ||||||
|  |                         }); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     console.log(data); | ||||||
|  |                 }) | ||||||
|  |                 .catch((error) => | ||||||
|  |                 { | ||||||
|  |                     debugger; | ||||||
|  |                     console.log(`登录失败,返回信息:${error}`); | ||||||
|  |                 }); | ||||||
|  |         }; | ||||||
|  |  | ||||||
|  |         onBeforeMount(() => | ||||||
|  |         { | ||||||
|  |             const staffInfo = loadStaffInfo(); | ||||||
|  |  | ||||||
|  |             //判断是否已经记录了P13账号,有则提示已登录,然后跳转路由 | ||||||
|  |             if (staffInfo.P13UID != "") | ||||||
|  |             { | ||||||
|  |                 ElMessage({ | ||||||
|  |                     message: `已登录账号:${staffInfo.stuffName}`, | ||||||
|  |                     type: "success", | ||||||
|  |                     center: true, | ||||||
|  |                 }); | ||||||
|  |  | ||||||
|  |                 //跳转路由 | ||||||
|  |                 router.push("/desktop_archievement"); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         // setInterval(() => | ||||||
|  |         // { | ||||||
|  |         //     window.location.reload(); | ||||||
|  |         // }, 5000); | ||||||
|  |  | ||||||
|  |         return { ui, savedP13uid, onLogin, }; | ||||||
|  |     }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style scoped lang="scss"> | ||||||
|  | .page-wrapper { | ||||||
|  |     box-sizing: border-box; | ||||||
|  |     height: calc(100vh - 10mm); | ||||||
|  |     width: calc(100vw - 10mm); | ||||||
|  |     // border: 1px solid red; | ||||||
|  |     display: flex; | ||||||
|  |     flex-direction: column; | ||||||
|  |     justify-content: start; | ||||||
|  |     align-items: center; | ||||||
|  |  | ||||||
|  |     span { | ||||||
|  |         font-size: 30px; | ||||||
|  |         color: red; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .login-wrapper { | ||||||
|  |     box-sizing: border-box; | ||||||
|  |     width: 320px; | ||||||
|  |     // margin-top: 5cm auto auto auto; | ||||||
|  |     margin-top: calc(100vh * 0.075); | ||||||
|  |     padding: 10mm; | ||||||
|  |     background-color: #cac2c27f; | ||||||
|  |     backdrop-filter: blur(10px); | ||||||
|  |     border-radius: 5px; | ||||||
|  |     // backdrop-filter: ; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     h1 { | ||||||
|  |         font-family: "FZ-ZHUOHEI"; | ||||||
|  |         font-size: 70px; | ||||||
|  |         font-weight: 100; | ||||||
|  |         color: #fff; | ||||||
|  |         margin: 5mm 0; | ||||||
|  |         display: block; | ||||||
|  |         text-align: center; | ||||||
|  |         text-shadow: #1d6ddc 2px 10px 2px, | ||||||
|  |             #1d6ddc 2px 0px 2px, | ||||||
|  |             #1d6ddc -2px -0px 2px, | ||||||
|  |             #1d6ddc -0px -2px 2px, | ||||||
|  |             #1d6ddc -1.4px -1.4px 2px, | ||||||
|  |             #1d6ddc 1.4px 1.4px 2px, | ||||||
|  |             #1d6ddc 1.4px -1.4px 2px, | ||||||
|  |             #1d6ddc -1.4px 1.4px 2px; | ||||||
|  |  | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .form-label { | ||||||
|  |     display: block; | ||||||
|  |     /* color: #fff; */ | ||||||
|  |     color: #344a5fef; | ||||||
|  |     font-size: 14px; | ||||||
|  |     // border: 1px solid red; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .el-input { | ||||||
|  |     color: #344a5fef; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .el-button-block { | ||||||
|  |     width: 100%; | ||||||
|  |     margin-top: 20px; | ||||||
|  | } | ||||||
|  | </style> | ||||||
| @@ -1,24 +1,24 @@ | |||||||
| <!-- | <!-- | ||||||
|  * @Author: Kane |  * @Author: Kane | ||||||
|  * @Date: 2023-02-28 00:57:21 |  * @Date: 2023-02-28 19:10:54 | ||||||
|  * @LastEditors: Kane |  * @LastEditors: Kane | ||||||
|  * @FilePath: /task_schedule/src/components/login/Login.vue |  * @FilePath: /task_schedule/src/views/Public.vue | ||||||
|  * @Description:  |  * @Description:  | ||||||
|  *  |  *  | ||||||
|  * Copyright (c) ${2022} by Kane, All Rights Reserved.  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
| --> | --> | ||||||
| <template> | <template> | ||||||
|     登录页面 |     公共页面 | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| export default { | export default { | ||||||
|     name: "Login", |     name: "PublicPage", | ||||||
|     setup(): void |     setup()  | ||||||
|     { |     { | ||||||
| 
 | 
 | ||||||
|     }, |     }, | ||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <style scoped lang="scss"></style> | <style lang="scss"></style> | ||||||
							
								
								
									
										47
									
								
								code/web/task_schedule/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								code/web/task_schedule/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-01 23:38:12 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /task_schedule/tsconfig.json | ||||||
|  |  * @Description:  | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | { | ||||||
|  |     "compilerOptions": { | ||||||
|  |         "forceConsistentCasingInFileNames": true, | ||||||
|  |         "useDefineForClassFields": true, | ||||||
|  |         "target": "ESNext", | ||||||
|  |         "module": "CommonJS", | ||||||
|  |         "moduleResolution": "node", | ||||||
|  |         "strict": true, | ||||||
|  |         "jsx": "preserve", | ||||||
|  |         "sourceMap": true, | ||||||
|  |         "resolveJsonModule": true, | ||||||
|  |         "esModuleInterop": false, | ||||||
|  |         "baseUrl": "./", // paths 路径解析起点 | ||||||
|  |         "paths": { // 别名路径设置 | ||||||
|  |             "@/*": [ | ||||||
|  |                 "src/*" | ||||||
|  |             ], | ||||||
|  |         }, | ||||||
|  |         "lib": [ | ||||||
|  |             "ESNext", | ||||||
|  |             "DOM" | ||||||
|  |         ], | ||||||
|  |         "types": [ | ||||||
|  |             "vite/client" | ||||||
|  |         ] | ||||||
|  |     }, | ||||||
|  |     "include": [ | ||||||
|  |         "src/**/*.ts", | ||||||
|  |         "src/**/*.tsx", | ||||||
|  |         "src/**/*.vue", | ||||||
|  |         "*.d.ts", | ||||||
|  |         "src/router/index.js", | ||||||
|  |         "src/router/index.js", | ||||||
|  |     ], | ||||||
|  |     "exclude": [ | ||||||
|  |         "./node_modules", | ||||||
|  |     ] | ||||||
|  | } | ||||||
| @@ -2,31 +2,46 @@ | |||||||
|  * @Author: Kane |  * @Author: Kane | ||||||
|  * @Date: 2023-02-15 09:25:52 |  * @Date: 2023-02-15 09:25:52 | ||||||
|  * @LastEditors: Kane |  * @LastEditors: Kane | ||||||
|  * @LastEditTime: 2023-02-28 01:06:12 |  * @LastEditTime: 2023-03-03 15:52:58 | ||||||
|  * @FilePath: /task_schedule/vite.config.js |  * @FilePath: /task_schedule/vite.config.js | ||||||
|  * @Description:  |  * @Description:  | ||||||
|  *  |  *  | ||||||
|  * Copyright (c) ${2022} by Kane, All Rights Reserved.  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  */ |  */ | ||||||
| import { defineConfig } from 'vite'; | import { defineConfig, loadEnv } from "vite"; | ||||||
| import vue from '@vitejs/plugin-vue'; | import vue from "@vitejs/plugin-vue"; | ||||||
| import path from 'path'; | import path from "path"; | ||||||
|  |  | ||||||
| // https://vitejs.dev/config/ | // https://vitejs.dev/config/ | ||||||
| export default defineConfig({ | export default defineConfig((command, mode) => | ||||||
|   plugins: [vue()], | { | ||||||
|   base: './', |   const env = loadEnv(mode, process.cwd(), ""); | ||||||
|   resolve: { |  | ||||||
|     //配置别名 |   return { | ||||||
|     alias: [ |     plugins: [vue(),], | ||||||
|       { |     base: "./", | ||||||
|         find: /^~/, |     resolve: { | ||||||
|         replacement: '', |       //配置别名 | ||||||
|  |       alias: [ | ||||||
|  |         { | ||||||
|  |           find: /^~/, | ||||||
|  |           replacement: "", | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           find: "@", | ||||||
|  |           replacement: path.resolve(__dirname, "src"), | ||||||
|  |         }, | ||||||
|  |       ], | ||||||
|  |     }, | ||||||
|  |     define: { | ||||||
|  |       __APP_ENV__: env.APP_ENV, | ||||||
|  |     }, | ||||||
|  |     css: { | ||||||
|  |       preprocessorOptions: { | ||||||
|  |         scss: { | ||||||
|  |           additionalData: "@import \"./src/assets/css/public/color.scss\";", | ||||||
|  |         }, | ||||||
|       }, |       }, | ||||||
|       { |     }, | ||||||
|         find: '@', |   }; | ||||||
|         replacement: path.resolve(__dirname, 'src'), |  | ||||||
|       }, |  | ||||||
|     ], |  | ||||||
|   }, |  | ||||||
| }); | }); | ||||||
|   | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										4
									
								
								code/后端/desktop_archievement_backend/.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								code/后端/desktop_archievement_backend/.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | { | ||||||
|  |     "java.configuration.updateBuildConfiguration": "automatic", | ||||||
|  |     "java.compile.nullAnalysis.mode": "automatic" | ||||||
|  | } | ||||||
							
								
								
									
										107
									
								
								code/后端/desktop_archievement_backend/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								code/后端/desktop_archievement_backend/pom.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,107 @@ | |||||||
|  | <project xmlns="http://maven.apache.org/POM/4.0.0" | ||||||
|  |   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> | ||||||
|  |   <modelVersion>4.0.0</modelVersion> | ||||||
|  |   <groupId>com.cpic.xim</groupId> | ||||||
|  |   <artifactId>desktop_archievement_backend</artifactId> | ||||||
|  |   <packaging>war</packaging> | ||||||
|  |   <version>1.0-SNAPSHOT</version> | ||||||
|  |   <name>desktop_archievement_backend Maven Webapp</name> | ||||||
|  |   <url>http://maven.apache.org</url> | ||||||
|  |  | ||||||
|  |   <properties> | ||||||
|  |     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||||||
|  |     <maven.compiler.source>1.8</maven.compiler.source> | ||||||
|  |     <maven.compiler.target>1.8</maven.compiler.target> | ||||||
|  |     <spring.version>5.3.24</spring.version> | ||||||
|  |   </properties> | ||||||
|  |  | ||||||
|  |   <dependencies> | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>junit</groupId> | ||||||
|  |       <artifactId>junit</artifactId> | ||||||
|  |       <version>3.8.1</version> | ||||||
|  |       <scope>test</scope> | ||||||
|  |     </dependency> | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>org.springframework</groupId> | ||||||
|  |       <artifactId>spring-context</artifactId> | ||||||
|  |       <version>${spring.version}</version> | ||||||
|  |     </dependency> | ||||||
|  |  | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>org.springframework</groupId> | ||||||
|  |       <artifactId>spring-web</artifactId> | ||||||
|  |       <version>${spring.version}</version> | ||||||
|  |     </dependency> | ||||||
|  |  | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>org.springframework</groupId> | ||||||
|  |       <artifactId>spring-webmvc</artifactId> | ||||||
|  |       <version>${spring.version}</version> | ||||||
|  |     </dependency> | ||||||
|  |  | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>javax.servlet</groupId> | ||||||
|  |       <artifactId>javax.servlet-api</artifactId> | ||||||
|  |       <version>4.0.1</version> | ||||||
|  |       <scope>provided</scope> | ||||||
|  |     </dependency> | ||||||
|  |  | ||||||
|  |     <!--文件上传依赖的两个jar包--> | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>commons-fileupload</groupId> | ||||||
|  |       <artifactId>commons-fileupload</artifactId> | ||||||
|  |       <version>1.5</version> | ||||||
|  |     </dependency> | ||||||
|  |  | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>commons-io</groupId> | ||||||
|  |       <artifactId>commons-io</artifactId> | ||||||
|  |       <version>2.11.0</version> | ||||||
|  |     </dependency> | ||||||
|  |  | ||||||
|  |     <!--jackson--> | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>com.fasterxml.jackson.core</groupId> | ||||||
|  |       <artifactId>jackson-databind</artifactId> | ||||||
|  |       <version>2.14.2</version> | ||||||
|  |     </dependency> | ||||||
|  |     <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --> | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>com.fasterxml.jackson.core</groupId> | ||||||
|  |       <artifactId>jackson-core</artifactId> | ||||||
|  |       <version>2.13.4</version> | ||||||
|  |     </dependency> | ||||||
|  |     <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations --> | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>com.fasterxml.jackson.core</groupId> | ||||||
|  |       <artifactId>jackson-annotations</artifactId> | ||||||
|  |       <version>2.13.4</version> | ||||||
|  |     </dependency> | ||||||
|  |  | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>com.oracle</groupId> | ||||||
|  |       <artifactId>ojdbc8</artifactId> | ||||||
|  |       <version>19.3.0.0.0</version> | ||||||
|  |     </dependency> | ||||||
|  |   </dependencies> | ||||||
|  |   <build> | ||||||
|  |     <finalName>desktop_archievement_backend</finalName> | ||||||
|  |     <plugins> | ||||||
|  |       <plugin> | ||||||
|  |         <groupId>org.apache.maven.plugins</groupId> | ||||||
|  |         <artifactId>maven-war-plugin</artifactId> | ||||||
|  |         <version>3.2.2</version> | ||||||
|  |       </plugin> | ||||||
|  |       <plugin> | ||||||
|  |         <groupId>org.apache.maven.plugins</groupId> | ||||||
|  |         <artifactId>maven-surefire-plugin</artifactId> | ||||||
|  |         <version>3.0.0-M6</version> | ||||||
|  |         <configuration> | ||||||
|  |           <skipTests>true</skipTests> | ||||||
|  |         </configuration> | ||||||
|  |       </plugin> | ||||||
|  |     </plugins> | ||||||
|  |   </build> | ||||||
|  | </project> | ||||||
| @@ -0,0 +1,210 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2022-12-15 14:08:28 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @LastEditTime: 2023-02-28 23:24:07 | ||||||
|  |  * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/utils/account/CpicXIMStaffInfo.java | ||||||
|  |  * @Description: 产险厦门分公司员工信息对象 | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | package com.cpic.xim.utils.account; | ||||||
|  |  | ||||||
|  | import java.sql.Connection; | ||||||
|  | import java.sql.DriverManager; | ||||||
|  | import java.sql.PreparedStatement; | ||||||
|  | import java.sql.ResultSet; | ||||||
|  | import java.sql.SQLException; | ||||||
|  | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
|  | /***************************************************** | ||||||
|  |  * 厦门太保员工信息 | ||||||
|  |  * 使用工厂函数创建。 | ||||||
|  |  *****************************************************/ | ||||||
|  | public class CpicXIMStaffInfo | ||||||
|  | { | ||||||
|  |     /***************************************************** | ||||||
|  |      * 查询员工信息 | ||||||
|  |      * @param uidOrCode p13账号或p09账号 | ||||||
|  |      * @return 员工信息对象 | ||||||
|  |      *****************************************************/ | ||||||
|  |     public static CpicXIMStaffInfo getStaffInfo( String uidOrCode ) | ||||||
|  |             throws SQLException, ClassNotFoundException | ||||||
|  |     { | ||||||
|  |         CpicXIMStaffInfo info = null; | ||||||
|  |  | ||||||
|  |         Connection connection = null; | ||||||
|  |         PreparedStatement stmt = null; | ||||||
|  |         ResultSet result = null; | ||||||
|  |  | ||||||
|  |         String jdbcURL = "jdbc:oracle:thin:@10.39.0.86:1521:xmcx1"; | ||||||
|  |         String userName = "dataex"; | ||||||
|  |         String password = "cpic123456"; | ||||||
|  |         String querySQL = "SELECT ry.staff_code,ry.staff_name,ry.p13uid," | ||||||
|  |                 + "               ry.department_code, bm.department_name," | ||||||
|  |                 + "               ry.section_office_code,ks.section_office_name " | ||||||
|  |                 + "          FROM idst0.rydm_t ry,idst0.ks_t ks,idst0.bm_t bm " | ||||||
|  |                 + "         WHERE ry.account_status = 0 AND (ry.staff_code = ? OR ry.p13uid = ?) " | ||||||
|  |                 + "           and ry.section_office_code = ks.section_office_code " | ||||||
|  |                 + "           and ry.department_code = bm.department_code "; | ||||||
|  |  | ||||||
|  |         try | ||||||
|  |         { | ||||||
|  |             Class.forName( "oracle.jdbc.driver.OracleDriver" ); | ||||||
|  |  | ||||||
|  |             connection = DriverManager.getConnection( jdbcURL, userName, password ); | ||||||
|  |             stmt = connection.prepareStatement( querySQL ); | ||||||
|  |             stmt.setString( 1, uidOrCode ); | ||||||
|  |             stmt.setString( 2, uidOrCode ); | ||||||
|  |  | ||||||
|  |             result = stmt.executeQuery(); | ||||||
|  |  | ||||||
|  |             if ( result.next() ) | ||||||
|  |             { | ||||||
|  |                 info = new CpicXIMStaffInfo(); | ||||||
|  |  | ||||||
|  |                 info.code = result.getString( 1 ); | ||||||
|  |                 info.name = result.getString( 2 ); | ||||||
|  |                 info.p13UID = result.getString( 3 ); | ||||||
|  |                 info.departmentCode = result.getString( 4 ); | ||||||
|  |                 info.departmentName = result.getString( 5 ); | ||||||
|  |                 info.sectionOfficeCode = result.getString( 6 ); | ||||||
|  |                 info.setctionOfficeName = result.getString( 7 ); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         finally | ||||||
|  |         { | ||||||
|  |             try | ||||||
|  |             { | ||||||
|  |                 if ( result != null ) | ||||||
|  |                 { | ||||||
|  |                     result.close(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             catch ( Exception exception ) | ||||||
|  |             { | ||||||
|  |                 exception.printStackTrace(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             try | ||||||
|  |             { | ||||||
|  |                 if ( stmt != null ) | ||||||
|  |                 { | ||||||
|  |                     stmt.close(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             catch ( Exception exception ) | ||||||
|  |             { | ||||||
|  |                 exception.printStackTrace(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             try | ||||||
|  |             { | ||||||
|  |                 if ( connection != null ) | ||||||
|  |                 { | ||||||
|  |                     connection.close(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             catch ( Exception exception ) | ||||||
|  |             { | ||||||
|  |                 exception.printStackTrace(); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return info; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private CpicXIMStaffInfo() | ||||||
|  |     {} | ||||||
|  |  | ||||||
|  |     public String getName() | ||||||
|  |     { | ||||||
|  |         return name; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setName( String name ) | ||||||
|  |     { | ||||||
|  |         this.name = name; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getCode() | ||||||
|  |     { | ||||||
|  |         return code; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setCode( String code ) | ||||||
|  |     { | ||||||
|  |         this.code = code; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getP13UID() | ||||||
|  |     { | ||||||
|  |         return p13UID; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setP13UID( String p13uid ) | ||||||
|  |     { | ||||||
|  |         p13UID = p13uid; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getDepartmentCode() | ||||||
|  |     { | ||||||
|  |         return departmentCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setDepartmentCode( String departmentCode ) | ||||||
|  |     { | ||||||
|  |         this.departmentCode = departmentCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getDepartmentName() | ||||||
|  |     { | ||||||
|  |         return departmentName; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setDepartmentName( String departmentName ) | ||||||
|  |     { | ||||||
|  |         this.departmentName = departmentName; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getSectionOfficeCode() | ||||||
|  |     { | ||||||
|  |         return sectionOfficeCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setSectionOfficeCode( String sectionOfficeCode ) | ||||||
|  |     { | ||||||
|  |         this.sectionOfficeCode = sectionOfficeCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getSetctionOfficeName() | ||||||
|  |     { | ||||||
|  |         return setctionOfficeName; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setSetctionOfficeName( String setctionOfficeName ) | ||||||
|  |     { | ||||||
|  |         this.setctionOfficeName = setctionOfficeName; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @JsonProperty( "name" ) | ||||||
|  |     private String name; | ||||||
|  |  | ||||||
|  |     @JsonProperty( "code" ) | ||||||
|  |     private String code; | ||||||
|  |  | ||||||
|  |     @JsonProperty( "p13uid" ) | ||||||
|  |     private String p13UID; | ||||||
|  |  | ||||||
|  |     @JsonProperty( "department_code" ) | ||||||
|  |     private String departmentCode; | ||||||
|  |  | ||||||
|  |     @JsonProperty( "department_name" ) | ||||||
|  |     private String departmentName; | ||||||
|  |  | ||||||
|  |     @JsonProperty( "section_office_code" ) | ||||||
|  |     private String sectionOfficeCode; | ||||||
|  |  | ||||||
|  |     @JsonProperty( "section_office_name" ) | ||||||
|  |     private String setctionOfficeName; | ||||||
|  | } | ||||||
| @@ -0,0 +1,52 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-02-28 23:13:51 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/account/StaffInfoQueryController.java | ||||||
|  |  * @Description: 员工信息查询controller | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | package com.cpic.xim.web.controllers.account; | ||||||
|  |  | ||||||
|  | import java.sql.SQLException; | ||||||
|  | import org.springframework.stereotype.Controller; | ||||||
|  | import org.springframework.web.bind.annotation.RequestMapping; | ||||||
|  | import org.springframework.web.bind.annotation.RequestParam; | ||||||
|  | import org.springframework.web.bind.annotation.ResponseBody; | ||||||
|  | import com.cpic.xim.utils.account.CpicXIMStaffInfo; | ||||||
|  |  | ||||||
|  | @Controller | ||||||
|  | @RequestMapping( "/account" ) | ||||||
|  | public class StaffInfoQueryController | ||||||
|  | { | ||||||
|  |     @RequestMapping( "/query_staff_info.do" ) | ||||||
|  |     @ResponseBody | ||||||
|  |     public StaffInfoQueryResult queryStaffInfo( @RequestParam( "account" ) String account ) | ||||||
|  |     { | ||||||
|  |         StaffInfoQueryResult result = new StaffInfoQueryResult(); | ||||||
|  |         CpicXIMStaffInfo staffInfo = null; | ||||||
|  |  | ||||||
|  |         try | ||||||
|  |         { | ||||||
|  |             staffInfo = CpicXIMStaffInfo.getStaffInfo( account ); | ||||||
|  |  | ||||||
|  |             result.setStaffInfo( staffInfo ); | ||||||
|  |             result.setSuccess( true ); | ||||||
|  |             result.setMessage( "查询成功" ); | ||||||
|  |         } | ||||||
|  |         catch ( SQLException error ) | ||||||
|  |         { | ||||||
|  |             result.setSuccess( false ); | ||||||
|  |             result.setMessage( error.getMessage() ); | ||||||
|  |         } | ||||||
|  |         catch ( ClassNotFoundException error ) | ||||||
|  |         { | ||||||
|  |             result.setSuccess( false ); | ||||||
|  |             result.setMessage( error.getMessage() ); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return result; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
| @@ -0,0 +1,111 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2022-12-15 11:17:26 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @LastEditTime: 2023-01-10 14:58:53 | ||||||
|  |  * @FilePath: \AdminSys\src\main\java\com\cpic\xim\web\controllers\account\P13AccountCheckResult.java | ||||||
|  |  * @Description:  | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | package com.cpic.xim.web.controllers.account; | ||||||
|  |  | ||||||
|  | import com.cpic.xim.utils.account.CpicXIMStaffInfo; | ||||||
|  | import com.fasterxml.jackson.annotation.*;; | ||||||
|  |  | ||||||
|  | public class StaffInfoQueryResult | ||||||
|  | { | ||||||
|  |     StaffInfoQueryResult() | ||||||
|  |     {} | ||||||
|  |  | ||||||
|  |     public boolean isSuccess() | ||||||
|  |     { | ||||||
|  |         return success; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setSuccess( boolean success ) | ||||||
|  |     { | ||||||
|  |         this.success = success; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getMessage() | ||||||
|  |     { | ||||||
|  |         return message; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setMessage( String message ) | ||||||
|  |     { | ||||||
|  |         this.message = message; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public CpicXIMStaffInfo getStaffInfo() | ||||||
|  |     { | ||||||
|  |         return staffInfo; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setStaffInfo( CpicXIMStaffInfo staffInfo ) | ||||||
|  |     { | ||||||
|  |         this.staffInfo = staffInfo; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getToken() | ||||||
|  |     { | ||||||
|  |         return token; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setToken( String token ) | ||||||
|  |     { | ||||||
|  |         this.token = token; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public int hashCode() | ||||||
|  |     { | ||||||
|  |         final int prime = 31; | ||||||
|  |         int result = 1; | ||||||
|  |         result = prime * result + (success ? 1231 : 1237); | ||||||
|  |         result = prime * result + ((message == null) ? 0 : message.hashCode()); | ||||||
|  |         return result; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public boolean equals( Object obj ) | ||||||
|  |     { | ||||||
|  |         if ( this == obj ) | ||||||
|  |             return true; | ||||||
|  |         if ( obj == null ) | ||||||
|  |             return false; | ||||||
|  |         if ( getClass() != obj.getClass() ) | ||||||
|  |             return false; | ||||||
|  |         StaffInfoQueryResult other = (StaffInfoQueryResult) obj; | ||||||
|  |         if ( success != other.success ) | ||||||
|  |             return false; | ||||||
|  |         if ( message == null ) | ||||||
|  |         { | ||||||
|  |             if ( other.message != null ) | ||||||
|  |                 return false; | ||||||
|  |         } | ||||||
|  |         else if ( !message.equals( other.message ) ) | ||||||
|  |             return false; | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // 验证结果状态,true为成功,false为失败 | ||||||
|  |     @JsonProperty( "success" ) | ||||||
|  |     private boolean success; | ||||||
|  |  | ||||||
|  |     // 验证结果消息字符串,用来提示前端。 | ||||||
|  |     @JsonProperty( "message" ) | ||||||
|  |     private String message; | ||||||
|  |  | ||||||
|  |     // 用户的token | ||||||
|  |     @JsonProperty( "token" ) | ||||||
|  |     private String token; | ||||||
|  |  | ||||||
|  |     // 验证成功后查询到的人员信息。 | ||||||
|  |     @JsonProperty( "staff_info" ) | ||||||
|  |     CpicXIMStaffInfo staffInfo; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -0,0 +1,43 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-02-28 22:52:32 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/filters/cros/CrosFilter.java | ||||||
|  |  * @Description:  | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | package com.cpic.xim.web.filters.cros; | ||||||
|  |  | ||||||
|  | import java.io.IOException; | ||||||
|  | import javax.servlet.Filter; | ||||||
|  | import javax.servlet.FilterChain; | ||||||
|  | import javax.servlet.ServletException; | ||||||
|  | import javax.servlet.ServletRequest; | ||||||
|  | import javax.servlet.ServletResponse; | ||||||
|  | import javax.servlet.http.HttpServletRequest; | ||||||
|  | import javax.servlet.http.HttpServletResponse; | ||||||
|  |  | ||||||
|  | public class CrosFilter implements Filter | ||||||
|  | { | ||||||
|  |     @Override | ||||||
|  |     public void doFilter( ServletRequest req, ServletResponse resp, FilterChain chain ) | ||||||
|  |             throws ServletException, IOException | ||||||
|  |     { | ||||||
|  |         HttpServletRequest request = (HttpServletRequest) req; | ||||||
|  |         HttpServletResponse response = (HttpServletResponse) resp; | ||||||
|  |         String originHeader = request.getHeader( "Origin" ); | ||||||
|  |  | ||||||
|  |         response.setHeader( "Access-Control-Allow-Origin", originHeader ); | ||||||
|  |         response.setHeader( "Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE" ); | ||||||
|  |         response.setHeader( "Access-Control-Max-Age", "0" ); | ||||||
|  |         response.setHeader( "Access-Control-Allow-Headers", | ||||||
|  |                 "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token" ); | ||||||
|  |         response.setHeader( "Access-Control-Allow-Credentials", "true" ); | ||||||
|  |         response.setHeader( "XDomainRequestAllowed", "1" ); | ||||||
|  |         response.setHeader( "XDomainRequestAllowed", "1" ); | ||||||
|  |  | ||||||
|  |         chain.doFilter( request, response ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -0,0 +1,37 @@ | |||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |     xmlns:context="http://www.springframework.org/schema/context" | ||||||
|  |     xmlns:jdbc="http://www.springframework.org/schema/jdbc" | ||||||
|  |     xmlns:jee="http://www.springframework.org/schema/jee" | ||||||
|  |     xmlns:tx="http://www.springframework.org/schema/tx" | ||||||
|  |     xmlns:aop="http://www.springframework.org/schema/aop" | ||||||
|  |     xmlns:mvc="http://www.springframework.org/schema/mvc" | ||||||
|  |     xmlns:util="http://www.springframework.org/schema/util" | ||||||
|  |     xmlns:jpa="http://www.springframework.org/schema/data/jpa" | ||||||
|  |     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd | ||||||
|  |                         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd | ||||||
|  |                         http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd | ||||||
|  |                         http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd | ||||||
|  |                         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd | ||||||
|  |                         http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd | ||||||
|  |                         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd | ||||||
|  |                         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd | ||||||
|  |                         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"> | ||||||
|  |  | ||||||
|  |     <context:component-scan base-package="com.cpic.xim" /> | ||||||
|  |     <mvc:annotation-driven /> | ||||||
|  |     <mvc:default-servlet-handler /> | ||||||
|  |  | ||||||
|  |     <!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> | ||||||
|  |         <property | ||||||
|  |     name="prefix" value="/WEB-INF/jsp/" /> | ||||||
|  |         <property name="suffix" value=".jsp" /> | ||||||
|  |     </bean> --> | ||||||
|  |  | ||||||
|  |     <bean id="multipartResolver" | ||||||
|  |         class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> | ||||||
|  |         <property name="defaultEncoding" value="UTF-8" /> | ||||||
|  |         <property name="maxUploadSize" value="-1" /> | ||||||
|  |     </bean> | ||||||
|  |  | ||||||
|  | </beans> | ||||||
| @@ -0,0 +1,35 @@ | |||||||
|  | <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" | ||||||
|  |   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" | ||||||
|  |   version="3.1"> | ||||||
|  |  | ||||||
|  |   <display-name>Archetype Created Web Application</display-name> | ||||||
|  |  | ||||||
|  |   <servlet> | ||||||
|  |     <servlet-name>springmvc</servlet-name> | ||||||
|  |     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> | ||||||
|  |     <init-param> | ||||||
|  |       <param-name>contextConfigLocation</param-name> | ||||||
|  |       <param-value>classpath:spring.xml</param-value> | ||||||
|  |     </init-param> | ||||||
|  |     <load-on-startup>1</load-on-startup> | ||||||
|  |   </servlet> | ||||||
|  |   <servlet-mapping> | ||||||
|  |     <servlet-name>springmvc</servlet-name> | ||||||
|  |     <url-pattern>*.do</url-pattern> | ||||||
|  |   </servlet-mapping> | ||||||
|  |   <servlet-mapping> | ||||||
|  |     <servlet-name>springmvc</servlet-name> | ||||||
|  |     <url-pattern>/account/p13_account_check</url-pattern> | ||||||
|  |   </servlet-mapping> | ||||||
|  |  | ||||||
|  |   <filter> | ||||||
|  |     <filter-name>CrosFilter</filter-name> | ||||||
|  |     <filter-class>com.cpic.xim.web.filters.cros.CrosFilter</filter-class> | ||||||
|  |   </filter> | ||||||
|  |   <filter-mapping> | ||||||
|  |     <filter-name>CrosFilter</filter-name> | ||||||
|  |     <url-pattern>*</url-pattern> | ||||||
|  |   </filter-mapping> | ||||||
|  |  | ||||||
|  | </web-app> | ||||||
| @@ -0,0 +1,5 @@ | |||||||
|  | <html> | ||||||
|  | <body> | ||||||
|  | <h2>Hello World!</h2> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
							
								
								
									
										42
									
								
								code/测试/code_test/.eslintrc.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								code/测试/code_test/.eslintrc.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | |||||||
|  | module.exports = { | ||||||
|  |   root: true, | ||||||
|  |   env: { | ||||||
|  |     browser: true, | ||||||
|  |     es2021: true, | ||||||
|  |   }, | ||||||
|  |   parser: "@typescript-eslint/parser", | ||||||
|  |   parserOptions: { | ||||||
|  |     ecmaVersion: "latest", | ||||||
|  |     sourceType: "module", | ||||||
|  |   }, | ||||||
|  |   Plugin: [ | ||||||
|  |     "@typescript-eslint", //typescript的语法检查插件 | ||||||
|  |   ], | ||||||
|  |   extends: "standard-with-typescript", | ||||||
|  |   rules: { // 单项的语法检查规则 | ||||||
|  |     "no-console": "warn", | ||||||
|  |     "quote-props": ["warn", "as-needed",], | ||||||
|  |     quotes: ["warn", "double", { allowTemplateLiterals: true, },], | ||||||
|  |     indent: ["warn", 4,], | ||||||
|  |     "no-unused-vars": "warn", | ||||||
|  |     semi: ["error", "always",], // 控制行尾部分号 | ||||||
|  |     "comma-dangle": ["error", { | ||||||
|  |       arrays: "always", | ||||||
|  |       objects: "always", | ||||||
|  |       imports: "never", | ||||||
|  |       exports: "never", | ||||||
|  |       functions: "never", | ||||||
|  |     },], // 数组和对象键值对最后一个逗号 | ||||||
|  |     "comma-style": ["error", "last",], // 逗号在行位 | ||||||
|  |     "array-bracket-spacing": ["error", "never",], | ||||||
|  |     "no-undef-init": "error", | ||||||
|  |     "no-invalid-this": "error", | ||||||
|  |     "no-use-before-define": "error", | ||||||
|  |     "no-shadow-restricted-names": "error", // 禁止对一些关键字或者保留字进行赋值操作,比如NaN、Infinity、undefined、eval、arguments等 | ||||||
|  |     // "comma-spacing": ["error", { "before": false, "after": true, },], | ||||||
|  |     "brace-style": ["error", "allman", { allowSingleLine: true, },], | ||||||
|  |     "@typescript-eslint/no-extra-semi": "off", | ||||||
|  |   }, | ||||||
|  |   overrides: [ | ||||||
|  |   ], | ||||||
|  | }; | ||||||
							
								
								
									
										2482
									
								
								code/测试/code_test/package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										2482
									
								
								code/测试/code_test/package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										26
									
								
								code/测试/code_test/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								code/测试/code_test/package.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | |||||||
|  | { | ||||||
|  |     "name": "code_test", | ||||||
|  |     "version": "1.0.0", | ||||||
|  |     "description": "用于测试前端的typescript代码", | ||||||
|  |     "main": "index.ts", | ||||||
|  |     "type": "module", | ||||||
|  |     "scripts": { | ||||||
|  |         "test": "ts-node-esm index.ts" | ||||||
|  |     }, | ||||||
|  |     "author": "Kane", | ||||||
|  |     "license": "ISC", | ||||||
|  |     "devDependencies": { | ||||||
|  |         "@typescript-eslint/eslint-plugin": "^5.54.0", | ||||||
|  |         "@typescript-eslint/parser": "^5.54.0", | ||||||
|  |         "eslint": "^8.35.0", | ||||||
|  |         "eslint-config-standard-with-typescript": "^34.0.0", | ||||||
|  |         "eslint-plugin-import": "^2.27.5", | ||||||
|  |         "eslint-plugin-n": "^15.6.1", | ||||||
|  |         "eslint-plugin-promise": "^6.1.1", | ||||||
|  |         "typescript": "^4.9.5" | ||||||
|  |     }, | ||||||
|  |     "dependencies": { | ||||||
|  |         "axios": "^1.3.4" | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
							
								
								
									
										2
									
								
								code/测试/code_test/src/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								code/测试/code_test/src/index.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  |  | ||||||
|  | // | ||||||
							
								
								
									
										18
									
								
								code/测试/code_test/src/utils/api/request.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								code/测试/code_test/src/utils/api/request.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  |  | ||||||
|  | import axios from "axios"; | ||||||
|  |  | ||||||
|  | const service = axios.create({ | ||||||
|  |     baseURL: "", | ||||||
|  |     timeout: 10000, | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | service.interceptors.request.use( | ||||||
|  |     (config) => | ||||||
|  |     { | ||||||
|  |         return config; | ||||||
|  |     }, | ||||||
|  |     (error) => | ||||||
|  |     { | ||||||
|  |         return Promise.reject(error); | ||||||
|  |     } | ||||||
|  | ); | ||||||
							
								
								
									
										35
									
								
								code/测试/code_test/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								code/测试/code_test/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-03-03 11:21:43 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /code_test/tsconfig.json | ||||||
|  |  * @Description:  | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | { | ||||||
|  |     "compilerOptions": { | ||||||
|  |         "strict": true, | ||||||
|  |         "target": "ES2015", | ||||||
|  |         "module": "CommonJS", | ||||||
|  |         "esModuleInterop": true, | ||||||
|  |         "lib": [ | ||||||
|  |             "ESNext", | ||||||
|  |         ], | ||||||
|  |         "baseUrl": "./", | ||||||
|  |         "paths": { | ||||||
|  |             "@/*": [ | ||||||
|  |                 "src/*" | ||||||
|  |             ], | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     "include": [ | ||||||
|  |         "src/**/*.ts", | ||||||
|  |         "src/**/*.tsx", | ||||||
|  |         "*.d.ts", | ||||||
|  |     ], | ||||||
|  |     "exclude": [ | ||||||
|  |         "./node_modules", | ||||||
|  |     ], | ||||||
|  |     "compileOnSave": true, | ||||||
|  | } | ||||||
							
								
								
									
										448
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										448
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,448 @@ | |||||||
|  | { | ||||||
|  |   "name": "deskop_task_schedule", | ||||||
|  |   "lockfileVersion": 2, | ||||||
|  |   "requires": true, | ||||||
|  |   "packages": { | ||||||
|  |     "": { | ||||||
|  |       "dependencies": { | ||||||
|  |         "vuex": "^4.0.2" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/@babel/parser": { | ||||||
|  |       "version": "7.21.2", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.21.2.tgz", | ||||||
|  |       "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", | ||||||
|  |       "peer": true, | ||||||
|  |       "bin": { | ||||||
|  |         "parser": "bin/babel-parser.js" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=6.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/@vue/compiler-core": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==", | ||||||
|  |       "peer": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@babel/parser": "^7.16.4", | ||||||
|  |         "@vue/shared": "3.2.47", | ||||||
|  |         "estree-walker": "^2.0.2", | ||||||
|  |         "source-map": "^0.6.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/@vue/compiler-dom": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==", | ||||||
|  |       "peer": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@vue/compiler-core": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/@vue/compiler-sfc": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==", | ||||||
|  |       "peer": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@babel/parser": "^7.16.4", | ||||||
|  |         "@vue/compiler-core": "3.2.47", | ||||||
|  |         "@vue/compiler-dom": "3.2.47", | ||||||
|  |         "@vue/compiler-ssr": "3.2.47", | ||||||
|  |         "@vue/reactivity-transform": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47", | ||||||
|  |         "estree-walker": "^2.0.2", | ||||||
|  |         "magic-string": "^0.25.7", | ||||||
|  |         "postcss": "^8.1.10", | ||||||
|  |         "source-map": "^0.6.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/@vue/compiler-ssr": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==", | ||||||
|  |       "peer": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@vue/compiler-dom": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/@vue/devtools-api": { | ||||||
|  |       "version": "6.5.0", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz", | ||||||
|  |       "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" | ||||||
|  |     }, | ||||||
|  |     "node_modules/@vue/reactivity": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==", | ||||||
|  |       "peer": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@vue/shared": "3.2.47" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/@vue/reactivity-transform": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==", | ||||||
|  |       "peer": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@babel/parser": "^7.16.4", | ||||||
|  |         "@vue/compiler-core": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47", | ||||||
|  |         "estree-walker": "^2.0.2", | ||||||
|  |         "magic-string": "^0.25.7" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/@vue/runtime-core": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==", | ||||||
|  |       "peer": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@vue/reactivity": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/@vue/runtime-dom": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==", | ||||||
|  |       "peer": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@vue/runtime-core": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47", | ||||||
|  |         "csstype": "^2.6.8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/@vue/server-renderer": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==", | ||||||
|  |       "peer": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@vue/compiler-ssr": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47" | ||||||
|  |       }, | ||||||
|  |       "peerDependencies": { | ||||||
|  |         "vue": "3.2.47" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/@vue/shared": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", | ||||||
|  |       "peer": true | ||||||
|  |     }, | ||||||
|  |     "node_modules/csstype": { | ||||||
|  |       "version": "2.6.21", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz", | ||||||
|  |       "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", | ||||||
|  |       "peer": true | ||||||
|  |     }, | ||||||
|  |     "node_modules/estree-walker": { | ||||||
|  |       "version": "2.0.2", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", | ||||||
|  |       "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", | ||||||
|  |       "peer": true | ||||||
|  |     }, | ||||||
|  |     "node_modules/magic-string": { | ||||||
|  |       "version": "0.25.9", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", | ||||||
|  |       "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", | ||||||
|  |       "peer": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "sourcemap-codec": "^1.4.8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/nanoid": { | ||||||
|  |       "version": "3.3.4", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz", | ||||||
|  |       "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", | ||||||
|  |       "peer": true, | ||||||
|  |       "bin": { | ||||||
|  |         "nanoid": "bin/nanoid.cjs" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/picocolors": { | ||||||
|  |       "version": "1.0.0", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", | ||||||
|  |       "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", | ||||||
|  |       "peer": true | ||||||
|  |     }, | ||||||
|  |     "node_modules/postcss": { | ||||||
|  |       "version": "8.4.21", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz", | ||||||
|  |       "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", | ||||||
|  |       "peer": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "nanoid": "^3.3.4", | ||||||
|  |         "picocolors": "^1.0.0", | ||||||
|  |         "source-map-js": "^1.0.2" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": "^10 || ^12 || >=14" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/source-map": { | ||||||
|  |       "version": "0.6.1", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", | ||||||
|  |       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", | ||||||
|  |       "peer": true, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=0.10.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/source-map-js": { | ||||||
|  |       "version": "1.0.2", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", | ||||||
|  |       "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", | ||||||
|  |       "peer": true, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=0.10.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/sourcemap-codec": { | ||||||
|  |       "version": "1.4.8", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", | ||||||
|  |       "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", | ||||||
|  |       "deprecated": "Please use @jridgewell/sourcemap-codec instead", | ||||||
|  |       "peer": true | ||||||
|  |     }, | ||||||
|  |     "node_modules/vue": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==", | ||||||
|  |       "peer": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@vue/compiler-dom": "3.2.47", | ||||||
|  |         "@vue/compiler-sfc": "3.2.47", | ||||||
|  |         "@vue/runtime-dom": "3.2.47", | ||||||
|  |         "@vue/server-renderer": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/vuex": { | ||||||
|  |       "version": "4.0.2", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.0.2.tgz", | ||||||
|  |       "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==", | ||||||
|  |       "dependencies": { | ||||||
|  |         "@vue/devtools-api": "^6.0.0-beta.11" | ||||||
|  |       }, | ||||||
|  |       "peerDependencies": { | ||||||
|  |         "vue": "^3.0.2" | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "dependencies": { | ||||||
|  |     "@babel/parser": { | ||||||
|  |       "version": "7.21.2", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.21.2.tgz", | ||||||
|  |       "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", | ||||||
|  |       "peer": true | ||||||
|  |     }, | ||||||
|  |     "@vue/compiler-core": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==", | ||||||
|  |       "peer": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/parser": "^7.16.4", | ||||||
|  |         "@vue/shared": "3.2.47", | ||||||
|  |         "estree-walker": "^2.0.2", | ||||||
|  |         "source-map": "^0.6.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@vue/compiler-dom": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==", | ||||||
|  |       "peer": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@vue/compiler-core": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@vue/compiler-sfc": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==", | ||||||
|  |       "peer": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/parser": "^7.16.4", | ||||||
|  |         "@vue/compiler-core": "3.2.47", | ||||||
|  |         "@vue/compiler-dom": "3.2.47", | ||||||
|  |         "@vue/compiler-ssr": "3.2.47", | ||||||
|  |         "@vue/reactivity-transform": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47", | ||||||
|  |         "estree-walker": "^2.0.2", | ||||||
|  |         "magic-string": "^0.25.7", | ||||||
|  |         "postcss": "^8.1.10", | ||||||
|  |         "source-map": "^0.6.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@vue/compiler-ssr": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==", | ||||||
|  |       "peer": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@vue/compiler-dom": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@vue/devtools-api": { | ||||||
|  |       "version": "6.5.0", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz", | ||||||
|  |       "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" | ||||||
|  |     }, | ||||||
|  |     "@vue/reactivity": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==", | ||||||
|  |       "peer": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@vue/shared": "3.2.47" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@vue/reactivity-transform": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==", | ||||||
|  |       "peer": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/parser": "^7.16.4", | ||||||
|  |         "@vue/compiler-core": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47", | ||||||
|  |         "estree-walker": "^2.0.2", | ||||||
|  |         "magic-string": "^0.25.7" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@vue/runtime-core": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==", | ||||||
|  |       "peer": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@vue/reactivity": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@vue/runtime-dom": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==", | ||||||
|  |       "peer": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@vue/runtime-core": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47", | ||||||
|  |         "csstype": "^2.6.8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@vue/server-renderer": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==", | ||||||
|  |       "peer": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@vue/compiler-ssr": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@vue/shared": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", | ||||||
|  |       "peer": true | ||||||
|  |     }, | ||||||
|  |     "csstype": { | ||||||
|  |       "version": "2.6.21", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz", | ||||||
|  |       "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", | ||||||
|  |       "peer": true | ||||||
|  |     }, | ||||||
|  |     "estree-walker": { | ||||||
|  |       "version": "2.0.2", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", | ||||||
|  |       "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", | ||||||
|  |       "peer": true | ||||||
|  |     }, | ||||||
|  |     "magic-string": { | ||||||
|  |       "version": "0.25.9", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", | ||||||
|  |       "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", | ||||||
|  |       "peer": true, | ||||||
|  |       "requires": { | ||||||
|  |         "sourcemap-codec": "^1.4.8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "nanoid": { | ||||||
|  |       "version": "3.3.4", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz", | ||||||
|  |       "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", | ||||||
|  |       "peer": true | ||||||
|  |     }, | ||||||
|  |     "picocolors": { | ||||||
|  |       "version": "1.0.0", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", | ||||||
|  |       "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", | ||||||
|  |       "peer": true | ||||||
|  |     }, | ||||||
|  |     "postcss": { | ||||||
|  |       "version": "8.4.21", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz", | ||||||
|  |       "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", | ||||||
|  |       "peer": true, | ||||||
|  |       "requires": { | ||||||
|  |         "nanoid": "^3.3.4", | ||||||
|  |         "picocolors": "^1.0.0", | ||||||
|  |         "source-map-js": "^1.0.2" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "source-map": { | ||||||
|  |       "version": "0.6.1", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", | ||||||
|  |       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", | ||||||
|  |       "peer": true | ||||||
|  |     }, | ||||||
|  |     "source-map-js": { | ||||||
|  |       "version": "1.0.2", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", | ||||||
|  |       "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", | ||||||
|  |       "peer": true | ||||||
|  |     }, | ||||||
|  |     "sourcemap-codec": { | ||||||
|  |       "version": "1.4.8", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", | ||||||
|  |       "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", | ||||||
|  |       "peer": true | ||||||
|  |     }, | ||||||
|  |     "vue": { | ||||||
|  |       "version": "3.2.47", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz", | ||||||
|  |       "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==", | ||||||
|  |       "peer": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@vue/compiler-dom": "3.2.47", | ||||||
|  |         "@vue/compiler-sfc": "3.2.47", | ||||||
|  |         "@vue/runtime-dom": "3.2.47", | ||||||
|  |         "@vue/server-renderer": "3.2.47", | ||||||
|  |         "@vue/shared": "3.2.47" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "vuex": { | ||||||
|  |       "version": "4.0.2", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.0.2.tgz", | ||||||
|  |       "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==", | ||||||
|  |       "requires": { | ||||||
|  |         "@vue/devtools-api": "^6.0.0-beta.11" | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										5
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | { | ||||||
|  |   "dependencies": { | ||||||
|  |     "vuex": "^4.0.2" | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								文档/界面/ui.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								文档/界面/ui.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.0 MiB | 
		Reference in New Issue
	
	Block a user