model.vue 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907
  1. <template>
  2. <div class="app-container">
  3. <el-tabs v-model="activeObjType" @tab-click="handleTabClick">
  4. <!-- <el-tab-pane label="设施模型" name="1"></el-tab-pane>-->
  5. <el-tab-pane label="设备模型" name="2"></el-tab-pane>
  6. <!-- <el-tab-pane label="设备部件" name="3"></el-tab-pane>-->
  7. </el-tabs>
  8. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
  9. <el-form-item label="模型编码" prop="modelCode">
  10. <el-input
  11. v-model="queryParams.modelCode"
  12. placeholder="请输入模型编码"
  13. clearable
  14. @keyup.enter.native="handleQuery"
  15. />
  16. </el-form-item>
  17. <el-form-item label="模型名称" prop="modelName">
  18. <el-input
  19. v-model="queryParams.modelName"
  20. placeholder="请输入模型名称"
  21. clearable
  22. @keyup.enter.native="handleQuery"
  23. />
  24. </el-form-item>
  25. <el-form-item>
  26. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  27. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  28. </el-form-item>
  29. </el-form>
  30. <el-row :gutter="10" class="mb8">
  31. <el-col :span="1.5">
  32. <el-button
  33. type="primary"
  34. plain
  35. icon="el-icon-plus"
  36. size="mini"
  37. @click="handleAdd"
  38. v-hasPermi="['ems:model:add']"
  39. >新增
  40. </el-button>
  41. </el-col>
  42. <el-col :span="1.5">
  43. <el-button
  44. type="success"
  45. plain
  46. icon="el-icon-edit"
  47. size="mini"
  48. :disabled="single"
  49. @click="handleUpdate"
  50. v-hasPermi="['ems:model:edit']"
  51. >修改
  52. </el-button>
  53. </el-col>
  54. <el-col :span="1.5">
  55. <el-button
  56. type="danger"
  57. plain
  58. icon="el-icon-delete"
  59. size="mini"
  60. :disabled="multiple"
  61. @click="handleDelete"
  62. v-hasPermi="['ems:model:remove']"
  63. >删除
  64. </el-button>
  65. </el-col>
  66. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  67. </el-row>
  68. <el-table v-loading="loading" :data="modelList" @selection-change="handleSelectionChange">
  69. <el-table-column type="selection" width="55" align="center"/>
  70. <el-table-column label="模型编码" align="center" prop="modelCode"/>
  71. <el-table-column label="模型名称" align="center" prop="modelName"/>
  72. <el-table-column label="对象类型" align="center">
  73. <template slot-scope="scope">
  74. {{ objTypeMapping[scope.row.objType] }}
  75. </template>
  76. </el-table-column>
  77. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  78. <template slot-scope="scope">
  79. <el-button
  80. size="mini"
  81. type="text"
  82. icon="el-icon-edit"
  83. @click="handleUpdate(scope.row)"
  84. v-hasPermi="['ems:model:edit']"
  85. >修改
  86. </el-button>
  87. <el-button
  88. size="mini"
  89. type="text"
  90. icon="el-icon-delete"
  91. @click="handleDelete(scope.row)"
  92. v-hasPermi="['ems:model:remove']"
  93. >删除
  94. </el-button>
  95. <el-button
  96. size="mini"
  97. type="text"
  98. icon="el-icon-info"
  99. @click="handleDetail(scope.row)"
  100. >
  101. 特性
  102. </el-button>
  103. </template>
  104. </el-table-column>
  105. </el-table>
  106. <pagination
  107. v-show="total>0"
  108. :total="total"
  109. :page.sync="queryParams.pageNum"
  110. :limit.sync="queryParams.pageSize"
  111. @pagination="getList"
  112. />
  113. <!-- 添加或修改能源对象属性对话框 -->
  114. <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  115. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  116. <el-form-item label="模型编码" prop="modelCode">
  117. <el-input v-model="form.modelCode" placeholder="请输入模型code"/>
  118. </el-form-item>
  119. <el-form-item label="模型名称" prop="modelName">
  120. <el-input v-model="form.modelName" placeholder="请输入模型名称"/>
  121. </el-form-item>
  122. <el-form-item label="能力接口" prop="abilityHandle">
  123. <el-input v-model="form.abilityHandler" placeholder="请输入能力接口"/>
  124. </el-form-item>
  125. <el-form-item label="事件接口" prop="eventHandle">
  126. <el-input v-model="form.eventHandler" placeholder="请输入事件接口"/>
  127. </el-form-item>
  128. </el-form>
  129. <div slot="footer" class="dialog-footer">
  130. <el-button type="primary" @click="submitForm">确 定</el-button>
  131. <el-button @click="cancel">取 消</el-button>
  132. </div>
  133. </el-dialog>
  134. <!-- ”特性“对话框 -->
  135. <el-drawer :title=curRow.modelName size="80%" :visible.sync="showDrawer" direction="rtl">
  136. <div class="drawer-content" style="padding-left:50px">
  137. <el-tabs v-model="subKey">
  138. <el-tab-pane label="对象属性" name="attr">
  139. <el-row :gutter="10" class="mb8">
  140. <el-col :span="1.5">
  141. <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAttrAdd"
  142. v-hasPermi="['ems:attr:add']">新增
  143. </el-button>
  144. </el-col>
  145. </el-row>
  146. <el-table v-loading="loading" :data="attrList">
  147. <el-table-column type="selection" width="55" align="center"/>
  148. <el-table-column label="属性名称" align="center" prop="attrName"/>
  149. <el-table-column label="属性标识" align="center" prop="attrKey"/>
  150. <el-table-column label="属性单位" align="center" prop="attrUnit"/>
  151. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  152. <template slot-scope="scope">
  153. <el-button size="mini" type="text" icon="el-icon-edit" @click="handleAttrUpdate(scope.row)"
  154. v-hasPermi="['ems:attr:edit']">修改
  155. </el-button>
  156. <el-button size="mini" type="text" icon="el-icon-delete" class="deleteBtn"
  157. @click="handleAttrDelete(scope.row)" v-hasPermi="['ems:attr:remove']">删除
  158. </el-button>
  159. </template>
  160. </el-table-column>
  161. </el-table>
  162. <!-- <pagination v-show="total>0" :total="total" :page.sync="queryAttrParams.pageNum"-->
  163. <!-- :limit.sync="queryAttrParams.pageSize"-->
  164. <!-- @pagination="getAttrsList"/>-->
  165. <!-- 添加或修改属性对话框 -->
  166. <el-dialog :title="title" :visible.sync="attrOpen" width="650px" append-to-body>
  167. <el-form ref="attrForm" :model="attrForm" :rules="attrRules" label-width="150px">
  168. <el-form-item label="属性名称" prop="attrName">
  169. <el-input v-model="attrForm.attrName" placeholder="请输入属性名称"/>
  170. </el-form-item>
  171. <el-form-item label="属性标识" prop="attrKey">
  172. <el-input v-model="attrForm.attrKey" placeholder="请输入属性标识"/>
  173. </el-form-item>
  174. <el-form-item label="属性分组" prop="attrGroup">
  175. <el-radio-group v-model="attrForm.attrGroup" size="medium">
  176. <el-radio v-for="(item, index) in attrTypeOptions" :key="index" :label="item.value"
  177. :disabled="item.disabled">{{item.label}}</el-radio>
  178. </el-radio-group>
  179. </el-form-item>
  180. <el-form-item label="属性单位" prop="attrUnit">
  181. <el-input v-model="attrForm.attrUnit" placeholder="请输入属性单位"/>
  182. </el-form-item>
  183. <el-form-item label="属性值类型" prop="attrValueType">
  184. <el-select v-model="attrForm.attrValueType" placeholder="请选择属性值类型">
  185. <el-option
  186. v-for="option in getAttrValueOptions()"
  187. :key="option.value"
  188. :label="option.label"
  189. :value="option.value">
  190. </el-option>
  191. </el-select>
  192. </el-form-item>
  193. <!--属性值表格-->
  194. <el-form-item label="枚举类型值" prop="customAttrs" v-if="attrForm.attrValueType === 'Enum'">
  195. <el-table class="attr-table" v-loading="loading" :data="customAttrs" max-height="280px" key="'customAttrs'">
  196. <el-table-column label="枚举值" align="center" prop="attrValue">
  197. <template slot-scope="scope">
  198. <el-input size="mini" v-model="scope.row.attrValue" placeholder="请输入枚举值" />
  199. </template>
  200. </el-table-column>
  201. <el-table-column label="描述" align="center" prop="attrValueName">
  202. <template slot-scope="scope">
  203. <el-input size="mini" v-model="scope.row.attrValueName" placeholder="请输入描述" />
  204. </template>
  205. </el-table-column>
  206. <el-table-column align="center" label="操作">
  207. <template slot="header">
  208. <div class="operateBtns" @click="addCustomAttr">
  209. <span>添加</span><i class="el-icon-circle-plus-outline"></i>
  210. </div>
  211. </template>
  212. <template slot-scope="scope">
  213. <i class="el-icon-delete" @click="deleteCustomAttr(scope.$index)"></i>
  214. </template>
  215. </el-table-column>
  216. </el-table>
  217. </el-form-item>
  218. </el-form>
  219. <div slot="footer" class="dialog-footer">
  220. <el-button type="primary" @click="submitAttrForm">确 定</el-button>
  221. <el-button @click="attrCancel">取 消</el-button>
  222. </div>
  223. </el-dialog>
  224. </el-tab-pane>
  225. <el-tab-pane label="对象事件" name="second">
  226. <el-row :gutter="10" class="mb8">
  227. <el-col :span="1.5">
  228. <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleEventAdd"
  229. v-hasPermi="['ems:event:add']">新增
  230. </el-button>
  231. </el-col>
  232. </el-row>
  233. <el-table v-loading="loading" :data="eventList">
  234. <el-table-column type="selection" width="55" align="center"/>
  235. <el-table-column label="事件名称" align="center" prop="eventName"/>
  236. <el-table-column label="事件标识" align="center" prop="eventKey"/>
  237. <el-table-column label="事件类型" align="center" prop="eventType">
  238. <template slot-scope="scope">
  239. <span>{{ scope.row.eventType === 1 ? '消息上报' : '异常告警' }}</span>
  240. </template>
  241. </el-table-column>
  242. <el-table-column label="事件代码" align="center" prop="eventCode"/>
  243. <el-table-column label="外系统事件代码" align="center" prop="extEventCode"/>
  244. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  245. <template slot-scope="scope">
  246. <el-button size="mini" type="text" icon="el-icon-edit" @click="handleEventUpdate(scope.row)"
  247. v-hasPermi="['ems:event:edit']">修改
  248. </el-button>
  249. <el-button size="mini" type="text" icon="el-icon-delete" class="deleteBtn"
  250. @click="handleEventDelete(scope.row)" v-hasPermi="['ems:event:remove']">删除
  251. </el-button>
  252. </template>
  253. </el-table-column>
  254. </el-table>
  255. <pagination v-show="total>0" :total="total" :page.sync="queryEventParams.pageNum"
  256. :limit.sync="queryEventParams.pageSize"
  257. @pagination="getEventList"/>
  258. <!-- 添加或修改事件对话框 -->
  259. <el-dialog :title="title" :visible.sync="eventOpen" width="500px" append-to-body>
  260. <el-form ref="eventForm" :model="eventForm" :rules="eventRules" label-width="80px">
  261. <el-form-item label="事件名称" prop="eventName">
  262. <el-input v-model="eventForm.eventName" placeholder="请输入事件名称"/>
  263. </el-form-item>
  264. <el-form-item label="事件标识" prop="eventKey">
  265. <el-input v-model="eventForm.eventKey" placeholder="请输入事件标识"/>
  266. </el-form-item>
  267. <el-form-item label="事件类型" prop="eventType">
  268. <el-select v-model="eventForm.eventType" placeholder="请选择对象类型">
  269. <el-option v-for="item in objEventTypeOptions"
  270. :label="item.name"
  271. :value="item.code"
  272. :key="item.code" />
  273. </el-select>
  274. </el-form-item>
  275. <el-form-item label="事件代码" prop="eventCode">
  276. <el-input v-model="eventForm.eventCode" placeholder="请输入事件代码"/>
  277. </el-form-item>
  278. <el-form-item label="外系统事件代码" prop="extEventCode">
  279. <el-input v-model="eventForm.extEventCode" placeholder="请输入外系统事件代码"/>
  280. </el-form-item>
  281. </el-form>
  282. <div slot="footer" class="dialog-footer">
  283. <el-button type="primary" @click="submitEventForm">确 定</el-button>
  284. <el-button @click="eventCancel">取 消</el-button>
  285. </div>
  286. </el-dialog>
  287. </el-tab-pane>
  288. <el-tab-pane label="对象能力" name="third">
  289. <el-row :gutter="10" class="mb8">
  290. <el-col :span="1.5">
  291. <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAbilityAdd"
  292. v-hasPermi="['ems:ability:add']">新增
  293. </el-button>
  294. </el-col>
  295. </el-row>
  296. <el-table v-loading="loading" :data="abilityList">
  297. <el-table-column type="selection" width="55" align="center"/>
  298. <el-table-column label="能力名称" align="center" prop="abilityName"/>
  299. <el-table-column label="能力键" align="center" prop="abilityKey"/>
  300. <el-table-column label="能力参数" align="center" prop="abilityParam"/>
  301. <el-table-column label="能力描述" align="center" prop="abilityDesc"/>
  302. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  303. <template slot-scope="scope">
  304. <el-button size="mini" type="text" icon="el-icon-edit" @click="handleAbilityUpdate(scope.row)"
  305. v-hasPermi="['ems:ability:edit']">修改
  306. </el-button>
  307. <el-button size="mini" type="text" icon="el-icon-delete" class="deleteBtn"
  308. @click="handleAbilityDelete(scope.row)" v-hasPermi="['ems:ability:remove']">删除
  309. </el-button>
  310. </template>
  311. </el-table-column>
  312. </el-table>
  313. <!--添加或修改能力对话框 -->
  314. <el-dialog :title="title" :visible.sync="abilityOpen" width="500px" append-to-body>
  315. <el-form ref="abilityForm" :model="abilityForm" :rules="abilityRules" label-width="80px">
  316. <el-form-item label="能力键" prop="abilityKey">
  317. <el-input v-model="abilityForm.abilityKey" placeholder="请输入能力键"/>
  318. </el-form-item>
  319. <el-form-item label="能力名称" prop="abilityName">
  320. <el-input v-model="abilityForm.abilityName" placeholder="请输入能力名称"/>
  321. </el-form-item>
  322. <el-form-item label="能力描述" prop="abilityDesc">
  323. <el-input v-model="abilityForm.abilityDesc" type="textarea" placeholder="请输入内容"/>
  324. </el-form-item>
  325. <el-form-item label="能力参数" prop="abilityParam">
  326. <el-input v-model="abilityForm.abilityParam" type="textarea" placeholder="请输入内容"/>
  327. </el-form-item>
  328. <el-form-item label="隐藏标记" prop="hiddenFlag">
  329. <el-radio-group v-model="abilityForm.hiddenFlag">
  330. <el-radio :label="0">隐藏</el-radio>
  331. <el-radio :label="1">展示</el-radio>
  332. </el-radio-group>
  333. </el-form-item>
  334. </el-form>
  335. <div slot="footer" class="dialog-footer">
  336. <el-button type="primary" @click="submitAbilityForm">确 定</el-button>
  337. <el-button @click="abilityCancel">取 消</el-button>
  338. </div>
  339. </el-dialog>
  340. </el-tab-pane>
  341. </el-tabs>
  342. </div>
  343. </el-drawer>
  344. </div>
  345. </template>
  346. <script>
  347. import { listModel, getModel, delModel, addModel, updateModel, getModelByCode } from '@/api/basecfg/objModel'
  348. import { getEvent, delEvent, addEvent, updateEvent } from '@/api/basecfg/objEvent'
  349. import { getAttr, delAttr, addAttr, updateAttr } from '@/api/basecfg/objAttribute'
  350. import { getAbility, delAbility, addAbility, updateAbility } from '@/api/basecfg/objAbility'
  351. import {getAttrList,delAttrEnum} from '@/api/basecfg/emum'
  352. export default {
  353. name: 'Model',
  354. data() {
  355. return {
  356. // 用于存储属性表格
  357. customAttrs: [],
  358. // 遮罩层
  359. loading: true,
  360. // 选中数组
  361. ids: [],
  362. // 非单个禁用
  363. single: true,
  364. // 非多个禁用
  365. multiple: true,
  366. // 显示搜索条件
  367. showSearch: true,
  368. // 总条数
  369. total: 0,
  370. attrTotal:0,
  371. eventTotal:0,
  372. abilityTotal:0,
  373. // 能源对象属性表格数据
  374. modelList: [],
  375. filteredModelList:[],
  376. activeObjType: '2',
  377. // 弹出层标题
  378. title: '',
  379. // 是否显示弹出层
  380. open: false,
  381. eventOpen: false,
  382. attrOpen: false,
  383. abilityOpen: false,
  384. // 查询参数
  385. queryParams: {
  386. pageNum: 1,
  387. pageSize: 10,
  388. modelCode: null,
  389. modelName: null,
  390. objType: null
  391. },
  392. objTypeMapping: {
  393. 1: '设施',
  394. 2: '设备',
  395. 3: '设备部件'
  396. },
  397. objTypeOptions: [
  398. { code: 1, name: '设施' },
  399. { code: 2, name: '设备' },
  400. { code: 3, name: '设备部件' }
  401. ],
  402. objEventTypeOptions: [
  403. { code: 1, name: '信息上报' },
  404. { code: 2, name: '异常警告' },
  405. ],
  406. attrTypeOptions: [
  407. { "label": "基础信息", "value":'Base'},
  408. { "label": "状态信息", "value": 'State' },
  409. { "label": "计量信息", "value": 'Measure'},
  410. { "label": "协议信息", "value": 'Protocol'}
  411. ],
  412. // 查询参数
  413. queryEventParams: {
  414. pageNum: 1,
  415. pageSize: 10
  416. },
  417. queryAttrParams: {
  418. pageNum: 1,
  419. pageSize: 10
  420. },
  421. queryAbilityParams: {
  422. pageNum: 1,
  423. pageSize: 10
  424. },
  425. curRow: {},
  426. // 表单参数
  427. form: {
  428. id: null,
  429. modelCode: null,
  430. modelName: null,
  431. // 这里将由标签页控制
  432. objType: null,
  433. abilityHandler: null,
  434. eventHandler: null
  435. },
  436. eventForm: {},
  437. attrForm: {},
  438. abilityForm: {},
  439. // 表单校验
  440. rules: {
  441. modelCode: [
  442. { required: true, message: '模型code不能为空', trigger: 'blur' }
  443. ],
  444. modelName: [
  445. { required: true, message: '模型名称不能为空', trigger: 'blur' }
  446. ],
  447. objType: [
  448. { required: true, message: '对象类型不能为空', trigger: 'change' }
  449. ]
  450. },
  451. eventRules: {
  452. modelCode: [
  453. { required: true, message: '模型code不能为空', trigger: 'blur' }
  454. ],
  455. eventKey: [
  456. { required: true, message: '事件名称不能为空', trigger: 'blur' }
  457. ],
  458. eventType: [
  459. { required: true, message: '事件类型不能为空', trigger: 'change' }
  460. ],
  461. eventName: [
  462. { required: true, message: '事件名称不能为空', trigger: 'blur' }
  463. ]
  464. },
  465. attrRules: {
  466. modelCode: [
  467. { required: true, message: '模型code不能为空', trigger: 'blur' }
  468. ],
  469. attrKey: [
  470. { required: true, message: '属性标识不能为空', trigger: 'blur' }
  471. ],
  472. attrName: [
  473. { required: true, message: '属性名称不能为空', trigger: 'blur' }
  474. ]
  475. },
  476. abilityRules: {
  477. modelCode: [
  478. { required: true, message: '模型code不能为空', trigger: 'blur' }
  479. ],
  480. abilityKey: [
  481. { required: true, message: '能力键不能为空', trigger: 'blur' }
  482. ],
  483. abilityName: [
  484. { required: true, message: '能力名称不能为空', trigger: 'blur' }
  485. ]
  486. },
  487. // 能源对象事件
  488. eventList: [],
  489. // 能源对象属性
  490. attrList: [],
  491. // 能源对象能力
  492. abilityList: [],
  493. showDrawer: false,
  494. subDialogShow: false,
  495. subKey: 'attr'
  496. }
  497. },
  498. created() {
  499. this.getList()
  500. },
  501. methods: {
  502. handleTabClick(tab) {
  503. this.activeObjType = tab.name;
  504. this.form.objType = null;
  505. this.getList();
  506. },
  507. getObjAttrList(modelCode, attrKey) {
  508. this.loading = true;
  509. getAttrList(modelCode, attrKey).then((response) => {
  510. this.customAttrs = response.data || [];
  511. this.loading = false;
  512. })
  513. },
  514. // 添加自定义属性的方法
  515. addCustomAttr() {
  516. this.customAttrs.push({
  517. attrValue: null,
  518. attrValueName: null,
  519. });
  520. },
  521. //删除自定义属性的方法
  522. deleteCustomAttr(index) {
  523. const customAttr = this.customAttrs[index];
  524. const attrEnumId = customAttr.id;
  525. this.$modal.confirm('是否确认删除枚举值编号为"' + attrEnumId + '"的数据项?').then(() => {
  526. return delAttrEnum(attrEnumId);
  527. }).then(() => {
  528. this.customAttrs.splice(index, 1);
  529. this.$modal.msgSuccess('删除成功');
  530. })
  531. },
  532. // 设备模型·特性
  533. handleDetail(row) {
  534. this.showDrawer = true
  535. this.curRow = row
  536. getModel(this.curRow.id).then(response => {
  537. const data = response.data
  538. console.log('data', data)
  539. this.attrList = data.attrList
  540. this.eventList = data.eventList
  541. this.abilityList = data.abilityList
  542. })
  543. },
  544. /** 新增按钮操作 */
  545. handleAttrAdd() {
  546. this.attrReset()
  547. this.attrOpen = true
  548. this.title = '添加能源对象属性'
  549. this.attrForm.modelCode= this.curRow.modelCode
  550. console.log("新增123",this.attrForm)
  551. this.getObjAttrList(this.attrForm.modelCode, this.attrForm.attrKey);
  552. },
  553. handleEventAdd() {
  554. this.eventReset()
  555. this.eventOpen = true
  556. this.title = '添加能源对象事件'
  557. this.eventForm.modelCode= this.curRow.modelCode
  558. },
  559. handleAbilityAdd() {
  560. this.abilityReset()
  561. this.abilityOpen = true
  562. this.title = '添加能源对象事件'
  563. this.abilityForm.modelCode= this.curRow.modelCode
  564. },
  565. /**属性值类型*/
  566. getAttrValueOptions() {
  567. return [
  568. { label: "数值", value: "Value" },
  569. { label: "字符串", value: "String" },
  570. { label: "枚举", value: "Enum" }
  571. ];
  572. },
  573. /** 查询设备模型列表 */
  574. getList() {
  575. this.loading = true
  576. listModel({ objType: this.activeObjType }).then(response => {
  577. this.modelList = response.rows
  578. this.total = response.total
  579. this.loading = false
  580. })
  581. },
  582. getEventList(modelcode) {
  583. this.loading = true
  584. getModelByCode(modelcode).then(response => {
  585. const data = response.data
  586. this.attrList = data.attrList
  587. this.eventList = data.eventList
  588. this.abilityList = data.abilityList
  589. })
  590. this.loading = false
  591. },
  592. /** 查询能源对象属性列表 */
  593. getAttrsList(modelcode) {
  594. this.loading = true
  595. getModelByCode(modelcode).then(response => {
  596. const data = response.data
  597. this.attrList = data.attrList
  598. this.eventList = data.eventList
  599. this.abilityList = data.abilityList
  600. })
  601. this.loading = false
  602. },
  603. /** 查询能源对象能力列表 */
  604. getAbilityList(modelcode) {
  605. this.loading = true
  606. getModelByCode(modelcode).then(response => {
  607. const data = response.data
  608. this.attrList = data.attrList
  609. this.eventList = data.eventList
  610. this.abilityList = data.abilityList
  611. })
  612. this.loading = false
  613. },
  614. // 表单重置
  615. attrReset() {
  616. this.attrForm = {
  617. id: null,
  618. modelCode: this.curRow.modelCode || '',
  619. attrKey: null,
  620. attrGroup: null,
  621. attrName: null,
  622. attrValue: null,
  623. attrUnit: null,
  624. attrValueType:null
  625. }
  626. this.resetForm('attrForm')
  627. },
  628. eventReset() {
  629. this.eventForm = {
  630. id: null,
  631. modelCode: this.curRow.modelCode || '',
  632. eventKey: null,
  633. eventType: null,
  634. eventName: null,
  635. eventDesc: null,
  636. eventCode: null,
  637. extEventCode: null
  638. }
  639. this.resetForm('eventForm')
  640. },
  641. abilityReset() {
  642. this.abilityForm = {
  643. id: null,
  644. modelCode: this.curRow.modelCode || '',
  645. abilityKey: null,
  646. abilityName: null,
  647. abilityDesc: null,
  648. abilityParam: null,
  649. hiddenFlag:null,
  650. }
  651. this.resetForm('abilityForm')
  652. },
  653. /** 修改按钮操作 */
  654. handleAttrUpdate(row) {
  655. this.attrReset()
  656. const id = row.id || this.ids
  657. getAttr(id).then(response => {
  658. this.attrForm = response.data
  659. this.attrOpen = true
  660. this.title = '修改能源对象属性'
  661. this.attrForm.modelCode= this.curRow.modelCode
  662. this.getObjAttrList(this.attrForm.modelCode, this.attrForm.attrKey);
  663. })
  664. },
  665. handleEventUpdate(row) {
  666. this.eventReset()
  667. const id = row.id || this.ids
  668. getEvent(id).then(response => {
  669. this.eventForm = response.data
  670. this.eventOpen = true
  671. this.title = '修改能源对象事件'
  672. this.attrForm.modelCode= this.curRow.modelCode
  673. })
  674. },
  675. handleAbilityUpdate(row) {
  676. this.abilityReset()
  677. const id = row.id || this.ids
  678. getAbility(id).then(response => {
  679. this.abilityForm = response.data
  680. this.abilityOpen = true
  681. this.title = '修改能源对象能力'
  682. this.attrForm.modelCode= this.curRow.modelCode
  683. })
  684. },
  685. /** 删除按钮操作 */
  686. handleAttrDelete(row) {
  687. const ids = row.id || this.ids
  688. this.$modal.confirm('是否确认删除能源对象属性编号为"' + ids + '"的数据项?').then(function() {
  689. return delAttr(ids)
  690. }).then(() => {
  691. this.getAttrsList(row.modelCode)
  692. this.$modal.msgSuccess('删除成功')
  693. }).catch(() => {
  694. })
  695. },
  696. handleEventDelete(row) {
  697. const ids = row.id || this.ids
  698. this.$modal.confirm('是否确认删除能源对象事件编号为"' + ids + '"的数据项?').then(function() {
  699. return delEvent(ids)
  700. }).then(() => {
  701. this.getEventList(row.modelCode)
  702. this.$modal.msgSuccess('删除成功')
  703. }).catch(() => {
  704. })
  705. },
  706. handleAbilityDelete(row) {
  707. const ids = row.id || this.ids
  708. this.$modal.confirm('是否确认删除能源对象能力编号为"' + ids + '"的数据项?').then(function() {
  709. return delAbility(ids)
  710. }).then(() => {
  711. this.getAbilityList(row.modelCode)
  712. this.$modal.msgSuccess('删除成功')
  713. }).catch(() => {
  714. })
  715. },
  716. /** 提交按钮 */
  717. submitAttrForm() {
  718. this.$refs['attrForm'].validate(valid => {
  719. if (valid) {
  720. const formData = {
  721. ...this.attrForm,
  722. valueEnums: this.customAttrs.map(item => ({
  723. modelCode: this.attrForm.modelCode,
  724. attrKey: this.attrForm.attrKey,
  725. attrValue: item.attrValue,
  726. attrValueName: item.attrValueName
  727. }))
  728. };
  729. if (this.attrForm.id != null) {
  730. updateAttr(formData).then(response => {
  731. this.$modal.msgSuccess('修改成功');
  732. this.attrOpen = false;
  733. this.getAttrsList(this.attrForm.modelCode); // 刷新属性列表
  734. });
  735. } else {
  736. addAttr(formData).then(response => {
  737. this.$modal.msgSuccess('新增成功');
  738. this.attrOpen = false;
  739. this.getAttrsList(this.attrForm.modelCode);
  740. });
  741. }
  742. }
  743. });
  744. },
  745. submitEventForm() {
  746. this.$refs['eventForm'].validate(valid => {
  747. if (valid) {
  748. if (this.eventForm.id != null) {
  749. updateEvent(this.eventForm).then(response => {
  750. this.$modal.msgSuccess('修改成功')
  751. this.eventOpen = false
  752. this.getEventList(this.eventForm.modelCode)
  753. })
  754. } else {
  755. addEvent(this.eventForm).then(response => {
  756. this.$modal.msgSuccess('新增成功')
  757. this.eventOpen = false
  758. this.getEventList(this.eventForm.modelCode)
  759. })
  760. }
  761. }
  762. })
  763. },
  764. submitAbilityForm() {
  765. this.$refs['abilityForm'].validate(valid => {
  766. if (valid) {
  767. if (this.abilityForm.id != null) {
  768. updateAbility(this.abilityForm).then(response => {
  769. this.$modal.msgSuccess('修改成功')
  770. this.abilityOpen = false
  771. this.getAbilityList(this.abilityForm.modelCode)
  772. })
  773. } else {
  774. addAbility(this.abilityForm).then(response => {
  775. this.$modal.msgSuccess('新增成功')
  776. this.abilityOpen = false
  777. this.getAbilityList(this.abilityForm.modelCode)
  778. })
  779. }
  780. }
  781. })
  782. },
  783. // 取消按钮
  784. attrCancel() {
  785. this.attrOpen = false
  786. this.attrReset()
  787. },
  788. eventCancel() {
  789. this.eventOpen = false
  790. this.eventReset()
  791. },
  792. // 取消按钮
  793. abilityCancel() {
  794. this.abilityOpen = false
  795. this.abilityReset()
  796. },
  797. // 取消按钮
  798. cancel() {
  799. this.open = false
  800. this.reset()
  801. },
  802. // 表单重置
  803. reset() {
  804. this.form = {
  805. id: null,
  806. modelCode: null,
  807. modelName: null,
  808. objType: null,
  809. }
  810. this.resetForm('form')
  811. },
  812. /** 搜索按钮操作 */
  813. handleQuery() {
  814. this.queryParams.pageNum = 1
  815. this.getList()
  816. },
  817. /** 重置按钮操作 */
  818. resetQuery() {
  819. this.resetForm('queryForm')
  820. this.handleQuery()
  821. },
  822. // 多选框选中数据
  823. handleSelectionChange(selection) {
  824. this.ids = selection.map(item => item.id)
  825. this.single = selection.length !== 1
  826. this.multiple = !selection.length
  827. },
  828. /** 新增按钮操作 */
  829. handleAdd() {
  830. this.reset()
  831. this.open = true
  832. this.title = '添加能源对象属性'
  833. this.form.objType = this.activeObjType; // 设置默认对象类型
  834. },
  835. /** 修改按钮操作 */
  836. handleUpdate(row) {
  837. this.reset()
  838. const id = row.id || this.ids
  839. getModel(id).then(response => {
  840. this.form = response.data
  841. this.form.objType = this.activeObjType;
  842. this.open = true
  843. this.title = '修改能源对象属性'
  844. })
  845. },
  846. /** 提交按钮 */
  847. submitForm() {
  848. this.$refs['form'].validate(valid => {
  849. if (valid) {
  850. if (this.form.id != null) {
  851. updateModel(this.form).then(response => {
  852. this.$modal.msgSuccess('修改成功')
  853. this.open = false
  854. this.getList()
  855. })
  856. } else {
  857. addModel(this.form).then(response => {
  858. this.$modal.msgSuccess('新增成功')
  859. this.open = false
  860. this.getList()
  861. })
  862. }
  863. }
  864. })
  865. },
  866. /** 删除按钮操作 */
  867. handleDelete(row) {
  868. const ids = row.id || this.ids
  869. this.$modal.confirm('是否确认删除能源对象属性编号为"' + ids + '"的数据项?').then(function() {
  870. return delModel(ids)
  871. }).then(() => {
  872. this.getList()
  873. this.$modal.msgSuccess('删除成功')
  874. }).catch(() => {
  875. })
  876. }
  877. }
  878. }
  879. </script>