houyaf 3 lat temu
rodzic
commit
aa6b66edc3

+ 25 - 21
src/api/api/apiGatewayApi.ts

@@ -1,66 +1,70 @@
 import apiRequest from '@/network/http/apiRequest'
 
 /**
- * 获取Atu列表
- * @param data
+ * 查询
+ * @param objectCode
+ * @param oamCode
  * @returns
  */
-export function getX(apiCode: string, data: any) {
+export function getX(objectCode: string, oamCode: string, data: any) {
   return apiRequest({
-    url: `/x/${apiCode}`,
+    url: `/x/${objectCode}/${oamCode}`,
     method: 'GET',
     params: data,
   })
 }
 
 /**
- * 添加Atu
- * @param data
+ * 添加
+ * @param objectCode
+ * @param oamCode
  * @returns
  */
-export function createX(apiCode: string, data: any) {
+export function createX(objectCode: string, oamCode: string, data: any) {
   return apiRequest({
-    url: `/x/${apiCode}`,
+    url: `/x/${objectCode}/${oamCode}`,
     method: 'POST',
     data,
   })
 }
 
 /**
- * 更新Atu
- * @param data
+ * 更新
+ * @param objectCode
+ * @param oamCode
  * @returns
  */
-export function updateX(apiCode: string, data: any) {
+export function updateX(objectCode: string, oamCode: string, data: any) {
   return apiRequest({
-    url: `/x/${apiCode}`,
+    url: `/x/${objectCode}/${oamCode}`,
     method: 'PUT',
     data,
   })
 }
 
 /**
- * 更新Atu
- * @param data
+ * 更新
+ * @param objectCode
+ * @param oamCode
  * @returns
  */
-export function patchX(apiCode: string, data: any) {
+export function patchX(objectCode: string, oamCode: string, data: any) {
   return apiRequest({
-    url: `/x/${apiCode}`,
+    url: `/x/${objectCode}/${oamCode}`,
     method: 'PUT',
     data,
   })
 }
 
 /**
- * 删除Atu
- * @param apiId
- * @param atuId
+ * 删除
+ * @param objectCode
+ * @param oamCode
  * @returns
  */
-export function deleteX(apiCode: string, data: any) {
+export function deleteX(objectCode: string, oamCode: string, data: any) {
   return apiRequest({
-    url: `/x/${apiCode}`,
+    url: `/x/${objectCode}/${oamCode}`,
     method: 'DELETE',
     data,
   })

+ 1 - 1
src/locales/lang/zh-cn.json

@@ -8,7 +8,7 @@
     "logout": "退出登录",
     "newPassword": "新密码",
     "password": "密码",
-    "profile": "个人设置",
+    "personal": "个人设置",
     "hotkeys": "快捷键介绍",
     "sendCaptcha": "发送验证码",
     "search": {

+ 16 - 1
src/utils/tool.ts

@@ -733,7 +733,7 @@ export function ocAccess(i: string | number) {
   return strs[i as unknown as keyof typeof strs]
 }
 
-export function apiType(i: string | number) {
+export function apiMethod(i: string | number) {
   const strs = [
     '未知',
     'GET',
@@ -748,6 +748,21 @@ export function apiType(i: string | number) {
 export function oamType(i: string | number) {
   const strs = [
     '未知',
+    '基于Pk查询',
+    '多笔查询',
+    '分页查询',
+    '新增',
+    '修改',
+    '删除',
+    '非Pk单笔查询',
+  ]
+  return strs[i as unknown as keyof typeof strs]
+}
+
+
+export function sqlType(i: string | number) {
+  const strs = [
+    '未知',
     'DQL(数据查询)',
     'DML(数据操作)',
     'DDL(数据定义)',

+ 10 - 10
src/views/api/api/index.vue

@@ -9,7 +9,7 @@ import PSApi from './components/Api.vue'
 import { getBizData } from '@/api/biz/bizApi'
 import { deleteApiById, getApiByList, updateApiStatus } from '@/api/api/apiApi'
 import useSettingsStore from '@/store/modules/settings'
-import { apiType } from '@/utils/tool'
+import { apiMethod } from '@/utils/tool'
 
 const settingsStore = useSettingsStore()
 const router = useRouter()
@@ -29,6 +29,7 @@ interface Api {
   objectId: number
   oamId: number
   apiId: number
+  apiMethod: number
   apiType: number
   apiTitle: string
   apiCode: string
@@ -114,17 +115,16 @@ const onApiAdd = () => {
 }
 
 // 编辑API
-const onApiEdit = (data: { moduleId: number; apiId: number }) => {
-  const moduleId = data.moduleId
+const onApiEdit = (data: { apiId: number }) => {
   const apiId = data.apiId
-  apiRef.value.showEditApi(moduleId, apiId)
+  apiRef.value.showEditApi(apiId)
 }
 
 // 删除API
 const onApiDelete = (row: any) => {
-  const { moduleId, apiId, apiTitle } = row
+  const { apiId, apiTitle } = row
   ElMessageBox.confirm(`确认删除「${apiTitle}」吗?`, '确认信息').then(async () => {
-    await deleteApiById(moduleId, apiId)
+    await deleteApiById(apiId)
     await getApiData()
     ElMessage.success({
       message: '删除成功',
@@ -222,15 +222,15 @@ async function onChangeStatus(row: { apiId: number; status: number }) {
               </template>
             </el-table-column>
 
-            <el-table-column prop="apiType" label="请求" header-align="center" align="center" width="100">
+            <el-table-column prop="apiMethod" label="请求" header-align="center" align="center" width="100">
               <template #default="scope">
-                <span> {{ apiType(scope.row.apiType) }} </span>
+                <span> {{ apiMethod(scope.row.apiMethod) }} </span>
               </template>
             </el-table-column>
 
-            <el-table-column prop="apiCode" label="代码" header-align="left" align="left" width="120">
+            <el-table-column prop="apiCode" label="url" header-align="left" align="left" width="120">
               <template #default="scope">
-                <span> {{ scope.row.apiCode }} </span>
+                <span> /{{ scope.row.objectCode }}/{{ scope.row.oamCode }} </span>
               </template>
             </el-table-column>
 

+ 61 - 27
src/views/api/trans/index.vue

@@ -11,6 +11,7 @@ import ObjectSelector from './components/ObjectOAMSelector.vue'
 import useSettingsStore from '@/store/modules/settings'
 import { getApiById } from '@/api/api/apiApi'
 import { createX, deleteX, getX, patchX, updateX } from '@/api/api/apiGatewayApi'
+import { apiMethod } from '@/utils/tool'
 
 const settingsStore = useSettingsStore()
 const route = useRoute()
@@ -27,17 +28,30 @@ interface TreeNode {
 
 const state = reactive({
   loading: false,
-  apiTitle: '',
-  apiCode: '',
-  apiType: 0,
-  keywords: '',
   dialogState: 1,
   treeData: [] as TreeNode[],
   search: {
     apiId,
     keywords: '',
   },
-  params: '',
+  viewData: {
+    apiTitle: '',
+    apiMethod: 1,
+    apiCode: '',
+    apiType: 0,
+    apiParams: '',
+    objectId: 0,
+    objectType: 0,
+    objectCode: '',
+    objectTitle: '',
+    oamId: 0,
+    oamCode: '',
+    oamTitle: '',
+  },
+  formData: {
+    urlParams: '',
+    apiBody: '',
+  },
   result: '',
 })
 
@@ -47,9 +61,18 @@ const ObjectSelectorRef = ref()
 const getData = async () => {
   state.loading = true
   const { data } = await getApiById(apiId)
-  state.apiTitle = data.apiTitle
-  state.apiCode = data.apiCode
-  state.apiType = data.apiType
+  state.viewData.apiTitle = data.apiTitle
+  state.viewData.apiCode = data.apiCode
+  state.viewData.apiParams = data.apiParams
+  state.viewData.apiMethod = data.apiMethod
+  state.viewData.apiType = data.apiType
+  state.viewData.objectId = data.objectId
+  state.viewData.objectTitle = data.objectTitle
+  state.viewData.objectCode = data.objectCode
+  state.viewData.objectType = data.objectType
+  state.viewData.oamId = data.oamId
+  state.viewData.oamCode = data.oamCode
+
   if (data.bizId && data.bizId > 0) {
     const oamNodes = [{
       id: data.oamId,
@@ -79,7 +102,7 @@ onMounted(() => {
 
 const formRef = ref<FormInstance>()
 
-const AddObjectOAM = () => {
+const bindObjectOAM = () => {
   ObjectSelectorRef.value.showModel(apiId)
 }
 
@@ -90,27 +113,29 @@ const onGenerateParams = async () => {
 
 const onExecute = async () => {
   try {
-    const apiType = state.apiType
-    const apiCode = state.apiCode
-    const params = JSON.parse(state.params)
-    if (apiType === 1) {
-      const { data } = await getX(apiCode, params)
+    const apiMethod = state.viewData.apiMethod
+    const objectCode = state.viewData.objectCode
+    const oamCode = state.viewData.oamCode
+    const urlParams = state.formData.urlParams
+    const apiBody = JSON.parse(state.formData.apiBody)
+    if (apiMethod === 1) {
+      const { data } = await getX(objectCode, oamCode, urlParams)
       state.result = JSON.stringify(data)
     }
-    else if (apiType === 2) {
-      const { data } = await createX(apiCode, params)
+    else if (apiMethod === 2) {
+      const { data } = await createX(objectCode, oamCode, apiBody)
       state.result = JSON.stringify(data)
     }
-    else if (apiType === 3) {
-      const { data } = await updateX(apiCode, params)
+    else if (apiMethod === 3) {
+      const { data } = await updateX(objectCode, oamCode, apiBody)
       state.result = JSON.stringify(data)
     }
-    else if (apiType === 4) {
-      const { data } = await patchX(apiCode, params)
+    else if (apiMethod === 4) {
+      const { data } = await patchX(objectCode, oamCode, apiBody)
       state.result = JSON.stringify(data)
     }
-    else if (apiType === 5) {
-      const { data } = await deleteX(apiCode, params)
+    else if (apiMethod === 5) {
+      const { data } = await deleteX(objectCode, oamCode, apiBody)
       state.result = JSON.stringify(data)
     }
   }
@@ -136,7 +161,7 @@ function goBack() {
 
 <template>
   <div class="absolute-container">
-    <page-header :title="state.apiTitle" :content="state.apiCode">
+    <page-header :title="state.viewData.apiTitle" :content="state.apiCode">
       <el-button size="default" round @click="goBack">
         <template #icon>
           <el-icon>
@@ -152,7 +177,7 @@ function goBack() {
         <template #leftSide>
           <el-space wrap>
             <el-button-group class="btns">
-              <el-button type="primary" class="add" @click="AddObjectOAM()">
+              <el-button type="primary" class="add" @click="bindObjectOAM()">
                 绑定对象
               </el-button>
             </el-button-group>
@@ -178,12 +203,21 @@ function goBack() {
 
         <div class="form">
           <el-form ref="formRef" label-width="100px" label-position="top">
-            <el-form-item label="数据参数" prop="code">
+            <el-form-item v-if="state.objectCode" label="URL" prop="code">
+              <span>{{ apiMethod(state.apiMethod) }}: /{{ state.objectCode }}/{{ state.oamCode }} </span>
+            </el-form-item>
+
+            <el-form-item label="Url参数">
+              <el-input v-model="state.params" type="textarea" rows="2" placeholder="Url Params" />
+            </el-form-item>
+
+
+            <el-form-item label="数据">
               <el-input v-model="state.params" type="textarea" rows="10" placeholder="数据" />
             </el-form-item>
 
-            <el-form-item v-if="state.result" label="生成参数" prop="code">
-              <el-input v-model="state.result" type="textarea" rows="10" placeholder="数据" readonly />
+            <el-form-item v-if="state.result" label="结果">
+              <el-input v-model="state.result" type="textarea" rows="10" placeholder="结果" readonly />
             </el-form-item>
 
             <div class="action-bottom">

+ 24 - 8
src/views/biz/oam/components/objectOAM.vue

@@ -13,6 +13,15 @@ const formRules = ref<FormRules>({
   oamTitle: [
     { required: true, message: '请输入标题', trigger: 'blur' },
   ],
+  oamCode: [
+    { required: true, message: '请输入行为代码', trigger: 'blur' },
+  ],
+  oamType: [
+    { required: true, message: '请输入行为类型', trigger: 'blur' },
+  ],
+  sqlType: [
+    { required: true, message: '请输入操作类型', trigger: 'blur' },
+  ],
   oamDesc: [
     { required: false, message: '请输入描述', trigger: 'blur' },
   ],
@@ -27,8 +36,9 @@ const state = reactive({
     objectId: 0,
     oamId: 0,
     oamTitle: '',
-    oamType: 0,
-    sqlType: 0,
+    oamType: 1,
+    oamCode: '',
+    sqlType: 1,
     sqlStatement: '',
     sqlSelect: '',
     sqlFrom: '',
@@ -76,9 +86,10 @@ function resetFormData() {
     bizId: 0,
     objectId: 0,
     oamId: 0,
-    oamType: 0,
+    oamType: 1,
+    oamCode: '',
     oamTitle: '',
-    sqlType: 0,
+    sqlType: 1,
     sqlStatement: '',
     sqlSelect: '',
     sqlFrom: '',
@@ -98,13 +109,14 @@ defineExpose({
     state.formData.objectId = objectId
     state.dialogVisible = true
   },
-  showEditModel(modelId: number, objectId: number, oamId: number) {
+
+  showEditModel(bizId: number, objectId: number, oamId: number) {
     resetFormData()
     state.title = '编辑对象行为'
-    state.formData.bizId = modelId
+    state.actionType = 2
+    state.formData.bizId = bizId
     state.formData.objectId = objectId
     state.formData.oamId = oamId
-    state.actionType = 2
     state.dialogVisible = true
     getData()
   },
@@ -120,6 +132,10 @@ defineExpose({
             <el-input v-model="state.formData.oamTitle" placeholder="请输入标题" />
           </el-form-item>
 
+          <el-form-item label="行为代码" prop="oamCode">
+            <el-input v-model="state.formData.oamCode" placeholder="请输入行为代码" />
+          </el-form-item>
+
           <el-form-item label="类型" prop="oamType">
             <el-radio-group v-model="state.formData.oamType">
               <el-radio :label="1">
@@ -167,7 +183,7 @@ defineExpose({
             <el-input v-model="state.formData.sqlStatement" type="textarea" rows="5" placeholder="请输入SQL" />
           </el-form-item>
 
-          <el-form-item label="Count" prop="sqlCount">
+          <el-form-item v-if="state.formData.oamType === 3" label="Count" prop="sqlCount">
             <el-input v-model="state.formData.sqlCount" type="textarea" rows="5" placeholder="请输入SQL" />
           </el-form-item>
 

+ 16 - 21
src/views/biz/oam/index.vue

@@ -4,13 +4,12 @@ meta:
 </route>
 
 <script lang="ts" setup name="PagesExampleTable">
-import type { FormInstance } from 'element-plus'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import ObjectOAMComponent from './components/objectOAM.vue'
 import useSettingsStore from '@/store/modules/settings'
 import { getObjectById } from '@/api/biz/bizObjectApi'
 import { deleteObjectOAMById, getObjectOAMById, getObjectOAMByList } from '@/api/biz/bizObjectOAMApi'
-import { oamType } from '@/utils/tool'
+import { oamType, sqlType } from '@/utils/tool'
 
 const settingsStore = useSettingsStore()
 const route = useRoute()
@@ -129,8 +128,6 @@ const onTreeNodeClick = (node: TreeNode) => {
 
 const objectOAMRef = ref()
 const onAdd = () => {
-  window.console.log(bizId)
-  window.console.log(objectId)
   objectOAMRef.value.showAddModel(bizId, objectId)
 }
 
@@ -158,10 +155,10 @@ const onSuccess = () => {
 // 返回列表页
 function goBack() {
   if (settingsStore.settings.tabbar.enable && settingsStore.settings.tabbar.mergeTabsBy !== 'activeMenu') {
-    tabbar.close({ name: 'modelList' })
+    tabbar.close({ name: 'biz_object_index' })
   }
   else {
-    router.push({ name: 'modelList' })
+    router.push({ name: 'biz_object_index' })
   }
 }
 </script>
@@ -187,7 +184,7 @@ function goBack() {
                 <div class="custom-tree-node">
                   <div class="label" :title="node.label">
                     <el-icon v-if="data.isLeaf" size="16px" style="margin-right: 5px;">
-                      <svg-icon name="uim:box" />
+                      <svg-icon name="ep:key" />
                     </el-icon>
                     <div class="text">
                       {{ data.label }}
@@ -205,24 +202,18 @@ function goBack() {
         <div class="form">
           <tool-header>
             <template #right>
-              <el-button type="primary" @click="onAdd">
-                添加
-              </el-button>
-
-              <el-button type="primary" @click="onEdit">
-                编辑
-              </el-button>
+              <el-button type="primary" @click="onAdd">添加</el-button>
+              <el-button type="primary" @click="onEdit">编辑</el-button>
             </template>
           </tool-header>
-          <page-main title="SQL">
+          <page-main :title="state.oam.oamTitle">
             <div class="question">
               <ol class="answer">
-                <li><span>Sql</span><br>{{ state.oam.sqlStatement }}</li>
-                <li><span>Select</span><br>{{ state.oam.sqlSelect }}</li>
-                <li><span>From </span><br>{{ state.oam.sqlFrom }}</li>
-                <li><span>Where</span><br>{{ state.oam.sqlWhere }}</li>
-                <li><span>Count</span><br>{{ state.oam.sqlCount }}</li>
-                <li><span>Order</span><br>{{ state.oam.sqlOrder }}</li>
+                <li><span>编码:</span><br>{{ state.oam.oamCode }}</li>
+                <li><span>行为类型:</span><br>{{ oamType(state.oam.oamType) }}</li>
+                <li><span>操作类型:</span><br>{{ sqlType(state.oam.sqlType) }}</li>
+                <li v-if="state.oam.sqlType === 1"><span>Sql:</span><br>{{ state.oam.sqlStatement }}</li>
+                <li v-if="state.oam.oamType === 3"><span>Count</span><br>{{ state.oam.sqlCount }}</li>
                 <li><span>说明</span><br>{{ state.oam.oamDesc }}</li>
               </ol>
             </div>
@@ -236,6 +227,10 @@ function goBack() {
 
 <style lang="scss" scoped>
 .absolute-container {
+  .page-header {
+    margin-bottom: 0;
+  }
+
   :deep(.left-side) {
     display: flex;
     flex-direction: column;

+ 13 - 6
src/views/biz/object/index.vue

@@ -208,13 +208,13 @@ const onObjectDelete = (row: any) => {
   <div class="absolute-container">
     <tool-header title="业务模型">
       <template #right>
-        <el-button type="primary" plain @click="onBizAdd">
+        <el-button v-waves.float type="primary" @click="onBizAdd">
           <template #icon>
             <el-icon>
               <svg-icon name="i-ep:plus" />
             </el-icon>
           </template>
-          新增业务模型
+          业务模型
         </el-button>
       </template>
     </tool-header>
@@ -228,7 +228,7 @@ const onObjectDelete = (row: any) => {
                 <div class="custom-tree-node">
                   <div class="label" :title="node.label">
                     <el-icon v-if="data.isLeaf" size="16px" style="margin-right: 5px;">
-                      <svg-icon name="uim:box" />
+                      <svg-icon name="bx:bxs-component" />
                     </el-icon>
                     <div class="text">
                       {{ data.label }}
@@ -271,13 +271,13 @@ const onObjectDelete = (row: any) => {
                 </template>
               </el-button>
 
-              <el-button type="primary" plain size="default" @click.stop="onObjectAdd">
+              <el-button type="primary" size="default" @click.stop="onObjectAdd">
                 <template #icon>
                   <el-icon>
                     <svg-icon name="i-ep:plus" />
                   </el-icon>
                 </template>
-                新增业务对象
+                业务对象
               </el-button>
             </template>
           </tool-bar>
@@ -285,7 +285,14 @@ const onObjectDelete = (row: any) => {
           <el-table ref="objectTableRef" v-loading="state.loading" class="list-table" :data="state.objectList" border stripe highlight-current-row height="100%">
             <el-table-column type="index" label="序号" header-align="center" align="center" width="70" />
 
-            <el-table-column prop="objectTitle" label="名称" header-align="center" align="center" width="200" />
+            <el-table-column prop="objectTitle" label="名称" header-align="center" align="center" width="200">
+              <template #default="scope">
+                <el-icon>
+                  <svg-icon name="lucide:clipboard-check" />
+                </el-icon>
+                <span> &nbsp;&nbsp;{{ scope.row.objectTitle }}</span>
+              </template>
+            </el-table-column>
 
             <el-table-column prop="objectCode" label="代码" header-align="center" align="center" width="150" />
 

+ 13 - 6
src/views/model/object/index.vue

@@ -208,13 +208,13 @@ const onObjectDelete = (row: any) => {
   <div class="absolute-container">
     <tool-header title="数据模型">
       <template #right>
-        <el-button type="primary" plain @click="onModelAdd">
+        <el-button v-waves.float type="primary" @click="onModelAdd">
           <template #icon>
             <el-icon>
               <svg-icon name="i-ep:plus" />
             </el-icon>
           </template>
-          新增数据模型
+          数据模型
         </el-button>
       </template>
     </tool-header>
@@ -227,7 +227,7 @@ const onObjectDelete = (row: any) => {
                 <div class="custom-tree-node">
                   <div class="label" :title="node.label">
                     <el-icon v-if="data.isLeaf" size="16px" style="margin-right: 5px;">
-                      <svg-icon name="uim:box" />
+                      <svg-icon name="bx:bxs-component" />
                     </el-icon>
                     <div class="text">
                       {{ data.label }}
@@ -270,13 +270,13 @@ const onObjectDelete = (row: any) => {
                 </template>
               </el-button>
 
-              <el-button plain size="primary" @click.stop="onObjectAdd">
+              <el-button size="primary" @click.stop="onObjectAdd">
                 <template #icon>
                   <el-icon>
                     <svg-icon name="i-ep:plus" />
                   </el-icon>
                 </template>
-                新增数据对象
+                数据对象
               </el-button>
             </template>
           </tool-bar>
@@ -284,7 +284,14 @@ const onObjectDelete = (row: any) => {
           <el-table ref="objectTableRef" v-loading="state.loading" class="list-table" :data="state.objectList" border stripe highlight-current-row height="100%">
             <el-table-column type="index" label="序号" header-align="center" align="center" width="70" />
 
-            <el-table-column prop="objectTitle" label="名称" header-align="center" align="center" width="200" />
+            <el-table-column prop="objectTitle" label="名称" header-align="center" align="center" width="200">
+              <template #default="scope">
+                <el-icon>
+                  <svg-icon name="lucide:clipboard-check" />
+                </el-icon>
+                <span>{{ scope.row.objectTitle }}</span>
+              </template>
+            </el-table-column>
 
             <el-table-column prop="objectCode" label="代码" header-align="center" align="center" width="150" />