houyaf 3 ani în urmă
părinte
comite
83f6c83d99

+ 1 - 1
src/network/http/apiRequest.ts

@@ -17,7 +17,7 @@ const toLogin = () => {
       query: {
         redirect: router.currentRoute.value.path !== '/login' ? router.currentRoute.value.fullPath : undefined,
       },
-    })
+    }).then(() => {})
   })
 }
 

+ 18 - 5
src/views/api/api/index.vue

@@ -65,9 +65,18 @@ const getApiData = async () => {
 
 const getData = async () => {
   const { data } = await getBizData()
-  state.treeData = data
-
   if (data && data.length > 0) {
+    data.forEach((biz: { label: string; bizTitle: string; children: any; isLeaf: boolean }) => {
+      biz.label = biz.bizTitle
+      biz.isLeaf = false
+      const objects = biz.children
+      objects.forEach((object: { label: string; objectTitle: string; isLeaf: boolean }) => {
+        object.label = object.objectTitle
+        object.isLeaf = true
+      })
+      biz.children = objects
+    })
+    state.treeData = data
     state.curBizId = data[0].bizId
     const objectList = data[0].children
     if (objectList && objectList.length > 0) {
@@ -148,7 +157,7 @@ async function onChangeStatus(row: { apiId: number; status: number }) {
                 <div class="custom-tree-node">
                   <div class="label" :title="node.label">
                     <el-icon size="16px" style="margin-right: 5px;">
-                      <svg-icon v-if="data.isLeaf > 0" name="uim:box" />
+                      <svg-icon v-if="data.isLeaf" name="uim:box" />
                       <svg-icon v-else name="bx:bxs-component" />
                     </el-icon>
                     <div class="text">
@@ -186,13 +195,17 @@ async function onChangeStatus(row: { apiId: number; status: number }) {
 
             <el-table-column prop="apiMethod" label="请求" header-align="center" align="center" width="100">
               <template #default="scope">
-                <el-tag type="warning"> {{ httpMethod(scope.row.apiMethod) }} </el-tag>
+                <el-tag type="warning">
+                  {{ httpMethod(scope.row.apiMethod) }}
+                </el-tag>
               </template>
             </el-table-column>
 
             <el-table-column prop="apiCode" label="url" header-align="center" align="left" width="200">
               <template #default="scope">
-                <el-tag type="success"> /{{ scope.row.objectCode }}/{{ scope.row.oamCode }} </el-tag>
+                <el-tag type="success">
+                  /{{ scope.row.objectCode }}/{{ scope.row.oamCode }}
+                </el-tag>
               </template>
             </el-table-column>
 

+ 107 - 0
src/views/repository/db/components/RepoObjectSelector.vue

@@ -0,0 +1,107 @@
+<route lang="yaml">
+meta:
+  enabled: false
+</route>
+
+<script lang="ts" setup name="repoObjectSelector">
+import { ElMessage } from 'element-plus'
+import { createRepoObject, getRepoObjectListByID } from '@/api/repo/repoObjectApi'
+const emit = defineEmits(['success'])
+
+const state = reactive({
+  title: '',
+  dialogVisible: false,
+  loading: false,
+  formData: {
+    repoId: 0,
+    modelId: 0,
+    objectId: 0,
+  },
+  actionType: 1,
+})
+
+onMounted(() => {})
+
+const getData = async () => {
+  state.loading = true
+  const { repoId } = state.formData
+  const { data } = await getRepoObjectListByID(repoId)
+  state.loading = false
+  state.formData = data
+}
+
+const onRepoObjectAdd = async (row: any) => {
+  state.formData.modelId = row.modelId
+  state.formData.objectId = row.objectId
+  const { msg } = await createRepoObject(state.formData)
+  ElMessage.success(msg)
+  emit('success')
+}
+
+function onCancel() {
+  state.dialogVisible = false
+}
+
+function resetFormData() {
+  state.formData = {
+    repoId: 0,
+    modelId: 0,
+    objectId: 0,
+  }
+}
+
+defineExpose({
+  showAddModel(repoId: number) {
+    resetFormData()
+    state.title = '新增'
+    state.actionType = 1
+    state.formData.repoId = repoId
+    state.dialogVisible = true
+  },
+})
+</script>
+
+<template>
+  <el-drawer v-model="state.dialogVisible" :title="state.title" width="800px" :close-on-click-modal="false" append-to-body destroy-on-close>
+    <el-table
+      ref="modelObjectTableRef"
+      v-loading="state.loading"
+      class="list-table"
+      :data="state.data"
+      row-key="permitId"
+      default-expand-all
+      size="small"
+      border stripe highlight-current-row
+      height="100%"
+    >
+      <el-table-column type="index" align="center" label="序号" width="70" />
+
+      <el-table-column label="模型名称" width="120">
+        <template #default="{ row }">
+          <span>{{ row.modelTitle }}</span>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="数据对象" header-align="center" align="center">
+        <template #default="{ row }">
+          <span>{{ row.objectTitle }}</span>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="操作" width="90" header-align="center" align="center">
+        <template #default="{ row }">
+          <div>
+            <el-button v-if="row.permitType === 0" size="small" type="primary" @click="onRepoObjectAdd(row)">
+              添加
+            </el-button>
+          </div>
+        </template>
+      </el-table-column>
+    </el-table>
+    <template #footer>
+      <el-button size="large" @click="onCancel">
+        取消
+      </el-button>
+    </template>
+  </el-drawer>
+</template>

+ 2 - 54
src/views/repository/db/index.vue

@@ -51,7 +51,7 @@ const getTreeData = async () => {
     state.curModelId = firstModel.value
     if (firstModel.children && firstModel.children.size > 0) {
       const firstObject = firstModel.children[0]
-      nextTick(() => {
+      await nextTick(() => {
         leftTreeRef.value.setCurrentKey(firstObject.value)
       })
     }
@@ -103,21 +103,6 @@ const onSearch = () => {
   getData()
 }
 
-// 添加对象
-const onRepoObjectAdd = () => {
-
-}
-
-// 编辑对像
-const onRepoObjectEdit = () => {
-
-}
-
-// 删除对象
-const onRepoObjectDelete = () => {
-
-}
-
 // 返回列表页
 function goBack() {
   if (settingsStore.settings.tabbar.enable && settingsStore.settings.tabbar.mergeTabsBy !== 'activeMenu') {
@@ -143,26 +128,8 @@ function goBack() {
     </page-header>
 
     <div class="page-main">
-      <LayoutContainer left-side-width="300px" hide-left-side-toggle>
+      <LayoutContainer left-side-width="250px" hide-left-side-toggle>
         <template #leftSide>
-          <el-button-group class="btns">
-            <el-button type="primary" class="add" @click="onRepoObjectAdd()">
-              <template #icon>
-                <el-icon>
-                  <svg-icon name="i-ep:plus" />
-                </el-icon>
-              </template>
-              对象行为
-            </el-button>
-            <el-button @click="getTreeData">
-              <template #icon>
-                <el-icon>
-                  <svg-icon name="i-ep:refresh" />
-                </el-icon>
-              </template>
-            </el-button>
-          </el-button-group>
-
           <el-scrollbar class="tree">
             <ElTree ref="leftTreeRef" :data="state.treeData" default-expand-all node-key="modelId" @node-click="onTreeNodeClick">
               <template #default="{ node, data }">
@@ -177,25 +144,6 @@ function goBack() {
                     <div class="text">
                       {{ data.label }}
                     </div>
-
-                    <div class="actions">
-                      <el-button-group>
-                        <el-button type="info" plain size="default" @click.stop="onRepoObjectEdit(node, data)">
-                          <template #icon>
-                            <el-icon>
-                              <svg-icon name="i-ep:edit" />
-                            </el-icon>
-                          </template>
-                        </el-button>
-                        <el-button type="danger" plain size="default" @click.stop="onRepoObjectDelete(node, data)">
-                          <template #icon>
-                            <el-icon>
-                              <svg-icon name="i-ep:delete" />
-                            </el-icon>
-                          </template>
-                        </el-button>
-                      </el-button-group>
-                    </div>
                   </div>
                 </div>
               </template>