|
|
@ -3,11 +3,19 @@ |
|
|
|
<el-row :gutter="10" class="mb8"> |
|
|
|
<el-form :inline="true" :model="queryForm" > |
|
|
|
<el-form-item label="业务域名称"> |
|
|
|
<el-input v-model="queryForm.bizName" placeholder="请输入业务域名称" clearable /> |
|
|
|
<el-input v-model="queryForm.bizName" placeholder="请输入业务域名称" clearable style="width: 200px"/> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="风险等级"> |
|
|
|
<el-input v-model="queryForm.riskLvl" placeholder="请输入风险等级" clearable /> |
|
|
|
</el-form-item> |
|
|
|
<el-select v-model="queryForm.riskLvl" placeholder="请选择风险等级" clearable filterable style="width: 200px"> |
|
|
|
<el-option |
|
|
|
v-for="dict in secList" |
|
|
|
:key="dict.onum" |
|
|
|
:label="dict.secLevelSummary" |
|
|
|
:value="dict.onum" |
|
|
|
></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
|
|
|
<el-form-item> |
|
|
|
<el-button type="primary" icon="Search" @click="handleSearch">搜索</el-button> |
|
|
@ -50,18 +58,31 @@ |
|
|
|
> |
|
|
|
<el-table-column type="selection" width="55" /> |
|
|
|
<el-table-column prop="bizName" label="业务域名称" /> |
|
|
|
<el-table-column prop="riskLvl" label="风险等级" /> |
|
|
|
<el-table-column label="风险等级"> |
|
|
|
<template #default="{ row }"> |
|
|
|
{{ getSecLevelName(row.riskLvl) }} |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="isStop" label="是否停用"> |
|
|
|
<template #default="{ row }"> |
|
|
|
<el-tag :type="row.isStop === 0 ? 'success' : 'info'"> |
|
|
|
{{ row.isStop === 0 ? '运行' : '停用' }} |
|
|
|
<el-tag :type="row.isStop? 'success' : 'info'"> |
|
|
|
{{ row.isStop? '运行' : '停用' }} |
|
|
|
</el-tag> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="createBy" label="创建者" /> |
|
|
|
<el-table-column prop="createTime" label="创建时间" width="180" /> |
|
|
|
<el-table-column prop="createTime" label="创建时间" width="180"> |
|
|
|
<template #default="{ row }"> |
|
|
|
{{ formatDateTime(row.createTime) }} |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="updateBy" label="更新者" /> |
|
|
|
<el-table-column prop="updateTime" label="更新时间" width="180" /> |
|
|
|
<el-table-column prop="updateTime" label="更新时间" width="180"> |
|
|
|
<template #default="{ row }"> |
|
|
|
{{ formatDateTime(row.updateTime) }} |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
|
|
|
|
<pagination |
|
|
@ -75,7 +96,7 @@ |
|
|
|
<el-dialog |
|
|
|
:title="title" |
|
|
|
v-model="open" |
|
|
|
width="600px" |
|
|
|
width="1600px" |
|
|
|
append-to-body |
|
|
|
:before-close="handleClose" |
|
|
|
> |
|
|
@ -84,22 +105,103 @@ |
|
|
|
:model="form" |
|
|
|
:rules="rules" |
|
|
|
label-width="130px" |
|
|
|
size="small" |
|
|
|
> |
|
|
|
> |
|
|
|
<el-row :gutter="20"> |
|
|
|
<el-col :span="8"> |
|
|
|
<el-form-item label="业务域名称" prop="bizName"> |
|
|
|
<el-input v-model="form.bizName" /> |
|
|
|
<el-input v-model="form.bizName" style="width: 200px"/> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col :span="8"> |
|
|
|
<el-form-item label="风险等级" prop="riskLvl"> |
|
|
|
<el-input v-model="form.riskLvl" /> |
|
|
|
<el-select |
|
|
|
v-model="form.riskLvl" |
|
|
|
placeholder="风险等级" |
|
|
|
filterable |
|
|
|
clearable |
|
|
|
style="width: 200px" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="dict in secList" |
|
|
|
:key="dict.onum" |
|
|
|
:label="dict.secLevelSummary" |
|
|
|
:value="dict.onum" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col :span="8"> |
|
|
|
<el-form-item label="是否停用" prop="isStop"> |
|
|
|
<el-select v-model="form.isStop" placeholder="请选择状态"> |
|
|
|
<el-option label="运行" :value="0" /> |
|
|
|
<el-option label="停用" :value="1" /> |
|
|
|
<el-select v-model="form.isStop" placeholder="请选择状态" style="width: 200px"> |
|
|
|
<el-option label="运行" :value="true" /> |
|
|
|
<el-option label="停用" :value="false" /> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-form> |
|
|
|
<!-- 在这里增加左右两个表格,之间是穿梭按钮 左边条件 leftQueryForm ssysCd是下拉选dsSysList,getMetaDataList是查询左边的表格的接口,getBizRalaList是查右表的接口参数是getBizRalaList(onum)右移会在右表push一条,左移会移除一条 右表无分页 --> |
|
|
|
<el-row :gutter="20" style="margin-top: 20px"> |
|
|
|
<!-- 左侧表格:可选元数据 --> |
|
|
|
<el-col :span="10"> |
|
|
|
<el-form :model="leftQueryForm" inline size="small" > |
|
|
|
<el-form-item label="系统名"> |
|
|
|
<el-select v-model="leftQueryForm.ssysCd" placeholder="请选择系统" clearable filterable style="width: 180px"> |
|
|
|
<el-option v-for="item in dsSysList" :key="item.id" :label="item.name" :value="item.name" /> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="表名"> |
|
|
|
<el-input v-model="leftQueryForm.tabName" placeholder="请输入表名" clearable style="width: 180px"/> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item> |
|
|
|
<el-button type="primary" @click="loadLeftTable">查询</el-button> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
|
|
|
|
<el-table |
|
|
|
:data="leftTableData" |
|
|
|
height="300" |
|
|
|
border |
|
|
|
style="margin-top: 10px" |
|
|
|
@selection-change="handleLeftSelect" |
|
|
|
> |
|
|
|
<el-table-column type="selection" width="50" /> |
|
|
|
<el-table-column prop="ssysCd" label="系统名" /> |
|
|
|
<el-table-column prop="mdlName" label="模式名" /> |
|
|
|
<el-table-column prop="tabEngName" label="表名" /> |
|
|
|
</el-table> |
|
|
|
|
|
|
|
<pagination |
|
|
|
v-show="leftTotal > 0" |
|
|
|
:total="leftTotal" |
|
|
|
v-model:page="leftQueryForm.pageNum" |
|
|
|
v-model:limit="leftQueryForm.pageSize" |
|
|
|
@pagination="loadLeftTable" |
|
|
|
style="left: 0%!;" |
|
|
|
/> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<!-- 中间穿梭按钮 --> |
|
|
|
<el-col :span="4" class="flex-col-center"> |
|
|
|
<el-button type="primary" @click="moveToRight" :disabled="leftSelected.length === 0"> > </el-button> |
|
|
|
<el-button type="danger" style="margin-top: 10px" @click="moveToLeft" :disabled="rightSelected.length === 0"> < </el-button> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<!-- 右侧表格:已关联元数据 --> |
|
|
|
<el-col :span="10"> |
|
|
|
<el-table |
|
|
|
:data="rightTableData" |
|
|
|
height="360" |
|
|
|
border |
|
|
|
@selection-change="handleRightSelect" |
|
|
|
> |
|
|
|
<el-table-column type="selection" width="50" /> |
|
|
|
<el-table-column prop="ssysCd" label="系统名" /> |
|
|
|
<el-table-column prop="mdlName" label="模式名" /> |
|
|
|
<el-table-column prop="tabEngName" label="表名" /> |
|
|
|
</el-table> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
<template #footer> |
|
|
|
<el-button @click="open = false">取消</el-button> |
|
|
|
<el-button type="primary" @click="submitForm">保存</el-button> |
|
|
@ -111,10 +213,17 @@ |
|
|
|
<script setup> |
|
|
|
import { ref, reactive, onMounted } from 'vue' |
|
|
|
import { ElMessageBox, ElMessage } from 'element-plus' |
|
|
|
import useUserStore from '@/store/modules/user'; // 注意路径是否正确 |
|
|
|
import {getMetaDataList} from "@/api/meta/metaInfo" |
|
|
|
|
|
|
|
const userStore = useUserStore(); // 正确调用 |
|
|
|
const dsSysList = userStore.dsSysList; // 访问属性 |
|
|
|
import { |
|
|
|
listBizConfig, |
|
|
|
addBizConfig, |
|
|
|
listMetadataSec, |
|
|
|
updateBizConfig, |
|
|
|
getBizRalaList, |
|
|
|
delBizConfig |
|
|
|
} from '@/api/metadataConfig/metadataConfig' |
|
|
|
|
|
|
@ -124,8 +233,15 @@ const queryForm = reactive({ |
|
|
|
pageNum: 1, |
|
|
|
pageSize: 10 |
|
|
|
}) |
|
|
|
const leftQueryForm = reactive({ |
|
|
|
ssysCd: '', |
|
|
|
tabName: '', |
|
|
|
pageNum: 1, |
|
|
|
pageSize: 10 |
|
|
|
}) |
|
|
|
|
|
|
|
const bizList = ref([]) |
|
|
|
const secList = ref([]) |
|
|
|
const total = ref(0) |
|
|
|
const loading = ref(false) |
|
|
|
const open = ref(false) |
|
|
@ -142,7 +258,7 @@ const form = reactive({ |
|
|
|
|
|
|
|
const rules = { |
|
|
|
bizName: [{ required: true, message: '请输入业务域名称', trigger: 'blur' }], |
|
|
|
riskLvl: [{ required: true, message: '请输入风险等级', trigger: 'blur' }], |
|
|
|
riskLvl: [{ required: true, message: '请选择风险等级', trigger: 'blur' }], |
|
|
|
isStop: [{ required: true, message: '请选择状态', trigger: 'change' }] |
|
|
|
} |
|
|
|
|
|
|
@ -164,6 +280,18 @@ async function getList() { |
|
|
|
loading.value = false |
|
|
|
} |
|
|
|
} |
|
|
|
async function getSecList() { |
|
|
|
try { |
|
|
|
const res = await listMetadataSec({pageSize:100,pageNum:1}) |
|
|
|
secList.value = res.rows |
|
|
|
} catch (error) { |
|
|
|
ElMessage.error('获取安全等级列表失败,请重试') |
|
|
|
} |
|
|
|
} |
|
|
|
function getSecLevelName(value) { |
|
|
|
const item = secList.value.find((d) => d.onum === value) |
|
|
|
return item ? item.secLevelSummary : value |
|
|
|
} |
|
|
|
|
|
|
|
function resetQuery() { |
|
|
|
queryForm.bizName = '' |
|
|
@ -185,6 +313,7 @@ function openAddDialog() { |
|
|
|
riskLvl: '', |
|
|
|
isStop: null |
|
|
|
}) |
|
|
|
rightTableData.value=[] |
|
|
|
open.value = true |
|
|
|
} |
|
|
|
|
|
|
@ -194,6 +323,7 @@ function openEditDialog(row) { |
|
|
|
return |
|
|
|
} |
|
|
|
title.value = '编辑业务域配置' |
|
|
|
loadRightTable(row.onum) |
|
|
|
Object.assign(form, row) |
|
|
|
open.value = true |
|
|
|
} |
|
|
@ -201,7 +331,13 @@ function openEditDialog(row) { |
|
|
|
function submitForm() { |
|
|
|
bizFormRef.value.validate(async (valid) => { |
|
|
|
if (!valid) return |
|
|
|
const submitData = { ...form } |
|
|
|
let tabonums=[] |
|
|
|
rightTableData.value.forEach(item=>{ |
|
|
|
tabonums.push(item.onum) |
|
|
|
|
|
|
|
}) |
|
|
|
console.log( rightTableData.value,"sss") |
|
|
|
const submitData = { ...form,tabOnumList:tabonums } |
|
|
|
try { |
|
|
|
if (title.value.includes('新增')) { |
|
|
|
await addBizConfig(submitData) |
|
|
@ -256,9 +392,60 @@ function handleClose(done) { |
|
|
|
bizFormRef.value.resetFields() |
|
|
|
done() |
|
|
|
} |
|
|
|
//穿梭框 |
|
|
|
const leftTableData = ref([]) |
|
|
|
const leftTotal = ref(0) |
|
|
|
const leftSelected = ref([]) |
|
|
|
|
|
|
|
const rightTableData = ref([]) |
|
|
|
const rightSelected = ref([]) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function handleLeftSelect(rows) { |
|
|
|
leftSelected.value = rows |
|
|
|
} |
|
|
|
function handleRightSelect(rows) { |
|
|
|
rightSelected.value = rows |
|
|
|
} |
|
|
|
|
|
|
|
async function loadLeftTable() { |
|
|
|
const res = await getMetaDataList(leftQueryForm) |
|
|
|
leftTableData.value = res.data.rows || [] |
|
|
|
leftTotal.value = res.data.total || 0 |
|
|
|
} |
|
|
|
|
|
|
|
async function loadRightTable(onum) { |
|
|
|
const res = await getBizRalaList(onum) |
|
|
|
rightTableData.value = res.data || [] |
|
|
|
} |
|
|
|
|
|
|
|
// 用唯一键:ssysCd + mdlName + tabEngName 来判断是否重复 |
|
|
|
function buildKey(row) { |
|
|
|
return `${row.ssysCd}||${row.mdlName}||${row.tabEngName}` |
|
|
|
} |
|
|
|
|
|
|
|
function moveToRight() { |
|
|
|
const existingKeys = new Set(rightTableData.value.map(buildKey)) |
|
|
|
leftSelected.value.forEach(item => { |
|
|
|
if (!existingKeys.has(buildKey(item))) { |
|
|
|
let additem=item |
|
|
|
additem.onum=item.extractOnum |
|
|
|
rightTableData.value.push(item) |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
function moveToLeft() { |
|
|
|
const removeKeys = new Set(rightSelected.value.map(buildKey)) |
|
|
|
rightTableData.value = rightTableData.value.filter(item => !removeKeys.has(buildKey(item))) |
|
|
|
} |
|
|
|
|
|
|
|
onMounted(() => { |
|
|
|
getList() |
|
|
|
getSecList() |
|
|
|
loadLeftTable() |
|
|
|
|
|
|
|
}) |
|
|
|
</script> |
|
|
|
|
|
|
@ -269,4 +456,12 @@ onMounted(() => { |
|
|
|
.mb8 { |
|
|
|
margin-bottom: 8px; |
|
|
|
} |
|
|
|
.flex-col-center { |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
margin-top: 150px; |
|
|
|
justify-content: center; |
|
|
|
align-items: center; |
|
|
|
height: 100%; |
|
|
|
} |
|
|
|
</style> |
|
|
|