From c3999819c99c5774616a664e049cb2552e543254 Mon Sep 17 00:00:00 2001 From: kkfluous Date: Mon, 16 Mar 2026 01:27:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(energy):=20=E5=AE=9E=E7=8E=B0=E5=8A=A0?= =?UTF-8?q?=E6=B0=A2=E8=AE=B0=E5=BD=95=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=EF=BC=88=E5=90=AB=E4=B8=89=E6=AD=A5=E5=AF=BC=E5=85=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- .../src/views/energy/hydrogen-record/data.ts | 134 ++++++++ .../views/energy/hydrogen-record/index.vue | 184 +++++++++++ .../hydrogen-record/modules/import-modal.vue | 301 ++++++++++++++++++ 3 files changed, 619 insertions(+) create mode 100644 apps/web-antd/src/views/energy/hydrogen-record/data.ts create mode 100644 apps/web-antd/src/views/energy/hydrogen-record/index.vue create mode 100644 apps/web-antd/src/views/energy/hydrogen-record/modules/import-modal.vue diff --git a/apps/web-antd/src/views/energy/hydrogen-record/data.ts b/apps/web-antd/src/views/energy/hydrogen-record/data.ts new file mode 100644 index 0000000..5589495 --- /dev/null +++ b/apps/web-antd/src/views/energy/hydrogen-record/data.ts @@ -0,0 +1,134 @@ +import type { VbenFormSchema } from '#/adapter/form'; +import type { VxeTableGridOptions } from '#/adapter/vxe-table'; +import type { EnergyHydrogenRecordApi } from '#/api/energy/hydrogen-record'; + +import { useActionColumn } from '#/utils/table'; +import { getRangePickerDefaultProps } from '#/utils'; + +export const SOURCE_TYPE_OPTIONS = [ + { label: 'Excel导入', value: 1, color: 'blue' }, + { label: 'API同步', value: 2, color: 'green' }, + { label: '手动录入', value: 3, color: 'default' }, +]; + +export const MATCH_STATUS_OPTIONS = [ + { label: '待匹配', value: 0, color: 'orange' }, + { label: '已匹配', value: 1, color: 'green' }, + { label: '匹配失败', value: 2, color: 'red' }, +]; + +/** 搜索表单 */ +export function useGridFormSchema(): VbenFormSchema[] { + return [ + { + fieldName: 'stationId', + label: '加氢站', + component: 'Input', + componentProps: { + placeholder: '请输入加氢站', + allowClear: true, + }, + }, + { + fieldName: 'plateNumber', + label: '车牌号', + component: 'Input', + componentProps: { + placeholder: '请输入车牌号', + allowClear: true, + }, + }, + { + fieldName: 'hydrogenDate', + label: '加氢日期', + component: 'RangePicker', + componentProps: { + ...getRangePickerDefaultProps(), + class: 'w-full', + }, + }, + { + fieldName: 'matchStatus', + label: '匹配状态', + component: 'Select', + componentProps: { + options: MATCH_STATUS_OPTIONS, + placeholder: '请选择匹配状态', + allowClear: true, + }, + }, + { + fieldName: 'sourceType', + label: '数据来源', + component: 'Select', + componentProps: { + options: SOURCE_TYPE_OPTIONS, + placeholder: '请选择数据来源', + allowClear: true, + }, + }, + ]; +} + +/** 表格列配置 */ +export function useGridColumns(): VxeTableGridOptions['columns'] { + return [ + { + field: 'stationName', + title: '站点名称', + minWidth: 150, + fixed: 'left', + }, + { + field: 'plateNumber', + title: '车牌号', + minWidth: 120, + }, + { + field: 'hydrogenDate', + title: '加氢日期', + minWidth: 120, + formatter: 'formatDate', + align: 'center', + }, + { + field: 'hydrogenQuantity', + title: '加氢量(KG)', + minWidth: 100, + align: 'right', + }, + { + field: 'unitPrice', + title: '单价', + minWidth: 80, + align: 'right', + }, + { + field: 'amount', + title: '金额', + minWidth: 100, + align: 'right', + }, + { + field: 'mileage', + title: '里程数', + minWidth: 80, + align: 'right', + }, + { + field: 'sourceType', + title: '数据来源', + minWidth: 100, + align: 'center', + slots: { default: 'sourceType' }, + }, + { + field: 'matchStatus', + title: '匹配状态', + minWidth: 100, + align: 'center', + slots: { default: 'matchStatus' }, + }, + useActionColumn(2), + ]; +} diff --git a/apps/web-antd/src/views/energy/hydrogen-record/index.vue b/apps/web-antd/src/views/energy/hydrogen-record/index.vue new file mode 100644 index 0000000..953636f --- /dev/null +++ b/apps/web-antd/src/views/energy/hydrogen-record/index.vue @@ -0,0 +1,184 @@ + + + diff --git a/apps/web-antd/src/views/energy/hydrogen-record/modules/import-modal.vue b/apps/web-antd/src/views/energy/hydrogen-record/modules/import-modal.vue new file mode 100644 index 0000000..897c779 --- /dev/null +++ b/apps/web-antd/src/views/energy/hydrogen-record/modules/import-modal.vue @@ -0,0 +1,301 @@ + + +