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/* | ||||
|  | ||||
| # oracle | ||||
| *.~pck | ||||
| *.~sql | ||||
|   | ||||
							
								
								
									
										17
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								README.md
									
									
									
									
									
								
							| @@ -11,3 +11,20 @@ | ||||
| 1. 员工电脑使用 Lively Wallpaper,将壁纸设置为一个web页面。 | ||||
| 2. 前端使用vite + vue3; | ||||
| 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> | ||||
| <html lang="en"> | ||||
|     <head> | ||||
|         <meta charset="UTF-8" /> | ||||
|         <link rel="icon" type="image/svg+xml" href="/vite.svg" /> | ||||
|         <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||
|     <title>Vite + Vue</title> | ||||
|         <title>看看你的业绩!!!</title> | ||||
|     </head> | ||||
|     <body> | ||||
|         <div id="app"></div> | ||||
|         <script type="module" src="/src/main.js"></script> | ||||
|     </body> | ||||
|     <script> | ||||
|         // alert(window.location.href); | ||||
|     </script> | ||||
| </html> | ||||
|   | ||||
							
								
								
									
										12169
									
								
								code/web/task_schedule/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										12169
									
								
								code/web/task_schedule/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -11,8 +11,14 @@ | ||||
|     "dependencies": { | ||||
|         "@babel/eslint-parser": "^7.19.1", | ||||
|         "@element-plus/icons-vue": "^2.0.10", | ||||
|         "@typescript-eslint/eslint-plugin": "^5.54.0", | ||||
|         "@typescript-eslint/parser": "^5.54.0", | ||||
|         "axios": "^1.3.4", | ||||
|         "babel": "^6.23.0", | ||||
|         "echarts": "^5.4.1", | ||||
|         "element-plus": "^2.2.30", | ||||
|         "moment": "^2.29.4", | ||||
|         "typescript": "^4.9.5", | ||||
|         "vue": "^3.2.45", | ||||
|         "vue-router": "^4.1.6", | ||||
|         "vuex": "^4.1.0" | ||||
| @@ -23,7 +29,9 @@ | ||||
|         "@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 | ||||
|  * @Date: 2023-02-15 09:25:52 | ||||
|  * @LastEditors: Kane | ||||
|  * @LastEditTime: 2023-02-28 01:15:01 | ||||
|  * @LastEditTime: 2023-03-03 10:00:54 | ||||
|  * @FilePath: /task_schedule/src/App.vue | ||||
|  * @Description:  | ||||
|  * 应用的框架: | ||||
|  * 1、配置el-config-provider,配置为中文。  | ||||
|  *  | ||||
|  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||
| --> | ||||
| <template> | ||||
|   <el-config-provider :locale="this.locale"> | ||||
|   <el-config-provider :locale="locale"> | ||||
|     <router-view></router-view> | ||||
|   </el-config-provider> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import HelloWorld from "./components/HelloWorld.vue"; | ||||
| <script lang="ts"> | ||||
| import zhCn from "element-plus/lib/locale/lang/zh-cn"; //element-plus语言组件 | ||||
| import { reactive } from "vue"; | ||||
|  | ||||
| export default { | ||||
|   name: "App", | ||||
|   components: { HelloWorld }, | ||||
|   setup(props) | ||||
|   components: {}, | ||||
|   setup() | ||||
|   { | ||||
|     const locale = zhCn; | ||||
|     const ui = reactive({ | ||||
|       counter: 0, | ||||
|     }); | ||||
|  | ||||
|     const onCount = () => | ||||
|     { | ||||
|       ui.counter++; | ||||
|       console.log(ui.counter); | ||||
|     }; | ||||
|  | ||||
|     // setInterval(() => | ||||
|     // { | ||||
|     //   ui.counter += 1; | ||||
|     //   // console.log(counter); | ||||
|     // }, 1000); | ||||
|  | ||||
|     // setInterval(() => | ||||
|     // { | ||||
|     //   location.reload(); | ||||
|     // }, 5000); | ||||
|  | ||||
|     return { locale, ui, onCount }; | ||||
|     return { locale, }; | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <style scoped> | ||||
| .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> | ||||
| <style scoped></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 | ||||
|  * @Date: 2023-02-15 09:25:52 | ||||
|  * @LastEditors: Kane | ||||
|  * @LastEditTime: 2023-02-15 16:21:24 | ||||
|  * @LastEditTime: 2023-03-03 15:50:08 | ||||
|  * @FilePath: /task_schedule/src/main.js | ||||
|  * @Description:  | ||||
|  *  | ||||
|  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||
|  */ | ||||
| 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 './style.css'; | ||||
|  | ||||
| //css | ||||
| import './style.css'; | ||||
| import "./assets/css/index.scss"; | ||||
| import("element-plus/dist/index.css"); | ||||
|  | ||||
|  | ||||
| //element-plus | ||||
| import ElementPlus from "element-plus";; | ||||
| import ElementPlus from "element-plus"; | ||||
| import * as ElementPlusIconsVue from "@element-plus/icons-vue"; | ||||
|  | ||||
| const app = createApp(App); | ||||
| @@ -32,4 +34,5 @@ for (const [key, component,] of Object.entries(ElementPlusIconsVue)) | ||||
|  | ||||
| app.use(ElementPlus); | ||||
| app.use(router); | ||||
| app.use(store); | ||||
| app.mount('#app'); | ||||
|   | ||||
| @@ -1,12 +1,13 @@ | ||||
| /* | ||||
|  * @Author: Kane | ||||
|  * @Date: 2023-02-28 00:20:48 | ||||
|  * @Date: 2023-02-28 01:22:48 | ||||
|  * @LastEditors: Kane | ||||
|  * @FilePath: /task_schedule/src/router/index.js | ||||
|  * @Description: 路由配置文件 | ||||
|  * @Description:  | ||||
|  *  | ||||
|  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||
|  */ | ||||
|  | ||||
| import { createRouter, createWebHashHistory } from "vue-router"; | ||||
|  | ||||
| const routes = [ | ||||
| @@ -20,7 +21,19 @@ const routes = [ | ||||
|         path: "/login", | ||||
|         name: "Login", | ||||
|         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 }; | ||||
							
								
								
									
										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 { | ||||
|     /* 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-size: contain; | ||||
|     /* background-position: center; */ | ||||
|     /* background-repeat: no-repeat; */ | ||||
| } | ||||
|  | ||||
| body { | ||||
|     /* background-color: #8796a6; */ | ||||
|     width: 100vw; | ||||
|     height: 100vh; | ||||
|     /* border: 1px solid red; */ | ||||
|     /* overflow: hidden; */ | ||||
|     padding: 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 | ||||
|  * @Date: 2023-02-28 00:57:21 | ||||
|  * @Date: 2023-02-28 19:10:54 | ||||
|  * @LastEditors: Kane | ||||
|  * @FilePath: /task_schedule/src/components/login/Login.vue | ||||
|  * @FilePath: /task_schedule/src/views/Public.vue | ||||
|  * @Description:  | ||||
|  *  | ||||
|  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||
| --> | ||||
| <template> | ||||
|     登录页面 | ||||
|     公共页面 | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts"> | ||||
| export default { | ||||
|     name: "Login", | ||||
|     setup(): void | ||||
|     name: "PublicPage", | ||||
|     setup()  | ||||
|     { | ||||
| 
 | ||||
|     }, | ||||
| }; | ||||
| </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 | ||||
|  * @Date: 2023-02-15 09:25:52 | ||||
|  * @LastEditors: Kane | ||||
|  * @LastEditTime: 2023-02-28 01:06:12 | ||||
|  * @LastEditTime: 2023-03-03 15:52:58 | ||||
|  * @FilePath: /task_schedule/vite.config.js | ||||
|  * @Description:  | ||||
|  *  | ||||
|  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||
|  */ | ||||
| import { defineConfig } from 'vite'; | ||||
| import vue from '@vitejs/plugin-vue'; | ||||
| import path from 'path'; | ||||
| import { defineConfig, loadEnv } from "vite"; | ||||
| import vue from "@vitejs/plugin-vue"; | ||||
| import path from "path"; | ||||
|  | ||||
| // https://vitejs.dev/config/ | ||||
| export default defineConfig({ | ||||
|   plugins: [vue()], | ||||
|   base: './', | ||||
| export default defineConfig((command, mode) => | ||||
| { | ||||
|   const env = loadEnv(mode, process.cwd(), ""); | ||||
|  | ||||
|   return { | ||||
|     plugins: [vue(),], | ||||
|     base: "./", | ||||
|     resolve: { | ||||
|       //配置别名 | ||||
|       alias: [ | ||||
|         { | ||||
|           find: /^~/, | ||||
|         replacement: '', | ||||
|           replacement: "", | ||||
|         }, | ||||
|         { | ||||
|         find: '@', | ||||
|         replacement: path.resolve(__dirname, 'src'), | ||||
|           find: "@", | ||||
|           replacement: path.resolve(__dirname, "src"), | ||||
|         }, | ||||
|       ], | ||||
|     }, | ||||
|     define: { | ||||
|       __APP_ENV__: env.APP_ENV, | ||||
|     }, | ||||
|     css: { | ||||
|       preprocessorOptions: { | ||||
|         scss: { | ||||
|           additionalData: "@import \"./src/assets/css/public/color.scss\";", | ||||
|         }, | ||||
|       }, | ||||
|     }, | ||||
|   }; | ||||
| }); | ||||
|   | ||||
										
											
												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