瀏覽代碼

优化上传

sujunling 2 年之前
父節點
當前提交
84df2d57fa

二進制
.DS_Store


二進制
public/favicon.ico


二進制
public/favicon2.ico


+ 91 - 0
src/api/interface/interface.ts

@@ -0,0 +1,91 @@
+
+import { defHttp } from '/@/utils/http/axios';
+import { session } from "/@/utils/Memory.js";
+import type { ErrorMessageMode } from '/#/axios';
+
+enum Api {
+    List = '/base-center/system/selectSystemPowerInterface',
+    GetGroup = '/interface-center/interface/getGroup',
+    GetGroupId = '/interface-center/interface/getInterfacesAndPowerByUserId'
+}
+
+const interfaceType = { apiUrl2: true };
+
+/**
+ * @description:获取应用列表
+ */
+export function interfaceList(params) {
+    var e = {
+        keyStr: params.keyword || "",
+        page: params.page || 1,
+        rows: params.rows || 1000,
+        systemKey: "app",
+        isgetPowered: false
+    }
+    return new Promise<void>((resolve, reject) => {
+        defHttp.post({ url: Api.List, params: e })
+            .then((r) => {
+                if (r.resp_code == 0 && r.datas) {
+                    resolve(r.datas);
+                } else {
+                    resolve([]);
+                }
+            })
+    })
+}
+
+
+/**
+ * @description:获取接口列表的分组
+ */
+export function getGroup() {
+    return new Promise<void>((resolve, reject) => {
+        defHttp.get({ url: Api.GetGroup })
+            .then((r) => {
+                if (r.resp_code == 0 && r.datas && r.datas.length) {
+                    resolve(r.datas);
+                } else {
+                    resolve([]);
+                }
+            })
+    })
+}
+
+/**
+ * @description:获取应用列表
+ */
+export function getGroup() {
+    return new Promise<void>((resolve, reject) => {
+        defHttp.get({ url: Api.GetGroup })
+            .then((r) => {
+                if (r.resp_code == 0 && r.datas && r.datas.length) {
+                    resolve(r.datas);
+                } else {
+                    resolve([]);
+                }
+            })
+    })
+}
+
+
+/**
+ * @description:通过组id获取列表
+ */
+export function getGroupId(e) {
+    //?groupId=58c725b0-9620-45ea-a517-3d57d3ccf0e9&name=&pageNum=1&pageSize=6
+    var params = {
+        groupId: e.groupId,
+        pageSize: e.page,
+        pageNum: e.rows,
+    }
+    return new Promise<void>((resolve, reject) => {
+        defHttp.get({ url: Api.GetGroupId, params })
+            .then((r) => {
+                if (r.resp_code == 0 && r.datas && r.datas.length) {
+                    resolve(r.datas);
+                } else {
+                    resolve([]);
+                }
+            })
+    })
+}

+ 7 - 3
src/api/sys/menu.ts

@@ -56,9 +56,13 @@ export const saveStructure = (params) => {
 export const structureList = () => {
   return new Promise<void>((resolve, reject) => {
     defHttp.post({ url: Api.GetChildDepartment }).then((res) => {
-      var a = tool.structureTree([res.datas]);
-      console.log(a)
-      resolve(a)
+      if (res.datas && res.datas.depInfo) {
+        var a = tool.structureTree([res.datas]);
+        console.log(a)
+        resolve(a)
+      } else {
+        resolve([])
+      }
     })
   })
 };

+ 1 - 0
src/api/sys/zhiwei.ts

@@ -15,6 +15,7 @@ enum Api {
 export const structureList = () => {
     return new Promise<void>((resolve, reject) => {
         defHttp.post({ url: Api.GetChildDepartment }).then((res) => {
+            
             var a = tool.structureTree([res.datas]);
             console.log(a)
             resolve(a)

二進制
src/assets/images/interface.jpg


+ 3 - 3
src/utils/Tool.js

@@ -37,20 +37,20 @@ var tool = {
         let fd = form || new FormData();
         let formKey;
         for (let property in obj) {
-            if (obj.hasOwnProperty(property)) {
+            if (obj && obj.hasOwnProperty && obj.hasOwnProperty(property)) {
                 if (namespace) {
                     formKey = namespace + '[' + property + ']';
                 } else {
                     formKey = property;
                 }
-                if (!(obj[property] instanceof Array) && !(obj[property] instanceof File)) {
+                if (!(obj[property] instanceof Array) && !(obj[property] instanceof File) && !(typeof obj[property] == 'string')) {
+                    console.log(obj[property] instanceof Array)
                     this.objectToFormData(obj[property], fd, formKey);
                 } else {
                     fd.append(formKey, obj[property]);
                 }
             }
         }
-
         return fd;
     }
 }

+ 1 - 1
src/views/assembly/index.vue

@@ -84,7 +84,7 @@ export default defineComponent({
 
 .account-center-bottom {
   background: #fff;
-  height: calc(100vh - 110px);
+  height: calc(100vh - 80px);
   overflow: hidden;
 }
 

+ 1 - 1
src/views/authorize/authorize/index.vue

@@ -76,7 +76,7 @@ export default defineComponent({
 <style lang="less" scoped>
 .account-center-bottom {
   background: #fff;
-  height: calc(100vh - 110px);
+  height: calc(100vh - 80px);
   overflow: hidden;
 }
 

+ 11 - 10
src/views/interface/index.vue

@@ -6,7 +6,7 @@
       </div>
       <div class="ztree-container">
         <p v-for="(i, k) in menu" :key="k" @click="scrollToSection(k)"
-          :class="[`${action == k ? 'action' : ''}`]">{{ i.name }}({{ i.num }})</p>
+          :class="[`${action == k ? 'action' : ''}`]">{{ i.groupName }}({{ i.num }})</p>
       </div>
     </div>
     <div class="datacenter-right">
@@ -19,7 +19,7 @@
 import { defineComponent, ref, watch } from 'vue';
 import AssemblyData from './item/AssemblyData.vue';
 import { onMounted } from 'vue';
-import { directoryTree, platList } from '/@/api/resource/plat';
+import { getGroup } from '/@/api/interface/interface.ts';
 
 const prefixCls = 'account-center-bottom'
 
@@ -29,16 +29,16 @@ export default defineComponent({
   },
   setup() {
     const action = ref(0)
-    var menu = [
-      { name: '数据分析', num: 10 },
-      { name: '用户中心', num: 7 },
-      { name: '授权中心', num: 8 },
-      { name: '空间分析', num: 9 },
-      { name: '专项接口', num: 6 }
-    ]
     function scrollToSection(index) {
       action.value = index;
     }
+    onMounted(() => getGroupList())
+    var menu = ref([]);
+    function getGroupList() {
+      getGroup().then((res) => menu.value = res)
+    }
+
+
     return {
       scrollToSection,
       action,
@@ -54,9 +54,10 @@ export default defineComponent({
   background: #0671DD;
   color: #fff;
 }
+
 .account-center-bottom {
   background: #fff;
-  height: calc(100vh - 110px);
+  height: calc(100vh - 80px);
   overflow: hidden;
 }
 

+ 161 - 16
src/views/interface/item/AssemblyData.vue

@@ -4,26 +4,60 @@
     <div class="datacenter-right">
       <div class="resource_list" id="map_list">
         <div v-for="(i, k) in list" :key="k" class="item">
-          <div><img :src="i.src" alt="" srcset=""></div>
+          <div><img :src="interfaceImg" alt="" srcset=""></div>
           <div class="itemLetf">
             <span>
-              <h1>查询是否配置资源图层</h1>
+              <h1>{{ i.name }}</h1>
               <b>
                 <span>加入申请库</span>
-                <span>查看详情</span>
+                <span @click="showDrawer(i)" style="cursor: pointer;">查看详情</span>
               </b>
             </span>
-            <p><span>描述:</span>查询是否配置资源图层查询是否配置资源图层查询是否配置资源图层查询是否配置资源图层查询是否配置资源图层</p>
+            <p class="remark" style="height: 32px;"><span>描述:</span>
+            <p v-html="i.remark"></p>
+            </p>
             <div class="leftBut">
-              <p><span>当前版本:</span><span>1.0.1</span></p>
-              <p><span>调用次数:</span><span>1000</span></p>
-              <p><span>发布时间:</span><span>2023-08-15 12:12:12</span></p>
-              <p><span>更新时间:</span><span>2023-08-15 12:12:12</span></p>
+              <p><span>当前版本:</span><span>{{ i.version }}</span></p>
+              <p><span>调用次数:</span><span>{{ i.is_open || 0 }}</span></p>
+              <p><span>{{ i.publish_time ? '发布时间' : '创建时间' }}</span><span>{{ i.publish_time || i.create_time }}</span></p>
+              <p><span>更新时间:</span><span>{{ i.update_time }}</span></p>
             </div>
           </div>
         </div>
       </div>
+      <div class="pagination">
+        <Pagination v-model:current="current" :page-size-options="pageSizeOptions" :total="total" show-size-changer
+          :page-size="pageSize" @showSizeChange="onShowSizeChange">
+          <template #buildOptionText="props">
+            <span v-if="props.value !== '50'">{{ props.value }}条/页</span>
+            <span v-else>全部</span>
+          </template>
+        </Pagination>
+      </div>
     </div>
+    <a-drawer title="接口详情" width="400px" placement="right" :closable="false" v-model:visible="visible"
+      :after-visible-change="afterVisibleChange">
+      <p><b>接口名称:</b>&nbsp;&nbsp;<span>{{ action.name }}</span></p>
+      <p><b>系统名称:</b>&nbsp;&nbsp;<span>{{ action.system_name }}</span></p>
+      <p><b>接口地址:</b>&nbsp;&nbsp;<span>{{ action.request_url }}</span></p>
+      <p><b>接口类型:</b>&nbsp;&nbsp;<span>{{ action.request_method }}</span></p>
+      <p><b>请求数据:</b>&nbsp;&nbsp;<span>{{ action.response_datatype }}</span></p>
+      <p class="remark" style="height: 19px;"><b>资源描述:</b>&nbsp;&nbsp;<span>
+          <p v-html="action.remark"></p>
+        </span></p>
+      <p>
+      <p>请求头:</p> <textarea name="" id="" cols="45" rows="3">{{ formatData(action.request_headers) }}</textarea></p>
+      <p>
+      <p>请求参数:</p> <textarea name="" id="" cols="45" rows="3">{{ formatData(action.query_params) }}</textarea></p>
+      <p>
+      <p>返回参数:</p> <textarea name="" id="" cols="45" rows="10">{{ formatData(action.response_params) }}</textarea></p>
+      <p>
+      <p>返回案例:</p> <textarea name="" id="" cols="45" rows="10">{{ formatData(action.success_resp_example) }}</textarea>
+      </p>
+      <div class="footer">
+        <a-button style="margin-right: 8px" @click="onClose">关闭</a-button>
+      </div>
+    </a-drawer>
     <AssemblyDrawer @register="registerModal" />
   </div>
 </template>
@@ -31,9 +65,9 @@
 import { defineComponent, nextTick, onMounted, ref, defineProps, watch } from 'vue';
 import { BasicTable, useTable, TableAction } from '/@/components/Table';
 import { columns, searchFormSchema } from './sms.data';
-import { Popconfirm, Tooltip } from 'ant-design-vue';
+import { Popconfirm, Tooltip, Pagination } from 'ant-design-vue';
 import { Authority } from '/@/components/Authority';
-import { platList, img, apply } from '/@/api/resource/plat';
+import { interfaceList,getGroupId } from '/@/api/interface/interface.ts';
 import { message } from 'ant-design-vue';
 // 加载自定义侧边弹出框 组件
 import { useDrawer } from '/@/components/Drawer';
@@ -41,11 +75,12 @@ import { useDrawer } from '/@/components/Drawer';
 import AssemblyDrawer from './AssemblyDrawer.vue';
 import Search from './child/Search.vue';
 import { session } from '/@/utils/Memory';
+import interfaceImg from '/@/assets/images/interface.jpg';
 
 
 export default defineComponent({
   name: 'SmsLog',
-  components: { BasicTable, TableAction, Authority, Search, Popconfirm, Tooltip, AssemblyDrawer },
+  components: { Pagination, BasicTable, TableAction, Authority, Search, Popconfirm, Tooltip, AssemblyDrawer },
   setup() {
     const [registerModal, { openDrawer }] = useDrawer(); //使用右侧弹出框
 
@@ -69,13 +104,90 @@ export default defineComponent({
     }
 
 
-    var list = [
-      { src: 'http://106.12.170.138:4001/examples/img/Earth.jpg', name: '地图加载', has: false, href: "onlineIde_a1_Hello_World_01" },
-      { src: 'http://106.12.170.138:4001/examples/img/Earth.jpg', name: '地图加载', has: false, href: "onlineIde_a1_Hello_World_01" },
-      { src: 'http://106.12.170.138:4001/examples/img/Earth.jpg', name: '地图加载', has: false, href: "onlineIde_a1_Hello_World_01" }
-    ]
+    // var list = [
+    //   { src: 'http://106.12.170.138:4001/examples/img/Earth.jpg', name: '地图加载', has: false, href: "onlineIde_a1_Hello_World_01" },
+    //   { src: 'http://106.12.170.138:4001/examples/img/Earth.jpg', name: '地图加载', has: false, href: "onlineIde_a1_Hello_World_01" },
+    //   { src: 'http://106.12.170.138:4001/examples/img/Earth.jpg', name: '地图加载', has: false, href: "onlineIde_a1_Hello_World_01" }
+    // ]
+
+    var list = ref([]);
+
+    onMounted(() => getList())
+
+    function getList() {
+      interfaceList({
+        page: current.value,
+        rows: pageSize.value,
+        keyword: keyword.value,
+      }).then((e) => {
+        console.log("e:", e)
+        if (e.records.length) {
+          eventBus.emit("interfaceNum", e);
+          total.value = e.total;
+          list.value = e.records;
+        }
+      })
+    }
+
+    const visible = ref<boolean>(false);
+    const action = ref({});
+    const afterVisibleChange = (bool: boolean) => {
+      console.log('visible', bool);
+    };
+
+    const showDrawer = (i) => {
+      console.log("i", i);
+      action.value = i;
+      visible.value = true;
+    };
+    const onClose = () => {
+      visible.value = false;
+    };
+
+    function formatData(e) {
+      var str = null;
+      try {
+        str = JSON.stringify(JSON.parse(action.request_headers), null, 4)
+      } catch (error) {
+        str = e;
+      }
+      return str;
+    }
+
+    const pageSizeOptions = ref(['10', '20', '30', '40', '50']);
+    const current = ref(1);
+    const pageSize = ref(10);
+    const total = ref(50);
+    const onShowSizeChange = (current, pageSize) => {
+      console.log(pageSize);
+      pageSize.value = pageSize;
+      getList()
+    };
+    watch(current, () => {
+      getList();
+    });
+    const keyword = ref("");
+    eventBus.on("interfaceSearch", (e) => { keyword.value = e, getList() });
+
+
+    // function getGroupId() {
+
+    // }
+
 
     return {
+      pageSizeOptions,
+      current,
+      pageSize,
+      total,
+      onShowSizeChange,
+      formatData,
+      visible,
+      action,
+      afterVisibleChange,
+      showDrawer,
+      onClose,
+      interfaceImg,
       registerModal,
       list,
       handleQuery,
@@ -85,6 +197,39 @@ export default defineComponent({
 </script>
 
 <style scoped>
+.datacenter-right {
+  position: relative;
+  height: auto;
+}
+
+.pagination {
+  width: calc(100% - 320px);
+  height: 40px;
+  position: fixed;
+  z-index: 4;
+  bottom: 16px;
+  background: #fff;
+}
+
+.pagination>ul {
+  float: right;
+}
+
+.remark span,
+.remark p {
+  display: inline-block;
+}
+
+#map_list {
+  overflow-y: scroll;
+  height: calc(100vh - 194px);
+  background: #fff;
+}
+
+#map_list::-webkit-scrollbar {
+  width: 1px;
+}
+
 .leftBut>p {
   display: inline-block;
   font-size: 14px;

+ 9 - 4
src/views/interface/item/child/Search.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="wrapper">
-        <span class="sqrk"  @click="showModal">申请库(1)</span>
+        <span class="sqrk" @click="showModal">申请库(1)</span>
         <span>
             <a-select ref="select" v-model:value="value" style="width: 200px" :options="options" @focus="focus"
                 @change="handleChange">
@@ -14,7 +14,7 @@
             <a-checkbox v-model:checked="checked2">测试数据1</a-checkbox>
             <a-checkbox v-model:checked="checked3">测试数据2</a-checkbox>
             <a-checkbox v-model:checked="checked4">测试数据3</a-checkbox> -->
-            一共有6个通用接口
+            一共有{{ num }}个通用接口
         </div>
         <a-modal v-model:visible="visible" title="申请库" @ok="handleOk" width="1440px" height="980px">
             <library></library>
@@ -26,6 +26,7 @@
 <script lang="ts">
 import { defineComponent, ref, computed, unref } from 'vue';
 import library from "../../library/index.vue"
+import eventBus from '/@/utils/eventBus';
 
 export default defineComponent({
     name: 'Search',
@@ -53,8 +54,8 @@ export default defineComponent({
             },
         ]);
 
-        function onSearch() {
-
+        function onSearch(e) {
+            eventBus.emit("interfaceSearch", e);
         }
 
         const visible = ref<boolean>(false);
@@ -66,7 +67,11 @@ export default defineComponent({
             visible.value = false;
         };
 
+        const num = ref(0);
+        eventBus.on("interfaceNum", i => num.value = i.total)
+
         return {
+            num,
             visible,
             showModal,
             handleOk,

+ 1 - 1
src/views/resource/plat/index.vue

@@ -82,7 +82,7 @@ export default defineComponent({
 
 .account-center-bottom {
   background: #fff;
-  height: calc(100vh - 110px);
+  height: calc(100vh - 80px);
   overflow: hidden;
 }
 

+ 2 - 3
src/views/systemAdmin/system/structure/index.vue

@@ -5,9 +5,9 @@
         <Button type="primary" @click="handleCreate">
           {{ getI18nCreateMenu }}
         </Button>
-        <Button type="primary" danger :disabled="getCanBatchDelete" @click="handleBatchDelete">
+        <!-- <Button type="primary" danger :disabled="getCanBatchDelete" @click="handleBatchDelete">
           批量删除
-        </Button>
+        </Button> -->
       </template>
       <template #action="{ record }">
         <TableAction :actions="[
@@ -146,7 +146,6 @@ export default defineComponent({
     async function handleDelete(record: Recordable) {
       try {
         let ids = isArray(record.departid) ? record.departid : [record.departid];
-        debugger;
         await DeleteStructure({ departid: ids });
         notification.success({
           message: '成功',

二進制
target/dist.zip


File diff suppressed because it is too large
+ 1 - 1
target/dist/assets/app-antd-dark-theme-style.e3b0c442.css


File diff suppressed because it is too large
+ 2 - 2
target/dist/index.html