Browse Source

feat: 多端接口调试

From-wh 2 years ago
parent
commit
888db8a6ef

+ 2 - 2
template/admin/src/api/systemBackendRouting.js

@@ -31,9 +31,9 @@ export function routeCate(appName) {
 /**
  * 路由树
  */
-export function routeList() {
+export function routeList(apiType) {
   return request({
-    url: `system/route/tree`,
+    url: `system/route/tree?app_name=${apiType}`,
     method: 'get',
   });
 }

+ 8 - 3
template/admin/src/pages/system/backendRouting/debugging.vue

@@ -279,6 +279,10 @@ export default {
         return [];
       },
     },
+    apiType: {
+      type: String,
+      default: 'adminapi',
+    },
   },
   data() {
     return {
@@ -321,7 +325,7 @@ export default {
     },
     async requestData() {
       let url, method, params, body, headers;
-      url = this.interfaceData.app_name + '/' + this.interfaceData.path;
+      url = this.apiType + '/' + this.interfaceData.path;
       method = this.interfaceData.method;
       params = this.filtersData((await this.$refs.xTable.getTableData().tableData) || []);
       body =
@@ -331,6 +335,7 @@ export default {
       let h = this.filtersData((await this.$refs.zTable.getTableData().tableData) || []);
       headers = h;
       this.codes = '';
+      console.log(url);
       requestMethod(url, method, params, body, headers)
         .then((res) => {
           if (!res) return this.$Message.error('接口异常');
@@ -519,7 +524,7 @@ export default {
   display: flex;
   justify-content: right;
 }
-/deep/ .monaco-editor{
-    min-height: 700px
+/deep/ .monaco-editor {
+  min-height: 700px;
 }
 </style>

+ 410 - 389
template/admin/src/pages/system/backendRouting/index.vue

@@ -1,403 +1,409 @@
 <template>
   <div>
-    <div class="main">
-      <!-- <Tree class="tree" :data="treeData"  @on-contextmenu="handleContextMenu">
-          <template #contextMenu>
-            <DropdownItem @click.native="handleContextCreateFolder()">新建文件夹</DropdownItem>
-            <DropdownItem @click.native="handleContextCreateFile()">新建文件</DropdownItem>
-            <DropdownItem @click.native="handleContextDelFolder()" style="color: #ed4014">删除</DropdownItem>
-          </template>
-        </Tree> -->
-      <!-- <Tree :data="treeData" :render="renderContent" class="demo-tree-render"></Tree> -->
-      <div class="ivu-mt mr20 card-tree">
-        <div class="tree">
-          <div class="main-btn">
-            <Button class="mb5 mr10" style="flex: 1" type="primary" @click="clickMenu(4)" long>新增分类</Button>
-            <Button class="mr10" type="success" @click="syncRoute()">同步</Button>
-            <Button type="info" @click="debugging()">调试</Button>
-          </div>
+    <div>
+      <Card :bordered="false" dis-hover class="mb10">
+        <Tabs v-model="apiType">
+          <TabPane label="后台接口" name="adminapi"></TabPane>
+          <TabPane label="前台接口" name="api"></TabPane>
+          <TabPane label="对外接口" name="outapi"></TabPane>
+          <TabPane label="客服接口" name="kefuapi"></TabPane>
+        </Tabs>
+      </Card>
+      <div class="main">
+        <div class="ivu-mt mr20 card-tree">
+          <div class="tree">
+            <div class="main-btn">
+              <Button class="mb5 mr10" style="flex: 1" type="primary" @click="clickMenu(4)" long>新增分类</Button>
+              <Button class="mr10" type="success" @click="syncRoute()">同步</Button>
+              <Button type="info" @click="debugging()">调试</Button>
+            </div>
 
-          <vue-tree-list
-            class="tree-list"
-            @change-name="onChangeName"
-            @delete-node="onDel"
-            :model="treeData"
-            default-tree-node-name="默认文件夹"
-            default-leaf-node-name="默认接口名"
-            v-bind:default-expanded="false"
-            :expand-only-one="true"
-          >
-            <template v-slot:leafNameDisplay="slotProps">
-              <div></div>
-              <div
-                class="tree-node"
-                :class="{
-                  node: slotProps.model.method,
-                  open: formValidate.path == slotProps.model.path && formValidate.method == slotProps.model.method,
-                }"
-                @click.stop="onClick(slotProps.model)"
-              >
-                <span
-                  class=""
+            <vue-tree-list
+              class="tree-list"
+              ref="treeList"
+              @change-name="onChangeName"
+              @delete-node="onDel"
+              :model="treeData"
+              default-tree-node-name="默认文件夹"
+              default-leaf-node-name="默认接口名"
+              v-bind:default-expanded="false"
+              :expand-only-one="true"
+            >
+              <template v-slot:leafNameDisplay="slotProps">
+                <div></div>
+                <div
+                  class="tree-node"
                   :class="{
+                    node: slotProps.model.method,
                     open: formValidate.path == slotProps.model.path && formValidate.method == slotProps.model.method,
                   }"
-                  >{{ slotProps.model.name }}</span
+                  @click.stop="onClick(slotProps.model)"
                 >
-                <Dropdown
-                  transfer
-                  @on-click="
-                    (name) => {
-                      clickMenu(name, slotProps.model);
-                    }
-                  "
-                >
-                  <a href="javascript:void(0)">
-                    <Icon class="add" type="ios-more" />
-                  </a>
-                  <template #list>
-                    <DropdownMenu>
-                      <DropdownItem name="1" v-if="!slotProps.model.method">新增接口</DropdownItem>
-                      <DropdownItem name="2" v-if="!slotProps.model.method">编辑分类名</DropdownItem>
-                      <DropdownItem name="3">删除</DropdownItem>
-                    </DropdownMenu>
-                  </template>
-                </Dropdown>
-              </div>
-            </template>
-            <!-- 新建文件夹 -->
+                  <span
+                    class=""
+                    :class="{
+                      open: formValidate.path == slotProps.model.path && formValidate.method == slotProps.model.method,
+                    }"
+                    >{{ slotProps.model.name }}</span
+                  >
+                  <Dropdown
+                    transfer
+                    @on-click="
+                      (name) => {
+                        clickMenu(name, slotProps.model);
+                      }
+                    "
+                  >
+                    <a href="javascript:void(0)">
+                      <Icon class="add" type="ios-more" />
+                    </a>
+                    <template #list>
+                      <DropdownMenu>
+                        <DropdownItem name="1" v-if="!slotProps.model.method">新增接口</DropdownItem>
+                        <DropdownItem name="2" v-if="!slotProps.model.method">编辑分类名</DropdownItem>
+                        <DropdownItem name="3">删除</DropdownItem>
+                      </DropdownMenu>
+                    </template>
+                  </Dropdown>
+                </div>
+              </template>
+              <!-- 新建文件夹 -->
 
-            <span class="icon" slot="addTreeNodeIcon"></span>
-            <span class="icon" slot="addLeafNodeIcon">
-              <!-- <Icon type="md-create" /> -->
-            </span>
-            <span class="icon" slot="editNodeIcon">
-              <!-- <Icon type="md-create" /> -->
-            </span>
-            <span class="icon" slot="delNodeIcon">
-              <!-- <Icon type="ios-cut" /> -->
-            </span>
-            <template v-slot:treeNodeIcon="slotProps">
-              <span
-                v-if="slotProps.model.method"
-                class="req-method"
-                :style="{
-                  color: methodsColor(slotProps.model.method),
-                  'font-weight': slotProps.model.pid == formValidate.pid ? '500' : '500',
-                }"
-                >{{ slotProps.model.method }}</span
-              >
+              <span class="icon" slot="addTreeNodeIcon"></span>
+              <span class="icon" slot="addLeafNodeIcon">
+                <!-- <Icon type="md-create" /> -->
+              </span>
+              <span class="icon" slot="editNodeIcon">
+                <!-- <Icon type="md-create" /> -->
+              </span>
+              <span class="icon" slot="delNodeIcon">
+                <!-- <Icon type="ios-cut" /> -->
+              </span>
+              <template v-slot:treeNodeIcon="slotProps">
+                <span
+                  v-if="slotProps.model.method"
+                  class="req-method"
+                  :style="{
+                    color: methodsColor(slotProps.model.method),
+                    'font-weight': slotProps.model.pid == formValidate.pid ? '500' : '500',
+                  }"
+                  >{{ slotProps.model.method }}</span
+                >
 
-              <!-- <span v-if="slotProps.model.method"></span> -->
-            </template>
-          </vue-tree-list>
+                <!-- <span v-if="slotProps.model.method"></span> -->
+              </template>
+            </vue-tree-list>
+          </div>
         </div>
-      </div>
-      <Card :bordered="false" dis-hover class="ivu-mt right-card">
-        <div class="data">
-          <div class="eidt-sub">
-            <div class="name">
-              {{ formValidate.name }}
-            </div>
-            <div>
-              <!-- <Button type="primary" class="submission mr20" @click="debugging()">调试</Button> -->
-              <Button v-if="formValidate.id" type="primary" class="submission mr20" @click="isEdit = !isEdit">{{
-                isEdit ? '返回' : '编辑'
-              }}</Button>
-              <Button v-if="isEdit" type="primary" class="submission" @click="handleSubmit('formValidate')"
-                >保存</Button
-              >
+        <Card :bordered="false" dis-hover class="ivu-mt right-card">
+          <div class="data">
+            <div class="eidt-sub">
+              <div class="name">
+                {{ formValidate.name }}
+              </div>
+              <div>
+                <!-- <Button type="primary" class="submission mr20" @click="debugging()">调试</Button> -->
+                <Button v-if="formValidate.id" type="primary" class="submission mr20" @click="isEdit = !isEdit">{{
+                  isEdit ? '返回' : '编辑'
+                }}</Button>
+                <Button v-if="isEdit" type="primary" class="submission" @click="handleSubmit('formValidate')"
+                  >保存</Button
+                >
+              </div>
             </div>
-          </div>
-          <Form
-            class="formValidate mt20"
-            ref="formValidate"
-            :rules="ruleValidate"
-            :model="formValidate"
-            :label-width="100"
-            :label-position="labelPosition"
-            @submit.native.prevent
-          >
-            <Row :gutter="24" type="flex">
-              <Col span="24">
-                <div class="title">接口信息</div>
-                <FormItem label="接口名称:" prop="name">
-                  <Input
-                    v-if="isEdit"
-                    class="perW20"
-                    type="text"
-                    :rows="4"
-                    v-model.trim="formValidate.name"
-                    placeholder="请输入"
-                  />
-                  <span v-else>{{ formValidate.name || '' }}</span>
-                </FormItem>
-                <FormItem label="请求类型:" prop="name">
-                  <Select v-if="isEdit" v-model="formValidate.method" style="width: 120px">
-                    <Option v-for="(item, index) in requestTypeList" :key="index" :value="item.value">{{
-                      item.label
-                    }}</Option>
-                  </Select>
-                  <span v-else class="req-method" :style="'background-color:' + methodColor">{{
-                    formValidate.method || ''
-                  }}</span>
-                </FormItem>
-                <FormItem label="功能描述:" prop="name">
-                  <Input
-                    v-if="isEdit"
-                    class="perW20"
-                    type="textarea"
-                    :rows="4"
-                    v-model.trim="formValidate.describe"
-                    placeholder="请输入"
-                  />
-                  <span v-else class="text-area">{{ formValidate.describe || '--' }}</span>
-                </FormItem>
-                <FormItem label="所属分类:" prop="name" v-if="isEdit">
-                  <el-cascader
-                    v-model="formValidate.cate_id"
-                    size="small"
-                    :options="formValidate.cate_tree"
-                    :props="{ checkStrictly: true, multiple: false, emitPath: false, value: 'id', label: 'name' }"
-                    clearable
-                  ></el-cascader>
-                </FormItem>
-                <FormItem label="是否公共:" prop="name">
-                  <Switch v-if="isEdit" v-model="formValidate.type" :true-value="1" :false-value="0">
-                    <template #open>
-                      <span>是</span>
-                    </template>
-                    <template #close>
-                      <span>否</span>
-                    </template>
-                  </Switch>
-                  <span v-else class="text-area">{{ formValidate.type ? '是' : '否' }}</span>
-                </FormItem>
-              </Col>
-            </Row>
-            <Row :gutter="24" type="flex">
-              <Col span="24">
-                <div class="title">调用方式</div>
-                <FormItem label="路由地址:" prop="path">
-                  <span>{{ formValidate.path || '' }}</span>
-                </FormItem>
-                <FormItem label="文件地址:" prop="path">
-                  <span>{{ formValidate.file_path || '' }}</span>
-                </FormItem>
-                <FormItem label="方法名:" prop="path">
-                  <span>{{ formValidate.action || '' }}</span>
-                </FormItem>
-                <FormItem label="请求参数:">
-                  <vxe-table
-                    resizable
-                    show-overflow
-                    keep-source
-                    ref="xTable"
-                    row-id="id"
-                    :print-config="{}"
-                    :export-config="{}"
-                    :loading="loading"
-                    :tree-config="{ transform: true, rowField: 'id', parentField: 'parentId' }"
-                    :data="formValidate.request"
-                  >
-                    <!-- <vxe-column type="checkbox" width="60"></vxe-column> -->
-                    <vxe-column field="attribute" width="300" title="属性" tree-node :edit-render="{}">
-                      <template #default="{ row }">
-                        <vxe-input v-if="isEdit" v-model="row.attribute" type="text"></vxe-input>
-                        <span v-else>{{ row.attribute || '' }}</span>
+            <Form
+              class="formValidate mt20"
+              ref="formValidate"
+              :rules="ruleValidate"
+              :model="formValidate"
+              :label-width="100"
+              :label-position="labelPosition"
+              @submit.native.prevent
+            >
+              <Row :gutter="24" type="flex">
+                <Col span="24">
+                  <div class="title">接口信息</div>
+                  <FormItem label="接口名称:" prop="name">
+                    <Input
+                      v-if="isEdit"
+                      class="perW20"
+                      type="text"
+                      :rows="4"
+                      v-model.trim="formValidate.name"
+                      placeholder="请输入"
+                    />
+                    <span v-else>{{ formValidate.name || '' }}</span>
+                  </FormItem>
+                  <FormItem label="请求类型:" prop="name">
+                    <Select v-if="isEdit" v-model="formValidate.method" style="width: 120px">
+                      <Option v-for="(item, index) in requestTypeList" :key="index" :value="item.value">{{
+                        item.label
+                      }}</Option>
+                    </Select>
+                    <span v-else class="req-method" :style="'background-color:' + methodColor">{{
+                      formValidate.method || ''
+                    }}</span>
+                  </FormItem>
+                  <FormItem label="功能描述:" prop="name">
+                    <Input
+                      v-if="isEdit"
+                      class="perW20"
+                      type="textarea"
+                      :rows="4"
+                      v-model.trim="formValidate.describe"
+                      placeholder="请输入"
+                    />
+                    <span v-else class="text-area">{{ formValidate.describe || '--' }}</span>
+                  </FormItem>
+                  <FormItem label="所属分类:" prop="name" v-if="isEdit">
+                    <el-cascader
+                      v-model="formValidate.cate_id"
+                      size="small"
+                      :options="formValidate.cate_tree"
+                      :props="{ checkStrictly: true, multiple: false, emitPath: false, value: 'id', label: 'name' }"
+                      clearable
+                    ></el-cascader>
+                  </FormItem>
+                  <FormItem label="是否公共:" prop="name">
+                    <Switch v-if="isEdit" v-model="formValidate.type" :true-value="1" :false-value="0">
+                      <template #open>
+                        <span>是</span>
                       </template>
-                    </vxe-column>
-                    <vxe-column field="type" title="类型" width="200" :edit-render="{}">
-                      <template #default="{ row }">
-                        <!-- <vxe-select v-if="isEdit" v-model="row.type" type="text" :optionGroups="typeList"></vxe-select> -->
-                        <vxe-select v-if="isEdit" v-model="row.type" transfer>
-                          <vxe-option
-                            v-for="item in typeList"
-                            :key="item.value"
-                            :value="item.value"
-                            :label="item.label"
-                          ></vxe-option>
-                        </vxe-select>
-                        <span v-else>{{ row.type || '' }}</span>
+                      <template #close>
+                        <span>否</span>
+                      </template>
+                    </Switch>
+                    <span v-else class="text-area">{{ formValidate.type ? '是' : '否' }}</span>
+                  </FormItem>
+                </Col>
+              </Row>
+              <Row :gutter="24" type="flex">
+                <Col span="24">
+                  <div class="title">调用方式</div>
+                  <FormItem label="路由地址:" prop="path">
+                    <span>{{ formValidate.path || '' }}</span>
+                  </FormItem>
+                  <FormItem label="文件地址:" prop="path">
+                    <span>{{ formValidate.file_path || '' }}</span>
+                  </FormItem>
+                  <FormItem label="方法名:" prop="path">
+                    <span>{{ formValidate.action || '' }}</span>
+                  </FormItem>
+                  <FormItem label="请求参数:">
+                    <vxe-table
+                      resizable
+                      show-overflow
+                      keep-source
+                      ref="xTable"
+                      row-id="id"
+                      :print-config="{}"
+                      :export-config="{}"
+                      :loading="loading"
+                      :tree-config="{ transform: true, rowField: 'id', parentField: 'parentId' }"
+                      :data="formValidate.request"
+                    >
+                      <!-- <vxe-column type="checkbox" width="60"></vxe-column> -->
+                      <vxe-column field="attribute" width="300" title="属性" tree-node :edit-render="{}">
+                        <template #default="{ row }">
+                          <vxe-input v-if="isEdit" v-model="row.attribute" type="text"></vxe-input>
+                          <span v-else>{{ row.attribute || '' }}</span>
+                        </template>
+                      </vxe-column>
+                      <vxe-column field="type" title="类型" width="200" :edit-render="{}">
+                        <template #default="{ row }">
+                          <!-- <vxe-select v-if="isEdit" v-model="row.type" type="text" :optionGroups="typeList"></vxe-select> -->
+                          <vxe-select v-if="isEdit" v-model="row.type" transfer>
+                            <vxe-option
+                              v-for="item in typeList"
+                              :key="item.value"
+                              :value="item.value"
+                              :label="item.label"
+                            ></vxe-option>
+                          </vxe-select>
+                          <span v-else>{{ row.type || '' }}</span>
 
-                        <!-- <vxe-select v-model="row.type">
+                          <!-- <vxe-select v-model="row.type">
                       <vxe-option v-for="num in 12" :key="num" :value="num" :label="num"></vxe-option>
                     </vxe-select> -->
-                      </template>
-                    </vxe-column>
-                    <vxe-column field="must" title="必填" width="100" :edit-render="{}">
-                      <template #default="{ row }">
-                        <vxe-checkbox
-                          v-if="isEdit"
-                          v-model="row.must"
-                          :unchecked-value="'0'"
-                          :checked-value="'1'"
-                        ></vxe-checkbox>
-                        <span v-else>{{ row.must == '1' ? '是' : '否' }}</span>
-                      </template>
-                    </vxe-column>
-                    <vxe-column field="trip" title="说明" :edit-render="{}">
-                      <template #default="{ row }">
-                        <vxe-input v-if="isEdit" v-model="row.trip" type="text"></vxe-input>
-                        <span v-else>{{ row.trip || '' }}</span>
-                      </template>
-                    </vxe-column>
-                    <vxe-column title="操作" width="200" v-if="isEdit">
-                      <template #default="{ row }">
-                        <vxe-button
-                          type="text"
-                          v-if="row.type === 'array' || row.type === 'object'"
-                          status="primary"
-                          @click="insertRow(row, 'xTable')"
-                          >插入</vxe-button
-                        >
-                        <vxe-button type="text" status="primary" @click="removeRow(row, 'xTable')">删除</vxe-button>
-                      </template>
-                    </vxe-column>
-                  </vxe-table>
+                        </template>
+                      </vxe-column>
+                      <vxe-column field="must" title="必填" width="100" :edit-render="{}">
+                        <template #default="{ row }">
+                          <vxe-checkbox
+                            v-if="isEdit"
+                            v-model="row.must"
+                            :unchecked-value="'0'"
+                            :checked-value="'1'"
+                          ></vxe-checkbox>
+                          <span v-else>{{ row.must == '1' ? '是' : '否' }}</span>
+                        </template>
+                      </vxe-column>
+                      <vxe-column field="trip" title="说明" :edit-render="{}">
+                        <template #default="{ row }">
+                          <vxe-input v-if="isEdit" v-model="row.trip" type="text"></vxe-input>
+                          <span v-else>{{ row.trip || '' }}</span>
+                        </template>
+                      </vxe-column>
+                      <vxe-column title="操作" width="200" v-if="isEdit">
+                        <template #default="{ row }">
+                          <vxe-button
+                            type="text"
+                            v-if="row.type === 'array' || row.type === 'object'"
+                            status="primary"
+                            @click="insertRow(row, 'xTable')"
+                            >插入</vxe-button
+                          >
+                          <vxe-button type="text" status="primary" @click="removeRow(row, 'xTable')">删除</vxe-button>
+                        </template>
+                      </vxe-column>
+                    </vxe-table>
 
-                  <Button class="mt10" v-if="isEdit" type="primary" @click="insertEvent('xTable')">添加参数</Button>
-                </FormItem>
-                <FormItem label="返回参数:">
-                  <vxe-table
-                    resizable
-                    show-overflow
-                    keep-source
-                    ref="resTable"
-                    row-id="id"
-                    :print-config="{}"
-                    :export-config="{}"
-                    :loading="loading"
-                    :tree-config="{ transform: true, rowField: 'id', parentField: 'parentId' }"
-                    :data="formValidate.response"
-                  >
-                    <!-- <vxe-column type="checkbox" width="60"></vxe-column> -->
-                    <vxe-column field="attribute" title="属性" width="300" tree-node :edit-render="{}">
-                      <template #default="{ row }">
-                        <vxe-input v-if="isEdit" v-model="row.attribute" type="text"></vxe-input>
-                        <span v-else>{{ row.attribute || '' }}</span>
-                      </template>
-                    </vxe-column>
-                    <vxe-column field="type" title="类型" width="200" :edit-render="{}">
-                      <template #default="{ row }">
-                        <vxe-select v-if="isEdit" v-model="row.type" transfer>
-                          <vxe-option
-                            v-for="item in typeList"
-                            :key="item.value"
-                            :value="item.value"
-                            :label="item.label"
-                          ></vxe-option>
-                        </vxe-select>
-                        <span v-else>{{ row.type || '' }}</span>
-                      </template>
-                    </vxe-column>
-                    <!-- <vxe-column field="type" title="必填" :edit-render="{}">
+                    <Button class="mt10" v-if="isEdit" type="primary" @click="insertEvent('xTable')">添加参数</Button>
+                  </FormItem>
+                  <FormItem label="返回参数:">
+                    <vxe-table
+                      resizable
+                      show-overflow
+                      keep-source
+                      ref="resTable"
+                      row-id="id"
+                      :print-config="{}"
+                      :export-config="{}"
+                      :loading="loading"
+                      :tree-config="{ transform: true, rowField: 'id', parentField: 'parentId' }"
+                      :data="formValidate.response"
+                    >
+                      <!-- <vxe-column type="checkbox" width="60"></vxe-column> -->
+                      <vxe-column field="attribute" title="属性" width="300" tree-node :edit-render="{}">
+                        <template #default="{ row }">
+                          <vxe-input v-if="isEdit" v-model="row.attribute" type="text"></vxe-input>
+                          <span v-else>{{ row.attribute || '' }}</span>
+                        </template>
+                      </vxe-column>
+                      <vxe-column field="type" title="类型" width="200" :edit-render="{}">
+                        <template #default="{ row }">
+                          <vxe-select v-if="isEdit" v-model="row.type" transfer>
+                            <vxe-option
+                              v-for="item in typeList"
+                              :key="item.value"
+                              :value="item.value"
+                              :label="item.label"
+                            ></vxe-option>
+                          </vxe-select>
+                          <span v-else>{{ row.type || '' }}</span>
+                        </template>
+                      </vxe-column>
+                      <!-- <vxe-column field="type" title="必填" :edit-render="{}">
                   <template #default="{ row }">
                     <vxe-checkbox v-model="row.must" :unchecked-value="0" :checked-value="1"></vxe-checkbox
                     >{{ row.must }}
                   </template>
                 </vxe-column> -->
-                    <vxe-column field="trip" title="说明" :edit-render="{}">
-                      <template #default="{ row }">
-                        <vxe-input v-if="isEdit" v-model="row.trip" type="text"></vxe-input>
-                        <span v-else>{{ row.trip || '' }}</span>
-                      </template>
-                    </vxe-column>
-                    <vxe-column title="操作" width="200" v-if="isEdit">
-                      <template #default="{ row }">
-                        <vxe-button
-                          type="text"
-                          v-if="row.type === 'array' || row.type === 'object'"
-                          status="primary"
-                          @click="insertRow(row, 'resTable')"
-                          >插入</vxe-button
-                        >
-                        <vxe-button type="text" status="primary" @click="removeRow(row, 'resTable')">删除</vxe-button>
-                      </template>
-                    </vxe-column>
-                  </vxe-table>
-                  <Button class="mt10" v-if="isEdit" type="primary" @click="insertEvent('resTable')">添加参数</Button>
-                </FormItem>
-              </Col>
-            </Row>
-            <Row :gutter="24" type="flex">
-              <Col span="24">
-                <div class="title">调用示例</div>
-                <FormItem label="请求数据示例:" prop="request_example">
-                  <Input
-                    v-if="isEdit"
-                    class="perW20"
-                    type="textarea"
-                    :rows="4"
-                    v-model.trim="formValidate.request_example"
-                    placeholder="请输入"
-                  />
-                  <span v-else class="text-area">{{ formValidate.request_example || '' }}</span>
-                </FormItem>
-                <FormItem label="返回数据示例:" prop="response_example">
-                  <Input
-                    v-if="isEdit"
-                    class="perW20"
-                    type="textarea"
-                    :rows="4"
-                    v-model.trim="formValidate.response_example"
-                    placeholder="请输入"
-                  />
-                  <span v-else class="text-area">{{ formValidate.response_example || '' }}</span>
-                </FormItem>
-                <FormItem label="错误码:">
-                  <vxe-table
-                    resizable
-                    show-overflow
-                    keep-source
-                    ref="codeTable"
-                    row-id="id"
-                    is-tree-view
-                    :print-config="{}"
-                    :export-config="{}"
-                    :loading="loading"
-                    :tree-config="{ rowField: 'id', parentField: 'parentId' }"
-                    :data="formValidate.error_code"
-                  >
-                    <!-- <vxe-column type="checkbox" width="60"></vxe-column> -->
-                    <vxe-column field="code" title="错误码" tree-node :edit-render="{}">
-                      <template #default="{ row }">
-                        <vxe-input v-if="isEdit" v-model="row.code" type="text"></vxe-input>
-                        <span v-else>{{ row.code || '' }}</span>
-                      </template>
-                    </vxe-column>
-                    <vxe-column field="value" title="错误码取值" :edit-render="{}">
-                      <template #default="{ row }">
-                        <vxe-input v-if="isEdit" v-model="row.value" type="text"></vxe-input>
-                        <span v-else>{{ row.value || '' }}</span>
-                      </template>
-                    </vxe-column>
-                    <vxe-column field="solution" title="解决方案" :edit-render="{}">
-                      <template #default="{ row }">
-                        <vxe-input v-if="isEdit" v-model="row.solution" type="text"></vxe-input>
-                        <span v-else>{{ row.solution || '' }}</span>
-                      </template>
-                    </vxe-column>
-                    <vxe-column title="操作" v-if="isEdit">
-                      <template #default="{ row }">
-                        <vxe-button type="text" status="primary" @click="removeRow(row, 'codeTable')">删除</vxe-button>
-                      </template>
-                    </vxe-column>
-                  </vxe-table>
-                  <Button class="mt10" v-if="isEdit" type="primary" @click="insertEvent('codeTable')">添加参数</Button>
-                </FormItem>
-              </Col>
-            </Row>
-            <!-- <Row :gutter="24" type="flex">
+                      <vxe-column field="trip" title="说明" :edit-render="{}">
+                        <template #default="{ row }">
+                          <vxe-input v-if="isEdit" v-model="row.trip" type="text"></vxe-input>
+                          <span v-else>{{ row.trip || '' }}</span>
+                        </template>
+                      </vxe-column>
+                      <vxe-column title="操作" width="200" v-if="isEdit">
+                        <template #default="{ row }">
+                          <vxe-button
+                            type="text"
+                            v-if="row.type === 'array' || row.type === 'object'"
+                            status="primary"
+                            @click="insertRow(row, 'resTable')"
+                            >插入</vxe-button
+                          >
+                          <vxe-button type="text" status="primary" @click="removeRow(row, 'resTable')">删除</vxe-button>
+                        </template>
+                      </vxe-column>
+                    </vxe-table>
+                    <Button class="mt10" v-if="isEdit" type="primary" @click="insertEvent('resTable')">添加参数</Button>
+                  </FormItem>
+                </Col>
+              </Row>
+              <Row :gutter="24" type="flex">
+                <Col span="24">
+                  <div class="title">调用示例</div>
+                  <FormItem label="请求数据示例:" prop="request_example">
+                    <Input
+                      v-if="isEdit"
+                      class="perW20"
+                      type="textarea"
+                      :rows="4"
+                      v-model.trim="formValidate.request_example"
+                      placeholder="请输入"
+                    />
+                    <span v-else class="text-area">{{ formValidate.request_example || '' }}</span>
+                  </FormItem>
+                  <FormItem label="返回数据示例:" prop="response_example">
+                    <Input
+                      v-if="isEdit"
+                      class="perW20"
+                      type="textarea"
+                      :rows="4"
+                      v-model.trim="formValidate.response_example"
+                      placeholder="请输入"
+                    />
+                    <span v-else class="text-area">{{ formValidate.response_example || '' }}</span>
+                  </FormItem>
+                  <FormItem label="错误码:">
+                    <vxe-table
+                      resizable
+                      show-overflow
+                      keep-source
+                      ref="codeTable"
+                      row-id="id"
+                      is-tree-view
+                      :print-config="{}"
+                      :export-config="{}"
+                      :loading="loading"
+                      :tree-config="{ rowField: 'id', parentField: 'parentId' }"
+                      :data="formValidate.error_code"
+                    >
+                      <!-- <vxe-column type="checkbox" width="60"></vxe-column> -->
+                      <vxe-column field="code" title="错误码" tree-node :edit-render="{}">
+                        <template #default="{ row }">
+                          <vxe-input v-if="isEdit" v-model="row.code" type="text"></vxe-input>
+                          <span v-else>{{ row.code || '' }}</span>
+                        </template>
+                      </vxe-column>
+                      <vxe-column field="value" title="错误码取值" :edit-render="{}">
+                        <template #default="{ row }">
+                          <vxe-input v-if="isEdit" v-model="row.value" type="text"></vxe-input>
+                          <span v-else>{{ row.value || '' }}</span>
+                        </template>
+                      </vxe-column>
+                      <vxe-column field="solution" title="解决方案" :edit-render="{}">
+                        <template #default="{ row }">
+                          <vxe-input v-if="isEdit" v-model="row.solution" type="text"></vxe-input>
+                          <span v-else>{{ row.solution || '' }}</span>
+                        </template>
+                      </vxe-column>
+                      <vxe-column title="操作" v-if="isEdit">
+                        <template #default="{ row }">
+                          <vxe-button type="text" status="primary" @click="removeRow(row, 'codeTable')"
+                            >删除</vxe-button
+                          >
+                        </template>
+                      </vxe-column>
+                    </vxe-table>
+                    <Button class="mt10" v-if="isEdit" type="primary" @click="insertEvent('codeTable')"
+                      >添加参数</Button
+                    >
+                  </FormItem>
+                </Col>
+              </Row>
+              <!-- <Row :gutter="24" type="flex">
               <Col span="24">
                 <FormItem>
                   <Button type="primary" class="submission" @click="handleSubmit('formValidate')">保存</Button>
                 </FormItem>
               </Col>
             </Row> -->
-          </Form>
-        </div>
-        <!-- <div v-else class="nothing">
+            </Form>
+          </div>
+          <!-- <div v-else class="nothing">
           <div class="box" @click="clickMenu(4)">
             <div class="icon">
               <Icon type="ios-folder" />
@@ -411,7 +417,8 @@
             <div class="text">新建接口</div>
           </div>
         </div> -->
-      </Card>
+        </Card>
+      </div>
     </div>
     <Modal v-model="nameModal" title="分组名称" :loading="loading" @on-ok="asyncOK">
       <label>分组名称:</label>
@@ -423,6 +430,7 @@
         :formValidate="formValidate"
         :typeList="intTypeList"
         :requestTypeList="requestTypeList"
+        :apiType="apiType"
       />
     </Drawer>
   </div>
@@ -553,7 +561,7 @@ export default {
         size: 'small',
       },
       methodColor: '#fff',
-      app_name: 'adminapi',
+      apiType: 'adminapi',
       paramsId: 0,
     };
   },
@@ -561,18 +569,26 @@ export default {
     ['formValidate.method']: {
       deep: true,
       handler(newVal, oldVal) {
-        let method = newVal.toUpperCase();
-        if (method == 'GET') {
-          this.methodColor = '#61affe';
-        } else if (method == 'POST') {
-          this.methodColor = '#49cc90';
-        } else if (method == 'PUT') {
-          this.methodColor = '#fca130';
-        } else if (method == 'DEL' || method == 'DELETE') {
-          this.methodColor = '#f93e3e';
+        console.log(newVal);
+        if (newVal) {
+          let method = newVal.toUpperCase();
+          if (method == 'GET') {
+            this.methodColor = '#61affe';
+          } else if (method == 'POST') {
+            this.methodColor = '#49cc90';
+          } else if (method == 'PUT') {
+            this.methodColor = '#fca130';
+          } else if (method == 'DEL' || method == 'DELETE') {
+            this.methodColor = '#f93e3e';
+          }
         }
       },
     },
+    apiType(newVal) {
+      if (newVal) {
+        this.getInterfaceList('one');
+      }
+    },
   },
   computed: {
     ...mapState('media', ['isMobile']),
@@ -592,7 +608,7 @@ export default {
         title: '立即同步',
         content: '同步之后,路由文件中新增的接口添加到接口列表中,路由文件中删除的路由会同步的在接口列表中删除',
         onOk: () => {
-          syncRoute(this.app_name).then((res) => {
+          syncRoute(this.apiType).then((res) => {
             this.getInterfaceList('one');
             this.$Message.success(res.msg);
             this.$Modal.remove();
@@ -625,7 +641,7 @@ export default {
     },
     getInterfaceList(disk_type) {
       try {
-        routeList()
+        routeList(this.apiType)
           .then((res) => {
             if (res.data.length) {
               res.data[0].expand = false;
@@ -643,9 +659,14 @@ export default {
               if (res.data[0].children && res.data[0].children.length) {
                 this.onClick(res.data[0]?.children[0]?.children[0]);
               }
+            } else {
+              // this.$refs.treeList.clear();
+              this.treeData = new Tree({});
+              this.formValidate = {};
             }
           })
           .catch((err) => {
+            console.log(err);
             this.$Message.error(err);
           });
       } catch (error) {
@@ -681,7 +702,7 @@ export default {
       this.formValidate.request = await this.$refs.xTable.getTableData().tableData;
       this.formValidate.response = await this.$refs.resTable.getTableData().tableData;
       this.formValidate.error_code = await this.$refs.codeTable.getTableData().tableData;
-      this.formValidate.app_name = this.app_name;
+      this.formValidate.apiType = this.apiType;
       await routeSave(this.formValidate)
         .then((res) => {
           this.isEdit = false;
@@ -777,12 +798,12 @@ export default {
         // this.formValidate.cate_id = params ? params.id : 0;
         // this.nameModal = true;
         // this.onEdit(params);
-        this.$modalForm(routeEdit(params.id, this.app_name)).then(() => this.getInterfaceList());
+        this.$modalForm(routeEdit(params.id, this.apiType)).then(() => this.getInterfaceList());
       } else if (name == 3) {
         this.onDel(params);
       } else if (name == 4) {
         // this.add();
-        this.$modalForm(routeCate(this.app_name)).then(() => this.getInterfaceList());
+        this.$modalForm(routeCate(this.apiType)).then(() => this.getInterfaceList());
       }
     },