报警弹框操作增加禁用逻辑和禁选逻辑

This commit is contained in:
joylink_zhaoerwei 2024-10-22 16:11:24 +08:00
parent 330f7cc809
commit 3ecc0558b1
6 changed files with 67 additions and 5 deletions

View File

@ -63,6 +63,8 @@ export interface Item {
drivingInfo: string;
submissionInfo: string;
alarmStatus: number;
lineId: number;
lineType: string;
}
/**

View File

@ -49,11 +49,22 @@
/>
<q-card-actions align="left">
<div class="q-gutter-md">
<q-btn color="primary" label="确认" type="submit" />
<q-btn color="red" label="误报" @click="falseAlarm" />
<q-btn
color="primary"
label="确认"
:disable="operateDisabled"
type="submit"
/>
<q-btn
color="red"
label="误报"
:disable="operateDisabled"
@click="falseAlarm"
/>
<q-btn
color="primary"
label="人工接警"
:disable="operateDisabled"
@click="manualAlarm"
/>
</div>
@ -88,7 +99,7 @@
<script setup lang="ts">
import DraggableDialog from '../common/DraggableDialog.vue';
import { useLineNetStore, AlarmInfo } from 'src/stores/line-net-store';
import { onMounted, ref } from 'vue';
import { computed, onMounted, ref } from 'vue';
import { QForm, useQuasar } from 'quasar';
import { saveAlertTypeData, showAlertTypeData } from './alarmInfoEnum';
import {
@ -97,6 +108,8 @@ import {
recordManualAlarmInfoById,
} from 'src/api/AlertMock';
import { queryAlarmInfoById } from 'src/api/DecisionInfo';
import { useUserStore } from 'src/stores/user-store';
import { getMonitorPath } from 'src/router/routes';
const props = defineProps<{
alarmMeaasge?: AlarmInfo;
@ -124,6 +137,7 @@ const alarmInfo = ref({
level: '',
time: '',
lineId: '',
lineType: '',
alertObject: '',
alertType: '',
locator_device_id: '',
@ -203,6 +217,7 @@ function updata() {
];
alarmInfo.value.alertObject = messageUse.alert_object.replace(/\[|]/g, '');
alarmInfo.value.lineId = messageUse.line_id;
alarmInfo.value.lineType = messageUse.line_type;
}
async function searchByTipType() {
@ -237,6 +252,15 @@ async function searchById() {
});
}
}
const userStore = useUserStore();
const operateDisabled = computed(() => {
const config = getMonitorPath(userStore.roles);
const disabled =
config.lineType == alarmInfo.value.lineType &&
config.lineIds.includes(+alarmInfo.value.lineId);
return !disabled;
});
</script>
<style lang='scss' scoped>

View File

@ -274,6 +274,13 @@ const columnDefs: QTableColumn[] = [
field: 'lineId',
align: 'center',
},
{
name: 'lineType',
label: '线路类型',
field: 'lineType',
required: true,
align: 'center',
},
{
name: 'alertObject',
label: '设备',
@ -392,8 +399,12 @@ watch(
);
function updateSelect() {
const config = getMonitorPath(userStore.roles);
for (let i = 0; i < selected.value.length; i++) {
if (selected.value[i].alarmStatus !== -1) {
const canSelect =
config.lineType == selected.value[i].lineType &&
config.lineIds.includes(+selected.value[i].lineId);
if (selected.value[i].alarmStatus !== -1 || !canSelect) {
selected.value.splice(i, 1);
i--;
}
@ -538,6 +549,7 @@ function openAlarmDialog(row: any) {
row.alert_time = row.alertTime;
row.alert_type = row.alertType;
row.line_id = row.lineId;
row.line_type = row.lineType;
row.alert_object = row.alertObject;
row.alert_tip_id = row.alertTipId;
row.alert_location_id = row.alertLocationId;

View File

@ -87,6 +87,7 @@ export namespace alert {
locator_device_id?: string;
alert_location_id?: number;
mock?: boolean;
line_type?: string;
}) {
super();
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
@ -121,6 +122,9 @@ export namespace alert {
if ("mock" in data && data.mock != undefined) {
this.mock = data.mock;
}
if ("line_type" in data && data.line_type != undefined) {
this.line_type = data.line_type;
}
}
}
get id() {
@ -183,6 +187,12 @@ export namespace alert {
set mock(value: boolean) {
pb_1.Message.setField(this, 10, value);
}
get line_type() {
return pb_1.Message.getFieldWithDefault(this, 11, "") as string;
}
set line_type(value: string) {
pb_1.Message.setField(this, 11, value);
}
static fromObject(data: {
id?: string;
level?: string;
@ -194,6 +204,7 @@ export namespace alert {
locator_device_id?: string;
alert_location_id?: number;
mock?: boolean;
line_type?: string;
}): Message {
const message = new Message({});
if (data.id != null) {
@ -226,6 +237,9 @@ export namespace alert {
if (data.mock != null) {
message.mock = data.mock;
}
if (data.line_type != null) {
message.line_type = data.line_type;
}
return message;
}
toObject() {
@ -240,6 +254,7 @@ export namespace alert {
locator_device_id?: string;
alert_location_id?: number;
mock?: boolean;
line_type?: string;
} = {};
if (this.id != null) {
data.id = this.id;
@ -271,6 +286,9 @@ export namespace alert {
if (this.mock != null) {
data.mock = this.mock;
}
if (this.line_type != null) {
data.line_type = this.line_type;
}
return data;
}
serialize(): Uint8Array;
@ -297,6 +315,8 @@ export namespace alert {
writer.writeInt64(9, this.alert_location_id);
if (this.mock != false)
writer.writeBool(10, this.mock);
if (this.line_type.length)
writer.writeString(11, this.line_type);
if (!w)
return writer.getResultBuffer();
}
@ -336,6 +356,9 @@ export namespace alert {
case 10:
message.mock = reader.readBool();
break;
case 11:
message.line_type = reader.readString();
break;
default: reader.skipField();
}
}

View File

@ -14,6 +14,7 @@ export interface AlarmInfo {
alert_time: string;
alert_tip_id: number;
line_id: string;
line_type: string;
alert_object: string;
alert_type: number;
locator_device_id: string;

@ -1 +1 @@
Subproject commit c20feed4b6ae3bdd02cb21b4cc5af03c55be869b
Subproject commit 4f9012b0795f62bf352b078ebbc1b1fffa86849d