2024-07-03 16:57:44 +08:00
|
|
|
<template>
|
|
|
|
<!-- 设备 -->
|
|
|
|
<div class="ba-user-container">
|
|
|
|
<el-container class="defaultContainer">
|
|
|
|
<el-aside class="defaultAside">
|
|
|
|
<el-main class="treeMain">
|
|
|
|
<el-tree
|
|
|
|
style="max-width: 600px; margin-top: 2.2%"
|
2024-07-11 16:10:51 +08:00
|
|
|
ref="equipTreeRef"
|
2024-07-03 16:57:44 +08:00
|
|
|
:data="userData"
|
|
|
|
:props="defaultProps"
|
2024-07-11 15:30:24 +08:00
|
|
|
node-key="equipmentTypeId"
|
2024-07-03 16:57:44 +08:00
|
|
|
@node-click="handleNodeClick"
|
|
|
|
/>
|
|
|
|
</el-main>
|
|
|
|
</el-aside>
|
|
|
|
<el-container class="defaultMainContainer">
|
|
|
|
<el-header class="defaultHeader">
|
|
|
|
<el-space>
|
|
|
|
<el-input v-model="headerForm.searchFor"></el-input>
|
|
|
|
<el-radio-group v-model="headerForm.resource">
|
|
|
|
<el-radio value="1" label="名称"></el-radio>
|
|
|
|
<el-radio value="2" label="编码"></el-radio>
|
|
|
|
</el-radio-group>
|
2024-07-09 17:37:20 +08:00
|
|
|
<el-button type="primary" :icon="Search" class="defaultBtn" @click="deviceTypeQuery">查询</el-button>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-space>
|
|
|
|
<div style="display: flex; align-items: center">
|
|
|
|
<div>
|
|
|
|
<el-button size="large" :icon="CirclePlusFilled" type="primary" class="defaultBtn" @click="addDeviceList">新增</el-button>
|
|
|
|
</div>
|
2024-07-09 17:37:20 +08:00
|
|
|
<div style="margin: 0px 10px 0px">
|
|
|
|
<el-upload :show-file-list="false" :http-request="upLoadModel">
|
|
|
|
<template #trigger>
|
|
|
|
<el-button size="large" :icon="Upload">导入</el-button>
|
|
|
|
</template>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-upload>
|
|
|
|
</div>
|
|
|
|
<div>
|
2024-07-09 17:37:20 +08:00
|
|
|
<el-button size="large" :icon="Download" class="defaultBtn" @click="Export">导出</el-button>
|
2024-07-03 16:57:44 +08:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-header>
|
|
|
|
<el-main class="defaultMain">
|
|
|
|
<el-table ref="multipleTableRef" :data="deviceList" class="tablePart">
|
|
|
|
<el-table-column type="selection" />
|
2024-07-09 17:37:20 +08:00
|
|
|
<el-table-column property="name" label="设备名称" />
|
|
|
|
<el-table-column property="code" label="设备编码" />
|
|
|
|
<el-table-column property="madeinFactory" label="生产厂家" />
|
|
|
|
<el-table-column property="model" label="规格型号" />
|
2024-07-03 16:57:44 +08:00
|
|
|
<el-table-column property="address" label="操作">
|
|
|
|
<template #default="scope">
|
2024-10-22 14:04:02 +08:00
|
|
|
<span style="color: #0064aa; cursor: pointer" @click="openControl(scope)">调控 </span>
|
|
|
|
<span style="color: #0064aa"> | </span>
|
2024-07-09 17:37:20 +08:00
|
|
|
<span style="color: #0064aa; cursor: pointer" @click="viewDeviceDetails(scope)">查看 </span>
|
2024-07-03 16:57:44 +08:00
|
|
|
<span style="color: #0064aa"> | </span>
|
2024-07-09 17:37:20 +08:00
|
|
|
<span style="color: #0064aa; cursor: pointer" @click="deviceDeletion(scope)"> 删除 </span>
|
2024-07-03 16:57:44 +08:00
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table>
|
2024-07-09 17:37:20 +08:00
|
|
|
<div style="display: flex; justify-content: right">
|
|
|
|
<el-pagination
|
|
|
|
v-model:current-page="currentPage"
|
|
|
|
v-model:page-size="currentPageSize"
|
|
|
|
:total="pageTotal"
|
|
|
|
:page-sizes="pagePagination"
|
|
|
|
background
|
|
|
|
:pager-count="7"
|
|
|
|
@size-change="handleSizeChange"
|
|
|
|
@current-change="handleCurrentChange"
|
|
|
|
layout="prev, pager, next, jumper,sizes,total"
|
|
|
|
></el-pagination>
|
|
|
|
</div>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-main>
|
|
|
|
</el-container>
|
|
|
|
<!-- 查看设备详情页面 -->
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-dialog v-model="editDeviceDialog" title="编辑设备台账" width="720" :before-close="handleCloseEditDevice">
|
2024-07-03 16:57:44 +08:00
|
|
|
<el-form
|
|
|
|
ref="modifyDeviceDetails"
|
|
|
|
:inline="true"
|
|
|
|
label-width="auto"
|
|
|
|
:model="editDeviceData"
|
|
|
|
:rules="editDeviceRules"
|
2024-07-10 19:40:24 +08:00
|
|
|
style="padding: 5px 15px; font-size: 14px; line-height: 1.5; word-wrap: break-word; font-size: 20px"
|
2024-07-03 16:57:44 +08:00
|
|
|
>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="12">
|
|
|
|
<el-form-item label="设备类型:">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-input v-model="editDeviceData.objectType" disabled placeholder="请输入设备类型" clearable />
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-form-item label="物模型:">
|
|
|
|
<el-select v-model="editDeviceData.iotModelId" placeholder="请选择物模型" style="width: 200px">
|
|
|
|
<el-option v-for="item in equipModeData" :key="item.id" :label="item.iotModelName" :value="item.id" />
|
|
|
|
</el-select>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="12">
|
|
|
|
<el-form-item label="设备名称:" prop="name">
|
|
|
|
<el-input v-model="editDeviceData.name" placeholder="请输入设备名称" clearable />
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
|
|
<el-form-item label="设备编码:" prop="code">
|
2024-07-11 18:11:30 +08:00
|
|
|
<el-input v-model="editDeviceData.code" style="width: 200px" placeholder="请输入设备编码" clearable />
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="12">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-form-item label="生产厂家:">
|
|
|
|
<el-input v-model="editDeviceData.madeinFactory" placeholder="请输入生产厂家" clearable />
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-form-item label="规格型号:">
|
2024-07-11 18:11:30 +08:00
|
|
|
<el-input v-model="editDeviceData.model" style="width: 200px" placeholder="请输入规格型号" clearable />
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="12">
|
2024-07-11 15:30:24 +08:00
|
|
|
<el-form-item label="管理部门:" prop="madeinFactory">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-tree-select
|
|
|
|
v-model="editDeviceData.orgId"
|
|
|
|
lazy
|
|
|
|
:load="treeSelectLoad"
|
|
|
|
:props="treeSelectProps"
|
|
|
|
check-strictly
|
2024-07-11 18:11:30 +08:00
|
|
|
style="width: 190px"
|
2024-07-10 19:40:24 +08:00
|
|
|
/>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
2024-10-15 17:53:46 +08:00
|
|
|
|
2024-10-15 16:20:18 +08:00
|
|
|
<el-col :span="12" v-if="editDeviceData.objectType !== '风电场'">
|
2024-10-15 10:11:07 +08:00
|
|
|
<el-form-item label="所属风电场:">
|
2024-07-11 15:30:24 +08:00
|
|
|
<el-tree-select
|
2024-07-12 11:20:14 +08:00
|
|
|
:disabled="editDeviceData.objectType === '风电场'"
|
2024-10-15 10:11:07 +08:00
|
|
|
:placeholder="editDeviceData.objectType === '风电场' ? '无' : '请选择所属风电场'"
|
2024-07-11 15:30:24 +08:00
|
|
|
v-model="editDeviceData.parentEquipmentId"
|
|
|
|
:data="belongingEquipment"
|
|
|
|
:props="defaultEquipmentProps"
|
|
|
|
:render-after-expand="false"
|
2024-07-12 14:33:48 +08:00
|
|
|
check-strictly
|
2024-07-11 15:30:24 +08:00
|
|
|
style="width: 200px"
|
|
|
|
/>
|
2024-07-10 19:40:24 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
2024-10-15 16:20:18 +08:00
|
|
|
<el-col :span="12" v-if="editDeviceData.objectType !== '风电场'">
|
2024-10-15 10:11:07 +08:00
|
|
|
<el-form-item label="所属线路:">
|
2024-10-15 14:52:29 +08:00
|
|
|
<el-input placeholder="请输入所属线路" v-model="editDeviceData.belongLine" style="width: 200px" />
|
2024-10-15 10:11:07 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
2024-10-15 16:20:18 +08:00
|
|
|
<el-col :span="12" v-if="editDeviceData.objectType !== '风电场'">
|
2024-10-15 10:11:07 +08:00
|
|
|
<el-form-item label="标杆机组:">
|
2024-10-15 14:52:29 +08:00
|
|
|
<el-switch @change="edithandleSwitchChange" :active-value="1" :inactive-value="0" v-model="editDeviceData.standard" />
|
2024-10-15 10:11:07 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
2024-07-10 19:40:24 +08:00
|
|
|
</el-row>
|
|
|
|
<el-row>
|
2024-07-03 16:57:44 +08:00
|
|
|
<el-col :span="12">
|
2024-07-09 17:37:20 +08:00
|
|
|
<el-form-item label="安装位置:">
|
2024-07-11 18:11:30 +08:00
|
|
|
<el-input v-model="editDeviceData.location" style="width: 570px" placeholder="请输入安装位置" clearable />
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="12">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-form-item label="经度:" prop="longitude">
|
2024-07-11 18:11:30 +08:00
|
|
|
<el-input-number
|
|
|
|
v-model="editDeviceData.longitude"
|
|
|
|
style="width: 200px"
|
2024-07-12 11:20:14 +08:00
|
|
|
:controls="false"
|
2024-07-11 18:11:30 +08:00
|
|
|
placeholder="请输入经度"
|
|
|
|
controls-position="right"
|
|
|
|
/>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-form-item label="纬度:" prop="latitude">
|
2024-07-11 18:11:30 +08:00
|
|
|
<el-input-number
|
|
|
|
v-model="editDeviceData.latitude"
|
|
|
|
style="width: 200px"
|
2024-07-12 11:20:14 +08:00
|
|
|
:controls="false"
|
2024-07-11 18:11:30 +08:00
|
|
|
placeholder="请输入纬度"
|
|
|
|
controls-position="right"
|
|
|
|
/>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
2024-10-15 17:53:46 +08:00
|
|
|
<el-col :span="12">
|
2024-07-09 17:37:20 +08:00
|
|
|
<el-form-item label="安装日期:">
|
|
|
|
<el-date-picker
|
|
|
|
v-model="editDeviceData.installDate"
|
2024-07-12 14:33:48 +08:00
|
|
|
type="date"
|
|
|
|
style="width: 200px"
|
2024-07-09 17:37:20 +08:00
|
|
|
placeholder="请输入安装日期"
|
|
|
|
:size="size"
|
2024-07-12 14:33:48 +08:00
|
|
|
format="YYYY-MM-DD"
|
|
|
|
value-format="YYYY-MM-DD"
|
2024-07-09 17:37:20 +08:00
|
|
|
/>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
2024-10-15 17:53:46 +08:00
|
|
|
<el-col :span="12">
|
2024-10-16 17:38:35 +08:00
|
|
|
<el-form-item :label="editDeviceData.objectType == '风电场' ? '装机容量(MW):' : '额定容量(MW):'">
|
2024-10-15 17:53:46 +08:00
|
|
|
<el-input-number
|
|
|
|
style="width: 200px"
|
|
|
|
:controls="false"
|
|
|
|
:placeholder="editDeviceData.objectType == '风电场' ? '请输入装机容量' : '请输入额定容量'"
|
|
|
|
v-model="editDeviceData.nominalCapacity"
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
2024-07-11 15:30:24 +08:00
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col>
|
2024-07-09 17:37:20 +08:00
|
|
|
<el-form-item label="备注:">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-input
|
|
|
|
v-model="editDeviceData.remarks"
|
2024-07-11 18:11:30 +08:00
|
|
|
style="width: 530px"
|
2024-07-10 19:40:24 +08:00
|
|
|
:rows="2"
|
|
|
|
type="textarea"
|
|
|
|
placeholder="请输入备注"
|
|
|
|
clearable
|
|
|
|
/>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-form>
|
|
|
|
|
|
|
|
<template #footer>
|
|
|
|
<div class="dialog-footer">
|
2024-10-21 17:16:24 +08:00
|
|
|
<el-button type="primary" @click="editDeviceDialog = false">取消</el-button>
|
|
|
|
<el-button @click="saveData">提交</el-button>
|
2024-07-03 16:57:44 +08:00
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</el-dialog>
|
|
|
|
<!-- 新增设备详情页面 -->
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-dialog v-model="editAddDeviceDialog" title="新增设备台账" width="720" :before-close="handleCloseAddEditDevice">
|
2024-07-03 16:57:44 +08:00
|
|
|
<el-form
|
|
|
|
ref="modifyAddDeviceDetails"
|
|
|
|
:inline="true"
|
|
|
|
label-width="auto"
|
|
|
|
:model="editAddDeviceData"
|
|
|
|
:rules="editAddDeviceRules"
|
2024-07-10 19:40:24 +08:00
|
|
|
style="padding: 5px 15px; font-size: 14px; line-height: 1.5; word-wrap: break-word; font-size: 20px"
|
2024-07-03 16:57:44 +08:00
|
|
|
>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="12">
|
|
|
|
<el-form-item label="设备类型:">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-input v-model="editAddDeviceData.objectType" disabled placeholder="请输入设备类型" clearable />
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-form-item label="物模型:">
|
|
|
|
<el-select v-model="editAddDeviceData.iotModelId" placeholder="请选择物模型" style="width: 200px">
|
|
|
|
<el-option v-for="item in equipModeData" :key="item.id" :label="item.iotModelName" :value="item.id" />
|
|
|
|
</el-select>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="12">
|
|
|
|
<el-form-item label="设备名称:" prop="name">
|
|
|
|
<el-input v-model="editAddDeviceData.name" placeholder="请输入设备名称" clearable />
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
|
|
<el-form-item label="设备编码:" prop="code">
|
2024-07-11 18:11:30 +08:00
|
|
|
<el-input v-model="editAddDeviceData.code" style="width: 200px" placeholder="请输入设备编码" clearable />
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="12">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-form-item label="生产厂家:">
|
|
|
|
<el-input v-model="editAddDeviceData.madeinFactory" placeholder="请输入生产厂家" clearable />
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-form-item label="规格型号:">
|
2024-07-11 18:11:30 +08:00
|
|
|
<el-input v-model="editAddDeviceData.model" style="width: 200px" placeholder="请输入规格型号" clearable />
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="12">
|
2024-07-11 15:30:24 +08:00
|
|
|
<el-form-item label="管理部门:" prop="madeinFactory">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-tree-select
|
|
|
|
v-model="editAddDeviceData.orgId"
|
|
|
|
lazy
|
|
|
|
:load="treeSelectLoad"
|
|
|
|
:props="treeSelectProps"
|
|
|
|
check-strictly
|
2024-07-11 18:11:30 +08:00
|
|
|
style="width: 190px"
|
2024-07-10 19:40:24 +08:00
|
|
|
/>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
2024-10-15 17:53:46 +08:00
|
|
|
|
2024-10-15 16:20:18 +08:00
|
|
|
<el-col :span="12" v-if="editAddDeviceData.objectType !== '风电场'">
|
2024-10-15 10:11:07 +08:00
|
|
|
<el-form-item label="所属风电场:">
|
2024-07-11 15:30:24 +08:00
|
|
|
<el-tree-select
|
2024-07-12 11:20:14 +08:00
|
|
|
:disabled="editAddDeviceData.objectType === '风电场'"
|
2024-10-15 10:11:07 +08:00
|
|
|
:placeholder="editAddDeviceData.objectType === '风电场' ? '无' : '请选择所属风电场'"
|
2024-07-11 15:30:24 +08:00
|
|
|
v-model="editAddDeviceData.parentEquipmentId"
|
|
|
|
:data="belongingEquipment"
|
|
|
|
:props="defaultEquipmentProps"
|
|
|
|
:render-after-expand="false"
|
2024-07-12 14:33:48 +08:00
|
|
|
check-strictly
|
2024-07-11 15:30:24 +08:00
|
|
|
style="width: 200px"
|
|
|
|
/>
|
2024-07-10 19:40:24 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
2024-10-15 16:20:18 +08:00
|
|
|
<el-col :span="12" v-if="editAddDeviceData.objectType !== '风电场'">
|
2024-10-15 10:11:07 +08:00
|
|
|
<el-form-item label="所属线路:">
|
2024-10-15 14:52:29 +08:00
|
|
|
<el-input placeholder="请输入所属线路" v-model="editAddDeviceData.belongLine" style="width: 200px" />
|
2024-10-15 10:11:07 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
2024-10-15 16:20:18 +08:00
|
|
|
<el-col :span="12" v-if="editAddDeviceData.objectType !== '风电场'">
|
2024-10-15 10:11:07 +08:00
|
|
|
<el-form-item label="标杆机组:">
|
2024-10-15 14:52:29 +08:00
|
|
|
<el-switch
|
|
|
|
@change="addhandleSwitchChange"
|
|
|
|
:active-value="1"
|
|
|
|
:inactive-value="0"
|
|
|
|
v-model="editAddDeviceData.standard"
|
|
|
|
/>
|
2024-10-15 10:11:07 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
2024-07-10 19:40:24 +08:00
|
|
|
</el-row>
|
|
|
|
<el-row>
|
2024-07-03 16:57:44 +08:00
|
|
|
<el-col :span="12">
|
2024-07-09 17:37:20 +08:00
|
|
|
<el-form-item label="安装位置:">
|
2024-07-11 18:11:30 +08:00
|
|
|
<el-input v-model="editAddDeviceData.location" style="width: 570px" placeholder="请输入安装位置" clearable />
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="12">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-form-item label="经度:" prop="longitude">
|
2024-07-11 18:11:30 +08:00
|
|
|
<el-input-number
|
|
|
|
v-model="editAddDeviceData.longitude"
|
|
|
|
style="width: 200px"
|
2024-07-12 11:20:14 +08:00
|
|
|
:controls="false"
|
2024-07-11 18:11:30 +08:00
|
|
|
placeholder="请输入经度"
|
|
|
|
controls-position="right"
|
|
|
|
/>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-form-item label="纬度:" prop="latitude">
|
2024-07-11 18:11:30 +08:00
|
|
|
<el-input-number
|
|
|
|
v-model="editAddDeviceData.latitude"
|
|
|
|
style="width: 200px"
|
2024-07-12 11:20:14 +08:00
|
|
|
:controls="false"
|
2024-07-11 18:11:30 +08:00
|
|
|
placeholder="请输入纬度"
|
|
|
|
controls-position="right"
|
|
|
|
/>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
2024-10-15 17:53:46 +08:00
|
|
|
<el-col :span="12">
|
2024-07-09 17:37:20 +08:00
|
|
|
<el-form-item label="安装日期:">
|
2024-07-03 16:57:44 +08:00
|
|
|
<el-date-picker
|
2024-07-09 17:37:20 +08:00
|
|
|
v-model="editAddDeviceData.installDate"
|
2024-07-12 14:33:48 +08:00
|
|
|
type="date"
|
|
|
|
style="width: 200px"
|
2024-07-09 17:37:20 +08:00
|
|
|
placeholder="请输入安装日期"
|
2024-07-03 16:57:44 +08:00
|
|
|
:size="size"
|
2024-07-12 14:33:48 +08:00
|
|
|
format="YYYY-MM-DD"
|
|
|
|
value-format="YYYY-MM-DD"
|
2024-07-03 16:57:44 +08:00
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
2024-10-15 17:53:46 +08:00
|
|
|
<el-col :span="12">
|
2024-10-16 17:38:35 +08:00
|
|
|
<el-form-item :label="editAddDeviceData.objectType == '风电场' ? '装机容量(MW):' : '额定容量(MW):'">
|
2024-10-15 17:53:46 +08:00
|
|
|
<el-input-number
|
|
|
|
style="width: 200px"
|
|
|
|
:controls="false"
|
|
|
|
:placeholder="editAddDeviceData.objectType == '风电场' ? '请输入装机容量' : '请输入额定容量'"
|
|
|
|
v-model="editAddDeviceData.nominalCapacity"
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
2024-07-11 15:30:24 +08:00
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col>
|
2024-07-09 17:37:20 +08:00
|
|
|
<el-form-item label="备注:">
|
2024-07-10 19:40:24 +08:00
|
|
|
<el-input
|
|
|
|
v-model="editAddDeviceData.remarks"
|
2024-07-11 18:11:30 +08:00
|
|
|
style="width: 530px"
|
2024-07-10 19:40:24 +08:00
|
|
|
:rows="2"
|
|
|
|
type="textarea"
|
|
|
|
placeholder="请输入备注"
|
|
|
|
clearable
|
|
|
|
/>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-form>
|
|
|
|
|
|
|
|
<template #footer>
|
|
|
|
<div class="dialog-footer">
|
2024-10-21 17:16:24 +08:00
|
|
|
<el-button type="primary" @click="editAddDeviceDialog = false">取消</el-button>
|
|
|
|
<el-button @click="saveAddData">提交</el-button>
|
2024-07-03 16:57:44 +08:00
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</el-dialog>
|
2024-07-09 17:37:20 +08:00
|
|
|
<!-- 删除弹框 -->
|
|
|
|
<el-dialog v-model="dialogDeviceDeletion" title="操作提示" width="500" :before-close="handleCloseDelete">
|
|
|
|
<span>确定是否删除?</span>
|
|
|
|
<template #footer>
|
|
|
|
<div class="dialog-footer">
|
|
|
|
<el-button @click="dialogDeviceDeletion = false">取消</el-button>
|
2024-10-21 17:16:24 +08:00
|
|
|
<el-button type="primary" @click="dialogDeviceDeletion1">提交</el-button>
|
2024-07-09 17:37:20 +08:00
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</el-dialog>
|
2024-07-03 16:57:44 +08:00
|
|
|
</el-container>
|
2024-10-22 15:15:53 +08:00
|
|
|
<el-dialog v-model="showControlPage">
|
|
|
|
<div class="controlSlot">
|
|
|
|
<ControlPage :deviceId="contorlData.deviceId" :iotModelId="contorlData.iotModelId" :show="showControlPage"></ControlPage>
|
|
|
|
</div>
|
|
|
|
</el-dialog>
|
2024-07-03 16:57:44 +08:00
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
2024-07-11 15:30:24 +08:00
|
|
|
import { ref, reactive, onMounted, nextTick } from 'vue'
|
2024-07-03 16:57:44 +08:00
|
|
|
import { Search, CirclePlusFilled, Upload, Download } from '@element-plus/icons-vue'
|
2024-07-10 19:40:24 +08:00
|
|
|
import {
|
|
|
|
equipTree,
|
|
|
|
equipQuery,
|
|
|
|
equipAdd,
|
|
|
|
equipDelete,
|
|
|
|
equipUpdate,
|
|
|
|
equipImport,
|
|
|
|
equipExport,
|
|
|
|
equipType,
|
|
|
|
equipDetailsModel,
|
|
|
|
equipDetailsOrg,
|
|
|
|
} from '/@/api/backend'
|
2024-07-03 16:57:44 +08:00
|
|
|
import { ElTable, ElMessage, ElMessageBox } from 'element-plus'
|
2024-07-09 17:37:20 +08:00
|
|
|
import { useAdminInfo } from '/@/stores/adminInfo'
|
|
|
|
import { encrypt_aes, generateRandomNumber } from '/@/utils/crypto'
|
2024-10-22 15:15:53 +08:00
|
|
|
import ControlPage from './control.vue'
|
2024-07-03 16:57:44 +08:00
|
|
|
|
2024-07-09 17:37:20 +08:00
|
|
|
const adminInfo = useAdminInfo()
|
2024-07-03 16:57:44 +08:00
|
|
|
interface Tree {
|
|
|
|
label: string
|
|
|
|
children?: Tree[]
|
|
|
|
id: string
|
|
|
|
}
|
|
|
|
|
|
|
|
// 设备左边树
|
|
|
|
const userData = ref()
|
2024-07-11 16:10:51 +08:00
|
|
|
const equipTreeRef = ref()
|
2024-07-10 19:40:24 +08:00
|
|
|
// 设备类型
|
|
|
|
const deviceTypeList = ref()
|
|
|
|
const equipTypeList = () => {
|
|
|
|
equipType().then((res) => {
|
2024-07-11 15:30:24 +08:00
|
|
|
userData.value = res.data
|
2024-07-10 19:40:24 +08:00
|
|
|
deviceTypeList.value = res.data
|
2024-07-11 15:30:24 +08:00
|
|
|
nextTick(() => {
|
2024-07-11 16:10:51 +08:00
|
|
|
equipTreeRef.value?.setCurrentKey(res.data[0]?.equipmentTypeId!, false)
|
2024-07-11 15:30:24 +08:00
|
|
|
formQuery.pageSize = currentPageSize.value
|
|
|
|
formQuery.pageNum = currentPage.value
|
|
|
|
formQuery.objectType = res.data[0].equipmentTypeId
|
|
|
|
equipQuery(formQuery).then((res) => {
|
|
|
|
deviceList.value = res.rows
|
|
|
|
pageTotal.value = res.total
|
|
|
|
})
|
|
|
|
queryParameter.value = res.data[0]
|
2024-07-11 17:36:20 +08:00
|
|
|
equipModeList({
|
|
|
|
objectType: res.data[0].equipmentTypeId,
|
|
|
|
})
|
2024-10-15 10:11:07 +08:00
|
|
|
queryParameter.value.equipmentTypeId = res.data[0].equipmentTypeId
|
2024-07-11 15:30:24 +08:00
|
|
|
})
|
2024-07-10 19:40:24 +08:00
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
// 设备详情物模型
|
|
|
|
const equipModeData = ref()
|
2024-07-11 17:36:20 +08:00
|
|
|
const equipModeList = (data: any) => {
|
|
|
|
equipDetailsModel(data).then((res) => {
|
2024-07-10 19:40:24 +08:00
|
|
|
equipModeData.value = res.data
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
// 设备详情机构列表
|
|
|
|
const equipOrgData = ref()
|
|
|
|
const equipOrgList = () => {
|
|
|
|
equipDetailsOrg({
|
|
|
|
parentOrgId: adminInfo.orgid,
|
|
|
|
}).then((res) => {
|
|
|
|
equipOrgData.value = res.data
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2024-07-11 15:30:24 +08:00
|
|
|
// 所属设备
|
|
|
|
const belongingEquipment = ref()
|
|
|
|
const equipOrgBelonging = () => {
|
|
|
|
equipTree().then((res) => {
|
2024-10-15 10:11:07 +08:00
|
|
|
belongingEquipment.value = filterEquipments(res.data)
|
2024-07-11 15:30:24 +08:00
|
|
|
})
|
|
|
|
}
|
2024-10-15 10:11:07 +08:00
|
|
|
const filterEquipments = (data: any) => {
|
|
|
|
return data
|
|
|
|
.filter((item: any) => item.objectType == 10001)
|
|
|
|
?.map((item: any) => ({
|
|
|
|
...item,
|
|
|
|
equipChildren: filterEquipments(item.equipChildren),
|
|
|
|
}))
|
|
|
|
}
|
2024-07-11 15:30:24 +08:00
|
|
|
|
2024-07-10 19:40:24 +08:00
|
|
|
const treeSelectLoad = (node: any, resolve: any) => {
|
|
|
|
if (node.level === 0) {
|
|
|
|
equipDetailsOrg({
|
|
|
|
parentOrgId: null,
|
|
|
|
}).then((res: any) => {
|
|
|
|
if (!res.data.length) {
|
|
|
|
node.isLeaf = true
|
|
|
|
}
|
|
|
|
|
|
|
|
return resolve(res.data)
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
equipDetailsOrg({ parentOrgId: node.data.id })
|
|
|
|
.then((res: any) => {
|
|
|
|
if (!res.data.length) {
|
|
|
|
node.isLeaf = true
|
|
|
|
}
|
|
|
|
return resolve(res.data)
|
|
|
|
})
|
2024-10-15 10:11:07 +08:00
|
|
|
.catch((err) => {})
|
2024-07-10 19:40:24 +08:00
|
|
|
}
|
|
|
|
}
|
2024-07-03 16:57:44 +08:00
|
|
|
|
2024-07-10 19:40:24 +08:00
|
|
|
const treeSelectProps = {
|
|
|
|
label: 'name',
|
|
|
|
value: 'id',
|
|
|
|
children: 'children',
|
|
|
|
}
|
2024-07-09 17:37:20 +08:00
|
|
|
|
2024-07-11 15:30:24 +08:00
|
|
|
const defaultEquipmentProps = {
|
|
|
|
label: 'name',
|
|
|
|
value: 'id',
|
2024-07-12 11:20:14 +08:00
|
|
|
children: 'equipChildren',
|
2024-07-11 15:30:24 +08:00
|
|
|
}
|
|
|
|
|
2024-07-03 16:57:44 +08:00
|
|
|
onMounted(() => {
|
2024-07-10 19:40:24 +08:00
|
|
|
equipTypeList()
|
|
|
|
equipOrgList()
|
2024-07-11 15:30:24 +08:00
|
|
|
equipOrgBelonging()
|
2024-07-03 16:57:44 +08:00
|
|
|
})
|
|
|
|
|
|
|
|
const formQuery = reactive({
|
2024-07-09 17:37:20 +08:00
|
|
|
pageSize: 0,
|
|
|
|
pageNum: 0,
|
|
|
|
objectType: '',
|
2024-07-03 16:57:44 +08:00
|
|
|
})
|
2024-07-09 17:37:20 +08:00
|
|
|
const queryParameter = ref()
|
|
|
|
const handleNodeClick = (data: any) => {
|
|
|
|
queryParameter.value = data
|
|
|
|
formQuery.pageSize = currentPageSize.value
|
|
|
|
formQuery.pageNum = currentPage.value
|
2024-07-11 15:30:24 +08:00
|
|
|
formQuery.objectType = data.equipmentTypeId
|
2024-07-09 17:37:20 +08:00
|
|
|
equipQuery(formQuery).then((res) => {
|
|
|
|
deviceList.value = res.rows
|
2024-10-15 14:52:29 +08:00
|
|
|
|
2024-07-09 17:37:20 +08:00
|
|
|
pageTotal.value = res.total
|
|
|
|
})
|
2024-07-11 17:36:20 +08:00
|
|
|
equipModeList({
|
|
|
|
objectType: data.equipmentTypeId,
|
|
|
|
})
|
2024-07-03 16:57:44 +08:00
|
|
|
}
|
|
|
|
|
2024-07-09 17:37:20 +08:00
|
|
|
const deviceList = ref()
|
|
|
|
// 设备查询 equipQuery
|
|
|
|
const deviceQuery = (data: any) => {
|
|
|
|
equipQuery(data).then((res) => {
|
|
|
|
deviceList.value = res.rows
|
|
|
|
pageTotal.value = res.total
|
2024-07-03 16:57:44 +08:00
|
|
|
})
|
2024-07-09 17:37:20 +08:00
|
|
|
}
|
2024-07-03 16:57:44 +08:00
|
|
|
|
2024-07-09 17:37:20 +08:00
|
|
|
// 查询按钮
|
|
|
|
// 名字
|
|
|
|
const nameQuery = reactive({
|
2024-07-11 15:30:24 +08:00
|
|
|
objectType: '',
|
2024-07-09 17:37:20 +08:00
|
|
|
pageSize: 0,
|
|
|
|
pageNum: 0,
|
|
|
|
name: '',
|
|
|
|
})
|
|
|
|
// 编号
|
|
|
|
const nameQuery2 = reactive({
|
2024-07-11 15:30:24 +08:00
|
|
|
objectType: '',
|
2024-07-09 17:37:20 +08:00
|
|
|
pageSize: 0,
|
|
|
|
pageNum: 0,
|
|
|
|
code: '',
|
|
|
|
})
|
|
|
|
const deviceTypeQuery = () => {
|
2024-07-11 15:30:24 +08:00
|
|
|
// 名称查询
|
|
|
|
if (headerForm.resource === '1') {
|
|
|
|
nameQuery.objectType = queryParameter.value.equipmentTypeId
|
|
|
|
nameQuery.pageSize = currentPageSize.value
|
|
|
|
nameQuery.pageNum = currentPage.value
|
|
|
|
nameQuery.name = headerForm.searchFor
|
|
|
|
deviceQuery(nameQuery)
|
|
|
|
}
|
|
|
|
// 编码查询
|
|
|
|
if (headerForm.resource === '2') {
|
2024-07-16 14:56:58 +08:00
|
|
|
nameQuery2.objectType = queryParameter.value.equipmentTypeId
|
2024-07-11 15:30:24 +08:00
|
|
|
nameQuery2.pageSize = currentPageSize.value
|
|
|
|
nameQuery2.pageNum = currentPage.value
|
|
|
|
nameQuery2.code = headerForm.searchFor
|
|
|
|
deviceQuery(nameQuery2)
|
2024-07-09 17:37:20 +08:00
|
|
|
}
|
2024-07-03 16:57:44 +08:00
|
|
|
}
|
|
|
|
|
2024-07-09 17:37:20 +08:00
|
|
|
// 分页
|
2024-10-22 15:15:53 +08:00
|
|
|
const pagePagination = [10, 20, 30]
|
2024-07-09 17:37:20 +08:00
|
|
|
const currentPage = ref(1)
|
2024-10-22 14:04:02 +08:00
|
|
|
const currentPageSize = ref(pagePagination[1])
|
2024-07-09 17:37:20 +08:00
|
|
|
const handleSizeChange = (val: number) => {
|
|
|
|
formQuery.pageSize = val
|
|
|
|
deviceQuery(formQuery)
|
|
|
|
}
|
|
|
|
const handleCurrentChange = (val: number) => {
|
|
|
|
formQuery.pageNum = val
|
|
|
|
deviceQuery(formQuery)
|
|
|
|
}
|
|
|
|
const pageTotal = ref(0)
|
2024-07-03 16:57:44 +08:00
|
|
|
const defaultProps = {
|
2024-07-11 15:30:24 +08:00
|
|
|
label: 'equipmentTypeName',
|
2024-07-03 16:57:44 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 头部搜索框按钮功能
|
|
|
|
const headerForm = reactive({
|
|
|
|
searchFor: '',
|
|
|
|
resource: '2',
|
|
|
|
})
|
|
|
|
|
2024-07-09 17:37:20 +08:00
|
|
|
// 新增按钮
|
2024-07-03 16:57:44 +08:00
|
|
|
const addDeviceList = () => {
|
2024-07-12 11:20:14 +08:00
|
|
|
equipOrgBelonging()
|
2024-07-11 15:30:24 +08:00
|
|
|
editAddDeviceDialog.value = true
|
|
|
|
editAddDeviceData.objectType = queryParameter.value.equipmentTypeName
|
|
|
|
editAddDeviceData.code = ''
|
|
|
|
editAddDeviceData.name = ''
|
|
|
|
editAddDeviceData.madeinFactory = ''
|
|
|
|
editAddDeviceData.model = ''
|
|
|
|
editAddDeviceData.location = ''
|
2024-07-12 11:20:14 +08:00
|
|
|
editAddDeviceData.longitude = null
|
|
|
|
editAddDeviceData.latitude = null
|
2024-07-11 15:30:24 +08:00
|
|
|
editAddDeviceData.installDate = ''
|
|
|
|
editAddDeviceData.remarks = ''
|
|
|
|
editAddDeviceData.orgId = ''
|
|
|
|
editAddDeviceData.parentEquipmentId = ''
|
|
|
|
editAddDeviceData.iotModelId = ''
|
2024-10-15 14:52:29 +08:00
|
|
|
editAddDeviceData.belongLine = ''
|
|
|
|
editAddDeviceData.standard = 0
|
2024-10-15 17:53:46 +08:00
|
|
|
editAddDeviceData.nominalCapacity = null
|
2024-07-03 16:57:44 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 查看设备详情
|
|
|
|
const editDeviceDialog = ref(false)
|
|
|
|
|
|
|
|
const editDeviceData = reactive({
|
2024-07-09 17:37:20 +08:00
|
|
|
objectType: '',
|
2024-07-03 16:57:44 +08:00
|
|
|
code: '',
|
2024-07-09 17:37:20 +08:00
|
|
|
name: '',
|
|
|
|
madeinFactory: '',
|
|
|
|
model: '',
|
|
|
|
location: '',
|
2024-07-12 11:20:14 +08:00
|
|
|
longitude: null,
|
|
|
|
latitude: null,
|
2024-07-09 17:37:20 +08:00
|
|
|
installDate: '',
|
|
|
|
remarks: '',
|
|
|
|
orgId: '',
|
|
|
|
parentEquipmentId: '',
|
|
|
|
iotModelId: '',
|
|
|
|
id: '',
|
2024-10-15 14:52:29 +08:00
|
|
|
belongLine: '',
|
|
|
|
standard: 0,
|
2024-10-15 17:53:46 +08:00
|
|
|
nominalCapacity: null,
|
2024-07-03 16:57:44 +08:00
|
|
|
})
|
|
|
|
|
|
|
|
const size = ref<'default' | 'large' | 'small'>('default')
|
|
|
|
|
|
|
|
const handleCloseEditDevice = () => {
|
|
|
|
editDeviceDialog.value = false
|
|
|
|
}
|
|
|
|
|
2024-07-09 17:37:20 +08:00
|
|
|
// 设备查看按钮
|
|
|
|
const viewDeviceDetails = (data: any) => {
|
2024-07-12 11:20:14 +08:00
|
|
|
equipOrgBelonging()
|
2024-07-10 19:40:24 +08:00
|
|
|
modifyDeviceDetails.value?.resetFields()
|
2024-07-03 16:57:44 +08:00
|
|
|
editDeviceDialog.value = true
|
2024-07-09 17:37:20 +08:00
|
|
|
editDeviceData.id = data.row.id
|
2024-07-12 11:20:14 +08:00
|
|
|
editDeviceData.objectType = queryParameter.value.equipmentTypeName
|
2024-07-09 17:37:20 +08:00
|
|
|
editDeviceData.code = data.row.code
|
|
|
|
editDeviceData.name = data.row.name
|
|
|
|
editDeviceData.madeinFactory = data.row.madeinFactory
|
|
|
|
editDeviceData.model = data.row.model
|
|
|
|
editDeviceData.location = data.row.location
|
|
|
|
editDeviceData.longitude = data.row.longitude
|
|
|
|
editDeviceData.latitude = data.row.latitude
|
|
|
|
editDeviceData.installDate = data.row.installDate
|
|
|
|
editDeviceData.remarks = data.row.remarks
|
|
|
|
editDeviceData.orgId = data.row.orgId
|
|
|
|
editDeviceData.parentEquipmentId = data.row.parentEquipmentId
|
|
|
|
editDeviceData.iotModelId = data.row.iotModelId
|
2024-10-15 14:52:29 +08:00
|
|
|
editDeviceData.belongLine = data.row.belongLine
|
|
|
|
editDeviceData.standard = data.row.standard || 0
|
2024-10-15 17:53:46 +08:00
|
|
|
editDeviceData.nominalCapacity = data.row.nominalCapacity
|
2024-07-09 17:37:20 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 设备删除
|
|
|
|
const dialogDeviceDeletion = ref(false)
|
|
|
|
const deviceDeletion = (data: any) => {
|
|
|
|
dialogDeviceDeletion.value = true
|
|
|
|
del.id = data.row.id
|
|
|
|
}
|
|
|
|
// 弹框
|
|
|
|
const handleCloseDelete = () => {
|
|
|
|
dialogDeviceDeletion.value = false
|
|
|
|
}
|
|
|
|
|
|
|
|
// 确认
|
|
|
|
const del = {
|
|
|
|
id: '',
|
|
|
|
}
|
|
|
|
const dialogDeviceDeletion1 = () => {
|
|
|
|
equipDelete(del).then((res) => {
|
|
|
|
if (res.code == 200) {
|
|
|
|
ElMessage({
|
|
|
|
message: res.msg,
|
|
|
|
type: 'success',
|
|
|
|
})
|
|
|
|
dialogDeviceDeletion.value = false
|
|
|
|
deviceQuery(formQuery)
|
|
|
|
} else {
|
|
|
|
ElMessage.error({
|
|
|
|
message: res.msg,
|
|
|
|
type: 'error',
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
2024-07-03 16:57:44 +08:00
|
|
|
}
|
2024-07-10 19:40:24 +08:00
|
|
|
const longitudePass = (rule: any, value: any, callback: any) => {
|
|
|
|
if (!value) {
|
|
|
|
callback()
|
|
|
|
}
|
|
|
|
if (value >= 73.66 && value <= 135.05) {
|
|
|
|
callback()
|
|
|
|
} else {
|
|
|
|
callback(new Error('请输入73.66~135.05之间的数字'))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const latitudePass = (rule: any, value: any, callback: any) => {
|
|
|
|
if (!value) {
|
|
|
|
callback()
|
|
|
|
}
|
|
|
|
if (value >= 3.86 && value <= 53.55) {
|
|
|
|
callback()
|
|
|
|
} else {
|
|
|
|
callback(new Error('请输入3.86~53.55之间的数字'))
|
|
|
|
}
|
|
|
|
}
|
2024-07-03 16:57:44 +08:00
|
|
|
|
|
|
|
const editDeviceRules = reactive({
|
2024-07-10 19:40:24 +08:00
|
|
|
name: [
|
|
|
|
{
|
|
|
|
required: true,
|
|
|
|
message: '设备名称不能为空',
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
code: [
|
|
|
|
{
|
|
|
|
required: true,
|
|
|
|
message: '设备编码不能为空',
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
longitude: [{ validator: longitudePass, trigger: 'blur' }],
|
|
|
|
latitude: [{ validator: latitudePass, trigger: 'blur' }],
|
2024-07-03 16:57:44 +08:00
|
|
|
})
|
|
|
|
const modifyDeviceDetails = ref()
|
|
|
|
const saveData = () => {
|
|
|
|
modifyDeviceDetails.value.validate((valid: any) => {
|
|
|
|
if (valid) {
|
2024-07-10 19:40:24 +08:00
|
|
|
deviceTypeList.value.forEach((ele: any) => {
|
2024-07-12 14:33:48 +08:00
|
|
|
if (ele.equipmentTypeName === editDeviceData.objectType) {
|
|
|
|
editDeviceData.objectType = ele.equipmentTypeId
|
2024-07-10 19:40:24 +08:00
|
|
|
}
|
|
|
|
})
|
2024-10-16 15:04:53 +08:00
|
|
|
equipUpdate(editDeviceData)
|
|
|
|
.then((res: any) => {
|
|
|
|
if (res.code == 200) {
|
|
|
|
ElMessage({
|
|
|
|
message: res.msg,
|
|
|
|
type: 'success',
|
|
|
|
})
|
|
|
|
deviceQuery(formQuery)
|
|
|
|
} else {
|
|
|
|
ElMessage.error({
|
|
|
|
message: res.msg,
|
|
|
|
type: 'error',
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.catch((err) => {
|
2024-07-09 17:37:20 +08:00
|
|
|
ElMessage.error({
|
2024-10-16 15:04:53 +08:00
|
|
|
message: err.response?.data?.msg ?? '编辑失败!',
|
2024-07-09 17:37:20 +08:00
|
|
|
type: 'error',
|
|
|
|
})
|
2024-10-16 15:04:53 +08:00
|
|
|
})
|
2024-07-03 16:57:44 +08:00
|
|
|
} else {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
})
|
2024-07-09 17:37:20 +08:00
|
|
|
editDeviceDialog.value = false
|
2024-07-03 16:57:44 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 新增设备
|
|
|
|
const editAddDeviceData = reactive({
|
2024-07-09 17:37:20 +08:00
|
|
|
objectType: '',
|
2024-07-03 16:57:44 +08:00
|
|
|
code: '',
|
2024-07-09 17:37:20 +08:00
|
|
|
name: '',
|
|
|
|
madeinFactory: '',
|
|
|
|
model: '',
|
|
|
|
location: '',
|
2024-07-12 11:20:14 +08:00
|
|
|
longitude: null,
|
|
|
|
latitude: null,
|
2024-07-09 17:37:20 +08:00
|
|
|
installDate: '',
|
|
|
|
remarks: '',
|
|
|
|
orgId: '',
|
|
|
|
parentEquipmentId: '',
|
|
|
|
iotModelId: '',
|
2024-10-15 14:52:29 +08:00
|
|
|
belongLine: '',
|
|
|
|
standard: 0,
|
2024-10-15 17:53:46 +08:00
|
|
|
nominalCapacity: null,
|
2024-07-03 16:57:44 +08:00
|
|
|
})
|
2024-10-15 14:52:29 +08:00
|
|
|
const addhandleSwitchChange = (value: any) => {
|
|
|
|
editAddDeviceData.standard = value ? 1 : 0
|
|
|
|
}
|
|
|
|
const edithandleSwitchChange = (value: any) => {
|
|
|
|
editDeviceData.standard = value ? 1 : 0
|
|
|
|
}
|
2024-07-03 16:57:44 +08:00
|
|
|
|
2024-07-09 17:37:20 +08:00
|
|
|
// 设备新增字段校验
|
2024-07-03 16:57:44 +08:00
|
|
|
const editAddDeviceRules = reactive({
|
2024-07-10 19:40:24 +08:00
|
|
|
name: [
|
|
|
|
{
|
|
|
|
required: true,
|
|
|
|
message: '设备名称不能为空',
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
code: [
|
|
|
|
{
|
|
|
|
required: true,
|
|
|
|
message: '设备编码不能为空',
|
|
|
|
trigger: 'blur',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
longitude: [{ validator: longitudePass, trigger: 'blur' }],
|
|
|
|
latitude: [{ validator: latitudePass, trigger: 'blur' }],
|
2024-07-03 16:57:44 +08:00
|
|
|
})
|
|
|
|
|
|
|
|
const editAddDeviceDialog = ref(false)
|
|
|
|
const modifyAddDeviceDetails = ref()
|
|
|
|
const saveAddData = () => {
|
|
|
|
modifyAddDeviceDetails.value.validate((valid: any) => {
|
|
|
|
if (valid) {
|
2024-07-10 19:40:24 +08:00
|
|
|
deviceTypeList.value.forEach((ele: any) => {
|
|
|
|
if (ele.equipmentTypeName === editAddDeviceData.objectType) {
|
2024-07-11 15:30:24 +08:00
|
|
|
editAddDeviceData.objectType = ele.equipmentTypeId
|
2024-07-10 19:40:24 +08:00
|
|
|
}
|
|
|
|
})
|
2024-10-16 15:04:53 +08:00
|
|
|
equipAdd(editAddDeviceData)
|
|
|
|
.then((res) => {
|
|
|
|
if (res.code == 200) {
|
|
|
|
ElMessage({
|
|
|
|
message: res.msg,
|
|
|
|
type: 'success',
|
|
|
|
})
|
|
|
|
deviceQuery(formQuery)
|
|
|
|
} else {
|
|
|
|
ElMessage.error({
|
|
|
|
message: res.msg,
|
|
|
|
type: 'error',
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.catch((err) => {
|
2024-07-09 17:37:20 +08:00
|
|
|
ElMessage.error({
|
2024-10-16 15:04:53 +08:00
|
|
|
message: err.response?.data?.msg ?? '新增失败!',
|
2024-07-09 17:37:20 +08:00
|
|
|
type: 'error',
|
|
|
|
})
|
2024-10-16 15:04:53 +08:00
|
|
|
})
|
2024-07-03 16:57:44 +08:00
|
|
|
editAddDeviceDialog.value = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
const handleCloseAddEditDevice = () => {
|
|
|
|
editAddDeviceDialog.value = false
|
|
|
|
}
|
2024-07-09 17:37:20 +08:00
|
|
|
// 导入
|
|
|
|
const upLoadModel = (file: any) => {
|
|
|
|
const formData = new FormData()
|
|
|
|
formData.append('file', file.file)
|
|
|
|
const v = generateRandomNumber(16)
|
2024-07-16 14:56:58 +08:00
|
|
|
const id = encrypt_aes(queryParameter.value.equipmentTypeId, v)
|
2024-07-09 17:37:20 +08:00
|
|
|
formData.append('id', id)
|
|
|
|
return equipImport(formData, v)
|
|
|
|
.then((res: any) => {
|
|
|
|
if (res.success) {
|
|
|
|
ElMessage.success('上传设备成功')
|
|
|
|
deviceQuery(formQuery)
|
|
|
|
} else {
|
|
|
|
ElMessage.error(res.msg)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.catch((err) => {
|
|
|
|
ElMessage.error(err?.response?.data?.msg ?? '上传失败')
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
// 导出
|
|
|
|
const Export = () => {
|
2024-07-16 14:56:58 +08:00
|
|
|
equipExport({ objectType: queryParameter.value.equipmentTypeId }).then((res: any) => {
|
2024-07-09 17:37:20 +08:00
|
|
|
const downloadUrl = window.URL.createObjectURL(res)
|
|
|
|
const a = document.createElement('a')
|
|
|
|
a.href = downloadUrl
|
|
|
|
a.download = '设备' + new Date().getTime()
|
|
|
|
document.body.appendChild(a)
|
|
|
|
a.click()
|
|
|
|
window.URL.revokeObjectURL(downloadUrl)
|
|
|
|
document.body.removeChild(a)
|
|
|
|
})
|
|
|
|
}
|
2024-10-22 14:04:02 +08:00
|
|
|
|
2024-10-22 15:15:53 +08:00
|
|
|
const showControlPage = ref(false)
|
|
|
|
const contorlData = reactive({
|
|
|
|
deviceId: '',
|
|
|
|
iotModelId: '',
|
|
|
|
})
|
2024-10-22 14:04:02 +08:00
|
|
|
const openControl = (data: any) => {
|
2024-10-22 15:15:53 +08:00
|
|
|
contorlData.deviceId = data.row.id
|
|
|
|
contorlData.iotModelId = data.row.iotModelId
|
|
|
|
if(contorlData.iotModelId){
|
|
|
|
showControlPage.value = true
|
|
|
|
}else{
|
|
|
|
ElMessage.warning('该设备没有绑定物模型!')
|
|
|
|
}
|
2024-10-22 14:04:02 +08:00
|
|
|
}
|
2024-07-03 16:57:44 +08:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
.el-col {
|
|
|
|
// border-radius: 4px;
|
|
|
|
background-color: #fff;
|
|
|
|
}
|
|
|
|
@mixin searchInput($value) {
|
|
|
|
margin-right: $value;
|
|
|
|
width: 220px;
|
|
|
|
height: 40px;
|
|
|
|
}
|
2024-07-09 17:37:20 +08:00
|
|
|
$headerHeight: 60px;
|
|
|
|
$defaultBackgroundColor: #fff;
|
2024-07-03 16:57:44 +08:00
|
|
|
$defaultHeaderHeight: 60px;
|
2024-07-09 17:37:20 +08:00
|
|
|
$defaultAsideWidth: 260px;
|
2024-07-03 16:57:44 +08:00
|
|
|
$defaultMainHeight: calc(100% - 60px);
|
|
|
|
$paginationHeight: 32px;
|
|
|
|
.ba-user-container {
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
// background-color: #fff;
|
|
|
|
.defaultContainer {
|
2024-07-09 17:37:20 +08:00
|
|
|
width: 100%;
|
2024-07-03 16:57:44 +08:00
|
|
|
height: 100%;
|
|
|
|
.defaultAside {
|
|
|
|
width: 260px;
|
|
|
|
height: 100%;
|
|
|
|
border-right: 1px solid #eaebed;
|
|
|
|
.treeHeader {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
height: $defaultHeaderHeight;
|
|
|
|
.searchInput {
|
2024-07-09 17:37:20 +08:00
|
|
|
height: 40px;
|
2024-07-03 16:57:44 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
.treeMain {
|
2024-07-09 17:37:20 +08:00
|
|
|
height: calc(100% - $headerHeight);
|
|
|
|
overflow-y: auto;
|
2024-07-03 16:57:44 +08:00
|
|
|
.treePart {
|
|
|
|
height: 100%;
|
2024-07-09 17:37:20 +08:00
|
|
|
background-color: $defaultBackgroundColor;
|
2024-07-03 16:57:44 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.defaultMainContainer {
|
2024-07-09 17:37:20 +08:00
|
|
|
width: calc(100% - $defaultAsideWidth);
|
2024-07-03 16:57:44 +08:00
|
|
|
height: 100%;
|
|
|
|
.defaultHeader {
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-between;
|
|
|
|
align-items: center;
|
2024-07-09 17:37:20 +08:00
|
|
|
height: $headerHeight;
|
|
|
|
padding: 0 20px;
|
|
|
|
border-bottom: 1px solid #eaebed;
|
2024-07-03 16:57:44 +08:00
|
|
|
.searchPart {
|
2024-07-09 17:37:20 +08:00
|
|
|
height: 40px;
|
|
|
|
width: 220px;
|
2024-07-03 16:57:44 +08:00
|
|
|
}
|
|
|
|
.defaultBtn {
|
|
|
|
width: 88px;
|
|
|
|
height: 40px;
|
|
|
|
}
|
|
|
|
.searchInput {
|
|
|
|
@include searchInput(10px);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.defaultMain {
|
|
|
|
height: $defaultMainHeight;
|
|
|
|
.tablePart {
|
|
|
|
height: calc(100% - $paginationHeight);
|
|
|
|
}
|
|
|
|
.tableOperate {
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
align-items: center;
|
|
|
|
a {
|
|
|
|
margin: 5px;
|
|
|
|
color: #0064aa;
|
|
|
|
font-weight: 600;
|
|
|
|
&:hover {
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|