制作非车渗透的上传报表。
This commit is contained in:
		
							
								
								
									
										120
									
								
								code/web/task_schedule/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										120
									
								
								code/web/task_schedule/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -21,7 +21,7 @@
 | 
			
		||||
      "devDependencies": {
 | 
			
		||||
        "@babel/eslint-parser": "^7.22.15",
 | 
			
		||||
        "@rushstack/eslint-patch": "^1.5.1",
 | 
			
		||||
        "@typescript-eslint/eslint-plugin": "^6.7.5",
 | 
			
		||||
        "@typescript-eslint/eslint-plugin": "^6.8.0",
 | 
			
		||||
        "@vitejs/plugin-vue": "^4.4.0",
 | 
			
		||||
        "@vue/cli-plugin-eslint": "^5.0.8",
 | 
			
		||||
        "@vue/eslint-config-typescript": "^12.0.0",
 | 
			
		||||
@@ -1578,16 +1578,16 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@typescript-eslint/eslint-plugin": {
 | 
			
		||||
      "version": "6.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==",
 | 
			
		||||
      "version": "6.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@eslint-community/regexpp": "^4.5.1",
 | 
			
		||||
        "@typescript-eslint/scope-manager": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/type-utils": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/utils": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/visitor-keys": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/scope-manager": "6.8.0",
 | 
			
		||||
        "@typescript-eslint/type-utils": "6.8.0",
 | 
			
		||||
        "@typescript-eslint/utils": "6.8.0",
 | 
			
		||||
        "@typescript-eslint/visitor-keys": "6.8.0",
 | 
			
		||||
        "debug": "^4.3.4",
 | 
			
		||||
        "graphemer": "^1.4.0",
 | 
			
		||||
        "ignore": "^5.2.4",
 | 
			
		||||
@@ -1609,34 +1609,34 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": {
 | 
			
		||||
      "version": "6.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==",
 | 
			
		||||
      "version": "6.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@typescript-eslint/types": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/visitor-keys": "6.7.5"
 | 
			
		||||
        "@typescript-eslint/types": "6.8.0",
 | 
			
		||||
        "@typescript-eslint/visitor-keys": "6.8.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": "^16.0.0 || >=18.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
 | 
			
		||||
      "version": "6.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==",
 | 
			
		||||
      "version": "6.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": "^16.0.0 || >=18.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": {
 | 
			
		||||
      "version": "6.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==",
 | 
			
		||||
      "version": "6.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@typescript-eslint/types": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/types": "6.8.0",
 | 
			
		||||
        "eslint-visitor-keys": "^3.4.1"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
@@ -1723,13 +1723,13 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@typescript-eslint/type-utils": {
 | 
			
		||||
      "version": "6.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==",
 | 
			
		||||
      "version": "6.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@typescript-eslint/typescript-estree": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/utils": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/typescript-estree": "6.8.0",
 | 
			
		||||
        "@typescript-eslint/utils": "6.8.0",
 | 
			
		||||
        "debug": "^4.3.4",
 | 
			
		||||
        "ts-api-utils": "^1.0.1"
 | 
			
		||||
      },
 | 
			
		||||
@@ -1746,22 +1746,22 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
 | 
			
		||||
      "version": "6.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==",
 | 
			
		||||
      "version": "6.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": "^16.0.0 || >=18.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
 | 
			
		||||
      "version": "6.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==",
 | 
			
		||||
      "version": "6.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@typescript-eslint/types": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/visitor-keys": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/types": "6.8.0",
 | 
			
		||||
        "@typescript-eslint/visitor-keys": "6.8.0",
 | 
			
		||||
        "debug": "^4.3.4",
 | 
			
		||||
        "globby": "^11.1.0",
 | 
			
		||||
        "is-glob": "^4.0.3",
 | 
			
		||||
@@ -1778,12 +1778,12 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": {
 | 
			
		||||
      "version": "6.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==",
 | 
			
		||||
      "version": "6.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@typescript-eslint/types": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/types": "6.8.0",
 | 
			
		||||
        "eslint-visitor-keys": "^3.4.1"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
@@ -1898,17 +1898,17 @@
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@typescript-eslint/utils": {
 | 
			
		||||
      "version": "6.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-6.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==",
 | 
			
		||||
      "version": "6.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-6.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@eslint-community/eslint-utils": "^4.4.0",
 | 
			
		||||
        "@types/json-schema": "^7.0.12",
 | 
			
		||||
        "@types/semver": "^7.5.0",
 | 
			
		||||
        "@typescript-eslint/scope-manager": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/types": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/typescript-estree": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/scope-manager": "6.8.0",
 | 
			
		||||
        "@typescript-eslint/types": "6.8.0",
 | 
			
		||||
        "@typescript-eslint/typescript-estree": "6.8.0",
 | 
			
		||||
        "semver": "^7.5.4"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
@@ -1919,35 +1919,35 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": {
 | 
			
		||||
      "version": "6.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==",
 | 
			
		||||
      "version": "6.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@typescript-eslint/types": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/visitor-keys": "6.7.5"
 | 
			
		||||
        "@typescript-eslint/types": "6.8.0",
 | 
			
		||||
        "@typescript-eslint/visitor-keys": "6.8.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": "^16.0.0 || >=18.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": {
 | 
			
		||||
      "version": "6.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==",
 | 
			
		||||
      "version": "6.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": "^16.0.0 || >=18.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": {
 | 
			
		||||
      "version": "6.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==",
 | 
			
		||||
      "version": "6.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@typescript-eslint/types": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/visitor-keys": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/types": "6.8.0",
 | 
			
		||||
        "@typescript-eslint/visitor-keys": "6.8.0",
 | 
			
		||||
        "debug": "^4.3.4",
 | 
			
		||||
        "globby": "^11.1.0",
 | 
			
		||||
        "is-glob": "^4.0.3",
 | 
			
		||||
@@ -1964,12 +1964,12 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": {
 | 
			
		||||
      "version": "6.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==",
 | 
			
		||||
      "version": "6.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@typescript-eslint/types": "6.7.5",
 | 
			
		||||
        "@typescript-eslint/types": "6.8.0",
 | 
			
		||||
        "eslint-visitor-keys": "^3.4.1"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@babel/eslint-parser": "^7.22.15",
 | 
			
		||||
    "@rushstack/eslint-patch": "^1.5.1",
 | 
			
		||||
    "@typescript-eslint/eslint-plugin": "^6.7.5",
 | 
			
		||||
    "@typescript-eslint/eslint-plugin": "^6.8.0",
 | 
			
		||||
    "@vitejs/plugin-vue": "^4.4.0",
 | 
			
		||||
    "@vue/cli-plugin-eslint": "^5.0.8",
 | 
			
		||||
    "@vue/eslint-config-typescript": "^12.0.0",
 | 
			
		||||
 
 | 
			
		||||
@@ -92,7 +92,7 @@ export default {
 | 
			
		||||
        align-items: start;
 | 
			
		||||
 | 
			
		||||
        font: {
 | 
			
		||||
            size: 0.5rem;
 | 
			
		||||
            size: 0.75rem;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        >*+* {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										76
									
								
								code/web/task_schedule/src/utils/BIReport.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								code/web/task_schedule/src/utils/BIReport.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: Kane
 | 
			
		||||
 * @Date: 2023-10-17 11:18:19
 | 
			
		||||
 * @LastEditors: Kane
 | 
			
		||||
 * @FilePath: /task_schedule/src/utils/api/BIReport.ts
 | 
			
		||||
 * @Description: BI报表相关的代码
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright (c) ${2023} by Kane, All Rights Reserved. 
 | 
			
		||||
 */
 | 
			
		||||
import { service as instance } from "./api/request.js";
 | 
			
		||||
import { API_URL } from "./api/config.js";
 | 
			
		||||
import { type AxiosResponse } from "axios";
 | 
			
		||||
interface BIReportType
 | 
			
		||||
{
 | 
			
		||||
    reportTypeCode: number;
 | 
			
		||||
    reportTypeName: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface ImportBIReportRequest
 | 
			
		||||
{
 | 
			
		||||
    filePath: string,
 | 
			
		||||
    reportType: number,
 | 
			
		||||
    hasCaption: boolean,
 | 
			
		||||
    sheetIndex: number,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface ImportBIReportResponse
 | 
			
		||||
{
 | 
			
		||||
    success: boolean,
 | 
			
		||||
    message: string,
 | 
			
		||||
    importedCount: number,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 * @param request 请求参数
 | 
			
		||||
 * @param handler 调用者提供的请求结果处理函数
 | 
			
		||||
 */
 | 
			
		||||
function importBIReport( request: ImportBIReportRequest, handler: any ): void
 | 
			
		||||
{
 | 
			
		||||
    const importResponse: ImportBIReportResponse = {
 | 
			
		||||
        success: false,
 | 
			
		||||
        message: "",
 | 
			
		||||
        importedCount: 0,
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    instance.request({
 | 
			
		||||
        url: API_URL.URL_IMPORT_REPORT,
 | 
			
		||||
        method: "post",
 | 
			
		||||
        data: request,
 | 
			
		||||
    })
 | 
			
		||||
        .then(( response: AxiosResponse<any, any> ): any =>
 | 
			
		||||
        {
 | 
			
		||||
            const data: ImportBIReportResponse = response.data;
 | 
			
		||||
 | 
			
		||||
            importResponse.success = data.success ?? false;
 | 
			
		||||
            importResponse.message = data.message ?? "";
 | 
			
		||||
            importResponse.importedCount = data.importedCount ?? 0;
 | 
			
		||||
 | 
			
		||||
            handler( importResponse, null );
 | 
			
		||||
        })
 | 
			
		||||
        .catch(( error: any ): any =>
 | 
			
		||||
        {
 | 
			
		||||
            importResponse.message = "请求导入报表错误,请查看控制台!";
 | 
			
		||||
            console.log( error );
 | 
			
		||||
 | 
			
		||||
            handler( importResponse, error );
 | 
			
		||||
        });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export {
 | 
			
		||||
    type BIReportType,
 | 
			
		||||
    type ImportBIReportRequest,
 | 
			
		||||
    type ImportBIReportResponse,
 | 
			
		||||
    importBIReport
 | 
			
		||||
};
 | 
			
		||||
@@ -44,7 +44,12 @@ const API_URL = {
 | 
			
		||||
    // 删除获奖人员
 | 
			
		||||
    URL_DEL_REWARD_TELSALER: "http://10.39.0.41:8081/desktop_archievement_backend/rewards/delete_telsaler_reward.do",
 | 
			
		||||
    // 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: "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: "http://222.76.244.118:11101/desktop_archievement_backend/import_bi_data/excel.do",
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export { API_URL };
 | 
			
		||||
 
 | 
			
		||||
@@ -14,3 +14,7 @@ interface FileUploadResponse
 | 
			
		||||
    message: string;
 | 
			
		||||
    fileList: string[];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export {
 | 
			
		||||
    type FileUploadResponse
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
    <div class="data_management_wrapper">
 | 
			
		||||
        <div class="telsaler-dataupload-wrapper">
 | 
			
		||||
        <!-- <div class="telsaler-dataupload-wrapper">
 | 
			
		||||
            <el-upload
 | 
			
		||||
                v-model="ui.fileList"
 | 
			
		||||
                drag
 | 
			
		||||
@@ -32,15 +32,27 @@
 | 
			
		||||
                    </div>
 | 
			
		||||
                </template>
 | 
			
		||||
            </el-upload>
 | 
			
		||||
        </div>
 | 
			
		||||
        </div> -->
 | 
			
		||||
        <el-tabs>
 | 
			
		||||
            <el-tab-pane label="坐席车非渗透率">
 | 
			
		||||
                <TelsalerAttachingRateView />
 | 
			
		||||
            </el-tab-pane>
 | 
			
		||||
            <el-tab-pane label="坐席续保率">
 | 
			
		||||
                坐席车非渗透率
 | 
			
		||||
            </el-tab-pane>
 | 
			
		||||
            <el-tab-pane label="机构">
 | 
			
		||||
                坐席车非渗透率
 | 
			
		||||
            </el-tab-pane>
 | 
			
		||||
        </el-tabs>
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import { ref, reactive } from "vue";
 | 
			
		||||
import { ElMessage, ElMessageBox, type UploadFile, type UploadFiles, type UploadProps, type UploadUserFile } from "element-plus";
 | 
			
		||||
 | 
			
		||||
import TelsalerAttachingRateView from "@/views/data/bi/TelsalerAttachingRateView.vue";
 | 
			
		||||
export default {
 | 
			
		||||
    name: "DataManagement",
 | 
			
		||||
    components: { TelsalerAttachingRateView, },
 | 
			
		||||
    setup()
 | 
			
		||||
    {
 | 
			
		||||
        const ui = reactive({
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										128
									
								
								code/web/task_schedule/src/views/data/bi/BiDataUploadView.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								code/web/task_schedule/src/views/data/bi/BiDataUploadView.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,128 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: Kane
 | 
			
		||||
 * @Date: 2023-10-17 10:56:43
 | 
			
		||||
 * @LastEditors: Kane
 | 
			
		||||
 * @FilePath: /task_schedule/src/views/data/bi/BiDataUploadView.vue
 | 
			
		||||
 * @Description:
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) ${2023} by Kane, All Rights Reserved.
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
    <div class="bi-dataupload-wrapper">
 | 
			
		||||
        <div class="query-box-wrapper">
 | 
			
		||||
            <el-row :gutter="10">
 | 
			
		||||
                <el-col :span="4">
 | 
			
		||||
                    <span>报表类型</span>
 | 
			
		||||
                </el-col>
 | 
			
		||||
                <el-col :span="10">
 | 
			
		||||
                    <el-select v-model="ui.selectedReportType">
 | 
			
		||||
                        <el-option
 | 
			
		||||
                            v-for="item in ui.reportType"
 | 
			
		||||
                            :key="item.reportTypeCode"
 | 
			
		||||
                            :label="item.reportTypeName"
 | 
			
		||||
                            :value="item.reportTypeCode"
 | 
			
		||||
                        />
 | 
			
		||||
                    </el-select>
 | 
			
		||||
                </el-col>
 | 
			
		||||
                <el-col :span="4">
 | 
			
		||||
                    <span>sheet编号</span>
 | 
			
		||||
                </el-col>
 | 
			
		||||
                <el-col :span="6">
 | 
			
		||||
                    <el-input v-model.lazy.number="ui.sheetIndex" />
 | 
			
		||||
                </el-col>
 | 
			
		||||
            </el-row>
 | 
			
		||||
            <el-row :gutter="10">
 | 
			
		||||
                <el-col :span="4">
 | 
			
		||||
                    <span>标题行</span>
 | 
			
		||||
                </el-col>
 | 
			
		||||
                <el-col :span="8">
 | 
			
		||||
                    <el-switch v-model="ui.hasCaption" />
 | 
			
		||||
                </el-col>
 | 
			
		||||
            </el-row>
 | 
			
		||||
        </div>
 | 
			
		||||
        <el-upload
 | 
			
		||||
            drag
 | 
			
		||||
            action="http://222.76.244.118:11101/desktop_archievement_backend/file/file-upload.do"
 | 
			
		||||
            name="files"
 | 
			
		||||
            :show-file-list="false"
 | 
			
		||||
            :data="ui.uploadParameters"
 | 
			
		||||
        >
 | 
			
		||||
            <el-icon class="el-icon--upload">
 | 
			
		||||
                <upload-filled />
 | 
			
		||||
            </el-icon>
 | 
			
		||||
            <div class="el-upload__text">
 | 
			
		||||
                将文件拖到此处,或<em>点击上传</em>
 | 
			
		||||
            </div>
 | 
			
		||||
        </el-upload>
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import { reactive, ref } from "vue";
 | 
			
		||||
import {
 | 
			
		||||
    type BIReportType,
 | 
			
		||||
    type ImportBIReportRequest,
 | 
			
		||||
    type ImportBIReportResponse,
 | 
			
		||||
    importBIReport
 | 
			
		||||
} from "@/utils/BIReport.js";
 | 
			
		||||
import { UploadFilled } from "@element-plus/icons-vue";
 | 
			
		||||
 | 
			
		||||
interface UI
 | 
			
		||||
{
 | 
			
		||||
    showUI: boolean,
 | 
			
		||||
    selectedReportType: number,
 | 
			
		||||
    reportType: BIReportType[],
 | 
			
		||||
    sheetIndex: number,
 | 
			
		||||
    hasCaption: boolean,
 | 
			
		||||
    uploadParameters: any,
 | 
			
		||||
    showFileList: boolean,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    name: "BiDataUploadView",
 | 
			
		||||
    setup()
 | 
			
		||||
    {
 | 
			
		||||
        const ui: UI = reactive({
 | 
			
		||||
            showUI: false,
 | 
			
		||||
            selectedReportType: 0,
 | 
			
		||||
            reportType: [
 | 
			
		||||
                {
 | 
			
		||||
                    reportTypeCode: 0,
 | 
			
		||||
                    reportTypeName: "坐席车非渗透率",
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    reportTypeCode: 1,
 | 
			
		||||
                    reportTypeName: "坐席续保率",
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    reportTypeCode: 2,
 | 
			
		||||
                    reportTypeName: "部门车非渗透率续保率",
 | 
			
		||||
                },],
 | 
			
		||||
            sheetIndex: 0,
 | 
			
		||||
            hasCaption: true,
 | 
			
		||||
            uploadParameters: {
 | 
			
		||||
                "task-name": "1234",
 | 
			
		||||
            },
 | 
			
		||||
            showFileList: false,
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        return {
 | 
			
		||||
            ui,
 | 
			
		||||
        };
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
@import "@/assets/css/public/_public.scss";
 | 
			
		||||
 | 
			
		||||
.bi-dataupload-wrapper {
 | 
			
		||||
    // max-width: 600px;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    >*+* {
 | 
			
		||||
        margin-top: 10px;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.query-box-wrapper {
 | 
			
		||||
    @include query-box-wrap;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -0,0 +1,31 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @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,139 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: Kane
 | 
			
		||||
 * @Date: 2023-10-17 14:41:39
 | 
			
		||||
 * @LastEditors: Kane
 | 
			
		||||
 * @FilePath: /task_schedule/src/views/data/bi/TelsalerAttachingRateView.vue
 | 
			
		||||
 * @Description: BI坐席车非渗透率数据管理界面
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) ${2023} by Kane, All Rights Reserved.
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
    <div class="wrapper">
 | 
			
		||||
        <el-row :gutter="10">
 | 
			
		||||
            <el-col :span="8">
 | 
			
		||||
                <el-button
 | 
			
		||||
                    type="warning"
 | 
			
		||||
                    icon="upload"
 | 
			
		||||
                    @click="showUploadFileDialog"
 | 
			
		||||
                >
 | 
			
		||||
                    上传
 | 
			
		||||
                </el-button>
 | 
			
		||||
            </el-col>
 | 
			
		||||
        </el-row>
 | 
			
		||||
        <el-table
 | 
			
		||||
            border
 | 
			
		||||
            stripe
 | 
			
		||||
            style="width:100%;"
 | 
			
		||||
        >
 | 
			
		||||
            <el-table-column
 | 
			
		||||
                type="selection"
 | 
			
		||||
                align="center"
 | 
			
		||||
            />
 | 
			
		||||
            <el-table-column
 | 
			
		||||
                label="部门"
 | 
			
		||||
                align="center"
 | 
			
		||||
                width="200"
 | 
			
		||||
            />
 | 
			
		||||
            <el-table-column
 | 
			
		||||
                label="名称"
 | 
			
		||||
                align="center"
 | 
			
		||||
                width="200"
 | 
			
		||||
            />
 | 
			
		||||
            <el-table-column
 | 
			
		||||
                label="车险保费(万)"
 | 
			
		||||
                align="center"
 | 
			
		||||
            />
 | 
			
		||||
            <el-table-column
 | 
			
		||||
                label="非车险保费(万)"
 | 
			
		||||
                align="center"
 | 
			
		||||
            />
 | 
			
		||||
            <el-table-column
 | 
			
		||||
                label="当月保费渗透率"
 | 
			
		||||
                align="center"
 | 
			
		||||
            />
 | 
			
		||||
            <el-table-column
 | 
			
		||||
                label="渗透率环比上月"
 | 
			
		||||
                align="center"
 | 
			
		||||
            />
 | 
			
		||||
        </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"
 | 
			
		||||
            >
 | 
			
		||||
                <BiDataUploadView />
 | 
			
		||||
            </el-dialog>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import { reactive } from "vue";
 | 
			
		||||
import BiDataUploadView from "@/views/data/bi/BiDataUploadView.vue";
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    name: "TelsalerAttachingRateView",
 | 
			
		||||
    components: { BiDataUploadView, },
 | 
			
		||||
    setup()
 | 
			
		||||
    {
 | 
			
		||||
        const ui = reactive({
 | 
			
		||||
            showUI: true,
 | 
			
		||||
            showUploadDialog: false,
 | 
			
		||||
            tableCurrentPageIndex: 1,
 | 
			
		||||
            tablePageSize: 10,
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        const showUploadFileDialog = (): void =>
 | 
			
		||||
        {
 | 
			
		||||
            ui.showUploadDialog = true;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        const onCurrentPageIndexChange = ( index: number ): void =>
 | 
			
		||||
        {
 | 
			
		||||
            ui.tableCurrentPageIndex = index;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        const onTablePageSizeChange = ( pageSize: number ): void =>
 | 
			
		||||
        {
 | 
			
		||||
            ui.tablePageSize = pageSize;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        return {
 | 
			
		||||
            ui,
 | 
			
		||||
            showUploadFileDialog,
 | 
			
		||||
            onCurrentPageIndexChange,
 | 
			
		||||
            onTablePageSizeChange,
 | 
			
		||||
        };
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.wrapper {
 | 
			
		||||
    margin: 10px;
 | 
			
		||||
 | 
			
		||||
    >*+* {
 | 
			
		||||
        margin-top: 10px;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.pagination_wrapper {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    justify-content: flex-end;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -0,0 +1,30 @@
 | 
			
		||||
src/views/data/bi/TelsalerAttachingRateView.vue<!--
 | 
			
		||||
 * @Author: Kane
 | 
			
		||||
 * @Date: 2023-10-17 14:41:39
 | 
			
		||||
 * @LastEditors: Kane
 | 
			
		||||
 * @FilePath: /task_schedule/src/views/data/TelsalerAttachingRateView.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: "TelsalerAttachingRateView",
 | 
			
		||||
    setup()
 | 
			
		||||
    {
 | 
			
		||||
        const ui = reactive({
 | 
			
		||||
            showUI: true,
 | 
			
		||||
        });
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.wrapper {
 | 
			
		||||
    margin: 10px;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
		Reference in New Issue
	
	Block a user