diff --git a/web-admin/src/views/pl/etc-vehicle-recharge-apply/columnFilterDefs.ts b/web-admin/src/views/pl/etc-vehicle-recharge-apply/columnFilterDefs.ts new file mode 100644 index 000000000..cb8dfd883 --- /dev/null +++ b/web-admin/src/views/pl/etc-vehicle-recharge-apply/columnFilterDefs.ts @@ -0,0 +1,134 @@ +import type { ColumnFilterDef } from '@/composables/useClientColumnFilters' + +const RECHARGE_TYPE_OPTIONS = [{ value: 'etc', label: 'ETC' }] + +const RECHARGE_STATUS_OPTIONS = [ + { value: 'draft', label: '草稿' }, + { value: 'in_approval', label: '审批中' }, + { value: 'rejected', label: '已驳回' }, + { value: 'disbursed', label: '已发放' }, + { value: 'cancelled', label: '已作废' } +] + +/** ETC 申请列表列头漏斗(服务端)。 */ +export const plVehicleRechargeApplyColumnFilterDefs: ColumnFilterDef[] = [ + { prop: 'applyNo', label: '申请单号', type: 'text', queryKey: 'applyNo' }, + { prop: 'licensePlate', label: '车牌号', type: 'text', queryKey: 'licensePlate' }, + { + prop: 'rechargeType', + label: '充值类型', + type: 'enum', + queryKey: 'rechargeType', + enumOptions: RECHARGE_TYPE_OPTIONS + }, + { + prop: 'applyDate', + label: '申请日期', + type: 'datetime', + queryKeyFrom: 'applyDateFrom', + queryKeyTo: 'applyDateTo' + }, + { prop: 'odometerKm', label: '期初公里数', type: 'number', queryKeyPrefix: 'odometerKm' }, + { prop: 'applicantName', label: '申请人', type: 'text', queryKey: 'applicantName' }, + { prop: 'remark', label: '备注', type: 'text', queryKey: 'remark' }, + { + prop: 'status', + label: '状态', + type: 'enum', + queryKey: 'status', + enumOptions: RECHARGE_STATUS_OPTIONS + }, + { + prop: 'createTime', + label: '创建时间', + type: 'datetime', + queryKeyFrom: 'createTimeFrom', + queryKeyTo: 'createTimeTo' + } +] + +/** ETC 审批列表列头漏斗(服务端;在申请 defs 基础上增加当前节点)。 */ +export const plVehicleRechargeApprovalColumnFilterDefs: ColumnFilterDef[] = [ + ...plVehicleRechargeApplyColumnFilterDefs.filter((d) => d.prop !== 'createTime'), + { prop: 'currentNodeName', label: '当前节点', type: 'text', queryKey: 'currentNodeName' }, + { + prop: 'createTime', + label: '创建时间', + type: 'datetime', + queryKeyFrom: 'createTimeFrom', + queryKeyTo: 'createTimeTo' + } +] + +/** ETC 发放看板列头漏斗(服务端)。 */ +export const plVehicleRechargeDisburseColumnFilterDefs: ColumnFilterDef[] = [ + { prop: 'applyNo', label: '申请单号', type: 'text', queryKey: 'applyNo' }, + { + prop: 'applyDate', + label: '申请日期', + type: 'datetime', + queryKeyFrom: 'applyDateFrom', + queryKeyTo: 'applyDateTo' + }, + { prop: 'applicantName', label: '申请人', type: 'text', queryKey: 'applicantName' }, + { prop: 'odometerKm', label: '期初公里数', type: 'number', queryKeyPrefix: 'odometerKm' }, + { + prop: 'applyStatus', + label: '申请状态', + type: 'enum', + queryKey: 'applyStatus', + enumOptions: RECHARGE_STATUS_OPTIONS + }, + { prop: 'licensePlate', label: '车牌号', type: 'text', queryKey: 'licensePlate' }, + { + prop: 'rechargeType', + label: '充值类型', + type: 'enum', + queryKey: 'rechargeType', + enumOptions: RECHARGE_TYPE_OPTIONS + }, + { prop: 'rechargeOrderNo', label: '充值订单号', type: 'text', queryKey: 'rechargeOrderNo' }, + { + prop: 'rechargeDate', + label: '充值日期', + type: 'datetime', + queryKeyFrom: 'rechargeDateFrom', + queryKeyTo: 'rechargeDateTo' + }, + { prop: 'cardNo', label: '卡号', type: 'text', queryKey: 'cardNo' }, + { prop: 'gasStation', label: '加油站/渠道', type: 'text', queryKey: 'gasStation' }, + { prop: 'amount', label: '金额(元)', type: 'number', queryKeyPrefix: 'amount' }, + { + prop: 'recordCreateByName', + label: '登记人', + type: 'text', + queryKey: 'recordCreateByName' + } +] + +/** ETC 审批人设置(客户端)。与油卡共用同一套节点筛选定义。 */ +export const plVehicleRechargeWorkflowColumnFilterDefs: ColumnFilterDef[] = [ + { prop: 'nodeName', label: '节点名称', type: 'text' }, + { + prop: 'actionType', + label: '节点动作', + type: 'enum', + enumOptions: [ + { value: 'approve', label: '审批' }, + { value: 'disburse', label: '发放登记' } + ], + getValue: (row) => row.actionType || row.action_type || 'approve' + }, + { prop: 'nodeOrder', label: '节点顺序', type: 'number' }, + { prop: 'approverName', label: '审批人', type: 'text' }, + { + prop: 'configStatus', + label: '配置状态', + type: 'enum', + enumOptions: [ + { value: 'configured', label: '已配置' }, + { value: 'unconfigured', label: '未配置' } + ], + getValue: (row) => ((row.approverId ?? row.approver_id) ? 'configured' : 'unconfigured') + } +] diff --git a/web-admin/src/views/pl/etc-vehicle-recharge-apply/index.vue b/web-admin/src/views/pl/etc-vehicle-recharge-apply/index.vue new file mode 100644 index 000000000..0d4feb953 --- /dev/null +++ b/web-admin/src/views/pl/etc-vehicle-recharge-apply/index.vue @@ -0,0 +1,1212 @@ + + + + diff --git a/web-admin/src/views/pl/etc-vehicle-recharge-approval/index.vue b/web-admin/src/views/pl/etc-vehicle-recharge-approval/index.vue new file mode 100644 index 000000000..48ebb1a71 --- /dev/null +++ b/web-admin/src/views/pl/etc-vehicle-recharge-approval/index.vue @@ -0,0 +1,835 @@ + + + + + + diff --git a/web-admin/src/views/pl/etc-vehicle-recharge-record/index.vue b/web-admin/src/views/pl/etc-vehicle-recharge-record/index.vue new file mode 100644 index 000000000..0f46567f2 --- /dev/null +++ b/web-admin/src/views/pl/etc-vehicle-recharge-record/index.vue @@ -0,0 +1,1139 @@ + + + + + + diff --git a/web-admin/src/views/pl/etc-vehicle-recharge-workflow/index.vue b/web-admin/src/views/pl/etc-vehicle-recharge-workflow/index.vue new file mode 100644 index 000000000..a3fa3e541 --- /dev/null +++ b/web-admin/src/views/pl/etc-vehicle-recharge-workflow/index.vue @@ -0,0 +1,663 @@ + + + + +