소스 검색

物模型界面调整

lv.wenbin 10 달 전
부모
커밋
c40cee5660

+ 53 - 0
ems-ui/src/api/basecfg/component.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询能源设备部件列表
+export function listComponent(query) {
+  return request({
+    url: '/ems/device/component/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 根据设备code查询设备下的部件
+export function listByDevice(deviceCode) {
+  return request({
+    url: '/ems/device/component/listByDevice?deviceCode=' + deviceCode,
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询能源设备部件详细
+export function getComponent(id) {
+  return request({
+    url: '/ems/device/component/' + id,
+    method: 'get'
+  })
+}
+
+// 新增能源设备部件
+export function addComponent(data) {
+  return request({
+    url: '/ems/device/component',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改能源设备部件
+export function updateComponent(data) {
+  return request({
+    url: '/ems/device/component',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除能源设备部件
+export function delComponent(id) {
+  return request({
+    url: '/ems/device/component/' + id,
+    method: 'delete'
+  })
+}

+ 53 - 0
ems-ui/src/api/basecfg/objAbility.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询能源对象能力列表
+export function listAbility(query) {
+  return request({
+    url: '/ems/object/ability/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询能源对象能力详细
+export function getAbility(id) {
+  return request({
+    url: '/ems/object/ability/' + id,
+    method: 'get'
+  })
+}
+
+// 新增能源对象能力
+export function addAbility(data) {
+  return request({
+    url: '/ems/object/ability',
+    method: 'post',
+    data: data
+  })
+}
+
+// 批量-新增能源对象能力批量
+export function addAbilityBatch(data) {
+  return request({
+    url: '/ems/object/ability/batch',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改能源对象能力
+export function updateAbility(data) {
+  return request({
+    url: '/ems/object/ability',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除能源对象能力
+export function delAbility(id) {
+  return request({
+    url: '/ems/object/ability/' + id,
+    method: 'delete'
+  })
+}

+ 53 - 0
ems-ui/src/api/basecfg/objAttribute.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询能源对象属性列表
+export function listAttr(query) {
+  return request({
+    url: '/ems/obj/attr/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询能源对象属性详细
+export function getAttr(id) {
+  return request({
+    url: '/ems/obj/attr/' + id,
+    method: 'get'
+  })
+}
+
+// 新增能源对象属性
+export function addAttr(data) {
+  return request({
+    url: '/ems/obj/attr',
+    method: 'post',
+    data: data
+  })
+}
+
+// 批量-新增能源对象属性
+export function addAttrBatch(data) {
+  return request({
+    url: '/ems/obj/attr/batch',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改能源对象属性
+export function updateAttr(data) {
+  return request({
+    url: '/ems/obj/attr',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除能源对象属性
+export function delAttr(id) {
+  return request({
+    url: '/ems/obj/attr/' + id,
+    method: 'delete'
+  })
+}

+ 53 - 0
ems-ui/src/api/basecfg/objEvent.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询能源对象事件列表
+export function listEvent(query) {
+  return request({
+    url: '/ems/object/event/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询能源对象事件详细
+export function getEvent(id) {
+  return request({
+    url: '/ems/object/event/' + id,
+    method: 'get'
+  })
+}
+
+// 新增能源对象事件
+export function addEvent(data) {
+  return request({
+    url: '/ems/object/event',
+    method: 'post',
+    data: data
+  })
+}
+
+// 批量-新增能源对象事件
+export function addEventBatch(data) {
+  return request({
+    url: '/ems/object/event/batch',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改能源对象事件
+export function updateEvent(data) {
+  return request({
+    url: '/ems/object/event',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除能源对象事件
+export function delEvent(id) {
+  return request({
+    url: '/ems/object/event/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
ems-ui/src/api/basecfg/objModel.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询能源对象属性列表
+export function listModel(query) {
+  return request({
+    url: '/ems/object/model/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询能源对象属性详细
+export function getModel(id) {
+  return request({
+    url: '/ems/object/model/' + id,
+    method: 'get'
+  })
+}
+
+// 新增能源对象属性
+export function addModel(data) {
+  return request({
+    url: '/ems/object/model',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改能源对象属性
+export function updateModel(data) {
+  return request({
+    url: '/ems/object/model',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除能源对象属性
+export function delModel(id) {
+  return request({
+    url: '/ems/object/model/' + id,
+    method: 'delete'
+  })
+}

+ 294 - 0
ems-ui/src/views/basecfg/device/ability.vue

@@ -0,0 +1,294 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="模型code" prop="modelCode">
+        <el-input
+          v-model="queryParams.modelCode"
+          placeholder="请输入模型code"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="能力键" prop="abilityKey">
+        <el-input
+          v-model="queryParams.abilityKey"
+          placeholder="请输入能力键"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="能力名称" prop="abilityName">
+        <el-input
+          v-model="queryParams.abilityName"
+          placeholder="请输入能力名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['ems:ability:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['ems:ability:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['ems:ability:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['ems:ability:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="abilityList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="序号" align="center" prop="id" />
+      <el-table-column label="模型code" align="center" prop="modelCode" />
+      <el-table-column label="能力键" align="center" prop="abilityKey" />
+      <el-table-column label="能力名称" align="center" prop="abilityName" />
+      <el-table-column label="能力描述" align="center" prop="abilityDesc" />
+      <el-table-column label="能力参数" align="center" prop="abilityParam" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['ems:ability:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['ems:ability:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改能源对象能力对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="模型code" prop="modelCode">
+          <el-input v-model="form.modelCode" placeholder="请输入模型code" />
+        </el-form-item>
+        <el-form-item label="能力键" prop="abilityKey">
+          <el-input v-model="form.abilityKey" placeholder="请输入能力键" />
+        </el-form-item>
+        <el-form-item label="能力名称" prop="abilityName">
+          <el-input v-model="form.abilityName" placeholder="请输入能力名称" />
+        </el-form-item>
+        <el-form-item label="能力描述" prop="abilityDesc">
+          <el-input v-model="form.abilityDesc" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="能力参数" prop="abilityParam">
+          <el-input v-model="form.abilityParam" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listAbility, getAbility, delAbility, addAbility, updateAbility } from "@/api/basecfg/objAbility";
+
+export default {
+  name: "Ability",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 能源对象能力表格数据
+      abilityList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        modelCode: null,
+        abilityKey: null,
+        abilityName: null,
+        abilityDesc: null,
+        abilityParam: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        modelCode: [
+          { required: true, message: "模型code不能为空", trigger: "blur" }
+        ],
+        abilityKey: [
+          { required: true, message: "能力键不能为空", trigger: "blur" }
+        ],
+        abilityName: [
+          { required: true, message: "能力名称不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询能源对象能力列表 */
+    getList() {
+      this.loading = true;
+      listAbility(this.queryParams).then(response => {
+        this.abilityList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        modelCode: null,
+        abilityKey: null,
+        abilityName: null,
+        abilityDesc: null,
+        abilityParam: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加能源对象能力";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getAbility(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改能源对象能力";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateAbility(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addAbility(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除能源对象能力编号为"' + ids + '"的数据项?').then(function() {
+        return delAbility(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('ems/ability/export', {
+        ...this.queryParams
+      }, `ability_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 302 - 0
ems-ui/src/views/basecfg/device/attribute.vue

@@ -0,0 +1,302 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="模型code" prop="modelCode">
+        <el-input
+          v-model="queryParams.modelCode"
+          placeholder="请输入模型code"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="属性标识" prop="attrKey">
+        <el-input
+          v-model="queryParams.attrKey"
+          placeholder="请输入属性标识"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="属性名称" prop="attrName">
+        <el-input
+          v-model="queryParams.attrName"
+          placeholder="请输入属性名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="属性单位" prop="attrUnit">
+        <el-input
+          v-model="queryParams.attrUnit"
+          placeholder="请输入属性单位"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['ems:attr:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['ems:attr:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['ems:attr:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['ems:attr:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="attrList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="序号" align="center" prop="id" />
+      <el-table-column label="模型code" align="center" prop="modelCode" />
+      <el-table-column label="属性标识" align="center" prop="attrKey" />
+      <el-table-column label="属性名称" align="center" prop="attrName" />
+      <el-table-column label="属性值" align="center" prop="attrValue" />
+      <el-table-column label="属性单位" align="center" prop="attrUnit" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['ems:attr:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['ems:attr:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改能源对象属性对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="模型code" prop="modelCode">
+          <el-input v-model="form.modelCode" placeholder="请输入模型code" />
+        </el-form-item>
+        <el-form-item label="属性标识" prop="attrKey">
+          <el-input v-model="form.attrKey" placeholder="请输入属性标识" />
+        </el-form-item>
+        <el-form-item label="属性名称" prop="attrName">
+          <el-input v-model="form.attrName" placeholder="请输入属性名称" />
+        </el-form-item>
+        <el-form-item label="属性值" prop="attrValue">
+          <el-input v-model="form.attrValue" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="属性单位" prop="attrUnit">
+          <el-input v-model="form.attrUnit" placeholder="请输入属性单位" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listAttr, getAttr, delAttr, addAttr, updateAttr } from "@/api/basecfg/objAttribute";
+
+export default {
+  name: "Attr",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 能源对象属性表格数据
+      attrList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        modelCode: null,
+        attrKey: null,
+        attrName: null,
+        attrValue: null,
+        attrUnit: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        modelCode: [
+          { required: true, message: "模型code不能为空", trigger: "blur" }
+        ],
+        attrKey: [
+          { required: true, message: "属性标识不能为空", trigger: "blur" }
+        ],
+        attrName: [
+          { required: true, message: "属性名称不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询能源对象属性列表 */
+    getList() {
+      this.loading = true;
+      listAttr(this.queryParams).then(response => {
+        this.attrList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        modelCode: null,
+        attrKey: null,
+        attrName: null,
+        attrValue: null,
+        attrUnit: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加能源对象属性";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getAttr(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改能源对象属性";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateAttr(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addAttr(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除能源对象属性编号为"' + ids + '"的数据项?').then(function() {
+        return delAttr(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('ems/attr/export', {
+        ...this.queryParams
+      }, `attr_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 346 - 0
ems-ui/src/views/basecfg/device/component.vue

@@ -0,0 +1,346 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="设备编码" prop="deviceCode">
+        <el-input
+          v-model="queryParams.deviceCode"
+          placeholder="请输入设备编码"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="部件编码" prop="compoCode">
+        <el-input
+          v-model="queryParams.compoCode"
+          placeholder="请输入部件编码"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="外部系统编码" prop="extCompoCode">
+        <el-input
+          v-model="queryParams.extCompoCode"
+          placeholder="请输入外部系统编码"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="部件模型" prop="compoModel">
+        <el-input
+          v-model="queryParams.compoModel"
+          placeholder="请输入部件模型"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="部件品牌" prop="compoBrand">
+        <el-input
+          v-model="queryParams.compoBrand"
+          placeholder="请输入部件品牌"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="部件型号" prop="compoSpec">
+        <el-input
+          v-model="queryParams.compoSpec"
+          placeholder="请输入部件型号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="祖籍列表" prop="ancestors">
+        <el-input
+          v-model="queryParams.ancestors"
+          placeholder="请输入祖籍列表"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="上级部件" prop="parentCompo">
+        <el-input
+          v-model="queryParams.parentCompo"
+          placeholder="请输入上级部件"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['ems:component:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['ems:component:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['ems:component:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['ems:component:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="componentList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="序号" align="center" prop="id" />
+      <el-table-column label="设备编码" align="center" prop="deviceCode" />
+      <el-table-column label="部件编码" align="center" prop="compoCode" />
+      <el-table-column label="外部系统编码" align="center" prop="extCompoCode" />
+      <el-table-column label="部件模型" align="center" prop="compoModel" />
+      <el-table-column label="部件品牌" align="center" prop="compoBrand" />
+      <el-table-column label="部件型号" align="center" prop="compoSpec" />
+      <el-table-column label="祖籍列表" align="center" prop="ancestors" />
+      <el-table-column label="上级部件" align="center" prop="parentCompo" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['ems:component:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['ems:component:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改能源设备部件对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="设备编码" prop="deviceCode">
+          <el-input v-model="form.deviceCode" placeholder="请输入设备编码" />
+        </el-form-item>
+        <el-form-item label="部件编码" prop="compoCode">
+          <el-input v-model="form.compoCode" placeholder="请输入部件编码" />
+        </el-form-item>
+        <el-form-item label="外部系统编码" prop="extCompoCode">
+          <el-input v-model="form.extCompoCode" placeholder="请输入外部系统编码" />
+        </el-form-item>
+        <el-form-item label="部件模型" prop="compoModel">
+          <el-input v-model="form.compoModel" placeholder="请输入部件模型" />
+        </el-form-item>
+        <el-form-item label="部件品牌" prop="compoBrand">
+          <el-input v-model="form.compoBrand" placeholder="请输入部件品牌" />
+        </el-form-item>
+        <el-form-item label="部件型号" prop="compoSpec">
+          <el-input v-model="form.compoSpec" placeholder="请输入部件型号" />
+        </el-form-item>
+        <el-form-item label="上级部件" prop="parentCompo">
+          <el-input v-model="form.parentCompo" placeholder="请输入上级部件" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listComponent, getComponent, delComponent, addComponent, updateComponent } from "@/api/ems/component";
+
+export default {
+  name: "Component",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 能源设备部件表格数据
+      componentList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        deviceCode: null,
+        compoCode: null,
+        extCompoCode: null,
+        compoModel: null,
+        compoBrand: null,
+        compoSpec: null,
+        ancestors: null,
+        parentCompo: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        deviceCode: [
+          { required: true, message: "设备编码不能为空", trigger: "blur" }
+        ],
+        compoCode: [
+          { required: true, message: "部件编码不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询能源设备部件列表 */
+    getList() {
+      this.loading = true;
+      listComponent(this.queryParams).then(response => {
+        this.componentList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        deviceCode: null,
+        compoCode: null,
+        extCompoCode: null,
+        compoModel: null,
+        compoBrand: null,
+        compoSpec: null,
+        ancestors: null,
+        parentCompo: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加能源设备部件";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getComponent(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改能源设备部件";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateComponent(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addComponent(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除能源设备部件编号为"' + ids + '"的数据项?').then(function() {
+        return delComponent(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('ems/component/export', {
+        ...this.queryParams
+      }, `component_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 322 - 0
ems-ui/src/views/basecfg/device/event.vue

@@ -0,0 +1,322 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="模型code" prop="modelCode">
+        <el-input
+          v-model="queryParams.modelCode"
+          placeholder="请输入模型code"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="事件名称" prop="eventKey">
+        <el-input
+          v-model="queryParams.eventKey"
+          placeholder="请输入事件名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="事件名称" prop="eventName">
+        <el-input
+          v-model="queryParams.eventName"
+          placeholder="请输入事件名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="事件代码" prop="eventCode">
+        <el-input
+          v-model="queryParams.eventCode"
+          placeholder="请输入事件代码"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="外系统事件代码" prop="extEventCode">
+        <el-input
+          v-model="queryParams.extEventCode"
+          placeholder="请输入外系统事件代码"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['ems:event:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['ems:event:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['ems:event:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['ems:event:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="eventList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="序号" align="center" prop="id" />
+      <el-table-column label="模型code" align="center" prop="modelCode" />
+      <el-table-column label="事件名称" align="center" prop="eventKey" />
+      <el-table-column label="事件类型" align="center" prop="eventType" />
+      <el-table-column label="事件名称" align="center" prop="eventName" />
+      <el-table-column label="事件名称" align="center" prop="eventDesc" />
+      <el-table-column label="事件代码" align="center" prop="eventCode" />
+      <el-table-column label="外系统事件代码" align="center" prop="extEventCode" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['ems:event:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['ems:event:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改能源对象事件对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="模型code" prop="modelCode">
+          <el-input v-model="form.modelCode" placeholder="请输入模型code" />
+        </el-form-item>
+        <el-form-item label="事件名称" prop="eventKey">
+          <el-input v-model="form.eventKey" placeholder="请输入事件名称" />
+        </el-form-item>
+        <el-form-item label="事件名称" prop="eventName">
+          <el-input v-model="form.eventName" placeholder="请输入事件名称" />
+        </el-form-item>
+        <el-form-item label="事件名称" prop="eventDesc">
+          <el-input v-model="form.eventDesc" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="事件代码" prop="eventCode">
+          <el-input v-model="form.eventCode" placeholder="请输入事件代码" />
+        </el-form-item>
+        <el-form-item label="外系统事件代码" prop="extEventCode">
+          <el-input v-model="form.extEventCode" placeholder="请输入外系统事件代码" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listEvent, getEvent, delEvent, addEvent, updateEvent } from "@/api/basecfg/objEvent";
+
+export default {
+  name: "Event",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 能源对象事件表格数据
+      eventList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        modelCode: null,
+        eventKey: null,
+        eventType: null,
+        eventName: null,
+        eventDesc: null,
+        eventCode: null,
+        extEventCode: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        modelCode: [
+          { required: true, message: "模型code不能为空", trigger: "blur" }
+        ],
+        eventKey: [
+          { required: true, message: "事件名称不能为空", trigger: "blur" }
+        ],
+        eventType: [
+          { required: true, message: "事件类型不能为空", trigger: "change" }
+        ],
+        eventName: [
+          { required: true, message: "事件名称不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询能源对象事件列表 */
+    getList() {
+      this.loading = true;
+      listEvent(this.queryParams).then(response => {
+        this.eventList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        modelCode: null,
+        eventKey: null,
+        eventType: null,
+        eventName: null,
+        eventDesc: null,
+        eventCode: null,
+        extEventCode: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加能源对象事件";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getEvent(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改能源对象事件";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateEvent(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addEvent(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除能源对象事件编号为"' + ids + '"的数据项?').then(function() {
+        return delEvent(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('ems/event/export', {
+        ...this.queryParams
+      }, `event_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 255 - 0
ems-ui/src/views/basecfg/device/model.vue

@@ -0,0 +1,255 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="模型code" prop="modelCode">
+        <el-input
+          v-model="queryParams.modelCode"
+          placeholder="请输入模型code"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="模型名称" prop="modelName">
+        <el-input
+          v-model="queryParams.modelName"
+          placeholder="请输入模型名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['ems:model:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['ems:model:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['ems:model:remove']"
+        >删除</el-button>
+      </el-col>
+
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="modelList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="模型编码" align="center" prop="modelCode" />
+      <el-table-column label="模型名称" align="center" prop="modelName" />
+      <el-table-column label="对象类型" align="center" prop="objType" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['ems:model:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['ems:model:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改能源对象属性对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="模型编码" prop="modelCode">
+          <el-input v-model="form.modelCode" placeholder="请输入模型code" />
+        </el-form-item>
+        <el-form-item label="模型名称" prop="modelName">
+          <el-input v-model="form.modelName" placeholder="请输入模型名称" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listModel, getModel, delModel, addModel, updateModel } from "@/api/basecfg/objModel";
+
+export default {
+  name: "Model",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 能源对象属性表格数据
+      modelList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        modelCode: null,
+        modelName: null,
+        objType: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        modelCode: [
+          { required: true, message: "模型code不能为空", trigger: "blur" }
+        ],
+        modelName: [
+          { required: true, message: "模型名称不能为空", trigger: "blur" }
+        ],
+        objType: [
+          { required: true, message: "对象类型不能为空", trigger: "change" }
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询能源对象属性列表 */
+    getList() {
+      this.loading = true;
+      listModel(this.queryParams).then(response => {
+        this.modelList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        modelCode: null,
+        modelName: null,
+        objType: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加能源对象属性";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getModel(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改能源对象属性";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateModel(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addModel(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除能源对象属性编号为"' + ids + '"的数据项?').then(function() {
+        return delModel(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    }
+  }
+};
+</script>