From e1e7f97e7bb7f31e22d5cf80a3aac170e42b261d Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期一, 01 六月 2026 15:49:14 +0800
Subject: [PATCH] Merge branch 'deploy-1.0' into feat/deploy-1.0
---
src/views/businessOperations/operationWorkbench/components/FencePanel.vue | 10 ++++-
src/views/businessOperations/operationWorkbench/list.vue | 72 +++++++++++++++++++++++++++++++++++-
2 files changed, 78 insertions(+), 4 deletions(-)
diff --git a/src/views/businessOperations/operationWorkbench/components/FencePanel.vue b/src/views/businessOperations/operationWorkbench/components/FencePanel.vue
index 62016bc..a442d49 100644
--- a/src/views/businessOperations/operationWorkbench/components/FencePanel.vue
+++ b/src/views/businessOperations/operationWorkbench/components/FencePanel.vue
@@ -113,15 +113,21 @@
const baseItems = [
{ label: "启用中", value: getStatNumber(source?.startingUp), color: "success" },
{ label: "待生效", value: getStatNumber(source?.pendingLaunch), color: "warning" },
- // { label: "草稿", value: getStatNumber(source?.draft), color: "muted" },
{ label: "已停用", value: getStatNumber(source?.disabled), color: "muted" },
{ label: "已失效", value: getStatNumber(source?.expired), color: "muted" },
];
- if (type === "station") return baseItems;
+ if (type === "station") {
+ return [
+ ...baseItems.slice(0, 2),
+ { label: "草稿", value: getStatNumber(source?.draft), color: "muted" },
+ ...baseItems.slice(2),
+ ];
+ }
return [
...baseItems,
+ { label: "可运营", value: getStatNumber(source?.canOperate), color: "success" },
{ label: "待测试", value: getStatNumber(source?.toBeTested), color: "info" },
{ label: "测试中", value: getStatNumber(source?.testing), color: "info" },
{
diff --git a/src/views/businessOperations/operationWorkbench/list.vue b/src/views/businessOperations/operationWorkbench/list.vue
index 5226d43..e895359 100644
--- a/src/views/businessOperations/operationWorkbench/list.vue
+++ b/src/views/businessOperations/operationWorkbench/list.vue
@@ -108,6 +108,7 @@
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: '',
@@ -193,6 +194,8 @@
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)
@@ -317,6 +320,28 @@
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>) {
@@ -647,6 +672,7 @@
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,
@@ -1515,11 +1541,24 @@
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>
),
},
{
@@ -1529,6 +1568,35 @@
<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',
--
Gitblit v1.7.1