|
|
|
@ -174,13 +174,32 @@ |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="模式" prop="dbSName"> |
|
|
|
<!-- <el-form-item label="模式" prop="dbSName"> |
|
|
|
<el-input v-model="form.dbSName" placeholder="请输入模式名称" /> |
|
|
|
</el-form-item> --> |
|
|
|
<el-form-item label="模式" prop="dbSName"> |
|
|
|
<el-select v-model="form.dbSName" placeholder="选择模式" @change="onSchemaChange"> |
|
|
|
<el-option v-for="item in schemaList" :key="item" :value="item" :label="item" /> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="表名" prop="dbTName"> |
|
|
|
<el-input v-model="form.dbTName" placeholder="请输入表名称" /> |
|
|
|
<el-select v-model="form.dbTName" placeholder="选择表" @change="onTableChange" :disabled="!form.dbSName" filterable> |
|
|
|
<el-option v-for="table in tableList" :key="table" :value="table" :label="table" /> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="字段名称" prop="dbCName"> |
|
|
|
<el-select |
|
|
|
v-model="form.dbCName" |
|
|
|
placeholder="选择字段(可多选)" |
|
|
|
multiple |
|
|
|
collapse-tags |
|
|
|
:disabled="!form.dbTName" |
|
|
|
> |
|
|
|
<el-option v-for="col in columnList" :key="col" :value="col" :label="col" /> |
|
|
|
</el-select> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="是否可见" prop="ctrlType"> |
|
|
|
<el-select |
|
|
|
v-model="form.ctrlType" |
|
|
|
@ -195,9 +214,7 @@ |
|
|
|
></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="字段名称" prop="dbCName"> |
|
|
|
<el-input v-model="form.dbCName" placeholder="请输入字段名称" /> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="对象类型" prop="objType"> |
|
|
|
<el-select |
|
|
|
v-model="form.objType" |
|
|
|
@ -259,10 +276,11 @@ |
|
|
|
|
|
|
|
<script setup> |
|
|
|
import { ref, reactive, onMounted, toRefs } from 'vue'; |
|
|
|
import { listMetaSecurityCol, addMetaSecurityCol,getMetaSecurityCol, updateMetaSecurityCol, deleteMetaSecurityCol } from "@/api/meta/metasercurity"; |
|
|
|
import { listMetaSecurityCol, addMetaSecurityCol,getMetaSecurityCol, updateMetaSecurityCol, deleteMetaSecurityCol,getMetaMdlNameList } from "@/api/meta/metasercurity"; |
|
|
|
import { datasourcetree } from "@/api/meta/metatask"; |
|
|
|
import { listUser} from "@/api/system/user"; |
|
|
|
import { listRole} from "@/api/system/role"; |
|
|
|
import { getMetaDataList, getColumnList } from "@/api/meta/metaInfo" |
|
|
|
|
|
|
|
const { proxy } = getCurrentInstance(); |
|
|
|
const { metasecurity_ctr, metasecurity_obj, metasecurity_type} = proxy.useDict("metasecurity_ctr", "metasecurity_obj", "metasecurity_type"); |
|
|
|
@ -274,6 +292,9 @@ const queryParams = ref({ |
|
|
|
pageNum: 1, |
|
|
|
pageSize: 10 |
|
|
|
}); |
|
|
|
const schemaList = ref([]) // 模式 |
|
|
|
const tableList = ref([]) // 表 |
|
|
|
const columnList = ref([]) // 字段(多选) |
|
|
|
const single = ref(true); |
|
|
|
const multiple = ref(true); |
|
|
|
const dbResoursName = ref(undefined); |
|
|
|
@ -309,7 +330,7 @@ const form = ref({ |
|
|
|
dbRID: 0, |
|
|
|
dbSName: '', |
|
|
|
dbTName: '', |
|
|
|
dbCName: '', |
|
|
|
dbCName: [] , // 字段(多选) |
|
|
|
ctrlType: '', |
|
|
|
objType: '', |
|
|
|
objValue: '', |
|
|
|
@ -355,6 +376,63 @@ const handleObjValueChange = (selectedValues) => { |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
const dataChange = async (dbRID) => { |
|
|
|
form.value.dbRID = dbRID |
|
|
|
|
|
|
|
// 1) 加载模式 schema(你已有接口) |
|
|
|
const res = await getMetaMdlNameList(dbRID) |
|
|
|
schemaList.value = res.data |
|
|
|
|
|
|
|
// 清空下级 |
|
|
|
form.value.dbSName = "" |
|
|
|
form.value.dbTName = "" |
|
|
|
form.value.dbCName = [] |
|
|
|
tableList.value = [] |
|
|
|
columnList.value = [] |
|
|
|
const selectedItem = dbResourceOldList.value.find(item => item.id === dbRID); |
|
|
|
if (selectedItem) { |
|
|
|
// 如果找到对应的项,将 name 赋值给 form.value.dbRName |
|
|
|
form.value.dbRName = selectedItem.name; |
|
|
|
} else { |
|
|
|
// 如果未找到,清空 form.value.dbRName |
|
|
|
form.value.dbRName = ''; |
|
|
|
} |
|
|
|
} |
|
|
|
const onSchemaChange = async (mdlName) => { |
|
|
|
form.value.dbTName = "" |
|
|
|
form.value.dbCName = [] |
|
|
|
tableList.value = [] |
|
|
|
columnList.value = [] |
|
|
|
|
|
|
|
if (!mdlName) return |
|
|
|
|
|
|
|
const queryParams = { |
|
|
|
ssysId: form.value.dbRID, // 系统 ID |
|
|
|
mdlName: mdlName, |
|
|
|
pageNum: 1, |
|
|
|
pageSize: 10000 |
|
|
|
} |
|
|
|
|
|
|
|
const res = await getMetaDataList(queryParams) |
|
|
|
tableList.value = res.data.rows.map(item => item.tabEngName) |
|
|
|
} |
|
|
|
const onTableChange = async (tabName) => { |
|
|
|
form.value.dbCName = [] |
|
|
|
columnList.value = [] |
|
|
|
|
|
|
|
if (!tabName) return |
|
|
|
|
|
|
|
const params = { |
|
|
|
ssysId: form.value.dbRID, |
|
|
|
mdlName: form.value.dbSName, |
|
|
|
tabName: tabName |
|
|
|
} |
|
|
|
|
|
|
|
const res = await getColumnList(params) |
|
|
|
columnList.value = ["ALL", ...res.data.map(item => item.fldEngName)] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// 获取数据列表 |
|
|
|
const getList = async () => { |
|
|
|
loading.value = true; |
|
|
|
@ -394,18 +472,7 @@ const getRoleName = (objValue) => { |
|
|
|
}); |
|
|
|
return names.join(', '); |
|
|
|
}; |
|
|
|
function dataChange(data) { |
|
|
|
|
|
|
|
// 从 dbResourceOldList 中查找对应的 name |
|
|
|
const selectedItem = dbResourceOldList.value.find(item => item.id === data); |
|
|
|
if (selectedItem) { |
|
|
|
// 如果找到对应的项,将 name 赋值给 form.value.dbRName |
|
|
|
form.value.dbRName = selectedItem.name; |
|
|
|
} else { |
|
|
|
// 如果未找到,清空 form.value.dbRName |
|
|
|
form.value.dbRName = ''; |
|
|
|
} |
|
|
|
} |
|
|
|
// 翻页 |
|
|
|
const handlePagination = (pageNum, pageSize) => { |
|
|
|
queryParams.pageNum = pageNum; |
|
|
|
@ -453,8 +520,19 @@ const getDeptTree = async () => { |
|
|
|
const handleEdit = (row) => { |
|
|
|
reset(); |
|
|
|
const colId = row.colId || ids.value; |
|
|
|
|
|
|
|
getMetaSecurityCol(colId).then(response => { |
|
|
|
form.value = response.data; |
|
|
|
const data = response.data; |
|
|
|
|
|
|
|
// ⭐ 回显字段多选:字符串 → 数组 |
|
|
|
if (data.dbCName && typeof data.dbCName === 'string') { |
|
|
|
data.dbCName = data.dbCName.split(','); |
|
|
|
} else if (!data.dbCName) { |
|
|
|
data.dbCName = []; |
|
|
|
} |
|
|
|
|
|
|
|
form.value = data; |
|
|
|
|
|
|
|
dialogVisible.value = true; |
|
|
|
dialogTitle.value = "编辑列配置"; |
|
|
|
}); |
|
|
|
@ -464,25 +542,35 @@ const handleEdit = (row) => { |
|
|
|
|
|
|
|
function handleSave() { |
|
|
|
proxy.$refs["formRef"].validate(valid => { |
|
|
|
if (valid) { |
|
|
|
if (form.value.colId != undefined&&form.value.colId !="") { |
|
|
|
updateMetaSecurityCol(form.value).then(response => { |
|
|
|
if (!valid) return; |
|
|
|
|
|
|
|
// 克隆一份数据,避免直接修改 form |
|
|
|
const submitData = { ...form.value }; |
|
|
|
|
|
|
|
// 多选字段转换为逗号字符串 |
|
|
|
if (Array.isArray(submitData.dbCName)) { |
|
|
|
submitData.dbCName = submitData.dbCName.join(','); |
|
|
|
} |
|
|
|
if (Array.isArray(submitData.objValue)) { |
|
|
|
submitData.objValue = submitData.objValue.join(','); |
|
|
|
} |
|
|
|
// 判断是新增还是修改 |
|
|
|
if (submitData.colId) { |
|
|
|
updateMetaSecurityCol(submitData).then(() => { |
|
|
|
proxy.$modal.msgSuccess("修改成功"); |
|
|
|
dialogVisible.value = false; |
|
|
|
getList(); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
const submitData = { ...form.value }; |
|
|
|
submitData.objValue = submitData.objValue.join(','); |
|
|
|
addMetaSecurityCol(submitData).then(response => { |
|
|
|
addMetaSecurityCol(submitData).then(() => { |
|
|
|
proxy.$modal.msgSuccess("新增成功"); |
|
|
|
dialogVisible.value = false; |
|
|
|
getList(); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/** 表单重置 */ |
|
|
|
function reset() { |
|
|
|
form.value = { |
|
|
|
@ -491,7 +579,7 @@ function reset() { |
|
|
|
dbRID: undefined, |
|
|
|
dbSName: '', |
|
|
|
dbTName: '', |
|
|
|
dbCName: '', |
|
|
|
dbCName: [], |
|
|
|
generateType: '', |
|
|
|
ctrlType: '', |
|
|
|
objType: '', |
|
|
|
|