diff --git a/src/api/erp/mold/index.ts b/src/api/erp/mold/index.ts
index 96bbc19d..775bd7ae 100644
--- a/src/api/erp/mold/index.ts
+++ b/src/api/erp/mold/index.ts
@@ -25,6 +25,7 @@ export interface MoldVO {
inTime: Date // 入库时间
status: number // 状态
images: string // 模具图片
+ fileUrl?: string
remark: string // 备注
isEnable: boolean // 是否启用
brandId: number // 型号id
diff --git a/src/api/mes/energydevice/index.ts b/src/api/mes/energydevice/index.ts
index 3094d114..5164e784 100644
--- a/src/api/mes/energydevice/index.ts
+++ b/src/api/mes/energydevice/index.ts
@@ -1,6 +1,12 @@
import request from '@/config/axios'
// 能源设备 VO
+export interface EnergyDeviceOperationRuleVO {
+ deviceId: number
+ pointId: number
+ operator?: string
+}
+
export interface EnergyDeviceVO {
id: number // ID
name: string // 名称
@@ -16,6 +22,7 @@ export interface EnergyDeviceVO {
orgId: number // 所属区域id
orgName: string // 所属区域名称
rules: string // 计算规则
+ operationRulesVOList?: EnergyDeviceOperationRuleVO[]
}
// 能源设备 API
diff --git a/src/api/mold/inspectionItems/index.ts b/src/api/mold/inspectionItems/index.ts
new file mode 100644
index 00000000..b719aeee
--- /dev/null
+++ b/src/api/mold/inspectionItems/index.ts
@@ -0,0 +1,50 @@
+import request from '@/config/axios'
+
+// 维保项目 VO
+export interface DvSubjectVO {
+ id?: number // ID
+ subjectCode: string // 项目编码
+ subjectName: string // 项目名称
+ subjectType?: string // 项目类型
+ subjectContent?: string // 项目内容
+ subjectStandard?: string // 标准
+ isEnable: string // 是否启用
+ inspectionMethod: string // 检验方式
+ valueType: string // 值类型
+ judgmentCriteria: string // 判定基准
+ creator?: string // 创建人
+ createTime?: string | number | Date // 创建时间
+}
+
+// 维保项目 API
+export const DvSubjectApi = {
+ // 查询维保项目分页
+ getDvSubjectPage: async (params: any) => {
+ return await request.get({ url: `/mes/mold-subject/page`, params })
+ },
+
+ // 查询维保项目详情
+ getDvSubject: async (id: number) => {
+ return await request.get({ url: `/mes/mold-subject/get?id=` + id })
+ },
+
+ // 新增维保项目
+ createDvSubject: async (data: DvSubjectVO) => {
+ return await request.post({ url: `/mes/mold-subject/create`, data })
+ },
+
+ // 修改维保项目
+ updateDvSubject: async (data: DvSubjectVO) => {
+ return await request.put({ url: `/mes/mold-subject/update`, data })
+ },
+
+ // 删除维保项目
+ deleteDvSubject: async (ids: string) => {
+ return await request.delete({ url: `/mes/mold-subject/delete?ids=` + ids })
+ },
+
+ // 导出维保项目 Excel
+ exportDvSubject: async (params) => {
+ return await request.download({ url: `/mes/mold-subject/export-excel`, params })
+ },
+}
diff --git a/src/api/mold/planmaintenance/index.ts b/src/api/mold/planmaintenance/index.ts
new file mode 100644
index 00000000..cc2747e9
--- /dev/null
+++ b/src/api/mold/planmaintenance/index.ts
@@ -0,0 +1,47 @@
+import request from '@/config/axios'
+
+export interface PlanMaintenanceVO {
+ id?: number | string
+ planName: string
+ planType: number | string
+ description?: string
+ subjectIdS?: string
+ creator?: string
+ creatorName?: string
+ createTime?: string | number | Date
+ updateTime?: string | number | Date
+}
+
+export interface PlanMaintenanceSubjectVO {
+ id?: number | string
+ subjectCode?: string
+ subjectName?: string
+ inspectionMethod?: string
+ judgmentCriteria?: string
+}
+
+export const PlanMaintenanceApi = {
+ getPlanMaintenancePage: async (params: any) => {
+ return await request.get({ url: `/mes/mold-plan-maintenance/page`, params })
+ },
+
+ getSubjectList: async (id: number | string) => {
+ return await request.get({ url: `/mes/mold-plan-maintenance/getSubjectList`, params: { id } })
+ },
+
+ createPlanMaintenance: async (data: any) => {
+ return await request.post({ url: `/mes/mold-plan-maintenance/create`, data })
+ },
+
+ updatePlanMaintenance: async (data: any) => {
+ return await request.put({ url: `/mes/mold-plan-maintenance/update`, data })
+ },
+
+ deletePlanMaintenance: async (ids: string) => {
+ return await request.delete({ url: `/mes/mold-plan-maintenance/delete?ids=` + ids })
+ },
+
+ exportPlanMaintenance: async (params: any) => {
+ return await request.download({ url: `/mes/mold-plan-maintenance/export-excel`, params })
+ }
+}
diff --git a/src/views/erp/mold/components/MoldForm.vue b/src/views/erp/mold/components/MoldForm.vue
index d191c5fb..8367bbd7 100644
--- a/src/views/erp/mold/components/MoldForm.vue
+++ b/src/views/erp/mold/components/MoldForm.vue
@@ -76,6 +76,9 @@
+
+
+
确 定
@@ -108,6 +111,7 @@ const formData = ref({
images: undefined,
remark: undefined,
isEnable: undefined,
+ fileUrl: '',
brandId: undefined
})
const formRules = reactive({
@@ -180,6 +184,7 @@ const resetForm = () => {
images: undefined,
remark: undefined,
isEnable: undefined,
+ fileUrl: '',
brandId: undefined
}
formRef.value?.resetFields()
diff --git a/src/views/erp/mold/components/MoldList.vue b/src/views/erp/mold/components/MoldList.vue
index 3f580671..e54b62c9 100644
--- a/src/views/erp/mold/components/MoldList.vue
+++ b/src/views/erp/mold/components/MoldList.vue
@@ -26,7 +26,7 @@
-
+
diff --git a/src/views/iot/deviceParamAnalysis/index.vue b/src/views/iot/deviceParamAnalysis/index.vue
index 0353ca11..45dc7b84 100644
--- a/src/views/iot/deviceParamAnalysis/index.vue
+++ b/src/views/iot/deviceParamAnalysis/index.vue
@@ -78,6 +78,7 @@ import dayjs from 'dayjs'
import { Echart as EChart } from '@/components/Echart'
import { OrganizationApi } from '@/api/mes/organization'
import { DeviceModelAttributeApi } from '@/api/iot/devicemodelattribute'
+import { handleTree } from '@/utils/tree'
defineOptions({ name: 'DeviceParamAnalysis' })
@@ -110,7 +111,9 @@ type ApiTreeEquipment = {
type ApiTreeOrg = {
id: number
name: string
+ parentId?: number | null
equipments?: ApiTreeEquipment[]
+ children?: ApiTreeOrg[]
}
const message = useMessage()
@@ -215,37 +218,47 @@ const handleKeywordChange = () => {
}
const buildTreeFromApi = (orgs: ApiTreeOrg[]): DeviceTreeNode[] => {
- return (
- orgs?.map((org) => {
- const equipments = Array.isArray(org?.equipments) ? org.equipments : []
- const equipmentNodes: DeviceTreeNode[] = equipments.map((eq) => {
- const params = Array.isArray(eq?.parameters) ? eq.parameters : []
- const paramNodes: DeviceTreeNode[] = params.map((p) => ({
- id: `param-${eq.id}-${p.id}`,
- label: p?.name ?? p?.code ?? String(p?.id ?? ''),
- type: 'param',
- deviceId: Number(eq.id),
- modelId: Number(p.id),
- paramKey: p?.code ? String(p.code) : undefined,
- unit: p?.unit ? String(p.unit) : undefined
- }))
-
- return {
- id: `equipment-${org.id}-${eq.id}`,
- label: eq?.name ?? String(eq?.id ?? ''),
- type: 'device',
- children: paramNodes.length ? paramNodes : undefined
- }
- })
+ const normalizedOrgs: ApiTreeOrg[] = (Array.isArray(orgs) ? orgs : []).map((o) => ({
+ ...o,
+ parentId: typeof o?.parentId === 'number' ? o.parentId : Number(o?.parentId ?? 0) || 0
+ }))
+
+ const orgTree = handleTree(normalizedOrgs, 'id', 'parentId', 'children') as ApiTreeOrg[]
+
+ const toOrgNode = (org: ApiTreeOrg): DeviceTreeNode => {
+ const orgChildren = Array.isArray(org?.children) ? org.children.map(toOrgNode) : []
+
+ const equipments = Array.isArray(org?.equipments) ? org.equipments : []
+ const equipmentNodes: DeviceTreeNode[] = equipments.map((eq) => {
+ const params = Array.isArray(eq?.parameters) ? eq.parameters : []
+ const paramNodes: DeviceTreeNode[] = params.map((p) => ({
+ id: `param-${eq.id}-${p.id}`,
+ label: p?.name ?? p?.code ?? String(p?.id ?? ''),
+ type: 'param',
+ deviceId: Number(eq.id),
+ modelId: Number(p.id),
+ paramKey: p?.code ? String(p.code) : undefined,
+ unit: p?.unit ? String(p.unit) : undefined
+ }))
return {
- id: `org-${org.id}`,
- label: org?.name ?? String(org?.id ?? ''),
+ id: `equipment-${org.id}-${eq.id}`,
+ label: eq?.name ?? String(eq?.id ?? ''),
type: 'device',
- children: equipmentNodes.length ? equipmentNodes : undefined
+ children: paramNodes.length ? paramNodes : undefined
}
- }) ?? []
- )
+ })
+
+ const children = [...orgChildren, ...equipmentNodes]
+ return {
+ id: `org-${org.id}`,
+ label: org?.name ?? String(org?.id ?? ''),
+ type: 'device',
+ children: children.length ? children : undefined
+ }
+ }
+
+ return Array.isArray(orgTree) ? orgTree.map(toOrgNode) : []
}
const loadTree = async () => {
diff --git a/src/views/mes/energydevice/EnergyDeviceForm.vue b/src/views/mes/energydevice/EnergyDeviceForm.vue
index 912da23e..73861c1f 100644
--- a/src/views/mes/energydevice/EnergyDeviceForm.vue
+++ b/src/views/mes/energydevice/EnergyDeviceForm.vue
@@ -7,78 +7,97 @@
label-width="100px"
v-loading="formLoading"
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
handlePointSelected(index, val)"
+ />
+
+
+
- {{ dict.label }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
确 定
取 消
@@ -86,9 +105,9 @@
diff --git a/src/views/mes/energydevice/index.vue b/src/views/mes/energydevice/index.vue
index d2a34e69..d6af71f8 100644
--- a/src/views/mes/energydevice/index.vue
+++ b/src/views/mes/energydevice/index.vue
@@ -1,55 +1,30 @@
-
+
+v-model="queryParams.name" placeholder="请输入名称" clearable @keyup.enter="handleQuery"
+ class="!w-240px" />
-
-
+
+
- 搜索
- 重置
-
+
+ 搜索
+
+
+ 重置
+
+
新增
+type="success" plain @click="handleExport" :loading="exportLoading"
+ v-hasPermi="['mes:energy-device:export']">
导出
@@ -59,37 +34,33 @@
-
-
+v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" highlight-current-row
+ @current-change="handleCurrentChange">
+
+
-
-
-
+
+
+
+
+
-
重置
-
+ -->
+link type="primary" @click="openForm('update', scope.row.id)"
+ v-hasPermi="['mes:energy-device:update']">
编辑
-
+
删除
@@ -126,11 +89,8 @@
+:total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
+ @pagination="getList" />
@@ -140,14 +100,14 @@
-
+
\ No newline at end of file
+
diff --git a/src/views/mold/inspectionItems/InspectionItemsForm.vue b/src/views/mold/inspectionItems/InspectionItemsForm.vue
index 23f52964..024abc94 100644
--- a/src/views/mold/inspectionItems/InspectionItemsForm.vue
+++ b/src/views/mold/inspectionItems/InspectionItemsForm.vue
@@ -42,7 +42,7 @@