|
@@ -0,0 +1,150 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <EditRowTableVue
|
|
|
+ v-if="refreshParent"
|
|
|
+ ref="ParentRef"
|
|
|
+ :columns="warningColumns"
|
|
|
+ :list="list"
|
|
|
+ :params="{ deviceid: deviceId }"
|
|
|
+ @save-or-update="saveOrUpdateParent"
|
|
|
+ @delete-by-id="parentDeleteById"
|
|
|
+ @row-change="changeParentRow"
|
|
|
+ :isAdd="true"
|
|
|
+ :isRadio="true"
|
|
|
+ :scroll="{ y: 200 }"
|
|
|
+ >
|
|
|
+ <template #filterCell="{ column, record }">
|
|
|
+ <template v-if="column.dataIndex === 'monitorcode'">
|
|
|
+ <div v-if="record.editable" style="position: relative">
|
|
|
+ <Select
|
|
|
+ :options="options"
|
|
|
+ v-model:value="record['monitorcode']"
|
|
|
+ :fieldNames="{ label: 'valuename', value: 'valuecode' }"
|
|
|
+ size="small"
|
|
|
+ style="min-width: 100px"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div v-else>{{ getLabel(record['monitorcode']) }}</div>
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ </EditRowTableVue>
|
|
|
+ <div style="color: #efefef; margin-top: 8px">注: 请先选中监测参数才能添加报警等级</div>
|
|
|
+ <EditRowTableVue
|
|
|
+ v-if="refresh && warningProId !== ''"
|
|
|
+ ref="RefChildComponent"
|
|
|
+ :columns="levelColumns"
|
|
|
+ :list="limitList"
|
|
|
+ :params="{ limitid: warningProId }"
|
|
|
+ @save-or-update="saveOrUpdateChild"
|
|
|
+ @delete-by-id="childDeleteById"
|
|
|
+ :isAdd="true"
|
|
|
+ style="margin-top: 10px"
|
|
|
+ :scroll="{ y: 200 }"
|
|
|
+ />
|
|
|
+ <a-table v-else :dataSource="[]" :columns="levelColumns" style="margin-top: 10px" />
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script lang="ts" setup>
|
|
|
+ import { Select } from 'ant-design-vue';
|
|
|
+ import EditRowTableVue from '../../../comment/EditRowTable.vue';
|
|
|
+ import { warningColumns, levelColumns } from './warning.data';
|
|
|
+ import { list, limitList, edit, save, limitSave, limitEdit, deleteById, limitDeleteById } from './warning.api';
|
|
|
+ import { list as pointList } from '../pointTabel/point.api';
|
|
|
+ import { defineProps, ref, nextTick, inject, onMounted, onBeforeMount } from 'vue';
|
|
|
+
|
|
|
+ const props = defineProps({
|
|
|
+ deviceId: { type: String },
|
|
|
+ pointType: {
|
|
|
+ type: String,
|
|
|
+ requried: true,
|
|
|
+ },
|
|
|
+ });
|
|
|
+ const ParentRef = ref();
|
|
|
+ const options = ref([]);
|
|
|
+ const RefChildComponent = ref();
|
|
|
+ const warningProId = ref('');
|
|
|
+ const currentParent = ref({});
|
|
|
+ const refresh = ref(true);
|
|
|
+ const refreshParent = ref(true);
|
|
|
+
|
|
|
+ async function saveOrUpdateParent(record) {
|
|
|
+ try {
|
|
|
+ if (record.id) {
|
|
|
+ currentParent.value = record;
|
|
|
+ await edit({ ...record });
|
|
|
+ } else {
|
|
|
+ await save({ ...record, deviceid: props.deviceId, devicetype: props.pointType });
|
|
|
+ }
|
|
|
+ // refreshParent.value = false;
|
|
|
+ if (ParentRef.value) {
|
|
|
+ await ParentRef.value.reload();
|
|
|
+ nextTick(() => {
|
|
|
+ const parentList = ParentRef.value.getDataSource();
|
|
|
+ if (record.id) {
|
|
|
+ ParentRef.value.setSelectedRowKeys([record.id]);
|
|
|
+ } else {
|
|
|
+ ParentRef.value.setSelectedRowKeys([parentList[0]['id']]);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } catch (error) {}
|
|
|
+ }
|
|
|
+ async function saveOrUpdateChild(record) {
|
|
|
+ if (record.id) {
|
|
|
+ await limitEdit({ ...record });
|
|
|
+ } else {
|
|
|
+ await limitSave({
|
|
|
+ ...record.editValueRefs,
|
|
|
+ limitid: warningProId.value,
|
|
|
+ code: currentParent.value['monitorcode'],
|
|
|
+ devicetype: props.pointType,
|
|
|
+ deviceid: props.deviceId,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ // refresh.value = false;
|
|
|
+ if (RefChildComponent.value) {
|
|
|
+ await RefChildComponent.value.reload();
|
|
|
+ nextTick(() => {
|
|
|
+ const childList = RefChildComponent.value.getDataSource();
|
|
|
+ RefChildComponent.value.setSelectedRowKeys([childList[0]['id']]);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ function parentDeleteById(id, reload) {
|
|
|
+ deleteById({ id: id }, reload);
|
|
|
+ }
|
|
|
+ function childDeleteById(id, reload) {
|
|
|
+ limitDeleteById({ id: id }, reload);
|
|
|
+ }
|
|
|
+ function changeParentRow(id, rowData) {
|
|
|
+ warningProId.value = id;
|
|
|
+ currentParent.value = rowData;
|
|
|
+ refresh.value = false;
|
|
|
+ nextTick(() => {
|
|
|
+ refresh.value = true;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ function getLabel(code) {
|
|
|
+ const obj = options.value.find((item) => item['valuecode'] === code);
|
|
|
+ if (obj) {
|
|
|
+ return obj['valuename'];
|
|
|
+ }
|
|
|
+ return code;
|
|
|
+ }
|
|
|
+ onBeforeMount(async () => {
|
|
|
+ const res = await pointList({ devicetype: props.pointType, valuetype_begin: 2 });
|
|
|
+ options.value = res && res['records'] ? res['records'] : [];
|
|
|
+ });
|
|
|
+ onMounted(async () => {
|
|
|
+ if (ParentRef.value) {
|
|
|
+ await ParentRef.value.reload();
|
|
|
+ nextTick(() => {
|
|
|
+ const parentList = ParentRef.value.getDataSource();
|
|
|
+ ParentRef.value.setSelectedRowKeys([parentList[0]['id']]);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped></style>
|