32 Commits

Author SHA1 Message Date
daa675b079 升级依赖。 2023-07-10 16:42:05 +08:00
47c30a4ea1 保存进度! 2023-06-25 18:29:36 +08:00
157ab0d76e 保存进度! 2023-06-21 18:47:17 +08:00
8c4293f374 保存进度! 2023-06-20 22:29:37 +08:00
f6ec7cbdfe 111 2023-06-19 22:12:49 +08:00
59bc739cac 升级依赖 2023-06-19 00:48:48 +08:00
30ea250264 保存进度! 2023-06-18 00:50:24 +08:00
a14f4b154f Merge branch 'feature-rankinglist' of http://222.76.244.118:3000/CPICXIM/desktop_task_schedule into feature-rankinglist 2023-06-17 23:37:56 +08:00
dfdde2f8d3 保存进度! 2023-06-16 18:35:19 +08:00
503a5bcdff 保存进度! 2023-06-16 09:54:26 +08:00
05dfb0483c Merge branch 'feature-rankinglist' of http://222.76.244.118:3000/CPICXIM/desktop_task_schedule into feature-rankinglist 2023-06-14 00:15:17 +08:00
3eeaf68593 保存进度! 2023-06-14 00:15:13 +08:00
20924be00e 升级依赖。 2023-06-13 18:10:57 +08:00
0e1338e54b 保存进度! 2023-06-12 18:29:24 +08:00
24266203ca Merge branch 'feature-rankinglist' of http://222.76.244.118:3000/CPICXIM/desktop_task_schedule into feature-rankinglist 2023-06-12 09:43:43 +08:00
88880962a9 升级依赖。 2023-06-12 09:43:34 +08:00
e2ccf553aa Merge branch 'feature-rankinglist' of http://222.76.244.118:3000/CPICXIM/desktop_task_schedule into feature-rankinglist 2023-06-10 00:42:45 +08:00
5856909e92 保存进度! 2023-06-10 00:42:43 +08:00
1b368deb9c 保存进度! 2023-06-09 16:57:13 +08:00
aa39cc4601 保存进度! 2023-06-09 16:37:50 +08:00
80e4b24e4f 保存进度! 2023-06-08 18:08:57 +08:00
664c2335ca 保存进度! 2023-06-07 17:19:47 +08:00
2f3e22fb3e 保存进度! 2023-06-06 18:51:11 +08:00
f9392ea2eb 开发排行榜组件 2023-06-06 17:31:16 +08:00
8b23d4ad4a 保存进度! 2023-06-06 16:16:34 +08:00
eeb01604b2 保存进度! 2023-06-05 18:14:36 +08:00
4eec8a9f18 完成排行榜代码,还没测试 2023-06-05 18:09:40 +08:00
6f65e18672 编写坐席排行榜接口 2023-06-05 11:45:20 +08:00
490e0e0e93 保存进度! 2023-06-05 00:12:21 +08:00
ec18d20461 Merge branch 'feature-data' of http://222.76.244.118:3000/CPICXIM/desktop_task_schedule into feature-data 2023-06-04 19:51:45 +08:00
d3ca1f9004 保存进度! 2023-06-04 19:11:44 +08:00
425b7be1a7 保存进度! 2023-06-04 16:01:05 +08:00
34 changed files with 1935 additions and 483 deletions

1
.gitignore vendored
View File

@@ -78,6 +78,7 @@ build/Release
# Dependency directories # Dependency directories
node_modules/ node_modules/
node_modules_bak/
jspm_packages/ jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/) # Snowpack dependency directory (https://snowpack.dev/)

View File

@@ -6,6 +6,10 @@ CREATE OR REPLACE PACKAGE telsale_archievement_pkg IS
TYPE cur_type IS REF CURSOR; TYPE cur_type IS REF CURSOR;
-- <20>
DEPARTMENTCODE_EXCEPTION_CODE CONSTANT INTEGER := -20000;
DEPARTMENTCODE_EXCEPTION_MSG CONSTANT VARCHAR2(100) := '<27><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD>Ч';
PROCEDURE department_archievement PROCEDURE department_archievement
( (
a_department_code IN VARCHAR2, a_department_code IN VARCHAR2,
@@ -17,8 +21,11 @@ CREATE OR REPLACE PACKAGE telsale_archievement_pkg IS
PROCEDURE caller_arch_ranking_list PROCEDURE caller_arch_ranking_list
( (
a_department_code IN VARCHAR2, a_department_code IN VARCHAR2,
a_chefei_ranking_list OUT cur_type a_year IN VARCHAR2,
a_month IN VARCHAR2,
a_attaching_ranking_list OUT cur_type,
a_renewal_ranking_list OUT cur_type
); );
END telsale_archievement_pkg; END telsale_archievement_pkg;
@@ -35,20 +42,30 @@ CREATE OR REPLACE PACKAGE BODY telsale_archievement_pkg IS
a_mensual_cur OUT cur_type a_mensual_cur OUT cur_type
) IS ) IS
l_this_month VARCHAR2(4); l_this_month VARCHAR2(4);
l_this_year DATE; l_this_year VARCHAR2(4);
l_firstday DATE;
l_department_name VARCHAR2(100); l_department_name VARCHAR2(100);
BEGIN BEGIN
l_this_month := to_char(SYSDATE, l_this_month := to_char(SYSDATE,
'mm') || '<27><>'; 'mm');
l_this_year := to_char(SYSDATE,
'yyyy');
l_firstday := to_date(to_char(SYSDATE,
'yyyy') || '-01-01 00:00:00',
'yyyy-mm-dd hh24:mi:ss');
-- <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BEGIN
SELECT department_name
INTO l_department_name
FROM idst0.bm_t bm
WHERE bm.department_code = a_department_code;
EXCEPTION
-- <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>
WHEN NO_DATA_FOUND THEN
raise_application_error(DEPARTMENTCODE_EXCEPTION_CODE,
DEPARTMENTCODE_EXCEPTION_MSG);
l_this_year := to_date(to_char(SYSDATE, END;
'yyyy') || '-01-01 00:00:00',
'yyyy-mm-dd hh24:mi:ss');
SELECT bm.department_name
INTO l_department_name
FROM idst0.bm_t bm
WHERE bm.department_code = a_department_code;
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8> --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8>
SELECT decode(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>), SELECT decode(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>),
@@ -57,8 +74,9 @@ CREATE OR REPLACE PACKAGE BODY telsale_archievement_pkg IS
round((SUM(cf.<2E><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>) / SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>) * 100), round((SUM(cf.<2E><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>) / SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>) * 100),
2)) 2))
INTO a_attaching_rate INTO a_attaching_rate
FROM <20><><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> cf FROM <20><>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD> cf
WHERE cf.<2E>·<EFBFBD> = l_this_month WHERE cf.<2E>·<EFBFBD> = l_this_month
AND cf.<2E><><EFBFBD><EFBFBD> = l_this_year
AND <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = a_department_code; AND <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = a_department_code;
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -76,9 +94,9 @@ CREATE OR REPLACE PACKAGE BODY telsale_archievement_pkg IS
0), 0),
0) 0)
INTO a_total INTO a_total
FROM <20><><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> cf FROM <20><>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD> cf
WHERE <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = a_department_code WHERE <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = a_department_code
AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >= l_this_year AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >= l_firstday
AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <= SYSDATE; AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <= SYSDATE;
--ÿ<><C3BF>ҵ<EFBFBD><D2B5> --ÿ<><C3BF>ҵ<EFBFBD><D2B5>
@@ -87,7 +105,7 @@ CREATE OR REPLACE PACKAGE BODY telsale_archievement_pkg IS
round(nvl(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD> + cf.<2E><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>) / 10000, round(nvl(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD> + cf.<2E><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>) / 10000,
0), 0),
0) bf 0) bf
FROM <20><><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> cf FROM <20><>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD> cf
WHERE <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = a_department_code WHERE <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = a_department_code
AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >= to_date(to_char(SYSDATE, AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >= to_date(to_char(SYSDATE,
'yyyy') || '-01-01 00:00:00', 'yyyy') || '-01-01 00:00:00',
@@ -99,28 +117,56 @@ CREATE OR REPLACE PACKAGE BODY telsale_archievement_pkg IS
ORDER BY cf.<2E>·<EFBFBD>; ORDER BY cf.<2E>·<EFBFBD>;
END; END;
/*******************************************************/
-- <20><>ϯ<EFBFBD><CFAF><EFBFBD>а<EFBFBD>
PROCEDURE caller_arch_ranking_list PROCEDURE caller_arch_ranking_list
( (
a_department_code IN VARCHAR2, a_department_code IN VARCHAR2,
a_chefei_ranking_list OUT cur_type a_year IN VARCHAR2,
a_month IN VARCHAR2,
a_attaching_ranking_list OUT cur_type,
a_renewal_ranking_list OUT cur_type
) IS ) IS
l_current_month VARCHAR2(10); l_department_name VARCHAR2(100);
BEGIN BEGIN
l_current_month := to_char(SYSDATE, -- <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
'mm') || '<27><>'; BEGIN
SELECT department_name
INTO l_department_name
FROM idst0.bm_t bm
WHERE bm.department_code = a_department_code;
EXCEPTION
-- <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>
WHEN NO_DATA_FOUND THEN
raise_application_error(DEPARTMENTCODE_EXCEPTION_CODE,
DEPARTMENTCODE_EXCEPTION_MSG);
OPEN a_chefei_ranking_list FOR END;
-- <20><><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>
OPEN a_attaching_ranking_list FOR
SELECT <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, SELECT <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>,
round(SUM(<28><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>) / SUM(<28><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>) * 100, round(nvl(SUM(<28><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>) / SUM(<28><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>),
0) * 100,
2) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8> 2) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8>
FROM <20><><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> FROM <20><>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>
WHERE <20>·<EFBFBD> = l_current_month WHERE <20>·<EFBFBD> = a_month
AND <20><><EFBFBD><EFBFBD> = a_year
AND <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = a_department_code AND <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = a_department_code
GROUP BY <20>·<EFBFBD>, GROUP BY <20><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD>, --HAVING <20>·<EFBFBD> = '06<30><36>'
<20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>
HAVING <20>·<EFBFBD> = '06<30><36>'
ORDER BY <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8> DESC; ORDER BY <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8> DESC;
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>
OPEN a_renewal_ranking_list FOR
SELECT <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>,
round(nvl((SUM(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) / SUM(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)) * 100,
0),
2) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3> xb
WHERE xb.<2E><><EFBFBD><EFBFBD> = l_department_name
GROUP BY <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>
ORDER BY <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DESC;
END; END;
BEGIN BEGIN

View File

@@ -61,6 +61,8 @@ CREATE OR REPLACE PACKAGE BODY telsale_pkg IS
NULL; NULL;
END; END;
/**********************************************************************/
PROCEDURE gen_<6E><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> PROCEDURE gen_<6E><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
( (
a_start_date IN DATE, a_start_date IN DATE,
@@ -69,12 +71,14 @@ CREATE OR REPLACE PACKAGE BODY telsale_pkg IS
BEGIN BEGIN
desktop_archievement_admin.clean_temp_data; desktop_archievement_admin.clean_temp_data;
INSERT INTO desktop_archievement_admin.<2E><><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD>_t INSERT INTO desktop_archievement_admin.<2E><>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>_t
WITH aa AS WITH aa AS
(SELECT to_char(t.signature_date, (SELECT to_char(t.signature_date,
'yyyy-mm-dd') ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 'yyyy-mm-dd') ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
(to_char(T.signature_date, (to_char(T.signature_date,
'mm')) || '<27><>' mm, 'yyyy')) the_year,
(to_char(T.signature_date,
'mm')) the_month,
t.policy_no bdh, t.policy_no bdh,
t.endorsement_no pdh, t.endorsement_no pdh,
qt.t_cre tid, qt.t_cre tid,
@@ -189,7 +193,8 @@ CREATE OR REPLACE PACKAGE BODY telsale_pkg IS
, ,
dd2 AS dd2 AS
(SELECT ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, (SELECT ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
mm, the_year,
the_month,
bm, bm,
bmdm, bmdm,
<20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>,
@@ -215,7 +220,8 @@ CREATE OR REPLACE PACKAGE BODY telsale_pkg IS
WHEN pdh = '<27><>' THEN WHEN pdh = '<27><>' THEN
tid tid
END, END,
mm, the_year,
the_month,
BTID, BTID,
<20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>,
<20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>,
@@ -225,7 +231,8 @@ CREATE OR REPLACE PACKAGE BODY telsale_pkg IS
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N
UNION UNION
SELECT ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, SELECT ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
mm, the_year,
the_month,
bm, bm,
bmdm, bmdm,
<20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>,
@@ -257,7 +264,7 @@ CREATE OR REPLACE PACKAGE BODY telsale_pkg IS
to_number(to_char(q.signature_date, to_number(to_char(q.signature_date,
'yyyy')) || '<27><>' nf, 'yyyy')) || '<27><>' nf,
(to_char(q.signature_date, (to_char(q.signature_date,
'mm')) || '<27><>' mm_f, 'mm')) mm_f,
to_char(q.signature_date, to_char(q.signature_date,
'dd') || '<27><>' dd, 'dd') || '<27><>' dd,
q.signature_date sj, q.signature_date sj,
@@ -334,11 +341,12 @@ CREATE OR REPLACE PACKAGE BODY telsale_pkg IS
FROM dd FROM dd
LEFT JOIN cc LEFT JOIN cc
ON cc.<2E>ں<EFBFBD>֤<EFBFBD><D6A4> = dd.tid ON cc.<2E>ں<EFBFBD>֤<EFBFBD><D6A4> = dd.tid
AND cc.mm_f = dd.mm) --OR cc.<2E>ں<EFBFBD>֤<EFBFBD><D6A4> = dd.btid AND cc.mm_f = dd.the_month) --OR cc.<2E>ں<EFBFBD>֤<EFBFBD><D6A4> = dd.btid
--select * from ff --select * from ff
SELECT to_date(ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, SELECT to_date(ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
'yyyy-mm-dd') ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 'yyyy-mm-dd') ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
mm <20>·<EFBFBD>, the_year <20><><EFBFBD><EFBFBD>,
the_month <20>·<EFBFBD>,
bm <20><><EFBFBD><EFBFBD>, bm <20><><EFBFBD><EFBFBD>,
bmdm <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD>, bmdm <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD>,
<20><><EFBFBD><EFBFBD>N, <20><><EFBFBD><EFBFBD>N,
@@ -358,7 +366,8 @@ CREATE OR REPLACE PACKAGE BODY telsale_pkg IS
AND bm IN ('<27><><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>', AND bm IN ('<27><><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>',
'<27><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>˾') '<27><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>˾')
GROUP BY ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, GROUP BY ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
mm, the_year,
the_month,
bm, bm,
bmdm, bmdm,
<20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>,
@@ -371,6 +380,8 @@ CREATE OR REPLACE PACKAGE BODY telsale_pkg IS
COMMIT; COMMIT;
END; END;
/**********************************************************************/
PROCEDURE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IS PROCEDURE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IS
BEGIN BEGIN
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -27,7 +27,7 @@ SELECT *
WHERE t.team_code = '107077' WHERE t.team_code = '107077'
SELECT * SELECT *
FROM <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD> FROM <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>
ORDER BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ORDER BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
@@ -48,7 +48,7 @@ SELECT
SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>), SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>),
round(SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>) / SUM(<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100, round(SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>) / SUM(<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100,
2) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD> 2) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD>
FROM <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD> FROM <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>
GROUP BY <EFBFBD>·<EFBFBD>, GROUP BY <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>
@@ -59,8 +59,19 @@ HAVING
SELECT <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, SELECT <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
round(SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>) / SUM(<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100, round(SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>) / SUM(<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100,
2) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD> 2) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD>
FROM <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD> FROM <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>
WHERE <EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD> = 'QDI' WHERE <EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD> = 'QDI'
AND <EFBFBD>·<EFBFBD> = '06<EFBFBD><EFBFBD>' AND <EFBFBD>·<EFBFBD> = '05'
AND <EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '2023'
GROUP BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> GROUP BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ORDER BY <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD> DESC; ORDER BY <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD> DESC;
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SELECT <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
round(nvl(SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) / SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100,
0),
2) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FROM <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD> xb
WHERE xb.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
GROUP BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ORDER BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> DESC;

View File

@@ -1,48 +1,36 @@
--INSERT INTO desktop_archievement_admin.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>_t INSERT INTO desktop_archievement_admin.<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>
WITH aa AS WITH aa AS
(SELECT to_char(t.signature_date, (SELECT to_char(t.signature_date,
'yyyy-mm-dd') ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 'yyyy-mm-dd') ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
(to_char(T.signature_date, (to_char(T.signature_date,
'mm')) || '<EFBFBD><EFBFBD>' mm, 'yyyy')) the_year,
t.policy_no bdh, (to_char(T.signature_date,
t.endorsement_no pdh, 'mm')) the_month,
qt.t_cre tid, t.policy_no bdh,
QT.B_CRE BTID, -----<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD> t.endorsement_no pdh,
e.inception_date qbsj, qt.t_cre tid,
e.planned_end_date zzsj, QT.B_CRE BTID, -----<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
pt.premium_amount - nvl(pt.tax_amount, e.inception_date qbsj,
0) bf e.planned_end_date zzsj,
--,qt.qdbf - nvl(qt.qdbf_tax_amount,0) bf pt.premium_amount - nvl(pt.tax_amount,
, 0) bf
nt.ecompensation_rate * (pt.premium_amount - nvl(pt.tax_amount, --,qt.qdbf - nvl(qt.qdbf_tax_amount,0) bf
0)) fxbf, ,
z.department_name bm, nt.ecompensation_rate * (pt.premium_amount - nvl(pt.tax_amount,
z.department_code bmdm, 0)) fxbf,
CASE z.department_name bm,
WHEN (et.telpartnercode LIKE '%HC%' OR zx.workerno IN (SELECT code z.department_code bmdm,
FROM datacenter.dc_lsj_zx_hc)) THEN CASE
'<EFBFBD><EFBFBD><EFBFBD>׷ῥ' WHEN (et.telpartnercode LIKE '%HC%' OR
ELSE zx.workerno IN (SELECT code
'' FROM datacenter.dc_lsj_zx_hc)) THEN
END <EFBFBD>Ƿ<EFBFBD><EFBFBD>, '<EFBFBD><EFBFBD><EFBFBD>׷ῥ'
nvl(zx.workerno, ELSE
et.telpartnercode) <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ''
(CASE END <EFBFBD>Ƿ<EFBFBD><EFBFBD>,
WHEN nvl(zx.workerno, nvl(zx.workerno,
et.telpartnercode) = 'DX001' AND et.telpartnercode) <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
xx.staff_name LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN (CASE
'<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, WHEN nvl(zx.workerno,
et.telpartnercode) = 'DX001' AND et.telpartnercode) = 'DX001' AND
xx.staff_name LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN xx.staff_name LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN
@@ -53,246 +41,269 @@ WITH aa AS
'<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
ELSE ELSE
to_char(ys.<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) to_char(ys.<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
END), END) <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
xx.staff_name) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N YS.<EFBFBD>Ŷ<EFBFBD> <EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>,
FROM idst0.auto_agreement_request_t t nvl(YS.<EFBFBD>Ŷ<EFBFBD>,
LEFT JOIN idst0.auto_agreement_t e y.section_office_name) <EFBFBD><EFBFBD><EFBFBD><EFBFBD>N,
ON e.policy_no = t.policy_no nvl((CASE
LEFT JOIN idst0.motorised_vehicle_t v WHEN nvl(zx.workerno,
ON v.policy_no = e.policy_no et.telpartnercode) = 'DX001' AND
LEFT JOIN idst0.auto_premium_t pt xx.staff_name LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN
ON pt.policy_no = t.policy_no '<EFBFBD><EFBFBD>ΰ<EFBFBD><EFBFBD>'
AND pt.endorsement_no = t.endorsement_no WHEN nvl(zx.workerno,
LEFT JOIN ywglxt.w_dxbd_i i et.telpartnercode) = 'DX001' AND
ON e.policy_no = i.bdh xx.staff_name NOT LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN
LEFT JOIN idst0.rydm_t xx '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
ON xx.staff_code = nvl(i.zhjywy, ELSE
e.operator_code) to_char(ys.<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
LEFT JOIN idst0.ks_t y END),
ON y.section_office_code = nvl(xx.section_office_code, xx.staff_name) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N
e.section_office_code) FROM idst0.auto_agreement_request_t t
LEFT JOIN idst0.bm_t z LEFT JOIN idst0.auto_agreement_t e
ON z.department_code = nvl(xx.department_code, ON e.policy_no = t.policy_no
e.department_code) LEFT JOIN idst0.motorised_vehicle_t v
--left join datacenter.dc_cx_csteam ct on ct.jbrcode = xx.staff_code ON v.policy_no = e.policy_no
LEFT JOIN idst0.auto_new_product_info_t nt LEFT JOIN idst0.auto_premium_t pt
ON nt.policy_no = t.policy_no ON pt.policy_no = t.policy_no
AND nt.endorsement_no = t.endorsement_no AND pt.endorsement_no = t.endorsement_no
--left join ywglxt.q_auto_agreement_extend_t qe on qe.policy_no = e.policy_no LEFT JOIN ywglxt.w_dxbd_i i
LEFT JOIN ywglxt.q_auto_agreement_t qt ON e.policy_no = i.bdh
ON qt.policy_no = e.policy_no LEFT JOIN idst0.rydm_t xx
LEFT JOIN datacenter.dc_yangg_qdcode qd ON xx.staff_code = nvl(i.zhjywy,
ON qd.code = e.selling_channel_type e.operator_code)
LEFT JOIN datacenter.dc_tb_jc_c_tag cl LEFT JOIN idst0.ks_t y
ON cl.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = e.policy_no ON y.section_office_code = nvl(xx.section_office_code,
LEFT JOIN datacenter.dc_yangg_basecode_teams fg e.section_office_code)
ON fg.bm = z.department_name LEFT JOIN idst0.bm_t z
AND fg.ks = y.section_office_name ON z.department_code = nvl(xx.department_code,
--left join idst0.t_sell_policy_autobase_t zx on zx.policy_no=e.policy_no e.department_code)
--left join idst0.auto_agreement_extend_t et on et.policy_no = e.policy_no --left join datacenter.dc_cx_csteam ct on ct.jbrcode = xx.staff_code
LEFT JOIN idst0.auto_agreement_extend_t et LEFT JOIN idst0.auto_new_product_info_t nt
ON et.policy_no = e.policy_no ON nt.policy_no = t.policy_no
LEFT JOIN idst0.t_sell_policy_autobase_t zx AND nt.endorsement_no = t.endorsement_no
ON zx.policy_no = e.policy_no --left join ywglxt.q_auto_agreement_extend_t qe on qe.policy_no = e.policy_no
LEFT JOIN datacenter.dc_YZH_ZXYS YS LEFT JOIN ywglxt.q_auto_agreement_t qt
ON YS.<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = nvl(zx.workerno, ON qt.policy_no = e.policy_no
et.telpartnercode) LEFT JOIN datacenter.dc_yangg_qdcode qd
--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>%' ON qd.code = e.selling_channel_type
--left join datacenter.dc_lsj_zx_team zt on zt.name=coalesce(zc.name,zc1.name,bc.name,dm.JBRMC) LEFT JOIN datacenter.dc_tb_jc_c_tag cl
WHERE t.signature_date >= to_date('2023-01-01 00:00:00', ON cl.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = e.policy_no
'yyyy-mm-dd hh24:mi:ss') LEFT JOIN datacenter.dc_yangg_basecode_teams fg
AND t.signature_date < to_date(to_char(SYSDATE - 1, ON fg.bm = z.department_name
'yyyy-mm-dd') || ' 23:59:59', AND fg.ks = y.section_office_name
'yyyy-mm-dd hh24:mi:ss') --left join idst0.t_sell_policy_autobase_t zx on zx.policy_no=e.policy_no
--and t.endorsement_no = '<EFBFBD><EFBFBD>' --left join idst0.auto_agreement_extend_t et on et.policy_no = e.policy_no
AND e.policy_status = '1' --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч LEFT JOIN idst0.auto_agreement_extend_t et
AND qt.tflag = '0' --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ON et.policy_no = e.policy_no
AND qt.usage_xm = '<EFBFBD><EFBFBD>ͥ<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD>' LEFT JOIN idst0.t_sell_policy_autobase_t zx
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ħ<EFBFBD>г<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ON zx.policy_no = e.policy_no
--and e.policy_no in ('AXIMC90Y1419B038594J','AXIMC90CTP19B039593R','AXIMC04CTP19B013473X') LEFT JOIN datacenter.dc_YZH_ZXYS YS
AND e.planned_end_date - e.inception_date >= 360 ON YS.<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = nvl(zx.workerno,
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 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>%'
-----<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',
dd2 AS 'yyyy-mm-dd hh24:mi:ss')
(SELECT ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, AND t.signature_date < to_date(to_char(SYSDATE - 1,
mm, 'yyyy-mm-dd') || ' 23:59:59',
bm, 'yyyy-mm-dd hh24:mi:ss')
bmdm, --and t.endorsement_no = '<EFBFBD><EFBFBD>'
<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, AND e.policy_status = '1' --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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>
<EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>, AND qt.usage_xm = '<EFBFBD><EFBFBD>ͥ<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD>'
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, --<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>N, --and e.policy_no in ('AXIMC90Y1419B038594J','AXIMC90CTP19B039593R','AXIMC04CTP19B013473X')
CASE AND e.planned_end_date - e.inception_date >= 360
WHEN pdh = '<EFBFBD><EFBFBD>' THEN --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tid )
END tid, -----<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
to_number('1') <EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>, ,
COUNT(DISTINCT CASE dd2 AS
WHEN pdh = '<EFBFBD><EFBFBD>' THEN (SELECT ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
bdh the_year,
END) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, the_month,
SUM(bf) <EFBFBD><EFBFBD><EFBFBD><EFBFBD> bm,
FROM (SELECT DISTINCT * bmdm,
FROM aa) aa <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
GROUP BY bm, <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
bmdm, <EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>,
CASE <EFBFBD><EFBFBD><EFBFBD><EFBFBD>N,
WHEN pdh = '<EFBFBD><EFBFBD>' THEN <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N,
tid CASE
END, WHEN pdh = '<EFBFBD><EFBFBD>' THEN
mm, tid
BTID, END tid,
<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, to_number('1') <EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>,
<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, COUNT(DISTINCT CASE
<EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>, WHEN pdh = '<EFBFBD><EFBFBD>' THEN
ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, bdh
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, END) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N SUM(bf) <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UNION FROM (SELECT DISTINCT *
SELECT ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, FROM aa) aa
mm, GROUP BY bm,
bm, bmdm,
bmdm, CASE
<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, WHEN pdh = '<EFBFBD><EFBFBD>' THEN
<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, tid
<EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>, END,
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, the_year,
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, the_month,
CASE BTID,
WHEN btid = tid THEN <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
'' <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
ELSE <EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>,
btid ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
END btid, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>N,
to_number('0') <EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N
to_number('0') <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, UNION
to_number('0') <EFBFBD><EFBFBD><EFBFBD><EFBFBD> SELECT ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
FROM (SELECT DISTINCT * the_year,
FROM aa) aa), the_month,
DD AS bm,
(SELECT * bmdm,
FROM DD2 <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
WHERE TID IS NOT NULL) <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
--select * from dd <EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>,
, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>N,
bb AS <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N,
(SELECT DISTINCT q.policy_no bdh, CASE
q.endorsement_no pdh, WHEN btid = tid THEN
qna.t_cre tid, ''
to_number(to_char(q.signature_date, ELSE
'yyyy')) || '<EFBFBD><EFBFBD>' nf, btid
(to_char(q.signature_date, END btid,
'mm')) || '<EFBFBD><EFBFBD>' mm_f, to_number('0') <EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>,
to_char(q.signature_date, to_number('0') <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
'dd') || '<EFBFBD><EFBFBD>' dd, to_number('0') <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
q.signature_date sj, FROM (SELECT DISTINCT *
round((pt.premium_amount - nvl(pt.taxamount, FROM aa) aa),
0)) * c.rate / 100, DD AS
2) bf, (SELECT *
z.department_name bm FROM DD2
FROM idst0.nonauto_agreement_request_t q WHERE TID IS NOT NULL)
LEFT JOIN idst0.nonauto_agreement_t e --select * from dd
ON e.policy_no = q.policy_no ,
LEFT JOIN idst0.nonauto_premium_t pt bb AS
ON pt.endorsement_no = q.endorsement_no (SELECT DISTINCT q.policy_no bdh,
AND pt.policy_no = q.policy_no q.endorsement_no pdh,
LEFT JOIN idst0.reinsurance_t r qna.t_cre tid,
ON r.reinsurance_policy_no = e.policy_no to_number(to_char(q.signature_date,
LEFT JOIN idst0.exrate_month_t c 'yyyy')) || '<EFBFBD><EFBFBD>' nf,
ON pt.currency_code = c.bzh (to_char(q.signature_date,
AND to_char(q.signature_date, 'mm')) mm_f,
'YYYY') = c.theyear to_char(q.signature_date,
AND to_char(q.signature_date, 'dd') || '<EFBFBD><EFBFBD>' dd,
'fmmm') = c.themonth 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 LEFT JOIN idst0.rydm_t x
ON x.staff_code = e.operator_code ON x.staff_code = e.operator_code
LEFT JOIN idst0.ks_t y LEFT JOIN idst0.ks_t y
ON y.section_office_code = x.section_office_code ON y.section_office_code = x.section_office_code
LEFT JOIN idst0.bm_t z LEFT JOIN idst0.bm_t z
ON z.department_code = x.department_code ON z.department_code = x.department_code
LEFT JOIN ywglxt.q_nonauto_agreement_t qna LEFT JOIN ywglxt.q_nonauto_agreement_t qna
ON qna.policy_no = q.policy_no ON qna.policy_no = q.policy_no
LEFT JOIN datacenter.dc_yangg_gkxzh gk LEFT JOIN datacenter.dc_yangg_gkxzh gk
ON gk.product_code = e.product_code --<EFBFBD><EFBFBD>ɢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 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 datacenter.dc_yangg_zbxzh zb on zb.product_code = e.product_code --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LEFT JOIN dd LEFT JOIN dd
ON dd.tid = qna.t_cre ON dd.tid = qna.t_cre
WHERE qna.tflag = '0' WHERE qna.tflag = '0'
AND (CASE AND (CASE
WHEN q.endorsement_no != '<EFBFBD><EFBFBD>' AND WHEN q.endorsement_no != '<EFBFBD><EFBFBD>' AND
round((pt.premium_amount - nvl(pt.taxamount, round((pt.premium_amount - nvl(pt.taxamount,
0)) * c.rate / 100, 0)) * c.rate / 100,
2) != 0 THEN 2) != 0 THEN
'<EFBFBD><EFBFBD>' '<EFBFBD><EFBFBD>'
END) IS NULL END) IS NULL
--and q.endorsement_no = '<EFBFBD><EFBFBD>' --and q.endorsement_no = '<EFBFBD><EFBFBD>'
AND e.policy_status = '1' AND e.policy_status = '1'
AND gk.product_code IS NOT NULL AND gk.product_code IS NOT NULL
AND (e.product_code LIKE '2%' OR e.product_code LIKE '1106%' --<EFBFBD> --<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 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> 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 e.product_code not in ('22KC9800')
AND q.signature_date >= to_date('2023-01-01 00:00:00', AND q.signature_date >= to_date('2023-01-01 00:00:00',
'yyyy-mm-dd hh24:mi:ss') 'yyyy-mm-dd hh24:mi:ss')
AND q.signature_date < to_date(to_char(SYSDATE - 1, AND q.signature_date < to_date(to_char(SYSDATE - 1,
'yyyy-mm-dd') || ' 23:59:59', 'yyyy-mm-dd') || ' 23:59:59',
'yyyy-mm-dd hh24:mi:ss') 'yyyy-mm-dd hh24:mi:ss')
AND e.planned_end_date - e.inception_date >= 90 AND e.planned_end_date - e.inception_date >= 90
AND dd.tid IS NOT NULL AND dd.tid IS NOT NULL
--<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD>) --<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD>)
) )
--SELECT * FROM BB --SELECT * FROM BB
, ,
cc AS cc AS
(SELECT mm_f, (SELECT mm_f,
tid <EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD>, tid <EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD>,
COUNT(DISTINCT bdh) <EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>, COUNT(DISTINCT bdh) <EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>,
SUM(bf) <EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD> SUM(bf) <EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>
FROM bb FROM bb
GROUP BY tid, GROUP BY tid,
mm_f), mm_f),
ff AS ff AS
(SELECT dd.*, (SELECT dd.*,
cc.* cc.*
FROM dd FROM dd
LEFT JOIN cc LEFT JOIN cc
ON cc.<EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD> = dd.tid ON cc.<EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD> = dd.tid
AND cc.mm_f = dd.mm) --OR cc.<EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD> = dd.btid AND cc.mm_f = dd.the_month) --OR cc.<EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD> = dd.btid
--select * from ff --select * from ff
SELECT to_date(ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, SELECT to_date(ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
'yyyy-mm-dd') ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 'yyyy-mm-dd') ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
mm <EFBFBD>·<EFBFBD>, the_year <EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
bm <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, the_month <EFBFBD>·<EFBFBD>,
bmdm <EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD>, bm <EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, bmdm <EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD>,
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>N,
<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N,
<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>, <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
nvl(SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>,
0) <EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, nvl(SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>),
nvl(SUM(<EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>), 0) <EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
0) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD> nvl(SUM(<EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>),
FROM ff 0) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>
WHERE ff.ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >= to_char(SYSDATE - 3, FROM ff
'yyyy-mm-dd') WHERE to_date(ff.ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
AND ff.ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <= to_char(SYSDATE, 'yyyy-mm-dd') >= DATE '2023-01-01'
'yyyy-mm-dd') AND to_date(ff.ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
AND bm IN ('<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>', 'yyyy-mm-dd') <= SYSDATE
'<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>˾') AND bm IN ('<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
GROUP BY ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>˾')
mm, GROUP BY ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
bm, the_year,
bmdm, the_month,
<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, bm,
<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, bmdm,
<EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>, <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N <EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>,
ORDER BY <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>N,
<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N
ORDER BY <EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
SELECT *
FROM desktop_archievement_admin.<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>;

View File

@@ -8,32 +8,32 @@
"name": "task_schedule", "name": "task_schedule",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"@babel/eslint-parser": "^7.21.8", "@babel/eslint-parser": "^7.22.7",
"@element-plus/icons-vue": "^2.1.0", "@element-plus/icons-vue": "^2.1.0",
"axios": "^1.4.0", "axios": "^1.4.0",
"babel": "^6.23.0", "babel": "^6.23.0",
"echarts": "^5.4.2", "echarts": "^5.4.2",
"element-plus": "^2.3.5", "element-plus": "^2.3.7",
"moment": "^2.29.4", "moment": "^2.29.4",
"sass-loader": "^13.3.1", "sass-loader": "^13.3.2",
"vue": "^3.3.4", "vue": "^3.3.4",
"vue-router": "^4.2.1", "vue-router": "^4.2.4",
"vuex": "^4.1.0" "vuex": "^4.1.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/eslint-parser": "^7.21.8", "@babel/eslint-parser": "^7.22.7",
"@typescript-eslint/eslint-plugin": "^5.59.7", "@typescript-eslint/eslint-plugin": "^5.61.0",
"@typescript-eslint/parser": "^5.59.7", "@typescript-eslint/parser": "^5.61.0",
"@vitejs/plugin-vue": "^4.2.3", "@vitejs/plugin-vue": "^4.2.3",
"@vue/cli-plugin-eslint": "^5.0.8", "@vue/cli-plugin-eslint": "^5.0.8",
"eslint-config-recommended": "^4.1.0", "eslint-config-recommended": "^4.1.0",
"eslint-config-standard-with-typescript": "^34.0.1", "eslint-config-standard-with-typescript": "^36.0.0",
"eslint-plugin-vue": "^9.14.1", "eslint-plugin-vue": "^9.15.1",
"node-sass": "^9.0.0", "node-sass": "^9.0.0",
"sass": "^1.62.1", "sass": "^1.63.6",
"style-loader": "^3.3.3", "style-loader": "^3.3.3",
"typescript": "^5.0.4", "typescript": "^5.1.6",
"vue-eslint-parser": "^9.3.0" "vue-eslint-parser": "^9.3.1"
} }
}, },
"node_modules/@achrinza/node-ipc": { "node_modules/@achrinza/node-ipc": {
@@ -114,14 +114,14 @@
} }
}, },
"node_modules/@babel/eslint-parser": { "node_modules/@babel/eslint-parser": {
"version": "7.21.8", "version": "7.22.7",
"resolved": "https://registry.npmmirror.com/@babel/eslint-parser/-/eslint-parser-7.21.8.tgz", "resolved": "https://registry.npmmirror.com/@babel/eslint-parser/-/eslint-parser-7.22.7.tgz",
"integrity": "sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==", "integrity": "sha512-LH6HJqjOyu/Qtp7LuSycZXK/CYXQ4ohdkliEaL1QTdtOXVdOVpTBKVxAo/+eeyt+x/2SRzB+zUPduVl+xiEvdg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
"eslint-visitor-keys": "^2.1.0", "@nicolo-ribaudo/semver-v6": "^6.3.3",
"semver": "^6.3.0" "eslint-visitor-keys": "^2.1.0"
}, },
"engines": { "engines": {
"node": "^10.13.0 || ^12.13.0 || >=14.0.0" "node": "^10.13.0 || ^12.13.0 || >=14.0.0"
@@ -1024,6 +1024,15 @@
"eslint-scope": "5.1.1" "eslint-scope": "5.1.1"
} }
}, },
"node_modules/@nicolo-ribaudo/semver-v6": {
"version": "6.3.3",
"resolved": "https://registry.npmmirror.com/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz",
"integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@node-ipc/js-queue": { "node_modules/@node-ipc/js-queue": {
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmmirror.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", "resolved": "https://registry.npmmirror.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz",
@@ -1528,17 +1537,17 @@
} }
}, },
"node_modules/@typescript-eslint/eslint-plugin": { "node_modules/@typescript-eslint/eslint-plugin": {
"version": "5.59.7", "version": "5.61.0",
"resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz", "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.61.0.tgz",
"integrity": "sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==", "integrity": "sha512-A5l/eUAug103qtkwccSCxn8ZRwT+7RXWkFECdA4Cvl1dOlDUgTpAOfSEElZn2uSUxhdDpnCdetrf0jvU4qrL+g==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint-community/regexpp": "^4.4.0", "@eslint-community/regexpp": "^4.4.0",
"@typescript-eslint/scope-manager": "5.59.7", "@typescript-eslint/scope-manager": "5.61.0",
"@typescript-eslint/type-utils": "5.59.7", "@typescript-eslint/type-utils": "5.61.0",
"@typescript-eslint/utils": "5.59.7", "@typescript-eslint/utils": "5.61.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"grapheme-splitter": "^1.0.4", "graphemer": "^1.4.0",
"ignore": "^5.2.0", "ignore": "^5.2.0",
"natural-compare-lite": "^1.4.0", "natural-compare-lite": "^1.4.0",
"semver": "^7.3.7", "semver": "^7.3.7",
@@ -1591,14 +1600,14 @@
"dev": true "dev": true
}, },
"node_modules/@typescript-eslint/parser": { "node_modules/@typescript-eslint/parser": {
"version": "5.59.7", "version": "5.61.0",
"resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.59.7.tgz", "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.61.0.tgz",
"integrity": "sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==", "integrity": "sha512-yGr4Sgyh8uO6fSi9hw3jAFXNBHbCtKKFMdX2IkT3ZqpKmtAq3lHS4ixB/COFuAIJpwl9/AqF7j72ZDWYKmIfvg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "5.59.7", "@typescript-eslint/scope-manager": "5.61.0",
"@typescript-eslint/types": "5.59.7", "@typescript-eslint/types": "5.61.0",
"@typescript-eslint/typescript-estree": "5.59.7", "@typescript-eslint/typescript-estree": "5.61.0",
"debug": "^4.3.4" "debug": "^4.3.4"
}, },
"engines": { "engines": {
@@ -1614,26 +1623,26 @@
} }
}, },
"node_modules/@typescript-eslint/scope-manager": { "node_modules/@typescript-eslint/scope-manager": {
"version": "5.59.7", "version": "5.61.0",
"resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz", "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.61.0.tgz",
"integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==", "integrity": "sha512-W8VoMjoSg7f7nqAROEmTt6LoBpn81AegP7uKhhW5KzYlehs8VV0ZW0fIDVbcZRcaP3aPSW+JZFua+ysQN+m/Nw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "5.59.7", "@typescript-eslint/types": "5.61.0",
"@typescript-eslint/visitor-keys": "5.59.7" "@typescript-eslint/visitor-keys": "5.61.0"
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
} }
}, },
"node_modules/@typescript-eslint/type-utils": { "node_modules/@typescript-eslint/type-utils": {
"version": "5.59.7", "version": "5.61.0",
"resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz", "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.61.0.tgz",
"integrity": "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==", "integrity": "sha512-kk8u//r+oVK2Aj3ph/26XdH0pbAkC2RiSjUYhKD+PExemG4XSjpGFeyZ/QM8lBOa7O8aGOU+/yEbMJgQv/DnCg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/typescript-estree": "5.59.7", "@typescript-eslint/typescript-estree": "5.61.0",
"@typescript-eslint/utils": "5.59.7", "@typescript-eslint/utils": "5.61.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"tsutils": "^3.21.0" "tsutils": "^3.21.0"
}, },
@@ -1650,22 +1659,22 @@
} }
}, },
"node_modules/@typescript-eslint/types": { "node_modules/@typescript-eslint/types": {
"version": "5.59.7", "version": "5.61.0",
"resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.59.7.tgz", "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.61.0.tgz",
"integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==", "integrity": "sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
} }
}, },
"node_modules/@typescript-eslint/typescript-estree": { "node_modules/@typescript-eslint/typescript-estree": {
"version": "5.59.7", "version": "5.61.0",
"resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz", "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.61.0.tgz",
"integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==", "integrity": "sha512-Fud90PxONnnLZ36oR5ClJBLTLfU4pIWBmnvGwTbEa2cXIqj70AEDEmOmpkFComjBZ/037ueKrOdHuYmSFVD7Rw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "5.59.7", "@typescript-eslint/types": "5.61.0",
"@typescript-eslint/visitor-keys": "5.59.7", "@typescript-eslint/visitor-keys": "5.61.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"globby": "^11.1.0", "globby": "^11.1.0",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
@@ -1694,9 +1703,9 @@
} }
}, },
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
"version": "7.5.1", "version": "7.5.3",
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.1.tgz", "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz",
"integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"lru-cache": "^6.0.0" "lru-cache": "^6.0.0"
@@ -1715,17 +1724,17 @@
"dev": true "dev": true
}, },
"node_modules/@typescript-eslint/utils": { "node_modules/@typescript-eslint/utils": {
"version": "5.59.7", "version": "5.61.0",
"resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.59.7.tgz", "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.61.0.tgz",
"integrity": "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==", "integrity": "sha512-mV6O+6VgQmVE6+xzlA91xifndPW9ElFW8vbSF0xCT/czPXVhwDewKila1jOyRwa9AE19zKnrr7Cg5S3pJVrTWQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/eslint-utils": "^4.2.0",
"@types/json-schema": "^7.0.9", "@types/json-schema": "^7.0.9",
"@types/semver": "^7.3.12", "@types/semver": "^7.3.12",
"@typescript-eslint/scope-manager": "5.59.7", "@typescript-eslint/scope-manager": "5.61.0",
"@typescript-eslint/types": "5.59.7", "@typescript-eslint/types": "5.61.0",
"@typescript-eslint/typescript-estree": "5.59.7", "@typescript-eslint/typescript-estree": "5.61.0",
"eslint-scope": "^5.1.1", "eslint-scope": "^5.1.1",
"semver": "^7.3.7" "semver": "^7.3.7"
}, },
@@ -1749,9 +1758,9 @@
} }
}, },
"node_modules/@typescript-eslint/utils/node_modules/semver": { "node_modules/@typescript-eslint/utils/node_modules/semver": {
"version": "7.5.1", "version": "7.5.3",
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.1.tgz", "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz",
"integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"lru-cache": "^6.0.0" "lru-cache": "^6.0.0"
@@ -1770,12 +1779,12 @@
"dev": true "dev": true
}, },
"node_modules/@typescript-eslint/visitor-keys": { "node_modules/@typescript-eslint/visitor-keys": {
"version": "5.59.7", "version": "5.61.0",
"resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz", "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.61.0.tgz",
"integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==", "integrity": "sha512-50XQ5VdbWrX06mQXhy93WywSFZZGsv3EOjq+lqp6WC2t+j3mb6A9xYVdrRxafvK88vg9k9u+CT4l6D8PEatjKg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "5.59.7", "@typescript-eslint/types": "5.61.0",
"eslint-visitor-keys": "^3.3.0" "eslint-visitor-keys": "^3.3.0"
}, },
"engines": { "engines": {
@@ -4589,9 +4598,9 @@
"integrity": "sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg==" "integrity": "sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg=="
}, },
"node_modules/element-plus": { "node_modules/element-plus": {
"version": "2.3.5", "version": "2.3.7",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.3.5.tgz", "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.3.7.tgz",
"integrity": "sha512-g27DHm2C5/tPwte9H6Juu+JOdzT9z1ALHTIvia6MwnBdCrI4kd77o6KcYdodU15/tYiPBoCEmobhl/7GUDb+1Q==", "integrity": "sha512-h6TxclbaLUJxg/Bv5j/ZKsK+K5yadQliw5+R30HWyE69pXlqXTX24oYx+yw3pA4Dy+lqEDi5501FQ0CORk3OSA==",
"dependencies": { "dependencies": {
"@ctrl/tinycolor": "^3.4.1", "@ctrl/tinycolor": "^3.4.1",
"@element-plus/icons-vue": "^2.0.6", "@element-plus/icons-vue": "^2.0.6",
@@ -6425,16 +6434,16 @@
} }
}, },
"node_modules/eslint-config-standard-with-typescript": { "node_modules/eslint-config-standard-with-typescript": {
"version": "34.0.1", "version": "36.0.0",
"resolved": "https://registry.npmmirror.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-34.0.1.tgz", "resolved": "https://registry.npmmirror.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-36.0.0.tgz",
"integrity": "sha512-J7WvZeLtd0Vr9F+v4dZbqJCLD16cbIy4U+alJMq4MiXdpipdBM3U5NkXaGUjePc4sb1ZE01U9g6VuTBpHHz1fg==", "integrity": "sha512-8ZSEskfrDAkUF2lTQLMT0CBzgRNlx1uIM7l2I7L683dKAXUdHuEL2x+GxuGAsdsoWbx7W7Zv0xF67VCEZXIk0Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/parser": "^5.43.0", "@typescript-eslint/parser": "^5.50.0",
"eslint-config-standard": "17.0.0" "eslint-config-standard": "17.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@typescript-eslint/eslint-plugin": "^5.43.0", "@typescript-eslint/eslint-plugin": "^5.50.0",
"eslint": "^8.0.1", "eslint": "^8.0.1",
"eslint-plugin-import": "^2.25.2", "eslint-plugin-import": "^2.25.2",
"eslint-plugin-n": "^15.0.0", "eslint-plugin-n": "^15.0.0",
@@ -6727,9 +6736,9 @@
} }
}, },
"node_modules/eslint-plugin-vue": { "node_modules/eslint-plugin-vue": {
"version": "9.14.1", "version": "9.15.1",
"resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.14.1.tgz", "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.15.1.tgz",
"integrity": "sha512-LQazDB1qkNEKejLe/b5a9VfEbtbczcOaui5lQ4Qw0tbRBbQYREyxxOV5BQgNDTqGPs9pxqiEpbMi9ywuIaF7vw==", "integrity": "sha512-CJE/oZOslvmAR9hf8SClTdQ9JLweghT6JCBQNrT2Iel1uVw0W0OLJxzvPd6CxmABKCvLrtyDnqGV37O7KQv6+A==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.3.0", "@eslint-community/eslint-utils": "^4.3.0",
@@ -7895,18 +7904,11 @@
"resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
}, },
"node_modules/grapheme-splitter": {
"version": "1.0.4",
"resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
"dev": true
},
"node_modules/graphemer": { "node_modules/graphemer": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz", "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz",
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true, "dev": true
"peer": true
}, },
"node_modules/gzip-size": { "node_modules/gzip-size": {
"version": "6.0.0", "version": "6.0.0",
@@ -9042,6 +9044,8 @@
"version": "2.0.6", "version": "2.0.6",
"resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz", "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz",
"integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
"dev": true,
"peer": true,
"engines": { "engines": {
"node": ">= 8" "node": ">= 8"
} }
@@ -12242,9 +12246,9 @@
"dev": true "dev": true
}, },
"node_modules/sass": { "node_modules/sass": {
"version": "1.62.1", "version": "1.63.6",
"resolved": "https://registry.npmmirror.com/sass/-/sass-1.62.1.tgz", "resolved": "https://registry.npmmirror.com/sass/-/sass-1.63.6.tgz",
"integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==", "integrity": "sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw==",
"devOptional": true, "devOptional": true,
"dependencies": { "dependencies": {
"chokidar": ">=3.0.0 <4.0.0", "chokidar": ">=3.0.0 <4.0.0",
@@ -12318,11 +12322,10 @@
} }
}, },
"node_modules/sass-loader": { "node_modules/sass-loader": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-13.3.1.tgz", "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-13.3.2.tgz",
"integrity": "sha512-cBTxmgyVA1nXPvIK4brjJMXOMJ2v2YrQEuHqLw3LylGb3gsR6jAvdjHMcy/+JGTmmIF9SauTrLLR7bsWDMWqgg==", "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==",
"dependencies": { "dependencies": {
"klona": "^2.0.6",
"neo-async": "^2.6.2" "neo-async": "^2.6.2"
}, },
"engines": { "engines": {
@@ -13540,16 +13543,16 @@
} }
}, },
"node_modules/typescript": { "node_modules/typescript": {
"version": "5.0.4", "version": "5.1.6",
"resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.0.4.tgz", "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.1.6.tgz",
"integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
"dev": true, "dev": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
"tsserver": "bin/tsserver" "tsserver": "bin/tsserver"
}, },
"engines": { "engines": {
"node": ">=12.20" "node": ">=14.17"
} }
}, },
"node_modules/unbox-primitive": { "node_modules/unbox-primitive": {
@@ -13752,9 +13755,9 @@
} }
}, },
"node_modules/vue-eslint-parser": { "node_modules/vue-eslint-parser": {
"version": "9.3.0", "version": "9.3.1",
"resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.3.0.tgz", "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz",
"integrity": "sha512-48IxT9d0+wArT1+3wNIy0tascRoywqSUe2E1YalIC1L8jsUGe5aJQItWfRok7DVFGz3UYvzEI7n5wiTXsCMAcQ==", "integrity": "sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"debug": "^4.3.4", "debug": "^4.3.4",
@@ -13943,9 +13946,9 @@
} }
}, },
"node_modules/vue-router": { "node_modules/vue-router": {
"version": "4.2.1", "version": "4.2.4",
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.1.tgz", "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.4.tgz",
"integrity": "sha512-nW28EeifEp8Abc5AfmAShy5ZKGsGzjcnZ3L1yc2DYUo+MqbBClrRP9yda3dIekM4I50/KnEwo1wkBLf7kHH5Cw==", "integrity": "sha512-9PISkmaCO02OzPVOMq2w82ilty6+xJmQrarYZDkjZBfl4RvYAlt4PKnEX21oW4KTtWfa9OuO/b3qk1Od3AEdCQ==",
"dependencies": { "dependencies": {
"@vue/devtools-api": "^6.5.0" "@vue/devtools-api": "^6.5.0"
}, },

View File

@@ -9,31 +9,31 @@
"preview": "vite preview" "preview": "vite preview"
}, },
"dependencies": { "dependencies": {
"@babel/eslint-parser": "^7.21.8", "@babel/eslint-parser": "^7.22.7",
"@element-plus/icons-vue": "^2.1.0", "@element-plus/icons-vue": "^2.1.0",
"axios": "^1.4.0", "axios": "^1.4.0",
"babel": "^6.23.0", "babel": "^6.23.0",
"echarts": "^5.4.2", "echarts": "^5.4.2",
"element-plus": "^2.3.5", "element-plus": "^2.3.7",
"moment": "^2.29.4", "moment": "^2.29.4",
"sass-loader": "^13.3.1", "sass-loader": "^13.3.2",
"vue": "^3.3.4", "vue": "^3.3.4",
"vue-router": "^4.2.1", "vue-router": "^4.2.4",
"vuex": "^4.1.0" "vuex": "^4.1.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/eslint-parser": "^7.21.8", "@babel/eslint-parser": "^7.22.7",
"@typescript-eslint/eslint-plugin": "^5.59.7", "@typescript-eslint/eslint-plugin": "^5.61.0",
"@typescript-eslint/parser": "^5.59.7", "@typescript-eslint/parser": "^5.61.0",
"@vitejs/plugin-vue": "^4.2.3", "@vitejs/plugin-vue": "^4.2.3",
"@vue/cli-plugin-eslint": "^5.0.8", "@vue/cli-plugin-eslint": "^5.0.8",
"eslint-config-recommended": "^4.1.0", "eslint-config-recommended": "^4.1.0",
"eslint-config-standard-with-typescript": "^34.0.1", "eslint-config-standard-with-typescript": "^36.0.0",
"eslint-plugin-vue": "^9.14.1", "eslint-plugin-vue": "^9.15.1",
"node-sass": "^9.0.0", "node-sass": "^9.0.0",
"sass": "^1.62.1", "sass": "^1.63.6",
"style-loader": "^3.3.3", "style-loader": "^3.3.3",
"typescript": "^5.0.4", "typescript": "^5.1.6",
"vue-eslint-parser": "^9.3.0" "vue-eslint-parser": "^9.3.1"
} }
} }

View File

@@ -0,0 +1,56 @@
/*
* @Author: Kane
* @Date: 2023-02-24 09:36:08
* @LastEditors: Kane
* @LastEditTime: 2023-06-15 15:50:00
* @FilePath: /task_schedule/src/assets/css/public/_public.scss
* @Description: 公共变量
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
//背景色
$wrap-bg-color:#fff;
$span-font-color:#5f5f5f;
//阴影
$box-shadow:0px 0px 20px -10px rgb(14 18 22 / 25%);
$box-shadow-hover:0px 0px 20px -10px rgb(14 18 22 / 50%);
//文字大小
$font-size-normal:14px;
//查询框
@mixin query-box-wrap {
padding: 0px 10px;
span {
font-weight: normal;
display: block;
text-align: right;
font-size: $font-size-normal;
color: $span-font-color;
}
:deep(.el-row) {
display: flex;
align-items: center;
justify-content: left;
}
.el-row+.el-row {
margin-top: 10px;
}
.button-wrapper-right {
display: flex;
justify-content: right;
align-items: center;
}
.button-wrapper-left {
display: flex;
justify-content: left;
align-items: center;
}
}

View File

@@ -0,0 +1,132 @@
<!--
* @Author: Kane
* @Date: 2023-06-06 11:01:01
* @LastEditors: Kane
* @FilePath: /task_schedule/src/components/RankingListComponent.vue
* @Description: 排行榜组件
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
-->
<template>
<div class="rankinglist-wrapper">
<el-table
:data="topFive"
stripe
style="width:100%;"
:header-cell-style="{background:'#fecb96'}"
>
<el-table-column
label="名次"
width="60"
align="center"
>
<template #default="ranking">
<span class="rankinglist-index">{{ ranking.row.index }}</span>
</template>
</el-table-column>
<el-table-column
label="名次"
width="160"
align="center"
>
<template #default="ranking">
<span class="rankinglist-index">{{ ranking.row.callerName }}</span>
</template>
</el-table-column>
<el-table-column
label="指标"
width="80"
align="center"
>
<template #default="ranking">
<span class="rankinglist-index">{{ ranking.row.appraiseValue }}</span>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script lang="ts">
/* eslint-disable */
import { computed } from "vue";
interface RankingListItem
{
index: number;
callerName: string;
appraiseValue: string;
}
export default {
name: "RankingListComponent",
props: {
title: {
type: String,
require: true,
default: () => "",
},
rankingList: {
type: Array,
require: true,
default: () => [],
},
},
/**
* setup函数
* @param props 组件的props属性。
*/
setup(props)
{
/**
* 计算对象用于获取top5.
*/
const topFive = computed(() =>
{
const rankingList = props.rankingList; // eslint-disable-line
rankingList.sort((a, b) =>
{
// @ts-ignore
return a.index - b.index;
});
return rankingList.slice(0, 5);
});
return { props, topFive, };
},
};
</script>
<style lang="scss" scoped>
.rankinglist-wrapper {
// border: 1px solid red;
border-radius: 5px;
width: 300px;
height: 250px;
}
.rankinglist-index {
display: block;
text-align: center;
}
:deep(.el-table)
{
border-radius: 5px;
}
:deep(.el-table__header-wrapper) {
thead {
th{
div{
// font-family: "FZ-ZHUOHEI";
font-weight: 500;
font-size: 15px;
color: #da3703;
}
}
}
}
</style>

View File

@@ -116,7 +116,7 @@ export default {
width: 100%; width: 100%;
} }
.el-menu { :deep(.el-menu) {
border-right: none; border-right: none;
/* border-left: 5px solid #1d74b2; */ /* border-left: 5px solid #1d74b2; */
overflow: auto; overflow: auto;

View File

@@ -11,7 +11,7 @@
<div class="header-wrapper"> <div class="header-wrapper">
<span class="company-name">CPIC</span> <span class="company-name">CPIC</span>
<div class="version-wrapper"> <div class="version-wrapper">
<span>测试版</span> <span>桌面霸屏后台管理</span>
<span>Build-202303251257</span> <span>Build-202303251257</span>
</div> </div>
<div class="buttons-wrapper"> <div class="buttons-wrapper">
@@ -93,6 +93,10 @@ export default {
font: { font: {
size: 0.5rem; size: 0.5rem;
} }
> *+* {
margin-top: 1px;
}
} }
.company-name { .company-name {

View File

@@ -8,6 +8,6 @@
* Copyright (c) ${2022} by Kane, All Rights Reserved. * Copyright (c) ${2022} by Kane, All Rights Reserved.
*/ */
import { testNewCitizen } from "./identify.js"; import { testRankingListRequest } from "./testRankingListRequest.js";
testNewCitizen(); testRankingListRequest();

View File

@@ -0,0 +1,18 @@
/*
* @Author: Kane
* @Date: 2023-06-06 17:44:48
* @LastEditors: Kane
* @FilePath: /task_schedule/src/types/cpicxim/RankingListItem.ts
* @Description: 排行榜元素
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
interface RankingListItem
{
index: number;
callerName: string;
appraiseValue: string;
};
export { type RankingListItem };

View File

@@ -9,9 +9,19 @@
*/ */
export const API_URL = { export const API_URL = {
// URL_LOGIN: import.meta.env.VITE_URL_LOGIN, // URL_LOGIN: import.meta.env.VITE_URL_LOGIN,
URL_LOGIN: "http://222.76.244.118:11101/admin-system/account/p13_account_check", // URL_LOGIN: "http://222.76.244.118:11101/admin-system/account/p13_account_check",
URL_LOGIN: "http://10.39.0.41:8081/admin-system/account/p13_account_check",
// URL_LOGIN_CALLER: "http://localhost:8080/desktop_archievement_backend/account/query_telsaler_info.do", // URL_LOGIN_CALLER: "http://localhost:8080/desktop_archievement_backend/account/query_telsaler_info.do",
URL_LOGIN_CALLER: "http://222.76.244.118:11101/desktop_archievement_backend/account/query_telsaler_info.do", // URL_LOGIN_CALLER: "http://222.76.244.118:11101/desktop_archievement_backend/account/query_telsaler_info.do",
URL_LOGIN_CALLER: "http://10.39.0.41:8081/desktop_archievement_backend/account/query_telsaler_info.do",
// URL_DEPARTMENT_ARCHIEVEMENT: import.meta.env.VITE_URL_DEPARTMENT_ARCHIEVEMENT, // URL_DEPARTMENT_ARCHIEVEMENT: import.meta.env.VITE_URL_DEPARTMENT_ARCHIEVEMENT,
URL_DEPARTMENT_ARCHIEVEMENT: "http://222.76.244.118:11101/desktop_archievement_backend/archievement/query_department_archievement.do", // URL_DEPARTMENT_ARCHIEVEMENT: "http://222.76.244.118:11101/desktop_archievement_backend/archievement/query_department_archievement.do",
URL_DEPARTMENT_ARCHIEVEMENT: "http://10.39.0.41:8081/desktop_archievement_backend/archievement/query_department_archievement.do",
// URL_RANKINGLIST: "http://localhost:8080/desktop_archievement_backend/archievement/query_ranking_list.do",
// URL_RANKINGLIST: "http://222.76.244.118:11101/desktop_archievement_backend/archievement/query_ranking_list.do",
URL_RANKINGLIST: "http://10.39.0.41:8081/desktop_archievement_backend/archievement/query_ranking_list.do",
}; };

View File

@@ -0,0 +1,64 @@
/*
* @Author: Kane
* @Date: 2023-06-12 14:48:55
* @LastEditors: Kane
* @FilePath: /task_schedule/src/utils/api/loginRequest.ts
* @Description:
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
import axios, { type AxiosInstance } from "axios";
const loginInstance: AxiosInstance = axios.create(
{
baseURL: "",
timeout: 10000,
}
);
// 拦截器
// 登录用的请求不需要加上token。
loginInstance.interceptors.request.use(
/**
* 请求拦截方法,用于对请求参数和内容进行预处理。
* 因为是登录请求所以不需要加入token。
* @param config axios传递的配置对象
* @returns 返回给axios的配置对象
*/
( config ) =>
{
return config;
},
/**
* 请求拦截,当请求发送失败时调用。
* @param reason axios 传递的对象
* @returns 返回一个Promise对象提供给调用者。
*/
async ( reason ) =>
{
return await Promise.reject( reason );
});
// 响应拦截器
loginInstance.interceptors.response.use(
/**
* 响应成功后调用,用于对响应结果进行预处理
* @param response axios传递的响应结果
* @returns 返回预处理后的响应结果,这里返回的结果,会传递给用户用户提供的响应处理结果方法。
*/
( response ) =>
{
return response;
},
/**
* 请求调用结果不为2xx时被调用。用于对错误进行预处理。
* @param error axios传递的错误内容。
* @returns 返回预处理后的错误信息对象,会传递给用户提供的相应处理方法。
*/
async ( error ) =>
{
return await Promise.reject( error );
});
export { loginInstance as instance };

View File

@@ -13,14 +13,21 @@ import axios, { type AxiosInstance } from "axios";
const service: AxiosInstance = axios.create( const service: AxiosInstance = axios.create(
{ {
baseURL: "", baseURL: "",
timeout: 5000, timeout: 10000,
} }
); );
// 请求拦截 // 请求拦截
service.interceptors.request.use( service.interceptors.request.use(
/**
* 请求拦截器在此加入token
* @param config 配置对象,在此加入token。
* @returns 返回修改完的配置对象
*/
( config ) => ( config ) =>
{ {
config.headers.token = "123";
return config; return config;
}, },
async ( error ) => async ( error ) =>

View File

@@ -0,0 +1,110 @@
/*
* @Author: Kane
* @Date: 2023-06-06 17:40:31
* @LastEditors: Kane
* @FilePath: /task_schedule/src/utils/ranking.ts
* @Description: 排行榜相关的代码
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
import { service as instance } from "./api/request.js";
import { API_URL } from "./api/config.js";
import { type RankingListItem } from "../types/cpicxim/RankingListItem.js";
/**
* 用于请求排行榜数据请求参数
*/
interface RankingListRequest
{
departmentCode: string;
year: string;
month: string;
};
interface RankingListResponse
{
success: boolean;
message: string;
departmentCode: string;
year: string;
month: string;
attachingRateRankingList: RankingListItem[];
renewalRateRankingList: RankingListItem[];
};
/**
* 请求坐席排行榜。
* @param reqParam 请求参数
* @param rander 保存请求结果的回调函数
* @returns 返回RankingListResponse对象里面包含请求状态和数据。
*/
function requestRankingList( reqParam: RankingListRequest, rander: any ): void // eslint-disable-line
{
// let attachingRankingList: RankingListItem[];
// let renewalRankintList: RankingListItem[];
const rankingListResponse: RankingListResponse = {
success: false,
message: "",
departmentCode: reqParam.departmentCode,
year: reqParam.year,
month: reqParam.month,
attachingRateRankingList: [],
renewalRateRankingList: [],
};
instance.request(
{
method: "post",
url: API_URL.URL_RANKINGLIST,
data: reqParam,
})
.then(( response ) =>
{
const data: RankingListResponse = response.data as RankingListResponse;
rankingListResponse.success = data.success ?? false;
rankingListResponse.message = data.message ?? "";
rankingListResponse.departmentCode = data.departmentCode ?? "";
rankingListResponse.year = data.year ?? "";
rankingListResponse.month = data.month ?? "";
// 遍历排行榜元素
for ( const item of ( data.attachingRateRankingList ?? [] )) // eslint-disable-line
{
const index: number = item.index ?? -1;
if ( index === -1 )
{
continue;
}
rankingListResponse.attachingRateRankingList.push( item );
}
for ( const item of ( data.renewalRateRankingList ?? [] )) // eslint-disable-line
{
const index: number = item.index ?? -1;
if ( index === -1 )
{
continue;
}
rankingListResponse.renewalRateRankingList.push( item );
}
// 调用回调函数保存数据
rander( rankingListResponse );
})
.catch(( error ) =>
{
console.log( error );
});
}
export {
type RankingListRequest,
type RankingListResponse,
requestRankingList
};

View File

@@ -31,12 +31,8 @@
:percentage="ui.attaching_rate" :percentage="ui.attaching_rate"
/> />
</div> </div>
<div <div class="total-archievement-charts-wrapper">
class="total-archievement-charts-wrapper" <ArchievementChart :chart-data="ui.chartData" />
>
<ArchievementChart
:chart-data="ui.chartData"
/>
</div> </div>
</div> </div>
<div class="reward-wrapper"> <div class="reward-wrapper">
@@ -51,7 +47,39 @@
/> />
</div> </div>
</div> </div>
<div class="right-wrapper" /> <div class="right-wrapper">
<h1>本大爷</h1>
<div class="carousel-item">
<el-carousel
arrow="never"
indicator-position="none"
:interval="4000"
>
<el-carousel-item
:key="1"
>
<RankingListComponent :ranking-list="ui.attachingRankingList" />
</el-carousel-item>
<el-carousel-item :key="2">
<RankingListComponent :ranking-list="ui.renewalRankingList" />
</el-carousel-item>
</el-carousel>
</div>
<div class="carousel-item">
<el-carousel
arrow="never"
indicator-position="none"
:interval="4000"
>
<el-carousel-item :key="1">
<RankingListComponent :ranking-list="ui.attachingRankingList" />
</el-carousel-item>
<el-carousel-item :key="2">
<RankingListComponent :ranking-list="ui.renewalRankingList" />
</el-carousel-item>
</el-carousel>
</div>
</div>
</div> </div>
</template> </template>
@@ -61,14 +89,32 @@ import { useRouter } from "vue-router";
import { getCallerInfo } from "@/utils/api/localStorage.js"; import { getCallerInfo } from "@/utils/api/localStorage.js";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { type Archievement, queryDepartmentArchievement } from "@/utils/archievement.js"; import { type Archievement, queryDepartmentArchievement } from "@/utils/archievement.js";
import { RankingListItem } from "@/types/cpicxim/RankingListItem.js";
import { type RankingListRequest, type RankingListResponse, requestRankingList } from "@/utils/ranking.js";
import { type Department } from "@/types/cpicxim/Department"; import { type Department } from "@/types/cpicxim/Department";
import ArchievementChart from "@/components/ArchievementChartComponent.vue"; import ArchievementChart from "@/components/ArchievementChartComponent.vue";
import ArchievementCompleteRateComponent from "@/components/ArchievementCompleteRateComponent.vue"; import ArchievementCompleteRateComponent from "@/components/ArchievementCompleteRateComponent.vue";
import HonorListComponent from "@/components/HonorListComponent.vue"; import HonorListComponent from "@/components/HonorListComponent.vue";
import DishonorListComponent from "@/components/DishonorListComponent.vue"; import DishonorListComponent from "@/components/DishonorListComponent.vue";
import RankingListComponent from "@/components/RankingListComponent.vue";
import { logout } from "@/utils/account.js"; import { logout } from "@/utils/account.js";
import { type TelSaler } from "@/types/cpicxim/TelSaler"; import { type TelSaler } from "@/types/cpicxim/TelSaler";
interface ui
{
currentMonth: string;
chartData: number[];
totalArchievement: number;
attaching_rate: string;
insurance_renewal_rate: string; // 续保率
leading_reward_gainers: string[]; // 领跑奖
advance_reward_gainers: string[]; // 飞跃奖
dishonorPersons: string[];
showUI: boolean; // 用来刷新页面的开关
attachingRankingList: RankingListItem[]; // 坐席车非渗透率榜单
renewalRankingList: RankingListItem[];
};
export default { export default {
name: "DesktopArchievement", name: "DesktopArchievement",
components: { components: {
@@ -76,6 +122,7 @@ export default {
ArchievementCompleteRateComponent, ArchievementCompleteRateComponent,
HonorListComponent, HonorListComponent,
DishonorListComponent, DishonorListComponent,
RankingListComponent,
}, },
setup() setup()
{ {
@@ -83,7 +130,7 @@ export default {
const numInChinese = ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二",]; const numInChinese = ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二",];
const router = useRouter(); const router = useRouter();
const callerInfo: TelSaler = getCallerInfo(); const callerInfo: TelSaler = getCallerInfo();
const ui = reactive({ const ui: ui = reactive({
currentMonth: numInChinese[monthIndex.getMonth() - 1], currentMonth: numInChinese[monthIndex.getMonth() - 1],
chartData: [0,], // 业绩表 chartData: [0,], // 业绩表
totalArchievement: 0, // 总业绩 totalArchievement: 0, // 总业绩
@@ -93,6 +140,8 @@ export default {
advance_reward_gainers: ["",], // 飞跃奖 advance_reward_gainers: ["",], // 飞跃奖
dishonorPersons: ["",], dishonorPersons: ["",],
showUI: true, // 用来刷新页面的开关 showUI: true, // 用来刷新页面的开关
attachingRankingList: [], // 坐席车非渗透率榜单
renewalRankingList: [], // 坐席续保率榜单
}); });
let timerHandler = 0; let timerHandler = 0;
@@ -109,8 +158,8 @@ export default {
return archievement; return archievement;
}); });
// 绘制数据 // 保存业绩数据
const renderData = ( data:Archievement ) => const applyArchievementData = ( data: Archievement ) =>
{ {
console.log( "部门业绩数据", data ); console.log( "部门业绩数据", data );
@@ -129,6 +178,20 @@ export default {
setTimeout(() => { ui.showUI = true; }, 0 ); setTimeout(() => { ui.showUI = true; }, 0 );
}; };
const applyRankingListData = ( data: RankingListResponse ): void =>
{
ui.attachingRankingList = data.attachingRateRankingList;
ui.renewalRankingList = data.renewalRateRankingList;
// 更新UI
// 先不显示界面往队列中加入显示队列的回调让vue刷新组件。
ui.showUI = false;
console.log( "获取排行榜后的ui:", data );
setTimeout(() => { ui.showUI = true; }, 0 );
};
// 退出桌面霸屏 // 退出桌面霸屏
const logoutDesktopArchievement = () => const logoutDesktopArchievement = () =>
{ {
@@ -150,32 +213,49 @@ export default {
router.push( "/login" ); router.push( "/login" );
} }
/**
* 刷新页面
*/
const refresh = () => const refresh = () =>
{ {
const deparmentInfo:Department = const deparmentInfo: Department =
{ {
departmentCode: callerInfo.departmentCode, departmentCode: callerInfo.departmentCode,
departmentName: callerInfo.departmentName, departmentName: callerInfo.departmentName,
}; };
queryDepartmentArchievement( deparmentInfo, renderData ); const rankinglistRequest: RankingListRequest =
{
departmentCode: callerInfo.departmentCode,
year: "2023",
month: "06",
};
queryDepartmentArchievement( deparmentInfo, applyArchievementData );
requestRankingList( rankinglistRequest, applyRankingListData );
}; };
/**
* 加载前
*/
onBeforeMount(() => onBeforeMount(() =>
{ {
// 设置每10分钟刷新一次 // 设置每10分钟刷新一次
// timerHandler = setInterval( refresh, 5000 ); timerHandler = setInterval( refresh, 600 * 1000 );
refresh(); refresh();
}); });
onUnmounted(():void => /**
* 页面卸载前
*/
onUnmounted((): void =>
{ {
// 退出页面前关掉定时器 // 退出页面前关掉定时器
clearInterval( timerHandler ); clearInterval( timerHandler );
}); });
return { ui, callerInfo, timerHandler, getTotalArchievement, renderData, refresh, logoutDesktopArchievement, }; return { ui, callerInfo, timerHandler, getTotalArchievement, renderData: applyArchievementData, refresh, logoutDesktopArchievement, };
}, },
}; };
</script> </script>
@@ -297,8 +377,35 @@ export default {
} }
.right-wrapper { .right-wrapper {
min-width: 400px; min-width: 300px;
width: 25%; width: 25%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
// >*+* {
// margin-top: 15px;
// }
> h1 {
font: {
family: "FZ-ZHUOHEI";
weight: 100;
size: 30px;
}
color: $color-bg-04;
text-align: center;
width: 300px;
}
> div {
display: block;
height: 260px;
width: 300px;
}
} }
</style> </style>
<style lang="scss"> <style lang="scss">

View File

@@ -2,25 +2,190 @@
* @Author: Kane * @Author: Kane
* @Date: 2023-03-23 16:05:08 * @Date: 2023-03-23 16:05:08
* @LastEditors: Kane * @LastEditors: Kane
* @FilePath: /task_schedule/src/views/DataManagemant.vue * @FilePath: /task_schedule/src/views/StaffManagement.vue
* @Description: * @Description:
* *
* Copyright (c) ${2022} by Kane, All Rights Reserved. * Copyright (c) ${2022} by Kane, All Rights Reserved.
--> -->
<template> <template>
<div> <div class="wrapper">
人员管理 <div class="query_wrapper">
<el-row :gutter="10">
<el-col :span="2">
<span>工号</span>
</el-col>
<el-col :span="4">
<el-input v-model.trim.lazy="ui.caller_code" />
</el-col>
<el-col :span="2">
<span>姓名</span>
</el-col>
<el-col :span="4">
<el-input />
</el-col>
<el-col :span="2">
<span>部门代码</span>
</el-col>
<el-col :span="4">
<el-input />
</el-col>
<el-col :span="2">
<span>部门名称</span>
</el-col>
<el-col :span="4">
<el-input />
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="2">
<span>团队</span>
</el-col>
<el-col :span="10">
<el-input />
</el-col>
<el-col :span="12">
<div class="query-button">
<el-button
type="primary"
icon="search"
>
查询
</el-button>
<el-button icon="refresh">
重置
</el-button>
</div>
</el-col>
</el-row>
</div>
<el-table
border
stripe
style="width:100%;"
:height="tableHeight"
>
<el-table-column
type="selection"
align="center"
/>
<el-table-column
label="工号"
align="center"
width="120"
/>
<el-table-column
label="名称"
align="center"
width="200"
/>
<el-table-column
label="团队名称"
align="center"
/>
<el-table-column
label="部门"
align="center"
width="300"
/>
</el-table>
<div class="pagination_wrapper">
<el-pagination
v-model="ui.table_current_page_index"
class="pull_left"
size="small"
background
:page-size="ui.table_page_size"
:page-sizes="[10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="ui.callers.length"
@current-change="onCurrentPageIndexChange"
@size-change="onTablePageSizeChange"
/>
</div>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { reactive, computed } from "vue";
export default { export default {
name: "StaffManagement", name: "StaffManagement",
setup() setup()
{ {
return {}; const ui = reactive({
caller_code: "",
caller_name: "",
section_office_code: "",
section_office_name: "",
table_current_page_index: 1,
table_page_size: 50,
callers: [],
});
const onCurrentPageIndexChange = ( pageIndex: number ) =>
{
ui.table_current_page_index = pageIndex;
};
/**
* 设置表格每页显示记录的数量
* @param pageSize 表格页记录数量
*/
const onTablePageSizeChange = ( pageSize: number ) =>
{
ui.table_page_size = pageSize;
};
/**
* 表格高度
*/
const tableHeight = computed(() =>
{
return 10 * 50 + 40;
});
return { ui, onCurrentPageIndexChange, onTablePageSizeChange, tableHeight, };
}, },
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/assets/css/public/_public.scss";
.wrapper {
margin: 10px;
padding: 10px;
background-color: #fff;
border-radius: 5px;
box-shadow: $box-shadow;
&:hover {
box-shadow: $box-shadow-hover;
}
min-width: 800px;
> *+* {
margin-top: 10px;
}
}
.query_wrapper {
// display: flex;
border-radius: 5px;
padding: 15px;
@include query-box-wrap;
.query-button {
display: flex;
justify-content: flex-end;
align-items: center;
}
}
.pagination_wrapper
{
display: flex;
justify-content: flex-end;
}
</style> </style>

View File

@@ -2,7 +2,7 @@
* @Author: Kane * @Author: Kane
* @Date: 2023-02-15 09:25:52 * @Date: 2023-02-15 09:25:52
* @LastEditors: Kane * @LastEditors: Kane
* @LastEditTime: 2023-03-30 21:09:30 * @LastEditTime: 2023-06-25 09:51:13
* @FilePath: /task_schedule/vite.config.js * @FilePath: /task_schedule/vite.config.js
* @Description: * @Description:
* *
@@ -18,6 +18,7 @@ export default defineConfig(( command, mode ) =>
const env = loadEnv( mode, process.cwd(), "" ); const env = loadEnv( mode, process.cwd(), "" );
return { return {
server:{ host: "localhost", port: 5173, },
plugins: [vue(),], plugins: [vue(),],
base: "./", base: "./",
resolve: { resolve: {

View File

@@ -92,6 +92,20 @@
<artifactId>ojdbc8</artifactId> <artifactId>ojdbc8</artifactId>
<version>19.3.0.0.0</version> <version>19.3.0.0.0</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j2-impl -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>2.20.0</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<finalName>desktop_archievement_backend</finalName> <finalName>desktop_archievement_backend</finalName>
@@ -99,7 +113,8 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId> <artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version> <version>3.3.2</version>
<configuration></configuration>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>

View File

@@ -11,11 +11,8 @@ package com.cpic.xim.utils.archievement;
import java.sql.Connection; import java.sql.Connection;
import java.sql.DriverManager; import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.CallableStatement;
import java.util.Vector; import java.util.Vector;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import oracle.jdbc.OracleCallableStatement; import oracle.jdbc.OracleCallableStatement;
@@ -80,7 +77,6 @@ public class DepartmentArchievement
connection = DriverManager.getConnection( jdbcURL, userName, password ); connection = DriverManager.getConnection( jdbcURL, userName, password );
statement = connection.prepareCall( sql ); statement = connection.prepareCall( sql );
statement.setString( 1, departmentCode ); statement.setString( 1, departmentCode );
statement.registerOutParameter( 2, java.sql.Types.VARCHAR ); statement.registerOutParameter( 2, java.sql.Types.VARCHAR );
statement.registerOutParameter( 3, java.sql.Types.VARCHAR ); statement.registerOutParameter( 3, java.sql.Types.VARCHAR );

View File

@@ -0,0 +1,23 @@
/*
* @Author: Kane
* @Date: 2023-06-05 10:36:30
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/utils/exception/DepartmentCodeNotFoundException.java
* @Description:
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
package com.cpic.xim.utils.exception;
public class DepartmentCodeNotFoundException extends Exception
{
public DepartmentCodeNotFoundException()
{
super("部门代码无效!");
}
public DepartmentCodeNotFoundException( String message )
{
super( message );
}
}

View File

@@ -0,0 +1,23 @@
/*
* @Author: Kane
* @Date: 2023-06-05 10:56:33
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/utils/exception/ParameterExecption.java
* @Description: 用于表示参数错误的异常对象。
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
package com.cpic.xim.utils.exception;
public class ParameterExecption extends Exception
{
public ParameterExecption()
{
super("参数错误!");
}
public ParameterExecption(String message )
{
super( message );
}
}

View File

@@ -0,0 +1,64 @@
/*
* @Author: Kane
* @Date: 2023-06-03 20:02:28
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/utils/ranking/CallerRanking.java
* @Description: 坐席排行榜项目
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
package com.cpic.xim.utils.ranking;
import com.fasterxml.jackson.annotation.JsonProperty;
public class CallerRankingItem
{
public CallerRankingItem() {}
public CallerRankingItem( int index, String callName, String appraiseValue )
{
this.index = index;
this.callerName = callName;
this.appraiseValue = appraiseValue;
}
public int getIndex()
{
return index;
}
public void setIndex( int index )
{
this.index = index;
}
public String getCallerName()
{
return callerName;
}
public void setCallerName( String callerName )
{
this.callerName = callerName;
}
public String getAppraiseValue()
{
return appraiseValue;
}
public void setAppraiseValue( String appraiseValue )
{
this.appraiseValue = appraiseValue;
}
@JsonProperty("index")
private int index;
@JsonProperty("callerName")
private String callerName;
@JsonProperty("appraiseValue")
private String appraiseValue;
}

View File

@@ -0,0 +1,225 @@
/*
* @Author: Kane
* @Date: 2023-06-05 08:55:06
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/utils/ranking/CallerRankingList.java
* @Description: 坐席排行榜对象
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
package com.cpic.xim.utils.ranking;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.OracleTypes;
public class CallerRankingList
{
// 以后要改
private static String jdbcURL = "jdbc:oracle:thin:@10.39.0.86:1521:xmcx1";
private static String userName = "desktop_archievement_admin";
private static String password = "Cpic123456";
private CallerRankingList( String departmentCode, String year, String month,
Vector<CallerRankingItem> attachingRateRankingList,
Vector<CallerRankingItem> renewalRateRankingList)
{
this.departmentCode = departmentCode;
this.year = year;
this.month = month;
this.attachingRateRankingList = attachingRateRankingList;
this.renewalRateRankingList = renewalRateRankingList;
}
/**
* @brief static方法用于查询部门坐席排行榜
* @param departmentCode 部门代码
* @param year 排行榜年份
* @param month 排行榜月份
* @return CallerRankingList的实例对象
*/
public static CallerRankingList getCallerRankingList( String departmentCode, String year,
String month ) throws ClassNotFoundException, SQLException
{
CallerRankingList rankingList = null;
Connection connection = null;
CallableStatement statement = null;
ResultSet cur_attaching = null;
ResultSet cur_renewal = null;
String sql = """
{call telsale_archievement_pkg.caller_arch_ranking_list(?,?,?,?,?)}
""";
String monthRegx = "(0[1-9])|(1[0-2])";
String yearRegx = "20[0-2][0-0]";
Vector<CallerRankingItem> attachingRateRankingList = new Vector<>();
Vector<CallerRankingItem> renewalRateRankingList = new Vector<>();
int index = 1;
try
{
Class.forName( "oracle.jdbc.driver.OracleDriver" );
connection = DriverManager.getConnection( jdbcURL, userName, password );
statement = connection.prepareCall( sql );
statement.setString( 1, departmentCode );
statement.setString( 2, year );
statement.setString( 3, month );
statement.registerOutParameter( 4, OracleTypes.CURSOR );
statement.registerOutParameter( 5, OracleTypes.CURSOR );
statement.execute();
// 车非渗透率
cur_attaching = ((OracleCallableStatement) statement).getCursor( 4 );
index = 1;
while ( cur_attaching.next())
{
String callerName = cur_attaching.getString( 1 );
String appraiseValue = cur_attaching.getString( 2 );
CallerRankingItem caller =
new CallerRankingItem( index, callerName, appraiseValue );
attachingRateRankingList.add( caller );
index++;
}
// 续保率
cur_renewal = ((OracleCallableStatement) statement).getCursor( 5 );
index = 1;
while ( cur_renewal.next())
{
String callerName = cur_renewal.getString( 1 );
String appraiseValue = cur_renewal.getString( 2 );
CallerRankingItem caller =
new CallerRankingItem( index, callerName, appraiseValue );
renewalRateRankingList.add( caller );
index++;
}
rankingList = new CallerRankingList( departmentCode, year, month,
attachingRateRankingList, renewalRateRankingList );
}
finally
{
try
{
if ( cur_attaching != null )
{
cur_attaching.close();
}
}
catch ( Exception exception )
{
exception.printStackTrace();
}
try
{
if ( statement != null )
{
statement.close();
}
}
catch ( Exception exception )
{
exception.printStackTrace();
}
try
{
if ( connection != null )
{
connection.close();
}
}
catch ( Exception exception )
{
exception.printStackTrace();
}
}
return rankingList;
}
public String getDepartmentCode()
{
return departmentCode;
}
public void setDepartmentCode( String departmentCode )
{
this.departmentCode = departmentCode;
}
public String getYear()
{
return year;
}
public void setYear( String year )
{
this.year = year;
}
public String getMonth()
{
return month;
}
public void setMonth( String month )
{
this.month = month;
}
public Vector<CallerRankingItem> getAttachingRateRankingList()
{
return attachingRateRankingList;
}
public void setAttachingRateRankingList( Vector<CallerRankingItem> attachingRateRankingList )
{
this.attachingRateRankingList = attachingRateRankingList;
}
public Vector<CallerRankingItem> getRenewalRateRankingList()
{
return renewalRateRankingList;
}
public void setRenewalRateRankingList( Vector<CallerRankingItem> renewalRateRankingList )
{
this.renewalRateRankingList = renewalRateRankingList;
}
// 部门代码
private String departmentCode;
// 排行榜年份
private String year;
// 排行榜统计月份
private String month;
// 车非融合率排行
private Vector<CallerRankingItem> attachingRateRankingList;
// 续保率排行
private Vector<CallerRankingItem> renewalRateRankingList;
}

View File

@@ -13,15 +13,18 @@
package com.cpic.xim.web.controllers.archievement; package com.cpic.xim.web.controllers.archievement;
import java.sql.SQLException;
import java.util.Vector; import java.util.Vector;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestBody;
import java.sql.SQLException;
import com.cpic.xim.utils.archievement.DepartmentArchievement; import com.cpic.xim.utils.archievement.DepartmentArchievement;
import com.cpic.xim.utils.ranking.CallerRankingItem;
import com.cpic.xim.utils.ranking.CallerRankingList;
import com.cpic.xim.web.controllers.archievement.RankingList.RankingListRequest;
import com.cpic.xim.web.controllers.archievement.RankingList.RankingListResponse;
@Controller @Controller
@RequestMapping( "/archievement" ) @RequestMapping( "/archievement" )
@@ -79,9 +82,51 @@ public class ArchievementQueryController
return result; return result;
} }
@RequestMapping("/query_ranking_list.do") @RequestMapping( "/query_ranking_list.do" )
public void queryCallerArchievementRankingList( ) @ResponseBody
public RankingListResponse queryCallerArchievementRankingList(
@RequestBody RankingListRequest request )
{ {
String departmentCode = request.getDepartmentCode();
String year = request.getYear();
String month = request.getMonth();
boolean success = false;
String message = "";
Vector<CallerRankingItem> attachingRateRankingList = null;
Vector<CallerRankingItem> renewalRateRankingList = null;
try
{
CallerRankingList rankingList =
CallerRankingList.getCallerRankingList( departmentCode, year, month );
attachingRateRankingList = rankingList.getAttachingRateRankingList();
renewalRateRankingList = rankingList.getRenewalRateRankingList();
success = true;
message = "调用成功!";
}
catch ( SQLException error )
{
success = false;
message = "获取排行榜失败,原因:" + error.getMessage();
error.printStackTrace();
}
catch ( ClassNotFoundException error )
{
success = false;
message = "获取排行榜失败原因oracle驱动加载失败" + error.getMessage();
error.printStackTrace();
}
RankingListResponse response = new RankingListResponse( success, message, departmentCode,
year, month, attachingRateRankingList, renewalRateRankingList );
return response;
} }
} }

View File

@@ -0,0 +1,56 @@
/*
* @Author: Kane
* @Date: 2023-06-03 19:56:03
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/RankingList/RankingListRequest.java
* @Description:
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
package com.cpic.xim.web.controllers.archievement.RankingList;
import com.fasterxml.jackson.annotation.JsonProperty;
public class RankingListRequest
{
public RankingListRequest() {}
public String getDepartmentCode()
{
return departmentCode;
}
public void setDepartmentCode( String departmentCode )
{
this.departmentCode = departmentCode;
}
public String getYear()
{
return year;
}
public void setYear( String year )
{
this.year = year;
}
public String getMonth()
{
return month;
}
public void setMonth( String month )
{
this.month = month;
}
@JsonProperty("departmentCode")
private String departmentCode;
@JsonProperty("year")
private String year;
@JsonProperty("month")
private String month;
}

View File

@@ -0,0 +1,106 @@
/*
* @Author: Kane
* @Date: 2023-06-03 20:18:46
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/RankingList/RankingListResponse.java
* @Description:
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
package com.cpic.xim.web.controllers.archievement.RankingList;
import java.util.Vector;
import com.cpic.xim.utils.ranking.CallerRankingItem;
import com.cpic.xim.web.controllers.QueryResult;
import com.fasterxml.jackson.annotation.JsonProperty;
public class RankingListResponse extends QueryResult
{
public RankingListResponse()
{
super();
}
public RankingListResponse( boolean success, String message, String departmentCode, String year,
String month, Vector<CallerRankingItem> attachingRateRankingList,
Vector<CallerRankingItem> renewalRateRankingList)
{
super( success, message );
this.departmentCode = departmentCode;
this.year = year;
this.month = month;
this.attachingRateRankingList = attachingRateRankingList;
this.renewalRateRankingList = renewalRateRankingList;
}
public String getDepartmentCode()
{
return departmentCode;
}
public void setDepartmentCode( String departmentCode )
{
this.departmentCode = departmentCode;
}
public String getYear()
{
return year;
}
public void setYear( String year )
{
this.year = year;
}
public String getMonth()
{
return month;
}
public void setMonth( String month )
{
this.month = month;
}
public Vector<CallerRankingItem> getAttachingRateRankingList()
{
return attachingRateRankingList;
}
public void setAttachingRateRankingList( Vector<CallerRankingItem> attachingRateRankingList )
{
this.attachingRateRankingList = attachingRateRankingList;
}
public Vector<CallerRankingItem> getRenewalRateRankingList()
{
return renewalRateRankingList;
}
public void setRenewalRateRankingList( Vector<CallerRankingItem> renewalRateRankingList )
{
this.renewalRateRankingList = renewalRateRankingList;
}
// 部门代码
@JsonProperty( "departmentCode" )
private String departmentCode;
// 统计年份
@JsonProperty( "year" )
private String year;
// 统计月份
@JsonProperty( "month" )
private String month;
// 车非融合率排行
@JsonProperty( "attachingRateRankingList" )
private Vector<CallerRankingItem> attachingRateRankingList;
// 续保率排行
@JsonProperty( "renewalRateRankingList" )
private Vector<CallerRankingItem> renewalRateRankingList;
}

View File

@@ -0,0 +1,26 @@
/*
* @Author: Kane
* @Date: 2023-06-19 10:01:43
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/caller/CallerController.java
* @Description:
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
package com.cpic.xim.web.controllers.caller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/caller")
public class CallerController
{
public CallerController() {}
@RequestMapping("/quer_caller.do")
public static void queryCaller()
{
}
}

View File

@@ -0,0 +1,24 @@
/*
* @Author: Kane
* @Date: 2023-06-19 15:33:23
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/caller/QueryCallerRequest.java
* @Description:
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
package com.cpic.xim.web.controllers.caller;
import com.fasterxml.jackson.annotation.JsonProperty;
public class QueryCallerRequest
{
public QueryCallerRequest() {}
private String callerCode;
private String callerName;
private String teamCode;
private String teamName;
private String departmentCode;
private String departmentName;
}

View File

@@ -17,10 +17,14 @@ import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
public class CrosFilter implements Filter public class CrosFilter implements Filter
{ {
private static Logger logger = LoggerFactory.getLogger(CrosFilter.class);
@Override @Override
public void doFilter( ServletRequest req, ServletResponse resp, FilterChain chain ) public void doFilter( ServletRequest req, ServletResponse resp, FilterChain chain )
throws ServletException, IOException throws ServletException, IOException
@@ -30,7 +34,7 @@ public class CrosFilter implements Filter
String method = request.getMethod(); String method = request.getMethod();
String originHeader = request.getHeader( "Origin" ); String originHeader = request.getHeader( "Origin" );
System.out.println( "收到" + method + "请求,来自" + originHeader); logger.info( "收到" + method + "请求,来自" + originHeader);
// 如果是Options请求 // 如果是Options请求
if ( method.equals(HttpMethod.OPTIONS.toString()) ) if ( method.equals(HttpMethod.OPTIONS.toString()) )

View File

@@ -0,0 +1,22 @@
<Configuration status="WARN" monitorInterval="300">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} ### %msg%n" />
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
</Console>
<RollingFile name="rolling_file" filename="./logs/app.log"
filePattern="./logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<SizeBasedTriggeringPolicy size="50MB" />
<DefaultRolloverStrategy max="20" />
</RollingFile>
</Appenders>
<Loggers>
<Logger name="mylog" level="info" additivity="false">
<AppenderRef ref="rolling_file" />
</Logger>
<Root level="info">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>

View File

@@ -0,0 +1,66 @@
/*
* @Author: Kane
* @Date: 2023-05-15 14:59:26
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/test/java/com/cpic/xim/DesktopArchievement/test/DesktopArchievementTest.java
* @Description:
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
package com.cpic.xim.DesktopArchievement.test;
import java.sql.SQLException;
import org.junit.Test;
import com.cpic.xim.utils.archievement.DepartmentArchievement;
import com.cpic.xim.utils.ranking.CallerRankingList;
@SuppressWarnings( "all" )
public class DesktopArchievementTest
{
@Test
public void testQueryArchievement()
{
try
{
DepartmentArchievement.queryDepartmentArchievement( "QDI" );
}
catch ( SQLException error )
{
System.out.println( error.getMessage() );
}
catch ( ClassNotFoundException error )
{
System.out.println( error.getMessage() );
}
}
@Test
public void testCallerRankingList()
{
try
{
CallerRankingList rankingList =
CallerRankingList.getCallerRankingList( "QDI", "2023", "05" );
}
catch ( SQLException error )
{
error.printStackTrace();
}
catch ( ClassNotFoundException error )
{
error.printStackTrace();
}
}
@Test
public void testArray()
{
int[] num =
{ 12, 3, 4, 5, 4, 45654,};
for ( int item : num )
{
}
}
}