DeviceModal.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @register="registerModal"
  5. :title="title"
  6. width="1000px"
  7. :showCancelBtn="false"
  8. :showOkBtn="false"
  9. :footer="null"
  10. destroyOnClose
  11. >
  12. <a-tabs v-if="props.showTab">
  13. <a-tab-pane key="1" tab="基本信息" force-render>
  14. <FormModal :record="record" @saveOrUpdate="(values) => emit('saveOrUpdate', values)" />
  15. </a-tab-pane>
  16. <a-tab-pane key="2" tab="点表关联">
  17. <PointTable
  18. v-if="record.strtype"
  19. :columns="pointColumns"
  20. :pointType="record.strtype"
  21. :deviceId="deviceData.id"
  22. @save="savePointData"
  23. @delete="deletePointById"
  24. />
  25. </a-tab-pane>
  26. <a-tab-pane key="3" tab="设备关联" v-if="deviceType == 'managesys'">
  27. <WorkFacePointTable :columns="pointColumns" :deviceId="deviceData.id" @save="savePointData" @delete="deletePointById" />
  28. </a-tab-pane>
  29. <a-tab-pane key="4" :tab="deviceType !== 'managesys' ? '报警配置' : '关联设备报警配置'">
  30. <WarningTable v-if="deviceType !== 'managesys'" :deviceId="deviceData.id" :pointType="record.strtype" />
  31. <ManagerWarningTable v-else :deviceId="deviceData.id" :pointType="record.strtype"/>
  32. </a-tab-pane>
  33. <a-tab-pane v-if="deviceType == 'managesys'" key = "6" tab="报警控制设备配置">
  34. <ManagerWarningDeviceTable :deviceId="deviceData.id" :pointType="record.strtype"/>
  35. </a-tab-pane>
  36. <a-tab-pane key="5" tab="摄像头配置"
  37. ><EditRowTable
  38. :columns="cameraColumns"
  39. :list="cameraList.bind(null, { deviceid: deviceData.id })"
  40. @saveOrUpdate="saveCameraData"
  41. @deleteById="deleteCameraById"
  42. :isAdd="true"
  43. /></a-tab-pane>
  44. </a-tabs>
  45. <FormModal v-else :record="record" @saveOrUpdate="(values) => emit('saveOrUpdate', values)" />
  46. </BasicModal>
  47. </template>
  48. <script lang="ts" setup>
  49. import { computed, unref, inject, reactive } from 'vue';
  50. import { BasicModal, useModalInner } from '/@/components/Modal';
  51. import EditRowTable from '../../comment/EditRowTable.vue';
  52. import PointTable from './pointTabel/PointTable.vue';
  53. import WarningTable from './warningTabel/index.vue';
  54. import ManagerWarningTable from './warningTabel/index1.vue';
  55. import ManagerWarningDeviceTable from './warningTabel/index2.vue';
  56. import WorkFacePointTable from './pointTabel/WorkFacePointTable.vue';
  57. import FormModal from './FormModal.vue';
  58. import { cloneDeep } from 'lodash-es';
  59. import { columns as pointColumns } from './pointTabel/point.data';
  60. import { saveOrUpdate as pointSaveOrUpdate, deleteById as pointDeleteById, warningDeleteById } from './pointTabel/point.api';
  61. import { columns as cameraColumns } from './cameraTabel/camera.data';
  62. import { list as cameraList, saveOrUpdate as cameraSaveOrUpdate, deleteById as cameraDeleteById } from './cameraTabel/camera.api';
  63. const props = defineProps({
  64. showTab: { type: Boolean, required: true },
  65. deviceType: { type: String },
  66. });
  67. // 声明Emits
  68. const emit = defineEmits(['saveOrUpdate', 'register']);
  69. const isUpdate = inject('isUpdate');
  70. const deviceData = inject('formData') as any;
  71. const record = reactive({ strtype: '', strname: '' });
  72. //表单赋值
  73. const [registerModal, { setModalProps }] = useModalInner(async (data) => {
  74. //重置表单
  75. setModalProps({ confirmLoading: false });
  76. Object.assign(record, data.record);
  77. });
  78. //设置标题
  79. const title = computed(
  80. () => {
  81. if (!unref(isUpdate)) {
  82. if (record.strname || record.systemname) {
  83. return `新增(${record.strname || record.systemname})`;
  84. }
  85. return `新增`;
  86. } else {
  87. if (record.strname || record.systemname) {
  88. return `编辑(${record.strname || record.systemname})`;
  89. }
  90. return `编辑`;
  91. }
  92. }
  93. // !unref(isUpdate) ? `新增(${record.strname || record.systemname})` : `编辑(${record.strname || record.systemname})`
  94. );
  95. const savePointData = (data) => {
  96. const record = cloneDeep(data.editValueRefs);
  97. pointSaveOrUpdate(Object.assign(record, { id: data.id, deviceId: deviceData.id }), data.id);
  98. };
  99. const saveCameraData = (data: any) => {
  100. const record = cloneDeep(data.editValueRefs);
  101. cameraSaveOrUpdate(Object.assign(record, { id: data.id, deviceid: deviceData.id }), data.id);
  102. };
  103. const deletePointById = (id, reload) => {
  104. pointDeleteById({ id: id }, reload);
  105. };
  106. const deleteCameraById = (id, reload) => {
  107. cameraDeleteById({ id: id }, reload);
  108. };
  109. </script>
  110. <style scoped lang="less">
  111. ::v-deep .suffix {
  112. height: 32px;
  113. line-height: 32px;
  114. margin-left: 5px;
  115. color: #fff;
  116. }
  117. </style>