|
|
@@ -1,15 +1,15 @@
|
|
|
<template>
|
|
|
<div class="algoCardWrapper">
|
|
|
- <div style="display: flex; justify-content: space-between">
|
|
|
- <ElSelect v-model="selectedAlgoId" style="width: 150px">
|
|
|
+ <div class="algoCardTitle">
|
|
|
+ <ElSelect v-model="selectedAlgoId" style="width: 150px" size="small">
|
|
|
<ElOption v-for="item in allAlgoList" :key="item.id" :value="item.id" :label="item.name">
|
|
|
{{ item.name }}
|
|
|
<span style="margin-left: 5px" v-if="isAlgoBind(item.id)">√</span>
|
|
|
</ElOption>
|
|
|
</ElSelect>
|
|
|
- <ElSwitch v-model="enableCard" />
|
|
|
+ <ElSwitch v-model="enableCard" size="small" />
|
|
|
</div>
|
|
|
- <div>
|
|
|
+ <div class="algoCardMain">
|
|
|
<div class="algoRow">
|
|
|
<div class="algoLabel">电子围栏:</div>
|
|
|
<div>
|
|
|
@@ -36,7 +36,6 @@
|
|
|
:clearable="false"
|
|
|
size="small"
|
|
|
style="width: 180px; margin-bottom: 10px"
|
|
|
- @change="handleTimeChange(x.id, $event)"
|
|
|
/>
|
|
|
<span @click="removeTime(x.id)" v-if="timeRangeArr.length > 1">
|
|
|
<el-icon class="removeIcon"><CircleCloseFilled /></el-icon
|
|
|
@@ -79,11 +78,17 @@
|
|
|
import { CircleCloseFilled } from '@element-plus/icons-vue';
|
|
|
import { ref, watch } from 'vue';
|
|
|
import { storeToRefs } from 'pinia';
|
|
|
- import { Dayjs } from 'dayjs';
|
|
|
+ import dayjs, { Dayjs } from 'dayjs';
|
|
|
import addTimeIcon from '@/assets/icons/addTimeIcon.png';
|
|
|
import useCameraAlgoStore from '../../store/useCameraAlgoStore';
|
|
|
- import { STATUS } from './types';
|
|
|
- import { FrequencyEnum, createDefaultTime, frequencyOptions, getDetectionJSON } from './utils';
|
|
|
+ import { STATUS, TimeRangeItem } from './types';
|
|
|
+ import {
|
|
|
+ FrequencyEnum,
|
|
|
+ createDefaultTime,
|
|
|
+ frequencyOptions,
|
|
|
+ getDetectionJSON,
|
|
|
+ getDetectionTimeJSON,
|
|
|
+ } from './utils';
|
|
|
|
|
|
// const { data: algoList, loading } = useAllAlgos();
|
|
|
const cameraAlgoStore = useCameraAlgoStore();
|
|
|
@@ -108,7 +113,7 @@
|
|
|
(e: 'onRemove', algoId: number): Promise<unknown>;
|
|
|
}>();
|
|
|
|
|
|
- const timeRangeArr = ref([createDefaultTime()]);
|
|
|
+ const timeRangeArr = ref<TimeRangeItem[]>([createDefaultTime()]);
|
|
|
|
|
|
const detectionUnit = ref(FrequencyEnum.miniute);
|
|
|
|
|
|
@@ -128,6 +133,7 @@
|
|
|
electronicFence.value = Boolean(detail?.electronicFence);
|
|
|
detectionNum.value = detectionJSON.detectionNum;
|
|
|
detectionUnit.value = detectionJSON.detectionUnit;
|
|
|
+ timeRangeArr.value = getDetectionTimeJSON(detail?.detectionTime) || [createDefaultTime()];
|
|
|
},
|
|
|
{ deep: true, immediate: true },
|
|
|
);
|
|
|
@@ -136,16 +142,12 @@
|
|
|
timeRangeArr.value.push(createDefaultTime());
|
|
|
};
|
|
|
|
|
|
- const handleTimeChange = (...rest) => {
|
|
|
- console.log(timeRangeArr);
|
|
|
- };
|
|
|
-
|
|
|
const removeTime = (id: string) => {
|
|
|
timeRangeArr.value = timeRangeArr.value.filter((x) => x.id !== id);
|
|
|
};
|
|
|
|
|
|
const getTimeStr = (d: Dayjs) => {
|
|
|
- return d.format('HH:mm:ss');
|
|
|
+ return dayjs(d).format('HH:mm:ss');
|
|
|
};
|
|
|
const getTimeStrs = (d: [Dayjs, Dayjs]) => {
|
|
|
return getTimeStr(d[0]) + '-' + getTimeStr(d[1]);
|
|
|
@@ -179,13 +181,13 @@
|
|
|
.algoCardWrapper {
|
|
|
border: 1px solid #ccc;
|
|
|
border-radius: 4px;
|
|
|
- padding: 10px;
|
|
|
+ /* padding: 10px; */
|
|
|
width: 400px;
|
|
|
}
|
|
|
|
|
|
.algoRow {
|
|
|
display: flex;
|
|
|
- margin: 10px;
|
|
|
+ margin: 10px 0;
|
|
|
}
|
|
|
|
|
|
.algoLabel {
|
|
|
@@ -203,4 +205,15 @@
|
|
|
.addTimeIcon {
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
+
|
|
|
+ .algoCardTitle {
|
|
|
+ background: #f0f2f5;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 4px 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .algoCardMain {
|
|
|
+ padding: 10px 20px;
|
|
|
+ }
|
|
|
</style>
|