Compare commits
2 Commits
eeb01604b2
...
f9392ea2eb
Author | SHA1 | Date |
---|---|---|
Kane Wang | f9392ea2eb | |
Kane Wang | 8b23d4ad4a |
|
@ -78,6 +78,7 @@ build/Release
|
||||||
|
|
||||||
# Dependency directories
|
# Dependency directories
|
||||||
node_modules/
|
node_modules/
|
||||||
|
node_modules_bak/
|
||||||
jspm_packages/
|
jspm_packages/
|
||||||
|
|
||||||
# Snowpack dependency directory (https://snowpack.dev/)
|
# Snowpack dependency directory (https://snowpack.dev/)
|
||||||
|
|
|
@ -160,11 +160,12 @@ CREATE OR REPLACE PACKAGE BODY telsale_archievement_pkg IS
|
||||||
-- 续保率排行榜
|
-- 续保率排行榜
|
||||||
OPEN a_renewal_ranking_list FOR
|
OPEN a_renewal_ranking_list FOR
|
||||||
SELECT 坐席名称,
|
SELECT 坐席名称,
|
||||||
round(nvl(已续保累计 / 到期数 * 100,
|
round(nvl((SUM(已续保累计) / SUM(到期数)) * 100,
|
||||||
0),
|
0),
|
||||||
2) 续保率
|
2) 续保率
|
||||||
FROM 坐席续保统计 xb
|
FROM 坐席续保统计 xb
|
||||||
WHERE xb.部门 = '续保业务部'
|
WHERE xb.部门 = l_department_name
|
||||||
|
GROUP BY 坐席名称
|
||||||
ORDER BY 续保率 DESC;
|
ORDER BY 续保率 DESC;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
|
|
@ -61,10 +61,17 @@ SELECT
|
||||||
2) 车非渗透率
|
2) 车非渗透率
|
||||||
FROM 坐席车非每日保费
|
FROM 坐席车非每日保费
|
||||||
WHERE 部门代码 = 'QDI'
|
WHERE 部门代码 = 'QDI'
|
||||||
AND 月份 = '06'
|
AND 月份 = '05'
|
||||||
|
AND 年份 = '2023'
|
||||||
GROUP BY 坐席名称
|
GROUP BY 坐席名称
|
||||||
ORDER BY 车非渗透率 DESC;
|
ORDER BY 车非渗透率 DESC;
|
||||||
|
|
||||||
--续保率
|
--续保率
|
||||||
SELECT *
|
SELECT 坐席名称,
|
||||||
FROM 坐席续保统计
|
round(nvl(SUM(已续保累计) / SUM(到期数) * 100,
|
||||||
|
0),
|
||||||
|
2) 续保率
|
||||||
|
FROM 坐席续保统计 xb
|
||||||
|
WHERE xb.部门 = '续保业务部'
|
||||||
|
GROUP BY 坐席名称
|
||||||
|
ORDER BY 坐席名称 DESC;
|
||||||
|
|
|
@ -13,26 +13,26 @@
|
||||||
"axios": "^1.4.0",
|
"axios": "^1.4.0",
|
||||||
"babel": "^6.23.0",
|
"babel": "^6.23.0",
|
||||||
"echarts": "^5.4.2",
|
"echarts": "^5.4.2",
|
||||||
"element-plus": "^2.3.5",
|
"element-plus": "^2.3.6",
|
||||||
"moment": "^2.29.4",
|
"moment": "^2.29.4",
|
||||||
"sass-loader": "^13.3.1",
|
"sass-loader": "^13.3.1",
|
||||||
"vue": "^3.3.4",
|
"vue": "^3.3.4",
|
||||||
"vue-router": "^4.2.1",
|
"vue-router": "^4.2.2",
|
||||||
"vuex": "^4.1.0"
|
"vuex": "^4.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/eslint-parser": "^7.21.8",
|
"@babel/eslint-parser": "^7.21.8",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.59.7",
|
"@typescript-eslint/eslint-plugin": "^5.59.9",
|
||||||
"@typescript-eslint/parser": "^5.59.7",
|
"@typescript-eslint/parser": "^5.59.9",
|
||||||
"@vitejs/plugin-vue": "^4.2.3",
|
"@vitejs/plugin-vue": "^4.2.3",
|
||||||
"@vue/cli-plugin-eslint": "^5.0.8",
|
"@vue/cli-plugin-eslint": "^5.0.8",
|
||||||
"eslint-config-recommended": "^4.1.0",
|
"eslint-config-recommended": "^4.1.0",
|
||||||
"eslint-config-standard-with-typescript": "^34.0.1",
|
"eslint-config-standard-with-typescript": "^35.0.0",
|
||||||
"eslint-plugin-vue": "^9.14.1",
|
"eslint-plugin-vue": "^9.14.1",
|
||||||
"node-sass": "^9.0.0",
|
"node-sass": "^9.0.0",
|
||||||
"sass": "^1.62.1",
|
"sass": "^1.62.1",
|
||||||
"style-loader": "^3.3.3",
|
"style-loader": "^3.3.3",
|
||||||
"typescript": "^5.0.4",
|
"typescript": "^5.1.3",
|
||||||
"vue-eslint-parser": "^9.3.0"
|
"vue-eslint-parser": "^9.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1528,15 +1528,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||||
"version": "5.59.7",
|
"version": "5.59.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.9.tgz",
|
||||||
"integrity": "sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==",
|
"integrity": "sha512-4uQIBq1ffXd2YvF7MAvehWKW3zVv/w+mSfRAu+8cKbfj3nwzyqJLNcZJpQ/WZ1HLbJDiowwmQ6NO+63nCA+fqA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/regexpp": "^4.4.0",
|
"@eslint-community/regexpp": "^4.4.0",
|
||||||
"@typescript-eslint/scope-manager": "5.59.7",
|
"@typescript-eslint/scope-manager": "5.59.9",
|
||||||
"@typescript-eslint/type-utils": "5.59.7",
|
"@typescript-eslint/type-utils": "5.59.9",
|
||||||
"@typescript-eslint/utils": "5.59.7",
|
"@typescript-eslint/utils": "5.59.9",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"grapheme-splitter": "^1.0.4",
|
"grapheme-splitter": "^1.0.4",
|
||||||
"ignore": "^5.2.0",
|
"ignore": "^5.2.0",
|
||||||
|
@ -1591,14 +1591,14 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/parser": {
|
"node_modules/@typescript-eslint/parser": {
|
||||||
"version": "5.59.7",
|
"version": "5.59.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.59.7.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.59.9.tgz",
|
||||||
"integrity": "sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==",
|
"integrity": "sha512-FsPkRvBtcLQ/eVK1ivDiNYBjn3TGJdXy2fhXX+rc7czWl4ARwnpArwbihSOHI2Peg9WbtGHrbThfBUkZZGTtvQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": "5.59.7",
|
"@typescript-eslint/scope-manager": "5.59.9",
|
||||||
"@typescript-eslint/types": "5.59.7",
|
"@typescript-eslint/types": "5.59.9",
|
||||||
"@typescript-eslint/typescript-estree": "5.59.7",
|
"@typescript-eslint/typescript-estree": "5.59.9",
|
||||||
"debug": "^4.3.4"
|
"debug": "^4.3.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -1614,26 +1614,26 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "5.59.7",
|
"version": "5.59.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.9.tgz",
|
||||||
"integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==",
|
"integrity": "sha512-8RA+E+w78z1+2dzvK/tGZ2cpGigBZ58VMEHDZtpE1v+LLjzrYGc8mMaTONSxKyEkz3IuXFM0IqYiGHlCsmlZxQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.59.7",
|
"@typescript-eslint/types": "5.59.9",
|
||||||
"@typescript-eslint/visitor-keys": "5.59.7"
|
"@typescript-eslint/visitor-keys": "5.59.9"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/type-utils": {
|
"node_modules/@typescript-eslint/type-utils": {
|
||||||
"version": "5.59.7",
|
"version": "5.59.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.59.9.tgz",
|
||||||
"integrity": "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==",
|
"integrity": "sha512-ksEsT0/mEHg9e3qZu98AlSrONAQtrSTljL3ow9CGej8eRo7pe+yaC/mvTjptp23Xo/xIf2mLZKC6KPv4Sji26Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/typescript-estree": "5.59.7",
|
"@typescript-eslint/typescript-estree": "5.59.9",
|
||||||
"@typescript-eslint/utils": "5.59.7",
|
"@typescript-eslint/utils": "5.59.9",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"tsutils": "^3.21.0"
|
"tsutils": "^3.21.0"
|
||||||
},
|
},
|
||||||
|
@ -1650,22 +1650,22 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/types": {
|
||||||
"version": "5.59.7",
|
"version": "5.59.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.59.7.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.59.9.tgz",
|
||||||
"integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==",
|
"integrity": "sha512-uW8H5NRgTVneSVTfiCVffBb8AbwWSKg7qcA4Ot3JI3MPCJGsB4Db4BhvAODIIYE5mNj7Q+VJkK7JxmRhk2Lyjw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "5.59.7",
|
"version": "5.59.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.9.tgz",
|
||||||
"integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==",
|
"integrity": "sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.59.7",
|
"@typescript-eslint/types": "5.59.9",
|
||||||
"@typescript-eslint/visitor-keys": "5.59.7",
|
"@typescript-eslint/visitor-keys": "5.59.9",
|
||||||
"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",
|
||||||
|
@ -1715,17 +1715,17 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/utils": {
|
"node_modules/@typescript-eslint/utils": {
|
||||||
"version": "5.59.7",
|
"version": "5.59.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.59.7.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.59.9.tgz",
|
||||||
"integrity": "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==",
|
"integrity": "sha512-1PuMYsju/38I5Ggblaeb98TOoUvjhRvLpLa1DoTOFaLWqaXl/1iQ1eGurTXgBY58NUdtfTXKP5xBq7q9NDaLKg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.2.0",
|
"@eslint-community/eslint-utils": "^4.2.0",
|
||||||
"@types/json-schema": "^7.0.9",
|
"@types/json-schema": "^7.0.9",
|
||||||
"@types/semver": "^7.3.12",
|
"@types/semver": "^7.3.12",
|
||||||
"@typescript-eslint/scope-manager": "5.59.7",
|
"@typescript-eslint/scope-manager": "5.59.9",
|
||||||
"@typescript-eslint/types": "5.59.7",
|
"@typescript-eslint/types": "5.59.9",
|
||||||
"@typescript-eslint/typescript-estree": "5.59.7",
|
"@typescript-eslint/typescript-estree": "5.59.9",
|
||||||
"eslint-scope": "^5.1.1",
|
"eslint-scope": "^5.1.1",
|
||||||
"semver": "^7.3.7"
|
"semver": "^7.3.7"
|
||||||
},
|
},
|
||||||
|
@ -1770,12 +1770,12 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "5.59.7",
|
"version": "5.59.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz",
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.9.tgz",
|
||||||
"integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==",
|
"integrity": "sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.59.7",
|
"@typescript-eslint/types": "5.59.9",
|
||||||
"eslint-visitor-keys": "^3.3.0"
|
"eslint-visitor-keys": "^3.3.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -4589,9 +4589,9 @@
|
||||||
"integrity": "sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg=="
|
"integrity": "sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg=="
|
||||||
},
|
},
|
||||||
"node_modules/element-plus": {
|
"node_modules/element-plus": {
|
||||||
"version": "2.3.5",
|
"version": "2.3.6",
|
||||||
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.3.5.tgz",
|
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.3.6.tgz",
|
||||||
"integrity": "sha512-g27DHm2C5/tPwte9H6Juu+JOdzT9z1ALHTIvia6MwnBdCrI4kd77o6KcYdodU15/tYiPBoCEmobhl/7GUDb+1Q==",
|
"integrity": "sha512-GLz0pXUYI2zRfIgyI6W7SWmHk6dSEikP9yR++hsQUyy63+WjutoiGpA3SZD4cGPSXUzRFeKfVr8CnYhK5LqXZw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ctrl/tinycolor": "^3.4.1",
|
"@ctrl/tinycolor": "^3.4.1",
|
||||||
"@element-plus/icons-vue": "^2.0.6",
|
"@element-plus/icons-vue": "^2.0.6",
|
||||||
|
@ -6425,16 +6425,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-config-standard-with-typescript": {
|
"node_modules/eslint-config-standard-with-typescript": {
|
||||||
"version": "34.0.1",
|
"version": "35.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-34.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-35.0.0.tgz",
|
||||||
"integrity": "sha512-J7WvZeLtd0Vr9F+v4dZbqJCLD16cbIy4U+alJMq4MiXdpipdBM3U5NkXaGUjePc4sb1ZE01U9g6VuTBpHHz1fg==",
|
"integrity": "sha512-Xa7DY9GgduZyp0qmXxBF0/dB+Vm4/DgWu1lGpNLJV2d46aCaUxTKDEnkzjUWX/1O9S0a+Dhnw7A4oI0JpYzwtw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/parser": "^5.43.0",
|
"@typescript-eslint/parser": "^5.50.0",
|
||||||
"eslint-config-standard": "17.0.0"
|
"eslint-config-standard": "17.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@typescript-eslint/eslint-plugin": "^5.43.0",
|
"@typescript-eslint/eslint-plugin": "^5.50.0",
|
||||||
"eslint": "^8.0.1",
|
"eslint": "^8.0.1",
|
||||||
"eslint-plugin-import": "^2.25.2",
|
"eslint-plugin-import": "^2.25.2",
|
||||||
"eslint-plugin-n": "^15.0.0",
|
"eslint-plugin-n": "^15.0.0",
|
||||||
|
@ -13540,16 +13540,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/typescript": {
|
"node_modules/typescript": {
|
||||||
"version": "5.0.4",
|
"version": "5.1.3",
|
||||||
"resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.0.4.tgz",
|
"resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.1.3.tgz",
|
||||||
"integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
|
"integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"tsc": "bin/tsc",
|
"tsc": "bin/tsc",
|
||||||
"tsserver": "bin/tsserver"
|
"tsserver": "bin/tsserver"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12.20"
|
"node": ">=14.17"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/unbox-primitive": {
|
"node_modules/unbox-primitive": {
|
||||||
|
@ -13943,9 +13943,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/vue-router": {
|
"node_modules/vue-router": {
|
||||||
"version": "4.2.1",
|
"version": "4.2.2",
|
||||||
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.1.tgz",
|
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.2.tgz",
|
||||||
"integrity": "sha512-nW28EeifEp8Abc5AfmAShy5ZKGsGzjcnZ3L1yc2DYUo+MqbBClrRP9yda3dIekM4I50/KnEwo1wkBLf7kHH5Cw==",
|
"integrity": "sha512-cChBPPmAflgBGmy3tBsjeoe3f3VOSG6naKyY5pjtrqLGbNEXdzCigFUHgBvp9e3ysAtFtEx7OLqcSDh/1Cq2TQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/devtools-api": "^6.5.0"
|
"@vue/devtools-api": "^6.5.0"
|
||||||
},
|
},
|
||||||
|
|
|
@ -14,26 +14,26 @@
|
||||||
"axios": "^1.4.0",
|
"axios": "^1.4.0",
|
||||||
"babel": "^6.23.0",
|
"babel": "^6.23.0",
|
||||||
"echarts": "^5.4.2",
|
"echarts": "^5.4.2",
|
||||||
"element-plus": "^2.3.5",
|
"element-plus": "^2.3.6",
|
||||||
"moment": "^2.29.4",
|
"moment": "^2.29.4",
|
||||||
"sass-loader": "^13.3.1",
|
"sass-loader": "^13.3.1",
|
||||||
"vue": "^3.3.4",
|
"vue": "^3.3.4",
|
||||||
"vue-router": "^4.2.1",
|
"vue-router": "^4.2.2",
|
||||||
"vuex": "^4.1.0"
|
"vuex": "^4.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/eslint-parser": "^7.21.8",
|
"@babel/eslint-parser": "^7.21.8",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.59.7",
|
"@typescript-eslint/eslint-plugin": "^5.59.9",
|
||||||
"@typescript-eslint/parser": "^5.59.7",
|
"@typescript-eslint/parser": "^5.59.9",
|
||||||
"@vitejs/plugin-vue": "^4.2.3",
|
"@vitejs/plugin-vue": "^4.2.3",
|
||||||
"@vue/cli-plugin-eslint": "^5.0.8",
|
"@vue/cli-plugin-eslint": "^5.0.8",
|
||||||
"eslint-config-recommended": "^4.1.0",
|
"eslint-config-recommended": "^4.1.0",
|
||||||
"eslint-config-standard-with-typescript": "^34.0.1",
|
"eslint-config-standard-with-typescript": "^35.0.0",
|
||||||
"eslint-plugin-vue": "^9.14.1",
|
"eslint-plugin-vue": "^9.14.1",
|
||||||
"node-sass": "^9.0.0",
|
"node-sass": "^9.0.0",
|
||||||
"sass": "^1.62.1",
|
"sass": "^1.62.1",
|
||||||
"style-loader": "^3.3.3",
|
"style-loader": "^3.3.3",
|
||||||
"typescript": "^5.0.4",
|
"typescript": "^5.1.3",
|
||||||
"vue-eslint-parser": "^9.3.0"
|
"vue-eslint-parser": "^9.3.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
<!--
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-06-06 11:01:01
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /task_schedule/src/components/RankingListComponent.vue
|
||||||
|
* @Description: 排行榜组件
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div class="rankinglist-wrapper">
|
||||||
|
排行榜组件
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
/* eslint-disable */
|
||||||
|
import { computed } from "vue";
|
||||||
|
|
||||||
|
interface RankingListItem
|
||||||
|
{
|
||||||
|
index: number;
|
||||||
|
callerName: string;
|
||||||
|
appraiseValue: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "RankingListComponent",
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
require: true,
|
||||||
|
default: () => "",
|
||||||
|
},
|
||||||
|
rankingList: {
|
||||||
|
type: Array,
|
||||||
|
require: true,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* setup函数
|
||||||
|
* @param props 组件的props属性。
|
||||||
|
*/
|
||||||
|
setup( props )
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 计算对象,用于获取top5.
|
||||||
|
*/
|
||||||
|
const topFive = computed(() =>
|
||||||
|
{
|
||||||
|
const rankingList = props.rankingList; // eslint-disable-line
|
||||||
|
|
||||||
|
rankingList.sort(( a, b ) =>
|
||||||
|
{
|
||||||
|
// @ts-ignore
|
||||||
|
return a.index - b.index;
|
||||||
|
});
|
||||||
|
|
||||||
|
return rankingList.slice(0,5);
|
||||||
|
});
|
||||||
|
|
||||||
|
return { props, topFive, };
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.rankinglist-wrapper
|
||||||
|
{
|
||||||
|
border: 1px solid red;
|
||||||
|
|
||||||
|
width: 300px;
|
||||||
|
height: 250px;
|
||||||
|
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -51,7 +51,10 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="right-wrapper" />
|
<div class="right-wrapper">
|
||||||
|
<RankingListComponent />
|
||||||
|
<RankingListComponent />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -66,6 +69,7 @@ import ArchievementChart from "@/components/ArchievementChartComponent.vue";
|
||||||
import ArchievementCompleteRateComponent from "@/components/ArchievementCompleteRateComponent.vue";
|
import ArchievementCompleteRateComponent from "@/components/ArchievementCompleteRateComponent.vue";
|
||||||
import HonorListComponent from "@/components/HonorListComponent.vue";
|
import HonorListComponent from "@/components/HonorListComponent.vue";
|
||||||
import DishonorListComponent from "@/components/DishonorListComponent.vue";
|
import DishonorListComponent from "@/components/DishonorListComponent.vue";
|
||||||
|
import RankingListComponent from "@/components/RankingListComponent.vue";
|
||||||
import { logout } from "@/utils/account.js";
|
import { logout } from "@/utils/account.js";
|
||||||
import { type TelSaler } from "@/types/cpicxim/TelSaler";
|
import { type TelSaler } from "@/types/cpicxim/TelSaler";
|
||||||
|
|
||||||
|
@ -76,6 +80,7 @@ export default {
|
||||||
ArchievementCompleteRateComponent,
|
ArchievementCompleteRateComponent,
|
||||||
HonorListComponent,
|
HonorListComponent,
|
||||||
DishonorListComponent,
|
DishonorListComponent,
|
||||||
|
RankingListComponent,
|
||||||
},
|
},
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
|
@ -94,7 +99,7 @@ export default {
|
||||||
dishonorPersons: ["",],
|
dishonorPersons: ["",],
|
||||||
showUI: true, // 用来刷新页面的开关
|
showUI: true, // 用来刷新页面的开关
|
||||||
});
|
});
|
||||||
let timerHandler = 0;
|
const timerHandler = 0;
|
||||||
|
|
||||||
const getTotalArchievement = computed(() =>
|
const getTotalArchievement = computed(() =>
|
||||||
{
|
{
|
||||||
|
@ -297,8 +302,17 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
.right-wrapper {
|
.right-wrapper {
|
||||||
min-width: 400px;
|
min-width: 300px;
|
||||||
width: 25%;
|
width: 25%;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: flex-start;
|
||||||
|
|
||||||
|
>*+* {
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class CallerRankingList
|
||||||
ResultSet cur_attaching = null;
|
ResultSet cur_attaching = null;
|
||||||
ResultSet cur_renewal = null;
|
ResultSet cur_renewal = null;
|
||||||
String sql = """
|
String sql = """
|
||||||
{call telsale_archievement_pkg.caller_arch_ranking_list(?,?,?)}
|
{call telsale_archievement_pkg.caller_arch_ranking_list(?,?,?,?,?)}
|
||||||
""";
|
""";
|
||||||
String monthRegx = "(0[1-9])|(1[0-2])";
|
String monthRegx = "(0[1-9])|(1[0-2])";
|
||||||
String yearRegx = "20[0-2][0-0]";
|
String yearRegx = "20[0-2][0-0]";
|
||||||
|
@ -106,7 +106,7 @@ public class CallerRankingList
|
||||||
CallerRankingItem caller =
|
CallerRankingItem caller =
|
||||||
new CallerRankingItem( index, callerName, appraiseValue );
|
new CallerRankingItem( index, callerName, appraiseValue );
|
||||||
|
|
||||||
attachingRateRankingList.add( caller );
|
renewalRateRankingList.add( caller );
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,15 +13,16 @@
|
||||||
|
|
||||||
package com.cpic.xim.web.controllers.archievement;
|
package com.cpic.xim.web.controllers.archievement;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
|
|
||||||
import com.cpic.xim.utils.archievement.DepartmentArchievement;
|
import com.cpic.xim.utils.archievement.DepartmentArchievement;
|
||||||
|
import com.cpic.xim.utils.ranking.CallerRankingItem;
|
||||||
|
import com.cpic.xim.utils.ranking.CallerRankingList;
|
||||||
import com.cpic.xim.web.controllers.archievement.RankingList.RankingListRequest;
|
import com.cpic.xim.web.controllers.archievement.RankingList.RankingListRequest;
|
||||||
import com.cpic.xim.web.controllers.archievement.RankingList.RankingListResponse;
|
import com.cpic.xim.web.controllers.archievement.RankingList.RankingListResponse;
|
||||||
|
|
||||||
|
@ -81,11 +82,50 @@ public class ArchievementQueryController
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("/query_ranking_list.do")
|
@RequestMapping( "/query_ranking_list.do" )
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public RankingListResponse queryCallerArchievementRankingList( @RequestBody RankingListRequest request )
|
public RankingListResponse queryCallerArchievementRankingList(
|
||||||
|
@RequestBody RankingListRequest request )
|
||||||
{
|
{
|
||||||
RankingListResponse response = new RankingListResponse();
|
String departmentCode = request.getDepartmentCode();
|
||||||
|
String year = request.getYear();
|
||||||
|
String month = request.getMonth();
|
||||||
|
|
||||||
|
boolean success = false;
|
||||||
|
String message = "";
|
||||||
|
|
||||||
|
Vector<CallerRankingItem> attachingRateRankingList = null;
|
||||||
|
Vector<CallerRankingItem> renewalRateRankingList = null;
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
CallerRankingList rankingList =
|
||||||
|
CallerRankingList.getCallerRankingList( departmentCode, year, month );
|
||||||
|
|
||||||
|
attachingRateRankingList = rankingList.getAttachingRateRankingList();
|
||||||
|
renewalRateRankingList = rankingList.getRenewalRateRankingList();
|
||||||
|
|
||||||
|
success = true;
|
||||||
|
message = "调用成功!";
|
||||||
|
}
|
||||||
|
catch ( SQLException error )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
message = "获取排行榜失败,原因:" + error.getMessage();
|
||||||
|
|
||||||
|
error.printStackTrace();
|
||||||
|
}
|
||||||
|
catch ( ClassNotFoundException error )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
message = "获取排行榜失败,原因:oracle驱动加载失败!" + error.getMessage();
|
||||||
|
|
||||||
|
error.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
RankingListResponse response = new RankingListResponse( success, message, departmentCode,
|
||||||
|
year, month, attachingRateRankingList, renewalRateRankingList );
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,32 @@ public class RankingListRequest
|
||||||
this.departmentCode = departmentCode;
|
this.departmentCode = departmentCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getYear()
|
||||||
|
{
|
||||||
|
return year;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setYear( String year )
|
||||||
|
{
|
||||||
|
this.year = year;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMonth()
|
||||||
|
{
|
||||||
|
return month;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMonth( String month )
|
||||||
|
{
|
||||||
|
this.month = month;
|
||||||
|
}
|
||||||
|
|
||||||
@JsonProperty("departmentCode")
|
@JsonProperty("departmentCode")
|
||||||
private String departmentCode;
|
private String departmentCode;
|
||||||
|
|
||||||
|
@JsonProperty("year")
|
||||||
|
private String year;
|
||||||
|
|
||||||
|
@JsonProperty("month")
|
||||||
|
private String month;
|
||||||
}
|
}
|
|
@ -16,7 +16,33 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
public class RankingListResponse extends QueryResult
|
public class RankingListResponse extends QueryResult
|
||||||
{
|
{
|
||||||
public RankingListResponse() { super(); }
|
public RankingListResponse()
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public RankingListResponse( boolean success, String message, String departmentCode, String year,
|
||||||
|
String month, Vector<CallerRankingItem> attachingRateRankingList,
|
||||||
|
Vector<CallerRankingItem> renewalRateRankingList)
|
||||||
|
{
|
||||||
|
super( success, message );
|
||||||
|
|
||||||
|
this.departmentCode = departmentCode;
|
||||||
|
this.year = year;
|
||||||
|
this.month = month;
|
||||||
|
this.attachingRateRankingList = attachingRateRankingList;
|
||||||
|
this.renewalRateRankingList = renewalRateRankingList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDepartmentCode()
|
||||||
|
{
|
||||||
|
return departmentCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDepartmentCode( String departmentCode )
|
||||||
|
{
|
||||||
|
this.departmentCode = departmentCode;
|
||||||
|
}
|
||||||
|
|
||||||
public String getYear()
|
public String getYear()
|
||||||
{
|
{
|
||||||
|
@ -58,14 +84,18 @@ public class RankingListResponse extends QueryResult
|
||||||
this.renewalRateRankingList = renewalRateRankingList;
|
this.renewalRateRankingList = renewalRateRankingList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 部门代码
|
||||||
|
@JsonProperty( "departmentCode" )
|
||||||
|
private String departmentCode;
|
||||||
|
|
||||||
// 统计年份
|
// 统计年份
|
||||||
@JsonProperty("year")
|
@JsonProperty( "year" )
|
||||||
private String year;
|
private String year;
|
||||||
|
|
||||||
// 统计月份
|
// 统计月份
|
||||||
@JsonProperty("month")
|
@JsonProperty( "month" )
|
||||||
private String month;
|
private String month;
|
||||||
|
|
||||||
// 车非融合率排行
|
// 车非融合率排行
|
||||||
@JsonProperty( "attachingRateRankingList" )
|
@JsonProperty( "attachingRateRankingList" )
|
||||||
private Vector<CallerRankingItem> attachingRateRankingList;
|
private Vector<CallerRankingItem> attachingRateRankingList;
|
||||||
|
@ -73,5 +103,4 @@ public class RankingListResponse extends QueryResult
|
||||||
// 续保率排行
|
// 续保率排行
|
||||||
@JsonProperty( "renewalRateRankingList" )
|
@JsonProperty( "renewalRateRankingList" )
|
||||||
private Vector<CallerRankingItem> renewalRateRankingList;
|
private Vector<CallerRankingItem> renewalRateRankingList;
|
||||||
|
}
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue