|
@@ -30,6 +30,8 @@ interface Object {
|
|
|
const state = reactive({
|
|
const state = reactive({
|
|
|
loading: false,
|
|
loading: false,
|
|
|
keywords: '',
|
|
keywords: '',
|
|
|
|
|
+ objectList: [] as TreeNode[],
|
|
|
|
|
+ dataList: [],
|
|
|
models: [] as TreeNode[],
|
|
models: [] as TreeNode[],
|
|
|
curModelId: 0,
|
|
curModelId: 0,
|
|
|
objects: [] as Object[],
|
|
objects: [] as Object[],
|
|
@@ -46,8 +48,24 @@ const getObjectData = async () => {
|
|
|
if (curModelId > 0) {
|
|
if (curModelId > 0) {
|
|
|
state.loading = true
|
|
state.loading = true
|
|
|
const { data } = await getObjectByList({ modelId: curModelId })
|
|
const { data } = await getObjectByList({ modelId: curModelId })
|
|
|
- state.objectList = data
|
|
|
|
|
state.loading = false
|
|
state.loading = false
|
|
|
|
|
+ if (data.length > 0) {
|
|
|
|
|
+ const view = data.filter((item: { objectType: number }) => item.objectType === 1)
|
|
|
|
|
+ const entity_object = data.filter((item: { objectType: number }) => item.objectType === 2)
|
|
|
|
|
+ const treeData = [
|
|
|
|
|
+ {
|
|
|
|
|
+ objectTitle: '视图',
|
|
|
|
|
+ children: view,
|
|
|
|
|
+ disabled: true,
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ objectTitle: '实体类',
|
|
|
|
|
+ children: entity_object,
|
|
|
|
|
+ disabled: true,
|
|
|
|
|
+ },
|
|
|
|
|
+ ]
|
|
|
|
|
+ state.objectList = treeData as unknown as TreeNode[]
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -72,10 +90,13 @@ const getModelData = async () => {
|
|
|
|
|
|
|
|
if (data && data.length > 0) {
|
|
if (data && data.length > 0) {
|
|
|
state.curModelId = data[0].modelId
|
|
state.curModelId = data[0].modelId
|
|
|
|
|
+ nextTick(() => {
|
|
|
|
|
+ leftTreeRef.value.setCurrentKey(data[0].modelId)
|
|
|
|
|
+ })
|
|
|
await getObjectData()
|
|
await getObjectData()
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+const onModelAdd = () => {}
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
|
getModelData()
|
|
getModelData()
|
|
|
})
|
|
})
|
|
@@ -88,9 +109,6 @@ const onTreeNodeClick = (node: TreeNode) => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-const objectTableRef = ref()
|
|
|
|
|
-const objectRef = ref()
|
|
|
|
|
-
|
|
|
|
|
// 检索对象
|
|
// 检索对象
|
|
|
const onObjectSearch = () => {
|
|
const onObjectSearch = () => {
|
|
|
getObjectData()
|
|
getObjectData()
|
|
@@ -116,10 +134,10 @@ const onObjectClick = () => { }
|
|
|
</tool-header>
|
|
</tool-header>
|
|
|
|
|
|
|
|
<div class="page-main">
|
|
<div class="page-main">
|
|
|
- <LayoutContainer left-side-width="300px" hide-left-side-toggle>
|
|
|
|
|
|
|
+ <LayoutContainer left-side-width="200px" hide-left-side-toggle>
|
|
|
<template #leftSide>
|
|
<template #leftSide>
|
|
|
<el-scrollbar class="tree">
|
|
<el-scrollbar class="tree">
|
|
|
- <ElTree ref="leftTreeRef" :data="state.models" default-expand-all @node-click="onTreeNodeClick">
|
|
|
|
|
|
|
+ <ElTree ref="leftTreeRef" :data="state.models" default-expand-all node-key="modelId" @node-click="onTreeNodeClick">
|
|
|
<template #default="{ node, data }">
|
|
<template #default="{ node, data }">
|
|
|
<div class="custom-tree-node">
|
|
<div class="custom-tree-node">
|
|
|
<div class="label" :title="node.label">
|
|
<div class="label" :title="node.label">
|
|
@@ -135,35 +153,61 @@ const onObjectClick = () => { }
|
|
|
</ElTree>
|
|
</ElTree>
|
|
|
</el-scrollbar>
|
|
</el-scrollbar>
|
|
|
</template>
|
|
</template>
|
|
|
-
|
|
|
|
|
- <div class="container">
|
|
|
|
|
- <tool-bar>
|
|
|
|
|
- <template #right>
|
|
|
|
|
- <el-input v-model="state.objectSearch.keywords" placeholder="请输入名称,支持模糊查询" style="padding-right: 10px;" clearable />
|
|
|
|
|
- <el-button type="primary" @click="onObjectSearch">
|
|
|
|
|
- <template #icon>
|
|
|
|
|
- <el-icon>
|
|
|
|
|
- <svg-icon name="i-ep:search" />
|
|
|
|
|
- </el-icon>
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-button>
|
|
|
|
|
- </template>
|
|
|
|
|
- </tool-bar>
|
|
|
|
|
- <el-scrollbar class="tree">
|
|
|
|
|
- <ElTree ref="objectTreeRef" :data="state.objectList" default-expand-all @node-click="onObjectClick">
|
|
|
|
|
- <template #default="{ node, data }">
|
|
|
|
|
- <div class="custom-tree-node">
|
|
|
|
|
- <div class="label" :title="node.title">
|
|
|
|
|
- {{ data.objectTitle }}
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="code">
|
|
|
|
|
- {{ data.objectCode }}
|
|
|
|
|
|
|
+ <el-row class="right-conatiner" :gutter="20">
|
|
|
|
|
+ <el-col class="right-conatiner-tree" :lg="6" :md="24" :xs="24">
|
|
|
|
|
+ <tool-bar>
|
|
|
|
|
+ <template #center>
|
|
|
|
|
+ <el-input v-model="state.objectSearch.keywords" placeholder="请输入名称,支持模糊查询" style="padding-right: 10px;" clearable />
|
|
|
|
|
+ <el-button type="primary" @click="onObjectSearch">
|
|
|
|
|
+ <template #icon>
|
|
|
|
|
+ <el-icon>
|
|
|
|
|
+ <svg-icon name="i-ep:search" />
|
|
|
|
|
+ </el-icon>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </tool-bar>
|
|
|
|
|
+ <el-scrollbar class="tree" style="margin-top: 15px;">
|
|
|
|
|
+ <ElTree ref="objectTreeRef" :data="state.objectList" default-expand-all @node-click="onObjectClick">
|
|
|
|
|
+ <template #default="{ node, data }">
|
|
|
|
|
+ <div class="custom-tree-node">
|
|
|
|
|
+ <div class="label" :title="node.title">
|
|
|
|
|
+ {{ data.objectTitle }}
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </ElTree>
|
|
|
|
|
+ </el-scrollbar>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col class="container" :lg="18" :md="24" :xs="24">
|
|
|
|
|
+ <tool-bar>
|
|
|
|
|
+ <template #left>
|
|
|
|
|
+ <h2>属性</h2>
|
|
|
</template>
|
|
</template>
|
|
|
- </ElTree>
|
|
|
|
|
- </el-scrollbar>
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ <template #right>
|
|
|
|
|
+ <el-input v-model="state.objectSearch.keywords" placeholder="请输入关键词筛选字典项" clearable style="width: 200px;" />
|
|
|
|
|
+ <el-button style="margin-left:10px" @click="getObjectData">
|
|
|
|
|
+ <template #icon>
|
|
|
|
|
+ <el-icon>
|
|
|
|
|
+ <svg-icon name="i-ep:search" />
|
|
|
|
|
+ </el-icon>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </tool-bar>
|
|
|
|
|
+ <el-table :data="state.dataList" border stripe highlight-current-row height="100%" class="list-table">
|
|
|
|
|
+ <el-table-column type="selection" align="center" fixed />
|
|
|
|
|
+ <el-table-column prop="name" label="名称" />
|
|
|
|
|
+ <el-table-column label="键值" align="center" width="150">
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ <el-tag type="info">
|
|
|
|
|
+ {{ scope.row.value }}
|
|
|
|
|
+ </el-tag>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ </el-row>
|
|
|
</LayoutContainer>
|
|
</LayoutContainer>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -175,9 +219,21 @@ const onObjectClick = () => { }
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
.absolute-container {
|
|
.absolute-container {
|
|
|
- :deep(.left-side) {
|
|
|
|
|
|
|
+ h2{
|
|
|
|
|
+ padding: 0;
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ .right-conatiner{
|
|
|
|
|
+ .right-conatiner-tree{
|
|
|
|
|
+ width: 350px;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ }
|
|
|
|
|
+ .container{
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ :deep(.left-side) ,:deep(.right-conatiner-tree){
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
height: 100%;
|
|
height: 100%;
|