|
|
|
@ -191,14 +191,28 @@ const settingForm = ref<{ |
|
|
|
virIncludeStatistics: string; |
|
|
|
virIncludeSearch: string; |
|
|
|
virShowAtBusiness: string; |
|
|
|
virZone: number | null; |
|
|
|
virRemark: string; |
|
|
|
}>({ |
|
|
|
virIncludeStatistics: '是', |
|
|
|
virIncludeSearch: '是', |
|
|
|
virShowAtBusiness: '是', |
|
|
|
virZone: null, |
|
|
|
virRemark: '' |
|
|
|
}); |
|
|
|
|
|
|
|
const zoneOptions = [ |
|
|
|
{ value: 1, label: '市直' }, |
|
|
|
{ value: 2, label: '区' }, |
|
|
|
{ value: 3, label: '区直' }, |
|
|
|
{ value: 4, label: '街道' }, |
|
|
|
{ value: 5, label: '市公安' }, |
|
|
|
{ value: 6, label: '市消防' }, |
|
|
|
{ value: 15, label: '区公安' }, |
|
|
|
{ value: 16, label: '区消防' } |
|
|
|
]; |
|
|
|
const zoneMap = new Map(zoneOptions.map(o => [o.value, o.label])); |
|
|
|
|
|
|
|
/** 点击 <-- 按钮打开设置窗口 */ |
|
|
|
const handleTransfer = () => { |
|
|
|
if (!selectedVirNode.value) { |
|
|
|
@ -214,6 +228,7 @@ const handleTransfer = () => { |
|
|
|
virIncludeStatistics: '是', |
|
|
|
virIncludeSearch: '是', |
|
|
|
virShowAtBusiness: '是', |
|
|
|
virZone: null, |
|
|
|
virRemark: '' |
|
|
|
}; |
|
|
|
settingDialogVisible.value = true; |
|
|
|
@ -281,7 +296,17 @@ const handleConfirmAdd = async () => { |
|
|
|
await addVirtualUnit(form); |
|
|
|
ElMessage.success('添加成功'); |
|
|
|
settingDialogVisible.value = false; |
|
|
|
// 记录当前父节点及其祖先,重新加载后保持展开 |
|
|
|
const expandIds = parentNode.virAncestors |
|
|
|
? parentNode.virAncestors.split(',').concat(parentNode.virId) |
|
|
|
: [parentNode.virId]; |
|
|
|
await loadVirtualUnitTree(); |
|
|
|
// 确保父节点链路全部展开 |
|
|
|
for (const id of expandIds) { |
|
|
|
if (!defaultExpandedKeys.value.includes(id)) { |
|
|
|
defaultExpandedKeys.value.push(id); |
|
|
|
} |
|
|
|
} |
|
|
|
} catch (e: any) { |
|
|
|
ElMessage.error(e.message || '添加失败'); |
|
|
|
} |
|
|
|
@ -327,6 +352,7 @@ onMounted(() => { |
|
|
|
<el-table-column prop="virName" label="名称" min-width="200" show-overflow-tooltip> |
|
|
|
<template #default="{ row }"> |
|
|
|
<span v-html="highlightName(row.virName)"></span> |
|
|
|
<span v-if="row.virZone" class="zone-tag">[{{ zoneMap.get(row.virZone) || row.virZone }}]</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="virIncludeStatistics" label="统计" width="100" align="center"> |
|
|
|
@ -374,7 +400,7 @@ onMounted(() => { |
|
|
|
<span v-else :class="{ 'cell-red': row.virShowAtBusiness === '否' }">{{ row.virShowAtBusiness }}</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="custOrderNum" label="自定义排序" width="100" align="center"> |
|
|
|
<el-table-column prop="custOrderNum" label="排序" width="100" align="center"> |
|
|
|
<template #default="{ row }"> |
|
|
|
<el-input-number |
|
|
|
v-if="selectedVirNode?.virId === row.virId" |
|
|
|
@ -442,6 +468,11 @@ onMounted(() => { |
|
|
|
<el-radio value="否">否</el-radio> |
|
|
|
</el-radio-group> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="Zone"> |
|
|
|
<el-radio-group v-model="settingForm.virZone"> |
|
|
|
<el-radio v-for="opt in zoneOptions" :key="opt.value" :value="opt.value">{{ opt.label }}</el-radio> |
|
|
|
</el-radio-group> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="备注"> |
|
|
|
<el-input v-model="settingForm.virRemark" type="textarea" :rows="3" placeholder="请输入备注"/> |
|
|
|
</el-form-item> |
|
|
|
@ -527,10 +558,22 @@ onMounted(() => { |
|
|
|
font-weight: bold; |
|
|
|
} |
|
|
|
|
|
|
|
.zone-tag{ |
|
|
|
color: var(--el-color-primary); |
|
|
|
} |
|
|
|
|
|
|
|
:deep(.el-radio-group) { |
|
|
|
flex-wrap: nowrap; |
|
|
|
} |
|
|
|
|
|
|
|
:deep(.el-dialog .el-radio-group) { |
|
|
|
flex-wrap: wrap; |
|
|
|
|
|
|
|
.el-radio { |
|
|
|
width: 80px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
:deep(.el-radio-button__inner) { |
|
|
|
padding: 4px 8px; |
|
|
|
} |
|
|
|
|