yeg
2026-08-27 6499535aa03e0f581f87f936185996321e895a4f
fix: preserve battery field workflow
3个文件已修改
17 ■■■■■ 已修改文件
docs/pages/battery-group.md 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/batteryGroupFields.ts 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/BatteryGroupField.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/pages/battery-group.md
@@ -4,7 +4,7 @@
- 新建路由:`/battery-group/new`
- 编辑路由:`/battery-group/:id/edit`
- 当前实现:`src/views/BatteryGroup.vue`、`src/views/BatteryGroupForm.vue`
- 状态:已开发,数据使用前端演示流程
- 状态:已接入后端电池组、字段和模板接口
## 页面目标
@@ -33,7 +33,7 @@
## 数据结构
- 电池组:`id`、`name`、`model`、`purpose`、`remark`、`batteries`、`createdAt`、`status`、`creator`、`templateName`、`specs`、`customFields`。
- 列表与表单通过 `src/stores/batteryGroups.ts` 共享数据,并保存到当前站点的 `localStorage`。
- 列表与表单通过 `src/api/batteryGroups.ts` 读写后端数据,字段和模板分别通过对应 API 持久化。
## 响应式行为
src/api/batteryGroupFields.ts
@@ -36,6 +36,10 @@
  text: '文本', number: '数字', time: '时间', date: '时间', remark: '备注',
}
export const fieldTypeCode: Record<BatteryGroupFieldType, string> = {
  文本: 'text', 数字: 'number', 时间: 'time', 备注: 'remark',
}
export async function getBatteryGroupFields(): Promise<BatteryGroupField[]> {
  const result = await request<BatteryGroupFieldListResponse>('/system/batteryGroupField/list?pageNum=1&pageSize=1000')
  return (result.rows || []).map(item => ({
src/views/BatteryGroupField.vue
@@ -3,7 +3,7 @@
import { ElMessage, ElMessageBox } from 'element-plus'
import { useRouter } from 'vue-router'
import { getUserInfo } from '@/api/auth'
import { changeBatteryGroupFieldStatus, createBatteryGroupField, deleteBatteryGroupField, getBatteryGroupFields, updateBatteryGroupField, type BatteryGroupField, type BatteryGroupFieldStatus, type BatteryGroupFieldType } from '@/api/batteryGroupFields'
import { changeBatteryGroupFieldStatus, createBatteryGroupField, deleteBatteryGroupField, fieldTypeCode, getBatteryGroupFields, updateBatteryGroupField, type BatteryGroupField, type BatteryGroupFieldStatus, type BatteryGroupFieldType } from '@/api/batteryGroupFields'
interface Filters {
  id: string
@@ -15,7 +15,7 @@
const fields = ref<BatteryGroupField[]>([])
const creators = ref<string[]>([])
const statuses: BatteryGroupFieldStatus[] = ['启用', '禁用']
const fieldTypes: BatteryGroupFieldType[] = ['文本']
const fieldTypes: BatteryGroupFieldType[] = ['文本', '数字', '时间', '备注']
const filters = reactive<Filters>({ id: '', name: '', status: '' })
const appliedFilters = ref<Filters>({ id: '', name: '', status: '' })
const currentPage = ref(1)
@@ -81,7 +81,7 @@
  }
  saving.value = true
  try {
    const payload = { fieldName: name, fieldType: 'text', status: fieldForm.status === '启用' ? '0' as const : '1' as const }
    const payload = { fieldName: name, fieldType: fieldTypeCode[fieldForm.type], status: fieldForm.status === '启用' ? '0' as const : '1' as const }
    if (editingId.value) await updateBatteryGroupField(editingId.value, payload)
    else await createBatteryGroupField(payload)
    dialogVisible.value = false
@@ -136,8 +136,9 @@
    const currentUser = userInfo.user.userName?.trim() || ''
    creators.value = currentUser ? [currentUser] : []
    fieldForm.creator = currentUser
  } catch {
  } catch (error) {
    creators.value = []
    ElMessage.error(error instanceof Error ? error.message : '加载当前登录用户失败')
  }
  await loadFields()
}