保存进度

This commit is contained in:
2026-02-09 00:42:01 +08:00
parent 858b79942d
commit 3c8bb51c41
5 changed files with 129 additions and 8 deletions

View File

@@ -0,0 +1,65 @@
/**
* @Author: Kane Wang <wangkane@qq.com>
* @Date: 2026-02-07 21:36:35
* @LastEditors: Kane Wang
* @LastModified: 2026-02-07 21:36:35
* @FilePath: src/main/java/com/cpic/xim/utils/utils.java
* @Description:
*
* Copyright (c) 2025 by Kane All rights reserved
*/
package com.cpic.xim.utils;
public class utils
{
public static String encodeURL( String urlString )
{
StringBuilder encodedURLString = new StringBuilder( urlString.length() * 3 );
char[] charArray = urlString.toCharArray();
for ( char c : charArray )
{
switch ( c )
{
case '%':
encodedURLString.append( PERCENT );
break;
case ' ':
encodedURLString.append( SPACING );
break;
case '+':
encodedURLString.append( PLUS );
break;
case '/':
encodedURLString.append( FORWARD_SLASH );
break;
case '?':
encodedURLString.append( QUESTION_MASK );
break;
case '&':
encodedURLString.append( AMPERSAND );
break;
case '#':
encodedURLString.append( SHARP );
break;
case '=':
encodedURLString.append( PLUS );
break;
default:
encodedURLString.append( c );
}
}
return encodedURLString.toString();
}
static final String SHARP = "%23";
static final String PLUS = "%2B";
static final String FORWARD_SLASH = "%2F";
static final String QUESTION_MASK = "%3F";
static final String SPACING = "%20";
static final String EQUAL = "%3D";
static final String PERCENT = "%25";
static final String AMPERSAND = "%26";
}

View File

@@ -1983,6 +1983,7 @@
"integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/lodash": "*" "@types/lodash": "*"
} }
@@ -1993,6 +1994,7 @@
"integrity": "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==", "integrity": "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"undici-types": "~7.16.0" "undici-types": "~7.16.0"
} }
@@ -2039,6 +2041,7 @@
"integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==", "integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "8.54.0", "@typescript-eslint/scope-manager": "8.54.0",
"@typescript-eslint/types": "8.54.0", "@typescript-eslint/types": "8.54.0",
@@ -2576,6 +2579,7 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"acorn": "bin/acorn" "acorn": "bin/acorn"
}, },
@@ -3116,6 +3120,7 @@
"integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1", "@eslint-community/regexpp": "^4.12.1",
@@ -3796,6 +3801,7 @@
"integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"jiti": "lib/jiti-cli.mjs" "jiti": "lib/jiti-cli.mjs"
} }
@@ -3920,14 +3926,16 @@
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.23.tgz", "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.23.tgz",
"integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
"dev": true, "dev": true,
"license": "MIT" "license": "MIT",
"peer": true
}, },
"node_modules/lodash-es": { "node_modules/lodash-es": {
"version": "4.17.23", "version": "4.17.23",
"resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.23.tgz", "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.23.tgz",
"integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==",
"dev": true, "dev": true,
"license": "MIT" "license": "MIT",
"peer": true
}, },
"node_modules/lodash-unified": { "node_modules/lodash-unified": {
"version": "1.0.3", "version": "1.0.3",
@@ -4499,6 +4507,7 @@
"integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"chokidar": "^4.0.0", "chokidar": "^4.0.0",
"immutable": "^5.0.2", "immutable": "^5.0.2",
@@ -4685,6 +4694,7 @@
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"devOptional": true, "devOptional": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
"tsserver": "bin/tsserver" "tsserver": "bin/tsserver"
@@ -4793,6 +4803,7 @@
"integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"esbuild": "^0.27.0", "esbuild": "^0.27.0",
"fdir": "^6.5.0", "fdir": "^6.5.0",
@@ -4874,6 +4885,7 @@
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.27.tgz", "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.27.tgz",
"integrity": "sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==", "integrity": "sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.5.27", "@vue/compiler-dom": "3.5.27",
"@vue/compiler-sfc": "3.5.27", "@vue/compiler-sfc": "3.5.27",
@@ -4897,6 +4909,7 @@
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js" "vue-demi-switch": "bin/vue-demi-switch.js"
@@ -4923,6 +4936,7 @@
"integrity": "sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==", "integrity": "sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"debug": "^4.4.0", "debug": "^4.4.0",
"eslint-scope": "^8.2.0", "eslint-scope": "^8.2.0",

View File

@@ -21,6 +21,7 @@ interface AddNewRegulatoryResponse
interface Render { interface Render {
( resonse: AddNewRegulatoryResponse ) :void, } ( resonse: AddNewRegulatoryResponse ) :void, }
type CallBackRender = ( response: AddNewRegulatoryResponse ) => void;
/** /**
* *
* @param regulatory RegulatoryData类型制度对象用于发送请求。 * @param regulatory RegulatoryData类型制度对象用于发送请求。
@@ -68,5 +69,6 @@ function addNewRegulatory( regulatory: RegulatoryData, render: Render ): void
export { export {
addNewRegulatory, addNewRegulatory,
type AddNewRegulatoryResponse, type AddNewRegulatoryResponse,
type Render type Render,
type CallBackRender
}; };

View File

@@ -53,4 +53,35 @@ function getFileType( filePath: string ): string
return type; return type;
} }
export { getFileType }; /**
* 检查文件名中是否有无法使用的字符。
* @param filename 文件名字符串。
* @returns 检查结果。true 无问题false表示文件名含有不合适的字符。
*/
function checkFileName( filename: string ): boolean
{
let result = true;
for ( const c of filename )
{
switch ( c )
{
case "%":
case " ":
case "+":
case "/":
case "?":
case "&":
case "#":
case "=":
result = false;
break;
default:
result = true;
}
}
return result;
}
export { getFileType, checkFileName };

View File

@@ -137,6 +137,7 @@ Copyright © CPIC All rights reserved
:show-file-list="false" :show-file-list="false"
:data="ui.uploadParameters" :data="ui.uploadParameters"
:on-success="onUploadSuccess" :on-success="onUploadSuccess"
:before-upload="onBeforeUpload"
> >
<el-icon class="el-icon--upload"> <el-icon class="el-icon--upload">
<upload-filled /> <upload-filled />
@@ -304,14 +305,12 @@ export default {
ui.newRegulatory.regulatory_files?.splice( rowId, 1 ); ui.newRegulatory.regulatory_files?.splice( rowId, 1 );
}) })
.catch(()=>{}); .catch(()=>{});
}; };
const onPreviewUploadedFile = ( rowId: number ): void => const onPreviewUploadedFile = ( rowId: number ): void =>
{ {
// ui.showPreviewDialog = true; // ui.showPreviewDialog = true;
ui.fileURL = ui.newRegulatory.regulatory_files[rowId]?.file_url + "/" + ui.newRegulatory.regulatory_files[rowId]?.regulatory_file_name; ui.fileURL = encodeURI( ui.newRegulatory.regulatory_files[rowId]?.file_url + "/" + ui.newRegulatory.regulatory_files[rowId]?.regulatory_file_name );
console.log( "完整路径:", ui.fileURL ); console.log( "完整路径:", ui.fileURL );
@@ -356,7 +355,7 @@ export default {
*/ */
const onUploadSuccess: UploadProps["onSuccess"] = ( response: UploadFileResponse, uploadFile: UploadFile, uploadFiles: UploadFiles ): void => const onUploadSuccess: UploadProps["onSuccess"] = ( response: UploadFileResponse, uploadFile: UploadFile, uploadFiles: UploadFiles ): void =>
{ {
console.log( `上传制度文件响应:${response}` ); console.log( "上传制度文件响应:", response.fileList );
console.log( `上传文件:${uploadFile}` ); console.log( `上传文件:${uploadFile}` );
console.log( `上传多文件:${uploadFiles}` ); console.log( `上传多文件:${uploadFiles}` );
@@ -410,6 +409,15 @@ export default {
} }
}; };
const onBeforeUpload = ( uploadFile: UploadFile ): boolean =>
{
let result = true;
console.log( "上传的文件名", uploadFile.name );
return result;
};
const errorHandle = ()=> const errorHandle = ()=>
{ {
ElMessage.error( "渲染文档出错!" ); ElMessage.error( "渲染文档出错!" );
@@ -442,6 +450,7 @@ export default {
onDeleteUploadedFile, onDeleteUploadedFile,
onPreviewUploadedFile, onPreviewUploadedFile,
onCreateNewRegulatory, onCreateNewRegulatory,
onBeforeUpload,
errorHandle, errorHandle,
}; };
}, },