| | |
| | | electronicAreaId: null as string | null, |
| | | statusList: null as number[] | null, |
| | | type: null as number | null, |
| | | typeStr: null as number[] | null, |
| | | lifecycleRange: null as [number, number] | null, |
| | | startTime: '', |
| | | endTime: '', |
| | |
| | | const isPointAreaSelectOpen = ref(false) |
| | | const isFenceStatusListOpen = ref(false) |
| | | const isFenceElectronicAreaIdOpen = ref(false) |
| | | const isFenceStrategyTypeOpen = ref(false) |
| | | const isFenceStrategyWeekOpen = ref(false) |
| | | const isStationStatusOpen = ref(false) |
| | | const isStationPointNumOpen = ref(false) |
| | | const isFenceCityOpen = ref(false) |
| | |
| | | return labels.length ? labels.join('、') : '-' |
| | | } |
| | | return fenceStrategyDateTypeOptions.find(option => option.value === Number(item?.type))?.label || '-' |
| | | } |
| | | |
| | | function normalizeFenceStrategyWeekFilter(value: Array<number | string> | null | undefined) { |
| | | const normalized = (Array.isArray(value) ? value : []) |
| | | .map(item => Number(item)) |
| | | .filter(item => Number.isFinite(item)) |
| | | |
| | | if (normalized.includes(0)) |
| | | return [0] |
| | | |
| | | return Array.from(new Set(normalized)).sort((a, b) => a - b) |
| | | } |
| | | |
| | | function handleFenceStrategyTypeFilterChange(value: number | null) { |
| | | fenceModel.value.type = value |
| | | if (value !== 3) |
| | | fenceModel.value.typeStr = null |
| | | } |
| | | |
| | | function handleFenceStrategyWeekFilterChange(value: Array<number | string> | null) { |
| | | const normalized = normalizeFenceStrategyWeekFilter(value) |
| | | fenceModel.value.typeStr = normalized.length ? normalized : null |
| | | } |
| | | |
| | | function formatFenceStrategyTimeList(item: Record<string, any>) { |
| | |
| | | electronicNumberOrName: fenceModel.value.electronicNumberOrName, |
| | | statusList: fenceModel.value.statusList, |
| | | type: fenceModel.value.type, |
| | | typeStr: fenceModel.value.type === 3 ? fenceModel.value.typeStr : null, |
| | | effectTime: fenceModel.value.lifecycleRange ? dayjs(fenceModel.value.lifecycleRange[0]).startOf('day').format('YYYY-MM-DD HH:mm:ss') : null, |
| | | failureTime: fenceModel.value.lifecycleRange ? dayjs(fenceModel.value.lifecycleRange[1]).endOf('day').format('YYYY-MM-DD HH:mm:ss') : null, |
| | | startTime: fenceModel.value.startTime || null, |
| | |
| | | path: 'type', |
| | | render: () => ( |
| | | <NSelect |
| | | v-model:value={fenceModel.value.type} |
| | | value={fenceModel.value.type} |
| | | options={fenceStrategyTypeOptions} |
| | | placeholder="请选择" |
| | | clearable |
| | | onUpdate:value={handleFenceStrategyTypeFilterChange} |
| | | onUpdate:show={(val: boolean) => isFenceStrategyTypeOpen.value = val} |
| | | > |
| | | {{ |
| | | arrow: () => ( |
| | | <img |
| | | src="https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/e120f81c-9f15-4e1a-9938-22252898edf9.png" |
| | | class={`arrow-icon ${isFenceStrategyTypeOpen.value ? 'arrow-icon--open' : ''}`} |
| | | style={{ width: '16px', height: '16px' }} |
| | | alt="arrow" |
| | | /> |
| | | ), |
| | | }} |
| | | </NSelect> |
| | | ), |
| | | }, |
| | | { |
| | |
| | | <NDatePicker v-model:value={fenceModel.value.lifecycleRange} type="daterange" clearable actions={[]} close-on-select={true} format="yyyy/MM/dd" /> |
| | | ), |
| | | }, |
| | | ...(fenceModel.value.type === 3 |
| | | ? [{ |
| | | label: '自定义周', |
| | | path: 'typeStr', |
| | | render: () => ( |
| | | <NSelect |
| | | value={fenceModel.value.typeStr} |
| | | options={fenceStrategyWeekOptions} |
| | | placeholder="请选择自定义周" |
| | | clearable |
| | | multiple |
| | | max-tag-count={1} |
| | | onUpdate:show={(val: boolean) => isFenceStrategyWeekOpen.value = val} |
| | | onUpdate:value={handleFenceStrategyWeekFilterChange} |
| | | > |
| | | {{ |
| | | arrow: () => ( |
| | | <img |
| | | src="https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/e120f81c-9f15-4e1a-9938-22252898edf9.png" |
| | | class={`arrow-icon ${isFenceStrategyWeekOpen.value ? 'arrow-icon--open' : ''}`} |
| | | style={{ width: '16px', height: '16px' }} |
| | | alt="arrow" |
| | | /> |
| | | ), |
| | | }} |
| | | </NSelect> |
| | | ), |
| | | }] |
| | | : []), |
| | | { |
| | | label: '运营时间', |
| | | path: 'operationTime', |