Compare commits
	
		
			7 Commits
		
	
	
		
			44f26dd330
			...
			feature-制度
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| af3442f276 | |||
| 390a5efbb8 | |||
| 72a4895328 | |||
| ef3b31c9e4 | |||
| a11c6ada3d | |||
| ad3320779c | |||
| 96efb0cf53 | 
@@ -34,6 +34,7 @@ public class FileUpload
 | 
			
		||||
     * 3、MultipartFile参数形参名称必须和请求form中file标签的name属性一致,否则值为null。
 | 
			
		||||
     * 4、返回值为接收结果和文件保存绝对路径。
 | 
			
		||||
     * 
 | 
			
		||||
     * @deprecated
 | 
			
		||||
     * @param taskName 任务名称字符串
 | 
			
		||||
     * @param files    MultipartFile结构的文件对象
 | 
			
		||||
     * @param request  HttpServletRequest对象实例
 | 
			
		||||
@@ -41,61 +42,61 @@ public class FileUpload
 | 
			
		||||
     */
 | 
			
		||||
    // @RequestMapping( path = "/file-upload.do" )
 | 
			
		||||
    // @ResponseBody
 | 
			
		||||
    public FileUploadResult getUploadFile(
 | 
			
		||||
            @RequestParam( "task-name" ) String taskName,
 | 
			
		||||
            @RequestParam( "files" ) MultipartFile file,
 | 
			
		||||
            HttpServletRequest request
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
        // session id用来创建临时目录,避免重复
 | 
			
		||||
        String           sessionID = request.getSession().getId();
 | 
			
		||||
        FileUploadResult result    = new FileUploadResult();
 | 
			
		||||
        Vector<String>   fileNames = new Vector<String>();
 | 
			
		||||
    // public FileUploadResult getUploadFile(
 | 
			
		||||
    //         @RequestParam( "task-name" ) String taskName,
 | 
			
		||||
    //         @RequestParam( "files" ) MultipartFile file,
 | 
			
		||||
    //         HttpServletRequest request
 | 
			
		||||
    // )
 | 
			
		||||
    // {
 | 
			
		||||
    //     // session id用来创建临时目录,避免重复
 | 
			
		||||
    //     String           sessionID = request.getSession().getId();
 | 
			
		||||
    //     FileUploadResult result    = new FileUploadResult();
 | 
			
		||||
    //     Vector<String>   fileNames = new Vector<String>();
 | 
			
		||||
 | 
			
		||||
        result.setSuccess( true );
 | 
			
		||||
        result.setMessage( "上传成功!" );
 | 
			
		||||
    //     result.setSuccess( true );
 | 
			
		||||
    //     result.setMessage( "上传成功!" );
 | 
			
		||||
 | 
			
		||||
        String filePath = request.getServletContext().getRealPath( "/temp/upload/" + sessionID );
 | 
			
		||||
        File   dir      = new File( filePath );
 | 
			
		||||
    //     String filePath = request.getServletContext().getRealPath( "/temp/upload/" + sessionID );
 | 
			
		||||
    //     File   dir      = new File( filePath );
 | 
			
		||||
 | 
			
		||||
        if ( !dir.mkdirs() )
 | 
			
		||||
        {
 | 
			
		||||
    //     if ( !dir.mkdirs() )
 | 
			
		||||
    //     {
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    //     }
 | 
			
		||||
 | 
			
		||||
        // 检查文件长度,如果为0则跳过
 | 
			
		||||
        if ( file.isEmpty() )
 | 
			
		||||
        {
 | 
			
		||||
            result.setSuccess( false );
 | 
			
		||||
            result.setMessage( "不允许上传空文件。" );
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            // 保存文件到临时目录
 | 
			
		||||
            Long   milliSecond = LocalDateTime.now().toInstant( ZoneOffset.of( "+8" ) ).toEpochMilli();
 | 
			
		||||
            String fileName    = String.valueOf( milliSecond ) + file.getOriginalFilename();
 | 
			
		||||
            File   destFile    = new File( filePath, fileName );
 | 
			
		||||
            // String fileName = file.getOriginalFilename();
 | 
			
		||||
    //     // 检查文件长度,如果为0则跳过
 | 
			
		||||
    //     if ( file.isEmpty() )
 | 
			
		||||
    //     {
 | 
			
		||||
    //         result.setSuccess( false );
 | 
			
		||||
    //         result.setMessage( "不允许上传空文件。" );
 | 
			
		||||
    //     }
 | 
			
		||||
    //     else
 | 
			
		||||
    //     {
 | 
			
		||||
    //         // 保存文件到临时目录
 | 
			
		||||
    //         Long   milliSecond = LocalDateTime.now().toInstant( ZoneOffset.of( "+8" ) ).toEpochMilli();
 | 
			
		||||
    //         String fileName    = String.valueOf( milliSecond ) + file.getOriginalFilename();
 | 
			
		||||
    //         File   destFile    = new File( filePath, fileName );
 | 
			
		||||
    //         // String fileName = file.getOriginalFilename();
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                file.transferTo( destFile );
 | 
			
		||||
                // 把上传文件的绝对路径保存,返回给前端
 | 
			
		||||
                fileNames.add( destFile.getAbsolutePath() );
 | 
			
		||||
    //         try
 | 
			
		||||
    //         {
 | 
			
		||||
    //             file.transferTo( destFile );
 | 
			
		||||
    //             // 把上传文件的绝对路径保存,返回给前端
 | 
			
		||||
    //             fileNames.add( destFile.getAbsolutePath() );
 | 
			
		||||
 | 
			
		||||
                result.setSuccess( true );
 | 
			
		||||
                result.setMessage( "上传成功" );
 | 
			
		||||
                result.setFileList( fileNames );
 | 
			
		||||
            }
 | 
			
		||||
            catch ( IOException error )
 | 
			
		||||
            {
 | 
			
		||||
                result.setSuccess( false );
 | 
			
		||||
                result.setMessage( "上传失败,原因:" + error.getMessage() );
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    //             result.setSuccess( true );
 | 
			
		||||
    //             result.setMessage( "上传成功" );
 | 
			
		||||
    //             result.setFileList( fileNames );
 | 
			
		||||
    //         }
 | 
			
		||||
    //         catch ( IOException error )
 | 
			
		||||
    //         {
 | 
			
		||||
    //             result.setSuccess( false );
 | 
			
		||||
    //             result.setMessage( "上传失败,原因:" + error.getMessage() );
 | 
			
		||||
    //         }
 | 
			
		||||
    //     }
 | 
			
		||||
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
    //     return result;
 | 
			
		||||
    // }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 接收上传文件,并保存到临时目录:
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ public class FileUploadResult extends QueryResponse
 | 
			
		||||
    public FileUploadResult(
 | 
			
		||||
            boolean success,
 | 
			
		||||
            String message,
 | 
			
		||||
            Vector<String> fileList
 | 
			
		||||
            Vector<UploadedFile> fileList
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
        super( success, message );
 | 
			
		||||
@@ -46,17 +46,17 @@ public class FileUploadResult extends QueryResponse
 | 
			
		||||
        this.fileList = fileList;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Vector<String> getFileList()
 | 
			
		||||
    public Vector<UploadedFile> getFileList()
 | 
			
		||||
    {
 | 
			
		||||
        return fileList;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setFileList( Vector<String> fileList )
 | 
			
		||||
    public void setFileList( Vector<UploadedFile> fileList )
 | 
			
		||||
    {
 | 
			
		||||
        this.fileList = fileList;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @JsonProperty( "fileList" )
 | 
			
		||||
    private Vector<String> fileList;
 | 
			
		||||
    private Vector<UploadedFile> fileList;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,44 @@
 | 
			
		||||
/**
 | 
			
		||||
 * @Author: Kane Wang <wangkane@qq.com>
 | 
			
		||||
 * @Date: 2025-10-31 17:33:13
 | 
			
		||||
 * @LastEditors: Kane Wang
 | 
			
		||||
 * @LastModified: 2025-10-31 17:36:03
 | 
			
		||||
 * @FilePath: src/main/java/com/cpic/xim/web/controllers/fileupload/UploadedFile.java
 | 
			
		||||
 * @Description:
 | 
			
		||||
 *
 | 
			
		||||
 *               Copyright (c) 2025 by Kane All rights reserved
 | 
			
		||||
 */
 | 
			
		||||
package com.cpic.xim.web.controllers.fileupload;
 | 
			
		||||
 | 
			
		||||
public class UploadedFile
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    private String fileName;
 | 
			
		||||
    private String localFilePath;
 | 
			
		||||
 | 
			
		||||
    public String getFileName()
 | 
			
		||||
    {
 | 
			
		||||
        return fileName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setFileName( String fileName )
 | 
			
		||||
    {
 | 
			
		||||
        this.fileName = fileName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getLocalFilePath()
 | 
			
		||||
    {
 | 
			
		||||
        return localFilePath;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setLocalFilePath( String localFilePath )
 | 
			
		||||
    {
 | 
			
		||||
        this.localFilePath = localFilePath;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public UploadedFile( String fileName, String localFilePath )
 | 
			
		||||
    {
 | 
			
		||||
        this.fileName      = fileName;
 | 
			
		||||
        this.localFilePath = localFilePath;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										156
									
								
								code/tomcat/server.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								code/tomcat/server.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,156 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!--
 | 
			
		||||
  Licensed to the Apache Software Foundation (ASF) under one or more
 | 
			
		||||
  contributor license agreements.  See the NOTICE file distributed with
 | 
			
		||||
  this work for additional information regarding copyright ownership.
 | 
			
		||||
  The ASF licenses this file to You under the Apache License, Version 2.0
 | 
			
		||||
  (the "License"); you may not use this file except in compliance with
 | 
			
		||||
  the License.  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
      http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
  Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
  distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
  See the License for the specific language governing permissions and
 | 
			
		||||
  limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
<!-- Note:  A "Server" is not itself a "Container", so you may not
 | 
			
		||||
     define subcomponents such as "Valves" at this level.
 | 
			
		||||
     Documentation at /docs/config/server.html
 | 
			
		||||
 -->
 | 
			
		||||
<Server port="8005" shutdown="SHUTDOWN">
 | 
			
		||||
    <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
 | 
			
		||||
    <!-- Security listener. Documentation at /docs/config/listeners.html
 | 
			
		||||
  <Listener className="org.apache.catalina.security.SecurityListener" />
 | 
			
		||||
  -->
 | 
			
		||||
    <!-- OpenSSL support using Tomcat Native -->
 | 
			
		||||
    <Listener className="org.apache.catalina.core.AprLifecycleListener" />
 | 
			
		||||
    <!-- OpenSSL support using FFM API from Java 22 -->
 | 
			
		||||
    <!-- <Listener className="org.apache.catalina.core.OpenSSLLifecycleListener" /> -->
 | 
			
		||||
    <!-- Prevent memory leaks due to use of particular java/javax APIs-->
 | 
			
		||||
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
 | 
			
		||||
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
 | 
			
		||||
    <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
 | 
			
		||||
 | 
			
		||||
    <!-- Global JNDI resources
 | 
			
		||||
       Documentation at /docs/jndi-resources-howto.html
 | 
			
		||||
  -->
 | 
			
		||||
    <GlobalNamingResources>
 | 
			
		||||
        <!-- Editable user database that can also be used by
 | 
			
		||||
         UserDatabaseRealm to authenticate users
 | 
			
		||||
    -->
 | 
			
		||||
        <Resource name="UserDatabase" auth="Container"
 | 
			
		||||
            type="org.apache.catalina.UserDatabase"
 | 
			
		||||
            description="User database that can be updated and saved"
 | 
			
		||||
            factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
 | 
			
		||||
            pathname="conf/tomcat-users.xml" />
 | 
			
		||||
    </GlobalNamingResources>
 | 
			
		||||
 | 
			
		||||
    <!-- A "Service" is a collection of one or more "Connectors" that share
 | 
			
		||||
       a single "Container" Note:  A "Service" is not itself a "Container",
 | 
			
		||||
       so you may not define subcomponents such as "Valves" at this level.
 | 
			
		||||
       Documentation at /docs/config/service.html
 | 
			
		||||
   -->
 | 
			
		||||
    <Service name="Catalina">
 | 
			
		||||
 | 
			
		||||
        <!--The
 | 
			
		||||
        connectors can use a shared executor, you can define one or more named thread pools-->
 | 
			
		||||
        <!--
 | 
			
		||||
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
 | 
			
		||||
        maxThreads="150" minSpareThreads="4"/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        <!-- A "Connector" represents an endpoint by which requests are received
 | 
			
		||||
         and responses are returned. Documentation at :
 | 
			
		||||
         HTTP Connector: /docs/config/http.html
 | 
			
		||||
         AJP  Connector: /docs/config/ajp.html
 | 
			
		||||
         Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
 | 
			
		||||
    -->
 | 
			
		||||
        <Connector port="8080" protocol="HTTP/1.1"
 | 
			
		||||
            connectionTimeout="20000"
 | 
			
		||||
            redirectPort="8443" />
 | 
			
		||||
        <!-- A "Connector" using the shared thread pool-->
 | 
			
		||||
        <!--
 | 
			
		||||
    <Connector executor="tomcatThreadPool"
 | 
			
		||||
               port="8080" protocol="HTTP/1.1"
 | 
			
		||||
               connectionTimeout="20000"
 | 
			
		||||
               redirectPort="8443" />
 | 
			
		||||
    -->
 | 
			
		||||
        <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
 | 
			
		||||
         This connector uses the NIO implementation. The default
 | 
			
		||||
         SSLImplementation will depend on the presence of the APR/native
 | 
			
		||||
         library and the useOpenSSL attribute of the AprLifecycleListener.
 | 
			
		||||
         Either JSSE or OpenSSL style configuration may be used regardless of
 | 
			
		||||
         the SSLImplementation selected. JSSE style configuration is used below.
 | 
			
		||||
    -->
 | 
			
		||||
        <!--
 | 
			
		||||
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
 | 
			
		||||
               maxThreads="150" SSLEnabled="true">
 | 
			
		||||
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
 | 
			
		||||
        <SSLHostConfig>
 | 
			
		||||
            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
 | 
			
		||||
                         certificateKeystorePassword="changeit" type="RSA" />
 | 
			
		||||
        </SSLHostConfig>
 | 
			
		||||
    </Connector>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
        <!-- Define an AJP 1.3 Connector on port 8009 -->
 | 
			
		||||
        <!--
 | 
			
		||||
    <Connector protocol="AJP/1.3"
 | 
			
		||||
               address="::1"
 | 
			
		||||
               port="8009"
 | 
			
		||||
               redirectPort="8443" />
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
        <!-- An Engine represents the entry point (within Catalina) that processes
 | 
			
		||||
         every request.  The Engine implementation for Tomcat stand alone
 | 
			
		||||
         analyzes the HTTP headers included with the request, and passes them
 | 
			
		||||
         on to the appropriate Host (virtual host).
 | 
			
		||||
         Documentation at /docs/config/engine.html -->
 | 
			
		||||
 | 
			
		||||
        <!-- You should set jvmRoute to support load-balancing via AJP ie :
 | 
			
		||||
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
 | 
			
		||||
    -->
 | 
			
		||||
        <Engine name="Catalina" defaultHost="localhost">
 | 
			
		||||
 | 
			
		||||
            <!--For
 | 
			
		||||
            clustering, please take a look at documentation at:
 | 
			
		||||
          /docs/cluster-howto.html  (simple how to)
 | 
			
		||||
          /docs/config/cluster.html (reference documentation) -->
 | 
			
		||||
            <!--
 | 
			
		||||
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
            <!-- Use the LockOutRealm to prevent attempts to guess user passwords
 | 
			
		||||
           via a brute-force attack -->
 | 
			
		||||
            <Realm className="org.apache.catalina.realm.LockOutRealm">
 | 
			
		||||
                <!-- This Realm uses the UserDatabase configured in the global JNDI
 | 
			
		||||
             resources under the key "UserDatabase".  Any edits
 | 
			
		||||
             that are performed against this UserDatabase are immediately
 | 
			
		||||
             available for use by the Realm.  -->
 | 
			
		||||
                <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
 | 
			
		||||
                    resourceName="UserDatabase" />
 | 
			
		||||
            </Realm>
 | 
			
		||||
 | 
			
		||||
            <Host name="localhost" appBase="webapps"
 | 
			
		||||
                unpackWARs="true" autoDeploy="true">
 | 
			
		||||
                <Context path="/regulatory" docBase="D:/数据/制度库/文件" debug="0" privileged="true" />
 | 
			
		||||
                <!-- SingleSignOn valve, share authentication between web applications
 | 
			
		||||
             Documentation at: /docs/config/valve.html -->
 | 
			
		||||
                <!--
 | 
			
		||||
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
 | 
			
		||||
        -->
 | 
			
		||||
 | 
			
		||||
                <!-- Access log processes all example.
 | 
			
		||||
             Documentation at: /docs/config/valve.html
 | 
			
		||||
             Note: The pattern used is equivalent to using pattern="common" -->
 | 
			
		||||
                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
 | 
			
		||||
                    prefix="localhost_access_log" suffix=".txt"
 | 
			
		||||
                    pattern="%h %l %u %t "%r" %s %b" />
 | 
			
		||||
 | 
			
		||||
            </Host>
 | 
			
		||||
        </Engine>
 | 
			
		||||
    </Service>
 | 
			
		||||
</Server>
 | 
			
		||||
@@ -1,18 +0,0 @@
 | 
			
		||||
## vue3 引入@路径
 | 
			
		||||
path模块问题
 | 
			
		||||
要安装@type/node:npm install @types/node --save-dev
 | 
			
		||||
之后就可以加载path
 | 
			
		||||
import path from "path";
 | 
			
		||||
resolve: {
 | 
			
		||||
            //配置别名
 | 
			
		||||
            alias: [
 | 
			
		||||
                {
 | 
			
		||||
                    find: /^~/,
 | 
			
		||||
                    replacement: "",
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    find: "@",
 | 
			
		||||
                    replacement: path.resolve( __dirname, "src" ),
 | 
			
		||||
                },
 | 
			
		||||
            ],
 | 
			
		||||
        },
 | 
			
		||||
							
								
								
									
										748
									
								
								code/web/regulatory-management-util/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										748
									
								
								code/web/regulatory-management-util/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -13,22 +13,28 @@
 | 
			
		||||
        "vue-router": "^4.6.3"
 | 
			
		||||
      },
 | 
			
		||||
      "devDependencies": {
 | 
			
		||||
        "@element-plus/icons-vue": "^2.3.2",
 | 
			
		||||
        "@stylistic/eslint-plugin": "^5.5.0",
 | 
			
		||||
        "@types/node": "^24.9.1",
 | 
			
		||||
        "@types/node": "^24.9.2",
 | 
			
		||||
        "@typescript-eslint/eslint-plugin": "^8.46.2",
 | 
			
		||||
        "@typescript-eslint/parser": "^8.46.2",
 | 
			
		||||
        "@vitejs/plugin-vue": "^6.0.1",
 | 
			
		||||
        "@vue-office/docx": "^1.6.3",
 | 
			
		||||
        "@vue-office/excel": "^1.7.14",
 | 
			
		||||
        "@vue-office/pdf": "^2.0.10",
 | 
			
		||||
        "@vue/tsconfig": "^0.8.1",
 | 
			
		||||
        "axios": "^1.13.1",
 | 
			
		||||
        "element-plus": "^2.11.5",
 | 
			
		||||
        "eslint": "^9.38.0",
 | 
			
		||||
        "eslint-plugin-vue": "^10.5.1",
 | 
			
		||||
        "path": "^0.12.7",
 | 
			
		||||
        "sass": "^1.93.2",
 | 
			
		||||
        "sass-loader": "^16.0.5",
 | 
			
		||||
        "typescript": "~5.9.3",
 | 
			
		||||
        "vite": "^7.1.12",
 | 
			
		||||
        "vue-demi": "^0.14.10",
 | 
			
		||||
        "vue-eslint-parser": "^10.2.0",
 | 
			
		||||
        "vue-tsc": "^3.1.1"
 | 
			
		||||
        "vue-pdf-embed": "^2.1.3",
 | 
			
		||||
        "vue-tsc": "^3.1.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/helper-string-parser": {
 | 
			
		||||
@@ -89,7 +95,7 @@
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@element-plus/icons-vue": {
 | 
			
		||||
      "version": "2.3.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz",
 | 
			
		||||
      "integrity": "sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
@@ -828,6 +834,202 @@
 | 
			
		||||
      "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@napi-rs/canvas": {
 | 
			
		||||
      "version": "0.1.81",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@napi-rs/canvas/-/canvas-0.1.81.tgz",
 | 
			
		||||
      "integrity": "sha512-ReCjd5SYI/UKx/olaQLC4GtN6wUQGjlgHXs1lvUvWGXfBMR3Fxnik3cL+OxKN5ithNdoU0/GlCrdKcQDFh2XKQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "workspaces": [
 | 
			
		||||
        "e2e/*"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      },
 | 
			
		||||
      "optionalDependencies": {
 | 
			
		||||
        "@napi-rs/canvas-android-arm64": "0.1.81",
 | 
			
		||||
        "@napi-rs/canvas-darwin-arm64": "0.1.81",
 | 
			
		||||
        "@napi-rs/canvas-darwin-x64": "0.1.81",
 | 
			
		||||
        "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.81",
 | 
			
		||||
        "@napi-rs/canvas-linux-arm64-gnu": "0.1.81",
 | 
			
		||||
        "@napi-rs/canvas-linux-arm64-musl": "0.1.81",
 | 
			
		||||
        "@napi-rs/canvas-linux-riscv64-gnu": "0.1.81",
 | 
			
		||||
        "@napi-rs/canvas-linux-x64-gnu": "0.1.81",
 | 
			
		||||
        "@napi-rs/canvas-linux-x64-musl": "0.1.81",
 | 
			
		||||
        "@napi-rs/canvas-win32-x64-msvc": "0.1.81"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@napi-rs/canvas-android-arm64": {
 | 
			
		||||
      "version": "0.1.81",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.81.tgz",
 | 
			
		||||
      "integrity": "sha512-78Lz+AUi+MsWupyZjXwpwQrp1QCwncPvRZrdvrROcZ9Gq9grP7LfQZiGdR8LKyHIq3OR18mDP+JESGT15V1nXw==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "android"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@napi-rs/canvas-darwin-arm64": {
 | 
			
		||||
      "version": "0.1.81",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.81.tgz",
 | 
			
		||||
      "integrity": "sha512-omejuKgHWKDGoh8rsgsyhm/whwxMaryTQjJTd9zD7hiB9/rzcEEJLHnzXWR5ysy4/tTjHaQotE6k2t8eodTLnA==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "darwin"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@napi-rs/canvas-darwin-x64": {
 | 
			
		||||
      "version": "0.1.81",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.81.tgz",
 | 
			
		||||
      "integrity": "sha512-EYfk+co6BElq5DXNH9PBLYDYwc4QsvIVbyrsVHsxVpn4p6Y3/s8MChgC69AGqj3vzZBQ1qx2CRCMtg5cub+XuQ==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "darwin"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": {
 | 
			
		||||
      "version": "0.1.81",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.81.tgz",
 | 
			
		||||
      "integrity": "sha512-teh6Q74CyAcH31yLNQGR9MtXSFxlZa5CI6vvNUISI14gWIJWrhOwUAOly+KRe1aztWR0FWTVSPxM4p5y+06aow==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@napi-rs/canvas-linux-arm64-gnu": {
 | 
			
		||||
      "version": "0.1.81",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.81.tgz",
 | 
			
		||||
      "integrity": "sha512-AGEopHFYRzJOjxY+2G1RmHPRnuWvO3Qdhq7sIazlSjxb3Z6dZHg7OB/4ZimXaimPjDACm9qWa6t5bn9bhXvkcw==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@napi-rs/canvas-linux-arm64-musl": {
 | 
			
		||||
      "version": "0.1.81",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.81.tgz",
 | 
			
		||||
      "integrity": "sha512-Bj3m1cl4GIhsigkdwOxii4g4Ump3/QhNpx85IgAlCCYXpaly6mcsWpuDYEabfIGWOWhDUNBOndaQUPfWK1czOQ==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@napi-rs/canvas-linux-riscv64-gnu": {
 | 
			
		||||
      "version": "0.1.81",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.81.tgz",
 | 
			
		||||
      "integrity": "sha512-yg/5NkHykVdwPlD3XObwCa/EswkOwLHswJcI9rHrac+znHsmCSj5AMX/RTU9Z9F6lZTwL60JM2Esit33XhAMiw==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "riscv64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@napi-rs/canvas-linux-x64-gnu": {
 | 
			
		||||
      "version": "0.1.81",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.81.tgz",
 | 
			
		||||
      "integrity": "sha512-tPfMpSEBuV5dJSKexO/UZxpOqnYTaNbG8aKa1ek8QsWu+4SJ/foWkaxscra/RUv85vepx6WWDjzBNbNJsTnO0w==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@napi-rs/canvas-linux-x64-musl": {
 | 
			
		||||
      "version": "0.1.81",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.81.tgz",
 | 
			
		||||
      "integrity": "sha512-1L0xnYgzqn8Baef+inPvY4dKqdmw3KCBoe0NEDgezuBZN7MA5xElwifoG8609uNdrMtJ9J6QZarsslLRVqri7g==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@napi-rs/canvas-win32-x64-msvc": {
 | 
			
		||||
      "version": "0.1.81",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.81.tgz",
 | 
			
		||||
      "integrity": "sha512-57ryVbhm/z7RE9/UVcS7mrLPdlayLesy+9U0Uf6epCoeSGrs99tfieCcgZWFbIgmByQ1AZnNtFI2N6huqDLlWQ==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "win32"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@nodelib/fs.scandir": {
 | 
			
		||||
      "version": "2.1.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
 | 
			
		||||
@@ -1542,9 +1744,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@types/node": {
 | 
			
		||||
      "version": "24.9.1",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@types/node/-/node-24.9.1.tgz",
 | 
			
		||||
      "integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==",
 | 
			
		||||
      "version": "24.9.2",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@types/node/-/node-24.9.2.tgz",
 | 
			
		||||
      "integrity": "sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "peer": true,
 | 
			
		||||
@@ -1841,6 +2043,60 @@
 | 
			
		||||
        "vscode-uri": "^3.0.8"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@vue-office/docx": {
 | 
			
		||||
      "version": "1.6.3",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@vue-office/docx/-/docx-1.6.3.tgz",
 | 
			
		||||
      "integrity": "sha512-Cs+3CAaRBOWOiW4XAhTwwxJ0dy8cPIf6DqfNvYcD3YACiLwO4kuawLF2IAXxyijhbuOeoFsfvoVbOc16A/4bZA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "hasInstallScript": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "@vue/composition-api": "^1.7.1",
 | 
			
		||||
        "vue": "^2.0.0 || >=3.0.0",
 | 
			
		||||
        "vue-demi": "^0.14.6"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependenciesMeta": {
 | 
			
		||||
        "@vue/composition-api": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@vue-office/excel": {
 | 
			
		||||
      "version": "1.7.14",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@vue-office/excel/-/excel-1.7.14.tgz",
 | 
			
		||||
      "integrity": "sha512-pVUgt+emDQUnW7q22CfnQ+jl43mM/7IFwYzOg7lwOwPEbiVB4K4qEQf+y/bc4xGXz75w1/e3Kz3G6wAafmFBFg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "hasInstallScript": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "@vue/composition-api": "^1.7.1",
 | 
			
		||||
        "vue": "^2.0.0 || >=3.0.0",
 | 
			
		||||
        "vue-demi": "^0.14.6"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependenciesMeta": {
 | 
			
		||||
        "@vue/composition-api": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@vue-office/pdf": {
 | 
			
		||||
      "version": "2.0.10",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@vue-office/pdf/-/pdf-2.0.10.tgz",
 | 
			
		||||
      "integrity": "sha512-yHVLrMAKpMPBkhBwofFyGEtEeJF0Zd7oGmf56Pe5aj/xObdRq3E1CIZqTqhWJNgHV8oLQqaX0vs4p5T1zq+GIA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "hasInstallScript": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "@vue/composition-api": "^1.7.1",
 | 
			
		||||
        "vue": "^2.0.0 || >=3.0.0",
 | 
			
		||||
        "vue-demi": "^0.14.6"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependenciesMeta": {
 | 
			
		||||
        "@vue/composition-api": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@vue/compiler-core": {
 | 
			
		||||
      "version": "3.5.22",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.22.tgz",
 | 
			
		||||
@@ -1898,9 +2154,9 @@
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@vue/language-core": {
 | 
			
		||||
      "version": "3.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-3.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-qjMY3Q+hUCjdH+jLrQapqgpsJ0rd/2mAY02lZoHG3VFJZZZKLjAlV+Oo9QmWIT4jh8+Rx8RUGUi++d7T9Wb6Mw==",
 | 
			
		||||
      "version": "3.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-3.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-PyFDCqpdfYUT+oMLqcc61oHfJlC6yjhybaefwQjRdkchIihToOEpJ2Wu/Ebq2yrnJdd1EsaAvZaXVAqcxtnDxQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
@@ -2006,33 +2262,6 @@
 | 
			
		||||
        "url": "https://github.com/sponsors/antfu"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@vueuse/core/node_modules/vue-demi": {
 | 
			
		||||
      "version": "0.14.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
 | 
			
		||||
      "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "hasInstallScript": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "vue-demi-fix": "bin/vue-demi-fix.js",
 | 
			
		||||
        "vue-demi-switch": "bin/vue-demi-switch.js"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=12"
 | 
			
		||||
      },
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "url": "https://github.com/sponsors/antfu"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "@vue/composition-api": "^1.0.0-rc.1",
 | 
			
		||||
        "vue": "^3.0.0-0 || ^2.6.0"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependenciesMeta": {
 | 
			
		||||
        "@vue/composition-api": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@vueuse/metadata": {
 | 
			
		||||
      "version": "9.13.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz",
 | 
			
		||||
@@ -2056,33 +2285,6 @@
 | 
			
		||||
        "url": "https://github.com/sponsors/antfu"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@vueuse/shared/node_modules/vue-demi": {
 | 
			
		||||
      "version": "0.14.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
 | 
			
		||||
      "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "hasInstallScript": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "vue-demi-fix": "bin/vue-demi-fix.js",
 | 
			
		||||
        "vue-demi-switch": "bin/vue-demi-switch.js"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=12"
 | 
			
		||||
      },
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "url": "https://github.com/sponsors/antfu"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "@vue/composition-api": "^1.0.0-rc.1",
 | 
			
		||||
        "vue": "^3.0.0-0 || ^2.6.0"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependenciesMeta": {
 | 
			
		||||
        "@vue/composition-api": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/acorn": {
 | 
			
		||||
      "version": "8.15.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
 | 
			
		||||
@@ -2125,9 +2327,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/alien-signals": {
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-3.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-JHoRJf18Y6HN4/KZALr3iU+0vW9LKG+8FMThQlbn4+gv8utsLIkwpomjElGPccGeNwh0FI2HN6BLnyFLo6OyLQ==",
 | 
			
		||||
      "version": "3.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-3.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-2JXjom6R7ZwrISpUphLhf4htUq1aKRCennTJ6u9kFfr3sLmC9+I4CxxVi+McoFnIg+p1HnVrfLT/iCt4Dlz//Q==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
@@ -2161,6 +2363,25 @@
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/asynckit": {
 | 
			
		||||
      "version": "0.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/axios": {
 | 
			
		||||
      "version": "1.13.1",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.13.1.tgz",
 | 
			
		||||
      "integrity": "sha512-hU4EGxxt+j7TQijx1oYdAjw4xuIp1wRQSsbMFwSthCWeBQur1eF+qJ5iQ5sN3Tw8YRzQNKb8jszgBdMDVqwJcw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "follow-redirects": "^1.15.6",
 | 
			
		||||
        "form-data": "^4.0.4",
 | 
			
		||||
        "proxy-from-env": "^1.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/balanced-match": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
 | 
			
		||||
@@ -2198,6 +2419,20 @@
 | 
			
		||||
        "node": ">=8"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/call-bind-apply-helpers": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "es-errors": "^1.3.0",
 | 
			
		||||
        "function-bind": "^1.1.2"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/callsites": {
 | 
			
		||||
      "version": "3.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
 | 
			
		||||
@@ -2261,6 +2496,19 @@
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/combined-stream": {
 | 
			
		||||
      "version": "1.0.8",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
 | 
			
		||||
      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "delayed-stream": "~1.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.8"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/concat-map": {
 | 
			
		||||
      "version": "0.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
 | 
			
		||||
@@ -2334,6 +2582,16 @@
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/delayed-stream": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=0.4.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/detect-libc": {
 | 
			
		||||
      "version": "1.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz",
 | 
			
		||||
@@ -2348,6 +2606,21 @@
 | 
			
		||||
        "node": ">=0.10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/dunder-proto": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "call-bind-apply-helpers": "^1.0.1",
 | 
			
		||||
        "es-errors": "^1.3.0",
 | 
			
		||||
        "gopd": "^1.2.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/element-plus": {
 | 
			
		||||
      "version": "2.11.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.11.5.tgz",
 | 
			
		||||
@@ -2386,6 +2659,55 @@
 | 
			
		||||
        "url": "https://github.com/fb55/entities?sponsor=1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/es-define-property": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/es-errors": {
 | 
			
		||||
      "version": "1.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/es-object-atoms": {
 | 
			
		||||
      "version": "1.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "es-errors": "^1.3.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/es-set-tostringtag": {
 | 
			
		||||
      "version": "2.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "es-errors": "^1.3.0",
 | 
			
		||||
        "get-intrinsic": "^1.2.6",
 | 
			
		||||
        "has-tostringtag": "^1.0.2",
 | 
			
		||||
        "hasown": "^2.0.2"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/esbuild": {
 | 
			
		||||
      "version": "0.25.8",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz",
 | 
			
		||||
@@ -2837,6 +3159,44 @@
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "ISC"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/follow-redirects": {
 | 
			
		||||
      "version": "1.15.11",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.11.tgz",
 | 
			
		||||
      "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "funding": [
 | 
			
		||||
        {
 | 
			
		||||
          "type": "individual",
 | 
			
		||||
          "url": "https://github.com/sponsors/RubenVerborgh"
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=4.0"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependenciesMeta": {
 | 
			
		||||
        "debug": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/form-data": {
 | 
			
		||||
      "version": "4.0.4",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.4.tgz",
 | 
			
		||||
      "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "asynckit": "^0.4.0",
 | 
			
		||||
        "combined-stream": "^1.0.8",
 | 
			
		||||
        "es-set-tostringtag": "^2.1.0",
 | 
			
		||||
        "hasown": "^2.0.2",
 | 
			
		||||
        "mime-types": "^2.1.12"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 6"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/fsevents": {
 | 
			
		||||
      "version": "2.3.3",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
 | 
			
		||||
@@ -2852,6 +3212,55 @@
 | 
			
		||||
        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/function-bind": {
 | 
			
		||||
      "version": "1.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "url": "https://github.com/sponsors/ljharb"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/get-intrinsic": {
 | 
			
		||||
      "version": "1.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "call-bind-apply-helpers": "^1.0.2",
 | 
			
		||||
        "es-define-property": "^1.0.1",
 | 
			
		||||
        "es-errors": "^1.3.0",
 | 
			
		||||
        "es-object-atoms": "^1.1.1",
 | 
			
		||||
        "function-bind": "^1.1.2",
 | 
			
		||||
        "get-proto": "^1.0.1",
 | 
			
		||||
        "gopd": "^1.2.0",
 | 
			
		||||
        "has-symbols": "^1.1.0",
 | 
			
		||||
        "hasown": "^2.0.2",
 | 
			
		||||
        "math-intrinsics": "^1.1.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.4"
 | 
			
		||||
      },
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "url": "https://github.com/sponsors/ljharb"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/get-proto": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "dunder-proto": "^1.0.1",
 | 
			
		||||
        "es-object-atoms": "^1.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/glob-parent": {
 | 
			
		||||
      "version": "6.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
 | 
			
		||||
@@ -2878,6 +3287,19 @@
 | 
			
		||||
        "url": "https://github.com/sponsors/sindresorhus"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/gopd": {
 | 
			
		||||
      "version": "1.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.4"
 | 
			
		||||
      },
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "url": "https://github.com/sponsors/ljharb"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/graphemer": {
 | 
			
		||||
      "version": "1.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
 | 
			
		||||
@@ -2895,6 +3317,48 @@
 | 
			
		||||
        "node": ">=8"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/has-symbols": {
 | 
			
		||||
      "version": "1.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.4"
 | 
			
		||||
      },
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "url": "https://github.com/sponsors/ljharb"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/has-tostringtag": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "has-symbols": "^1.0.3"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.4"
 | 
			
		||||
      },
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "url": "https://github.com/sponsors/ljharb"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/hasown": {
 | 
			
		||||
      "version": "2.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "function-bind": "^1.1.2"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/ignore": {
 | 
			
		||||
      "version": "7.0.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
 | 
			
		||||
@@ -3104,6 +3568,16 @@
 | 
			
		||||
        "@jridgewell/sourcemap-codec": "^1.5.5"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/math-intrinsics": {
 | 
			
		||||
      "version": "1.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/memoize-one": {
 | 
			
		||||
      "version": "6.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
 | 
			
		||||
@@ -3148,6 +3622,29 @@
 | 
			
		||||
        "url": "https://github.com/sponsors/jonschlinkert"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/mime-db": {
 | 
			
		||||
      "version": "1.52.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
 | 
			
		||||
      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.6"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/mime-types": {
 | 
			
		||||
      "version": "2.1.35",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
 | 
			
		||||
      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "mime-db": "1.52.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.6"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/minimatch": {
 | 
			
		||||
      "version": "9.0.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz",
 | 
			
		||||
@@ -3203,13 +3700,6 @@
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/neo-async": {
 | 
			
		||||
      "version": "2.6.2",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
 | 
			
		||||
      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/node-addon-api": {
 | 
			
		||||
      "version": "7.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz",
 | 
			
		||||
@@ -3347,6 +3837,19 @@
 | 
			
		||||
        "node": ">=8"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/pdfjs-dist": {
 | 
			
		||||
      "version": "4.10.38",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/pdfjs-dist/-/pdfjs-dist-4.10.38.tgz",
 | 
			
		||||
      "integrity": "sha512-/Y3fcFrXEAsMjJXeL9J8+ZG9U01LbuWaYypvDW2ycW1jL269L3js3DVBjDJ0Up9Np1uqDXsDrRihHANhZOlwdQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "Apache-2.0",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=20"
 | 
			
		||||
      },
 | 
			
		||||
      "optionalDependencies": {
 | 
			
		||||
        "@napi-rs/canvas": "^0.1.65"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/picocolors": {
 | 
			
		||||
      "version": "1.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
 | 
			
		||||
@@ -3428,6 +3931,13 @@
 | 
			
		||||
        "node": ">= 0.6.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/proxy-from-env": {
 | 
			
		||||
      "version": "1.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/punycode": {
 | 
			
		||||
      "version": "2.3.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
 | 
			
		||||
@@ -3580,47 +4090,6 @@
 | 
			
		||||
        "@parcel/watcher": "^2.4.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/sass-loader": {
 | 
			
		||||
      "version": "16.0.5",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-16.0.5.tgz",
 | 
			
		||||
      "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "neo-async": "^2.6.2"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 18.12.0"
 | 
			
		||||
      },
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "type": "opencollective",
 | 
			
		||||
        "url": "https://opencollective.com/webpack"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "@rspack/core": "0.x || 1.x",
 | 
			
		||||
        "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
 | 
			
		||||
        "sass": "^1.3.0",
 | 
			
		||||
        "sass-embedded": "*",
 | 
			
		||||
        "webpack": "^5.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependenciesMeta": {
 | 
			
		||||
        "@rspack/core": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        },
 | 
			
		||||
        "node-sass": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        },
 | 
			
		||||
        "sass": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        },
 | 
			
		||||
        "sass-embedded": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        },
 | 
			
		||||
        "webpack": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/scss": {
 | 
			
		||||
      "version": "0.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/scss/-/scss-0.2.4.tgz",
 | 
			
		||||
@@ -3913,6 +4382,34 @@
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/vue-demi": {
 | 
			
		||||
      "version": "0.14.10",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz",
 | 
			
		||||
      "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "hasInstallScript": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "peer": true,
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "vue-demi-fix": "bin/vue-demi-fix.js",
 | 
			
		||||
        "vue-demi-switch": "bin/vue-demi-switch.js"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=12"
 | 
			
		||||
      },
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "url": "https://github.com/sponsors/antfu"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "@vue/composition-api": "^1.0.0-rc.1",
 | 
			
		||||
        "vue": "^3.0.0-0 || ^2.6.0"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependenciesMeta": {
 | 
			
		||||
        "@vue/composition-api": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/vue-eslint-parser": {
 | 
			
		||||
      "version": "10.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.2.0.tgz",
 | 
			
		||||
@@ -3951,6 +4448,19 @@
 | 
			
		||||
        "url": "https://opencollective.com/eslint"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/vue-pdf-embed": {
 | 
			
		||||
      "version": "2.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/vue-pdf-embed/-/vue-pdf-embed-2.1.3.tgz",
 | 
			
		||||
      "integrity": "sha512-EGgZNb8HRrAloBpb8p8CugDpJpoPbQ8CFfAYdWZgq2e5qBMP9JSeLzVQIAJkXsclHXRIS3O9fp3WQbP9T5Inwg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "pdfjs-dist": "^4.10.38"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "vue": "^3.3.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/vue-router": {
 | 
			
		||||
      "version": "4.6.3",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.6.3.tgz",
 | 
			
		||||
@@ -3967,14 +4477,14 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/vue-tsc": {
 | 
			
		||||
      "version": "3.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-3.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-fyixKxFniOVgn+L/4+g8zCG6dflLLt01Agz9jl3TO45Bgk87NZJRmJVPsiK+ouq3LB91jJCbOV+pDkzYTxbI7A==",
 | 
			
		||||
      "version": "3.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-3.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-3fd4DY0rFczs5f+VB3OhcLU83V6+3Puj2yLBe0Ak65k7ERk+STVNKaOAi0EBo6Lc15UiJB6LzU6Mxy4+h/pKew==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@volar/typescript": "2.4.23",
 | 
			
		||||
        "@vue/language-core": "3.1.1"
 | 
			
		||||
        "@vue/language-core": "3.1.2"
 | 
			
		||||
      },
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "vue-tsc": "bin/vue-tsc.js"
 | 
			
		||||
 
 | 
			
		||||
@@ -14,21 +14,27 @@
 | 
			
		||||
    "vue-router": "^4.6.3"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@element-plus/icons-vue": "^2.3.2",
 | 
			
		||||
    "@stylistic/eslint-plugin": "^5.5.0",
 | 
			
		||||
    "@types/node": "^24.9.1",
 | 
			
		||||
    "@types/node": "^24.9.2",
 | 
			
		||||
    "@typescript-eslint/eslint-plugin": "^8.46.2",
 | 
			
		||||
    "@typescript-eslint/parser": "^8.46.2",
 | 
			
		||||
    "@vitejs/plugin-vue": "^6.0.1",
 | 
			
		||||
    "@vue-office/docx": "^1.6.3",
 | 
			
		||||
    "@vue-office/excel": "^1.7.14",
 | 
			
		||||
    "@vue-office/pdf": "^2.0.10",
 | 
			
		||||
    "@vue/tsconfig": "^0.8.1",
 | 
			
		||||
    "axios": "^1.13.1",
 | 
			
		||||
    "element-plus": "^2.11.5",
 | 
			
		||||
    "eslint": "^9.38.0",
 | 
			
		||||
    "eslint-plugin-vue": "^10.5.1",
 | 
			
		||||
    "path": "^0.12.7",
 | 
			
		||||
    "sass": "^1.93.2",
 | 
			
		||||
    "sass-loader": "^16.0.5",
 | 
			
		||||
    "typescript": "~5.9.3",
 | 
			
		||||
    "vite": "^7.1.12",
 | 
			
		||||
    "vue-demi": "^0.14.10",
 | 
			
		||||
    "vue-eslint-parser": "^10.2.0",
 | 
			
		||||
    "vue-tsc": "^3.1.1"
 | 
			
		||||
    "vue-pdf-embed": "^2.1.3",
 | 
			
		||||
    "vue-tsc": "^3.1.2"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -72,8 +72,7 @@ Copyright © CPIC All rights reserved
 | 
			
		||||
    </el-scrollbar>
 | 
			
		||||
</template>
 | 
			
		||||
<script lang="js">
 | 
			
		||||
// @ts-expect-error 之后再补充类型文件
 | 
			
		||||
import { hasOnlyChild } from "../../../router/index.ts";
 | 
			
		||||
import { hasOnlyChild } from "@/router/index.ts";
 | 
			
		||||
import { useRoute, useRouter } from "vue-router";
 | 
			
		||||
import { computed } from "vue";
 | 
			
		||||
 | 
			
		||||
@@ -102,17 +101,6 @@ export default {
 | 
			
		||||
.sidebar-wrapper {
 | 
			
		||||
    @include no-select;
 | 
			
		||||
 | 
			
		||||
    -webkit-touch-callout: none;
 | 
			
		||||
    -moz-user-select: none;
 | 
			
		||||
    /*火狐*/
 | 
			
		||||
    -webkit-user-select: none;
 | 
			
		||||
    /*webkit浏览器*/
 | 
			
		||||
    -ms-user-select: none;
 | 
			
		||||
    /*IE10*/
 | 
			
		||||
    -khtml-user-select: none;
 | 
			
		||||
    /*早期浏览器*/
 | 
			
		||||
    user-select: none;
 | 
			
		||||
 | 
			
		||||
    height: 100%;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,21 +1,8 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: Kane
 | 
			
		||||
 * @Date: 2023-03-23 15:44:52
 | 
			
		||||
 * @LastEditors: Kane
 | 
			
		||||
 * @FilePath: /task_schedule/src/layout/components/Main.vue
 | 
			
		||||
 * @Description:
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) ${2022} by Kane, All Rights Reserved.
 | 
			
		||||
-->
 | 
			
		||||
 <!--
 | 
			
		||||
 * @Author: Kane
 | 
			
		||||
 * @Date: 2023-01-04 11:40:03
 | 
			
		||||
 * @LastEditors: Kane
 | 
			
		||||
 * @LastEditTime: 2023-09-27 11:19:05
 | 
			
		||||
 * @FilePath: /it-console/src/layout/components/Main.vue
 | 
			
		||||
 * @Description:
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) ${2022} by Kane, All Rights Reserved.
 | 
			
		||||
author:        Kane Wang <wangkane@qq.com>
 | 
			
		||||
date:          2025-10-23 17:52:01
 | 
			
		||||
component:     Main
 | 
			
		||||
Copyright © CPIC All rights reserved
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
    <el-scrollbar>
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,8 @@ import { router } from "./router/index.ts";
 | 
			
		||||
import AppMain from "./AppMain.vue";
 | 
			
		||||
 | 
			
		||||
import ElementPlus from "element-plus";
 | 
			
		||||
import * as ElementPlusIconsVue from "@element-plus/icons-vue";
 | 
			
		||||
 | 
			
		||||
import "element-plus/dist/index.css";
 | 
			
		||||
 | 
			
		||||
// eslint-disable-next-line
 | 
			
		||||
@@ -18,6 +20,13 @@ const app = createApp( AppMain );
 | 
			
		||||
 | 
			
		||||
app.use( ElementPlus );
 | 
			
		||||
app.use( router );
 | 
			
		||||
 | 
			
		||||
// 引入element-icon
 | 
			
		||||
for ( const [key, component,] of Object.entries( ElementPlusIconsVue ))
 | 
			
		||||
{
 | 
			
		||||
    app.component( key, component );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
app.mount( "#app" );
 | 
			
		||||
 | 
			
		||||
// eslint-disable-next-line
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: Kane Wang <wangkane@qq.com>
 | 
			
		||||
 * @Date: 2025-10-13 15:31:41
 | 
			
		||||
 * @LastEditors: Kane Wang
 | 
			
		||||
 * @LastModified: 2025-10-23 17:47:28
 | 
			
		||||
 * @LastModified: 2025-10-31 15:10:46
 | 
			
		||||
 * @FilePath: src/router/index.ts
 | 
			
		||||
 * @Description:
 | 
			
		||||
 *
 | 
			
		||||
@@ -19,11 +19,79 @@ export declare interface SideBarRouteRecordNormalized extends RouteRecordNormali
 | 
			
		||||
 | 
			
		||||
const routes = [
 | 
			
		||||
    {
 | 
			
		||||
        path: "/console",
 | 
			
		||||
        name: "Console",
 | 
			
		||||
        path: "/",
 | 
			
		||||
        name: "root",
 | 
			
		||||
        redirect: "Overview",
 | 
			
		||||
        hidden: true,
 | 
			
		||||
        // component: index,
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        path: "/desktop",
 | 
			
		||||
        name: "Desktop",
 | 
			
		||||
        meta: {
 | 
			
		||||
            title: "工作台",
 | 
			
		||||
            icon: "house",
 | 
			
		||||
        },
 | 
			
		||||
        component: () => import( "../layout/console/Index.vue" ),
 | 
			
		||||
        children:[
 | 
			
		||||
            {
 | 
			
		||||
                path: "/overview",
 | 
			
		||||
                name: "Overview",
 | 
			
		||||
                meta: {
 | 
			
		||||
                    title: "总览",
 | 
			
		||||
                    icon: "house",
 | 
			
		||||
                },
 | 
			
		||||
                component: () => import( "@/views/console/desktop/Overview.vue" ),
 | 
			
		||||
            },
 | 
			
		||||
        ],
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        path: "/data",
 | 
			
		||||
        name: "Data",
 | 
			
		||||
        meta: {
 | 
			
		||||
            title: "制度库管理",
 | 
			
		||||
            icon:"Collection",
 | 
			
		||||
        },
 | 
			
		||||
        component: () => import( "../layout/console/Index.vue" ),
 | 
			
		||||
        children:[
 | 
			
		||||
            {
 | 
			
		||||
                path: "/regulatory-management",
 | 
			
		||||
                name:"RegulatoryManagement",
 | 
			
		||||
                meta: {
 | 
			
		||||
                    title: "制度文件管理",
 | 
			
		||||
                    icon:"document",
 | 
			
		||||
                },
 | 
			
		||||
                component: ()=> import( "@/views/console/data/RegulatoryManagement.vue" ),
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                path: "/department-management",
 | 
			
		||||
                name: "DepartmentManagement",
 | 
			
		||||
                meta:{
 | 
			
		||||
                    title: "组织机构管理",
 | 
			
		||||
                    icon: "OfficeBuilding",
 | 
			
		||||
                },
 | 
			
		||||
                component: ()=> import( "@/views/console/data/RegulatoryManagement.vue" ),
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                path: "/new-regulatory",
 | 
			
		||||
                name: "NewRegulatory",
 | 
			
		||||
                meta: {
 | 
			
		||||
                    title: "测试用 - 新建",
 | 
			
		||||
                    icon: "OfficeBuilding",
 | 
			
		||||
                },
 | 
			
		||||
                hidden: false,
 | 
			
		||||
                component: () => import( "@/views/console/data/NewRegulatory.vue" ),
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                path: "/upload-regulatory",
 | 
			
		||||
                name: "UploadRegulatory",
 | 
			
		||||
                meta: {
 | 
			
		||||
                    title: "测试用 - 上传制度",
 | 
			
		||||
                    icon: "OfficeBuilding",
 | 
			
		||||
                },
 | 
			
		||||
                hidden: false,
 | 
			
		||||
                component: () => import( "@/views/console/data/UploadRegulatory.vue" ),
 | 
			
		||||
            },
 | 
			
		||||
        ],
 | 
			
		||||
    },
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,26 @@
 | 
			
		||||
/**
 | 
			
		||||
 * @Author: Kane Wang <wangkane@qq.com>
 | 
			
		||||
 * @Date: 2025-10-28 10:13:04
 | 
			
		||||
 * @LastEditors: Kane Wang
 | 
			
		||||
 * @LastModified: 2025-10-28 10:13:04
 | 
			
		||||
 * @FilePath: src/types/regulatory.ts
 | 
			
		||||
 * @Description: 和制度相关的类型定义
 | 
			
		||||
 *
 | 
			
		||||
 *               Copyright (c) 2025 by Kane All rights reserved
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
interface RegulatoryData {
 | 
			
		||||
    department_name: string;
 | 
			
		||||
    release_year: string;
 | 
			
		||||
    regulatory_name: string;
 | 
			
		||||
    comment: string;
 | 
			
		||||
    regulatory_files: null | RegulatoryFile[]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface RegulatoryFile {
 | 
			
		||||
    regulatory_file_name: string;
 | 
			
		||||
    file_url: string;
 | 
			
		||||
    file_type: string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export { type RegulatoryData, type RegulatoryFile };
 | 
			
		||||
@@ -0,0 +1,173 @@
 | 
			
		||||
<!--
 | 
			
		||||
author:        Kane Wang <wangkane@qq.com>
 | 
			
		||||
date:          2025-10-30 15:06:18
 | 
			
		||||
component:     NewRegulatory
 | 
			
		||||
Copyright © CPIC All rights reserved
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
    <div class="wrapper">
 | 
			
		||||
        <div class="query-box-wrapper">
 | 
			
		||||
            <el-row :gutter="10">
 | 
			
		||||
                <el-col :span="1">
 | 
			
		||||
                    <span>名称</span>
 | 
			
		||||
                </el-col>
 | 
			
		||||
                <el-col :span="10">
 | 
			
		||||
                    <el-input style="text-align:center;" />
 | 
			
		||||
                </el-col>
 | 
			
		||||
            </el-row>
 | 
			
		||||
            <el-row :gutter="10">
 | 
			
		||||
                <el-col :span="1">
 | 
			
		||||
                    <span>部门</span>
 | 
			
		||||
                </el-col>
 | 
			
		||||
                <el-col :span="4">
 | 
			
		||||
                    <el-input />
 | 
			
		||||
                </el-col>
 | 
			
		||||
                <el-col :span="2">
 | 
			
		||||
                    <span>发布、修订年份</span>
 | 
			
		||||
                </el-col>
 | 
			
		||||
                <el-col :span="4">
 | 
			
		||||
                    <el-input />
 | 
			
		||||
                </el-col>
 | 
			
		||||
            </el-row>
 | 
			
		||||
            <el-row :gutter="10">
 | 
			
		||||
                <el-col :span="1">
 | 
			
		||||
                    <span>备注</span>
 | 
			
		||||
                </el-col>
 | 
			
		||||
                <el-col :span="10">
 | 
			
		||||
                    <el-input type="textarea" :rows="3" />
 | 
			
		||||
                </el-col>
 | 
			
		||||
            </el-row>
 | 
			
		||||
            <el-row :gutter="10">
 | 
			
		||||
                <el-col :span="3">
 | 
			
		||||
                    <div class="button-wrapper-left">
 | 
			
		||||
                        <el-button type="primary" icon="document" @click="showUploadFileDialog">
 | 
			
		||||
                            新增文档
 | 
			
		||||
                        </el-button>
 | 
			
		||||
                        <el-button type="primary" icon="document">
 | 
			
		||||
                            新增文档
 | 
			
		||||
                        </el-button>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </el-col>
 | 
			
		||||
                <el-col :span="5" />
 | 
			
		||||
                <el-col :span="3">
 | 
			
		||||
                    <div class="button-wrapper-right">
 | 
			
		||||
                        <el-button type="primary" icon="document">
 | 
			
		||||
                            提交
 | 
			
		||||
                        </el-button>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </el-col>
 | 
			
		||||
            </el-row>
 | 
			
		||||
        </div>
 | 
			
		||||
        <el-table
 | 
			
		||||
            width="100%" stripe
 | 
			
		||||
            border
 | 
			
		||||
            :head-cell-style="headerCellStyle"
 | 
			
		||||
        >
 | 
			
		||||
            <el-table-column label="文件名" align="center" width="200px">
 | 
			
		||||
                <template #default="file">
 | 
			
		||||
                    <span>{{ file.row.filename }}</span>
 | 
			
		||||
                </template>
 | 
			
		||||
            </el-table-column>
 | 
			
		||||
            <el-table-column label="文件类型" align="center">
 | 
			
		||||
                <template #default="file">
 | 
			
		||||
                    <span>{{ file.row.filename }}</span>
 | 
			
		||||
                </template>
 | 
			
		||||
            </el-table-column>
 | 
			
		||||
            <el-table-column label="操作" align="center" width="200px">
 | 
			
		||||
                <el-button type="primary" icon="search">
 | 
			
		||||
                    查看
 | 
			
		||||
                </el-button>
 | 
			
		||||
            </el-table-column>
 | 
			
		||||
        </el-table>
 | 
			
		||||
        <div class="upload-dialog-wrapper">
 | 
			
		||||
            <el-dialog
 | 
			
		||||
                v-model="ui.showUploadDialog" title="上传文件"
 | 
			
		||||
                width="600px"
 | 
			
		||||
                :close-on-click-model="false" :close-on-press-escape="false"
 | 
			
		||||
                :show-close="true"
 | 
			
		||||
            >
 | 
			
		||||
                <el-upload
 | 
			
		||||
                    drag
 | 
			
		||||
                    :action="ui.urlFileUpload"
 | 
			
		||||
                    name="files"
 | 
			
		||||
                    :show-file-list="false"
 | 
			
		||||
                    :data="ui.uploadParameters"
 | 
			
		||||
                    :on-success="onUploadSuccess"
 | 
			
		||||
                >
 | 
			
		||||
                    <el-icon class="el-icon--upload">
 | 
			
		||||
                        <upload-filled />
 | 
			
		||||
                    </el-icon>
 | 
			
		||||
                    <div class="el-upload__text">
 | 
			
		||||
                        将文件拖到此处,或<em>点击上传</em>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </el-upload>
 | 
			
		||||
            </el-dialog>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import {reactive, ref}  from "vue";
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    name: "NewRegulatory",
 | 
			
		||||
    components: {},
 | 
			
		||||
    setup()
 | 
			
		||||
    {
 | 
			
		||||
        const ui = reactive({
 | 
			
		||||
            showUI: true,
 | 
			
		||||
            showUploadDialog: false,
 | 
			
		||||
            urlFileUpload: "",
 | 
			
		||||
            uploadParameters: {
 | 
			
		||||
                "file-name": "1234",
 | 
			
		||||
            },
 | 
			
		||||
            showFileList: false,
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        const headerCellStyle = reactive(
 | 
			
		||||
            {
 | 
			
		||||
                textAlign: "center",
 | 
			
		||||
            }
 | 
			
		||||
        );
 | 
			
		||||
        const cellStyle = reactive({
 | 
			
		||||
            textAlign: "center",
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        const onUploadSuccess = ()=> {};
 | 
			
		||||
 | 
			
		||||
        const showUploadFileDialog = (): void =>
 | 
			
		||||
        {
 | 
			
		||||
            ui.showUploadDialog = true;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        return {
 | 
			
		||||
            ui,
 | 
			
		||||
            headerCellStyle,
 | 
			
		||||
            cellStyle,
 | 
			
		||||
            onUploadSuccess,
 | 
			
		||||
            showUploadFileDialog,
 | 
			
		||||
        };
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
@import "@/assets/css/public/_public.scss";
 | 
			
		||||
 | 
			
		||||
.wrapper {
 | 
			
		||||
    // max-width: 800px;
 | 
			
		||||
    min-width: 1024px;
 | 
			
		||||
    margin: 10px 10px 10px 10px;
 | 
			
		||||
 | 
			
		||||
    >*+* {
 | 
			
		||||
        margin-top: 10px;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.query-box-wrapper
 | 
			
		||||
{
 | 
			
		||||
    @include query-box-wrap;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
:deep(.el-input) .el-input__inner {
 | 
			
		||||
    text-align: center;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -0,0 +1,127 @@
 | 
			
		||||
<!--
 | 
			
		||||
author:        Kane Wang <wangkane@qq.com>
 | 
			
		||||
date:          2025-10-23 21:40:24
 | 
			
		||||
component:     RegulatoryManagement
 | 
			
		||||
Copyright © CPIC All rights reserved
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
    <div class="wrapper">
 | 
			
		||||
        <el-row :gutter="10">
 | 
			
		||||
            <el-col span="24">
 | 
			
		||||
                <el-button
 | 
			
		||||
                    type="warning"
 | 
			
		||||
                    icon="upload"
 | 
			
		||||
                >
 | 
			
		||||
                    上传
 | 
			
		||||
                </el-button>
 | 
			
		||||
                <el-button
 | 
			
		||||
                    type="primary"
 | 
			
		||||
                    icon="refresh"
 | 
			
		||||
                >
 | 
			
		||||
                    刷新
 | 
			
		||||
                </el-button>
 | 
			
		||||
            </el-col>
 | 
			
		||||
        </el-row>
 | 
			
		||||
        <el-table
 | 
			
		||||
            width="100%" stripe
 | 
			
		||||
            :header-cell-style="headerCellStyle"
 | 
			
		||||
            border
 | 
			
		||||
            :data="ui.regulatoryData"
 | 
			
		||||
        >
 | 
			
		||||
            <el-table-column label="部门" align="center" width="200px">
 | 
			
		||||
                <template #default="regulatory">
 | 
			
		||||
                    <span>{{ regulatory.row.department_name }}</span>
 | 
			
		||||
                </template>
 | 
			
		||||
            </el-table-column>
 | 
			
		||||
            <el-table-column width="150px" label="发布、修订年份" align="center">
 | 
			
		||||
                <template #default="regulatory">
 | 
			
		||||
                    <span>{{ regulatory.row.release_year }}</span>
 | 
			
		||||
                </template>
 | 
			
		||||
            </el-table-column>
 | 
			
		||||
            <el-table-column label="制度名称" align="center" :cell-style="cellStyle">
 | 
			
		||||
                <template #default="regulatory">
 | 
			
		||||
                    <span>{{ regulatory.row.regulatory_name }}</span>
 | 
			
		||||
                </template>
 | 
			
		||||
            </el-table-column>
 | 
			
		||||
            <el-table-column label="操作" align="center" width="200px">
 | 
			
		||||
                <el-button
 | 
			
		||||
                    type="primary"
 | 
			
		||||
                    icon="search"
 | 
			
		||||
                >
 | 
			
		||||
                    查看
 | 
			
		||||
                </el-button>
 | 
			
		||||
                <el-button type="warning" icon="document">
 | 
			
		||||
                    编辑
 | 
			
		||||
                </el-button>
 | 
			
		||||
            </el-table-column>
 | 
			
		||||
        </el-table>
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import { reactive } from "vue";
 | 
			
		||||
import { type RegulatoryData } from "@/types/regulatory/regulatory.ts";
 | 
			
		||||
 | 
			
		||||
interface UI
 | 
			
		||||
{
 | 
			
		||||
    showUI: boolean,
 | 
			
		||||
    showUploadDialog: boolean,
 | 
			
		||||
    tablePageSize: number,
 | 
			
		||||
    tableCurrentPageIndex: number,
 | 
			
		||||
    regulatoryData: RegulatoryData[],
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    name: "RegulatoryManagement",
 | 
			
		||||
    setup()
 | 
			
		||||
    {
 | 
			
		||||
        const headerCellStyle = reactive(
 | 
			
		||||
            {
 | 
			
		||||
                textAlign: "center",
 | 
			
		||||
            }
 | 
			
		||||
        );
 | 
			
		||||
        const cellStyle = reactive({
 | 
			
		||||
            textAlign: "center",
 | 
			
		||||
        });
 | 
			
		||||
        const ui:UI = reactive({
 | 
			
		||||
            showUI: true,
 | 
			
		||||
            showUploadDialog: false,
 | 
			
		||||
            tablePageSize: 10,
 | 
			
		||||
            tableCurrentPageIndex: 1,
 | 
			
		||||
            regulatoryData: [
 | 
			
		||||
                {
 | 
			
		||||
                    department_name: "信息技术部",
 | 
			
		||||
                    release_year: "2019",
 | 
			
		||||
                    regulatory_name: "关于印发修订后的《太平洋产险厦门分公司信息系统账号权限管理实施细则》的通知",
 | 
			
		||||
                    comment:"",
 | 
			
		||||
                    regulatory_files: [],
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    department_name: "信息技术部",
 | 
			
		||||
                    release_year: "2019",
 | 
			
		||||
                    regulatory_name: "关于印发修订后的《太平洋产险厦门分公司个人信息保护管理实施细则》的通知",
 | 
			
		||||
                    comment:"",
 | 
			
		||||
                    regulatory_files: [],
 | 
			
		||||
                },
 | 
			
		||||
            ],
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        return { ui, headerCellStyle, cellStyle, };
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
@import "@/assets/css/public/mixin.scss";
 | 
			
		||||
 | 
			
		||||
.wrapper {
 | 
			
		||||
    margin: 10px 10px 10px 10px;
 | 
			
		||||
 | 
			
		||||
    >*+* {
 | 
			
		||||
        margin-top: 10px;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.pagination_wrapper {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    justify-content: flex-end;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -0,0 +1,78 @@
 | 
			
		||||
<!--
 | 
			
		||||
author:        Kane Wang <wangkane@qq.com>
 | 
			
		||||
date:          2025-10-28 11:18:51
 | 
			
		||||
component:     UploadRegulatory
 | 
			
		||||
Copyright © CPIC All rights reserved
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
    <div class="wrapper">
 | 
			
		||||
        <!-- <VuePdfEmbed v-if="ui.isPDF" :source="ui.fileURL" text-layer annotation-layer /> -->
 | 
			
		||||
        <!-- <VueOfficePdf v-if="ui.isPDF" :src="ui.fileURL" @error="errorHandle" /> -->
 | 
			
		||||
        <VueOfficeDocx v-if="ui.isXlsx" :src="ui.fileURL" @error="errorHandle" />
 | 
			
		||||
        <VueOfficeExcel
 | 
			
		||||
            v-if="ui.isXlsx"
 | 
			
		||||
            :src="ui.fileURL"
 | 
			
		||||
            @error="errorHandle"
 | 
			
		||||
        />
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import {reactive, ref } from "vue";
 | 
			
		||||
import { ElMessage } from "element-plus";
 | 
			
		||||
// import VuePdfEmbed, { useVuePdfEmbed }  from "vue-pdf-embed";
 | 
			
		||||
import VueOfficePdf from "@vue-office/pdf";
 | 
			
		||||
import VueOfficeDocx from "@vue-office/docx";
 | 
			
		||||
import VueOfficeExcel from "@vue-office/excel";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import "vue-pdf-embed/dist/styles/annotationLayer.css";
 | 
			
		||||
import "vue-pdf-embed/dist/styles/textLayer.css";
 | 
			
		||||
import "@vue-office/excel/lib/index.css";
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    name:"UploadRegulatory",
 | 
			
		||||
    components: {
 | 
			
		||||
        // VueOfficePdf,
 | 
			
		||||
        VueOfficeDocx,
 | 
			
		||||
        VueOfficeExcel,
 | 
			
		||||
    },
 | 
			
		||||
    setup()
 | 
			
		||||
    {
 | 
			
		||||
        const  ui = reactive({
 | 
			
		||||
            showUI: true,
 | 
			
		||||
            isPDF: false,
 | 
			
		||||
            isDocx: false,
 | 
			
		||||
            isXlsx: true,
 | 
			
		||||
            // fileURL: "http://10.39.0.1:8080/regulatory/%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%E9%83%A8/%E5%85%B3%E4%BA%8E%E5%8D%B0%E5%8F%91%E3%80%8A%E5%A4%AA%E5%B9%B3%E6%B4%8B%E4%BA%A7%E9%99%A9%E5%8E%A6%E9%97%A8%E5%88%86%E5%85%AC%E5%8F%B8IT%E8%B5%84%E4%BA%A7%E7%AE%A1%E7%90%86%E5%8A%9E%E6%B3%95%E3%80%8B%EF%BC%882019%E5%B9%B4%E4%BF%AE%E8%AE%A2%EF%BC%89%E7%9A%84%E9%80%9A%E7%9F%A5/%E5%8E%A6%E5%A4%AA%E4%BF%9D%E4%BA%A7%E5%8F%91%E3%80%902019%E3%80%9146%E5%8F%B7%E5%85%B3%E4%BA%8E%E5%8D%B0%E5%8F%91%E3%80%8A%E5%A4%AA%E5%B9%B3%E6%B4%8B%E4%BA%A7%E9%99%A9%E5%8E%A6%E9%97%A8%E5%88%86%E5%85%AC%E5%8F%B8IT%E8%B5%84%E4%BA%A7%E7%AE%A1%E7%90%86%E5%8A%9E%E6%B3%95%E3%80%8B%EF%BC%882019%E5%B9%B4%E4%BF%AE%E8%AE%A2%EF%BC%89%E7%9A%84%E9%80%9A%E7%9F%A5.pdf",
 | 
			
		||||
            // fileURL: "http://10.39.0.1:8080/regulatory/%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%E9%83%A8/%E5%85%B3%E4%BA%8E%E5%8D%B0%E5%8F%91%E3%80%8A%E5%A4%AA%E5%B9%B3%E6%B4%8B%E4%BA%A7%E9%99%A9%E5%8E%A6%E9%97%A8%E5%88%86%E5%85%AC%E5%8F%B8%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E9%9C%80%E6%B1%82%E7%AE%A1%E7%90%86%E5%8A%9E%E6%B3%95%EF%BC%882020%E5%B9%B4%E4%BF%AE%E8%AE%A2%EF%BC%89%E3%80%8B%E7%9A%84%E9%80%9A%E7%9F%A5/%E9%99%84%E4%BB%B62%EF%BC%9A%E4%B8%9A%E5%8A%A1%E9%9C%80%E6%B1%82%E8%AF%B4%E6%98%8E%E4%B9%A6.docx",
 | 
			
		||||
            fileURL: "http://10.39.0.1:8080/regulatory/%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%E9%83%A8/%E5%85%B3%E4%BA%8E%E5%8D%B0%E5%8F%91%E3%80%8A%E5%A4%AA%E5%B9%B3%E6%B4%8B%E4%BA%A7%E9%99%A9%E5%8E%A6%E9%97%A8%E5%88%86%E5%85%AC%E5%8F%B8%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E9%9C%80%E6%B1%82%E7%AE%A1%E7%90%86%E5%8A%9E%E6%B3%95%EF%BC%882020%E5%B9%B4%E4%BF%AE%E8%AE%A2%EF%BC%89%E3%80%8B%E7%9A%84%E9%80%9A%E7%9F%A5/%E9%99%84%E4%BB%B64%EF%BC%9A%E5%88%86%E5%85%AC%E5%8F%B8%E8%87%AA%E5%BB%BA%E7%B3%BB%E7%BB%9F%E9%83%A8%E7%BD%B2%E6%83%85%E5%86%B5%E7%99%BB%E8%AE%B0%E8%A1%A8.xlsx",
 | 
			
		||||
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        const errorHandle = ()=>
 | 
			
		||||
        {
 | 
			
		||||
            ElMessage.error( "渲染文档出错!" );
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        return {
 | 
			
		||||
            ui,
 | 
			
		||||
            errorHandle, };
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
.wrapper {
 | 
			
		||||
    margin: 10px 10px 10px 10px;
 | 
			
		||||
 | 
			
		||||
    width: calc(100% - 20px);
 | 
			
		||||
    height: calc( 100vh - 70px);
 | 
			
		||||
 | 
			
		||||
    // .VueOfficeExcel {
 | 
			
		||||
    //     height: calc( 100vh - 70px);
 | 
			
		||||
    // }
 | 
			
		||||
 | 
			
		||||
    >*+* {
 | 
			
		||||
        margin-top: 10px;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -6,12 +6,12 @@ Copyright © CPIC All rights reserved
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
    <div class="wrapper">
 | 
			
		||||
        111
 | 
			
		||||
        总览
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
export default {
 | 
			
		||||
    name: "RegulatoryManagement",
 | 
			
		||||
    name: "OverViews",
 | 
			
		||||
    setup()
 | 
			
		||||
    {
 | 
			
		||||
        const ui = {};
 | 
			
		||||
@@ -21,7 +21,7 @@ export default {
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
@import "@/assets/css/index.scss";
 | 
			
		||||
@import "@/assets/css/public/mixin.scss";
 | 
			
		||||
 | 
			
		||||
.wrapper {
 | 
			
		||||
    @include no-select;
 | 
			
		||||
							
								
								
									
										68
									
								
								开发日志.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								开发日志.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
			
		||||
# 前端
 | 
			
		||||
 | 
			
		||||
## 问题
 | 
			
		||||
 | 
			
		||||
### vue3 引入@路径
 | 
			
		||||
 | 
			
		||||
#### 引入path模块问题
 | 
			
		||||
 | 
			
		||||
node.js 自带的path模块,是JavaScript代码,要引入ts文件,需要安装@type/node模块。
 | 
			
		||||
 | 
			
		||||
```shell
 | 
			
		||||
npm install @types/node --save-dev
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
之后就可以加载path。在 vite.config.ts 中加上
 | 
			
		||||
 | 
			
		||||
```typescript
 | 
			
		||||
import path from "path";
 | 
			
		||||
resolve: {
 | 
			
		||||
            //配置别名
 | 
			
		||||
            alias: [
 | 
			
		||||
                {
 | 
			
		||||
                    find: /^~/,
 | 
			
		||||
                    replacement: "",
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    find: "@",
 | 
			
		||||
                    replacement: path.resolve( __dirname, "src" ),
 | 
			
		||||
                },
 | 
			
		||||
            ],
 | 
			
		||||
        },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### tomcat 跨域下载文件
 | 
			
		||||
 | 
			
		||||
tomcat 默认是不支持跨域的,不做配置使用vue下载文件会有Access-Control-Allow-Origin问题。
 | 
			
		||||
 | 
			
		||||
解决方法: 编辑 web.xml 文件,找到
 | 
			
		||||
 | 
			
		||||
```xml
 | 
			
		||||
<!-- The mapping for the HTTP header security Filter -->
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
在下面添加
 | 
			
		||||
 | 
			
		||||
```xml
 | 
			
		||||
<filter>
 | 
			
		||||
  <filter-name>CorsFilter</filter-name>
 | 
			
		||||
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
 | 
			
		||||
  <init-param>
 | 
			
		||||
	<param-name>cors.allowed.origins</param-name>
 | 
			
		||||
	<param-value>*</param-value>
 | 
			
		||||
  </init-param>
 | 
			
		||||
</filter>
 | 
			
		||||
<filter-mapping>
 | 
			
		||||
  <filter-name>CorsFilter</filter-name>
 | 
			
		||||
  <url-pattern>/*</url-pattern>
 | 
			
		||||
</filter-mapping>
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
重启 tomcat 解决。
 | 
			
		||||
 | 
			
		||||
## 组件
 | 
			
		||||
 | 
			
		||||
### pdf预览组件
 | 
			
		||||
 | 
			
		||||
使用
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发《太平洋产险厦门分公司IT资产管理办法》(2019年修订)的通知/设备借用登记表.xlsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发《太平洋产险厦门分公司IT资产管理办法》(2019年修订)的通知/设备借用登记表.xlsx
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发《太平洋产险厦门分公司信息技术项目管理实施细则》的通知.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发《太平洋产险厦门分公司信息技术项目管理实施细则》的通知.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发《太平洋产险厦门分公司数据维护和提取管理办法》的通知.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发《太平洋产险厦门分公司数据维护和提取管理办法》的通知.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发《太平洋产险厦门分公司数据防泄漏管理细则》的通知/附件:数据防泄露基准策略.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发《太平洋产险厦门分公司数据防泄漏管理细则》的通知/附件:数据防泄露基准策略.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发《太平洋产险厦门分公司科技风险管理实施细则》的通知.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发《太平洋产险厦门分公司科技风险管理实施细则》的通知.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发《太平洋产险厦门分公司网络安全管理办法》的通知.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发《太平洋产险厦门分公司网络安全管理办法》的通知.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发《太平洋产险厦门分公司软件开发需求管理办法(2020年修订)》的通知/附件2:业务需求说明书.docx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发《太平洋产险厦门分公司软件开发需求管理办法(2020年修订)》的通知/附件2:业务需求说明书.docx
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发修订后的《太平洋产险厦门分公司个人信息保护管理实施细则》的通知.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发修订后的《太平洋产险厦门分公司个人信息保护管理实施细则》的通知.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发修订后的《太平洋产险厦门分公司信息系统账号权限管理实施细则》的通知.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								文档/测试用文档/关于印发修订后的《太平洋产险厦门分公司信息系统账号权限管理实施细则》的通知.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								文档/测试用文档/号关于印发《太平洋产险厦门分公司金融专网安全管理实施细则》的通知.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								文档/测试用文档/号关于印发《太平洋产险厦门分公司金融专网安全管理实施细则》的通知.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user