main
kkk-ops 3 weeks ago
commit 30d831e8d6

@ -25,6 +25,7 @@ export interface MoldVO {
inTime: Date // 入库时间
status: number // 状态
images: string // 模具图片
fileUrl?: string
remark: string // 备注
isEnable: boolean // 是否启用
brandId: number // 型号id

@ -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

@ -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 })
},
}

@ -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 })
}
}

@ -76,6 +76,9 @@
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="资料" prop="fileUrl">
<UploadFile v-model="formData.fileUrl" :limit="1" :isShowTip="false"/>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
@ -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()

@ -26,7 +26,7 @@
<dict-tag :type="DICT_TYPE.ERP_MOLD_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<!-- <el-table-column label="机台" align="center" prop="machineId" /> -->
<el-table-column label="使用设备" align="center" prop="machineId" />
<!-- <el-table-column label="模具图片" align="center" prop="images" /> -->
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="是否启用" align="center" prop="isEnable" >

@ -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,8 +218,16 @@ const handleKeywordChange = () => {
}
const buildTreeFromApi = (orgs: ApiTreeOrg[]): DeviceTreeNode[] => {
return (
orgs?.map((org) => {
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 : []
@ -238,14 +249,16 @@ const buildTreeFromApi = (orgs: ApiTreeOrg[]): DeviceTreeNode[] => {
}
})
const children = [...orgChildren, ...equipmentNodes]
return {
id: `org-${org.id}`,
label: org?.name ?? String(org?.id ?? ''),
type: 'device',
children: equipmentNodes.length ? equipmentNodes : undefined
children: children.length ? children : undefined
}
}) ?? []
)
}
return Array.isArray(orgTree) ? orgTree.map(toOrgNode) : []
}
const loadTree = async () => {

@ -7,78 +7,97 @@
label-width="100px"
v-loading="formLoading"
>
<el-row>
<el-col :span="12">
<el-form-item label="编码" prop="code">
<el-input v-model="formData.code" placeholder="请输入编码" />
<el-form-item label="表编码" prop="code">
<el-input v-model="formData.code" placeholder="请输入表编码" :disabled="formType === 'update'" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入名称" />
<el-form-item label="表名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入表名称" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="能耗类型" prop="deviceTypeId">
<el-form-item label="能源类型" prop="deviceTypeId">
<el-select
v-model="formData.deviceTypeId"
@change="handleQuery"
placeholder="请选择能类型"
@change="handleDeviceTypeChange"
placeholder="请选择能类型"
clearable
filterable
class="!w-full"
>
<el-option
v-for="item in typeList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
<el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位" prop="unitName">
<el-input disabled v-model="formData.unitName" placeholder="" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="抄表周期cron" prop="checkCron">
<el-input v-model="formData.checkCron" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否启用" prop="isEnable">
<el-radio-group v-model="formData.isEnable">
<el-radio
v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
:key="dict.value"
:label="dict.value"
<el-form-item label="所属区域" prop="orgId">
<el-select
v-model="formData.orgId"
placeholder="根据区域结构筛选列表"
clearable
filterable
class="!w-full"
:loading="analysisLoading"
@change="handleOrgChange"
>
{{ dict.label }}
</el-radio>
</el-radio-group>
<el-option v-for="org in analysisList" :key="org.id" :label="org.name" :value="org.id" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="所属区域" prop="orgName">
<el-input v-model="formData.orgName" placeholder="" />
<el-form-item label="计算规则" prop="operationRulesVOList">
<div class="w-full flex flex-col gap-8px">
<div
v-for="(rule, index) in formData.operationRulesVOList"
:key="index"
class="w-full flex items-center gap-8px"
>
<el-tree-select
v-model="rule.pointValue"
:data="equipmentTree"
:props="treeSelectProps"
check-strictly
filterable
clearable
class="!w-full"
placeholder="根据设备选择点位"
:disabled="!formData.orgId"
@change="(val) => handlePointSelected(index, val)"
/>
<template v-if="index < formData.operationRulesVOList.length - 1">
<el-select
v-model="formData.operationRulesVOList[index].operator"
placeholder="运算符"
class="!w-110px"
clearable
>
<el-option v-for="op in operatorOptions" :key="op" :label="op" :value="op" />
</el-select>
</template>
<template v-else>
<div class="flex items-center gap-4px">
<el-button link type="primary" @click="addRule">
<Icon icon="ep:plus" />
</el-button>
<el-button
link
type="danger"
:disabled="formData.operationRulesVOList.length <= 1"
@click="removeRule"
>
<Icon icon="ep:minus" />
</el-button>
</div>
</template>
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计算规则" prop="rules">
<el-input v-model="formData.rules" placeholder="" />
<el-form-item label="是否启用" prop="isEnable">
<el-switch v-model="formData.isEnable" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-form-item label="信息资料" prop="info">
<!-- <el-form-item label="信息资料" prop="info">
<Editor v-model="formData.info" height="250px" />
</el-form-item>
</el-form-item> -->
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
@ -86,9 +105,9 @@
</Dialog>
</template>
<script setup lang="ts">
import {getStrDictOptions, DICT_TYPE, getBoolDictOptions} from '@/utils/dict'
import { EnergyDeviceApi, EnergyDeviceVO } from '@/api/mes/energydevice'
import {EnergyTypeApi, EnergyTypeVO} from "@/api/mes/energytype";
import { OrganizationApi, DeviceParameterAnalysisNodeVO } from '@/api/mes/organization'
/** 能源设备 表单 */
defineOptions({ name: 'EnergyDeviceForm' })
@ -113,27 +132,68 @@ const formData = ref({
lastCheckValue: undefined,
unitName: undefined,
isEnable: undefined,
orgId: undefined,
orgName: undefined,
rules: undefined,
operationRulesVOList: [{ deviceId: undefined, pointId: undefined, operator: undefined, pointValue: undefined }],
})
const formRules = reactive({
name: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }],
code: [{ required: true, message: '设备编码不能为空', trigger: 'blur' }],
name: [{ required: true, message: '表名称不能为空', trigger: 'blur' }],
code: [{ required: true, message: '表编码不能为空', trigger: 'blur' }],
orgId: [{ required: true, message: '所属区域不能为空', trigger: 'change' }],
operationRulesVOList: [{ required: true, validator: (_rule, _value, callback) => validateRules(callback), trigger: 'change' }],
isEnable: [{ required: true, message: '是否启用不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
const analysisLoading = ref(false)
const analysisList = ref<DeviceParameterAnalysisNodeVO[]>([])
const treeSelectProps = {
label: 'name',
children: 'children',
disabled: 'disabled',
value: 'id'
}
const operatorOptions = ['+', '-', '*', '/']
const currentOrgNode = computed(() => {
return analysisList.value.find((o) => o.id === formData.value.orgId)
})
const equipmentTree = computed(() => {
const equipments = currentOrgNode.value?.equipments ?? []
return equipments.map((eq) => ({
id: `device:${eq.id}`,
name: eq.name,
disabled: true,
children: (eq.parameters ?? []).map((p) => ({
id: `${eq.id}:${p.id}`,
name: `${eq.name}: ${p.name}`
}))
}))
})
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
await loadAnalysis()
//
if (id) {
formLoading.value = true
try {
formData.value = await EnergyDeviceApi.getEnergyDevice(id)
if (!Array.isArray((formData.value as any).operationRulesVOList)) {
;(formData.value as any).operationRulesVOList = [
{ deviceId: undefined, pointId: undefined, operator: undefined, pointValue: undefined }
]
}
hydratePointValues()
} finally {
formLoading.value = false
}
@ -151,6 +211,14 @@ const submitForm = async () => {
try {
const data = formData.value as unknown as EnergyDeviceVO
data.deviceTypeName = typeList.value.find(item => item.id === data.deviceTypeId)?.name
const org = analysisList.value.find((o) => o.id === data.orgId)
if (org) {
;(data as any).orgName = org.name
}
;(data as any).operationRulesVOList = buildOperationRulesPayload()
if (formType.value === 'create') {
await EnergyDeviceApi.createEnergyDevice(data)
message.success(t('common.createSuccess'))
@ -179,7 +247,11 @@ const resetForm = () => {
lastCheckTime: undefined,
lastCheckValue: undefined,
unitName: undefined,
isEnable: true
isEnable: true,
orgId: undefined,
orgName: undefined,
rules: undefined,
operationRulesVOList: [{ deviceId: undefined, pointId: undefined, operator: undefined, pointValue: undefined }]
}
formRef.value?.resetFields()
}
@ -189,8 +261,102 @@ onMounted(async () => {
typeList.value = await EnergyTypeApi.getEnergyTypeList()
})
/** 下拉框 */
const handleQuery = () => {
const loadAnalysis = async () => {
if (analysisList.value.length > 0) {
return
}
analysisLoading.value = true
try {
analysisList.value = await OrganizationApi.deviceParameterAnalysis({})
} finally {
analysisLoading.value = false
}
}
const handleDeviceTypeChange = () => {
formData.value.unitName = typeList.value.find(item => item.id === formData.value.deviceTypeId)?.unit
}
const handleOrgChange = () => {
const org = analysisList.value.find((o) => o.id === formData.value.orgId)
formData.value.orgName = org?.name
formData.value.operationRulesVOList = [
{ deviceId: undefined, pointId: undefined, operator: undefined, pointValue: undefined }
]
}
const handlePointSelected = (index: number, val: any) => {
if (!val || typeof val !== 'string' || !val.includes(':')) {
formData.value.operationRulesVOList[index].deviceId = undefined
formData.value.operationRulesVOList[index].pointId = undefined
return
}
const [deviceIdStr, pointIdStr] = val.split(':')
const deviceId = Number(deviceIdStr)
const pointId = Number(pointIdStr)
formData.value.operationRulesVOList[index].deviceId = Number.isNaN(deviceId) ? undefined : deviceId
formData.value.operationRulesVOList[index].pointId = Number.isNaN(pointId) ? undefined : pointId
}
const addRule = () => {
formData.value.operationRulesVOList.push({
deviceId: undefined,
pointId: undefined,
operator: undefined,
pointValue: undefined
})
}
const removeRule = () => {
if (formData.value.operationRulesVOList.length <= 1) {
return
}
formData.value.operationRulesVOList.pop()
}
const buildOperationRulesPayload = () => {
const list = (formData.value.operationRulesVOList ?? []).map((r, idx) => {
const item: any = {
deviceId: r.deviceId,
pointId: r.pointId
}
if (r.operator) {
item.operator = r.operator
}
return item
})
return list
}
const hydratePointValues = () => {
const list = (formData.value as any).operationRulesVOList as any[]
if (!Array.isArray(list)) {
return
}
list.forEach((r) => {
if (r?.deviceId && r?.pointId) {
r.pointValue = `${r.deviceId}:${r.pointId}`
}
})
}
const validateRules = (callback: any) => {
const list = formData.value.operationRulesVOList ?? []
if (!list.length) {
callback(new Error('计算规则不能为空'))
return
}
for (let i = 0; i < list.length; i++) {
const r = list[i] as any
if (!r?.deviceId || !r?.pointId) {
callback(new Error('请选择设备点位'))
return
}
if (i > 0 && !list[i - 1]?.operator) {
callback(new Error('请选择运算符'))
return
}
}
callback()
}
</script>

@ -1,55 +1,30 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
<el-form-item label="名称" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
v-model="queryParams.name" placeholder="请输入名称" clearable @keyup.enter="handleQuery"
class="!w-240px" />
</el-form-item>
<el-form-item label="能耗类型" prop="deviceType">
<el-select
v-model="queryParams.deviceType"
placeholder="请选择设备类型"
clearable
class="!w-240px"
>
<el-option
v-for="item in typeList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
<el-select v-model="queryParams.deviceType" placeholder="请选择设备类型" clearable class="!w-240px">
<el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['mes:energy-device:create']"
>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" /> 搜索
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> 重置
</el-button>
<el-button type="primary" plain @click="openForm('create')" v-hasPermi="['mes:energy-device:create']">
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['mes:energy-device:export']"
>
type="success" plain @click="handleExport" :loading="exportLoading"
v-hasPermi="['mes:energy-device:export']">
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
@ -59,37 +34,33 @@
<!-- 列表 -->
<ContentWrap>
<el-table
v-loading="loading"
:data="list"
:stripe="true"
:show-overflow-tooltip="true"
highlight-current-row
@current-change="handleCurrentChange"
>
<el-table-column label="编码" align="center" prop="code" />
<el-table-column label="名称" align="center" prop="name" />
v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" highlight-current-row
@current-change="handleCurrentChange">
<el-table-column label="表编码" align="center" prop="code" />
<el-table-column label="表名称" align="center" prop="name" />
<el-table-column label="能耗类型" align="center" prop="deviceTypeName" />
<el-table-column label="所属区域" align="center" prop="orgName" />
<el-table-column label="计算规则" align="center" prop="rules" />
<el-table-column label="抄表周期" align="center" prop="checkCron" />
<!-- <el-table-column label="计算规则" align="center" prop="rules" /> -->
<!-- <el-table-column label="抄表周期" align="center" prop="checkCron" />
<el-table-column label="最后抄表值" align="center" prop="lastCheckValue" />
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column
<el-table-column label="单位" align="center" prop="unitName" /> -->
<!-- <el-table-column
label="最后抄表时间"
align="center"
prop="lastCheckTime"
:formatter="dateFormatter"
width="180px"
/>
/> -->
<!-- <el-table-column label="设备资料" align="center" prop="info" /> -->
<el-table-column label="是否启用" align="center" prop="isEnable">
<template #default="scope">
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.isEnable" />
</template>
</el-table-column>
<el-table-column label="最近更新时间" align="center" prop="updateTime" :formatter="dateFormatter" width="180px" />
<el-table-column label="操作" fixed="right" align="center" width="250px">
<template #default="scope">
<el-button
<!-- <el-button
link
type="warning"
@click="newRecordForm(scope.row.id,scope.row.name )"
@ -104,21 +75,13 @@
v-hasPermi="['mes:energy-device:update']"
>
重置
</el-button>
</el-button> -->
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['mes:energy-device:update']"
>
link type="primary" @click="openForm('update', scope.row.id)"
v-hasPermi="['mes:energy-device:update']">
编辑
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['mes:energy-device:delete']"
>
<el-button link type="danger" @click="handleDelete(scope.row.id)" v-hasPermi="['mes:energy-device:delete']">
删除
</el-button>
</template>
@ -126,11 +89,8 @@
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
:total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
@pagination="getList" />
</ContentWrap>
<!-- 新增设备表单弹窗添加/修改 -->
@ -140,14 +100,14 @@
<!-- 抄表弹窗添加/修改 -->
<EnergyDeviceCheckRecordForm ref="newRecordFormRef" @success="getList" />
<!-- 子表的列表 -->
<!-- 子表的列表
<ContentWrap>
<el-tabs model-value="energyDeviceCheckRecord">
<el-tab-pane :label="'抄表记录: '+currentRow.name" name="energyDeviceCheckRecord">
<EnergyDeviceCheckRecordList :device-id="currentRow.id" :device-name="currentRow.name" />
</el-tab-pane>
</el-tabs>
</ContentWrap>
</ContentWrap> -->
</template>
<script setup lang="ts">
@ -160,7 +120,7 @@ import ResetForm from './ResetForm.vue'
import EnergyDeviceCheckRecordList from './components/EnergyDeviceCheckRecordList.vue'
import EnergyDeviceCheckRecordForm
from "@/views/mes/energydevice/components/EnergyDeviceCheckRecordForm.vue";
import {EnergyTypeApi, EnergyTypeVO} from "@/api/mes/energytype";
import { EnergyTypeApi, EnergyTypeVO } from "@/api/mes/energytype";
/** 能源设备 列表 */
defineOptions({ name: 'EnergyDevice' })
@ -196,7 +156,7 @@ const getList = async () => {
const data = await EnergyDeviceApi.getEnergyDevicePage(queryParams)
list.value = data.list
total.value = data.total
if(list.value.length>0){
if (list.value.length > 0) {
currentRow.value = list.value[0]
}
} finally {
@ -236,7 +196,7 @@ const handleDelete = async (id: number) => {
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
} catch { }
}
/** 导出按钮操作 */

@ -8,7 +8,7 @@
v-loading="formLoading"
>
<el-form-item label="能耗类型编码" prop="code">
<el-input v-model="formData.code" placeholder="请输入能耗类型编码" />
<el-input v-model="formData.code" placeholder="请输入能耗类型编码" :disabled="formType === 'update'" />
</el-form-item>
<el-form-item label="能耗类型名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入能耗类型名称" />

@ -42,7 +42,7 @@
</template>
<script setup lang="ts">
import { getBoolDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict'
import { DvSubjectApi, DvSubjectVO } from '@/api/mes/dvsubject'
import { DvSubjectApi, DvSubjectVO } from '@/api/mold/inspectionItems'
import { useDictStoreWithOut } from '@/store/modules/dict'
/** 维保项目 表单 */

@ -102,7 +102,7 @@ link type="primary" @click="openForm('update', scope.row.id)"
import { getStrDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { DvSubjectApi, DvSubjectVO } from '@/api/mes/dvsubject'
import { DvSubjectApi, DvSubjectVO } from '@/api/mold/inspectionItems'
import InspectionItemsForm from './InspectionItemsForm.vue'
import { isHexColor } from '@/utils/color'
import { useDictStoreWithOut } from '@/store/modules/dict'

@ -39,8 +39,8 @@
<script setup lang="ts">
import type { FormRules } from 'element-plus'
import { DvSubjectApi, DvSubjectVO } from '@/api/mes/dvsubject'
import { PlanMaintenanceApi, PlanMaintenanceVO } from '@/api/mes/planmaintenance'
import { DvSubjectApi, DvSubjectVO } from '@/api/mold/inspectionItems'
import { PlanMaintenanceApi, PlanMaintenanceVO } from '@/api/mold/planmaintenance'
defineOptions({ name: 'MoldInspectionPlanForm' })

@ -139,7 +139,7 @@
import { getStrDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { PlanMaintenanceApi, PlanMaintenanceSubjectVO, PlanMaintenanceVO } from '@/api/mes/planmaintenance'
import { PlanMaintenanceApi, PlanMaintenanceSubjectVO, PlanMaintenanceVO } from '@/api/mold/planmaintenance'
import InspectionPlanForm from './InspectionPlanForm.vue'
import { isHexColor } from '@/utils/color'
import { useDictStoreWithOut } from '@/store/modules/dict'

Loading…
Cancel
Save