Compare commits
23 Commits
feature-da
...
c3479d7d8e
Author | SHA1 | Date | |
---|---|---|---|
c3479d7d8e | |||
0c89df8c34 | |||
a5d392c2f6 | |||
84b2e906f3 | |||
3b4c340b70 | |||
3001165bd5 | |||
39a75c7bf2 | |||
237cc350be | |||
d202d976a3 | |||
492239f269 | |||
c0406e7000 | |||
44357ad3ce | |||
e07039b517 | |||
484b8a78e9 | |||
4e74bff380 | |||
7311ab5e2a | |||
0650227861 | |||
75a9c46c2e | |||
02ac5274e0 | |||
6f303eec03 | |||
d517c2e82a | |||
80ba8da7e0 | |||
1422c0b781 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -729,3 +729,6 @@ target/*
|
|||||||
# oracle
|
# oracle
|
||||||
*.~pck
|
*.~pck
|
||||||
*.~sql
|
*.~sql
|
||||||
|
|
||||||
|
# 输出目录
|
||||||
|
输出/*
|
@@ -145,18 +145,29 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS
|
|||||||
a_present_month OUT NUMBER,
|
a_present_month OUT NUMBER,
|
||||||
a_mensual_cur OUT cur_type
|
a_mensual_cur OUT cur_type
|
||||||
) IS
|
) IS
|
||||||
l_caller_name VARCHAR2(100);
|
l_caller_name VARCHAR2(100);
|
||||||
l_this_month VARCHAR2(4);
|
l_department_name VARCHAR2(100);
|
||||||
l_this_year VARCHAR2(4);
|
--l_this_month VARCHAR2(4);
|
||||||
l_firstday DATE;
|
l_this_year VARCHAR2(4);
|
||||||
l_rownum INTEGER;
|
--l_firstday DATE;
|
||||||
|
l_rownum INTEGER;
|
||||||
BEGIN
|
BEGIN
|
||||||
--<2D><>ѯ<EFBFBD><D1AF>ϯ<EFBFBD><CFAF><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>
|
--<2D><>ѯ<EFBFBD><D1AF>ϯ<EFBFBD><CFAF><EFBFBD>ƣ<EFBFBD><C6A3>Ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT saler_name
|
SELECT zx.saler_name,
|
||||||
INTO l_caller_name
|
bm.department_name
|
||||||
FROM tele_saler
|
INTO l_caller_name,
|
||||||
WHERE saler_code = a_caller_code;
|
l_department_name
|
||||||
|
FROM tele_saler zx,
|
||||||
|
tele_saler_team team,
|
||||||
|
idst0.bm_t bm
|
||||||
|
WHERE zx.saler_code = a_caller_code
|
||||||
|
AND zx.team_code = team.team_code
|
||||||
|
AND team.department_code = bm.department_code;
|
||||||
|
/* SELECT saler_name
|
||||||
|
INTO l_caller_name
|
||||||
|
FROM tele_saler
|
||||||
|
WHERE saler_code = a_caller_code;*/
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
-- <20><><EFBFBD><EFBFBD>û<EFBFBD>в<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD>ƣ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>쳣
|
-- <20><><EFBFBD><EFBFBD>û<EFBFBD>в<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD>ƣ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>쳣
|
||||||
WHEN no_data_found THEN
|
WHEN no_data_found THEN
|
||||||
@@ -164,12 +175,12 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS
|
|||||||
CALLERCODE_EXCEPTION_MSG);
|
CALLERCODE_EXCEPTION_MSG);
|
||||||
END;
|
END;
|
||||||
|
|
||||||
l_this_month := to_char(SYSDATE,
|
--l_this_month := to_char(SYSDATE,
|
||||||
'mm');
|
-- 'mm');
|
||||||
l_this_year := to_char(SYSDATE,
|
l_this_year := to_char(SYSDATE,
|
||||||
'yyyy');
|
'yyyy');
|
||||||
l_firstday := to_date(l_this_year || '-01-01 00:00:00',
|
--l_firstday := to_date(l_this_year || '-01-01 00:00:00',
|
||||||
'yyyy-mm-dd hh24:mi:ss');
|
-- 'yyyy-mm-dd hh24:mi:ss');
|
||||||
|
|
||||||
--<2D>ܳ<EFBFBD><DCB3>ձ<EFBFBD><D5B1><EFBFBD>
|
--<2D>ܳ<EFBFBD><DCB3>ձ<EFBFBD><D5B1><EFBFBD>
|
||||||
SELECT round(nvl(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>),
|
SELECT round(nvl(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>),
|
||||||
@@ -177,7 +188,8 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS
|
|||||||
2) bf
|
2) bf
|
||||||
INTO a_total
|
INTO a_total
|
||||||
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> cf
|
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> cf
|
||||||
WHERE cf.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = a_caller_code
|
WHERE cf.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = l_caller_name
|
||||||
|
AND cf.<2E><><EFBFBD><EFBFBD> = l_department_name
|
||||||
AND cf.<2E><><EFBFBD><EFBFBD> = l_this_year;
|
AND cf.<2E><><EFBFBD><EFBFBD> = l_this_year;
|
||||||
|
|
||||||
--<2D><><EFBFBD><CDB8>
|
--<2D><><EFBFBD><CDB8>
|
||||||
@@ -194,28 +206,7 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS
|
|||||||
FROM BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> t
|
FROM BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> t
|
||||||
WHERE t.<2E><><EFBFBD><EFBFBD> = l_caller_name
|
WHERE t.<2E><><EFBFBD><EFBFBD> = l_caller_name
|
||||||
AND rownum = 1;
|
AND rownum = 1;
|
||||||
/*SELECT decode(nvl(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>),
|
|
||||||
0),
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
round(SUM(cf.<2E><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>) / SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>) * 100,
|
|
||||||
2))
|
|
||||||
INTO a_attaching_rate
|
|
||||||
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> cf
|
|
||||||
WHERE cf.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = a_caller_code
|
|
||||||
AND cf.<2E><><EFBFBD><EFBFBD> = l_this_year
|
|
||||||
AND cf.<2E>·<EFBFBD> = l_this_month;*/
|
|
||||||
|
|
||||||
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
/*SELECT decode(nvl(SUM(xb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>),
|
|
||||||
0),
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
round(SUM(xb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) / SUM(xb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100,
|
|
||||||
2)) xbl
|
|
||||||
INTO a_renewal_rate
|
|
||||||
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3> xb
|
|
||||||
WHERE xb.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = a_caller_code;*/
|
|
||||||
SELECT rownum,
|
SELECT rownum,
|
||||||
round(nvl(t."<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>ȫ<EFBFBD>£<EFBFBD>(%)",
|
round(nvl(t."<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>ȫ<EFBFBD>£<EFBFBD>(%)",
|
||||||
0),
|
0),
|
||||||
@@ -229,11 +220,12 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS
|
|||||||
--ÿ<><C3BF>ҵ<EFBFBD><D2B5>
|
--ÿ<><C3BF>ҵ<EFBFBD><D2B5>
|
||||||
OPEN A_MENSUAL_CUR FOR
|
OPEN A_MENSUAL_CUR FOR
|
||||||
SELECT CF.<2E>·<EFBFBD> MM,
|
SELECT CF.<2E>·<EFBFBD> MM,
|
||||||
ROUND(NVL(SUM(CF.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD> + CF.<2E><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>),
|
ROUND(NVL(SUM(CF.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>),
|
||||||
0),
|
0),
|
||||||
0) BF
|
0) BF
|
||||||
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> CF
|
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> CF
|
||||||
WHERE cf.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = a_caller_code
|
WHERE cf.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = l_caller_name
|
||||||
|
AND cf.<2E><><EFBFBD><EFBFBD> = l_department_name
|
||||||
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',
|
||||||
'yyyy-mm-dd hh24:mi:ss')
|
'yyyy-mm-dd hh24:mi:ss')
|
||||||
|
@@ -52,7 +52,7 @@ SELECT
|
|||||||
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>
|
||||||
HAVING <EFBFBD>·<EFBFBD> = '06<EFBFBD><EFBFBD>'
|
HAVING <EFBFBD>·<EFBFBD> = '10<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> DESC;
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DESC;
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ SELECT
|
|||||||
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><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> = '05'
|
AND <EFBFBD>·<EFBFBD> = '10'
|
||||||
AND <EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '2023'
|
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;
|
||||||
@@ -75,3 +75,30 @@ SELECT
|
|||||||
WHERE xb.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
WHERE xb.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
||||||
GROUP BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
GROUP BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
ORDER BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> DESC;
|
ORDER BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> DESC;
|
||||||
|
-------------------------------------
|
||||||
|
SELECT zx.saler_name,
|
||||||
|
bm.department_name
|
||||||
|
FROM tele_saler zx,
|
||||||
|
tele_saler_team team,
|
||||||
|
idst0.bm_t bm
|
||||||
|
WHERE zx.saler_name = '<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD>'
|
||||||
|
AND zx.team_code = team.team_code
|
||||||
|
AND team.department_code = bm.department_code;
|
||||||
|
----------------------------------------
|
||||||
|
/*
|
||||||
|
truncate table BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>;
|
||||||
|
*/
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD> t
|
||||||
|
WHERE t.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD>';
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>
|
||||||
|
WHERE <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD>';
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>;
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>;
|
||||||
|
@@ -7,7 +7,44 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) ${2022} by Kane, All Rights Reserved.
|
# Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
###
|
###
|
||||||
NODE_ENV = 'development'
|
NODE_ENV='development'
|
||||||
VITE_URL_VALIDATE_ACCOUNT="http://222.76.244.118:11101/desktop_archievement_backend/account/query_staff_info.do"
|
VITE_URL_VALIDATE_ACCOUNT="http://222.76.244.118:11101/desktop_archievement_backend/account/query_staff_info.do"
|
||||||
VITE_URL_LOGIN = "http://222.76.244.118:11101/admin-system/account/p13_account_check"
|
VITE_URL_LOGIN="http://222.76.244.118:11101/admin-system/account/p13_account_check"
|
||||||
VITE_URL_DEPARTMENT_ARCHIEVEMENT="http://222.76.244.118:11101/desktop_archievement_backend/archievement/query_department_archievement.do"
|
VITE_URL_DEPARTMENT_ARCHIEVEMENT="http://222.76.244.118:11101/desktop_archievement_backend/archievement/query_department_archievement.do"
|
||||||
|
|
||||||
|
### URL相关 ##########
|
||||||
|
#登录
|
||||||
|
VITE_URL_LOGIN="http://222.76.244.118:11101/admin-system/account/p13_account_check"
|
||||||
|
VITE_URL_LOGIN_CALLER="http://222.76.244.118:11101/desktop_archievement_backend/account/query_telsaler_info.do"
|
||||||
|
|
||||||
|
#部门业绩查询
|
||||||
|
VITE_URL_DEPARTMENT_ARCHIEVEMENT="http://222.76.244.118:11101/desktop_archievement_backend/archievement/query_department_archievement.do"
|
||||||
|
#坐席业绩查询
|
||||||
|
VITE_URL_CALLER_ARCHIEVEMENT="http://222.76.244.118:11101/desktop_archievement_backend/archievement/query_caller_archievement.do"
|
||||||
|
|
||||||
|
#排行榜
|
||||||
|
VITE_URL_RANKINGLIST="http://222.76.244.118:11101/desktop_archievement_backend/archievement/query_ranking_list.do"
|
||||||
|
|
||||||
|
|
||||||
|
## 奖项相关 ##
|
||||||
|
## 查询奖励项目
|
||||||
|
VITE_URL_RWARD_PROJECTS="http://222.76.244.118:11101/desktop_archievement_backend/rewards/query_reward_projects.do"
|
||||||
|
## 查询获奖人员
|
||||||
|
VITE_URL_REWARD_GAINERS="http://222.76.244.118:11101/desktop_archievement_backend/rewards/query_reward_gainers.do"
|
||||||
|
## 添加获奖人员
|
||||||
|
VITE_URL_ADD_REWARD_TELSALER="http://222.76.244.118:11101/desktop_archievement_backend/rewards/add_telsaler_reward.do"
|
||||||
|
## 更新获奖人员
|
||||||
|
VITE_URL_UPDATE_REWARD_TELSALER="http://222.76.244.118:11101/desktop_archievement_backend/rewards/update_telsaler_reward.do"
|
||||||
|
## 删除获奖人员
|
||||||
|
VITE_URL_DEL_REWARD_TELSALER="http://222.76.244.118:11101/desktop_archievement_backend/rewards/delete_telsaler_reward.do"
|
||||||
|
|
||||||
|
## 上传文件
|
||||||
|
VITE_URL_UPLOAD_FILE="http://222.76.244.118:11101/desktop_archievement_backend/file/file-upload.do"
|
||||||
|
## 导入报表
|
||||||
|
VITE_URL_IMPORT_REPORT="http://222.76.244.118:11101/desktop_archievement_backend/import_bi_data/excel.do"
|
||||||
|
|
||||||
|
## 请求BI报表数据
|
||||||
|
VITE_URL_BI_TELSALER_ATTACHINGRATE="http://222.76.244.118:11101/desktop_archievement_backend/archievement/bi_telsaler_attachingrate.do"
|
||||||
|
VITE_URL_BI_TELSALER_RENEWALRATE="http://222.76.244.118:11101/desktop_archievement_backend/archievement/bi_telsaler_renewalrate.do"
|
||||||
|
VITE_URL_BI_DEPARTMENT_ATTACHINGRATE="http://222.76.244.118:11101/desktop_archievement_backend/archievement/bi_department_attachingrate.do"
|
||||||
|
VITE_URL_BI_DEPARTMENT_RENEWALRATE="http://222.76.244.118:11101/desktop_archievement_backend/archievement/bi_department_renewalrate.do"
|
49
code/web/task_schedule/.env.production
Normal file
49
code/web/task_schedule/.env.production
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
###
|
||||||
|
# @Author: Kane
|
||||||
|
# @Date: 2023-03-14 23:46:12
|
||||||
|
# @LastEditors: Kane
|
||||||
|
# @FilePath: /task_schedule/.env.production
|
||||||
|
# @Description:
|
||||||
|
#
|
||||||
|
# Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
|
###
|
||||||
|
VITE_URL_VALIDATE_ACCOUNT="http://10.39.0.61:8081/desktop_archievement_backend/account/query_staff_info.do"
|
||||||
|
VITE_URL_LOGIN="http://10.39.0.61:8081/admin-system/account/p13_account_check"
|
||||||
|
VITE_URL_DEPARTMENT_ARCHIEVEMENT="http://10.39.0.61:8081/desktop_archievement_backend/archievement/query_department_archievement.do"
|
||||||
|
|
||||||
|
### URL相关 ##########
|
||||||
|
#登录
|
||||||
|
VITE_URL_LOGIN="http://10.39.0.61:8081/admin-system/account/p13_account_check"
|
||||||
|
VITE_URL_LOGIN_CALLER="http://10.39.0.61:8081/desktop_archievement_backend/account/query_telsaler_info.do"
|
||||||
|
|
||||||
|
#部门业绩查询
|
||||||
|
VITE_URL_DEPARTMENT_ARCHIEVEMENT="http://10.39.0.61:8081/desktop_archievement_backend/archievement/query_department_archievement.do"
|
||||||
|
#坐席业绩查询
|
||||||
|
VITE_URL_CALLER_ARCHIEVEMENT="http://10.39.0.61:8081/desktop_archievement_backend/archievement/query_caller_archievement.do"
|
||||||
|
|
||||||
|
#排行榜
|
||||||
|
VITE_URL_RANKINGLIST="http://10.39.0.61:8081/desktop_archievement_backend/archievement/query_ranking_list.do"
|
||||||
|
|
||||||
|
|
||||||
|
## 奖项相关 ##
|
||||||
|
## 查询奖励项目
|
||||||
|
VITE_URL_RWARD_PROJECTS="http://10.39.0.61:8081/desktop_archievement_backend/rewards/query_reward_projects.do"
|
||||||
|
## 查询获奖人员
|
||||||
|
VITE_URL_REWARD_GAINERS="http://10.39.0.61:8081/desktop_archievement_backend/rewards/query_reward_gainers.do"
|
||||||
|
## 添加获奖人员
|
||||||
|
VITE_URL_ADD_REWARD_TELSALER="http://10.39.0.61:8081/desktop_archievement_backend/rewards/add_telsaler_reward.do"
|
||||||
|
## 更新获奖人员
|
||||||
|
VITE_URL_UPDATE_REWARD_TELSALER="http://10.39.0.61:8081/desktop_archievement_backend/rewards/update_telsaler_reward.do"
|
||||||
|
## 删除获奖人员
|
||||||
|
VITE_URL_DEL_REWARD_TELSALER="http://10.39.0.61:8081/desktop_archievement_backend/rewards/delete_telsaler_reward.do"
|
||||||
|
|
||||||
|
## 上传文件
|
||||||
|
VITE_URL_UPLOAD_FILE="http://10.39.0.61:8081/desktop_archievement_backend/file/file-upload.do"
|
||||||
|
## 导入报表
|
||||||
|
VITE_URL_IMPORT_REPORT="http://10.39.0.61:8081/desktop_archievement_backend/import_bi_data/excel.do"
|
||||||
|
|
||||||
|
## 请求BI报表数据
|
||||||
|
VITE_URL_BI_TELSALER_ATTACHINGRATE="http://10.39.0.61:8081/desktop_archievement_backend/archievement/bi_telsaler_attachingrate.do"
|
||||||
|
VITE_URL_BI_TELSALER_RENEWALRATE="http://10.39.0.61:8081/desktop_archievement_backend/archievement/bi_telsaler_renewalrate.do"
|
||||||
|
VITE_URL_BI_DEPARTMENT_ATTACHINGRATE="http://10.39.0.61:8081/desktop_archievement_backend/archievement/bi_department_attachingrate.do"
|
||||||
|
VITE_URL_BI_DEPARTMENT_RENEWALRATE="http://10.39.0.61:8081/desktop_archievement_backend/archievement/bi_department_renewalrate.do"
|
302
code/web/task_schedule/package-lock.json
generated
302
code/web/task_schedule/package-lock.json
generated
@@ -10,28 +10,28 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@element-plus/icons-vue": "^2.1.0",
|
"@element-plus/icons-vue": "^2.1.0",
|
||||||
"echarts": "^5.4.3",
|
"echarts": "^5.4.3",
|
||||||
"element-plus": "^2.4.1",
|
"element-plus": "^2.4.2",
|
||||||
"mitt": "^3.0.1",
|
"mitt": "^3.0.1",
|
||||||
"moment": "^2.29.4",
|
"moment": "^2.29.4",
|
||||||
"sass-loader": "^13.3.2",
|
"sass-loader": "^13.3.2",
|
||||||
"vue": "^3.3.6",
|
"vue": "^3.3.8",
|
||||||
"vue-router": "^4.2.5",
|
"vue-router": "^4.2.5",
|
||||||
"vuex": "^4.1.0"
|
"vuex": "^4.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/eslint-parser": "^7.22.15",
|
"@babel/eslint-parser": "^7.23.3",
|
||||||
"@rushstack/eslint-patch": "^1.5.1",
|
"@rushstack/eslint-patch": "^1.5.1",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.8.0",
|
"@typescript-eslint/eslint-plugin": "^6.11.0",
|
||||||
"@vitejs/plugin-vue": "^4.4.0",
|
"@vitejs/plugin-vue": "^4.5.0",
|
||||||
"@vue/cli-plugin-eslint": "^5.0.8",
|
"@vue/cli-plugin-eslint": "^5.0.8",
|
||||||
"@vue/eslint-config-typescript": "^12.0.0",
|
"@vue/eslint-config-typescript": "^12.0.0",
|
||||||
"axios": "^1.5.1",
|
"axios": "^1.6.2",
|
||||||
"babel": "^6.23.0",
|
"babel": "^6.23.0",
|
||||||
"eslint-config-recommended": "^4.1.0",
|
"eslint-config-recommended": "^4.1.0",
|
||||||
"eslint-config-standard-with-typescript": "^39.1.1",
|
"eslint-config-standard-with-typescript": "^40.0.0",
|
||||||
"eslint-plugin-vue": "^9.17.0",
|
"eslint-plugin-vue": "^9.18.1",
|
||||||
"node-sass": "^9.0.0",
|
"node-sass": "^9.0.0",
|
||||||
"sass": "^1.69.4",
|
"sass": "^1.69.5",
|
||||||
"style-loader": "^3.3.3",
|
"style-loader": "^3.3.3",
|
||||||
"ts-node": "^10.9.1",
|
"ts-node": "^10.9.1",
|
||||||
"vue-eslint-parser": "^9.3.2"
|
"vue-eslint-parser": "^9.3.2"
|
||||||
@@ -126,9 +126,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/eslint-parser": {
|
"node_modules/@babel/eslint-parser": {
|
||||||
"version": "7.22.15",
|
"version": "7.23.3",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz",
|
"resolved": "https://registry.npmmirror.com/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz",
|
||||||
"integrity": "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==",
|
"integrity": "sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==",
|
||||||
"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",
|
||||||
@@ -1514,9 +1514,9 @@
|
|||||||
"peer": true
|
"peer": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/semver": {
|
"node_modules/@types/semver": {
|
||||||
"version": "7.5.3",
|
"version": "7.5.5",
|
||||||
"resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.5.3.tgz",
|
"resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.5.5.tgz",
|
||||||
"integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==",
|
"integrity": "sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/send": {
|
"node_modules/@types/send": {
|
||||||
@@ -1578,16 +1578,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||||
"version": "6.8.0",
|
"version": "6.11.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.11.0.tgz",
|
||||||
"integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==",
|
"integrity": "sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/regexpp": "^4.5.1",
|
"@eslint-community/regexpp": "^4.5.1",
|
||||||
"@typescript-eslint/scope-manager": "6.8.0",
|
"@typescript-eslint/scope-manager": "6.11.0",
|
||||||
"@typescript-eslint/type-utils": "6.8.0",
|
"@typescript-eslint/type-utils": "6.11.0",
|
||||||
"@typescript-eslint/utils": "6.8.0",
|
"@typescript-eslint/utils": "6.11.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.8.0",
|
"@typescript-eslint/visitor-keys": "6.11.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"graphemer": "^1.4.0",
|
"graphemer": "^1.4.0",
|
||||||
"ignore": "^5.2.4",
|
"ignore": "^5.2.4",
|
||||||
@@ -1609,34 +1609,34 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "6.8.0",
|
"version": "6.11.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.11.0.tgz",
|
||||||
"integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==",
|
"integrity": "sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.8.0",
|
"@typescript-eslint/types": "6.11.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.8.0"
|
"@typescript-eslint/visitor-keys": "6.11.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.0.0 || >=18.0.0"
|
"node": "^16.0.0 || >=18.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
|
||||||
"version": "6.8.0",
|
"version": "6.11.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.8.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.11.0.tgz",
|
||||||
"integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==",
|
"integrity": "sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.0.0 || >=18.0.0"
|
"node": "^16.0.0 || >=18.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "6.8.0",
|
"version": "6.11.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.11.0.tgz",
|
||||||
"integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==",
|
"integrity": "sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.8.0",
|
"@typescript-eslint/types": "6.11.0",
|
||||||
"eslint-visitor-keys": "^3.4.1"
|
"eslint-visitor-keys": "^3.4.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -1723,13 +1723,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/type-utils": {
|
"node_modules/@typescript-eslint/type-utils": {
|
||||||
"version": "6.8.0",
|
"version": "6.11.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-6.11.0.tgz",
|
||||||
"integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==",
|
"integrity": "sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/typescript-estree": "6.8.0",
|
"@typescript-eslint/typescript-estree": "6.11.0",
|
||||||
"@typescript-eslint/utils": "6.8.0",
|
"@typescript-eslint/utils": "6.11.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"ts-api-utils": "^1.0.1"
|
"ts-api-utils": "^1.0.1"
|
||||||
},
|
},
|
||||||
@@ -1746,22 +1746,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
|
||||||
"version": "6.8.0",
|
"version": "6.11.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.8.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.11.0.tgz",
|
||||||
"integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==",
|
"integrity": "sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.0.0 || >=18.0.0"
|
"node": "^16.0.0 || >=18.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "6.8.0",
|
"version": "6.11.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.11.0.tgz",
|
||||||
"integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==",
|
"integrity": "sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.8.0",
|
"@typescript-eslint/types": "6.11.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.8.0",
|
"@typescript-eslint/visitor-keys": "6.11.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",
|
||||||
@@ -1778,12 +1778,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "6.8.0",
|
"version": "6.11.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.11.0.tgz",
|
||||||
"integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==",
|
"integrity": "sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.8.0",
|
"@typescript-eslint/types": "6.11.0",
|
||||||
"eslint-visitor-keys": "^3.4.1"
|
"eslint-visitor-keys": "^3.4.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -1898,17 +1898,17 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/utils": {
|
"node_modules/@typescript-eslint/utils": {
|
||||||
"version": "6.8.0",
|
"version": "6.11.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-6.8.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-6.11.0.tgz",
|
||||||
"integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==",
|
"integrity": "sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.4.0",
|
"@eslint-community/eslint-utils": "^4.4.0",
|
||||||
"@types/json-schema": "^7.0.12",
|
"@types/json-schema": "^7.0.12",
|
||||||
"@types/semver": "^7.5.0",
|
"@types/semver": "^7.5.0",
|
||||||
"@typescript-eslint/scope-manager": "6.8.0",
|
"@typescript-eslint/scope-manager": "6.11.0",
|
||||||
"@typescript-eslint/types": "6.8.0",
|
"@typescript-eslint/types": "6.11.0",
|
||||||
"@typescript-eslint/typescript-estree": "6.8.0",
|
"@typescript-eslint/typescript-estree": "6.11.0",
|
||||||
"semver": "^7.5.4"
|
"semver": "^7.5.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -1919,35 +1919,35 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "6.8.0",
|
"version": "6.11.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.11.0.tgz",
|
||||||
"integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==",
|
"integrity": "sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.8.0",
|
"@typescript-eslint/types": "6.11.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.8.0"
|
"@typescript-eslint/visitor-keys": "6.11.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.0.0 || >=18.0.0"
|
"node": "^16.0.0 || >=18.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": {
|
||||||
"version": "6.8.0",
|
"version": "6.11.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.8.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.11.0.tgz",
|
||||||
"integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==",
|
"integrity": "sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.0.0 || >=18.0.0"
|
"node": "^16.0.0 || >=18.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "6.8.0",
|
"version": "6.11.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.11.0.tgz",
|
||||||
"integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==",
|
"integrity": "sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.8.0",
|
"@typescript-eslint/types": "6.11.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.8.0",
|
"@typescript-eslint/visitor-keys": "6.11.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",
|
||||||
@@ -1964,12 +1964,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "6.8.0",
|
"version": "6.11.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.11.0.tgz",
|
||||||
"integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==",
|
"integrity": "sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.8.0",
|
"@typescript-eslint/types": "6.11.0",
|
||||||
"eslint-visitor-keys": "^3.4.1"
|
"eslint-visitor-keys": "^3.4.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -2041,15 +2041,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vitejs/plugin-vue": {
|
"node_modules/@vitejs/plugin-vue": {
|
||||||
"version": "4.4.0",
|
"version": "4.5.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.5.0.tgz",
|
||||||
"integrity": "sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==",
|
"integrity": "sha512-a2WSpP8X8HTEww/U00bU4mX1QpLINNuz/2KMNpLsdu3BzOpak3AGI1CJYBTXcc4SPhaD0eNRUp7IyQK405L5dQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^14.18.0 || >=16.0.0"
|
"node": "^14.18.0 || >=16.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"vite": "^4.0.0",
|
"vite": "^4.0.0 || ^5.0.0",
|
||||||
"vue": "^3.2.25"
|
"vue": "^3.2.25"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -2318,36 +2318,36 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@vue/compiler-core": {
|
"node_modules/@vue/compiler-core": {
|
||||||
"version": "3.3.6",
|
"version": "3.3.8",
|
||||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.8.tgz",
|
||||||
"integrity": "sha512-2JNjemwaNwf+MkkatATVZi7oAH1Hx0B04DdPH3ZoZ8vKC1xZVP7nl4HIsk8XYd3r+/52sqqoz9TWzYc3yE9dqA==",
|
"integrity": "sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/parser": "^7.23.0",
|
"@babel/parser": "^7.23.0",
|
||||||
"@vue/shared": "3.3.6",
|
"@vue/shared": "3.3.8",
|
||||||
"estree-walker": "^2.0.2",
|
"estree-walker": "^2.0.2",
|
||||||
"source-map-js": "^1.0.2"
|
"source-map-js": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/compiler-dom": {
|
"node_modules/@vue/compiler-dom": {
|
||||||
"version": "3.3.6",
|
"version": "3.3.8",
|
||||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz",
|
||||||
"integrity": "sha512-1MxXcJYMHiTPexjLAJUkNs/Tw2eDf2tY3a0rL+LfuWyiKN2s6jvSwywH3PWD8bKICjfebX3GWx2Os8jkRDq3Ng==",
|
"integrity": "sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/compiler-core": "3.3.6",
|
"@vue/compiler-core": "3.3.8",
|
||||||
"@vue/shared": "3.3.6"
|
"@vue/shared": "3.3.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/compiler-sfc": {
|
"node_modules/@vue/compiler-sfc": {
|
||||||
"version": "3.3.6",
|
"version": "3.3.8",
|
||||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz",
|
||||||
"integrity": "sha512-/Kms6du2h1VrXFreuZmlvQej8B1zenBqIohP0690IUBkJjsFvJxY0crcvVRJ0UhMgSR9dewB+khdR1DfbpArJA==",
|
"integrity": "sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/parser": "^7.23.0",
|
"@babel/parser": "^7.23.0",
|
||||||
"@vue/compiler-core": "3.3.6",
|
"@vue/compiler-core": "3.3.8",
|
||||||
"@vue/compiler-dom": "3.3.6",
|
"@vue/compiler-dom": "3.3.8",
|
||||||
"@vue/compiler-ssr": "3.3.6",
|
"@vue/compiler-ssr": "3.3.8",
|
||||||
"@vue/reactivity-transform": "3.3.6",
|
"@vue/reactivity-transform": "3.3.8",
|
||||||
"@vue/shared": "3.3.6",
|
"@vue/shared": "3.3.8",
|
||||||
"estree-walker": "^2.0.2",
|
"estree-walker": "^2.0.2",
|
||||||
"magic-string": "^0.30.5",
|
"magic-string": "^0.30.5",
|
||||||
"postcss": "^8.4.31",
|
"postcss": "^8.4.31",
|
||||||
@@ -2355,12 +2355,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/compiler-ssr": {
|
"node_modules/@vue/compiler-ssr": {
|
||||||
"version": "3.3.6",
|
"version": "3.3.8",
|
||||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz",
|
||||||
"integrity": "sha512-QTIHAfDCHhjXlYGkUg5KH7YwYtdUM1vcFl/FxFDlD6d0nXAmnjizka3HITp8DGudzHndv2PjKVS44vqqy0vP4w==",
|
"integrity": "sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/compiler-dom": "3.3.6",
|
"@vue/compiler-dom": "3.3.8",
|
||||||
"@vue/shared": "3.3.6"
|
"@vue/shared": "3.3.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/component-compiler-utils": {
|
"node_modules/@vue/component-compiler-utils": {
|
||||||
@@ -2459,60 +2459,60 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/reactivity": {
|
"node_modules/@vue/reactivity": {
|
||||||
"version": "3.3.6",
|
"version": "3.3.8",
|
||||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.8.tgz",
|
||||||
"integrity": "sha512-gtChAumfQz5lSy5jZXfyXbKrIYPf9XEOrIr6rxwVyeWVjFhJwmwPLtV6Yis+M9onzX++I5AVE9j+iPH60U+B8Q==",
|
"integrity": "sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/shared": "3.3.6"
|
"@vue/shared": "3.3.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/reactivity-transform": {
|
"node_modules/@vue/reactivity-transform": {
|
||||||
"version": "3.3.6",
|
"version": "3.3.8",
|
||||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz",
|
||||||
"integrity": "sha512-RlJl4dHfeO7EuzU1iJOsrlqWyJfHTkJbvYz/IOJWqu8dlCNWtxWX377WI0VsbAgBizjwD+3ZjdnvSyyFW1YVng==",
|
"integrity": "sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/parser": "^7.23.0",
|
"@babel/parser": "^7.23.0",
|
||||||
"@vue/compiler-core": "3.3.6",
|
"@vue/compiler-core": "3.3.8",
|
||||||
"@vue/shared": "3.3.6",
|
"@vue/shared": "3.3.8",
|
||||||
"estree-walker": "^2.0.2",
|
"estree-walker": "^2.0.2",
|
||||||
"magic-string": "^0.30.5"
|
"magic-string": "^0.30.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/runtime-core": {
|
"node_modules/@vue/runtime-core": {
|
||||||
"version": "3.3.6",
|
"version": "3.3.8",
|
||||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.8.tgz",
|
||||||
"integrity": "sha512-qp7HTP1iw1UW2ZGJ8L3zpqlngrBKvLsDAcq5lA6JvEXHmpoEmjKju7ahM9W2p/h51h0OT5F2fGlP/gMhHOmbUA==",
|
"integrity": "sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/reactivity": "3.3.6",
|
"@vue/reactivity": "3.3.8",
|
||||||
"@vue/shared": "3.3.6"
|
"@vue/shared": "3.3.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/runtime-dom": {
|
"node_modules/@vue/runtime-dom": {
|
||||||
"version": "3.3.6",
|
"version": "3.3.8",
|
||||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz",
|
||||||
"integrity": "sha512-AoX3Cp8NqMXjLbIG9YR6n/pPLWE9TiDdk6wTJHFnl2GpHzDFH1HLBC9wlqqQ7RlnvN3bVLpzPGAAH00SAtOxHg==",
|
"integrity": "sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/runtime-core": "3.3.6",
|
"@vue/runtime-core": "3.3.8",
|
||||||
"@vue/shared": "3.3.6",
|
"@vue/shared": "3.3.8",
|
||||||
"csstype": "^3.1.2"
|
"csstype": "^3.1.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/server-renderer": {
|
"node_modules/@vue/server-renderer": {
|
||||||
"version": "3.3.6",
|
"version": "3.3.8",
|
||||||
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.8.tgz",
|
||||||
"integrity": "sha512-kgLoN43W4ERdZ6dpyy+gnk2ZHtcOaIr5Uc/WUP5DRwutgvluzu2pudsZGoD2b7AEJHByUVMa9k6Sho5lLRCykw==",
|
"integrity": "sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/compiler-ssr": "3.3.6",
|
"@vue/compiler-ssr": "3.3.8",
|
||||||
"@vue/shared": "3.3.6"
|
"@vue/shared": "3.3.8"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"vue": "3.3.6"
|
"vue": "3.3.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/shared": {
|
"node_modules/@vue/shared": {
|
||||||
"version": "3.3.6",
|
"version": "3.3.8",
|
||||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.8.tgz",
|
||||||
"integrity": "sha512-Xno5pEqg8SVhomD0kTSmfh30ZEmV/+jZtyh39q6QflrjdJCXah5lrnOLi9KB6a5k5aAHXMXjoMnxlzUkCNfWLQ=="
|
"integrity": "sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw=="
|
||||||
},
|
},
|
||||||
"node_modules/@vue/vue-loader-v15": {
|
"node_modules/@vue/vue-loader-v15": {
|
||||||
"name": "vue-loader",
|
"name": "vue-loader",
|
||||||
@@ -3248,9 +3248,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/axios": {
|
"node_modules/axios": {
|
||||||
"version": "1.5.1",
|
"version": "1.6.2",
|
||||||
"resolved": "https://registry.npmmirror.com/axios/-/axios-1.5.1.tgz",
|
"resolved": "https://registry.npmmirror.com/axios/-/axios-1.6.2.tgz",
|
||||||
"integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==",
|
"integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"follow-redirects": "^1.15.0",
|
"follow-redirects": "^1.15.0",
|
||||||
@@ -4962,9 +4962,9 @@
|
|||||||
"integrity": "sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA=="
|
"integrity": "sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA=="
|
||||||
},
|
},
|
||||||
"node_modules/element-plus": {
|
"node_modules/element-plus": {
|
||||||
"version": "2.4.1",
|
"version": "2.4.2",
|
||||||
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.4.1.tgz",
|
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.4.2.tgz",
|
||||||
"integrity": "sha512-t7nl+vQlkBKVk1Ag6AufSDyFV8YIXxTFsaya4Nz/0tiRlcz65WPN4WMFeNURuFJleu1HLNtP4YyQKMuS7El8uA==",
|
"integrity": "sha512-E/HwXX7JF1LPvQSjs0fZ8WblIoc0quoXsRXQZiL7QDq7xJdNGSUaXtdk7xiEv7axPmLfEFtxE5du9fFspDrmJw==",
|
||||||
"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",
|
||||||
@@ -6777,9 +6777,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-config-standard-with-typescript": {
|
"node_modules/eslint-config-standard-with-typescript": {
|
||||||
"version": "39.1.1",
|
"version": "40.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-39.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-40.0.0.tgz",
|
||||||
"integrity": "sha512-t6B5Ep8E4I18uuoYeYxINyqcXb2UbC0SOOTxRtBSt2JUs+EzeXbfe2oaiPs71AIdnoWhXDO2fYOHz8df3kV84A==",
|
"integrity": "sha512-GXUJcwIXiTQaS3H4etv8a1lejVVdZYaxZNz3g7vt6GoJosQqMTurbmSC4FVGyHiGT/d1TjFr3+47A3xsHhsG+Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/parser": "^6.4.0",
|
"@typescript-eslint/parser": "^6.4.0",
|
||||||
@@ -7060,9 +7060,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-vue": {
|
"node_modules/eslint-plugin-vue": {
|
||||||
"version": "9.17.0",
|
"version": "9.18.1",
|
||||||
"resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz",
|
"resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.18.1.tgz",
|
||||||
"integrity": "sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==",
|
"integrity": "sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.4.0",
|
"@eslint-community/eslint-utils": "^4.4.0",
|
||||||
@@ -12813,9 +12813,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/sass": {
|
"node_modules/sass": {
|
||||||
"version": "1.69.4",
|
"version": "1.69.5",
|
||||||
"resolved": "https://registry.npmmirror.com/sass/-/sass-1.69.4.tgz",
|
"resolved": "https://registry.npmmirror.com/sass/-/sass-1.69.5.tgz",
|
||||||
"integrity": "sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==",
|
"integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==",
|
||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chokidar": ">=3.0.0 <4.0.0",
|
"chokidar": ">=3.0.0 <4.0.0",
|
||||||
@@ -14412,15 +14412,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/vue": {
|
"node_modules/vue": {
|
||||||
"version": "3.3.6",
|
"version": "3.3.8",
|
||||||
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.6.tgz",
|
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.8.tgz",
|
||||||
"integrity": "sha512-jJIDETeWJnoY+gfn4ZtMPMS5KtbP4ax+CT4dcQFhTnWEk8xMupFyQ0JxL28nvT/M4+p4a0ptxaV2WY0LiIxvRg==",
|
"integrity": "sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/compiler-dom": "3.3.6",
|
"@vue/compiler-dom": "3.3.8",
|
||||||
"@vue/compiler-sfc": "3.3.6",
|
"@vue/compiler-sfc": "3.3.8",
|
||||||
"@vue/runtime-dom": "3.3.6",
|
"@vue/runtime-dom": "3.3.8",
|
||||||
"@vue/server-renderer": "3.3.6",
|
"@vue/server-renderer": "3.3.8",
|
||||||
"@vue/shared": "3.3.6"
|
"@vue/shared": "3.3.8"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"typescript": "*"
|
"typescript": "*"
|
||||||
|
@@ -11,28 +11,28 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@element-plus/icons-vue": "^2.1.0",
|
"@element-plus/icons-vue": "^2.1.0",
|
||||||
"echarts": "^5.4.3",
|
"echarts": "^5.4.3",
|
||||||
"element-plus": "^2.4.1",
|
"element-plus": "^2.4.2",
|
||||||
"mitt": "^3.0.1",
|
"mitt": "^3.0.1",
|
||||||
"moment": "^2.29.4",
|
"moment": "^2.29.4",
|
||||||
"sass-loader": "^13.3.2",
|
"sass-loader": "^13.3.2",
|
||||||
"vue": "^3.3.6",
|
"vue": "^3.3.8",
|
||||||
"vue-router": "^4.2.5",
|
"vue-router": "^4.2.5",
|
||||||
"vuex": "^4.1.0"
|
"vuex": "^4.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/eslint-parser": "^7.22.15",
|
"@babel/eslint-parser": "^7.23.3",
|
||||||
"@rushstack/eslint-patch": "^1.5.1",
|
"@rushstack/eslint-patch": "^1.5.1",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.8.0",
|
"@typescript-eslint/eslint-plugin": "^6.11.0",
|
||||||
"@vitejs/plugin-vue": "^4.4.0",
|
"@vitejs/plugin-vue": "^4.5.0",
|
||||||
"@vue/cli-plugin-eslint": "^5.0.8",
|
"@vue/cli-plugin-eslint": "^5.0.8",
|
||||||
"@vue/eslint-config-typescript": "^12.0.0",
|
"@vue/eslint-config-typescript": "^12.0.0",
|
||||||
"axios": "^1.5.1",
|
"axios": "^1.6.2",
|
||||||
"babel": "^6.23.0",
|
"babel": "^6.23.0",
|
||||||
"eslint-config-recommended": "^4.1.0",
|
"eslint-config-recommended": "^4.1.0",
|
||||||
"eslint-config-standard-with-typescript": "^39.1.1",
|
"eslint-config-standard-with-typescript": "^40.0.0",
|
||||||
"eslint-plugin-vue": "^9.17.0",
|
"eslint-plugin-vue": "^9.18.1",
|
||||||
"node-sass": "^9.0.0",
|
"node-sass": "^9.0.0",
|
||||||
"sass": "^1.69.4",
|
"sass": "^1.69.5",
|
||||||
"style-loader": "^3.3.3",
|
"style-loader": "^3.3.3",
|
||||||
"ts-node": "^10.9.1",
|
"ts-node": "^10.9.1",
|
||||||
"vue-eslint-parser": "^9.3.2"
|
"vue-eslint-parser": "^9.3.2"
|
||||||
|
@@ -2,18 +2,28 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-02-28 19:25:30
|
* @Date: 2023-02-28 19:25:30
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @FilePath: /task_schedule/src/assets/css/public/global.scss
|
* @FilePath: /task_schedule/src/assets/css/public/variables.scss
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// color
|
// color
|
||||||
|
/*
|
||||||
$color-bg-01: #fecb96;
|
$color-bg-01: #fecb96;
|
||||||
$color-bg-02: #f7954e;
|
$color-bg-02: #f7954e;
|
||||||
$color-bg-03: #f27620;
|
$color-bg-03: #f27620;
|
||||||
$color-bg-04: #da3703;
|
$color-bg-04: #da3703;
|
||||||
$color-bg-05: #ba1800;
|
$color-bg-05: #ba1800;
|
||||||
|
*/
|
||||||
|
|
||||||
|
$color-bg-01: #00b2f8;
|
||||||
|
$color-bg-02: #00b0fb;
|
||||||
|
$color-bg-03: #0279ea;
|
||||||
|
$color-bg-04: #046ed6;
|
||||||
|
$color-bg-05: #033eb6;
|
||||||
|
|
||||||
|
$color-title-font: #046ed6;
|
||||||
|
|
||||||
$color-charts-bg: #ffffff9f;
|
$color-charts-bg: #ffffff9f;
|
||||||
$color-honorlist-bg: rgba(255, 255, 255, 0.3);
|
$color-honorlist-bg: rgba(255, 255, 255, 0.3);
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
<el-progress
|
<el-progress
|
||||||
type="circle"
|
type="circle"
|
||||||
:percentage="ui.percentage"
|
:percentage="ui.percentage"
|
||||||
|
status="success"
|
||||||
>
|
>
|
||||||
<template #default>
|
<template #default>
|
||||||
<span class="percentage-label">{{ ui.indicator }}</span>
|
<span class="percentage-label">{{ ui.indicator }}</span>
|
||||||
|
@@ -15,10 +15,13 @@
|
|||||||
alt=""
|
alt=""
|
||||||
>
|
>
|
||||||
<div class="title-wrapper">
|
<div class="title-wrapper">
|
||||||
<span>"消8灭70"突围战</span>
|
<span>“消 8 灭 6 突围战”</span>
|
||||||
<span>{{ props.month }}月入营坐席</span>
|
<span>指标落后入营坐席</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="telsaler-list-wrapper">
|
||||||
|
<span>开发中……</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -46,6 +49,8 @@ export default {
|
|||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.dishonorlist-wrapper {
|
.dishonorlist-wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
height: 240px;
|
height: 240px;
|
||||||
width: 360px;
|
width: 360px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
@@ -55,10 +60,16 @@ export default {
|
|||||||
|
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
|
||||||
|
>*+* {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.banner-wrapper {
|
.banner-wrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
|
height: 65px;
|
||||||
|
flex-grow: 0;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
// width: 70px;
|
// width: 70px;
|
||||||
@@ -80,4 +91,24 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.telsaler-list-wrapper {
|
||||||
|
flex-grow: 1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
color: rgb(101, 140, 194);
|
||||||
|
margin-top: 0px;
|
||||||
|
|
||||||
|
font: {
|
||||||
|
size: 2rem;
|
||||||
|
family: "FZ-ZHUOHEI";
|
||||||
|
weight: 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -9,39 +9,18 @@
|
|||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div class="honorlist-wrapper">
|
<div class="honorlist-wrapper">
|
||||||
<span class="title">“90俱乐部”{{ $props.month }}月入围坐席</span>
|
<div class="banner-wrapper">
|
||||||
<div class="reward-wrapper">
|
<img
|
||||||
<div class="leading-reward-wrapper">
|
src="@/assets/img/ranking/medal.png"
|
||||||
<div class="banner-wrapper">
|
alt=""
|
||||||
<img
|
>
|
||||||
src="@/assets/img/ranking/medal.png"
|
<div class="title-wrapper">
|
||||||
alt="领跑奖"
|
<span>“90俱乐部”标杆坐席</span>
|
||||||
>
|
|
||||||
<span>领跑奖</span>
|
|
||||||
</div>
|
|
||||||
<div class="gainer-wrapper">
|
|
||||||
<span
|
|
||||||
v-for="gainer in ui.leadingReward"
|
|
||||||
:key="gainer"
|
|
||||||
>{{ gainer }}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="advance-reward-wrapper">
|
|
||||||
<div class="banner-wrapper">
|
|
||||||
<img
|
|
||||||
src="@/assets/img/ranking/copper_medal.png"
|
|
||||||
alt="飞跃奖"
|
|
||||||
>
|
|
||||||
<span>飞跃奖</span>
|
|
||||||
</div>
|
|
||||||
<div class="gainer-wrapper">
|
|
||||||
<span
|
|
||||||
v-for="gainer in ui.advanceReward"
|
|
||||||
:key="gainer"
|
|
||||||
>{{ gainer }}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="telsaler-list-wrapper">
|
||||||
|
<span>开发中……</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -81,6 +60,8 @@ export default {
|
|||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.honorlist-wrapper {
|
.honorlist-wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
height: 240px;
|
height: 240px;
|
||||||
width: 360px;
|
width: 360px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
@@ -93,79 +74,54 @@ export default {
|
|||||||
>*+* {
|
>*+* {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.title {
|
.banner-wrapper {
|
||||||
display: block;
|
display: flex;
|
||||||
text-align: center;
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 65px;
|
||||||
|
flex-grow: 0;
|
||||||
|
|
||||||
font: {
|
img {
|
||||||
family: "FZ-ZHUOHEI";
|
width: 65px;
|
||||||
size: 1.4rem;
|
height: 65px;
|
||||||
}
|
|
||||||
|
|
||||||
color: goldenrod;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.reward-wrapper {
|
.title-wrapper {
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: stretch;
|
|
||||||
|
|
||||||
>*+* {
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.leading-reward-wrapper {
|
|
||||||
width: 165px;
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.advance-reward-wrapper {
|
|
||||||
width: 165px;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
span {
|
||||||
display: block;
|
display: block;
|
||||||
|
|
||||||
margin-top: 5px;
|
|
||||||
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: #fff;
|
color: rgb(245, 178, 11);
|
||||||
|
margin-top: 0px;
|
||||||
|
|
||||||
font: {
|
font: {
|
||||||
size: 2rem;
|
size: 1.65rem;
|
||||||
family: "FZ-ZHUOHEI";
|
family: "FZ-ZHUOHEI";
|
||||||
weight: 100;
|
weight: 100;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.banner-wrapper {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
img {
|
|
||||||
width: 30px;
|
|
||||||
height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
display: inline-block;
|
|
||||||
text-align: center;
|
|
||||||
color: #fff;
|
|
||||||
margin-top: 0px;
|
|
||||||
|
|
||||||
font: {
|
|
||||||
size: 1.5rem;
|
|
||||||
family: "FZ-ZHUOHEI";
|
|
||||||
weight: 100;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.telsaler-list-wrapper {
|
||||||
|
flex-grow: 1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
color: rgb(101, 140, 194);
|
||||||
|
margin-top: 0px;
|
||||||
|
|
||||||
|
font: {
|
||||||
|
size: 2rem;
|
||||||
|
family: "FZ-ZHUOHEI";
|
||||||
|
weight: 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -42,7 +42,7 @@
|
|||||||
align="center"
|
align="center"
|
||||||
>
|
>
|
||||||
<template #default="ranking">
|
<template #default="ranking">
|
||||||
<span class="rankinglist-index">{{ ranking.row.appraiseValue }}</span>
|
<span class="rankinglist-index">{{ ranking.row.appraiseValue }}%</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
@@ -16,6 +16,9 @@ interface BIReportType
|
|||||||
reportTypeName: string;
|
reportTypeName: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入报表的请求对象
|
||||||
|
*/
|
||||||
interface ImportBIReportRequest
|
interface ImportBIReportRequest
|
||||||
{
|
{
|
||||||
filePath: string,
|
filePath: string,
|
||||||
@@ -24,21 +27,127 @@ interface ImportBIReportRequest
|
|||||||
sheetIndex: number,
|
sheetIndex: number,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入报表的相应对象
|
||||||
|
*/
|
||||||
interface ImportBIReportResponse
|
interface ImportBIReportResponse
|
||||||
|
{
|
||||||
|
success: boolean, // 请求成功标志
|
||||||
|
message: string, // 请求结果说明
|
||||||
|
importedCount: number, // 导入记录的数量
|
||||||
|
}
|
||||||
|
|
||||||
|
// BI坐席渗透率报表记录
|
||||||
|
interface BITelsalerAttachingRateRecord
|
||||||
|
{
|
||||||
|
departmentName: string; // 部门
|
||||||
|
telsalerName: string; // 经办人
|
||||||
|
motoPremium: number; // 车险保费
|
||||||
|
nomotoPremium: number; // 非车险保费
|
||||||
|
motoPremiumProportion: number; // 车险保费占比
|
||||||
|
attachingRate: number; // 保费渗透率
|
||||||
|
attachingRateChange: number; // 渗透率环比上月
|
||||||
|
customerHandleRate: number; // 当月客户渗透率
|
||||||
|
customerHandleRateChange: number; // 客户渗透率环比上月
|
||||||
|
noMotoPremiumPerCustomer: number; // 当月车非客均保费
|
||||||
|
noMotoPremiumPerCustomerChange: number; // 客均保费环比上月
|
||||||
|
}
|
||||||
|
|
||||||
|
interface QueryBITelsalerAttachingRateReportResponse
|
||||||
{
|
{
|
||||||
success: boolean,
|
success: boolean,
|
||||||
message: string,
|
message: string,
|
||||||
importedCount: number,
|
records: BITelsalerAttachingRateRecord[];
|
||||||
}
|
}
|
||||||
|
|
||||||
type ImportBIReportResponseHandler = ( response: ImportBIReportResponse, error?: any ) => void;
|
/**
|
||||||
|
* BI坐席续保率报表记录
|
||||||
|
*/
|
||||||
|
interface BITelsalerRenewalRateRecord
|
||||||
|
{
|
||||||
|
责任部门: string;
|
||||||
|
责任人: string;
|
||||||
|
机构目标值: number;
|
||||||
|
到期数全月: number;
|
||||||
|
序时到期数占比: number;
|
||||||
|
个车续保率序时: number;
|
||||||
|
个车续保率全月: number;
|
||||||
|
环比昨日: number;
|
||||||
|
环比上月: number;
|
||||||
|
平均提前签单天数: number;
|
||||||
|
环比: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface QueryBITelsalerRenewalRateReportResponse
|
||||||
|
{
|
||||||
|
success: boolean;
|
||||||
|
message: string;
|
||||||
|
records: BITelsalerRenewalRateRecord[];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 机构 ***/
|
||||||
|
// 机构渗透率
|
||||||
|
/**
|
||||||
|
* 机构渗漏率报表记录
|
||||||
|
*/
|
||||||
|
interface BIDepartmentAttachingRateRecord
|
||||||
|
{
|
||||||
|
departmentName: string;
|
||||||
|
departmentObject: number;
|
||||||
|
objectGap: number;
|
||||||
|
motoPremium: number;
|
||||||
|
motoPremiumProPortion: number;
|
||||||
|
nomotoPremium: number;
|
||||||
|
attachingRate: number;
|
||||||
|
attachingRateChange: number;
|
||||||
|
motoInsuranceCustomerCount: number;
|
||||||
|
customerHandleRate: number;
|
||||||
|
customerHandleRateChange: number;
|
||||||
|
premiumPerCustomer: number;
|
||||||
|
premiumPerCustomerChange: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface QueryBIDepartmentAttachingRateResponse
|
||||||
|
{
|
||||||
|
success: boolean;
|
||||||
|
message: string;
|
||||||
|
records: BIDepartmentAttachingRateRecord[];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 机构续保率
|
||||||
|
interface BIDepartmentRenewalRateRecord
|
||||||
|
{
|
||||||
|
责任部门: string;
|
||||||
|
机构目标值: number;
|
||||||
|
到期数全月: number;
|
||||||
|
序时到期数占比: number;
|
||||||
|
个车续保率序时: number;
|
||||||
|
个车续保率全月: number;
|
||||||
|
环比昨日: number;
|
||||||
|
环比上月: number;
|
||||||
|
平均提前签单天数: number;
|
||||||
|
环比: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface QueryBIDepartmentRenewalRateResponse
|
||||||
|
{
|
||||||
|
success: boolean;
|
||||||
|
message: string;
|
||||||
|
records: BIDepartmentRenewalRateRecord[];
|
||||||
|
}
|
||||||
|
|
||||||
|
type ImportBIReportResponseHandler = ( response: ImportBIReportResponse, error: any ) => void;
|
||||||
|
type QueryBITelsalerAttachingRateDataHandler = ( response: QueryBITelsalerAttachingRateReportResponse, error: any ) => void;
|
||||||
|
type QueryBITelsalerRenewalRateDataHandler = ( response: QueryBITelsalerRenewalRateReportResponse, error: any ) => void;
|
||||||
|
type QueryBIDepartmentAttachingRateDataHandler = ( response: QueryBIDepartmentAttachingRateResponse, error: any ) => void;
|
||||||
|
type QueryBIDepartmentRenewalRateDataHandler = ( response: QueryBIDepartmentRenewalRateResponse, error: any ) => void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* 请求导入BI报表
|
||||||
* @param request 请求参数
|
* @param request 请求参数
|
||||||
* @param handler 调用者提供的请求结果处理函数
|
* @param handler 调用者提供的请求结果处理函数
|
||||||
*/
|
*/
|
||||||
function importBIReport( request: ImportBIReportRequest, handler: any ): void
|
function importBIReport( request: ImportBIReportRequest, handler: ImportBIReportResponseHandler ): void
|
||||||
{
|
{
|
||||||
const importResponse: ImportBIReportResponse = {
|
const importResponse: ImportBIReportResponse = {
|
||||||
success: false,
|
success: false,
|
||||||
@@ -56,7 +165,7 @@ function importBIReport( request: ImportBIReportRequest, handler: any ): void
|
|||||||
const data: ImportBIReportResponse = response.data;
|
const data: ImportBIReportResponse = response.data;
|
||||||
|
|
||||||
importResponse.success = data.success ?? false;
|
importResponse.success = data.success ?? false;
|
||||||
importResponse.message = data.message ?? "";
|
importResponse.message = data.message ?? "请求完成,但服务器未返回请求结果消息!";
|
||||||
importResponse.importedCount = data.importedCount ?? 0;
|
importResponse.importedCount = data.importedCount ?? 0;
|
||||||
|
|
||||||
handler( importResponse, null );
|
handler( importResponse, null );
|
||||||
@@ -70,10 +179,178 @@ function importBIReport( request: ImportBIReportRequest, handler: any ): void
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求BI坐席渗透率数据
|
||||||
|
* @param handler 处理请求结果的handler函数。
|
||||||
|
*/
|
||||||
|
function queryBITelsalerAttachingRateData( handler: QueryBITelsalerAttachingRateDataHandler ): void
|
||||||
|
{
|
||||||
|
const queryResponse: QueryBITelsalerAttachingRateReportResponse = {
|
||||||
|
success: false,
|
||||||
|
message: "",
|
||||||
|
records: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
instance.request({
|
||||||
|
url: API_URL.URL_BI_TELSALER_ATTACHINGRATE,
|
||||||
|
method: "post",
|
||||||
|
})
|
||||||
|
.then(( response: AxiosResponse<any, any> ): void =>
|
||||||
|
{
|
||||||
|
const data = response.data ?? {};
|
||||||
|
|
||||||
|
queryResponse.success = data.success ?? false;
|
||||||
|
queryResponse.message = data.message ?? "";
|
||||||
|
queryResponse.records = data.records ?? [];
|
||||||
|
|
||||||
|
console.log( "请求BI坐席渗透率数据", queryResponse );
|
||||||
|
handler( queryResponse, null );
|
||||||
|
})
|
||||||
|
.catch(( error ): void =>
|
||||||
|
{
|
||||||
|
queryResponse.message = "请求BI坐席渗漏率报表数据时出现错误,请查看控制台消息!";
|
||||||
|
queryResponse.success = false;
|
||||||
|
|
||||||
|
console.log( error );
|
||||||
|
|
||||||
|
handler( queryResponse, error );
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求BI坐席续保率数据
|
||||||
|
* @param handler 调用者提供的处理请求结果的函数。
|
||||||
|
*/
|
||||||
|
function queryBITelsalerRenewalData( handler: QueryBITelsalerRenewalRateDataHandler ): void
|
||||||
|
{
|
||||||
|
const queryResponse: QueryBITelsalerRenewalRateReportResponse = {
|
||||||
|
success: false,
|
||||||
|
message: "",
|
||||||
|
records: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
instance.request({
|
||||||
|
url: API_URL.URL_BI_TELSALER_RENEWALRATE,
|
||||||
|
method: "post",
|
||||||
|
})
|
||||||
|
.then(( response: AxiosResponse<any, any> ): void =>
|
||||||
|
{
|
||||||
|
const data = response.data ?? {};
|
||||||
|
|
||||||
|
queryResponse.success = data.success ?? false;
|
||||||
|
queryResponse.message = data.message ?? "";
|
||||||
|
queryResponse.records = data.records ?? [];
|
||||||
|
|
||||||
|
console.log( "请求BI坐席续保率数据", queryResponse );
|
||||||
|
handler( queryResponse, null );
|
||||||
|
})
|
||||||
|
.catch(( error: any ): void =>
|
||||||
|
{
|
||||||
|
queryResponse.success = false;
|
||||||
|
queryResponse.message = "查询BI坐席续保率数据失败,请查看控制台!";
|
||||||
|
|
||||||
|
console.log( error );
|
||||||
|
|
||||||
|
handler( queryResponse, error );
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求机构渗透率数据
|
||||||
|
* @param handler 调用者提供的处理请求结果的函数。
|
||||||
|
*/
|
||||||
|
function queryDepartmentAttachingRateData( handler: QueryBIDepartmentAttachingRateDataHandler ): void
|
||||||
|
{
|
||||||
|
const queryResponse: QueryBIDepartmentAttachingRateResponse = {
|
||||||
|
success: false,
|
||||||
|
message: "",
|
||||||
|
records: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
instance.request({
|
||||||
|
url: API_URL.URL_BI_DEPARTMENT_ATTACHINGRATE,
|
||||||
|
method: "post",
|
||||||
|
})
|
||||||
|
.then(( response: AxiosResponse<any, any> ): void =>
|
||||||
|
{
|
||||||
|
const data = response.data ?? {};
|
||||||
|
|
||||||
|
queryResponse.success = data.success ?? false;
|
||||||
|
queryResponse.message = data.message ?? "请求完成,但结果未知!";
|
||||||
|
queryResponse.records = data.records ?? [];
|
||||||
|
|
||||||
|
handler( queryResponse, null );
|
||||||
|
})
|
||||||
|
.catch(( error: any ): void =>
|
||||||
|
{
|
||||||
|
queryResponse.success = false;
|
||||||
|
queryResponse.message = "查询BI机构续渗透失败,请查看控制台!";
|
||||||
|
queryResponse.records = [];
|
||||||
|
|
||||||
|
console.log( "查询BI机构渗透率失败:", error );
|
||||||
|
|
||||||
|
handler( queryResponse, error );
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求BI机构续保率数据
|
||||||
|
* @param handler 调用者提供的处理请求结果的函数。
|
||||||
|
*/
|
||||||
|
function queryDepartmentRenewalRateData( handler: QueryBIDepartmentRenewalRateDataHandler ): void
|
||||||
|
{
|
||||||
|
const queryResponse: QueryBIDepartmentRenewalRateResponse = {
|
||||||
|
success: false,
|
||||||
|
message: "",
|
||||||
|
records: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
instance.request({
|
||||||
|
url: API_URL.URL_BI_DEPARTMENT_RENEWALRATE,
|
||||||
|
method: "post",
|
||||||
|
})
|
||||||
|
.then(( response: AxiosResponse<any, any> ): void =>
|
||||||
|
{
|
||||||
|
const data = response.data ?? {};
|
||||||
|
|
||||||
|
queryResponse.success = data.success ?? false;
|
||||||
|
queryResponse.message = data.message ?? "请求完成,但结果未知!";
|
||||||
|
queryResponse.records = data.records ?? [];
|
||||||
|
|
||||||
|
handler( queryResponse, null );
|
||||||
|
})
|
||||||
|
.catch(( error: any ): void =>
|
||||||
|
{
|
||||||
|
queryResponse.success = false;
|
||||||
|
queryResponse.message = "查询BI机构续保率失败,请查看控制台!";
|
||||||
|
queryResponse.records = [];
|
||||||
|
|
||||||
|
console.log( "查询BI机构续保率失败:", error );
|
||||||
|
|
||||||
|
handler( queryResponse, error );
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
type BIReportType,
|
type BIReportType,
|
||||||
type ImportBIReportRequest,
|
type ImportBIReportRequest,
|
||||||
type ImportBIReportResponse,
|
type ImportBIReportResponse,
|
||||||
type ImportBIReportResponseHandler,
|
type ImportBIReportResponseHandler,
|
||||||
importBIReport
|
type BITelsalerAttachingRateRecord,
|
||||||
|
type QueryBITelsalerAttachingRateReportResponse,
|
||||||
|
type QueryBITelsalerAttachingRateDataHandler,
|
||||||
|
type QueryBITelsalerRenewalRateDataHandler,
|
||||||
|
type BITelsalerRenewalRateRecord,
|
||||||
|
type QueryBITelsalerRenewalRateReportResponse,
|
||||||
|
type BIDepartmentAttachingRateRecord,
|
||||||
|
type QueryBIDepartmentAttachingRateResponse,
|
||||||
|
type QueryBIDepartmentAttachingRateDataHandler,
|
||||||
|
type BIDepartmentRenewalRateRecord,
|
||||||
|
type QueryBIDepartmentRenewalRateResponse,
|
||||||
|
type QueryBIDepartmentRenewalRateDataHandler,
|
||||||
|
importBIReport,
|
||||||
|
queryBITelsalerAttachingRateData,
|
||||||
|
queryBITelsalerRenewalData,
|
||||||
|
queryDepartmentAttachingRateData,
|
||||||
|
queryDepartmentRenewalRateData
|
||||||
};
|
};
|
||||||
|
@@ -25,7 +25,7 @@ interface LoginInfo
|
|||||||
|
|
||||||
interface LoginCallerInfo
|
interface LoginCallerInfo
|
||||||
{
|
{
|
||||||
telsaler_code: string;
|
telsaler: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface RequestResult
|
interface RequestResult
|
||||||
|
@@ -8,48 +8,39 @@
|
|||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
const API_URL = {
|
const API_URL = {
|
||||||
// URL_LOGIN: import.meta.env.VITE_URL_LOGIN,
|
// 登录
|
||||||
// URL_LOGIN: "http://222.76.244.118:11101/admin-system/account/p13_account_check",
|
URL_LOGIN: import.meta.env.VITE_URL_LOGIN,
|
||||||
URL_LOGIN: "http://10.39.0.41:8081/admin-system/account/p13_account_check",
|
URL_LOGIN_CALLER: import.meta.env.VITE_URL_LOGIN_CALLER,
|
||||||
|
|
||||||
// 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://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: "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",
|
|
||||||
|
|
||||||
|
// 机构业绩
|
||||||
|
URL_DEPARTMENT_ARCHIEVEMENT: import.meta.env.VITE_URL_DEPARTMENT_ARCHIEVEMENT,
|
||||||
// 坐席业绩查询
|
// 坐席业绩查询
|
||||||
// URL_CALLER_ARCHIEVEMENT: "http://222.76.244.118:11101/desktop_archievement_backend/archievement/query_caller_archievement.do",
|
URL_CALLER_ARCHIEVEMENT: import.meta.env.VITE_URL_CALLER_ARCHIEVEMENT,
|
||||||
URL_CALLER_ARCHIEVEMENT: "http://10.39.0.41:8081/desktop_archievement_backend/archievement/query_caller_archievement.do",
|
|
||||||
|
// 排行榜
|
||||||
|
URL_RANKINGLIST: import.meta.env.VITE_URL_RANKINGLIST,
|
||||||
|
|
||||||
/** 奖项相关 **/
|
/** 奖项相关 **/
|
||||||
// 查询奖励项目
|
// 查询奖励项目
|
||||||
// URL_RWARD_PROJECTS: "http://222.76.244.118:11101/desktop_archievement_backend/rewards/query_reward_projects.do",
|
URL_RWARD_PROJECTS: import.meta.env.VITE_URL_RWARD_PROJECTS,
|
||||||
URL_RWARD_PROJECTS: "http://10.39.0.41:8081/desktop_archievement_backend/rewards/query_reward_projects.do",
|
|
||||||
// 查询获奖人员
|
// 查询获奖人员
|
||||||
URL_REWARD_GAINERS: "http://10.39.0.41:8081/desktop_archievement_backend/rewards/query_reward_gainers.do",
|
URL_REWARD_GAINERS: import.meta.env.VITE_URL_REWARD_GAINERS,
|
||||||
// URL_REWARD_GAINERS: "http://222.76.244.118:11101/desktop_archievement_backend/rewards/query_reward_gainers.do",
|
|
||||||
// 添加获奖人员
|
// 添加获奖人员
|
||||||
URL_ADD_REWARD_TELSALER: "http://10.39.0.41:8081/desktop_archievement_backend/rewards/add_telsaler_reward.do",
|
URL_ADD_REWARD_TELSALER: import.meta.env.VITE_URL_ADD_REWARD_TELSALER,
|
||||||
// URL_ADD_REWARD_TELSALER: "http://222.76.244.118:11101/desktop_archievement_backend/rewards/add_telsaler_reward.do",
|
|
||||||
// 更新获奖人员
|
// 更新获奖人员
|
||||||
URL_UPDATE_REWARD_TELSALER: "http://10.39.0.41:8081/desktop_archievement_backend/rewards/update_telsaler_reward.do",
|
URL_UPDATE_REWARD_TELSALER: import.meta.env.VITE_URL_UPDATE_REWARD_TELSALER,
|
||||||
// URL_ADD_REWARD_TELSALER: "http://222.76.244.118:11101/desktop_archievement_backend/rewards/update_telsaler_reward.do",
|
|
||||||
// 删除获奖人员
|
// 删除获奖人员
|
||||||
URL_DEL_REWARD_TELSALER: "http://10.39.0.41:8081/desktop_archievement_backend/rewards/delete_telsaler_reward.do",
|
URL_DEL_REWARD_TELSALER: import.meta.env.VITE_URL_DEL_REWARD_TELSALER,
|
||||||
// URL_ADD_REWARD_TELSALER: "http://222.76.244.118:11101/desktop_archievement_backend/rewards/delete_telsaler_reward.do",
|
|
||||||
// 上传文件
|
// 上传文件
|
||||||
URL_UPLOAD_FILE: "http://10.39.0.41:8081/desktop_archievement_backend/file/file-upload.do",
|
URL_UPLOAD_FILE: import.meta.env.VITE_URL_UPLOAD_FILE,
|
||||||
// URL_UPLOAD_FILE: "http://222.76.244.118:11101/desktop_archievement_backend/file/file-upload.do",
|
|
||||||
// 导入报表
|
// 导入报表
|
||||||
URL_IMPORT_REPORT: "http://10.39.0.41:8081/desktop_archievement_backend/import_bi_data/excel.do",
|
URL_IMPORT_REPORT: import.meta.env.VITE_URL_IMPORT_REPORT,
|
||||||
// URL_IMPORT_REPORT: "http://222.76.244.118:11101/desktop_archievement_backend/import_bi_data/excel.do",
|
|
||||||
|
// 请求BI报表数据
|
||||||
|
URL_BI_TELSALER_ATTACHINGRATE: import.meta.env.VITE_URL_BI_TELSALER_ATTACHINGRATE,
|
||||||
|
URL_BI_TELSALER_RENEWALRATE: import.meta.env.VITE_URL_BI_TELSALER_RENEWALRATE,
|
||||||
|
URL_BI_DEPARTMENT_ATTACHINGRATE: import.meta.env.VITE_URL_BI_DEPARTMENT_ATTACHINGRATE,
|
||||||
|
URL_BI_DEPARTMENT_RENEWALRATE: import.meta.env.VITE_URL_BI_DEPARTMENT_RENEWALRATE,
|
||||||
};
|
};
|
||||||
|
|
||||||
export { API_URL };
|
export { API_URL };
|
||||||
|
@@ -170,6 +170,8 @@ function addRewardTelsaler( data: AddRewardTelsalerRequest, handler: any ): void
|
|||||||
message: "",
|
message: "",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
console.log( "URL:", API_URL.URL_ADD_REWARD_TELSALER );
|
||||||
|
|
||||||
instance.request({
|
instance.request({
|
||||||
method: "post",
|
method: "post",
|
||||||
url: API_URL.URL_ADD_REWARD_TELSALER,
|
url: API_URL.URL_ADD_REWARD_TELSALER,
|
||||||
|
@@ -384,7 +384,7 @@ export default {
|
|||||||
size: 90px;
|
size: 90px;
|
||||||
}
|
}
|
||||||
|
|
||||||
color: $color-bg-04;
|
color: $color-title-font;
|
||||||
text-shadow: #feebb1 0px 0px,
|
text-shadow: #feebb1 0px 0px,
|
||||||
#feebb1 5px 0px,
|
#feebb1 5px 0px,
|
||||||
#feebb1 -5px -0px,
|
#feebb1 -5px -0px,
|
||||||
|
@@ -169,7 +169,7 @@ export default {
|
|||||||
{
|
{
|
||||||
// 是坐席
|
// 是坐席
|
||||||
const loginInfo: LoginCallerInfo = {
|
const loginInfo: LoginCallerInfo = {
|
||||||
telsaler_code: ui.account,
|
telsaler: ui.account,
|
||||||
};
|
};
|
||||||
|
|
||||||
// 登录
|
// 登录
|
||||||
|
@@ -9,39 +9,18 @@
|
|||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div class="data_management_wrapper">
|
<div class="data_management_wrapper">
|
||||||
<!-- <div class="telsaler-dataupload-wrapper">
|
|
||||||
<el-upload
|
|
||||||
v-model="ui.fileList"
|
|
||||||
drag
|
|
||||||
action="http://localhost:8080/desktop_archievement_backend/file/file-upload.do"
|
|
||||||
:on-preview="handlePreview"
|
|
||||||
:on-remove="handleRemove"
|
|
||||||
:on-success="handleUploadSuccess"
|
|
||||||
:before-remove="beforeRemove"
|
|
||||||
:limit="1"
|
|
||||||
:on-exceed="handleExceed"
|
|
||||||
:data="ui.uploadData"
|
|
||||||
name="files"
|
|
||||||
>
|
|
||||||
<el-button type="primary">
|
|
||||||
上传
|
|
||||||
</el-button>
|
|
||||||
<template #tip>
|
|
||||||
<div class="el-upload__tip">
|
|
||||||
文件不能大于100MB。
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-upload>
|
|
||||||
</div> -->
|
|
||||||
<el-tabs>
|
<el-tabs>
|
||||||
<el-tab-pane label="坐席车非渗透率">
|
<el-tab-pane label="坐席车非渗透率">
|
||||||
<TelsalerAttachingRateView />
|
<TelsalerAttachingRateView />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="坐席续保率">
|
<el-tab-pane label="坐席续保率">
|
||||||
坐席车非渗透率
|
<TelsalerRenewalRateView />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="机构">
|
<el-tab-pane label="机构渗透率">
|
||||||
坐席车非渗透率
|
<DepartmentAttachingRateView />
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="机构续保率">
|
||||||
|
<DepartmentRenewalRateView />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
@@ -50,9 +29,13 @@
|
|||||||
import { ref, reactive } from "vue";
|
import { ref, reactive } from "vue";
|
||||||
import { ElMessage, ElMessageBox, type UploadFile, type UploadFiles, type UploadProps, type UploadUserFile } from "element-plus";
|
import { ElMessage, ElMessageBox, type UploadFile, type UploadFiles, type UploadProps, type UploadUserFile } from "element-plus";
|
||||||
import TelsalerAttachingRateView from "@/views/data/bi/TelsalerAttachingRateView.vue";
|
import TelsalerAttachingRateView from "@/views/data/bi/TelsalerAttachingRateView.vue";
|
||||||
|
import TelsalerRenewalRateView from "@/views/data/bi/TelsalerRenewalRateView.vue";
|
||||||
|
import DepartmentRenewalRateView from "@/views/data/bi/DepartmentRenewalRateView.vue";
|
||||||
|
import DepartmentAttachingRateView from "@/views/data/bi/DepartmentAttachingRateView.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "DataManagement",
|
name: "DataManagement",
|
||||||
components: { TelsalerAttachingRateView, },
|
components: { TelsalerAttachingRateView, TelsalerRenewalRateView, DepartmentRenewalRateView, DepartmentAttachingRateView, },
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
const ui = reactive({
|
const ui = reactive({
|
||||||
|
@@ -46,7 +46,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<el-upload
|
<el-upload
|
||||||
drag
|
drag
|
||||||
action="http://222.76.244.118:11101/desktop_archievement_backend/file/file-upload.do"
|
:action="ui.urlFileUpload"
|
||||||
name="files"
|
name="files"
|
||||||
:show-file-list="false"
|
:show-file-list="false"
|
||||||
:data="ui.uploadParameters"
|
:data="ui.uploadParameters"
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { reactive, ref } from "vue";
|
import { reactive, onBeforeMount } from "vue";
|
||||||
import {
|
import {
|
||||||
type BIReportType,
|
type BIReportType,
|
||||||
type ImportBIReportRequest,
|
type ImportBIReportRequest,
|
||||||
@@ -70,6 +70,7 @@ import {
|
|||||||
type ImportBIReportResponseHandler,
|
type ImportBIReportResponseHandler,
|
||||||
importBIReport
|
importBIReport
|
||||||
} from "@/utils/BIReport.js";
|
} from "@/utils/BIReport.js";
|
||||||
|
import { API_URL } from "@/utils/api/config.js";
|
||||||
import { type FileUploadResponse } from "@/utils/fileUpload.js";
|
import { type FileUploadResponse } from "@/utils/fileUpload.js";
|
||||||
// import { UploadFilled } from "@element-plus/icons-vue";
|
// import { UploadFilled } from "@element-plus/icons-vue";
|
||||||
import { type UploadProps, type UploadFile, type UploadFiles, ElMessage, ElMessageBox } from "element-plus";
|
import { type UploadProps, type UploadFile, type UploadFiles, ElMessage, ElMessageBox } from "element-plus";
|
||||||
@@ -84,6 +85,7 @@ interface UI
|
|||||||
hasCaption: boolean,
|
hasCaption: boolean,
|
||||||
uploadParameters: any,
|
uploadParameters: any,
|
||||||
showFileList: boolean,
|
showFileList: boolean,
|
||||||
|
urlFileUpload: string,
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -92,10 +94,10 @@ export default {
|
|||||||
reportType: {
|
reportType: {
|
||||||
type: Number,
|
type: Number,
|
||||||
require: true,
|
require: true,
|
||||||
default: (): number => -9999,
|
default: (): number => 0,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
setup()
|
setup( props )
|
||||||
{
|
{
|
||||||
const ui: UI = reactive({
|
const ui: UI = reactive({
|
||||||
showUI: false,
|
showUI: false,
|
||||||
@@ -118,12 +120,13 @@ export default {
|
|||||||
reportTypeName: "当月个车续保率跟踪报表【机构】",
|
reportTypeName: "当月个车续保率跟踪报表【机构】",
|
||||||
},],
|
},],
|
||||||
sheetIndex: 0,
|
sheetIndex: 0,
|
||||||
firstRow: 2,
|
firstRow: 1,
|
||||||
hasCaption: true,
|
hasCaption: true,
|
||||||
uploadParameters: {
|
uploadParameters: {
|
||||||
"task-name": "1234",
|
"task-name": "1234",
|
||||||
},
|
},
|
||||||
showFileList: false,
|
showFileList: false,
|
||||||
|
urlFileUpload: API_URL.URL_UPLOAD_FILE,
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -214,6 +217,11 @@ export default {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
onBeforeMount((): void =>
|
||||||
|
{
|
||||||
|
ui.selectedReportType = props.reportType;
|
||||||
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
ui,
|
ui,
|
||||||
onUploadSuccess,
|
onUploadSuccess,
|
||||||
|
@@ -1,31 +0,0 @@
|
|||||||
<!--
|
|
||||||
* @Author: Kane
|
|
||||||
* @Date: 2023-10-17 14:53:17
|
|
||||||
* @LastEditors: Kane
|
|
||||||
* @FilePath: /task_schedule/src/views/data/bi/DepartmentArchievementView.vue
|
|
||||||
* @Description:
|
|
||||||
*
|
|
||||||
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="wrapper" />
|
|
||||||
</template>
|
|
||||||
<script lang="ts">
|
|
||||||
import { reactive } from "vue";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: "DepartmentArchievementView",
|
|
||||||
setup()
|
|
||||||
{
|
|
||||||
const ui = reactive({
|
|
||||||
showUI: true,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.wrapper {
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
</style>
|
|
@@ -0,0 +1,227 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-10-17 14:53:17
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /task_schedule/src/views/data/bi/DepartmentAttachingRateView.vue
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="wrapper">
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col span="24">
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
icon="upload"
|
||||||
|
@click="showUploadFileDialog"
|
||||||
|
>
|
||||||
|
上传
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="refresh"
|
||||||
|
@click="refresh"
|
||||||
|
>
|
||||||
|
刷新
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-table
|
||||||
|
width="100%"
|
||||||
|
stripe
|
||||||
|
border
|
||||||
|
:data="tableData"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
label="部门"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="department">
|
||||||
|
<span>{{ department.row.departmentName }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="车险保费(万)"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="department">
|
||||||
|
<span>{{ department.row.motoPremium.toFixed(2) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="非车险保费(万)"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="department">
|
||||||
|
<span>{{ department.row.nomotoPremium.toFixed(2) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="渗透率"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="department">
|
||||||
|
<span>{{ department.row.attachingRate.toFixed(2) + "%" }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<div class="pagination_wrapper">
|
||||||
|
<el-pagination
|
||||||
|
v-model="ui.tableCurrentPageIndex"
|
||||||
|
class="pull_left"
|
||||||
|
size="small"
|
||||||
|
background
|
||||||
|
:page-size="ui.tablePageSize"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="0"
|
||||||
|
@current-change="onCurrentPageIndexChange"
|
||||||
|
@size-change="onTablePageSizeChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="upload-dialog-wrapper"
|
||||||
|
>
|
||||||
|
<el-dialog
|
||||||
|
v-model="ui.showUploadDialog"
|
||||||
|
title="上传报表"
|
||||||
|
width="600px"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:close-on-press-escape="false"
|
||||||
|
:show-close="true"
|
||||||
|
>
|
||||||
|
<BiDataUploadView :report-type="2" />
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script lang="ts">
|
||||||
|
import { reactive, computed, onBeforeMount } from "vue";
|
||||||
|
import {
|
||||||
|
type BIDepartmentAttachingRateRecord,
|
||||||
|
type QueryBIDepartmentAttachingRateResponse,
|
||||||
|
type QueryBIDepartmentAttachingRateDataHandler,
|
||||||
|
queryDepartmentAttachingRateData
|
||||||
|
} from "@/utils/BIReport.js";
|
||||||
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
|
import BiDataUploadView from "@/views/data/bi/BiDataUploadView.vue";
|
||||||
|
|
||||||
|
interface UI
|
||||||
|
{
|
||||||
|
showUI: boolean,
|
||||||
|
showUploadDialog: boolean,
|
||||||
|
tablePageSize: number,
|
||||||
|
tableCurrentPageIndex: number,
|
||||||
|
BIDepartmentAttachingRateData: BIDepartmentAttachingRateRecord[],
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "DepartmentAttachingRateView",
|
||||||
|
components: { BiDataUploadView, },
|
||||||
|
setup()
|
||||||
|
{
|
||||||
|
const ui: UI = reactive({
|
||||||
|
showUI: true,
|
||||||
|
showUploadDialog: false,
|
||||||
|
tablePageSize: 10,
|
||||||
|
tableCurrentPageIndex: 1,
|
||||||
|
BIDepartmentAttachingRateData: [],
|
||||||
|
});
|
||||||
|
|
||||||
|
const tableData = computed((): BIDepartmentAttachingRateRecord[] =>
|
||||||
|
{
|
||||||
|
const tableCount = ui.BIDepartmentAttachingRateData.length;
|
||||||
|
const startIndex = ui.tablePageSize * ( ui.tableCurrentPageIndex - 1 ) > tableCount ? tableCount - ui.tablePageSize : ui.tablePageSize * ( ui.tableCurrentPageIndex - 1 );
|
||||||
|
const endIndex = ui.tablePageSize * ui.tableCurrentPageIndex;
|
||||||
|
|
||||||
|
return ui.BIDepartmentAttachingRateData.slice( startIndex, endIndex );
|
||||||
|
});
|
||||||
|
|
||||||
|
const onCurrentPageIndexChange = ( pageIndex: number ): void =>
|
||||||
|
{
|
||||||
|
ui.tableCurrentPageIndex = pageIndex;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onTablePageSizeChange = ( pageSize: number ): void =>
|
||||||
|
{
|
||||||
|
ui.tablePageSize = pageSize;
|
||||||
|
};
|
||||||
|
|
||||||
|
const handler: QueryBIDepartmentAttachingRateDataHandler = ( response: QueryBIDepartmentAttachingRateResponse, error: any ): void =>
|
||||||
|
{
|
||||||
|
// 判断一下标志位
|
||||||
|
if ( response.success )
|
||||||
|
{
|
||||||
|
// 请求成功
|
||||||
|
ElMessage({
|
||||||
|
message: "更新成功",
|
||||||
|
type: "success",
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.BIDepartmentAttachingRateData = response.records;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 请求失败
|
||||||
|
ElMessageBox.confirm(
|
||||||
|
response.message,
|
||||||
|
"请求机构渗透率数据失败",
|
||||||
|
{
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then((): void => {})
|
||||||
|
.catch((): void => {});
|
||||||
|
|
||||||
|
if ( error !== null )
|
||||||
|
{
|
||||||
|
console.log( "请求机构渗透率数据失败", error );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const refresh = (): void =>
|
||||||
|
{
|
||||||
|
queryDepartmentAttachingRateData( handler );
|
||||||
|
};
|
||||||
|
|
||||||
|
const showUploadFileDialog = (): void =>
|
||||||
|
{
|
||||||
|
ui.showUploadDialog = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
onBeforeMount((): void =>
|
||||||
|
{
|
||||||
|
refresh();
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
ui,
|
||||||
|
tableData,
|
||||||
|
onCurrentPageIndexChange,
|
||||||
|
onTablePageSizeChange,
|
||||||
|
showUploadFileDialog,
|
||||||
|
handler,
|
||||||
|
refresh,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.wrapper {
|
||||||
|
margin: 0px 10px 10px 10px;
|
||||||
|
|
||||||
|
>*+* {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination_wrapper {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
</style>
|
@@ -0,0 +1,243 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-11-10 17:48:01
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /task_schedule/src/views/data/bi/DepartmentRenewalRateView.vue
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div class="wrapper">
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
icon="upload"
|
||||||
|
@click="showUploadFileDialog"
|
||||||
|
>
|
||||||
|
上传
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="refresh"
|
||||||
|
@click="refresh"
|
||||||
|
>
|
||||||
|
刷新
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-table
|
||||||
|
:data="tableData"
|
||||||
|
style="width:100%;"
|
||||||
|
border
|
||||||
|
stripe
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
label="部门"
|
||||||
|
align="center"
|
||||||
|
width="250px"
|
||||||
|
>
|
||||||
|
<template #default="dept">
|
||||||
|
<span>{{ dept.row.责任部门 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="机构目标值"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="dept">
|
||||||
|
<span>{{ dept.row.机构目标值.toFixed(2) + "%" }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="到期数全月"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="dept">
|
||||||
|
<span>{{ dept.row.到期数全月 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="序时到期数占比"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="dept">
|
||||||
|
<span>{{ dept.row.序时到期数占比.toFixed(2) + "%" }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="个车续保率序时"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="dept">
|
||||||
|
<span>{{ dept.row.个车续保率序时.toFixed(2) + "%" }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="个车续保率全月"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="dept">
|
||||||
|
<span>{{ dept.row.个车续保率全月.toFixed(2) + "%" }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<div class="pagination-wrapper">
|
||||||
|
<el-pagination
|
||||||
|
v-model="ui.tableCurrentPageIndex"
|
||||||
|
class="pull_left"
|
||||||
|
size="small"
|
||||||
|
background
|
||||||
|
:page-size="ui.tablePageSize"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="0"
|
||||||
|
@current-change="onCurrentPageIndexChange"
|
||||||
|
@size-change="onTablePageSizeChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="upload-dialog-wrapper"
|
||||||
|
>
|
||||||
|
<el-dialog
|
||||||
|
v-model="ui.showUploadDialog"
|
||||||
|
title="上传报表"
|
||||||
|
width="600px"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:close-on-press-escape="false"
|
||||||
|
:show-close="true"
|
||||||
|
>
|
||||||
|
<BiDataUploadView :report-type="3" />
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script lang="ts">
|
||||||
|
import { reactive, computed, onBeforeMount } from "vue";
|
||||||
|
import {
|
||||||
|
type BIDepartmentRenewalRateRecord,
|
||||||
|
type QueryBIDepartmentRenewalRateResponse,
|
||||||
|
type QueryBIDepartmentRenewalRateDataHandler,
|
||||||
|
queryDepartmentRenewalRateData
|
||||||
|
} from "@/utils/BIReport.js";
|
||||||
|
import { ElMessageBox, ElMessage } from "element-plus";
|
||||||
|
import BiDataUploadView from "@/views/data/bi/BiDataUploadView.vue";
|
||||||
|
|
||||||
|
interface UI
|
||||||
|
{
|
||||||
|
showUI: boolean;
|
||||||
|
showUploadDialog: boolean;
|
||||||
|
tablePageSize: number;
|
||||||
|
tableCurrentPageIndex: number;
|
||||||
|
BIDepartmentRenewalRateData: BIDepartmentRenewalRateRecord[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "DepartmentRenewalRateView",
|
||||||
|
components: { BiDataUploadView, },
|
||||||
|
setup()
|
||||||
|
{
|
||||||
|
const ui: UI = reactive({
|
||||||
|
showUI: true,
|
||||||
|
showUploadDialog: false,
|
||||||
|
tablePageSize: 10,
|
||||||
|
tableCurrentPageIndex: 1,
|
||||||
|
BIDepartmentRenewalRateData: [],
|
||||||
|
});
|
||||||
|
|
||||||
|
// on
|
||||||
|
const onCurrentPageIndexChange = ( pageIndex: number ): void =>
|
||||||
|
{
|
||||||
|
ui.tableCurrentPageIndex = pageIndex;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onTablePageSizeChange = ( pageSize: number ): void =>
|
||||||
|
{
|
||||||
|
ui.tablePageSize = pageSize;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 计算变量
|
||||||
|
const tableData = computed((): BIDepartmentRenewalRateRecord[] =>
|
||||||
|
{
|
||||||
|
const tableCount = ui.BIDepartmentRenewalRateData.length;
|
||||||
|
const startIndex = ui.tablePageSize * ( ui.tableCurrentPageIndex - 1 ) < tableCount ? ui.tablePageSize * ( ui.tableCurrentPageIndex - 1 ) : ( tableCount - ui.tablePageSize );
|
||||||
|
const endIndex = ui.tablePageSize * ui.tableCurrentPageIndex < tableCount ? ui.tablePageSize * ui.tableCurrentPageIndex : tableCount;
|
||||||
|
|
||||||
|
return ui.BIDepartmentRenewalRateData.slice( startIndex, endIndex );
|
||||||
|
});
|
||||||
|
|
||||||
|
// handler
|
||||||
|
const handler: QueryBIDepartmentRenewalRateDataHandler = ( response: QueryBIDepartmentRenewalRateResponse, error: any ): void =>
|
||||||
|
{
|
||||||
|
if ( response.success )
|
||||||
|
{
|
||||||
|
ui.BIDepartmentRenewalRateData = response.records;
|
||||||
|
|
||||||
|
ElMessage({
|
||||||
|
message: "更新完成",
|
||||||
|
type: "success",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ElMessageBox.confirm(
|
||||||
|
response.message,
|
||||||
|
"请求BI机构续保率数据失败",
|
||||||
|
{
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then((): void => {})
|
||||||
|
.catch((): void => {});
|
||||||
|
|
||||||
|
if ( error !== null )
|
||||||
|
{
|
||||||
|
console.log( error );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const showUploadFileDialog = (): void =>
|
||||||
|
{
|
||||||
|
ui.showUploadDialog = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
onBeforeMount((): void =>
|
||||||
|
{
|
||||||
|
refresh();
|
||||||
|
});
|
||||||
|
|
||||||
|
const refresh = (): void =>
|
||||||
|
{
|
||||||
|
queryDepartmentRenewalRateData( handler );
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
ui,
|
||||||
|
onCurrentPageIndexChange,
|
||||||
|
onTablePageSizeChange,
|
||||||
|
showUploadFileDialog,
|
||||||
|
// 计算变量
|
||||||
|
tableData,
|
||||||
|
refresh,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.wrapper {
|
||||||
|
margin: 0px 10px 10px 10px;
|
||||||
|
|
||||||
|
>*+* {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-wrapper {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
</style>
|
@@ -18,43 +18,71 @@
|
|||||||
>
|
>
|
||||||
上传
|
上传
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="refresh"
|
||||||
|
@click="refresh"
|
||||||
|
>
|
||||||
|
刷新
|
||||||
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-table
|
<el-table
|
||||||
border
|
border
|
||||||
stripe
|
stripe
|
||||||
style="width:100%;"
|
style="width:100%;"
|
||||||
|
:data="tableData"
|
||||||
>
|
>
|
||||||
<el-table-column
|
|
||||||
type="selection"
|
|
||||||
align="center"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="部门"
|
label="部门"
|
||||||
align="center"
|
align="center"
|
||||||
width="200"
|
width="300"
|
||||||
/>
|
>
|
||||||
|
<template #default="telsaler">
|
||||||
|
<span>{{ telsaler.row.departmentName }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="名称"
|
label="名称"
|
||||||
align="center"
|
align="center"
|
||||||
width="200"
|
width="200"
|
||||||
/>
|
>
|
||||||
|
<template #default="telsaler">
|
||||||
|
<span>{{ telsaler.row.telsalerName }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="车险保费(万)"
|
label="车险保费"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
>
|
||||||
|
<template #default="telsaler">
|
||||||
|
<span>{{ Math.trunc( telsaler.row.motoPremium * 10000) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="非车险保费(万)"
|
label="非车险保费"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
>
|
||||||
|
<template #default="telsaler">
|
||||||
|
<span>{{ Math.trunc( telsaler.row.nomotoPremium * 10000) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="当月保费渗透率"
|
label="当月保费渗透率"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
>
|
||||||
|
<template #default="telsaler">
|
||||||
|
<span>{{ telsaler.row.attachingRate.toFixed(2) + "%" }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="渗透率环比上月"
|
label="渗透率环比上月"
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
>
|
||||||
|
<template #default="telsaler">
|
||||||
|
<span>{{ telsaler.row.attachingRateChange.toFixed(2) + "%" }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<div class="pagination_wrapper">
|
<div class="pagination_wrapper">
|
||||||
<el-pagination
|
<el-pagination
|
||||||
@@ -65,7 +93,7 @@
|
|||||||
:page-size="ui.tablePageSize"
|
:page-size="ui.tablePageSize"
|
||||||
:page-sizes="[10, 20, 50, 100]"
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
layout="total, sizes, prev, pager, next, jumper"
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
:total="0"
|
:total="tableCount"
|
||||||
@current-change="onCurrentPageIndexChange"
|
@current-change="onCurrentPageIndexChange"
|
||||||
@size-change="onTablePageSizeChange"
|
@size-change="onTablePageSizeChange"
|
||||||
/>
|
/>
|
||||||
@@ -81,25 +109,42 @@
|
|||||||
:close-on-press-escape="false"
|
:close-on-press-escape="false"
|
||||||
:show-close="true"
|
:show-close="true"
|
||||||
>
|
>
|
||||||
<BiDataUploadView />
|
<BiDataUploadView :report-type="0" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { reactive } from "vue";
|
import { reactive, onBeforeMount, computed } from "vue";
|
||||||
|
import {
|
||||||
|
type BITelsalerAttachingRateRecord,
|
||||||
|
type QueryBITelsalerAttachingRateReportResponse,
|
||||||
|
type QueryBITelsalerAttachingRateDataHandler,
|
||||||
|
queryBITelsalerAttachingRateData
|
||||||
|
} from "@/utils/BIReport.js";
|
||||||
import BiDataUploadView from "@/views/data/bi/BiDataUploadView.vue";
|
import BiDataUploadView from "@/views/data/bi/BiDataUploadView.vue";
|
||||||
|
import { ElMessageBox, ElMessage } from "element-plus";
|
||||||
|
|
||||||
|
interface UI
|
||||||
|
{
|
||||||
|
showUI: boolean,
|
||||||
|
showUploadDialog: boolean,
|
||||||
|
tableCurrentPageIndex: number,
|
||||||
|
tablePageSize: number,
|
||||||
|
BITelsalerAttachingRateData: BITelsalerAttachingRateRecord[],
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "TelsalerAttachingRateView",
|
name: "TelsalerAttachingRateView",
|
||||||
components: { BiDataUploadView, },
|
components: { BiDataUploadView, },
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
const ui = reactive({
|
const ui: UI = reactive({
|
||||||
showUI: true,
|
showUI: true,
|
||||||
showUploadDialog: false,
|
showUploadDialog: false,
|
||||||
tableCurrentPageIndex: 1,
|
tableCurrentPageIndex: 1,
|
||||||
tablePageSize: 10,
|
tablePageSize: 10,
|
||||||
|
BITelsalerAttachingRateData: [],
|
||||||
});
|
});
|
||||||
|
|
||||||
const showUploadFileDialog = (): void =>
|
const showUploadFileDialog = (): void =>
|
||||||
@@ -117,18 +162,84 @@ export default {
|
|||||||
ui.tablePageSize = pageSize;
|
ui.tablePageSize = pageSize;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** 请求处理handler ********/
|
||||||
|
const queryBITelsalerAttachingRateDataHandler: QueryBITelsalerAttachingRateDataHandler = ( response: QueryBITelsalerAttachingRateReportResponse, error: any ): void =>
|
||||||
|
{
|
||||||
|
// 判断调用成功标志位
|
||||||
|
if ( response.success )
|
||||||
|
{
|
||||||
|
ui.BITelsalerAttachingRateData = response.records;
|
||||||
|
|
||||||
|
ElMessage({
|
||||||
|
message: "更新成功",
|
||||||
|
type: "success",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 错误处理
|
||||||
|
ElMessageBox.confirm(
|
||||||
|
response.message,
|
||||||
|
"请求BI坐席渗透率数据错误",
|
||||||
|
{
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then((): void => {})
|
||||||
|
.catch((): void => {});
|
||||||
|
|
||||||
|
if ( error !== null )
|
||||||
|
{
|
||||||
|
console.log( error );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const tableCount = computed((): number =>
|
||||||
|
{
|
||||||
|
return ui.BITelsalerAttachingRateData.length;
|
||||||
|
});
|
||||||
|
|
||||||
|
const tableData = computed((): BITelsalerAttachingRateRecord[] =>
|
||||||
|
{
|
||||||
|
const tableCount = ui.BITelsalerAttachingRateData.length;
|
||||||
|
const startIndex = ui.tablePageSize * ( ui.tableCurrentPageIndex - 1 ) > tableCount ? tableCount - ui.tablePageSize : ui.tablePageSize * ( ui.tableCurrentPageIndex - 1 );
|
||||||
|
const endIndex = ui.tablePageSize * ui.tableCurrentPageIndex;
|
||||||
|
|
||||||
|
return ui.BITelsalerAttachingRateData.slice( startIndex, endIndex );
|
||||||
|
});
|
||||||
|
|
||||||
|
onBeforeMount((): void =>
|
||||||
|
{
|
||||||
|
queryBITelsalerAttachingRateData( queryBITelsalerAttachingRateDataHandler );
|
||||||
|
});
|
||||||
|
|
||||||
|
const refresh = (): void =>
|
||||||
|
{
|
||||||
|
console.log( import.meta.env.VITE_TEST );
|
||||||
|
queryBITelsalerAttachingRateData( queryBITelsalerAttachingRateDataHandler );
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
ui,
|
ui,
|
||||||
showUploadFileDialog,
|
showUploadFileDialog,
|
||||||
onCurrentPageIndexChange,
|
onCurrentPageIndexChange,
|
||||||
onTablePageSizeChange,
|
onTablePageSizeChange,
|
||||||
|
// 计算变量
|
||||||
|
tableData,
|
||||||
|
tableCount,
|
||||||
|
// 函数
|
||||||
|
queryBITelsalerAttachingRateDataHandler,
|
||||||
|
refresh,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.wrapper {
|
.wrapper {
|
||||||
margin: 10px;
|
margin: 0px 10px 10px 10px;
|
||||||
|
|
||||||
>*+* {
|
>*+* {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
@@ -1,30 +1,241 @@
|
|||||||
src/views/data/bi/TelsalerAttachingRateView.vue<!--
|
<!--
|
||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-10-17 14:41:39
|
* @Date: 2023-10-17 23:31:19
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @FilePath: /task_schedule/src/views/data/TelsalerAttachingRateView.vue
|
* @FilePath: /task_schedule/src/views/data/bi/TelsalerRenewalRateView.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div class="wrapper" />
|
<div class="wrapper">
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
icon="Upload"
|
||||||
|
@click="showUploadFileDialog"
|
||||||
|
>
|
||||||
|
上传
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="refresh"
|
||||||
|
@click="refresh"
|
||||||
|
>
|
||||||
|
刷新
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-table
|
||||||
|
border
|
||||||
|
stripe
|
||||||
|
style="width:100%;"
|
||||||
|
:data="tableData"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
label="部门"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="telsaler">
|
||||||
|
<span>{{ telsaler.row.责任部门 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="责任人"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="telsaler">
|
||||||
|
<span>{{ telsaler.row.责任人 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="到期数-全月"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="telsaler">
|
||||||
|
<span>{{ telsaler.row.到期数全月 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="个车续保率(序时)(%)"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="telsaler">
|
||||||
|
<span>{{ telsaler.row.个车续保率序时 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="个车续保率(全月)(%)"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="telsaler">
|
||||||
|
<span>{{ telsaler.row.个车续保率全月 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<div class="pagination_wrapper">
|
||||||
|
<el-pagination
|
||||||
|
v-model="ui.tableCurrentPageIndex"
|
||||||
|
class="pull_left"
|
||||||
|
size="small"
|
||||||
|
background
|
||||||
|
:page-size="ui.tablePageSize"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="0"
|
||||||
|
@current-change="onCurrentPageIndexChange"
|
||||||
|
@size-change="onTablePageSizeChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="upload-dialog-wrapper"
|
||||||
|
>
|
||||||
|
<el-dialog
|
||||||
|
v-model="ui.showUploadDialog"
|
||||||
|
title="上传报表"
|
||||||
|
width="600px"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:close-on-press-escape="false"
|
||||||
|
:show-close="true"
|
||||||
|
>
|
||||||
|
<BiDataUploadView :report-type="1" />
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { reactive } from "vue";
|
import { reactive, computed, onBeforeMount } from "vue";
|
||||||
|
import BiDataUploadView from "@/views/data/bi/BiDataUploadView.vue";
|
||||||
|
import {
|
||||||
|
type QueryBITelsalerRenewalRateDataHandler,
|
||||||
|
type BITelsalerRenewalRateRecord,
|
||||||
|
type QueryBITelsalerRenewalRateReportResponse,
|
||||||
|
queryBITelsalerRenewalData
|
||||||
|
} from "@/utils/BIReport.js";
|
||||||
|
import { ElMessageBox, ElMessage } from "element-plus";
|
||||||
|
|
||||||
|
interface UI
|
||||||
|
{
|
||||||
|
showUI: boolean,
|
||||||
|
showUploadDialog: boolean,
|
||||||
|
tableCurrentPageIndex: number,
|
||||||
|
tablePageSize: number,
|
||||||
|
BITelsalerRenewalRateData: BITelsalerRenewalRateRecord[],
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "TelsalerAttachingRateView",
|
name: "TelsalerAttachingRateView",
|
||||||
|
components: { BiDataUploadView, },
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
const ui = reactive({
|
const ui: UI = reactive({
|
||||||
showUI: true,
|
showUI: true,
|
||||||
|
showUploadDialog: false,
|
||||||
|
tableCurrentPageIndex: 1,
|
||||||
|
tablePageSize: 10,
|
||||||
|
BITelsalerRenewalRateData: [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const showUploadFileDialog = (): void =>
|
||||||
|
{
|
||||||
|
ui.showUploadDialog = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onCurrentPageIndexChange = ( index: number ): void =>
|
||||||
|
{
|
||||||
|
ui.tableCurrentPageIndex = index;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onTablePageSizeChange = ( pageSize: number ): void =>
|
||||||
|
{
|
||||||
|
ui.tablePageSize = pageSize;
|
||||||
|
};
|
||||||
|
|
||||||
|
const tableData = computed((): BITelsalerRenewalRateRecord[] =>
|
||||||
|
{
|
||||||
|
const tableCount = ui.BITelsalerRenewalRateData.length;
|
||||||
|
const startIndex = ui.tablePageSize * ( ui.tableCurrentPageIndex - 1 ) > tableCount ? tableCount - ui.tablePageSize : ui.tablePageSize * ( ui.tableCurrentPageIndex - 1 );
|
||||||
|
const endIndex = ui.tablePageSize * ui.tableCurrentPageIndex;
|
||||||
|
|
||||||
|
return ui.BITelsalerRenewalRateData.slice( startIndex, endIndex );
|
||||||
|
});
|
||||||
|
|
||||||
|
const tableCount = computed((): number =>
|
||||||
|
{
|
||||||
|
return ui.BITelsalerRenewalRateData.length;
|
||||||
|
});
|
||||||
|
|
||||||
|
// handler
|
||||||
|
const queryBITelsalerRenewalRateDataHander: QueryBITelsalerRenewalRateDataHandler = ( response: QueryBITelsalerRenewalRateReportResponse, error: any ): void =>
|
||||||
|
{
|
||||||
|
// 判断调用成功标志位
|
||||||
|
if ( response.success )
|
||||||
|
{
|
||||||
|
ui.BITelsalerRenewalRateData = response.records;
|
||||||
|
|
||||||
|
ElMessage({
|
||||||
|
message: "更新成功",
|
||||||
|
type: "success",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 错误处理
|
||||||
|
ElMessageBox.confirm(
|
||||||
|
response.message,
|
||||||
|
"请求BI坐席续保率数据错误",
|
||||||
|
{
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then((): void => {})
|
||||||
|
.catch((): void => {});
|
||||||
|
|
||||||
|
if ( error !== null )
|
||||||
|
{
|
||||||
|
console.log( error );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
onBeforeMount((): void =>
|
||||||
|
{
|
||||||
|
queryBITelsalerRenewalData( queryBITelsalerRenewalRateDataHander );
|
||||||
|
});
|
||||||
|
|
||||||
|
const refresh = (): void =>
|
||||||
|
{
|
||||||
|
queryBITelsalerRenewalData( queryBITelsalerRenewalRateDataHander );
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
ui,
|
||||||
|
showUploadFileDialog,
|
||||||
|
onCurrentPageIndexChange,
|
||||||
|
onTablePageSizeChange,
|
||||||
|
// 计算变量
|
||||||
|
tableData,
|
||||||
|
tableCount,
|
||||||
|
// 函数
|
||||||
|
refresh,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.wrapper {
|
.wrapper {
|
||||||
margin: 10px;
|
margin: 0px 10px 10px 10px;
|
||||||
|
|
||||||
|
>*+* {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination_wrapper {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -11,10 +11,11 @@
|
|||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"forceConsistentCasingInFileNames": true,
|
"forceConsistentCasingInFileNames": true,
|
||||||
"useDefineForClassFields": true,
|
"useDefineForClassFields": true,
|
||||||
"target": "ES2015",
|
"target": "ESNext",
|
||||||
"module": "ES2015",
|
"module": "ESNext",
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"strict": true,
|
"strict": true,
|
||||||
|
"strictNullChecks": true,
|
||||||
"jsx": "preserve",
|
"jsx": "preserve",
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
|
@@ -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-06-25 09:51:13
|
* @LastEditTime: 2023-11-13 10:42:29
|
||||||
* @FilePath: /task_schedule/vite.config.js
|
* @FilePath: /task_schedule/vite.config.js
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
@@ -19,6 +19,9 @@ export default defineConfig(( command, mode ) =>
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
server:{ host: "localhost", port: 5173, },
|
server:{ host: "localhost", port: 5173, },
|
||||||
|
build: {
|
||||||
|
outDir: "../../../输出/web",
|
||||||
|
},
|
||||||
plugins: [vue(),],
|
plugins: [vue(),],
|
||||||
base: "./",
|
base: "./",
|
||||||
resolve: {
|
resolve: {
|
||||||
|
@@ -162,7 +162,9 @@
|
|||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-war-plugin</artifactId>
|
<artifactId>maven-war-plugin</artifactId>
|
||||||
<version>3.3.2</version>
|
<version>3.3.2</version>
|
||||||
<configuration></configuration>
|
<configuration>
|
||||||
|
<outputDirectory>${project.build.directory}/../../../../输出/back/</outputDirectory>
|
||||||
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-11-01 15:50:40
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/mapper/QueryBIArchievementDataMapper.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
package com.cpic.xim.mybatis.mapper;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BIDepartmentAttachingRateRecord;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BIDepartmentRenewalRateRecord;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord;
|
||||||
|
|
||||||
|
public interface QueryBIArchievementDataMapper
|
||||||
|
{
|
||||||
|
public ArrayList<BITelsalerAttachingRateRecord> queryBITelsalerAttachingRate();
|
||||||
|
|
||||||
|
public ArrayList<BITelsalerRenewalRateRecord> queryBITesalerRenewalRate();
|
||||||
|
|
||||||
|
public ArrayList<BIDepartmentAttachingRateRecord> queryBIDepartmentAttachingRate();
|
||||||
|
|
||||||
|
public ArrayList<BIDepartmentRenewalRateRecord> queryBIDepartmentRenewalRate();
|
||||||
|
}
|
@@ -22,7 +22,8 @@ public class BIDepartmentRenewalRateRecord
|
|||||||
private int 平均提前签单天数;
|
private int 平均提前签单天数;
|
||||||
private double 环比;
|
private double 环比;
|
||||||
|
|
||||||
public BIDepartmentRenewalRateRecord() {}
|
public BIDepartmentRenewalRateRecord()
|
||||||
|
{}
|
||||||
|
|
||||||
public BIDepartmentRenewalRateRecord( String 责任部门, double 机构目标值, int 到期数全月, double 序时到期数占比,
|
public BIDepartmentRenewalRateRecord( String 责任部门, double 机构目标值, int 到期数全月, double 序时到期数占比,
|
||||||
double 个车续保率序时, double 个车续保率全月, double 环比昨日, double 环比上月, int 平均提前签单天数, double 环比 )
|
double 个车续保率序时, double 个车续保率全月, double 环比昨日, double 环比上月, int 平均提前签单天数, double 环比 )
|
||||||
|
@@ -9,7 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.cpic.xim.mybatis.pojo;
|
package com.cpic.xim.mybatis.pojo;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
public class BITelsalerAttachingRateRecord
|
public class BITelsalerAttachingRateRecord
|
||||||
@@ -18,10 +17,6 @@ public class BITelsalerAttachingRateRecord
|
|||||||
@JsonProperty( "departmentName" )
|
@JsonProperty( "departmentName" )
|
||||||
private String departmentName;
|
private String departmentName;
|
||||||
|
|
||||||
// 统计日期
|
|
||||||
@JsonProperty( "summaryDate" )
|
|
||||||
private LocalDate summaryDate;
|
|
||||||
|
|
||||||
// 坐席名称
|
// 坐席名称
|
||||||
@JsonProperty( "telsalerName" )
|
@JsonProperty( "telsalerName" )
|
||||||
private String telsalerName;
|
private String telsalerName;
|
||||||
@@ -47,29 +42,28 @@ public class BITelsalerAttachingRateRecord
|
|||||||
private double attachingRateChange;
|
private double attachingRateChange;
|
||||||
|
|
||||||
// 当月客户渗透率
|
// 当月客户渗透率
|
||||||
@JsonProperty( "customerHandleRateCell" )
|
@JsonProperty( "customerHandleRate" )
|
||||||
private double customerHandleRate;
|
private double customerHandleRate;
|
||||||
|
|
||||||
// 客户渗透率环比上月
|
// 客户渗透率环比上月
|
||||||
@JsonProperty( "customerHandleRateChangeCell" )
|
@JsonProperty( "customerHandleRateChange" )
|
||||||
private double customerHandleRateChange;
|
private double customerHandleRateChange;
|
||||||
|
|
||||||
// 当月车非客均保费
|
// 当月车非客均保费
|
||||||
@JsonProperty( "noMotoPremiumPerCustomerCell" )
|
@JsonProperty( "noMotoPremiumPerCustomer" )
|
||||||
private double noMotoPremiumPerCustomer;
|
private double noMotoPremiumPerCustomer;
|
||||||
|
|
||||||
// 客均保费环比上月
|
// 客均保费环比上月
|
||||||
@JsonProperty( "noMotoPremiumPerCustomerChangeCell" )
|
@JsonProperty( "noMotoPremiumPerCustomerChange" )
|
||||||
private double noMotoPremiumPerCustomerChange;
|
private double noMotoPremiumPerCustomerChange;
|
||||||
|
|
||||||
public BITelsalerAttachingRateRecord( String departmentName, LocalDate summaryDate,
|
public BITelsalerAttachingRateRecord( String departmentName,
|
||||||
String telsalerName, double motoPremium, double nomotoPremium,
|
String telsalerName, double motoPremium, double nomotoPremium,
|
||||||
double motoPremiumProportion, double attachingRate, double attachingRateChange,
|
double motoPremiumProportion, double attachingRate, double attachingRateChange,
|
||||||
double customerHandleRate, double customerHandleRateChange,
|
double customerHandleRate, double customerHandleRateChange,
|
||||||
double noMotoPremiumPerCustomer, double noMotoPremiumPerCustomerChange )
|
double noMotoPremiumPerCustomer, double noMotoPremiumPerCustomerChange )
|
||||||
{
|
{
|
||||||
this.departmentName = departmentName;
|
this.departmentName = departmentName;
|
||||||
this.summaryDate = summaryDate;
|
|
||||||
this.telsalerName = telsalerName;
|
this.telsalerName = telsalerName;
|
||||||
this.motoPremium = motoPremium;
|
this.motoPremium = motoPremium;
|
||||||
this.nomotoPremium = nomotoPremium;
|
this.nomotoPremium = nomotoPremium;
|
||||||
@@ -129,7 +123,7 @@ public class BITelsalerAttachingRateRecord
|
|||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
return "BITelsalerAttachingRateRecord [departmentName=" + departmentName + ", summaryDate="
|
return "BITelsalerAttachingRateRecord [departmentName=" + departmentName + ", summaryDate="
|
||||||
+ summaryDate + ", telsalerName=" + telsalerName + ", motoPremium=" + motoPremium
|
+ ", telsalerName=" + telsalerName + ", motoPremium=" + motoPremium
|
||||||
+ ", nomotoPremium=" + nomotoPremium + ", motoPremiumProportion="
|
+ ", nomotoPremium=" + nomotoPremium + ", motoPremiumProportion="
|
||||||
+ motoPremiumProportion + ", attachingRate=" + attachingRate
|
+ motoPremiumProportion + ", attachingRate=" + attachingRate
|
||||||
+ ", attachingRateChange=" + attachingRateChange + ", customerHandleRate="
|
+ ", attachingRateChange=" + attachingRateChange + ", customerHandleRate="
|
||||||
@@ -144,7 +138,6 @@ public class BITelsalerAttachingRateRecord
|
|||||||
final int prime = 31;
|
final int prime = 31;
|
||||||
int result = 1;
|
int result = 1;
|
||||||
result = prime * result + ((departmentName == null) ? 0 : departmentName.hashCode());
|
result = prime * result + ((departmentName == null) ? 0 : departmentName.hashCode());
|
||||||
result = prime * result + ((summaryDate == null) ? 0 : summaryDate.hashCode());
|
|
||||||
result = prime * result + ((telsalerName == null) ? 0 : telsalerName.hashCode());
|
result = prime * result + ((telsalerName == null) ? 0 : telsalerName.hashCode());
|
||||||
long temp;
|
long temp;
|
||||||
temp = Double.doubleToLongBits( motoPremium );
|
temp = Double.doubleToLongBits( motoPremium );
|
||||||
@@ -185,13 +178,6 @@ public class BITelsalerAttachingRateRecord
|
|||||||
}
|
}
|
||||||
else if ( !departmentName.equals( other.departmentName ) )
|
else if ( !departmentName.equals( other.departmentName ) )
|
||||||
return false;
|
return false;
|
||||||
if ( summaryDate == null )
|
|
||||||
{
|
|
||||||
if ( other.summaryDate != null )
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if ( !summaryDate.equals( other.summaryDate ) )
|
|
||||||
return false;
|
|
||||||
if ( telsalerName == null )
|
if ( telsalerName == null )
|
||||||
{
|
{
|
||||||
if ( other.telsalerName != null )
|
if ( other.telsalerName != null )
|
||||||
@@ -229,16 +215,6 @@ public class BITelsalerAttachingRateRecord
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LocalDate getSummaryDate()
|
|
||||||
{
|
|
||||||
return summaryDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSummaryDate( LocalDate summaryDate )
|
|
||||||
{
|
|
||||||
this.summaryDate = summaryDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTelsalerName()
|
public String getTelsalerName()
|
||||||
{
|
{
|
||||||
return telsalerName;
|
return telsalerName;
|
||||||
|
@@ -20,8 +20,10 @@ import org.apache.ibatis.session.SqlSessionFactoryBuilder;
|
|||||||
|
|
||||||
public class MybatisUtils
|
public class MybatisUtils
|
||||||
{
|
{
|
||||||
private static HashMap<String, SqlSession> SessionMap = new HashMap<>(5);
|
private static HashMap<String, SqlSession> SessionMap = new HashMap<>( 5 );
|
||||||
private static HashMap<String, SqlSession> SessionMapBatch = new HashMap<>(5);
|
private static HashMap<String, SqlSession> SessionMapBatch = new HashMap<>( 5 );
|
||||||
|
private static HashMap<String, SqlSessionFactory> SessionFactoryMap = new HashMap<>( 5 );
|
||||||
|
private static HashMap<String, SqlSessionFactory> SessionFactoryMapBatch = new HashMap<>( 5 );
|
||||||
private static String DEFAULT_CONFIGFILE = "mybatis/mybatis-config.xml";
|
private static String DEFAULT_CONFIGFILE = "mybatis/mybatis-config.xml";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -33,43 +35,45 @@ public class MybatisUtils
|
|||||||
public static SqlSession getSqlSession( String configFile ) throws IOException
|
public static SqlSession getSqlSession( String configFile ) throws IOException
|
||||||
{
|
{
|
||||||
// 根据配置文件的路径,查找是否已经创建了对应的session
|
// 根据配置文件的路径,查找是否已经创建了对应的session
|
||||||
SqlSession session = SessionMap.get( configFile );
|
SqlSessionFactory factory = SessionFactoryMap.get( configFile );
|
||||||
|
|
||||||
// 找到就直接返回
|
// 找到就直接返回
|
||||||
if ( session != null )
|
if ( factory != null )
|
||||||
{
|
{
|
||||||
return session;
|
return factory.openSession();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 没找到就创建一个
|
// 没找到就创建一个
|
||||||
InputStream configIS = Resources.getResourceAsStream( configFile );
|
InputStream configIS = Resources.getResourceAsStream( configFile );
|
||||||
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build( configIS );
|
factory = new SqlSessionFactoryBuilder().build( configIS );
|
||||||
session = factory.openSession();
|
SqlSession session = factory.openSession();
|
||||||
|
|
||||||
// 保存
|
// 保存
|
||||||
SessionMap.put( configFile, session );
|
SessionFactoryMap.put( configFile, factory );
|
||||||
|
|
||||||
return session;
|
return session;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SqlSession getSqlSessionBatch( String configFile ) throws IOException
|
public static SqlSession getSqlSessionBatch( String configFile ) throws IOException
|
||||||
{
|
{
|
||||||
SqlSession sessionBatch = SessionMapBatch.get( configFile );
|
// 根据配置文件的路径,查找是否已经创建了对应的session
|
||||||
|
SqlSessionFactory factory = SessionFactoryMap.get( configFile );
|
||||||
|
|
||||||
if ( sessionBatch != null )
|
// 找到就直接返回
|
||||||
|
if ( factory != null )
|
||||||
{
|
{
|
||||||
return sessionBatch;
|
return factory.openSession();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 没有缓存的就创建一个新的
|
// 没找到就创建一个
|
||||||
InputStream configIS = Resources.getResourceAsStream( configFile );
|
InputStream configIS = Resources.getResourceAsStream( configFile );
|
||||||
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build( configIS );
|
factory = new SqlSessionFactoryBuilder().build( configIS );
|
||||||
sessionBatch = factory.openSession(ExecutorType.BATCH, false );
|
SqlSession session = factory.openSession( ExecutorType.BATCH, false );
|
||||||
|
|
||||||
//保存
|
// 保存
|
||||||
SessionMapBatch.put( configFile, sessionBatch );
|
SessionFactoryMap.put( configFile, factory );
|
||||||
|
|
||||||
return sessionBatch;
|
return session;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -80,21 +84,21 @@ public class MybatisUtils
|
|||||||
public static SqlSession getSqlSession() throws IOException
|
public static SqlSession getSqlSession() throws IOException
|
||||||
{
|
{
|
||||||
// 根据配置文件的路径,查找是否已经创建了对应的session
|
// 根据配置文件的路径,查找是否已经创建了对应的session
|
||||||
SqlSession session = SessionMap.get( DEFAULT_CONFIGFILE );
|
SqlSessionFactory factory = SessionFactoryMap.get( DEFAULT_CONFIGFILE );
|
||||||
|
|
||||||
// 找到就直接返回
|
// 找到就直接返回
|
||||||
if ( session != null )
|
if ( factory != null )
|
||||||
{
|
{
|
||||||
return session;
|
return factory.openSession();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 没找到就创建一个
|
// 没找到就创建一个
|
||||||
InputStream configIS = Resources.getResourceAsStream( DEFAULT_CONFIGFILE );
|
InputStream configIS = Resources.getResourceAsStream( DEFAULT_CONFIGFILE );
|
||||||
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build( configIS );
|
factory = new SqlSessionFactoryBuilder().build( configIS );
|
||||||
session = factory.openSession();
|
SqlSession session = factory.openSession();
|
||||||
|
|
||||||
// 保存
|
// 保存
|
||||||
SessionMap.put( DEFAULT_CONFIGFILE, session );
|
SessionFactoryMap.put( DEFAULT_CONFIGFILE, factory );
|
||||||
|
|
||||||
return session;
|
return session;
|
||||||
}
|
}
|
||||||
@@ -108,21 +112,23 @@ public class MybatisUtils
|
|||||||
*/
|
*/
|
||||||
public static SqlSession getSqlSessionBatch() throws IOException
|
public static SqlSession getSqlSessionBatch() throws IOException
|
||||||
{
|
{
|
||||||
SqlSession sessionBatch = SessionMapBatch.get( DEFAULT_CONFIGFILE );
|
// 根据配置文件的路径,查找是否已经创建了对应的session
|
||||||
|
SqlSessionFactory factory = SessionFactoryMap.get( DEFAULT_CONFIGFILE );
|
||||||
|
|
||||||
if ( sessionBatch != null )
|
// 找到就直接返回
|
||||||
|
if ( factory != null )
|
||||||
{
|
{
|
||||||
return sessionBatch;
|
return factory.openSession();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 没有缓存的就创建一个新的
|
// 没找到就创建一个
|
||||||
InputStream configIS = Resources.getResourceAsStream( DEFAULT_CONFIGFILE );
|
InputStream configIS = Resources.getResourceAsStream( DEFAULT_CONFIGFILE );
|
||||||
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build( configIS );
|
factory = new SqlSessionFactoryBuilder().build( configIS );
|
||||||
sessionBatch = factory.openSession(ExecutorType.BATCH, false );
|
SqlSession session = factory.openSession( ExecutorType.BATCH, false );
|
||||||
|
|
||||||
//保存
|
// 保存
|
||||||
SessionMapBatch.put( DEFAULT_CONFIGFILE, sessionBatch );
|
SessionFactoryMap.put( DEFAULT_CONFIGFILE, factory );
|
||||||
|
|
||||||
return sessionBatch;
|
return session;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -41,12 +41,12 @@ public final class TeleSalerInfo
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询坐席工号的static方法。
|
* 查询坐席工号的static方法。
|
||||||
* @param telsalerCode 坐席工号
|
* @param telsaler 坐席工号
|
||||||
* @return TeleSalerInfo对象。
|
* @return TeleSalerInfo对象。
|
||||||
* @throws ClassNotFoundException
|
* @throws ClassNotFoundException
|
||||||
* @throws SQLException
|
* @throws SQLException
|
||||||
*/
|
*/
|
||||||
public static TeleSalerInfo queryTeleSalerInfo( String telsalerCode )
|
public static TeleSalerInfo queryTeleSalerInfo( String telsaler )
|
||||||
throws ClassNotFoundException, SQLException
|
throws ClassNotFoundException, SQLException
|
||||||
{
|
{
|
||||||
TeleSalerInfo info = null;
|
TeleSalerInfo info = null;
|
||||||
@@ -72,7 +72,7 @@ public final class TeleSalerInfo
|
|||||||
idst0.bm_t bm
|
idst0.bm_t bm
|
||||||
WHERE s.team_code = t.team_code
|
WHERE s.team_code = t.team_code
|
||||||
AND t.department_code = bm.department_code
|
AND t.department_code = bm.department_code
|
||||||
AND s.saler_code = ? """;
|
AND (s.saler_code = ? or s.saler_name = ?) """;
|
||||||
// String sql = "SELECT DISTINCT s.saler_code, s.saler_name, \n"
|
// String sql = "SELECT DISTINCT s.saler_code, s.saler_name, \n"
|
||||||
// + " t.team_code, t.team, \n"
|
// + " t.team_code, t.team, \n"
|
||||||
// + " bm.department_code, bm.department_name \n"
|
// + " bm.department_code, bm.department_name \n"
|
||||||
@@ -86,7 +86,8 @@ public final class TeleSalerInfo
|
|||||||
connection = DriverManager.getConnection( jdbcURL, userName, password );
|
connection = DriverManager.getConnection( jdbcURL, userName, password );
|
||||||
statement = connection.prepareStatement( sql );
|
statement = connection.prepareStatement( sql );
|
||||||
|
|
||||||
statement.setString( 1, telsalerCode );
|
statement.setString( 1, telsaler );
|
||||||
|
statement.setString( 2, telsaler );
|
||||||
|
|
||||||
result = statement.executeQuery();
|
result = statement.executeQuery();
|
||||||
|
|
||||||
|
@@ -61,6 +61,7 @@ public class CallerArchievement
|
|||||||
|
|
||||||
params.put( "a_caller_code", callerCode );
|
params.put( "a_caller_code", callerCode );
|
||||||
|
|
||||||
|
// session.clearCache();
|
||||||
mapper.getCallerArchievement( params );
|
mapper.getCallerArchievement( params );
|
||||||
|
|
||||||
// 总业绩
|
// 总业绩
|
||||||
|
@@ -77,6 +77,7 @@ public class DepartmentArchievement
|
|||||||
|
|
||||||
params.put("a_department_code", departmentCode);
|
params.put("a_department_code", departmentCode);
|
||||||
|
|
||||||
|
session.clearCache();
|
||||||
mapper.getDepartmentArchievement(params);
|
mapper.getDepartmentArchievement(params);
|
||||||
|
|
||||||
Integer totalArchievement = (Integer)params.get("a_total");
|
Integer totalArchievement = (Integer)params.get("a_total");
|
||||||
|
@@ -208,7 +208,7 @@ public final class ImportBIExcelData
|
|||||||
MyPOIUtils.getNumbericCellValue( row, 10 ) * 100;
|
MyPOIUtils.getNumbericCellValue( row, 10 ) * 100;
|
||||||
|
|
||||||
BITelsalerAttachingRateRecord record = new BITelsalerAttachingRateRecord(
|
BITelsalerAttachingRateRecord record = new BITelsalerAttachingRateRecord(
|
||||||
departmentName, LocalDate.now(), name, motoPremium, nomotoPremium,
|
departmentName, name, motoPremium, nomotoPremium,
|
||||||
motoPremiumProPortion, attachingRate, attachingRateChange,
|
motoPremiumProPortion, attachingRate, attachingRateChange,
|
||||||
customerHandleRateCell, customerHandleRateChangeCell,
|
customerHandleRateCell, customerHandleRateChangeCell,
|
||||||
noMotoPremiumPerCustomerCell, noMotoPremiumPerCustomerChangeCell );
|
noMotoPremiumPerCustomerCell, noMotoPremiumPerCustomerChangeCell );
|
||||||
|
@@ -73,7 +73,7 @@ public class StaffInfoQueryController
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
saler = TeleSalerInfo.queryTeleSalerInfo( telSaler.getTelSalerCode() );
|
saler = TeleSalerInfo.queryTeleSalerInfo( telSaler.getTelSaler() );
|
||||||
|
|
||||||
// 根据返回结果是否为 null,判断是否查询到坐席信息
|
// 根据返回结果是否为 null,判断是否查询到坐席信息
|
||||||
if ( saler != null )
|
if ( saler != null )
|
||||||
|
@@ -17,19 +17,19 @@ public class TelsalerQueryRequest
|
|||||||
|
|
||||||
public TelsalerQueryRequest( String telSalerCode )
|
public TelsalerQueryRequest( String telSalerCode )
|
||||||
{
|
{
|
||||||
this.telSalerCode = telSalerCode;
|
this.telSaler = telSalerCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTelSalerCode()
|
public String getTelSaler()
|
||||||
{
|
{
|
||||||
return telSalerCode;
|
return telSaler;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTelSalerCode( String telSalerCode )
|
public void setTelSaler( String telSalerCode )
|
||||||
{
|
{
|
||||||
this.telSalerCode = telSalerCode;
|
this.telSaler = telSalerCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonProperty("telsaler_code")
|
@JsonProperty("telsaler")
|
||||||
private String telSalerCode;
|
private String telSaler;
|
||||||
}
|
}
|
@@ -0,0 +1,202 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-11-01 16:48:56
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/BIReportController.java
|
||||||
|
* @Description: BI报表相关的controller
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
package com.cpic.xim.web.controllers.archievement.bi;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import org.apache.ibatis.exceptions.PersistenceException;
|
||||||
|
import org.apache.ibatis.session.SqlSession;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
import com.cpic.xim.mybatis.mapper.QueryBIArchievementDataMapper;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BIDepartmentAttachingRateRecord;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BIDepartmentRenewalRateRecord;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord;
|
||||||
|
import com.cpic.xim.mybatis.utils.MybatisUtils;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
@RequestMapping( method = RequestMethod.POST, path = "/archievement" )
|
||||||
|
public class BIReportController
|
||||||
|
{
|
||||||
|
private static Logger logger = LoggerFactory.getLogger( BIReportController.class );
|
||||||
|
|
||||||
|
@PostMapping( path = "/bi_telsaler_attachingrate.do" )
|
||||||
|
@ResponseBody
|
||||||
|
public QueryTelsalerAttachingRateReportResponse queryTelsalerAttachingRateRepor()
|
||||||
|
{
|
||||||
|
QueryTelsalerAttachingRateReportResponse response =
|
||||||
|
new QueryTelsalerAttachingRateReportResponse();
|
||||||
|
SqlSession session = null;
|
||||||
|
QueryBIArchievementDataMapper mapper = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
session = MybatisUtils.getSqlSession();
|
||||||
|
mapper = session.getMapper( QueryBIArchievementDataMapper.class );
|
||||||
|
|
||||||
|
session.clearCache();
|
||||||
|
List<BITelsalerAttachingRateRecord> records =
|
||||||
|
mapper.queryBITelsalerAttachingRate();
|
||||||
|
|
||||||
|
response.setSuccess( true );
|
||||||
|
response.setMessage( "查询成功" );
|
||||||
|
response.setRecords( records );
|
||||||
|
}
|
||||||
|
catch ( IOException error )
|
||||||
|
{
|
||||||
|
logger.error("查询BI坐席渗透率报表出现IOException异常,异常内容:", error);
|
||||||
|
|
||||||
|
response.setSuccess( false );
|
||||||
|
response.setMessage( "查询失败,原因" + error.getMessage() );
|
||||||
|
response.setRecords( null );
|
||||||
|
}
|
||||||
|
catch ( PersistenceException error )
|
||||||
|
{
|
||||||
|
logger.error("查询BI坐席渗透率报表出现PersistenceException异常,异常内容:", error);
|
||||||
|
|
||||||
|
response.setSuccess( false );
|
||||||
|
response.setMessage( "查询失败,原因" + error.getMessage() );
|
||||||
|
response.setRecords( null );
|
||||||
|
}
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping( path="/bi_telsaler_renewalrate.do" )
|
||||||
|
@ResponseBody
|
||||||
|
public QueryTelsalerRenewalRateReportResponse queryTelsalerRenewalRateReport()
|
||||||
|
{
|
||||||
|
QueryTelsalerRenewalRateReportResponse response = new QueryTelsalerRenewalRateReportResponse();
|
||||||
|
SqlSession session = null;
|
||||||
|
QueryBIArchievementDataMapper mapper = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
session = MybatisUtils.getSqlSession();
|
||||||
|
mapper = session.getMapper(QueryBIArchievementDataMapper.class);
|
||||||
|
|
||||||
|
session.clearCache();
|
||||||
|
ArrayList<BITelsalerRenewalRateRecord> records = mapper.queryBITesalerRenewalRate();
|
||||||
|
|
||||||
|
response.setSuccess( true );
|
||||||
|
response.setMessage("查询成功");
|
||||||
|
response.setRecords(records);
|
||||||
|
}
|
||||||
|
catch ( IOException error )
|
||||||
|
{
|
||||||
|
logger.error("查询BI坐席续保率报表出现IOException异常,异常内容:", error);
|
||||||
|
|
||||||
|
response.setSuccess( false );
|
||||||
|
response.setMessage( "查询失败,原因" + error.getMessage() );
|
||||||
|
response.setRecords( null );
|
||||||
|
}
|
||||||
|
catch ( PersistenceException error )
|
||||||
|
{
|
||||||
|
logger.error("查询BI坐席续保率报表出现PersistenceException异常,异常内容:", error);
|
||||||
|
|
||||||
|
response.setSuccess( false );
|
||||||
|
response.setMessage( "查询失败,原因" + error.getMessage() );
|
||||||
|
response.setRecords( null );
|
||||||
|
}
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping( path = "/bi_department_attachingrate.do" )
|
||||||
|
@ResponseBody
|
||||||
|
public QueryDepartmentAttachingRateReportResponse queryDepartmentAttachingRateRepor()
|
||||||
|
{
|
||||||
|
QueryDepartmentAttachingRateReportResponse response =
|
||||||
|
new QueryDepartmentAttachingRateReportResponse();
|
||||||
|
SqlSession session = null;
|
||||||
|
QueryBIArchievementDataMapper mapper = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
session = MybatisUtils.getSqlSession();
|
||||||
|
mapper = session.getMapper( QueryBIArchievementDataMapper.class );
|
||||||
|
|
||||||
|
session.clearCache();
|
||||||
|
ArrayList<BIDepartmentAttachingRateRecord> records =
|
||||||
|
mapper.queryBIDepartmentAttachingRate();
|
||||||
|
|
||||||
|
response.setSuccess( true );
|
||||||
|
response.setMessage( "查询成功" );
|
||||||
|
response.setRecords( records );
|
||||||
|
}
|
||||||
|
catch ( IOException error )
|
||||||
|
{
|
||||||
|
logger.error("查询BI机构渗透率报表出现IOException异常,异常内容:", error);
|
||||||
|
|
||||||
|
response.setSuccess( false );
|
||||||
|
response.setMessage( "查询失败,原因" + error.getMessage() );
|
||||||
|
response.setRecords( null );
|
||||||
|
}
|
||||||
|
catch ( PersistenceException error )
|
||||||
|
{
|
||||||
|
logger.error("查询BI机构渗透率报表出现PersistenceException异常,异常内容:", error);
|
||||||
|
|
||||||
|
response.setSuccess( false );
|
||||||
|
response.setMessage( "查询失败,原因" + error.getMessage() );
|
||||||
|
response.setRecords( null );
|
||||||
|
}
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping( path = "/bi_department_renewalrate.do" )
|
||||||
|
@ResponseBody
|
||||||
|
public QueryDepartmentRenewalRateReportResponse queryDepartmentRenewalRateRepor()
|
||||||
|
{
|
||||||
|
QueryDepartmentRenewalRateReportResponse response =
|
||||||
|
new QueryDepartmentRenewalRateReportResponse();
|
||||||
|
SqlSession session = null;
|
||||||
|
QueryBIArchievementDataMapper mapper = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
session = MybatisUtils.getSqlSession();
|
||||||
|
mapper = session.getMapper( QueryBIArchievementDataMapper.class );
|
||||||
|
|
||||||
|
session.clearCache();
|
||||||
|
ArrayList<BIDepartmentRenewalRateRecord> records =
|
||||||
|
mapper.queryBIDepartmentRenewalRate();
|
||||||
|
|
||||||
|
response.setSuccess( true );
|
||||||
|
response.setMessage( "查询成功" );
|
||||||
|
response.setRecords( records );
|
||||||
|
}
|
||||||
|
catch ( IOException error )
|
||||||
|
{
|
||||||
|
logger.error("查询BI机构渗透率报表出现IOException异常,异常内容:", error);
|
||||||
|
|
||||||
|
response.setSuccess( false );
|
||||||
|
response.setMessage( "查询失败,原因" + error.getMessage() );
|
||||||
|
response.setRecords( null );
|
||||||
|
}
|
||||||
|
catch ( PersistenceException error )
|
||||||
|
{
|
||||||
|
logger.error("查询BI机构渗透率报表出现PersistenceException异常,异常内容:", error);
|
||||||
|
|
||||||
|
response.setSuccess( false );
|
||||||
|
response.setMessage( "查询失败,原因" + error.getMessage() );
|
||||||
|
response.setRecords( null );
|
||||||
|
}
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,91 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-11-02 11:21:03
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryDepartmentAttachingRateReportResponse.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-11-01 16:51:53
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryTelsalerAttachingRateReportResponse.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
package com.cpic.xim.web.controllers.archievement.bi;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import com.cpic.xim.mybatis.pojo.*;
|
||||||
|
import com.cpic.xim.web.controllers.QueryResponse;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
public class QueryDepartmentAttachingRateReportResponse extends QueryResponse
|
||||||
|
{
|
||||||
|
@JsonProperty("records")
|
||||||
|
ArrayList<BIDepartmentAttachingRateRecord> records;
|
||||||
|
|
||||||
|
public QueryDepartmentAttachingRateReportResponse( boolean success, String message,
|
||||||
|
ArrayList<BIDepartmentAttachingRateRecord> records )
|
||||||
|
{
|
||||||
|
super( success, message );
|
||||||
|
this.records = records;
|
||||||
|
}
|
||||||
|
|
||||||
|
public QueryDepartmentAttachingRateReportResponse()
|
||||||
|
{
|
||||||
|
super( false, "" );
|
||||||
|
|
||||||
|
this.records = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<BIDepartmentAttachingRateRecord> getRecords()
|
||||||
|
{
|
||||||
|
return records;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecords( ArrayList<BIDepartmentAttachingRateRecord> records )
|
||||||
|
{
|
||||||
|
this.records = records;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return "QueryTelsalerAttachingRateReportResponse [records=" + records + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
final int prime = 31;
|
||||||
|
int result = super.hashCode();
|
||||||
|
result = prime * result + ((records == null) ? 0 : records.hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals( Object obj )
|
||||||
|
{
|
||||||
|
if ( this == obj )
|
||||||
|
return true;
|
||||||
|
if ( !super.equals( obj ) )
|
||||||
|
return false;
|
||||||
|
if ( getClass() != obj.getClass() )
|
||||||
|
return false;
|
||||||
|
QueryDepartmentAttachingRateReportResponse other =
|
||||||
|
(QueryDepartmentAttachingRateReportResponse) obj;
|
||||||
|
if ( records == null )
|
||||||
|
{
|
||||||
|
if ( other.records != null )
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if ( !records.equals( other.records ) )
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,100 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-11-02 16:56:50
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryDepartmentRenewalRateReportResponse.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-11-02 11:21:03
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryDepartmentAttachingRateReportResponse.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-11-01 16:51:53
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryTelsalerAttachingRateReportResponse.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
package com.cpic.xim.web.controllers.archievement.bi;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import com.cpic.xim.mybatis.pojo.*;
|
||||||
|
import com.cpic.xim.web.controllers.QueryResponse;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
public class QueryDepartmentRenewalRateReportResponse extends QueryResponse
|
||||||
|
{
|
||||||
|
@JsonProperty("records")
|
||||||
|
ArrayList<BIDepartmentRenewalRateRecord> records;
|
||||||
|
|
||||||
|
public QueryDepartmentRenewalRateReportResponse( boolean success, String message,
|
||||||
|
ArrayList<BIDepartmentRenewalRateRecord> records )
|
||||||
|
{
|
||||||
|
super( success, message );
|
||||||
|
this.records = records;
|
||||||
|
}
|
||||||
|
|
||||||
|
public QueryDepartmentRenewalRateReportResponse()
|
||||||
|
{
|
||||||
|
super( false, "" );
|
||||||
|
|
||||||
|
this.records = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<BIDepartmentRenewalRateRecord> getRecords()
|
||||||
|
{
|
||||||
|
return records;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecords( ArrayList<BIDepartmentRenewalRateRecord> records )
|
||||||
|
{
|
||||||
|
this.records = records;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return "QueryTelsalerAttachingRateReportResponse [records=" + records + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
final int prime = 31;
|
||||||
|
int result = super.hashCode();
|
||||||
|
result = prime * result + ((records == null) ? 0 : records.hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals( Object obj )
|
||||||
|
{
|
||||||
|
if ( this == obj )
|
||||||
|
return true;
|
||||||
|
if ( !super.equals( obj ) )
|
||||||
|
return false;
|
||||||
|
if ( getClass() != obj.getClass() )
|
||||||
|
return false;
|
||||||
|
QueryDepartmentRenewalRateReportResponse other =
|
||||||
|
(QueryDepartmentRenewalRateReportResponse) obj;
|
||||||
|
if ( records == null )
|
||||||
|
{
|
||||||
|
if ( other.records != null )
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if ( !records.equals( other.records ) )
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-11-01 16:51:53
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryTelsalerAttachingRateReportResponse.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
package com.cpic.xim.web.controllers.archievement.bi;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord;
|
||||||
|
import com.cpic.xim.web.controllers.QueryResponse;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
public class QueryTelsalerAttachingRateReportResponse extends QueryResponse
|
||||||
|
{
|
||||||
|
@JsonProperty("records")
|
||||||
|
List<BITelsalerAttachingRateRecord> records;
|
||||||
|
|
||||||
|
public QueryTelsalerAttachingRateReportResponse( boolean success, String message,
|
||||||
|
ArrayList<BITelsalerAttachingRateRecord> records )
|
||||||
|
{
|
||||||
|
super( success, message );
|
||||||
|
this.records = records;
|
||||||
|
}
|
||||||
|
|
||||||
|
public QueryTelsalerAttachingRateReportResponse()
|
||||||
|
{
|
||||||
|
super( false, "" );
|
||||||
|
|
||||||
|
this.records = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<BITelsalerAttachingRateRecord> getRecords()
|
||||||
|
{
|
||||||
|
return records;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecords( List<BITelsalerAttachingRateRecord> records )
|
||||||
|
{
|
||||||
|
this.records = records;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return "QueryTelsalerAttachingRateReportResponse [records=" + records + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
final int prime = 31;
|
||||||
|
int result = super.hashCode();
|
||||||
|
result = prime * result + ((records == null) ? 0 : records.hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals( Object obj )
|
||||||
|
{
|
||||||
|
if ( this == obj )
|
||||||
|
return true;
|
||||||
|
if ( !super.equals( obj ) )
|
||||||
|
return false;
|
||||||
|
if ( getClass() != obj.getClass() )
|
||||||
|
return false;
|
||||||
|
QueryTelsalerAttachingRateReportResponse other =
|
||||||
|
(QueryTelsalerAttachingRateReportResponse) obj;
|
||||||
|
if ( records == null )
|
||||||
|
{
|
||||||
|
if ( other.records != null )
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if ( !records.equals( other.records ) )
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,92 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-11-02 16:54:42
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryTelsalerRenewalRateReportResponse.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-11-01 16:51:53
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryTelsalerAttachingRateReportResponse.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
package com.cpic.xim.web.controllers.archievement.bi;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord;
|
||||||
|
import com.cpic.xim.web.controllers.QueryResponse;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
public class QueryTelsalerRenewalRateReportResponse extends QueryResponse
|
||||||
|
{
|
||||||
|
@JsonProperty("records")
|
||||||
|
ArrayList<BITelsalerRenewalRateRecord> records;
|
||||||
|
|
||||||
|
public QueryTelsalerRenewalRateReportResponse( boolean success, String message,
|
||||||
|
ArrayList<BITelsalerRenewalRateRecord> records )
|
||||||
|
{
|
||||||
|
super( success, message );
|
||||||
|
this.records = records;
|
||||||
|
}
|
||||||
|
|
||||||
|
public QueryTelsalerRenewalRateReportResponse()
|
||||||
|
{
|
||||||
|
super( false, "" );
|
||||||
|
|
||||||
|
this.records = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<BITelsalerRenewalRateRecord> getRecords()
|
||||||
|
{
|
||||||
|
return records;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecords( ArrayList<BITelsalerRenewalRateRecord> records )
|
||||||
|
{
|
||||||
|
this.records = records;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return "QueryTelsalerAttachingRateReportResponse [records=" + records + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
final int prime = 31;
|
||||||
|
int result = super.hashCode();
|
||||||
|
result = prime * result + ((records == null) ? 0 : records.hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals( Object obj )
|
||||||
|
{
|
||||||
|
if ( this == obj )
|
||||||
|
return true;
|
||||||
|
if ( !super.equals( obj ) )
|
||||||
|
return false;
|
||||||
|
if ( getClass() != obj.getClass() )
|
||||||
|
return false;
|
||||||
|
QueryTelsalerRenewalRateReportResponse other =
|
||||||
|
(QueryTelsalerRenewalRateReportResponse) obj;
|
||||||
|
if ( records == null )
|
||||||
|
{
|
||||||
|
if ( other.records != null )
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if ( !records.equals( other.records ) )
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -4,7 +4,7 @@
|
|||||||
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} ### %msg%n" />
|
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} ### %msg%n" />
|
||||||
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
|
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
|
||||||
</Console>
|
</Console>
|
||||||
<RollingFile name="rolling_file" filename="d:/logs/桌面霸屏/app.log"
|
<RollingFile name="rolling_file_win" filename="d:/logs/桌面霸屏/app.log"
|
||||||
filePattern="d:/logs/桌面霸屏/logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
|
filePattern="d:/logs/桌面霸屏/logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
|
||||||
<PatternLayout>
|
<PatternLayout>
|
||||||
<Pattern>[%t][%level][%d{HH:mm:ss.SSS}][%logger.%M{36}#%L] %msg%n</Pattern>
|
<Pattern>[%t][%level][%d{HH:mm:ss.SSS}][%logger.%M{36}#%L] %msg%n</Pattern>
|
||||||
@@ -15,13 +15,25 @@
|
|||||||
<DefaultRolloverStrategy max="20" />
|
<DefaultRolloverStrategy max="20" />
|
||||||
</Policies>
|
</Policies>
|
||||||
</RollingFile>
|
</RollingFile>
|
||||||
|
<RollingFile name="rolling_file_linux" filename="/logs/桌面霸屏/app.log"
|
||||||
|
filePattern="/logs/桌面霸屏/logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
|
||||||
|
<PatternLayout>
|
||||||
|
<Pattern>[%t][%level][%d{HH:mm:ss.SSS}][%logger.%M{36}#%L] %msg%n</Pattern>
|
||||||
|
</PatternLayout>
|
||||||
|
<Policies>
|
||||||
|
<TimeBasedTriggeringPolicy interval="1" />
|
||||||
|
<SizeBasedTriggeringPolicy size="20MB" />
|
||||||
|
<DefaultRolloverStrategy max="20" />
|
||||||
|
</Policies>
|
||||||
|
</RollingFile>
|
||||||
</Appenders>
|
</Appenders>
|
||||||
<Loggers>
|
<Loggers>
|
||||||
<!-- <Logger name="mylog" level="info">
|
<!-- <Logger name="mylog" level="info">
|
||||||
<AppenderRef ref="rolling_file" />
|
<AppenderRef ref="rolling_file" />
|
||||||
</Logger> -->
|
</Logger> -->
|
||||||
<Root level="debug">
|
<Root level="debug">
|
||||||
<AppenderRef ref="rolling_file" />
|
<AppenderRef ref="rolling_file_linux" />
|
||||||
|
<AppenderRef ref="rolling_file_win" />
|
||||||
<AppenderRef ref="Console" />
|
<AppenderRef ref="Console" />
|
||||||
</Root>
|
</Root>
|
||||||
</Loggers>
|
</Loggers>
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.cpic.xim.mybatis.mapper.ArchievementMapper">
|
<mapper namespace="com.cpic.xim.mybatis.mapper.ArchievementMapper">
|
||||||
<select id="getDepartmentArchievement" flushCache="true" statementType="CALLABLE" parameterType="java.util.HashMap">
|
<select id="getDepartmentArchievement" useCache="false" flushCache="true" statementType="CALLABLE" parameterType="java.util.HashMap">
|
||||||
call telsale_archievement_pkg.department_archievement(
|
call telsale_archievement_pkg.department_archievement(
|
||||||
#{a_department_code, mode=IN, jdbcType=VARCHAR},
|
#{a_department_code, mode=IN, jdbcType=VARCHAR},
|
||||||
#{a_attaching_rate, mode=OUT, jdbcType=VARCHAR},
|
#{a_attaching_rate, mode=OUT, jdbcType=VARCHAR},
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
#{a_total, mode=OUT, jdbcType=INTEGER, javaType=Integer},
|
#{a_total, mode=OUT, jdbcType=INTEGER, javaType=Integer},
|
||||||
#{a_mensual_cur, mode=OUT, jdbcType=CURSOR, resultMap=MensualArchievementMapper})
|
#{a_mensual_cur, mode=OUT, jdbcType=CURSOR, resultMap=MensualArchievementMapper})
|
||||||
</select>
|
</select>
|
||||||
<select id="getCallerArchievement" flushCache="true" statementType="CALLABLE" parameterType="java.util.HashMap">
|
<select id="getCallerArchievement" useCache="false" flushCache="true" statementType="CALLABLE" parameterType="java.util.HashMap">
|
||||||
call telsale_archievement_pkg.caller_archievement(
|
call telsale_archievement_pkg.caller_archievement(
|
||||||
#{a_caller_code, mode=IN, jdbcType=VARCHAR},
|
#{a_caller_code, mode=IN, jdbcType=VARCHAR},
|
||||||
#{a_attaching_rate, mode=OUT, jdbcType=VARCHAR},
|
#{a_attaching_rate, mode=OUT, jdbcType=VARCHAR},
|
||||||
|
@@ -38,7 +38,7 @@
|
|||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<select id="cleanTelsalerAttachingRateData" statementType="CALLABLE">
|
<select id="cleanTelsalerAttachingRateData" statementType="CALLABLE">
|
||||||
call telsale_bi_utils.清理BI电销坐席车非渗透跟踪表()
|
call telsale_bi_utils.清理BI电销坐席车非渗透率跟踪表()
|
||||||
</select>
|
</select>
|
||||||
<select id="cleanTelsalerRenewalRateData" statementType="CALLABLE">
|
<select id="cleanTelsalerRenewalRateData" statementType="CALLABLE">
|
||||||
call telsale_bi_utils.清理BI电销坐席续保率跟踪表()
|
call telsale_bi_utils.清理BI电销坐席续保率跟踪表()
|
||||||
|
@@ -0,0 +1,124 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.cpic.xim.mybatis.mapper.QueryBIArchievementDataMapper">
|
||||||
|
|
||||||
|
<!-- 查询坐席车非渗透率报表 -->
|
||||||
|
<select id="queryBITelsalerAttachingRate" statementType="STATEMENT" resultMap="BITelsalerAttachingRate" useCache="false" flushCache="true">
|
||||||
|
SELECT t.部门,
|
||||||
|
t.经办,
|
||||||
|
t."车险保费(万)" as 车险保费,
|
||||||
|
t.车险保费占比,
|
||||||
|
t."非车保费(万)" as 非车保费,
|
||||||
|
t.当月保费渗透率,
|
||||||
|
t.保费渗透率环比上月,
|
||||||
|
t.当月客户渗透率,
|
||||||
|
t.客户渗透率环比上月,
|
||||||
|
t.当月车非客均保费,
|
||||||
|
t.客均保费环比上月
|
||||||
|
FROM BI电销坐席车非渗透率跟踪表 t
|
||||||
|
ORDER BY t.部门
|
||||||
|
</select>
|
||||||
|
<!-- 坐席车非渗透率报表记录 -->
|
||||||
|
<resultMap id="BITelsalerAttachingRate" type="com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord">
|
||||||
|
<result property="departmentName" column="部门" javaType="String" jdbcType="VARCHAR" />
|
||||||
|
<result property="telsalerName" column="经办" javaType="String" jdbcType="VARCHAR" />
|
||||||
|
<result property="motoPremium" column="车险保费" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="motoPremiumProportion" column="车险保费占比" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="nomotoPremium" column="非车保费" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="attachingRate" column="当月保费渗透率" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="attachingRateChange" column="保费渗透率环比上月" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="customerHandleRate" column="当月客户渗透率" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="customerHandleRateChange" column="客户渗透率环比上月" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="noMotoPremiumPerCustomer" column="当月车非客均保费" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="noMotoPremiumPerCustomerChange" column="客均保费环比上月" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<!-- 坐席续保率 -->
|
||||||
|
<select id="queryBITesalerRenewalRate" statementType="STATEMENT" resultMap="BITelsalerRenewalRate" useCache="false" flushCache="true">
|
||||||
|
select t.责任部门,
|
||||||
|
t.责任人,
|
||||||
|
t."机构目标值1(%)" as 机构目标值,
|
||||||
|
t."到期数-全月" as 到期数全月,
|
||||||
|
t."序时到期数占比(%)" as 序时到期数占比,
|
||||||
|
t."个车续保率(序时)(%)" as 个车续保率序时,
|
||||||
|
t."个车续保率(全月)(%)" as 个车续保率全月,
|
||||||
|
t."环比昨日(%)" as 环比昨日,
|
||||||
|
t."环比上月(%)" as 环比上月,
|
||||||
|
t.平均提前签单天数,
|
||||||
|
t.环比
|
||||||
|
from BI电销坐席续保率跟踪表 t
|
||||||
|
</select>
|
||||||
|
<resultMap id="BITelsalerRenewalRate" type="com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord">
|
||||||
|
<result property="责任部门" column="责任部门" javaType="String" jdbcType="VARCHAR" />
|
||||||
|
<result property="责任人" column="责任人" javaType="String" jdbcType="VARCHAR" />
|
||||||
|
<result property="机构目标值" column="机构目标值" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="到期数全月" column="到期数全月" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="序时到期数占比" column="序时到期数占比" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="个车续保率序时" column="个车续保率序时" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="个车续保率全月" column="个车续保率全月" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="环比昨日" column="环比昨日" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="环比上月" column="环比上月" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="平均提前签单天数" column="平均提前签单天数" javaType="int" jdbcType="DOUBLE" />
|
||||||
|
<result property="环比" column="环比" javaType="int" jdbcType="DOUBLE" />
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<!-- 机构渗透率 -->
|
||||||
|
<select id="queryBIDepartmentAttachingRate" statementType="STATEMENT" resultMap="BIDepartmentAttachingRate" useCache="false" flushCache="true">
|
||||||
|
select t.部门,
|
||||||
|
t."目标值-机构" as 目标值机构,
|
||||||
|
t.目标差距,
|
||||||
|
t.车险保费,
|
||||||
|
t.车险保费占比,
|
||||||
|
t.非车保费,
|
||||||
|
t.当月保费渗透率,
|
||||||
|
t.保费渗透率环比上月,
|
||||||
|
t.当月客户渗透率,
|
||||||
|
t.客户渗透率环比上月,
|
||||||
|
t.当月车非客均保费,
|
||||||
|
t.客均保费环比上月,
|
||||||
|
t.车险客户数
|
||||||
|
from BI机构渗透率跟踪表 t
|
||||||
|
</select>
|
||||||
|
<resultMap id="BIDepartmentAttachingRate" type="com.cpic.xim.mybatis.pojo.BIDepartmentAttachingRateRecord">
|
||||||
|
<result column="部门" property="departmentName" jdbcType="VARCHAR" javaType="String" />
|
||||||
|
<result column="目标值机构" property="departmentObject" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="目标差距" property="objectGap" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="车险保费" property="motoPremium" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="车险保费占比" property="motoPremiumProPortion" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="非车保费" property="nomotoPremium" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="当月保费渗透率" property="attachingRate" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="保费渗透率环比上月" property="attachingRateChange" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="当月客户渗透率" property="customerHandleRate" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="客户渗透率环比上月" property="customerHandleRateChange" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="当月车非客均保费" property="premiumPerCustomer" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="客均保费环比上月" property="premiumPerCustomerChange" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="车险客户数" property="motoInsuranceCustomerCount" jdbcType="INTEGER" javaType="int" />
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<!-- 机构续保率 -->
|
||||||
|
<select id="queryBIDepartmentRenewalRate" statementType="STATEMENT" resultMap="BIDepartmentRenewalRate" useCache="false" flushCache="true">
|
||||||
|
select t.责任部门,
|
||||||
|
t."机构目标值1(%)" as 机构目标值,
|
||||||
|
t."到期数-全月" as 到期数全月,
|
||||||
|
t."序时到期数占比(%)" as 序时到期数占比,
|
||||||
|
t."个车续保率(序时)(%)" as 个车续保率序时,
|
||||||
|
t."个车续保率(全月)(%)" as 个车续保率全月,
|
||||||
|
t."环比昨日(%)" as 环比昨日,
|
||||||
|
t."环比上月(%)" as 环比上月,
|
||||||
|
t.平均提前签单天数,
|
||||||
|
t.环比
|
||||||
|
from BI机构当月个车续保率跟踪表 t
|
||||||
|
</select>
|
||||||
|
<resultMap id="BIDepartmentRenewalRate" type="com.cpic.xim.mybatis.pojo.BIDepartmentRenewalRateRecord">
|
||||||
|
<result column="责任部门" property="责任部门" jdbcType="VARCHAR" javaType="String" />
|
||||||
|
<result column="机构目标值" property="机构目标值" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="到期数全月" property="到期数全月" jdbcType="INTEGER" javaType="int" />
|
||||||
|
<result column="序时到期数占比" property="序时到期数占比" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="个车续保率序时" property="个车续保率序时" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="个车续保率全月" property="个车续保率全月" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="环比昨日" property="环比昨日" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="环比上月" property="环比上月" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
<result column="平均提前签单天数" property="平均提前签单天数" jdbcType="INTEGER" javaType="int" />
|
||||||
|
<result column="环比" property="环比" jdbcType="DOUBLE" javaType="double" />
|
||||||
|
</resultMap>
|
||||||
|
</mapper>
|
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.cpic.xim.mybatis.mapper.RewardsMapper">
|
<mapper namespace="com.cpic.xim.mybatis.mapper.RewardsMapper">
|
||||||
<select id="queryRewardProjects" resultMap="RewardProjectMap">
|
<select id="queryRewardProjects" statementType="STATEMENT" resultMap="RewardProjectMap" useCache="false" flushCache="true">
|
||||||
select reward_index, reward_name from reward_projects order by reward_index desc
|
select reward_index, reward_name from reward_projects order by reward_index desc
|
||||||
</select>
|
</select>
|
||||||
<resultMap id="RewardProjectMap" type="com.cpic.xim.mybatis.pojo.RewardProject">
|
<resultMap id="RewardProjectMap" type="com.cpic.xim.mybatis.pojo.RewardProject">
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
<result property="rewardName" column="reward_name" javaType="String"/>
|
<result property="rewardName" column="reward_name" javaType="String"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<select id="queryRewardTelsaler" flushCache="true" resultMap="RewardGainerMapper">
|
<select id="queryRewardTelsaler" statementType="STATEMENT" resultMap="RewardGainerMapper" useCache="false" flushCache="true">
|
||||||
SELECT hjr.rec_id rec_id,
|
SELECT hjr.rec_id rec_id,
|
||||||
hjr.telsaler_name telsaler_name,
|
hjr.telsaler_name telsaler_name,
|
||||||
hjr.telsaler_code telsaler_code,
|
hjr.telsaler_code telsaler_code,
|
||||||
@@ -28,20 +28,20 @@
|
|||||||
<result column="reward_index" property="rewardProjectCode" />
|
<result column="reward_index" property="rewardProjectCode" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<select id="addRewardTelSaler" flushCache="true" statementType="CALLABLE" parameterType="java.util.HashMap">
|
<select id="addRewardTelSaler" statementType="CALLABLE" parameterType="java.util.HashMap" useCache="false" flushCache="true" >
|
||||||
call telsaler_reward_pkg.add_telsaler_reward(
|
call telsaler_reward_pkg.add_telsaler_reward(
|
||||||
#{a_reward_index,mode=IN,jdbcType=VARCHAR},
|
#{a_reward_index,mode=IN,jdbcType=VARCHAR},
|
||||||
#{a_telsaler_name,mode=IN,jdbcType=VARCHAR})
|
#{a_telsaler_name,mode=IN,jdbcType=VARCHAR})
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 删除获奖坐席记录 -->
|
<!-- 删除获奖坐席记录 -->
|
||||||
<select id="deleteRewardTelSaler" flushCache="true" statementType="CALLABLE" parameterType="java.util.HashMap">
|
<select id="deleteRewardTelSaler" statementType="CALLABLE" parameterType="java.util.HashMap" useCache="false" flushCache="true" >
|
||||||
call telsaler_reward_pkg.delete_telsaler_reward(
|
call telsaler_reward_pkg.delete_telsaler_reward(
|
||||||
#{a_rec_id,mode=IN,jdbcType=INTEGER})
|
#{a_rec_id,mode=IN,jdbcType=INTEGER})
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 更新获奖坐席 -->
|
<!-- 更新获奖坐席 -->
|
||||||
<select id="updateRewardTelSaler" statementType="CALLABLE" flushCache="true" parameterType="java.util.HashMap" >
|
<select id="updateRewardTelSaler" statementType="CALLABLE" parameterType="java.util.HashMap" useCache="false" flushCache="true" >
|
||||||
call telsaler_reward_pkg.update_telsaler_reward(
|
call telsaler_reward_pkg.update_telsaler_reward(
|
||||||
#{a_rec_id,mode=IN,jdbcType=INTEGER},
|
#{a_rec_id,mode=IN,jdbcType=INTEGER},
|
||||||
#{a_telsaler_name,mode=IN,jdbcType=VARCHAR},
|
#{a_telsaler_name,mode=IN,jdbcType=VARCHAR},
|
||||||
|
@@ -3,6 +3,11 @@
|
|||||||
<configuration>
|
<configuration>
|
||||||
<properties resource="mybatis/jdbc.properties" />
|
<properties resource="mybatis/jdbc.properties" />
|
||||||
|
|
||||||
|
<settings>
|
||||||
|
<!-- 二级缓存开启 -->
|
||||||
|
<setting name="cacheEnabled" value="false" />
|
||||||
|
</settings>
|
||||||
|
|
||||||
<!-- 类型别名 -->
|
<!-- 类型别名 -->
|
||||||
<typeAliases>
|
<typeAliases>
|
||||||
<package name="com.cpic.xim.mybatis.pojo" />
|
<package name="com.cpic.xim.mybatis.pojo" />
|
||||||
@@ -26,6 +31,8 @@
|
|||||||
<mapper resource="mybatis/mapper/ArchievementMapper.xml" />
|
<mapper resource="mybatis/mapper/ArchievementMapper.xml" />
|
||||||
<mapper resource="mybatis/mapper/RankingListMapper.xml" />
|
<mapper resource="mybatis/mapper/RankingListMapper.xml" />
|
||||||
<mapper resource="mybatis/mapper/RewardsMapper.xml" />
|
<mapper resource="mybatis/mapper/RewardsMapper.xml" />
|
||||||
<mapper resource="mybatis/mapper/ImportBIArchievementDataMapper.xml" />
|
<mapper resource="mybatis/mapper/ImportBIArchievementDataMapper.xml" />
|
||||||
|
<mapper resource="mybatis/mapper/QueryBIArchievementDataMapper.xml" />
|
||||||
</mappers>
|
</mappers>
|
||||||
|
|
||||||
</configuration>
|
</configuration>
|
Reference in New Issue
Block a user