Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>financeNew to Visual Studio Code? Get it now.
finance

finance

智量通科技

| (0) | Free
财经数据管理插件
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

VSCode Vue3 Extension - 财经数据管理系统

基于 Vite + Vue3 + TypeScript 构建的 VSCode 扩展,集成了完整的后台管理系统,提供财经数据管理功能。

功能特性

系统管理

  • 完整的后台管理系统:集成Vue3管理系统,包含用户管理、角色权限、菜单管理等
  • 参数配置:系统参数配置管理
  • 权限控制:基于RBAC的权限管理系统,支持菜单级和数据级权限控制
  • 响应式设计:支持深色/浅色主题切换,自适应不同屏幕尺寸

业务管理模块

第一阶段:数据录入与审核

  • 任务管理 (taskManage):数据录入任务的创建、分配、跟踪
  • 数据作业 (workManage):
    • 任务列表:查看和处理待处理任务
    • 手工录入:单条数据手动录入
    • 文件导入:Excel/CSV批量导入
    • 脚本导入:Python/Shell脚本自动化导入
  • 数据复核 (reviewManage):
    • 复核任务管理:待复核、复核中、已复核任务
    • 复核详情:查看作业详情、复核意见、批量复核
    • 复核操作:通过、驳回、转办

第二阶段:质量控制

  • 数据预审 (preReview):
    • 预审核规则配置:规则的新建、编辑、删除、导出
    • 规则管理:规则名称、表编码、关联字段、数据类型、错误类型、状态管理
    • 规则详情:查看规则完整信息和 SQL
    • 规则查询:支持按规则 ID、名称、表编码、数据类型、错误类型、状态筛选
  • 数据质检 (checkManage):
    • 质检任务管理:任务创建、执行、暂停、恢复
    • 质检规则配置:支持4类规则(完整性、准确性、一致性、时效性)
    • 质检报告:问题数据清单、错误分布、改进建议
    • 进度跟踪:实时显示质检任务执行进度
    • 问题整改:问题数据认领、整改、复查

第三阶段:数据分析与通知

  • 数据统计 (statisticManage):
    • 多角色统计:作业员、复核员、质检员独立统计
    • 工作量统计:任务数量、数据量、完成率
    • 质量分析:数据合格率、错误率、问题分布
    • 效率分析:平均处理时长、任务完成速度
    • 趋势分析:工作量趋势、质量趋势、效率趋势(折线图)
    • 排行榜:TOP 10作业员/复核员/质检员(柱状图)
    • 图表展示:基于ECharts 5.5的可视化图表
  • 通知管理 (notifyManage):
    • 通知类型:系统通知、任务通知、告警通知、数据通知
    • 发送方式:全部用户、指定部门、指定用户、指定角色
    • 定时发送:支持定时任务自动发送通知
    • 通知模板:内置4种类型通知模板
    • 已读/未读:通知状态管理和批量操作
    • 发送记录:通知发送历史和回执

第四阶段:辅助功能

  • 数据库管理 (dbManage):
    • 数据库管理:数据库的增删改查
    • 业务库管理:业务库的增删改查
    • 表管理:数据表的增删改查
      • 表名自动生成:主数据库_业务库_意义名1_意义名2_意义名3
      • 两步式创建:基本信息 + 数据与配置
      • 字段映射:完整显示后端实体所有字段
      • 主键保护:新增时隐藏主键字段,编辑时必填
    • 字段管理:字段的增删改查
      • 字段列表显示:表、表中文名、字段ID、字段名、字段简称、字段顺序、字段类型、长度
      • 属性配置:是否主键、是否业务键、是否枚举、是否导出
      • 枚举管理:枚举ID
      • 其他信息:字段描述、修改人、修改时间
    • 树形结构展示:数据库-业务库-表三级树形展示
    • 统计卡片:显示数据库、业务库、表、字段的总数
    • 组件化设计:
      • databaseFormDialog.vue - 数据库表单对话框
      • businessFormDialog.vue - 业务库表单对话框
      • fieldFormDialog.vue - 字段表单对话框(支持新增和编辑)
      • tableFormDialog.vue - 表单对话框(两步式创建表)
  • 表结构管理 (tableManage):
    • 表CRUD:创建、编辑、删除、查看数据库表
    • 字段管理:字段列表、添加、编辑、删除字段
    • ER图可视化:SVG绘制实体关系图
      • 支持表节点拖拽定位
      • 关系线显示(1:1、1:N、N:N)
      • 缩放控制(放大、缩小、重置)
      • 关系类型图例
    • 结构同步:从数据库同步表结构
    • 导入导出:表结构导入导出功能
    • 表信息:表名、注释、引擎、字符集、字段数、记录数

VSCode集成

  • VSCode集成:在VSCode中以WebviewPanel形式展示管理界面
  • 开发模式:支持热更新,开发体验流畅
  • 独立运行:可独立部署为Web应用

项目结构

vscode-vue3-extension/
├── src/
│   ├── extension/                 # VSCode扩展源代码
│   │   ├── extension.ts           # 扩展入口文件
│   │   └── utils/                 # 扩展工具函数
│   │       ├── webview.ts         # Webview配置工具
│   │       └── nonce.ts           # Nonce生成工具
│   │
│   └── webview/                   # Vue3 Webview应用(财经数据管理系统)
│       ├── index.html             # HTML入口
│       ├── main.js                # Vue应用入口
│       ├── App.vue                # 根组件
│       ├── settings.js            # 全局配置
│       │
│       ├── api/                   # API接口模块
│       │   ├── login.js           # 登录接口
│       │   ├── menu.js            # 菜单接口
│       │   ├── system/            # 系统管理接口
│       │   │   ├── config.js      # 参数配置
│       │   │   ├── dept.js        # 部门管理
│       │   │   ├── dict/          # 字典管理
│       │   │   ├── menu.js        # 菜单管理
│       │   │   ├── notice.js      # 通知公告
│       │   │   ├── post.js        # 岗位管理
│       │   │   ├── role.js        # 角色管理
│       │   │   └── user.js        # 用户管理
│       │   ├── tool/              # 系统工具接口
│       │   │   └── gen.js         # 代码生成
│       │   ├── task.js            # 任务管理接口
│       │   ├── workTable.js       # 数据作业接口
│       │   ├── review.js          # 数据复核接口
│       │   ├── preReview.js       # 数据预审(预审核规则)接口
│       │   ├── check.js           # 数据质检接口
│       │   ├── statistic.js       # 数据统计接口
│       │   ├── notify.js          # 通知管理接口
│       │   ├── table.js           # 表结构管理接口
│       │   ├── common.js          # 通用接口
│       │   ├── dataQuery.js       # 数据查询接口
│       │   └── script.js          # 脚本执行接口
│       │
│       ├── assets/                # 静态资源
│       │   ├── icons/svg/         # SVG图标
│       │   ├── images/            # 图片资源
│       │   └── styles/            # 全局样式
│       │
│       ├── components/            # 全局组件
│       │   ├── Breadcrumb/        # 面包屑导航
│       │   ├── Crontab/           # Cron表达式编辑器
│       │   ├── DictTag/           # 字典标签
│       │   ├── Editor/            # 富文本编辑器
│       │   ├── FileUpload/        # 文件上传
│       │   ├── ImageUpload/       # 图片上传
│       │   ├── ImagePreview/      # 图片预览
│       │   ├── Pagination/        # 分页组件
│       │   ├── RightToolbar/      # 表格工具栏
│       │   ├── SvgIcon/           # SVG图标
│       │   └── ...
│       │
│       ├── directive/             # 自定义指令
│       │   ├── common/            # 通用指令
│       │   │   └── copyText.js    # 复制文本
│       │   ├── permission/        # 权限指令
│       │   │   ├── hasPermi.js    # 权限控制
│       │   │   └── hasRole.js     # 角色控制
│       │   └── index.js           # 指令入口
│       │
│       ├── layout/                # 布局组件
│       │   ├── components/        # 布局子组件
│       │   │   ├── AppMain.vue    # 主内容区
│       │   │   ├── Navbar.vue     # 顶部导航
│       │   │   ├── Sidebar/       # 侧边栏
│       │   │   ├── TagsView/      # 标签页
│       │   │   └── Settings/      # 设置面板
│       │   └── index.vue          # 布局入口
│       │
│       ├── plugins/               # 插件模块
│       │   ├── auth.js            # 权限插件
│       │   ├── cache.js           # 缓存插件
│       │   ├── download.js        # 下载插件
│       │   ├── modal.js           # 模态框插件
│       │   ├── tab.js             # 标签页插件
│       │   └── index.js           # 插件入口
│       │
│       ├── router/                # 路由配置
│       │   └── index.js           # 路由入口(定义静态路由和动态路由)
│       │
│       ├── store/                 # Vuex状态管理
│       │   ├── modules/           # 状态模块
│       │   │   ├── app.js         # 应用状态
│       │   │   ├── dict.js        # 字典状态
│       │   │   ├── permission.js  # 权限状态
│       │   │   ├── settings.js    # 设置状态
│       │   │   ├── tagsView.js    # 标签页状态
│       │   │   └── user.js        # 用户状态
│       │   ├── getter.js          # Getter
│       │   └── index.js           # Store入口
│       │
│       ├── utils/                 # 工具函数
│       │   ├── request.js         # Axios封装(请求/响应拦截器)
│       │   ├── auth.js            # 认证工具(Token管理)
│       │   ├── dict.js            # 字典工具
│       │   ├── permission.js      # 权限工具
│       │   ├── validate.js        # 验证工具
│       │   ├── jsencrypt.js       # 加密工具
│       │   ├── theme.js           # 主题工具
│       │   └── generator/         # 代码生成工具
│       │
│       ├── views/                 # 页面视图
│       │   ├── index.vue          # 首页Dashboard
│       │   ├── login.vue          # 登录页
│       │   ├── register.vue       # 注册页
│       │   ├── error/             # 错误页面
│       │   ├── system/            # 系统管理
│       │   │   ├── config/        # 参数配置
│       │   │   ├── dept/          # 部门管理
│       │   │   ├── dict/          # 字典管理
│       │   │   ├── menu/          # 菜单管理
│       │   │   ├── notice/        # 通知公告
│       │   │   ├── post/          # 岗位管理
│       │   │   ├── role/          # 角色管理
│       │   │   └── user/          # 用户管理
│       │   ├── taskManage/        # 任务管理模块
│       │   │   ├── components/    # 任务管理组件
│       │   │   │   └── taskForm.vue    # 任务表单
│       │   │   └── index.vue      # 任务管理页面
│       │   ├── workManage/        # 数据作业模块
│       │   │   ├── components/    # 数据作业组件
│       │   │   │   ├── taskRequirement.vue  # 任务需求展示
│       │   │   │   └── workTableForm.vue    # 作业表单
│       │   │   ├── list.vue      # 任务列表
│       │   │   ├── human.vue      # 手工录入
│       │   │   ├── file.vue      # 文件导入
│       │   │   └── script.vue      # 脚本导入
│       │   ├── reviewManage/      # 数据复核模块
│       │   │   ├── components/    # 复核组件
│       │   │   │   ├── taskDetail.vue      # 任务详情
│       │   │   │   ├── workDetail.vue      # 作业详情
│       │   │   │   ├── reviewAction.vue    # 复核操作
│       │   │   │   └── reviewDetail.vue    # 复核详情
│       │   │   └── index.vue      # 复核页面
│       │   ├── preReview/         # 数据预审(预审核规则)模块
│       │   │   ├── components/    # 预审核组件
│       │   │   │   ├── ruleForm.vue        # 规则表单(4个标签页)
│       │   │   │   └── preAuditDetail.vue  # 规则详情
│       │   │   └── index.vue      # 预审核规则页面
│       │   ├── checkManage/       # 数据质检模块
│       │   │   ├── components/    # 质检组件
│       │   │   │   ├── checkTaskDetail.vue  # 质检任务详情
│       │   │   │   └── ruleForm.vue         # 质检规则表单
│       │   │   ├── rules.vue      # 质检规则
│       │   │   └── index.vue      # 质检页面
│       │   ├── statisticManage/   # 数据统计模块
│       │   │   ├── components/    # 统计组件
│       │   │   │   ├── roleSelector.vue     # 角色选择器
│       │   │   │   ├── statisticChart.vue   # 统计图表
│       │   │   │   └── rankingList.vue      # 排行榜
│       │   │   └── index.vue      # 统计页面
│       │   ├── notifyManage/      # 通知管理模块
│       │   │   ├── components/    # 通知组件
│       │   │   │   ├── notifyForm.vue       # 通知表单
│       │   │   │   └── notifyDetail.vue     # 通知详情
│       │   │   └── index.vue      # 通知页面
│       │   └── tableManage/       # 表结构管理模块
│       │       ├── components/    # 表结构组件
│       │       │   ├── tableForm.vue        # 表结构表单
│       │       │   ├── fieldDetail.vue      # 字段详情
│       │       │   └── erDiagram.vue        # ER图可视化
│       │       └── index.vue      # 表结构页面
│       │
│       ├── permission.js          # 路由权限控制
│       └── directive.js           # 指令注册
│
├── scripts/                      # 构建脚本
│   ├── build.mts                 # 扩展构建脚本(esbuild)
│   └── dev.mjs                   # 开发模式脚本
│
├── out/                          # 构建输出目录
│   ├── extension/                # 扩展编译输出
│   └── webview/                  # Webview编译输出
│
├── .vscode/                      # VSCode配置
├── vite.config.ts                # Vite配置
├── tsconfig.json                 # TypeScript配置
└── package.json                  # 项目清单

核心逻辑说明

1. VSCode扩展架构

1.1 扩展激活流程 (extension.ts)

启动VSCode
    ↓
激活扩展 activate()
    ↓
创建TreeView(活动栏图标)
    ↓
监听TreeView可见性
    ↓
创建DashboardPanel Webview

关键代码位置:

  • 激活入口:src/extension/extension.ts:122
  • TreeView创建:src/extension/extension.ts:126
  • 自动打开Dashboard:src/extension/extension.ts:132

1.2 WebviewPanel管理 (extension.ts:15-120)

DashboardPanel类负责管理主面板的生命周期:

  • 单例模式:确保只打开一个面板实例
  • HTML处理:读取构建后的HTML并转换资源路径为webview URI
  • 消息通信:监听webview发来的消息并处理
// HTML资源路径转换逻辑
private _getHtmlForWebview(webview: vscode.Webview) {
  // 读取构建后的index.html
  // 移除crossorigin属性
  // 转换相对路径为webview.asWebviewUri()
}

消息类型:

  • openQuery:打开查询分析
  • openReport:打开数据报告
  • openSettings:打开设置

2. Vue3应用架构(财经数据管理系统)

2.1 应用启动流程 (main.js)

创建Vue应用实例
    ↓
注册全局组件(Pagination, FileUpload等)
    ↓
挂载全局方法(useDict, download等)
    ↓
注册指令(权限、复制等)
    ↓
使用插件(ElementPlus, Pinia等)
    ↓
注册路由
    ↓
权限控制初始化
    ↓
挂载应用

2.2 路由系统 (router/index.js)

静态路由 (constantRoutes):

  • 公共页面:登录、注册、404、401
  • 默认布局:首页Dashboard、个人中心

动态路由 (dynamicRoutes):

  • 基于用户权限动态加载
  • 包含系统管理、监控、工具等模块

2.3 权限控制 (permission.js)

路由守卫流程:

路由跳转
    ↓
检查Token
    ↓
有Token ─→ 已获取用户信息 ─→ 放行
    │            │
    │            └→ 未获取 ─→ 获取用户信息
    │                         ↓
    │                    生成动态路由
    │                         ↓
    │                    添加到路由器
    │                         ↓
    │                    放行
    │
    └→ 无Token ─→ 白名单 ─→ 放行
                      │
                      └→ 非白名单 ─→ 重定向到登录

关键配置:

  • 白名单:/login, /register
  • 权限判断:基于用户角色和权限标识
  • 动态路由生成:store/modules/permission.js

2.4 状态管理 (Vuex Store)

Store模块结构:

模块 文件 功能
app.js store/modules/app.js 侧边栏状态、设备类型、加载状态
user.js store/modules/user.js 用户信息、角色、权限、登录/登出
permission.js store/modules/permission.js 路由权限、侧边栏路由
settings.js store/modules/settings.js 主题、布局设置
tagsView.js store/modules/tagsView.js 标签页缓存
dict.js store/modules/dict.js 字典数据缓存

关键操作:

// 用户登录
useUserStore().login(userInfo)
  .then(() => {
    // 获取用户信息和权限
    return useUserStore().getInfo()
  })
  .then(() => {
    // 生成动态路由
    return usePermissionStore().generateRoutes()
  })

2.5 HTTP请求封装 (utils/request.js)

请求拦截器:

  • 自动添加Token到请求头
  • 防重复提交控制(基于请求URL、数据、时间间隔)
  • GET请求参数序列化

响应拦截器:

  • 统一处理响应状态码
  • 401自动重新登录提示
  • 500服务器错误提示
  • 601警告提示
  • Blob/Arraybuffer类型直接返回

错误码映射: utils/errorCode.js

2.6 权限指令系统 (directive/permission)

v-hasPermi指令:按钮级权限控制

<el-button v-hasPermi="['system:user:add']">新增</el-button>

v-hasRole指令:角色级权限控制

<el-button v-hasRole="['admin']">管理员操作</el-button>

3. 布局系统

3.1 布局组件 (layout/index.vue)

Layout
├── Sidebar (侧边栏)
│   ├── Logo
│   └── SidebarItem (递归渲染菜单)
├── Navbar (顶部导航)
│   ├── 用户信息
│   ├── 全屏/设置
│   └── 退出登录
├── TagsView (标签页)
│   ├── 标签列表
│   └── 操作按钮(关闭/刷新)
├── AppMain (主内容区)
│   └── <router-view> (keep-alive缓存)
└── Settings (设置面板)

3.2 侧边栏菜单 (layout/components/Sidebar)

菜单渲染逻辑:

  • 基于权限路由动态生成
  • 支持多级嵌套
  • 图标、标题、徽章显示
  • 活动路由高亮

主题配置:

  • theme-dark:深色主题
  • theme-light:浅色主题

4. 构建系统

4.1 Vite配置 (vite.config.ts)

Webview构建配置:

{
  root: 'src/webview',
  outDir: 'out/webview',
  base: './',  // 使用相对路径
  build: {
    rollupOptions: {
      output: {
        format: 'iife',
        inlineDynamicImports: true  // 单文件打包
      }
    }
  }
}

自定义插件:

  1. removeModuleType:移除HTML中的type="module"和crossorigin属性
  2. SVG图标处理:vite-plugin-svg-icons
  3. 组件自动导入:unplugin-vue-components
  4. Gzip压缩:vite-plugin-compression

4.2 扩展构建 (scripts/build.mts)

esbuild配置:

{
  entryPoints: ['src/extension/extension.ts'],
  bundle: true,
  external: ['vscode'],  // 不打包vscode模块
  format: 'cjs',
  platform: 'node',
  target: 'ES2022'
}

4.3 开发模式 (scripts/dev.mjs)

并行运行:

  • Vite开发服务器 (端口8739)
  • esbuild监听模式

开发指南

安装依赖

# 使用pnpm安装
pnpm install

开发模式

# 同时监听扩展和webview的改动
pnpm run dev

构建

# 构建webview
pnpm run build:web

# 构建扩展
pnpm run build:ext

# 完整构建
pnpm run build

打包

# 生成.vsix文件
pnpm run package

调试

  1. 在VSCode中打开项目
  2. 按 F5 启动扩展开发主机
  3. 点击活动栏的"财经数据管理"图标自动打开面板

配置说明

环境变量 (src/webview/.env.development)

# 应用标题
VITE_APP_TITLE=财经数据管理系统

# API基础路径
VITE_APP_BASE_API=/dev-api

# 端口配置
VITE_PORT=8739

VSCode配置 (package.json)

活动栏配置:

{
  "contributes": {
    "viewsContainers": {
      "activitybar": [{
        "id": "vue3-extension-container",
        "title": "财经数据管理",
        "icon": "resources/database.svg"
      }]
    }
  }
}

命令注册:

{
  "commands": [{
    "command": "openEditorView",
    "title": "打开面板"
  }]
}

API接口规范

请求格式

// GET请求
service.get('/api/user/list', { params: { pageNum: 1, pageSize: 10 } })

// POST请求
service.post('/api/user/add', { userName: 'admin', password: '123456' })

响应格式

{
  "code": 200,
  "msg": "操作成功",
  "data": {...}
}

错误码

错误码 说明
200 成功
401 未授权/Token过期
500 服务器错误
601 警告

常见问题

Q1: Webview资源无法加载

问题:扩展加载后webview显示空白或资源404

解决方案:

  1. 确认已执行 pnpm run build:web 构建webview
  2. 检查 out/webview 目录是否存在
  3. 查看 extension.ts:89 的路径转换逻辑

Q2: 开发模式热更新不生效

问题:修改代码后webview没有自动刷新

解决方案:

  1. 确认Vite HMR端口8739未被占用
  2. 检查 vite.config.ts:82 的HMR配置
  3. 使用 pnpm run dev 启动开发模式

Q3: 登录后页面显示404

问题:登录成功后跳转到404页面

解决方案:

  1. 检查动态路由是否正确生成 (permission.js:36)
  2. 确认后端返回的菜单数据格式正确
  3. 检查路由的 component 路径是否正确

Q4: 权限控制不生效

问题:没有权限的按钮仍然显示

解决方案:

  1. 确认用户权限已正确获取 (store/modules/user.js:48)
  2. 检查权限标识格式是否正确
  3. 确认指令已正确注册 (directive/index.js)

技术栈

VSCode扩展

  • VSCode API:扩展开发API
  • TypeScript:类型安全
  • esbuild:快速打包

Webview应用

  • Vue 3:渐进式框架
  • Vite:下一代前端构建工具
  • Element Plus:UI组件库
  • Pinia:状态管理
  • Vue Router:路由管理
  • Axios:HTTP客户端
  • ECharts 5.5:数据可视化图表库

开发工具

  • ESLint:代码检查
  • TypeScript:类型检查
  • Sass:CSS预处理器

参考资源

  • VSCode扩展API文档
  • Vue3文档
  • Vite文档
  • Element Plus文档

许可证

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft