model.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832
  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. <!-- 对象类型选择,但值由标签页控制 -->
  123. <!-- <el-form-item label="对象类型" prop="objType">-->
  124. <!-- <el-select v-model="form.objType" placeholder="请选择对象类型" disabled>-->
  125. <!-- <el-option :label="objTypeMapping[activeObjType]" :value="activeObjType" />-->
  126. <!-- </el-select>-->
  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="getAttrList"/>
  165. <!-- 添加或修改服务区用电属性对话框 -->
  166. <el-dialog :title="title" :visible.sync="attrOpen" width="500px" 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="attrType">
  175. <el-radio-group v-model="attrForm.attrType" 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>
  184. <div slot="footer" class="dialog-footer">
  185. <el-button type="primary" @click="submitAttrForm">确 定</el-button>
  186. <el-button @click="attrCancel">取 消</el-button>
  187. </div>
  188. </el-dialog>
  189. </el-tab-pane>
  190. <el-tab-pane label="对象事件" name="second">
  191. <el-row :gutter="10" class="mb8">
  192. <el-col :span="1.5">
  193. <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleEventAdd"
  194. v-hasPermi="['ems:event:add']">新增
  195. </el-button>
  196. </el-col>
  197. </el-row>
  198. <el-table v-loading="loading" :data="eventList">
  199. <el-table-column type="selection" width="55" align="center"/>
  200. <el-table-column label="事件名称" align="center" prop="eventKey"/>
  201. <el-table-column label="事件类型" align="center" prop="eventType">
  202. <template slot-scope="scope">
  203. <span>{{ scope.row.eventType === 1 ? '消息上报' : '异常告警' }}</span>
  204. </template>
  205. </el-table-column>
  206. <el-table-column label="事件代码" align="center" prop="eventCode"/>
  207. <el-table-column label="外系统事件代码" align="center" prop="extEventCode"/>
  208. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  209. <template slot-scope="scope">
  210. <el-button size="mini" type="text" icon="el-icon-edit" @click="handleEventUpdate(scope.row)"
  211. v-hasPermi="['ems:event:edit']">修改
  212. </el-button>
  213. <el-button size="mini" type="text" icon="el-icon-delete" class="deleteBtn"
  214. @click="handleEventDelete(scope.row)" v-hasPermi="['ems:event:remove']">删除
  215. </el-button>
  216. </template>
  217. </el-table-column>
  218. </el-table>
  219. <pagination v-show="total>0" :total="total" :page.sync="queryEventParams.pageNum"
  220. :limit.sync="queryEventParams.pageSize"
  221. @pagination="getEventList"/>
  222. <!-- 添加或修改事件对话框 -->
  223. <el-dialog :title="title" :visible.sync="eventOpen" width="500px" append-to-body>
  224. <el-form ref="eventForm" :model="eventForm" :rules="eventRules" label-width="80px">
  225. <el-form-item label="事件名称" prop="eventKey">
  226. <el-input v-model="eventForm.eventKey" placeholder="请输入事件名称"/>
  227. </el-form-item>
  228. <el-form-item label="事件类型" prop="eventType">
  229. <el-select v-model="eventForm.eventType" placeholder="请选择对象类型">
  230. <el-option v-for="item in objEventTypeOptions"
  231. :label="item.name"
  232. :value="item.code"
  233. :key="item.code" />
  234. </el-select>
  235. </el-form-item>
  236. <el-form-item label="事件代码" prop="eventCode">
  237. <el-input v-model="eventForm.eventCode" placeholder="请输入事件代码"/>
  238. </el-form-item>
  239. <el-form-item label="外系统事件代码" prop="extEventCode">
  240. <el-input v-model="eventForm.extEventCode" placeholder="请输入外系统事件代码"/>
  241. </el-form-item>
  242. </el-form>
  243. <div slot="footer" class="dialog-footer">
  244. <el-button type="primary" @click="submitEventForm">确 定</el-button>
  245. <el-button @click="eventCancel">取 消</el-button>
  246. </div>
  247. </el-dialog>
  248. </el-tab-pane>
  249. <el-tab-pane label="对象能力" name="third">
  250. <el-row :gutter="10" class="mb8">
  251. <el-col :span="1.5">
  252. <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAbilityAdd"
  253. v-hasPermi="['ems:ability:add']">新增
  254. </el-button>
  255. </el-col>
  256. </el-row>
  257. <el-table v-loading="loading" :data="abilityList">
  258. <el-table-column type="selection" width="55" align="center"/>
  259. <el-table-column label="能力名称" align="center" prop="abilityName"/>
  260. <el-table-column label="能力键" align="center" prop="abilityKey"/>
  261. <el-table-column label="能力参数" align="center" prop="abilityParam"/>
  262. <el-table-column label="能力描述" align="center" prop="abilityDesc"/>
  263. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  264. <template slot-scope="scope">
  265. <el-button size="mini" type="text" icon="el-icon-edit" @click="handleAbilityUpdate(scope.row)"
  266. v-hasPermi="['ems:ability:edit']">修改
  267. </el-button>
  268. <el-button size="mini" type="text" icon="el-icon-delete" class="deleteBtn"
  269. @click="handleAbilityDelete(scope.row)" v-hasPermi="['ems:ability:remove']">删除
  270. </el-button>
  271. </template>
  272. </el-table-column>
  273. </el-table>
  274. <!-- 添加或修改能力对话框 -->
  275. <el-dialog :title="title" :visible.sync="abilityOpen" width="500px" append-to-body>
  276. <el-form ref="abilityForm" :model="abilityForm" :rules="abilityRules" label-width="80px">
  277. <!-- <el-form-item label="模型code" prop="modelCode">-->
  278. <!-- <el-input v-model="abilityForm.modelCode" placeholder="请输入模型code"/>-->
  279. <!-- </el-form-item>-->
  280. <el-form-item label="能力键" prop="abilityKey">
  281. <el-input v-model="abilityForm.abilityKey" placeholder="请输入能力键"/>
  282. </el-form-item>
  283. <el-form-item label="能力名称" prop="abilityName">
  284. <el-input v-model="abilityForm.abilityName" placeholder="请输入能力名称"/>
  285. </el-form-item>
  286. <el-form-item label="能力描述" prop="abilityDesc">
  287. <el-input v-model="abilityForm.abilityDesc" type="textarea" placeholder="请输入内容"/>
  288. </el-form-item>
  289. <el-form-item label="能力参数" prop="abilityParam">
  290. <el-input v-model="abilityForm.abilityParam" type="textarea" placeholder="请输入内容"/>
  291. </el-form-item>
  292. </el-form>
  293. <div slot="footer" class="dialog-footer">
  294. <el-button type="primary" @click="submitAbilityForm">确 定</el-button>
  295. <el-button @click="abilityCancel">取 消</el-button>
  296. </div>
  297. </el-dialog>
  298. </el-tab-pane>
  299. </el-tabs>
  300. </div>
  301. </el-drawer>
  302. </div>
  303. </template>
  304. <script>
  305. import { listModel, getModel, delModel, addModel, updateModel, getModelByCode } from '@/api/basecfg/objModel'
  306. import { getEvent, delEvent, addEvent, updateEvent } from '@/api/basecfg/objEvent'
  307. import { getAttr, delAttr, addAttr, updateAttr } from '@/api/basecfg/objAttribute'
  308. import { getAbility, delAbility, addAbility, updateAbility } from '@/api/basecfg/objAbility'
  309. export default {
  310. name: 'Model',
  311. data() {
  312. return {
  313. // 遮罩层
  314. loading: true,
  315. // 选中数组
  316. ids: [],
  317. // 非单个禁用
  318. single: true,
  319. // 非多个禁用
  320. multiple: true,
  321. // 显示搜索条件
  322. showSearch: true,
  323. // 总条数
  324. total: 0,
  325. // 能源对象属性表格数据
  326. modelList: [],
  327. filteredModelList:[],
  328. activeObjType: '1', // 当前激活的 objType
  329. // 弹出层标题
  330. title: '',
  331. // 是否显示弹出层
  332. open: false,
  333. eventOpen: false,
  334. attrOpen: false,
  335. abilityOpen: false,
  336. // 查询参数
  337. queryParams: {
  338. pageNum: 1,
  339. pageSize: 10,
  340. modelCode: null,
  341. modelName: null,
  342. objType: null
  343. },
  344. objTypeMapping: {
  345. 1: '设施',
  346. 2: '设备',
  347. 3: '设备部件'
  348. },
  349. objTypeOptions: [
  350. { code: 1, name: '设施' },
  351. { code: 2, name: '设备' },
  352. { code: 3, name: '设备部件' }
  353. ],
  354. objEventTypeOptions: [
  355. { code: 1, name: '信息上报' },
  356. { code: 2, name: '异常警告' },
  357. ],
  358. attrTypeOptions: [
  359. { "label": "静态属性", "value": 1 },
  360. { "label": "动态属性", "value": 2 }
  361. ],
  362. // 查询参数
  363. queryEventParams: {
  364. pageNum: 1,
  365. pageSize: 10
  366. },
  367. queryAttrParams: {
  368. pageNum: 1,
  369. pageSize: 10
  370. },
  371. queryAbilityParams: {
  372. pageNum: 1,
  373. pageSize: 10
  374. },
  375. curRow: {},
  376. // 表单参数
  377. form: {
  378. id: null,
  379. modelCode: null,
  380. modelName: null,
  381. objType: null // 这里将由标签页控制
  382. },
  383. eventForm: {},
  384. attrForm: {},
  385. abilityForm: {},
  386. // 表单校验
  387. rules: {
  388. modelCode: [
  389. { required: true, message: '模型code不能为空', trigger: 'blur' }
  390. ],
  391. modelName: [
  392. { required: true, message: '模型名称不能为空', trigger: 'blur' }
  393. ],
  394. objType: [
  395. { required: true, message: '对象类型不能为空', trigger: 'change' }
  396. ]
  397. },
  398. eventRules: {
  399. modelCode: [
  400. { required: true, message: '模型code不能为空', trigger: 'blur' }
  401. ],
  402. eventKey: [
  403. { required: true, message: '事件名称不能为空', trigger: 'blur' }
  404. ],
  405. eventType: [
  406. { required: true, message: '事件类型不能为空', trigger: 'change' }
  407. ],
  408. eventName: [
  409. { required: true, message: '事件名称不能为空', trigger: 'blur' }
  410. ]
  411. },
  412. attrRules: {
  413. modelCode: [
  414. { required: true, message: '模型code不能为空', trigger: 'blur' }
  415. ],
  416. attrKey: [
  417. { required: true, message: '属性标识不能为空', trigger: 'blur' }
  418. ],
  419. attrName: [
  420. { required: true, message: '属性名称不能为空', trigger: 'blur' }
  421. ]
  422. },
  423. abilityRules: {
  424. modelCode: [
  425. { required: true, message: '模型code不能为空', trigger: 'blur' }
  426. ],
  427. abilityKey: [
  428. { required: true, message: '能力键不能为空', trigger: 'blur' }
  429. ],
  430. abilityName: [
  431. { required: true, message: '能力名称不能为空', trigger: 'blur' }
  432. ]
  433. },
  434. // 能源对象事件表格数据
  435. eventList: [],
  436. // 能源对象属性表格数据
  437. attrList: [],
  438. // 能源对象能力表格数据
  439. abilityList: [],
  440. showDrawer: false,
  441. subDialogShow: false,
  442. // subTitle: '',
  443. subKey: 'attr'
  444. }
  445. },
  446. // computed: {
  447. // filteredModelList() {
  448. // // 根据当前激活的 objType 过滤模型列表
  449. // return this.modelList.filter(item => item.objType.toString() === this.activeObjType);
  450. // }
  451. // },
  452. // watch: {
  453. // activeObjType(newVal) {
  454. // // 当激活的 objType 变化时,重新获取列表数据
  455. // this.getList();
  456. // }
  457. // },
  458. created() {
  459. this.getList()
  460. },
  461. methods: {
  462. handleTabClick(tab) {
  463. this.activeObjType = tab.name;
  464. this.form.objType = null; // 重置表单时清除预设的 objType
  465. this.getList();
  466. },
  467. // 设配详情
  468. handleDetail(row) {
  469. this.showDrawer = true
  470. this.curRow = row
  471. console.log('模型代码', this.modelCode)
  472. getModel(this.curRow.id).then(response => {
  473. const data = response.data
  474. console.log('data', data)
  475. this.attrList = data.attrList
  476. this.eventList = data.eventList
  477. this.abilityList = data.abilityList
  478. })
  479. },
  480. /** 新增按钮操作 */
  481. handleAttrAdd() {
  482. this.attrReset()
  483. this.attrOpen = true
  484. this.title = '添加能源对象属性'
  485. this.attrForm.modelCode= this.curRow.modelCode
  486. },
  487. handleEventAdd() {
  488. this.eventReset()
  489. this.eventOpen = true
  490. this.title = '添加能源对象事件'
  491. this.eventForm.modelCode= this.curRow.modelCode
  492. },
  493. handleAbilityAdd() {
  494. this.abilityReset()
  495. this.abilityOpen = true
  496. this.title = '添加能源对象事件'
  497. this.abilityForm.modelCode= this.curRow.modelCode
  498. },
  499. /** 查询能源对象属性列表 */
  500. getList() {
  501. this.loading = true
  502. listModel({ objType: this.activeObjType }).then(response => {
  503. this.modelList = response.rows
  504. this.total = response.total
  505. this.loading = false
  506. })
  507. },
  508. getEventList(modelcode) {
  509. console.log('对象事件!!!!')
  510. this.loading = true
  511. getModelByCode(modelcode).then(response => {
  512. const data = response.data
  513. console.log('data', data)
  514. this.attrList = data.attrList
  515. this.eventList = data.eventList
  516. this.abilityList = data.abilityList
  517. })
  518. this.loading = false
  519. },
  520. /** 查询能源对象属性列表 */
  521. getAttrList(modelcode) {
  522. this.loading = true
  523. getModelByCode(modelcode).then(response => {
  524. const data = response.data
  525. console.log('data', data)
  526. this.attrList = data.attrList
  527. this.eventList = data.eventList
  528. this.abilityList = data.abilityList
  529. })
  530. this.loading = false
  531. },
  532. /** 查询能源对象能力列表 */
  533. getAbilityList(modelcode) {
  534. this.loading = true
  535. console.log('对象能力!!!!')
  536. getModelByCode(modelcode).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. this.loading = false
  544. },
  545. // 表单重置
  546. attrReset() {
  547. this.attrForm = {
  548. id: null,
  549. modelCode: this.curRow.modelCode || '',
  550. attrKey: null,
  551. attrType: null,
  552. attrName: null,
  553. attrValue: null,
  554. attrUnit: null
  555. }
  556. this.resetForm('attrForm')
  557. },
  558. eventReset() {
  559. this.eventForm = {
  560. id: null,
  561. modelCode: this.curRow.modelCode || '',
  562. eventKey: null,
  563. eventType: null,
  564. eventName: null,
  565. eventDesc: null,
  566. eventCode: null,
  567. extEventCode: null
  568. }
  569. this.resetForm('eventForm')
  570. },
  571. abilityReset() {
  572. this.abilityForm = {
  573. id: null,
  574. modelCode: this.curRow.modelCode || '',
  575. abilityKey: null,
  576. abilityName: null,
  577. abilityDesc: null,
  578. abilityParam: null
  579. }
  580. this.resetForm('abilityForm')
  581. },
  582. /** 修改按钮操作 */
  583. handleAttrUpdate(row) {
  584. this.attrReset()
  585. const id = row.id || this.ids
  586. getAttr(id).then(response => {
  587. this.attrForm = response.data
  588. this.attrOpen = true
  589. this.title = '修改能源对象属性'
  590. this.attrForm.modelCode= this.curRow.modelCode
  591. })
  592. },
  593. handleEventUpdate(row) {
  594. this.eventReset()
  595. const id = row.id || this.ids
  596. getEvent(id).then(response => {
  597. this.eventForm = response.data
  598. this.eventOpen = true
  599. this.title = '修改能源对象事件'
  600. this.attrForm.modelCode= this.curRow.modelCode
  601. })
  602. },
  603. handleAbilityUpdate(row) {
  604. this.abilityReset()
  605. const id = row.id || this.ids
  606. getAbility(id).then(response => {
  607. this.abilityForm = response.data
  608. this.abilityOpen = true
  609. this.title = '修改能源对象能力'
  610. this.attrForm.modelCode= this.curRow.modelCode
  611. })
  612. },
  613. /** 删除按钮操作 */
  614. handleAttrDelete(row) {
  615. const ids = row.id || this.ids
  616. this.$modal.confirm('是否确认删除能源对象属性编号为"' + ids + '"的数据项?').then(function() {
  617. return delAttr(ids)
  618. }).then(() => {
  619. console.log('删除row', row.modelCode)
  620. this.getAttrList(row.modelCode)
  621. this.$modal.msgSuccess('删除成功')
  622. }).catch(() => {
  623. })
  624. },
  625. handleEventDelete(row) {
  626. const ids = row.id || this.ids
  627. this.$modal.confirm('是否确认删除能源对象事件编号为"' + ids + '"的数据项?').then(function() {
  628. return delEvent(ids)
  629. }).then(() => {
  630. console.log('删除row', row.modelCode)
  631. this.getEventList(row.modelCode)
  632. this.$modal.msgSuccess('删除成功')
  633. }).catch(() => {
  634. })
  635. },
  636. handleAbilityDelete(row) {
  637. const ids = row.id || this.ids
  638. this.$modal.confirm('是否确认删除能源对象能力编号为"' + ids + '"的数据项?').then(function() {
  639. return delAbility(ids)
  640. }).then(() => {
  641. console.log('删除row', row.modelCode)
  642. this.getAbilityList(row.modelCode)
  643. this.$modal.msgSuccess('删除成功')
  644. }).catch(() => {
  645. })
  646. },
  647. /** 提交按钮 */
  648. submitAttrForm() {
  649. this.$refs['attrForm'].validate(valid => {
  650. if (valid) {
  651. if (this.attrForm.id != null) {
  652. updateAttr(this.attrForm).then(response => {
  653. this.$modal.msgSuccess('修改成功')
  654. this.attrOpen = false
  655. console.log('id', this.attrForm.modelCode)
  656. this.getAttrList(this.attrForm.modelCode)
  657. })
  658. } else {
  659. addAttr(this.attrForm).then(response => {
  660. this.$modal.msgSuccess('新增成功')
  661. this.attrOpen = false
  662. this.getAttrList(this.attrForm.modelCode)
  663. })
  664. }
  665. }
  666. })
  667. },
  668. submitEventForm() {
  669. this.$refs['eventForm'].validate(valid => {
  670. if (valid) {
  671. if (this.eventForm.id != null) {
  672. updateEvent(this.eventForm).then(response => {
  673. this.$modal.msgSuccess('修改成功')
  674. this.eventOpen = false
  675. console.log('id', this.eventForm)
  676. this.getEventList(this.eventForm.modelCode)
  677. })
  678. } else {
  679. addEvent(this.eventForm).then(response => {
  680. this.$modal.msgSuccess('新增成功')
  681. this.eventOpen = false
  682. console.log('id', this.eventForm)
  683. this.getEventList(this.eventForm.modelCode)
  684. })
  685. }
  686. }
  687. })
  688. },
  689. submitAbilityForm() {
  690. this.$refs['abilityForm'].validate(valid => {
  691. if (valid) {
  692. if (this.abilityForm.id != null) {
  693. updateAbility(this.abilityForm).then(response => {
  694. this.$modal.msgSuccess('修改成功')
  695. this.abilityOpen = false
  696. this.getAbilityList(this.abilityForm.modelCode)
  697. })
  698. } else {
  699. addAbility(this.abilityForm).then(response => {
  700. this.$modal.msgSuccess('新增成功')
  701. this.abilityOpen = false
  702. this.getAbilityList(this.abilityForm.modelCode)
  703. })
  704. }
  705. }
  706. })
  707. },
  708. // 取消按钮
  709. attrCancel() {
  710. this.attrOpen = false
  711. this.attrReset()
  712. },
  713. eventCancel() {
  714. this.eventOpen = false
  715. this.eventReset()
  716. },
  717. // 取消按钮
  718. abilityCancel() {
  719. this.abilityOpen = false
  720. this.abilityReset()
  721. },
  722. // 取消按钮
  723. cancel() {
  724. this.open = false
  725. this.reset()
  726. },
  727. // 表单重置
  728. reset() {
  729. this.form = {
  730. id: null,
  731. modelCode: null,
  732. modelName: null,
  733. objType: null
  734. }
  735. this.resetForm('form')
  736. },
  737. /** 搜索按钮操作 */
  738. handleQuery() {
  739. this.queryParams.pageNum = 1
  740. this.getList()
  741. },
  742. /** 重置按钮操作 */
  743. resetQuery() {
  744. this.resetForm('queryForm')
  745. this.handleQuery()
  746. },
  747. // 多选框选中数据
  748. handleSelectionChange(selection) {
  749. this.ids = selection.map(item => item.id)
  750. this.single = selection.length !== 1
  751. this.multiple = !selection.length
  752. },
  753. /** 新增按钮操作 */
  754. handleAdd() {
  755. this.reset()
  756. this.open = true
  757. this.title = '添加能源对象属性'
  758. this.form.objType = this.activeObjType; // 设置默认对象类型
  759. },
  760. /** 修改按钮操作 */
  761. handleUpdate(row) {
  762. this.reset()
  763. const id = row.id || this.ids
  764. getModel(id).then(response => {
  765. this.form = response.data
  766. this.form.objType = this.activeObjType; // 设置默认对象类型
  767. this.open = true
  768. this.title = '修改能源对象属性'
  769. })
  770. },
  771. /** 提交按钮 */
  772. submitForm() {
  773. this.$refs['form'].validate(valid => {
  774. if (valid) {
  775. if (this.form.id != null) {
  776. updateModel(this.form).then(response => {
  777. this.$modal.msgSuccess('修改成功')
  778. this.open = false
  779. this.getList()
  780. })
  781. } else {
  782. addModel(this.form).then(response => {
  783. this.$modal.msgSuccess('新增成功')
  784. this.open = false
  785. this.getList()
  786. })
  787. }
  788. }
  789. })
  790. },
  791. /** 删除按钮操作 */
  792. handleDelete(row) {
  793. const ids = row.id || this.ids
  794. this.$modal.confirm('是否确认删除能源对象属性编号为"' + ids + '"的数据项?').then(function() {
  795. return delModel(ids)
  796. }).then(() => {
  797. this.getList()
  798. this.$modal.msgSuccess('删除成功')
  799. }).catch(() => {
  800. })
  801. }
  802. }
  803. }
  804. </script>