diff --git a/web-vue/packages/assets/icons/erp.svg b/web-vue/packages/assets/icons/erp.svg
new file mode 100644
index 00000000..37ed7601
--- /dev/null
+++ b/web-vue/packages/assets/icons/erp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/web-vue/packages/biz/api/biz/itemInfo.ts b/web-vue/packages/biz/api/biz/itemInfo.ts
new file mode 100644
index 00000000..ec38d572
--- /dev/null
+++ b/web-vue/packages/biz/api/biz/itemInfo.ts
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
+ * No deletion without permission, or be held responsible to law.
+ * @author gaoxq
+ */
+import { defHttp } from '@jeesite/core/utils/http/axios';
+import { useGlobSetting } from '@jeesite/core/hooks/setting';
+import { BasicModel, Page } from '@jeesite/core/api/model/baseModel';
+import { UploadApiResult } from '@jeesite/core/api/sys/upload';
+import { UploadFileParams } from '@jeesite/types/axios';
+import { AxiosProgressEvent } from 'axios';
+
+const { ctxPath, adminPath } = useGlobSetting();
+
+export interface BizItemInfo extends BasicModel {
+ createTime?: string; // 创建时间
+ itemName: string; // 项目名称
+ itemCode: string; // 项目编号
+ title?: string; // 备注描述
+ seq?: number; // 序号
+ ym: string; // 请求日期
+ cycle?: string; // 指标周期
+ reqParam?: string; // 请求参数
+ xAxis?: string; // x轴名称
+ index01?: string; // 指标01
+ index02?: string; // 指标02
+ index03?: string; // 指标03
+ index04?: string; // 指标04
+ index05?: string; // 指标05
+ index06?: string; // 指标06
+ index07?: string; // 指标07
+ index08?: string; // 指标08
+ index09?: string; // 指标09
+ index10?: string; // 指标10
+ index11?: string; // 指标11
+ index12?: string; // 指标12
+ index13?: string; // 指标13
+ index14?: string; // 指标14
+ index15?: string; // 指标15
+ updateTime?: string; // 更新时间
+ isDeleted?: string; // 删除标识(1-未删,0-已删)
+}
+
+export const bizItemInfoList = (params?: BizItemInfo | any) =>
+ defHttp.get({ url: adminPath + '/biz/itemInfo/list', params });
+
+export const bizItemInfoListAll = (params?: BizItemInfo | any) =>
+ defHttp.get({ url: adminPath + '/biz/itemInfo/listAll', params });
+
+export const bizItemInfoListData = (params?: BizItemInfo | any) =>
+ defHttp.post>({ url: adminPath + '/biz/itemInfo/listData', params });
+
+export const bizItemInfoForm = (params?: BizItemInfo | any) =>
+ defHttp.get({ url: adminPath + '/biz/itemInfo/form', params });
+
+export const bizItemInfoSave = (params?: any, data?: BizItemInfo | any) =>
+ defHttp.postJson({ url: adminPath + '/biz/itemInfo/save', params, data });
+
+export const bizItemInfoImportData = (
+ params: UploadFileParams,
+ onUploadProgress: (progressEvent: AxiosProgressEvent) => void,
+) =>
+ defHttp.uploadFile(
+ {
+ url: ctxPath + adminPath + '/biz/itemInfo/importData',
+ onUploadProgress,
+ },
+ params,
+ );
+
+export const bizItemInfoDelete = (params?: BizItemInfo | any) =>
+ defHttp.get({ url: adminPath + '/biz/itemInfo/delete', params });
diff --git a/web-vue/packages/erp/views/erp/green/components/ChartCategoryExp.vue b/web-vue/packages/erp/views/erp/green/components/ChartCategoryExp.vue
new file mode 100644
index 00000000..fcc64ad5
--- /dev/null
+++ b/web-vue/packages/erp/views/erp/green/components/ChartCategoryExp.vue
@@ -0,0 +1,286 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web-vue/packages/erp/views/erp/green/components/ChartCategoryInc.vue b/web-vue/packages/erp/views/erp/green/components/ChartCategoryInc.vue
new file mode 100644
index 00000000..f4c9b7a0
--- /dev/null
+++ b/web-vue/packages/erp/views/erp/green/components/ChartCategoryInc.vue
@@ -0,0 +1,286 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web-vue/packages/erp/views/erp/green/components/ChartMom.vue b/web-vue/packages/erp/views/erp/green/components/ChartMom.vue
new file mode 100644
index 00000000..3e44d31f
--- /dev/null
+++ b/web-vue/packages/erp/views/erp/green/components/ChartMom.vue
@@ -0,0 +1,459 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web-vue/packages/erp/views/erp/green/components/ChartQuarter.vue b/web-vue/packages/erp/views/erp/green/components/ChartQuarter.vue
new file mode 100644
index 00000000..671c6f92
--- /dev/null
+++ b/web-vue/packages/erp/views/erp/green/components/ChartQuarter.vue
@@ -0,0 +1,611 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web-vue/packages/erp/views/erp/green/components/ChartRank.vue b/web-vue/packages/erp/views/erp/green/components/ChartRank.vue
new file mode 100644
index 00000000..08d3be19
--- /dev/null
+++ b/web-vue/packages/erp/views/erp/green/components/ChartRank.vue
@@ -0,0 +1,380 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web-vue/packages/erp/views/erp/green/components/ChartYear.vue b/web-vue/packages/erp/views/erp/green/components/ChartYear.vue
new file mode 100644
index 00000000..1bb3a165
--- /dev/null
+++ b/web-vue/packages/erp/views/erp/green/components/ChartYear.vue
@@ -0,0 +1,587 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web-vue/web/public/resource/img/icons/erp-expense.svg b/web-vue/web/public/resource/img/icons/erp-expense.svg
new file mode 100644
index 00000000..9197be32
--- /dev/null
+++ b/web-vue/web/public/resource/img/icons/erp-expense.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/web-vue/web/public/resource/img/icons/erp-fencheng.svg b/web-vue/web/public/resource/img/icons/erp-fencheng.svg
new file mode 100644
index 00000000..47faa5fa
--- /dev/null
+++ b/web-vue/web/public/resource/img/icons/erp-fencheng.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/web-vue/web/public/resource/img/icons/erp-home.png b/web-vue/web/public/resource/img/icons/erp-home.png
new file mode 100644
index 00000000..6db8bc06
Binary files /dev/null and b/web-vue/web/public/resource/img/icons/erp-home.png differ
diff --git a/web-vue/web/public/resource/img/icons/erp-income.svg b/web-vue/web/public/resource/img/icons/erp-income.svg
new file mode 100644
index 00000000..6a9b3f83
--- /dev/null
+++ b/web-vue/web/public/resource/img/icons/erp-income.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/web-vue/web/public/resource/img/icons/erp-jiaoyizhichu.svg b/web-vue/web/public/resource/img/icons/erp-jiaoyizhichu.svg
new file mode 100644
index 00000000..9318e493
--- /dev/null
+++ b/web-vue/web/public/resource/img/icons/erp-jiaoyizhichu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/web-vue/web/public/resource/img/icons/erp-jinglirun.svg b/web-vue/web/public/resource/img/icons/erp-jinglirun.svg
new file mode 100644
index 00000000..7d3e878e
--- /dev/null
+++ b/web-vue/web/public/resource/img/icons/erp-jinglirun.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/web-vue/web/public/resource/img/icons/erp-lirunfenxi.svg b/web-vue/web/public/resource/img/icons/erp-lirunfenxi.svg
new file mode 100644
index 00000000..8836ed04
--- /dev/null
+++ b/web-vue/web/public/resource/img/icons/erp-lirunfenxi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/web-vue/web/public/resource/img/icons/erp-shouru.svg b/web-vue/web/public/resource/img/icons/erp-shouru.svg
new file mode 100644
index 00000000..1ea57b70
--- /dev/null
+++ b/web-vue/web/public/resource/img/icons/erp-shouru.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/web-vue/web/public/resource/img/icons/erp-zhichu.svg b/web-vue/web/public/resource/img/icons/erp-zhichu.svg
new file mode 100644
index 00000000..24d71979
--- /dev/null
+++ b/web-vue/web/public/resource/img/icons/erp-zhichu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/web-vue/web/public/resource/img/icons/erp-zongshouru.svg b/web-vue/web/public/resource/img/icons/erp-zongshouru.svg
new file mode 100644
index 00000000..816a8b70
--- /dev/null
+++ b/web-vue/web/public/resource/img/icons/erp-zongshouru.svg
@@ -0,0 +1 @@
+
\ No newline at end of file