DeviceModal.vue 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @register="registerModal"
  5. :title="title"
  6. width="900px"
  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. <template v-if="deviceType == 'managesys'">
  18. <WorkFacePointTable :columns="pointColumns" :deviceId="deviceData.id" @save="savePointData" @delete="deletePointById" />
  19. </template>
  20. <template v-else>
  21. <PointTable :columns="pointColumns" :deviceId="deviceData.id" @save="savePointData" @delete="deletePointById" />
  22. </template>
  23. </a-tab-pane>
  24. <a-tab-pane key="3" tab="摄像头配置"
  25. ><EditRowTable
  26. :columns="cameraColumns"
  27. :list="cameraList.bind(null, { deviceId: deviceData.id })"
  28. @saveOrUpdate="saveCameraData"
  29. @deleteById="deleteCameraById"
  30. :isAdd="true"
  31. /></a-tab-pane>
  32. </a-tabs>
  33. <FormModal v-else :record="record" @saveOrUpdate="(values) => emit('saveOrUpdate', values)" />
  34. </BasicModal>
  35. </template>
  36. <script lang="ts" setup>
  37. import { computed, unref, inject, reactive } from 'vue';
  38. import { BasicModal, useModalInner } from '/@/components/Modal';
  39. import EditRowTable from '../../comment/EditRowTable.vue';
  40. import PointTable from './pointTabel/PointTable.vue';
  41. import WorkFacePointTable from './pointTabel/WorkFacePointTable.vue';
  42. import FormModal from './FormModal.vue';
  43. import { cloneDeep } from 'lodash-es';
  44. import { columns as pointColumns } from './pointTabel/point.data';
  45. import { saveOrUpdate as pointSaveOrUpdate, deleteById as pointDeleteById } from './pointTabel/point.api';
  46. import { columns as cameraColumns } from './cameraTabel/camera.data';
  47. import { list as cameraList, saveOrUpdate as cameraSaveOrUpdate, deleteById as cameraDeleteById } from './cameraTabel/camera.api';
  48. const props = defineProps({
  49. showTab: { type: Boolean, required: true },
  50. deviceType: { type: String },
  51. });
  52. // 声明Emits
  53. const emit = defineEmits(['saveOrUpdate', 'register']);
  54. const isUpdate = inject('isUpdate');
  55. const deviceData = inject('formData') as any;
  56. const record = reactive({});
  57. //表单赋值
  58. const [registerModal, { setModalProps }] = useModalInner(async (data) => {
  59. //重置表单
  60. setModalProps({ confirmLoading: false });
  61. Object.assign(record, data.record);
  62. });
  63. //设置标题
  64. const title = computed(() => (!unref(isUpdate) ? '新增' : '编辑'));
  65. const savePointData = (data) => {
  66. debugger;
  67. const record = cloneDeep(data.editValueRefs);
  68. pointSaveOrUpdate(Object.assign(record, { id: data.id, deviceId: deviceData.id }), data.id);
  69. };
  70. const saveCameraData = (data: any) => {
  71. const record = cloneDeep(data.editValueRefs);
  72. cameraSaveOrUpdate(Object.assign(record, { id: data.id, deviceId: deviceData.id }), data.id);
  73. };
  74. const deletePointById = (id, reload) => {
  75. pointDeleteById({ id: id }, reload);
  76. };
  77. const deleteCameraById = (id, reload) => {
  78. cameraDeleteById({ id: id }, reload);
  79. };
  80. </script>
  81. <style scoped lang="less"></style>